@dxos/plugin-debug 0.9.0 → 0.9.1-staging.ee54ba693a
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.
- package/dist/lib/neutral/{DebugObjectPanel-OS65NC4M.mjs → DebugObjectPanel-QSGQJ3LM.mjs} +5 -3
- package/dist/lib/neutral/DebugObjectPanel-QSGQJ3LM.mjs.map +7 -0
- package/dist/lib/neutral/DebugPlugin.mjs +2 -2
- package/dist/lib/neutral/DebugPlugin.mjs.map +4 -4
- package/dist/lib/neutral/{DebugSettings-RKYNQIKH.mjs → DebugSettings-Q3WUL6YQ.mjs} +37 -31
- package/dist/lib/neutral/DebugSettings-Q3WUL6YQ.mjs.map +7 -0
- package/dist/lib/neutral/{DebugSpaceObjectsPanel-BHOCFWDJ.mjs → DebugSpaceObjectsPanel-AXFZWEIM.mjs} +5 -3
- package/dist/lib/neutral/DebugSpaceObjectsPanel-AXFZWEIM.mjs.map +7 -0
- package/dist/lib/neutral/{DevtoolsOverviewContainer-YX7Z3D2H.mjs → DevtoolsOverviewContainer-DWQHTK7D.mjs} +3 -2
- package/dist/lib/neutral/DevtoolsOverviewContainer-DWQHTK7D.mjs.map +7 -0
- package/dist/lib/neutral/{GithubPanel-QJKDJRVQ.mjs → GithubPanel-4CSJRVKE.mjs} +3 -3
- package/dist/lib/neutral/GithubPanel-4CSJRVKE.mjs.map +7 -0
- package/dist/lib/neutral/{app-graph-builder-4OJQQLSH.mjs → app-graph-builder-UKG4WVYK.mjs} +124 -131
- package/dist/lib/neutral/app-graph-builder-UKG4WVYK.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +4 -4
- package/dist/lib/neutral/chunk-72QXLYMI.mjs +118 -0
- package/dist/lib/neutral/chunk-72QXLYMI.mjs.map +7 -0
- package/dist/lib/neutral/chunk-R5C4CKOF.mjs +54 -0
- package/dist/lib/neutral/chunk-R5C4CKOF.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +13 -24
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/containers/index.mjs +6 -4
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/index.mjs +6 -4
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +1 -1
- package/dist/lib/neutral/{react-context-MUZ3KVLU.mjs → react-context-UJURDOO6.mjs} +2 -2
- package/dist/lib/neutral/{react-context-MUZ3KVLU.mjs.map → react-context-UJURDOO6.mjs.map} +3 -3
- package/dist/lib/neutral/{react-surface-YBC4HK7I.mjs → react-surface-URESE7J4.mjs} +89 -35
- package/dist/lib/neutral/react-surface-URESE7J4.mjs.map +7 -0
- package/dist/lib/neutral/{settings-MPM6YUP4.mjs → settings-5I2674B6.mjs} +3 -3
- package/dist/lib/neutral/{settings-MPM6YUP4.mjs.map → settings-5I2674B6.mjs.map} +3 -3
- package/dist/lib/neutral/translations.mjs +1 -2
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +5 -3
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +4 -8
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-context.d.ts +1 -6
- package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -3
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +0 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts +6 -3
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/DebugSettings/DebugSettings.d.ts +2 -2
- package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/DebugSettings/DebugSettings.stories.d.ts +0 -1
- package/dist/types/src/{components → containers}/DebugSettings/DebugSettings.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/DebugSettings/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +6 -2
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -1
- package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -1
- package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts +0 -1
- package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts.map +1 -1
- package/dist/types/src/containers/RegistryPanel/index.d.ts +1 -1
- package/dist/types/src/containers/RegistryPanel/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +1 -0
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +32 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +0 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Devtools.d.ts +57 -0
- package/dist/types/src/types/Devtools.d.ts.map +1 -0
- package/dist/types/src/types/debug.d.ts +20 -0
- package/dist/types/src/types/debug.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +3 -69
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/surface.d.ts +4 -0
- package/dist/types/src/types/surface.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +39 -0
- package/package.json +59 -58
- package/src/DebugPlugin.test.ts +1 -1
- package/src/DebugPlugin.tsx +1 -1
- package/src/capabilities/app-graph-builder.ts +123 -131
- package/src/capabilities/react-context.tsx +1 -1
- package/src/capabilities/react-surface.tsx +85 -33
- package/src/capabilities/settings.ts +2 -2
- package/src/components/SpaceGenerator/presets.ts +10 -13
- package/src/components/index.ts +0 -4
- package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +13 -4
- package/src/{components → containers}/DebugSettings/DebugSettings.stories.tsx +1 -1
- package/src/{components → containers}/DebugSettings/DebugSettings.tsx +100 -98
- package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +12 -4
- package/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx +3 -1
- package/src/containers/GithubPanel/GithubComponent.tsx +2 -2
- package/src/containers/RegistryPanel/index.ts +1 -1
- package/src/containers/index.ts +1 -0
- package/src/meta.ts +2 -31
- package/src/translations.ts +1 -2
- package/src/types/Devtools.ts +73 -0
- package/src/types/debug.ts +35 -0
- package/src/types/index.ts +3 -90
- package/src/types/surface.ts +10 -0
- package/dist/lib/neutral/DebugObjectPanel-OS65NC4M.mjs.map +0 -7
- package/dist/lib/neutral/DebugSettings-RKYNQIKH.mjs.map +0 -7
- package/dist/lib/neutral/DebugSpaceObjectsPanel-BHOCFWDJ.mjs.map +0 -7
- package/dist/lib/neutral/DevtoolsOverviewContainer-YX7Z3D2H.mjs.map +0 -7
- package/dist/lib/neutral/GithubPanel-QJKDJRVQ.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-4OJQQLSH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-HOV6MV5B.mjs +0 -43
- package/dist/lib/neutral/chunk-HOV6MV5B.mjs.map +0 -7
- package/dist/lib/neutral/chunk-TAST3Y2C.mjs +0 -91
- package/dist/lib/neutral/chunk-TAST3Y2C.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-YBC4HK7I.mjs.map +0 -7
- package/dist/types/src/components/DebugSettings/DebugSettings.d.ts.map +0 -1
- /package/dist/types/src/{components → containers}/DebugSettings/index.d.ts +0 -0
- /package/src/{components → containers}/DebugSettings/index.ts +0 -0
|
@@ -6,15 +6,18 @@ import React, { useState } from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { type AppSurface } from '@dxos/app-toolkit/ui';
|
|
8
8
|
import { ObjectsTree } from '@dxos/devtools';
|
|
9
|
-
import { Filter, Query } from '@dxos/echo';
|
|
9
|
+
import { type Entity, Filter, Obj, Query } from '@dxos/echo';
|
|
10
10
|
import { type EntityId } from '@dxos/keys';
|
|
11
11
|
import { useQuery } from '@dxos/react-client/echo';
|
|
12
12
|
import { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';
|
|
13
13
|
import { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';
|
|
14
14
|
|
|
15
|
-
export type DebugSpaceObjectsPanelProps = AppSurface.SpaceArticleProps
|
|
15
|
+
export type DebugSpaceObjectsPanelProps = AppSurface.SpaceArticleProps & {
|
|
16
|
+
onOpen?: (object: Obj.Unknown) => void;
|
|
17
|
+
canOpen?: (entity: Entity.Snapshot) => boolean;
|
|
18
|
+
};
|
|
16
19
|
|
|
17
|
-
export const DebugSpaceObjectsPanel = ({ space }: DebugSpaceObjectsPanelProps) => {
|
|
20
|
+
export const DebugSpaceObjectsPanel = ({ space, onOpen, canOpen }: DebugSpaceObjectsPanelProps) => {
|
|
18
21
|
const [selectedId, setSelectedId] = useState<EntityId | null>(null);
|
|
19
22
|
const [selectedObject] = useQuery(
|
|
20
23
|
space.db,
|
|
@@ -35,7 +38,12 @@ export const DebugSpaceObjectsPanel = ({ space }: DebugSpaceObjectsPanelProps) =
|
|
|
35
38
|
<Grid rows={2} classNames='divide-y divide-separator'>
|
|
36
39
|
<ScrollArea.Root>
|
|
37
40
|
<ScrollArea.Viewport>
|
|
38
|
-
<ObjectsTree
|
|
41
|
+
<ObjectsTree
|
|
42
|
+
db={space.db}
|
|
43
|
+
onSelect={(entity) => setSelectedId(entity.id)}
|
|
44
|
+
onOpen={onOpen}
|
|
45
|
+
canOpen={canOpen}
|
|
46
|
+
/>
|
|
39
47
|
</ScrollArea.Viewport>
|
|
40
48
|
</ScrollArea.Root>
|
|
41
49
|
{selectedObject && <JsonHighlighter classNames='p-1' data={selectedObject} />}
|
|
@@ -7,6 +7,8 @@ import React from 'react';
|
|
|
7
7
|
import { Surface } from '@dxos/app-framework/ui';
|
|
8
8
|
import { StatsPanel, useStats } from '@dxos/devtools';
|
|
9
9
|
|
|
10
|
+
import { DevtoolsOverview } from '#types';
|
|
11
|
+
|
|
10
12
|
export const DevtoolsOverviewContainer = () => {
|
|
11
13
|
const [stats, refreshStats] = useStats();
|
|
12
14
|
const surfaceProfilerStats = Surface.useProfilerStats();
|
|
@@ -19,7 +21,7 @@ export const DevtoolsOverviewContainer = () => {
|
|
|
19
21
|
onRefresh={refreshStats}
|
|
20
22
|
onClearSurfaceProfiler={clearSurfaceProfiler}
|
|
21
23
|
>
|
|
22
|
-
<Surface.Surface
|
|
24
|
+
<Surface.Surface type={DevtoolsOverview} />
|
|
23
25
|
</StatsPanel>
|
|
24
26
|
);
|
|
25
27
|
};
|
|
@@ -90,7 +90,7 @@ const Root = ({ repo = DEFAULT_REPO, limit = DEFAULT_LIMIT, children }: GithubCo
|
|
|
90
90
|
};
|
|
91
91
|
|
|
92
92
|
const Header = () => {
|
|
93
|
-
const { t } = useTranslation(meta.
|
|
93
|
+
const { t } = useTranslation(meta.profile.key);
|
|
94
94
|
const { repo, pulls, unavailable } = useComponentContext();
|
|
95
95
|
return (
|
|
96
96
|
<header className='flex items-center justify-between gap-1 px-4 py-3 bg-modal-surface border-b border-subdued-separator'>
|
|
@@ -169,7 +169,7 @@ const Content = () => {
|
|
|
169
169
|
};
|
|
170
170
|
|
|
171
171
|
const StatusBar = () => {
|
|
172
|
-
const { t } = useTranslation(meta.
|
|
172
|
+
const { t } = useTranslation(meta.profile.key);
|
|
173
173
|
const { repo } = useComponentContext();
|
|
174
174
|
return (
|
|
175
175
|
<IconButton
|
package/src/containers/index.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { type ComponentType, lazy } from 'react';
|
|
6
6
|
|
|
7
7
|
export const DebugGraph: ComponentType<any> = lazy(() => import('./DebugGraph'));
|
|
8
|
+
export const DebugSettings: ComponentType<any> = lazy(() => import('./DebugSettings'));
|
|
8
9
|
export const DebugObjectPanel: ComponentType<any> = lazy(() => import('./DebugObjectPanel'));
|
|
9
10
|
export const DebugStatus: ComponentType<any> = lazy(() => import('./DebugStatus'));
|
|
10
11
|
export const DevtoolsOverviewContainer: ComponentType<any> = lazy(() => import('./DevtoolsOverviewContainer'));
|
package/src/meta.ts
CHANGED
|
@@ -3,36 +3,7 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { Plugin } from '@dxos/app-framework';
|
|
6
|
-
import { DXN } from '@dxos/keys';
|
|
7
|
-
import { trim } from '@dxos/util';
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
key: DXN.make('org.dxos.plugin.debug'),
|
|
11
|
-
name: 'Debug',
|
|
12
|
-
author: 'DXOS',
|
|
13
|
-
spec: 'PLUGIN.mdl',
|
|
14
|
-
description: trim`
|
|
15
|
-
DebugPlugin is the developer toolkit for DXOS Composer. It adds a structured Devtools node
|
|
16
|
-
to the navigation graph — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —
|
|
17
|
-
exposing panel views for config, storage, logs, diagnostics, identity, devices, feeds,
|
|
18
|
-
objects, schemas, automerge internals, network topology, EDGE workflows, and invocation
|
|
19
|
-
traces, all driven by the @dxos/devtools component library.
|
|
7
|
+
import config from '../dx.config';
|
|
20
8
|
|
|
21
|
-
|
|
22
|
-
can inspect raw field values and DXNs inline, and a Space Objects companion panel that lists
|
|
23
|
-
all objects in the active space with live reactive updates.
|
|
24
|
-
|
|
25
|
-
Test-data generation is available via a SpaceGenerator article surface: developers can
|
|
26
|
-
create configurable batches of synthetic ECHO objects into any space collection, with a
|
|
27
|
-
status indicator showing when generation is running.
|
|
28
|
-
|
|
29
|
-
Additional utilities include a wireframe overlay mode that draws labelled borders around
|
|
30
|
-
every article and section surface, a log-capture and download facility backed by an
|
|
31
|
-
IdbLogStore, a ToolsExplorer connected to the DXOS MCP introspect service, and a
|
|
32
|
-
globalThis helper for manual storage-version testing.
|
|
33
|
-
`,
|
|
34
|
-
icon: 'ph--bug--regular',
|
|
35
|
-
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug',
|
|
36
|
-
screenshots: ['https://dxos.network/plugin-details-debug-dark.png'],
|
|
37
|
-
tags: ['labs'],
|
|
38
|
-
});
|
|
9
|
+
export const meta = Plugin.getMetaFromConfig(config);
|
package/src/translations.ts
CHANGED
|
@@ -11,9 +11,8 @@ export const translations = [
|
|
|
11
11
|
...introspectTranslations,
|
|
12
12
|
{
|
|
13
13
|
'en-US': {
|
|
14
|
-
[meta.
|
|
14
|
+
[meta.profile.key]: {
|
|
15
15
|
'plugin.name': 'Debug',
|
|
16
|
-
'settings.title': 'Debug settings',
|
|
17
16
|
'open-devtools.label': 'Open DevTools',
|
|
18
17
|
'devtools.label': 'DevTools',
|
|
19
18
|
'devtools-overview.label': 'Stats',
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
// @import-as-namespace
|
|
6
|
+
|
|
7
|
+
import { meta } from '#meta';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Extracts the last dot-separated segment of a Devtools namespaced ID string.
|
|
11
|
+
* Use this as the node segment `id` when building app-graph nodes whose `data`
|
|
12
|
+
* value is one of the other constants in this namespace.
|
|
13
|
+
*/
|
|
14
|
+
export const nodeId = (fullId: string): string => fullId.split('.').at(-1) ?? '';
|
|
15
|
+
|
|
16
|
+
const devtoolsId = `${meta.profile.key}.devtools`;
|
|
17
|
+
|
|
18
|
+
export const id = devtoolsId;
|
|
19
|
+
export const AppGraph = `${devtoolsId}.appGraph`;
|
|
20
|
+
export const Debug = `${devtoolsId}.debug`;
|
|
21
|
+
export const ToolsExplorer = `${devtoolsId}.toolsExplorer`;
|
|
22
|
+
|
|
23
|
+
export namespace Client {
|
|
24
|
+
export const id = `${devtoolsId}.client`;
|
|
25
|
+
export const Config = `${Client.id}.config`;
|
|
26
|
+
export const Storage = `${Client.id}.storage`;
|
|
27
|
+
export const Sqlite = `${Client.id}.sqlite`;
|
|
28
|
+
export const Logs = `${Client.id}.logs`;
|
|
29
|
+
export const Diagnostics = `${Client.id}.diagnostics`;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export namespace Halo {
|
|
33
|
+
export const id = `${devtoolsId}.halo`;
|
|
34
|
+
export const Identity = `${Halo.id}.identity`;
|
|
35
|
+
export const Devices = `${Halo.id}.devices`;
|
|
36
|
+
export const Keyring = `${Halo.id}.keyring`;
|
|
37
|
+
export const Credentials = `${Halo.id}.credentials`;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export namespace Echo {
|
|
41
|
+
export const id = `${devtoolsId}.echo`;
|
|
42
|
+
export const Spaces = `${Echo.id}.spaces`;
|
|
43
|
+
export const Space = `${Echo.id}.space`;
|
|
44
|
+
export const Feeds = `${Echo.id}.feeds`;
|
|
45
|
+
export const Objects = `${Echo.id}.objects`;
|
|
46
|
+
export const Schema = `${Echo.id}.schema`;
|
|
47
|
+
export const Registry = `${Echo.id}.registry`;
|
|
48
|
+
export const Automerge = `${Echo.id}.automerge`;
|
|
49
|
+
export const Queues = `${Echo.id}.queues`;
|
|
50
|
+
export const Members = `${Echo.id}.members`;
|
|
51
|
+
export const Metadata = `${Echo.id}.metadata`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export namespace Mesh {
|
|
55
|
+
export const id = `${devtoolsId}.mesh`;
|
|
56
|
+
export const Signal = `${Mesh.id}.signal`;
|
|
57
|
+
export const Swarm = `${Mesh.id}.swarm`;
|
|
58
|
+
export const Network = `${Mesh.id}.network`;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export namespace Agent {
|
|
62
|
+
export const id = `${devtoolsId}.agent`;
|
|
63
|
+
export const Dashboard = `${Agent.id}.dashboard`;
|
|
64
|
+
export const Search = `${Agent.id}.search`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export namespace Edge {
|
|
68
|
+
export const id = `${devtoolsId}.edge`;
|
|
69
|
+
export const Dashboard = `${Edge.id}.dashboard`;
|
|
70
|
+
export const Workflows = `${Edge.id}.workflows`;
|
|
71
|
+
export const Traces = `${Edge.id}.traces`;
|
|
72
|
+
export const Testing = `${Edge.id}.testing`;
|
|
73
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type Atom } from '@effect-atom/atom-react';
|
|
6
|
+
import { type Context, createContext } from 'react';
|
|
7
|
+
|
|
8
|
+
import { Capability } from '@dxos/app-framework';
|
|
9
|
+
import type { TimerCallback, TimerOptions } from '@dxos/async';
|
|
10
|
+
import { type IdbLogStore } from '@dxos/log-store-idb';
|
|
11
|
+
|
|
12
|
+
import { meta } from '#meta';
|
|
13
|
+
|
|
14
|
+
import * as Settings from './Settings';
|
|
15
|
+
|
|
16
|
+
export type DebugPluginOptions = {
|
|
17
|
+
/** Shared persistent log store for capturing and downloading logs. */
|
|
18
|
+
logStore?: IdbLogStore;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type DebugContextType = {
|
|
22
|
+
running: boolean;
|
|
23
|
+
start: (cb: TimerCallback, options: TimerOptions) => void;
|
|
24
|
+
stop: () => void;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const DebugContext: Context<DebugContextType> = createContext<DebugContextType>({
|
|
28
|
+
running: false,
|
|
29
|
+
start: () => {},
|
|
30
|
+
stop: () => {},
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export namespace DebugCapabilities {
|
|
34
|
+
export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.profile.key}.capability.settings`);
|
|
35
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -2,94 +2,7 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { Capability } from '@dxos/app-framework';
|
|
9
|
-
import type { TimerCallback, TimerOptions } from '@dxos/async';
|
|
10
|
-
import { type IdbLogStore } from '@dxos/log-store-idb';
|
|
11
|
-
|
|
12
|
-
import { meta } from '#meta';
|
|
13
|
-
|
|
14
|
-
import * as Settings from './Settings';
|
|
15
|
-
|
|
5
|
+
export * from './debug';
|
|
6
|
+
export * from './surface';
|
|
7
|
+
export * as Devtools from './Devtools';
|
|
16
8
|
export * as Settings from './Settings';
|
|
17
|
-
|
|
18
|
-
export type DebugPluginOptions = {
|
|
19
|
-
/** Shared persistent log store for capturing and downloading logs. */
|
|
20
|
-
logStore?: IdbLogStore;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export type DebugContextType = {
|
|
24
|
-
running: boolean;
|
|
25
|
-
start: (cb: TimerCallback, options: TimerOptions) => void;
|
|
26
|
-
stop: () => void;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export const DebugContext: Context<DebugContextType> = createContext<DebugContextType>({
|
|
30
|
-
running: false,
|
|
31
|
-
start: () => {},
|
|
32
|
-
stop: () => {},
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
export namespace DebugCapabilities {
|
|
36
|
-
export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.id}.capability.settings`);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export namespace Devtools {
|
|
40
|
-
export const id = `${meta.id}.devtools`;
|
|
41
|
-
|
|
42
|
-
export const ToolsExplorer = `${Devtools.id}.tools-explorer`;
|
|
43
|
-
|
|
44
|
-
export namespace Client {
|
|
45
|
-
export const id = `${Devtools.id}.client`;
|
|
46
|
-
export const Config = `${Devtools.Client.id}.config`;
|
|
47
|
-
export const Storage = `${Devtools.Client.id}.storage`;
|
|
48
|
-
export const Sqlite = `${Devtools.Client.id}.sqlite`;
|
|
49
|
-
export const Logs = `${Devtools.Client.id}.logs`;
|
|
50
|
-
export const Diagnostics = `${Devtools.Client.id}.diagnostics`;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export namespace Halo {
|
|
54
|
-
export const id = `${Devtools.id}.halo`;
|
|
55
|
-
export const Identity = `${Devtools.Halo.id}.identity`;
|
|
56
|
-
export const Devices = `${Devtools.Halo.id}.devices`;
|
|
57
|
-
export const Keyring = `${Devtools.Halo.id}.keyring`;
|
|
58
|
-
export const Credentials = `${Devtools.Halo.id}.credentials`;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export namespace Echo {
|
|
62
|
-
export const id = `${Devtools.id}.echo`;
|
|
63
|
-
export const Spaces = `${Devtools.Echo.id}.spaces`;
|
|
64
|
-
export const Space = `${Devtools.Echo.id}.space`;
|
|
65
|
-
export const Feeds = `${Devtools.Echo.id}.feeds`;
|
|
66
|
-
export const Objects = `${Devtools.Echo.id}.objects`;
|
|
67
|
-
export const Schema = `${Devtools.Echo.id}.schema`;
|
|
68
|
-
export const Registry = `${Devtools.Echo.id}.registry`;
|
|
69
|
-
export const Automerge = `${Devtools.Echo.id}.automerge`;
|
|
70
|
-
export const Queues = `${Devtools.Echo.id}.queues`;
|
|
71
|
-
export const Members = `${Devtools.Echo.id}.members`;
|
|
72
|
-
export const Metadata = `${Devtools.Echo.id}.metadata`;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export namespace Mesh {
|
|
76
|
-
export const id = `${Devtools.id}.mesh`;
|
|
77
|
-
export const Signal = `${Devtools.Mesh.id}.signal`;
|
|
78
|
-
export const Swarm = `${Devtools.Mesh.id}.swarm`;
|
|
79
|
-
export const Network = `${Devtools.Mesh.id}.network`;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export namespace Agent {
|
|
83
|
-
export const id = `${Devtools.id}.agent`;
|
|
84
|
-
export const Dashboard = `${Devtools.Agent.id}.dashboard`;
|
|
85
|
-
export const Search = `${Devtools.Agent.id}.search`;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export namespace Edge {
|
|
89
|
-
export const id = `${Devtools.id}.edge`;
|
|
90
|
-
export const Dashboard = `${Devtools.Edge.id}.dashboard`;
|
|
91
|
-
export const Workflows = `${Devtools.Edge.id}.workflows`;
|
|
92
|
-
export const Traces = `${Devtools.Edge.id}.traces`;
|
|
93
|
-
export const Testing = `${Devtools.Edge.id}.testing`;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Surface } from '@dxos/app-framework/ui';
|
|
6
|
+
|
|
7
|
+
/** Slot for the devtools-overview sub-surface inside the debug panel. */
|
|
8
|
+
export const DevtoolsOverview: Surface.RoleToken<Record<string, unknown>> = Surface.makeType(
|
|
9
|
+
'org.dxos.plugin.debug.role.devtoolsOverview',
|
|
10
|
+
);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugObjectPanel/DebugObjectPanel.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { ObjectsTree } from '@dxos/devtools';\nimport { Filter, Json, Obj, Query } from '@dxos/echo';\nimport type { EntityId } from '@dxos/keys';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { Syntax } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nexport type DebugObjectPanelProps = Pick<\n AppSurface.ObjectArticleProps<Obj.Unknown, {}, Obj.Unknown>,\n 'role' | 'companionTo'\n>;\n\nexport const DebugObjectPanel = ({ role, companionTo }: DebugObjectPanelProps) => {\n const db = Obj.getDatabase(companionTo);\n const [selectedId, setSelectedId] = useState<EntityId | null>(null);\n const [depth, setDepth] = useState(0);\n const [selectedObject] = useQuery(\n db,\n Query.select(Filter.id(selectedId ?? companionTo.id)).options({ deleted: 'include' }),\n );\n const refReplacer = useMemo(() => (db ? Json.createRefReplacer({ db, depth }) : undefined), [db, depth]);\n\n return (\n <Clipboard.Provider>\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <div className={mx('grid divide-y divide-separator', db && 'grid-rows-[1fr_2fr]')}>\n {db && (\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree db={db} root={companionTo} onSelect={(entity) => setSelectedId(entity.id)} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n )}\n <Syntax.Root data={selectedObject} replacer={refReplacer}>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root classNames='grid grid-cols-[1fr_3rem]'>\n <Syntax.Filter />\n <Input.Root>\n <Input.TextInput\n variant='subdued'\n type='number'\n min={0}\n step={1}\n aria-label='Ref depth'\n value={depth}\n onChange={(event) => setDepth(Math.max(0, Number(event.target.value) || 0))}\n />\n </Input.Root>\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Syntax.Viewport>\n <Syntax.Code />\n </Syntax.Viewport>\n </Panel.Content>\n </Panel.Root>\n </Syntax.Root>\n </div>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,SAASC,SAASC,gBAAgB;AAGzC,SAASC,mBAAmB;AAC5B,SAASC,QAAQC,MAAMC,KAAKC,aAAa;AAEzC,SAASC,gBAAgB;AACzB,SAASC,WAAWC,OAAOC,OAAOC,YAAYC,eAAe;AAC7D,SAASC,cAAc;AACvB,SAASC,UAAU;AAOZ,IAAMC,mBAAmB,CAAC,EAAEC,MAAMC,YAAW,MAAyB;AAC3E,QAAMC,KAAKb,IAAIc,YAAYF,WAAAA;AAC3B,QAAM,CAACG,YAAYC,aAAAA,IAAiBpB,SAA0B,IAAA;AAC9D,QAAM,CAACqB,OAAOC,QAAAA,IAAYtB,SAAS,CAAA;AACnC,QAAM,CAACuB,cAAAA,IAAkBjB,SACvBW,IACAZ,MAAMmB,OAAOtB,OAAOuB,GAAGN,cAAcH,YAAYS,EAAE,CAAA,EAAGC,QAAQ;IAAEC,SAAS;EAAU,CAAA,CAAA;AAErF,QAAMC,cAAc7B,QAAQ,MAAOkB,KAAKd,KAAK0B,kBAAkB;IAAEZ;IAAII;EAAM,CAAA,IAAKS,QAAY;IAACb;IAAII;GAAM;AAEvG,SACE,sBAAA,cAACd,UAAUwB,UAAQ,MACjB,sBAAA,cAACtB,MAAMuB,MAAI;IAACjB;KACV,sBAAA,cAACN,MAAME,SAAO;IAACsB,SAAAA;KACb,sBAAA,cAACtB,QAAQqB,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACvB,MAAMyB,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACE,OAAAA;IAAIC,WAAWvB,GAAG,kCAAkCI,MAAM,qBAAA;KACxDA,MACC,sBAAA,cAACP,WAAWsB,MAAI,MACd,sBAAA,cAACtB,WAAW2B,UAAQ,MAClB,sBAAA,cAACpC,aAAAA;IAAYgB;IAAQqB,MAAMtB;IAAauB,UAAU,CAACC,WAAWpB,cAAcoB,OAAOf,EAAE;QAI3F,sBAAA,cAACb,OAAOoB,MAAI;IAACS,MAAMlB;IAAgBmB,UAAUd;KAC3C,sBAAA,cAACnB,MAAMuB,MAAI,MACT,sBAAA,cAACvB,MAAME,SAAO;IAACsB,SAAAA;KACb,sBAAA,cAACtB,QAAQqB,MAAI;IAACW,YAAW;KACvB,sBAAA,cAAC/B,OAAOV,QAAM,IAAA,GACd,sBAAA,cAACM,MAAMwB,MAAI,MACT,sBAAA,cAACxB,MAAMoC,WAAS;IACdC,SAAQ;IACRC,MAAK;IACLC,KAAK;IACLC,MAAM;IACNC,cAAW;IACXC,OAAO7B;IACP8B,UAAU,CAACC,UAAU9B,SAAS+B,KAAKC,IAAI,GAAGC,OAAOH,MAAMI,OAAON,KAAK,KAAK,CAAA,CAAA;SAKhF,sBAAA,cAACzC,MAAMyB,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACrB,OAAOyB,UAAQ,MACd,sBAAA,cAACzB,OAAO6C,MAAI,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAUhC;",
|
|
6
|
-
"names": ["React", "useMemo", "useState", "ObjectsTree", "Filter", "Json", "Obj", "Query", "useQuery", "Clipboard", "Input", "Panel", "ScrollArea", "Toolbar", "Syntax", "mx", "DebugObjectPanel", "role", "companionTo", "db", "getDatabase", "selectedId", "setSelectedId", "depth", "setDepth", "selectedObject", "select", "id", "options", "deleted", "refReplacer", "createRefReplacer", "undefined", "Provider", "Root", "asChild", "Content", "div", "className", "Viewport", "root", "onSelect", "entity", "data", "replacer", "classNames", "TextInput", "variant", "type", "min", "step", "aria-label", "value", "onChange", "event", "Math", "max", "Number", "target", "Code"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/DebugSettings/DebugSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { AppCapabilities, getPersonalSpace } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';\nimport { log } from '@dxos/log';\nimport { type IdbLogStore } from '@dxos/log-store-idb';\nimport { useClient } from '@dxos/react-client';\nimport { IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';\nimport { Settings as SettingsForm } from '@dxos/react-ui-form';\nimport { TRACE_ALL_KEY } from '@dxos/tracing';\nimport { setDeep } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { type Settings } from '#types';\n\ntype Toast = {\n title: string;\n description?: string;\n};\n\nconst StorageAdapters = {\n opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,\n idb: defs.Runtime.Client.Storage.StorageDriver.IDB,\n} as const;\n\nexport type DebugSettingsProps = AppSurface.SettingsArticleProps<\n Settings.Settings,\n {\n logStore: IdbLogStore;\n onUpload?: AppCapabilities.FileUploader;\n }\n>;\n\nexport const DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }: DebugSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const [toast, setToast] = useState<Toast>();\n const download = useFileDownload();\n const [storageConfig, setStorageConfig] = useState<ConfigProto>({});\n const client = useClient();\n\n useEffect(() => {\n void Storage().then((config) => setStorageConfig(config));\n }, []);\n\n const handleToast = useCallback(\n (toast: Toast) => {\n setToast(toast);\n const timer = setTimeout(() => setToast(undefined), 5_000);\n return () => clearTimeout(timer);\n },\n [setToast],\n );\n\n const handleDownload = useCallback(async () => {\n const data = await client.diagnostics();\n const file = new Blob([JSON.stringify(data, undefined, 2)], {\n type: 'text/plain',\n });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (onUpload) {\n const personalSpace = getPersonalSpace(client);\n if (!personalSpace) {\n log.error('no personal space available for upload');\n return;\n }\n const info = await onUpload(personalSpace.db, new File([file], fileName));\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({\n title: t('settings.uploaded.message'),\n description: t('settings.uploaded.description'),\n });\n\n // TODO(nf): move to IpfsPlugin?\n const url = client.config.values.runtime!.services!.ipfs!.gateway + '/' + info.cid;\n void navigator.clipboard.writeText(url);\n handleToast({\n title: t('settings.uploaded.message'),\n description: t('settings.uploaded.description'),\n });\n log.info('diagnostics', { url });\n }\n }, [client, download, handleToast, onUpload, t]);\n\n const handleDownloadLogs = useCallback(async () => {\n const ndjson = await logStore.export();\n const file = new Blob([ndjson], { type: 'application/x-ndjson' });\n const fileName = `composer-logs-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.ndjson`;\n download(file, fileName);\n }, [download, logStore]);\n\n const handleRepair = useCallback(async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({\n title: t('settings.repair-success.message'),\n description: JSON.stringify(info, undefined, 2),\n });\n } catch (err: any) {\n handleToast({\n title: t('settings.repair-failed.message'),\n description: err.message,\n });\n }\n }, [client, handleToast, t]);\n\n const handleWireframeChange = useCallback(\n (checked: boolean) => onSettingsChange?.((s) => ({ ...s, wireframe: !!checked })),\n [onSettingsChange],\n );\n\n const traceAll = useMemo(\n () => settings.traceAll ?? (typeof localStorage !== 'undefined' && localStorage.getItem(TRACE_ALL_KEY) === 'true'),\n [settings.traceAll],\n );\n\n const handleTraceAllChange = useCallback(\n (checked: boolean) => {\n const value = !!checked;\n localStorage.setItem(TRACE_ALL_KEY, String(value));\n onSettingsChange?.((s) => ({ ...s, traceAll: value }));\n },\n [onSettingsChange],\n );\n\n const handleOpenTracingPanel = useCallback(() => {\n window.open('about:blank', '_blank');\n }, []);\n\n const handleStorageAdapterChange = useCallback(\n (value: string) => {\n if (confirm(t('settings.storage-adapter.changed-alert.message'))) {\n updateConfig(\n storageConfig,\n setStorageConfig,\n ['runtime', 'client', 'storage', 'dataStore'],\n StorageAdapters[value as keyof typeof StorageAdapters],\n );\n }\n },\n [storageConfig, t],\n );\n\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={t('settings.title', { ns: meta.id })}>\n <SettingsForm.Item title={t('settings.wireframe.label')} description={t('settings.wireframe.description')}>\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.wireframe}\n onCheckedChange={handleWireframeChange}\n />\n </SettingsForm.Item>\n <SettingsForm.Item title={t('settings.trace-all.label')} description={t('settings.trace-all.description')}>\n <Input.Switch disabled={!onSettingsChange} checked={traceAll} onCheckedChange={handleTraceAllChange} />\n </SettingsForm.Item>\n <SettingsForm.Item\n title={t('settings.tracing-panel.label')}\n description={t('settings.tracing-panel.description')}\n >\n <IconButton\n icon='ph--arrow-square-out--regular'\n iconOnly\n label={t('settings.tracing-panel.label')}\n onClick={handleOpenTracingPanel}\n />\n </SettingsForm.Item>\n <SettingsForm.Item\n title={t('settings.download-diagnostics.label')}\n description={t('settings.download-diagnostics.description')}\n >\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings.download-diagnostics.label')}\n onClick={handleDownload}\n />\n </SettingsForm.Item>\n <SettingsForm.Item\n title={t('settings.download-logs.label')}\n description={t('settings.download-logs.description')}\n >\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings.download-logs.label')}\n onClick={handleDownloadLogs}\n />\n </SettingsForm.Item>\n <SettingsForm.Item title={t('settings.repair.label')} description={t('settings.repair.description')}>\n <IconButton\n icon='ph--first-aid-kit--regular'\n iconOnly\n label={t('settings.repair.label')}\n onClick={handleRepair}\n />\n </SettingsForm.Item>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Title icon='ph--gift--duotone'>\n <span>{toast.title}</span>\n </Toast.Title>\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\n </Toast.Root>\n )}\n\n <SettingsForm.Item\n title={t('settings.choose-storage-adaptor.label')}\n description={t('settings.choose-storage-adaptor.description')}\n >\n <Select.Root\n disabled={!onSettingsChange}\n value={\n Object.entries(StorageAdapters).find(\n ([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,\n )?.[0]\n }\n onValueChange={handleStorageAdapterChange}\n >\n <Select.TriggerButton disabled={!onSettingsChange} placeholder={t('settings.data-store.label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Object.keys(StorageAdapters).map((key) => (\n <Select.Option key={key} value={key}>\n {t(`settings.storage-adaptor.${key}.label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsForm.Item>\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n\nconst updateConfig = (config: ConfigProto, setConfig: (newConfig: ConfigProto) => void, path: string[], value: any) => {\n const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));\n setDeep(storageConfigCopy, path, value);\n setConfig(storageConfigCopy);\n queueMicrotask(async () => {\n await SaveConfig(storageConfigCopy);\n });\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useEffect", "useMemo", "useState", "getPersonalSpace", "SaveConfig", "Storage", "defs", "log", "useClient", "IconButton", "Input", "Select", "Toast", "useFileDownload", "useTranslation", "Settings", "SettingsForm", "TRACE_ALL_KEY", "setDeep", "meta", "StorageAdapters", "idb", "Client", "DebugSettings", "settings", "onSettingsChange", "toast", "download", "storageConfig", "setStorageConfig", "client", "config", "handleToast", "setToast", "setTimeout", "clearTimeout", "Blob", "JSON", "stringify", "data", "undefined", "type", "fileName", "onUpload", "personalSpace", "error", "description", "title", "info", "t", "ndjson", "checked", "handleTraceAllChange", "localStorage", "String", "value", "handleStorageAdapterChange", "disabled", "wireframe", "onCheckedChange", "traceAll", "icon", "iconOnly", "label", "onClick", "handleOpenTracingPanel", "handleDownload", "handleDownloadLogs", "handleRepair", "span", "Object", "entries", "find", "_name", "onValueChange", "TriggerButton", "key", "updateConfig", "path", "storageConfigCopy", "setConfig", "queueMicrotask"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { ObjectsTree } from '@dxos/devtools';\nimport { Filter, Query } from '@dxos/echo';\nimport { type EntityId } from '@dxos/keys';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\n\nexport type DebugSpaceObjectsPanelProps = AppSurface.SpaceArticleProps;\n\nexport const DebugSpaceObjectsPanel = ({ space }: DebugSpaceObjectsPanelProps) => {\n const [selectedId, setSelectedId] = useState<EntityId | null>(null);\n const [selectedObject] = useQuery(\n space.db,\n selectedId ? Query.select(Filter.id(selectedId)) : Query.select(Filter.nothing()),\n );\n\n return (\n <Clipboard.Provider>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <Input.Root>\n <Input.TextInput disabled placeholder='Search...' />\n </Input.Root>\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Grid rows={2} classNames='divide-y divide-separator'>\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree db={space.db} onSelect={(entity) => setSelectedId(entity.id)} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n {selectedObject && <JsonHighlighter classNames='p-1' data={selectedObject} />}\n </Grid>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,SAASC,gBAAgB;AAGhC,SAASC,mBAAmB;AAC5B,SAASC,QAAQC,aAAa;AAE9B,SAASC,gBAAgB;AACzB,SAASC,WAAWC,MAAMC,OAAOC,OAAOC,YAAYC,eAAe;AACnE,SAASC,uBAAuB;AAIzB,IAAMC,yBAAyB,CAAC,EAAEC,MAAK,MAA+B;AAC3E,QAAM,CAACC,YAAYC,aAAAA,IAAiBf,SAA0B,IAAA;AAC9D,QAAM,CAACgB,cAAAA,IAAkBZ,SACvBS,MAAMI,IACNH,aAAaX,MAAMe,OAAOhB,OAAOiB,GAAGL,UAAAA,CAAAA,IAAeX,MAAMe,OAAOhB,OAAOkB,QAAO,CAAA,CAAA;AAGhF,SACE,sBAAA,cAACf,UAAUgB,UAAQ,MACjB,sBAAA,cAACb,MAAMc,MAAI,MACT,sBAAA,cAACd,MAAME,SAAO;IAACa,SAAAA;KACb,sBAAA,cAACb,QAAQY,MAAI,MACX,sBAAA,cAACf,MAAMe,MAAI,MACT,sBAAA,cAACf,MAAMiB,WAAS;IAACC,UAAAA;IAASC,aAAY;SAI5C,sBAAA,cAAClB,MAAMmB,SAAO;IAACJ,SAAAA;KACb,sBAAA,cAACjB,MAAAA;IAAKsB,MAAM;IAAGC,YAAW;KACxB,sBAAA,cAACpB,WAAWa,MAAI,MACd,sBAAA,cAACb,WAAWqB,UAAQ,MAClB,sBAAA,cAAC7B,aAAAA;IAAYgB,IAAIJ,MAAMI;IAAIc,UAAU,CAACC,WAAWjB,cAAciB,OAAOb,EAAE;QAG3EH,kBAAkB,sBAAA,cAACL,iBAAAA;IAAgBkB,YAAW;IAAMI,MAAMjB;;AAMvE;",
|
|
6
|
-
"names": ["React", "useState", "ObjectsTree", "Filter", "Query", "useQuery", "Clipboard", "Grid", "Input", "Panel", "ScrollArea", "Toolbar", "JsonHighlighter", "DebugSpaceObjectsPanel", "space", "selectedId", "setSelectedId", "selectedObject", "db", "select", "id", "nothing", "Provider", "Root", "asChild", "TextInput", "disabled", "placeholder", "Content", "rows", "classNames", "Viewport", "onSelect", "entity", "data"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { StatsPanel, useStats } from '@dxos/devtools';\n\nexport const DevtoolsOverviewContainer = () => {\n const [stats, refreshStats] = useStats();\n const surfaceProfilerStats = Surface.useProfilerStats();\n const clearSurfaceProfiler = Surface.useProfilerClear();\n\n return (\n <StatsPanel\n stats={stats}\n surfaceProfilerStats={surfaceProfilerStats}\n onRefresh={refreshStats}\n onClearSurfaceProfiler={clearSurfaceProfiler}\n >\n <Surface.Surface role='devtools-overview' />\n </StatsPanel>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,WAAW;AAElB,SAASC,eAAe;AACxB,SAASC,YAAYC,gBAAgB;AAE9B,IAAMC,4BAA4B,MAAA;AACvC,QAAM,CAACC,OAAOC,YAAAA,IAAgBH,SAAAA;AAC9B,QAAMI,uBAAuBN,QAAQO,iBAAgB;AACrD,QAAMC,uBAAuBR,QAAQS,iBAAgB;AAErD,SACE,sBAAA,cAACR,YAAAA;IACCG;IACAE;IACAI,WAAWL;IACXM,wBAAwBH;KAExB,sBAAA,cAACR,QAAQA,SAAO;IAACY,MAAK;;AAG5B;",
|
|
6
|
-
"names": ["React", "Surface", "StatsPanel", "useStats", "DevtoolsOverviewContainer", "stats", "refreshStats", "surfaceProfilerStats", "useProfilerStats", "clearSurfaceProfiler", "useProfilerClear", "onRefresh", "onClearSurfaceProfiler", "role"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/containers/GithubPanel/GithubPanel.tsx", "../../../src/containers/GithubPanel/GithubComponent.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport React from 'react';\n\nimport { GithubComponent } from './GithubComponent';\n\nexport const GithubPanel = () => (\n <GithubComponent.Root>\n <div className='h-full grid grid-rows-[auto_minmax(0,1fr)_auto] overflow-hidden h-full is-full'>\n <GithubComponent.Header />\n <GithubComponent.Content />\n <GithubComponent.StatusBar />\n </div>\n </GithubComponent.Root>\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport React, { type ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport { IconButton, ScrollArea, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nconst DEFAULT_REPO = 'dxos/dxos';\nconst DEFAULT_LIMIT = 20;\n\ntype GithubUser = {\n login: string;\n avatar_url: string;\n html_url: string;\n};\n\ntype GithubPullRequest = {\n number: number;\n title: string;\n html_url: string;\n merged_at: string | null;\n user: GithubUser;\n};\n\ntype ComponentContextValue = {\n repo: string;\n pulls: GithubPullRequest[];\n unavailable: boolean;\n};\n\nconst ComponentContext = createContext<ComponentContextValue | null>(null);\n\nconst useComponentContext = () => {\n const ctx = useContext(ComponentContext);\n if (!ctx) {\n throw new Error('GithubComponent.* parts must be rendered inside GithubComponent.Root.');\n }\n return ctx;\n};\n\nexport type GithubComponentRootProps = {\n /** `<owner>/<name>`. Defaults to `dxos/dxos`. */\n repo?: string;\n /** Maximum number of merged PRs to fetch. */\n limit?: number;\n children?: ReactNode;\n};\n\nconst Root = ({ repo = DEFAULT_REPO, limit = DEFAULT_LIMIT, children }: GithubComponentRootProps) => {\n const [pulls, setPulls] = useState<GithubPullRequest[]>([]);\n const [unavailable, setUnavailable] = useState(false);\n\n useEffect(() => {\n const controller = new AbortController();\n setPulls([]);\n setUnavailable(false);\n void (async () => {\n try {\n const url = new URL(`https://api.github.com/repos/${repo}/pulls`);\n url.searchParams.set('state', 'closed');\n url.searchParams.set('sort', 'updated');\n url.searchParams.set('direction', 'desc');\n url.searchParams.set('per_page', String(limit * 2));\n const response = await fetch(url.toString(), {\n signal: controller.signal,\n headers: { Accept: 'application/vnd.github+json' },\n });\n if (!response.ok) {\n setUnavailable(true);\n return;\n }\n const items = (await response.json()) as GithubPullRequest[];\n setPulls(items.filter((pull) => pull.merged_at !== null).slice(0, limit));\n setUnavailable(false);\n } catch {\n if (controller.signal.aborted) {\n return;\n }\n setPulls([]);\n setUnavailable(true);\n }\n })();\n return () => controller.abort();\n }, [repo, limit]);\n\n return <ComponentContext.Provider value={{ repo, pulls, unavailable }}>{children}</ComponentContext.Provider>;\n};\n\nconst Header = () => {\n const { t } = useTranslation(meta.id);\n const { repo, pulls, unavailable } = useComponentContext();\n return (\n <header className='flex items-center justify-between gap-1 px-4 py-3 bg-modal-surface border-b border-subdued-separator'>\n <a\n href={`https://github.com/${repo}`}\n target='_blank'\n rel='noopener noreferrer'\n className='text-sm font-medium truncate'\n >\n @{repo}\n </a>\n <div className='text-xs text-description'>\n {unavailable\n ? t('github-unavailable.message')\n : pulls.length > 0\n ? t('recent-prs.label', { count: pulls.length })\n : t('github-loading.message')}\n </div>\n </header>\n );\n};\n\nconst RELATIVE_UNITS: Array<[Intl.RelativeTimeFormatUnit, number]> = [\n ['year', 60 * 60 * 24 * 365],\n ['month', 60 * 60 * 24 * 30],\n ['week', 60 * 60 * 24 * 7],\n ['day', 60 * 60 * 24],\n ['hour', 60 * 60],\n ['minute', 60],\n];\n\nconst formatRelative = (iso: string): string => {\n const formatter = new Intl.RelativeTimeFormat(undefined, { numeric: 'auto' });\n const diffSeconds = (Date.parse(iso) - Date.now()) / 1000;\n const absDiff = Math.abs(diffSeconds);\n for (const [unit, secondsInUnit] of RELATIVE_UNITS) {\n if (absDiff >= secondsInUnit) {\n return formatter.format(Math.round(diffSeconds / secondsInUnit), unit);\n }\n }\n return formatter.format(Math.round(diffSeconds), 'second');\n};\n\nconst PullRow = ({ pull }: { pull: GithubPullRequest }) => (\n <li>\n <a\n href={pull.html_url}\n target='_blank'\n rel='noopener noreferrer'\n className='flex items-start gap-2 px-2 py-1 rounded-sm hover:bg-hover-surface'\n >\n <img src={pull.user.avatar_url} alt='' className='w-6 h-6 rounded-full shrink-0 mt-0.5' />\n <div className='flex flex-col min-w-0 flex-1'>\n <span className='text-sm truncate'>{pull.title}</span>\n <span className='text-xs text-description truncate'>\n #{pull.number} · {pull.user.login} · {pull.merged_at ? formatRelative(pull.merged_at) : ''}\n </span>\n </div>\n </a>\n </li>\n);\n\nconst Content = () => {\n const { pulls } = useComponentContext();\n return (\n <ScrollArea.Root orientation='vertical'>\n <ScrollArea.Viewport>\n <ul className='flex flex-col p-1'>\n {pulls.map((pull) => (\n <PullRow key={pull.number} pull={pull} />\n ))}\n </ul>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n};\n\nconst StatusBar = () => {\n const { t } = useTranslation(meta.id);\n const { repo } = useComponentContext();\n return (\n <IconButton\n icon='ph--github-logo--regular'\n label={t('view-on-github.button')}\n variant='primary'\n classNames='w-full'\n onClick={() => {\n window.open(`https://github.com/${repo}`, '_blank', 'noopener,noreferrer');\n }}\n />\n );\n};\n\nexport const GithubComponent = {\n Root,\n Header,\n Content,\n StatusBar,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "React", "createContext", "useContext", "useEffect", "useState", "IconButton", "ScrollArea", "useTranslation", "meta", "DEFAULT_REPO", "DEFAULT_LIMIT", "ComponentContext", "useComponentContext", "ctx", "Error", "Root", "repo", "limit", "children", "pulls", "setPulls", "unavailable", "setUnavailable", "controller", "AbortController", "url", "URL", "searchParams", "set", "String", "response", "fetch", "toString", "signal", "headers", "Accept", "ok", "items", "json", "filter", "pull", "merged_at", "slice", "aborted", "abort", "Provider", "value", "Header", "t", "id", "header", "className", "a", "href", "target", "rel", "div", "length", "count", "RELATIVE_UNITS", "formatRelative", "iso", "formatter", "Intl", "RelativeTimeFormat", "undefined", "numeric", "diffSeconds", "Date", "parse", "now", "absDiff", "Math", "abs", "unit", "secondsInUnit", "format", "round", "PullRow", "li", "html_url", "img", "src", "user", "avatar_url", "alt", "span", "title", "number", "login", "Content", "orientation", "Viewport", "ul", "map", "key", "StatusBar", "icon", "label", "variant", "classNames", "onClick", "window", "open", "GithubComponent", "GithubPanel", "React", "GithubComponent", "Root", "div", "className", "Header", "Content", "StatusBar"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, AppNode, getSpaceIdFromPath } from '@dxos/app-toolkit';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { GraphBuilder, Node, NodeMatcher } from '@dxos/plugin-graph';\nimport { SPACE_TYPE } from '@dxos/plugin-space';\nimport { getParentId } from '@dxos/react-ui-attention';\n\nimport { meta } from '#meta';\nimport { Devtools } from '#types';\n\nconst DEVTOOLS_TYPE = `${meta.id}.devtools`;\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: 'root',\n match: NodeMatcher.whenRoot,\n actions: () =>\n Effect.succeed([\n Node.makeAction({\n id: 'resetData',\n data: () =>\n Effect.sync(() => {\n window.location.href = '/reset.html#continue';\n }),\n properties: {\n label: ['reset-data.label', { ns: meta.id }],\n icon: 'ph--warning--regular',\n },\n }),\n ]),\n }),\n\n GraphBuilder.createExtension({\n id: 'devtools',\n match: NodeMatcher.whenAny(NodeMatcher.whenRoot, NodeMatcher.whenNodeType(SPACE_TYPE)),\n connector: (node, get) =>\n Effect.gen(function* () {\n const client = yield* Capability.get(ClientCapabilities.Client);\n const layoutAtom = get(yield* Capability.atom(AppCapabilities.Layout))[0];\n const layout = layoutAtom ? get(layoutAtom) : undefined;\n const spaceId = layout?.workspace ? getSpaceIdFromPath(layout.workspace) : undefined;\n const space = spaceId ? client.spaces.get(spaceId) : undefined;\n const [graph] = get(yield* Capability.atom(AppCapabilities.AppGraph));\n\n return [\n Node.make({\n id: Devtools.id,\n data: null,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['devtools.label', { ns: meta.id }],\n icon: 'ph--hammer--regular',\n disposition: 'pin-end',\n position: 'last',\n },\n nodes: [\n Node.make({\n id: 'appGraph',\n type: `${meta.id}.app-graph`,\n data: { graph: graph?.graph, root: node.id === Node.RootId ? node.id : getParentId(node.id) },\n properties: {\n label: ['debug-app-graph.label', { ns: meta.id }],\n icon: 'ph--graph--regular',\n },\n }),\n Node.make({\n id: 'toolsExplorer',\n data: Devtools.ToolsExplorer,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['debug-tools-explorer.label', { ns: meta.id }],\n icon: 'ph--toolbox--regular',\n },\n }),\n ...(space && node.type === SPACE_TYPE\n ? [\n Node.make({\n id: 'debug',\n type: `${meta.id}.space`,\n data: { space, type: `${meta.id}.space` },\n properties: {\n label: ['generate-objects.label', { ns: meta.id }],\n icon: 'ph--dice-five--regular',\n },\n }),\n ]\n : []),\n Node.make({\n id: Devtools.Client.id,\n data: null,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['client.label', { ns: meta.id }],\n icon: 'ph--users--regular',\n },\n nodes: [\n Node.make({\n id: Devtools.Client.Config,\n data: Devtools.Client.Config,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['config.label', { ns: meta.id }],\n icon: 'ph--gear--regular',\n },\n }),\n Node.make({\n id: Devtools.Client.Storage,\n data: Devtools.Client.Storage,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['storage.label', { ns: meta.id }],\n icon: 'ph--hard-drives--regular',\n },\n }),\n Node.make({\n id: Devtools.Client.Sqlite,\n data: Devtools.Client.Sqlite,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['sqlite.label', { ns: meta.id }],\n icon: 'ph--database--regular',\n },\n }),\n Node.make({\n id: Devtools.Client.Logs,\n data: Devtools.Client.Logs,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['logs.label', { ns: meta.id }],\n icon: 'ph--file-text--regular',\n },\n }),\n Node.make({\n id: Devtools.Client.Diagnostics,\n data: Devtools.Client.Diagnostics,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['diagnostics.label', { ns: meta.id }],\n icon: 'ph--chart-line--regular',\n },\n }),\n ],\n }),\n Node.make({\n id: Devtools.Halo.id,\n data: null,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['halo.label', { ns: meta.id }],\n icon: 'ph--identification-badge--regular',\n },\n nodes: [\n Node.make({\n id: Devtools.Halo.Identity,\n data: Devtools.Halo.Identity,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['identity.label', { ns: meta.id }],\n icon: 'ph--identification-badge--regular',\n },\n }),\n Node.make({\n id: Devtools.Halo.Devices,\n data: Devtools.Halo.Devices,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['devices.label', { ns: meta.id }],\n icon: 'ph--devices--regular',\n },\n }),\n Node.make({\n id: Devtools.Halo.Keyring,\n data: Devtools.Halo.Keyring,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['keyring.label', { ns: meta.id }],\n icon: 'ph--key--regular',\n },\n }),\n Node.make({\n id: Devtools.Halo.Credentials,\n data: Devtools.Halo.Credentials,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['credentials.label', { ns: meta.id }],\n icon: 'ph--credit-card--regular',\n },\n }),\n ],\n }),\n Node.make({\n id: Devtools.Echo.id,\n data: null,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['echo.label', { ns: meta.id }],\n icon: 'ph--database--regular',\n },\n nodes: [\n Node.make({\n id: Devtools.Echo.Spaces,\n data: Devtools.Echo.Spaces,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['spaces.label', { ns: meta.id }],\n icon: 'ph--graph--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Space,\n data: Devtools.Echo.Space,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['space.label', { ns: meta.id }],\n icon: 'ph--planet--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Feeds,\n data: Devtools.Echo.Feeds,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['feeds.label', { ns: meta.id }],\n icon: 'ph--list-bullets--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Objects,\n data: Devtools.Echo.Objects,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['objects.label', { ns: meta.id }],\n icon: 'ph--cube--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Schema,\n data: Devtools.Echo.Schema,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['schema.label', { ns: meta.id }],\n icon: 'ph--database--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Registry,\n data: Devtools.Echo.Registry,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['registry.label', { ns: meta.id }],\n icon: 'ph--books--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Automerge,\n data: Devtools.Echo.Automerge,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['automerge.label', { ns: meta.id }],\n icon: 'ph--gear-six--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Queues,\n data: Devtools.Echo.Queues,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['queues.label', { ns: meta.id }],\n icon: 'ph--queue--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Members,\n data: Devtools.Echo.Members,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['members.label', { ns: meta.id }],\n icon: 'ph--users--regular',\n },\n }),\n Node.make({\n id: Devtools.Echo.Metadata,\n data: Devtools.Echo.Metadata,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['metadata.label', { ns: meta.id }],\n icon: 'ph--hard-drive--regular',\n },\n }),\n ],\n }),\n Node.make({\n id: Devtools.Mesh.id,\n data: null,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['mesh.label', { ns: meta.id }],\n icon: 'ph--graph--regular',\n },\n nodes: [\n Node.make({\n id: Devtools.Mesh.Signal,\n data: Devtools.Mesh.Signal,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['signal.label', { ns: meta.id }],\n icon: 'ph--wifi-high--regular',\n },\n }),\n Node.make({\n id: Devtools.Mesh.Swarm,\n data: Devtools.Mesh.Swarm,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['swarm.label', { ns: meta.id }],\n icon: 'ph--users-three--regular',\n },\n }),\n Node.make({\n id: Devtools.Mesh.Network,\n data: Devtools.Mesh.Network,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['network.label', { ns: meta.id }],\n icon: 'ph--polygon--regular',\n },\n }),\n ],\n }),\n Node.make({\n id: Devtools.Edge.id,\n data: null,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['edge.label', { ns: meta.id }],\n icon: 'ph--cloud--regular',\n },\n nodes: [\n Node.make({\n id: Devtools.Edge.Dashboard,\n data: Devtools.Edge.Dashboard,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['dashboard.label', { ns: meta.id }],\n icon: 'ph--computer-tower--regular',\n },\n }),\n Node.make({\n id: Devtools.Edge.Workflows,\n data: Devtools.Edge.Workflows,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['workflows.label', { ns: meta.id }],\n icon: 'ph--function--regular',\n },\n }),\n Node.make({\n id: Devtools.Edge.Traces,\n data: Devtools.Edge.Traces,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['traces.label', { ns: meta.id }],\n icon: 'ph--line-segments--regular',\n },\n }),\n Node.make({\n id: Devtools.Edge.Testing,\n data: Devtools.Edge.Testing,\n type: DEVTOOLS_TYPE,\n properties: {\n label: ['testing.label', { ns: meta.id }],\n icon: 'ph--flask--regular',\n },\n }),\n ],\n }),\n ],\n }),\n ];\n }),\n }),\n\n // Debug object companion.\n GraphBuilder.createExtension({\n id: 'debugObject',\n match: NodeMatcher.whenEchoObject,\n connector: () =>\n Effect.succeed([\n AppNode.makeCompanion({\n id: 'debug',\n label: ['debug.label', { ns: meta.id }],\n icon: 'ph--bug--regular',\n data: 'debug',\n position: 'last',\n }),\n ]),\n }),\n\n // Devtools deck companion.\n GraphBuilder.createExtension({\n id: 'devtoolsOverview',\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n AppNode.makeDeckCompanion({\n id: 'devtools',\n label: ['devtools-overview.label', { ns: meta.id }],\n icon: 'ph--equalizer--regular',\n data: 'devtools' as const,\n position: 'last',\n }),\n ]),\n }),\n\n // Object explorer.\n GraphBuilder.createExtension({\n id: 'spaceObjects',\n match: NodeMatcher.whenRoot,\n connector: () =>\n Effect.succeed([\n AppNode.makeDeckCompanion({\n id: 'spaceObjects',\n label: ['space-objects.label', { ns: meta.id }],\n icon: 'ph--cube--regular',\n data: 'space-objects' as const,\n position: 'last',\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "AppNode", "getSpaceIdFromPath", "ClientCapabilities", "GraphBuilder", "Node", "NodeMatcher", "SPACE_TYPE", "getParentId", "meta", "Devtools", "DEVTOOLS_TYPE", "id", "makeModule", "fnUntraced", "extensions", "all", "createExtension", "match", "whenRoot", "actions", "succeed", "makeAction", "data", "sync", "window", "location", "href", "properties", "label", "ns", "icon", "whenAny", "whenNodeType", "connector", "node", "get", "gen", "client", "Client", "layoutAtom", "atom", "Layout", "layout", "undefined", "spaceId", "workspace", "space", "spaces", "graph", "AppGraph", "make", "type", "disposition", "position", "nodes", "root", "RootId", "ToolsExplorer", "Config", "Storage", "Sqlite", "Logs", "Diagnostics", "Halo", "Identity", "Devices", "Keyring", "Credentials", "Echo", "Spaces", "Space", "Feeds", "Objects", "Schema", "Registry", "Automerge", "Queues", "Members", "Metadata", "Mesh", "Signal", "Swarm", "Network", "Edge", "Dashboard", "Workflows", "Traces", "Testing", "whenEchoObject", "makeCompanion", "makeDeckCompanion", "contributes", "AppGraphBuilder"]
|
|
7
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// src/meta.ts
|
|
2
|
-
import { Plugin } from "@dxos/app-framework";
|
|
3
|
-
import { DXN } from "@dxos/keys";
|
|
4
|
-
import { trim } from "@dxos/util";
|
|
5
|
-
var meta = Plugin.makeMeta({
|
|
6
|
-
key: DXN.make("org.dxos.plugin.debug"),
|
|
7
|
-
name: "Debug",
|
|
8
|
-
author: "DXOS",
|
|
9
|
-
spec: "PLUGIN.mdl",
|
|
10
|
-
description: trim`
|
|
11
|
-
DebugPlugin is the developer toolkit for DXOS Composer. It adds a structured Devtools node
|
|
12
|
-
to the navigation graph — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —
|
|
13
|
-
exposing panel views for config, storage, logs, diagnostics, identity, devices, feeds,
|
|
14
|
-
objects, schemas, automerge internals, network topology, EDGE workflows, and invocation
|
|
15
|
-
traces, all driven by the @dxos/devtools component library.
|
|
16
|
-
|
|
17
|
-
The plugin contributes a Debug companion tab to every ECHO object in the deck so developers
|
|
18
|
-
can inspect raw field values and DXNs inline, and a Space Objects companion panel that lists
|
|
19
|
-
all objects in the active space with live reactive updates.
|
|
20
|
-
|
|
21
|
-
Test-data generation is available via a SpaceGenerator article surface: developers can
|
|
22
|
-
create configurable batches of synthetic ECHO objects into any space collection, with a
|
|
23
|
-
status indicator showing when generation is running.
|
|
24
|
-
|
|
25
|
-
Additional utilities include a wireframe overlay mode that draws labelled borders around
|
|
26
|
-
every article and section surface, a log-capture and download facility backed by an
|
|
27
|
-
IdbLogStore, a ToolsExplorer connected to the DXOS MCP introspect service, and a
|
|
28
|
-
globalThis helper for manual storage-version testing.
|
|
29
|
-
`,
|
|
30
|
-
icon: "ph--bug--regular",
|
|
31
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug",
|
|
32
|
-
screenshots: [
|
|
33
|
-
"https://dxos.network/plugin-details-debug-dark.png"
|
|
34
|
-
],
|
|
35
|
-
tags: [
|
|
36
|
-
"labs"
|
|
37
|
-
]
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
export {
|
|
41
|
-
meta
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=chunk-HOV6MV5B.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { DXN } from '@dxos/keys';\nimport { trim } from '@dxos/util';\n\nexport const meta = Plugin.makeMeta({\n key: DXN.make('org.dxos.plugin.debug'),\n name: 'Debug',\n author: 'DXOS',\n spec: 'PLUGIN.mdl',\n description: trim`\n DebugPlugin is the developer toolkit for DXOS Composer. It adds a structured Devtools node\n to the navigation graph — grouped into Client, HALO, ECHO, Mesh, and EDGE sub-sections —\n exposing panel views for config, storage, logs, diagnostics, identity, devices, feeds,\n objects, schemas, automerge internals, network topology, EDGE workflows, and invocation\n traces, all driven by the @dxos/devtools component library.\n\n The plugin contributes a Debug companion tab to every ECHO object in the deck so developers\n can inspect raw field values and DXNs inline, and a Space Objects companion panel that lists\n all objects in the active space with live reactive updates.\n\n Test-data generation is available via a SpaceGenerator article surface: developers can\n create configurable batches of synthetic ECHO objects into any space collection, with a\n status indicator showing when generation is running.\n\n Additional utilities include a wireframe overlay mode that draws labelled borders around\n every article and section surface, a log-capture and download facility backed by an\n IdbLogStore, a ToolsExplorer connected to the DXOS MCP introspect service, and a\n globalThis helper for manual storage-version testing.\n `,\n icon: 'ph--bug--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-debug',\n screenshots: ['https://dxos.network/plugin-details-debug-dark.png'],\n tags: ['labs'],\n});\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,cAAc;AACvB,SAASC,WAAW;AACpB,SAASC,YAAY;AAEd,IAAMC,OAAOH,OAAOI,SAAS;EAClCC,KAAKJ,IAAIK,KAAK,uBAAA;EACdC,MAAM;EACNC,QAAQ;EACRC,MAAM;EACNC,aAAaR;;;;;;;;;;;;;;;;;;;;EAoBbS,MAAM;EACNC,QAAQ;EACRC,aAAa;IAAC;;EACdC,MAAM;IAAC;;AACT,CAAA;",
|
|
6
|
-
"names": ["Plugin", "DXN", "trim", "meta", "makeMeta", "key", "make", "name", "author", "spec", "description", "icon", "source", "screenshots", "tags"]
|
|
7
|
-
}
|