@dxos/plugin-debug 0.8.4-main.7996785055 → 0.8.4-main.8baae0fced
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/LICENSE +102 -5
- package/README.md +1 -1
- package/dist/lib/{browser/DebugGraph-7HXJ2PS2.mjs → neutral/DebugGraph-G4FWS57E.mjs} +4 -5
- package/dist/lib/neutral/DebugGraph-G4FWS57E.mjs.map +7 -0
- package/dist/lib/neutral/DebugObjectPanel-UJ63CV25.mjs +59 -0
- package/dist/lib/neutral/DebugObjectPanel-UJ63CV25.mjs.map +7 -0
- package/dist/lib/neutral/DebugPlugin.mjs +47 -0
- package/dist/lib/neutral/DebugPlugin.mjs.map +7 -0
- package/dist/lib/neutral/DebugPlugin.node.mjs +18 -0
- package/dist/lib/neutral/DebugPlugin.node.mjs.map +7 -0
- package/dist/lib/neutral/DebugPlugin.workerd.mjs +12 -0
- package/dist/lib/neutral/DebugPlugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/DebugSettings-Z3XADRNK.mjs +224 -0
- package/dist/lib/neutral/DebugSettings-Z3XADRNK.mjs.map +7 -0
- package/dist/lib/{browser/DebugSpaceObjectsPanel-SIK72DXV.mjs → neutral/DebugSpaceObjectsPanel-NISULU6U.mjs} +9 -20
- package/dist/lib/neutral/DebugSpaceObjectsPanel-NISULU6U.mjs.map +7 -0
- package/dist/lib/{browser/DebugStatus-FWF3YFBA.mjs → neutral/DebugStatus-YB3KFP7G.mjs} +5 -8
- package/dist/lib/neutral/DebugStatus-YB3KFP7G.mjs.map +7 -0
- package/dist/lib/{browser/DevtoolsOverviewContainer-TBTTPXVF.mjs → neutral/DevtoolsOverviewContainer-YX7Z3D2H.mjs} +4 -5
- package/dist/lib/neutral/DevtoolsOverviewContainer-YX7Z3D2H.mjs.map +7 -0
- package/dist/lib/neutral/GithubPanel-DAIR6QSZ.mjs +177 -0
- package/dist/lib/neutral/GithubPanel-DAIR6QSZ.mjs.map +7 -0
- package/dist/lib/neutral/SpaceGenerator-UBYB4NPD.mjs +143 -0
- package/dist/lib/neutral/SpaceGenerator-UBYB4NPD.mjs.map +7 -0
- package/dist/lib/{browser/Wireframe-KAGOKEFW.mjs → neutral/Wireframe-7SNRUKET.mjs} +8 -9
- package/dist/lib/neutral/Wireframe-7SNRUKET.mjs.map +7 -0
- package/dist/lib/{browser/app-graph-builder-FBLOEOH5.mjs → neutral/app-graph-builder-OIC65GEP.mjs} +169 -186
- package/dist/lib/neutral/app-graph-builder-OIC65GEP.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +15 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/{browser/chunk-Q37TZWW5.mjs → neutral/chunk-NFIOTQRZ.mjs} +21 -10
- package/dist/lib/neutral/chunk-NFIOTQRZ.mjs.map +7 -0
- package/dist/lib/{browser/chunk-ZOM2FBHQ.mjs → neutral/chunk-SWW2QL66.mjs} +5 -1
- package/dist/lib/neutral/chunk-SWW2QL66.mjs.map +7 -0
- package/dist/lib/{browser/SpaceGenerator-UUQS6TYY.mjs → neutral/components/index.mjs} +61 -264
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +23 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +18 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +8 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +12 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/{browser/react-context-KBHXEMRS.mjs → neutral/react-context-MUZ3KVLU.mjs} +4 -5
- package/dist/lib/neutral/react-context-MUZ3KVLU.mjs.map +7 -0
- package/dist/lib/{browser/react-surface-HYT4HKZX.mjs → neutral/react-surface-UP747GQ7.mjs} +148 -157
- package/dist/lib/neutral/react-surface-UP747GQ7.mjs.map +7 -0
- package/dist/lib/{browser/settings-XXFUM3QJ.mjs → neutral/settings-MPM6YUP4.mjs} +7 -11
- package/dist/lib/neutral/settings-MPM6YUP4.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +89 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/lib/neutral/types/index.mjs +14 -0
- package/dist/lib/neutral/types/index.mjs.map +7 -0
- package/dist/types/src/DebugPlugin.d.ts +2 -5
- package/dist/types/src/DebugPlugin.d.ts.map +1 -1
- package/dist/types/src/DebugPlugin.node.d.ts +5 -0
- package/dist/types/src/DebugPlugin.node.d.ts.map +1 -0
- package/dist/types/src/DebugPlugin.test.d.ts +2 -0
- package/dist/types/src/DebugPlugin.test.d.ts.map +1 -0
- package/dist/types/src/DebugPlugin.workerd.d.ts +5 -0
- package/dist/types/src/DebugPlugin.workerd.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +11 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
- package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/{settings/settings.d.ts → settings.d.ts} +2 -1
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.d.ts +11 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.d.ts.map +1 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts +104 -0
- package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/DebugSettings/index.d.ts +2 -0
- package/dist/types/src/components/DebugSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +2 -2
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/draw-util.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 +2 -0
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +2 -2
- package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -1
- package/dist/types/src/containers/DebugGraph/index.d.ts +1 -2
- package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts +3 -4
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -1
- package/dist/types/src/containers/DebugObjectPanel/index.d.ts +1 -2
- package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -1
- package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +1 -2
- package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -1
- package/dist/types/src/containers/DebugStatus/index.d.ts +1 -2
- package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -1
- package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +1 -2
- package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -1
- package/dist/types/src/containers/GithubPanel/GithubComponent.d.ts +15 -0
- package/dist/types/src/containers/GithubPanel/GithubComponent.d.ts.map +1 -0
- package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts +104 -0
- package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts.map +1 -0
- package/dist/types/src/containers/GithubPanel/GithubPanel.d.ts +3 -0
- package/dist/types/src/containers/GithubPanel/GithubPanel.d.ts.map +1 -0
- package/dist/types/src/containers/GithubPanel/index.d.ts +2 -0
- package/dist/types/src/containers/GithubPanel/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts +1 -5
- package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
- package/dist/types/src/containers/SpaceGenerator/index.d.ts +1 -2
- package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -1
- package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -1
- package/dist/types/src/containers/Wireframe/index.d.ts +1 -2
- package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +4 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +85 -61
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +8 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/{types.d.ts → types/index.d.ts} +10 -9
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +116 -63
- package/src/DebugPlugin.node.ts +18 -0
- package/src/DebugPlugin.test.ts +29 -0
- package/src/DebugPlugin.tsx +9 -11
- package/src/DebugPlugin.workerd.ts +12 -0
- package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +139 -153
- package/src/capabilities/index.ts +6 -4
- package/src/capabilities/{react-context/react-context.tsx → react-context.tsx} +1 -1
- package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +163 -139
- package/src/capabilities/{settings/settings.ts → settings.ts} +4 -4
- package/src/components/DebugSettings/DebugSettings.stories.tsx +36 -0
- package/src/components/DebugSettings/DebugSettings.tsx +262 -0
- package/src/components/DebugSettings/index.ts +5 -0
- package/src/components/SpaceGenerator/ObjectGenerator.tsx +13 -14
- package/src/components/SpaceGenerator/draw-util.ts +8 -8
- package/src/components/SpaceGenerator/presets.ts +27 -52
- package/src/components/index.ts +4 -0
- package/src/containers/DebugGraph/DebugGraph.tsx +3 -2
- package/src/containers/DebugGraph/index.ts +1 -3
- package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +44 -15
- package/src/containers/DebugObjectPanel/index.ts +1 -3
- package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +9 -17
- package/src/containers/DebugSpaceObjectsPanel/index.ts +1 -3
- package/src/containers/DebugStatus/DebugStatus.tsx +1 -3
- package/src/containers/DebugStatus/index.ts +1 -3
- package/src/containers/DevtoolsOverviewContainer/index.ts +1 -3
- package/src/containers/GithubPanel/GithubComponent.stories.tsx +38 -0
- package/src/containers/GithubPanel/GithubComponent.tsx +192 -0
- package/src/containers/GithubPanel/GithubPanel.tsx +17 -0
- package/src/containers/GithubPanel/index.ts +5 -0
- package/src/containers/SpaceGenerator/SpaceGenerator.tsx +16 -20
- package/src/containers/SpaceGenerator/index.ts +1 -3
- package/src/containers/Wireframe/Wireframe.tsx +2 -6
- package/src/containers/Wireframe/index.ts +1 -3
- package/src/containers/index.ts +1 -1
- package/src/index.ts +1 -1
- package/src/meta.ts +2 -0
- package/src/plugin.ts +10 -0
- package/src/translations.ts +81 -60
- package/src/types/Settings.ts +16 -0
- package/src/{types.ts → types/index.ts} +14 -12
- package/dist/lib/browser/DebugGraph-7HXJ2PS2.mjs.map +0 -7
- package/dist/lib/browser/DebugObjectPanel-KXVFOGU6.mjs +0 -35
- package/dist/lib/browser/DebugObjectPanel-KXVFOGU6.mjs.map +0 -7
- package/dist/lib/browser/DebugSettings-DQXOXF6A.mjs +0 -183
- package/dist/lib/browser/DebugSettings-DQXOXF6A.mjs.map +0 -7
- package/dist/lib/browser/DebugSpaceObjectsPanel-SIK72DXV.mjs.map +0 -7
- package/dist/lib/browser/DebugStatus-FWF3YFBA.mjs.map +0 -7
- package/dist/lib/browser/DevtoolsOverviewContainer-TBTTPXVF.mjs.map +0 -7
- package/dist/lib/browser/SpaceGenerator-UUQS6TYY.mjs.map +0 -7
- package/dist/lib/browser/Wireframe-KAGOKEFW.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-FBLOEOH5.mjs.map +0 -7
- package/dist/lib/browser/chunk-Q37TZWW5.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZOM2FBHQ.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -132
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-context-KBHXEMRS.mjs.map +0 -7
- package/dist/lib/browser/react-surface-HYT4HKZX.mjs.map +0 -7
- package/dist/lib/browser/settings-XXFUM3QJ.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-context/index.d.ts +0 -7
- package/dist/types/src/capabilities/react-context/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-context/react-context.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -5
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/index.d.ts +0 -3
- package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
- package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +0 -10
- package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +0 -1
- package/dist/types/src/containers/DebugSettings/index.d.ts +0 -3
- package/dist/types/src/containers/DebugSettings/index.d.ts.map +0 -1
- package/dist/types/src/types.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/react-context/index.ts +0 -7
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/settings/index.ts +0 -7
- package/src/containers/DebugSettings/DebugSettings.tsx +0 -206
- package/src/containers/DebugSettings/index.ts +0 -7
- /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
- /package/dist/types/src/capabilities/{react-context/react-context.d.ts → react-context.d.ts} +0 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { AppCapabilities, getPersonalSpace } from '@dxos/app-toolkit';
|
|
8
|
+
import { type AppSurface } from '@dxos/app-toolkit/ui';
|
|
9
|
+
import { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';
|
|
10
|
+
import { log } from '@dxos/log';
|
|
11
|
+
import { type IdbLogStore } from '@dxos/log-store-idb';
|
|
12
|
+
import { useClient } from '@dxos/react-client';
|
|
13
|
+
import { Icon, IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';
|
|
14
|
+
import { Settings as SettingsForm } from '@dxos/react-ui-form';
|
|
15
|
+
import { TRACE_ALL_KEY } from '@dxos/tracing';
|
|
16
|
+
import { setDeep } from '@dxos/util';
|
|
17
|
+
|
|
18
|
+
import { meta } from '#meta';
|
|
19
|
+
import { type Settings } from '#types';
|
|
20
|
+
|
|
21
|
+
type Toast = {
|
|
22
|
+
title: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const StorageAdapters = {
|
|
27
|
+
opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,
|
|
28
|
+
idb: defs.Runtime.Client.Storage.StorageDriver.IDB,
|
|
29
|
+
} as const;
|
|
30
|
+
|
|
31
|
+
export type DebugSettingsProps = AppSurface.SettingsArticleProps<
|
|
32
|
+
Settings.Settings,
|
|
33
|
+
{
|
|
34
|
+
logStore: IdbLogStore;
|
|
35
|
+
onUpload?: AppCapabilities.FileUploader;
|
|
36
|
+
}
|
|
37
|
+
>;
|
|
38
|
+
|
|
39
|
+
export const DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }: DebugSettingsProps) => {
|
|
40
|
+
const { t } = useTranslation(meta.id);
|
|
41
|
+
const [toast, setToast] = useState<Toast>();
|
|
42
|
+
const download = useFileDownload();
|
|
43
|
+
const [storageConfig, setStorageConfig] = useState<ConfigProto>({});
|
|
44
|
+
const client = useClient();
|
|
45
|
+
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
void Storage().then((config) => setStorageConfig(config));
|
|
48
|
+
}, []);
|
|
49
|
+
|
|
50
|
+
const handleToast = useCallback(
|
|
51
|
+
(toast: Toast) => {
|
|
52
|
+
setToast(toast);
|
|
53
|
+
const timer = setTimeout(() => setToast(undefined), 5_000);
|
|
54
|
+
return () => clearTimeout(timer);
|
|
55
|
+
},
|
|
56
|
+
[setToast],
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
const handleDownload = useCallback(async () => {
|
|
60
|
+
const data = await client.diagnostics();
|
|
61
|
+
const file = new Blob([JSON.stringify(data, undefined, 2)], {
|
|
62
|
+
type: 'text/plain',
|
|
63
|
+
});
|
|
64
|
+
const fileName = `composer-${new Date().toISOString().replace(/\W/g, '-')}.json`;
|
|
65
|
+
download(file, fileName);
|
|
66
|
+
|
|
67
|
+
if (onUpload) {
|
|
68
|
+
const personalSpace = getPersonalSpace(client);
|
|
69
|
+
if (!personalSpace) {
|
|
70
|
+
log.error('no personal space available for upload');
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const info = await onUpload(personalSpace.db, new File([file], fileName));
|
|
74
|
+
if (!info) {
|
|
75
|
+
log.error('diagnostics failed to upload to IPFS');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
handleToast({
|
|
79
|
+
title: t('settings.uploaded.message'),
|
|
80
|
+
description: t('settings.uploaded.description'),
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// TODO(nf): move to IpfsPlugin?
|
|
84
|
+
const url = client.config.values.runtime!.services!.ipfs!.gateway + '/' + info.cid;
|
|
85
|
+
void navigator.clipboard.writeText(url);
|
|
86
|
+
handleToast({
|
|
87
|
+
title: t('settings.uploaded.message'),
|
|
88
|
+
description: t('settings.uploaded.description'),
|
|
89
|
+
});
|
|
90
|
+
log.info('diagnostics', { url });
|
|
91
|
+
}
|
|
92
|
+
}, [client, download, handleToast, onUpload, t]);
|
|
93
|
+
|
|
94
|
+
const handleDownloadLogs = useCallback(async () => {
|
|
95
|
+
const ndjson = await logStore.export();
|
|
96
|
+
const file = new Blob([ndjson], { type: 'application/x-ndjson' });
|
|
97
|
+
const fileName = `composer-logs-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.ndjson`;
|
|
98
|
+
download(file, fileName);
|
|
99
|
+
}, [download, logStore]);
|
|
100
|
+
|
|
101
|
+
const handleRepair = useCallback(async () => {
|
|
102
|
+
try {
|
|
103
|
+
const info = await client.repair();
|
|
104
|
+
setStorageConfig(await Storage());
|
|
105
|
+
handleToast({
|
|
106
|
+
title: t('settings.repair-success.message'),
|
|
107
|
+
description: JSON.stringify(info, undefined, 2),
|
|
108
|
+
});
|
|
109
|
+
} catch (err: any) {
|
|
110
|
+
handleToast({
|
|
111
|
+
title: t('settings.repair-failed.message'),
|
|
112
|
+
description: err.message,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}, [client, handleToast, t]);
|
|
116
|
+
|
|
117
|
+
const handleWireframeChange = useCallback(
|
|
118
|
+
(checked: boolean) => onSettingsChange?.((s) => ({ ...s, wireframe: !!checked })),
|
|
119
|
+
[onSettingsChange],
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
const traceAll = useMemo(
|
|
123
|
+
() => settings.traceAll ?? (typeof localStorage !== 'undefined' && localStorage.getItem(TRACE_ALL_KEY) === 'true'),
|
|
124
|
+
[settings.traceAll],
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
const handleTraceAllChange = useCallback(
|
|
128
|
+
(checked: boolean) => {
|
|
129
|
+
const value = !!checked;
|
|
130
|
+
localStorage.setItem(TRACE_ALL_KEY, String(value));
|
|
131
|
+
onSettingsChange?.((s) => ({ ...s, traceAll: value }));
|
|
132
|
+
},
|
|
133
|
+
[onSettingsChange],
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
const handleOpenTracingPanel = useCallback(() => {
|
|
137
|
+
window.open('about:blank', '_blank');
|
|
138
|
+
}, []);
|
|
139
|
+
|
|
140
|
+
const handleStorageAdapterChange = useCallback(
|
|
141
|
+
(value: string) => {
|
|
142
|
+
if (confirm(t('settings.storage-adapter.changed-alert.message'))) {
|
|
143
|
+
updateConfig(
|
|
144
|
+
storageConfig,
|
|
145
|
+
setStorageConfig,
|
|
146
|
+
['runtime', 'client', 'storage', 'dataStore'],
|
|
147
|
+
StorageAdapters[value as keyof typeof StorageAdapters],
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
[storageConfig, t],
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
return (
|
|
155
|
+
<SettingsForm.Viewport>
|
|
156
|
+
<SettingsForm.Section title={t('settings.title', { ns: meta.id })}>
|
|
157
|
+
<SettingsForm.Item title={t('settings.wireframe.label')} description={t('settings.wireframe.description')}>
|
|
158
|
+
<Input.Switch
|
|
159
|
+
disabled={!onSettingsChange}
|
|
160
|
+
checked={settings.wireframe}
|
|
161
|
+
onCheckedChange={handleWireframeChange}
|
|
162
|
+
/>
|
|
163
|
+
</SettingsForm.Item>
|
|
164
|
+
<SettingsForm.Item title={t('settings.trace-all.label')} description={t('settings.trace-all.description')}>
|
|
165
|
+
<Input.Switch disabled={!onSettingsChange} checked={traceAll} onCheckedChange={handleTraceAllChange} />
|
|
166
|
+
</SettingsForm.Item>
|
|
167
|
+
<SettingsForm.Item
|
|
168
|
+
title={t('settings.tracing-panel.label')}
|
|
169
|
+
description={t('settings.tracing-panel.description')}
|
|
170
|
+
>
|
|
171
|
+
<IconButton
|
|
172
|
+
icon='ph--arrow-square-out--regular'
|
|
173
|
+
iconOnly
|
|
174
|
+
label={t('settings.tracing-panel.label')}
|
|
175
|
+
onClick={handleOpenTracingPanel}
|
|
176
|
+
/>
|
|
177
|
+
</SettingsForm.Item>
|
|
178
|
+
<SettingsForm.Item
|
|
179
|
+
title={t('settings.download-diagnostics.label')}
|
|
180
|
+
description={t('settings.download-diagnostics.description')}
|
|
181
|
+
>
|
|
182
|
+
<IconButton
|
|
183
|
+
icon='ph--download-simple--regular'
|
|
184
|
+
iconOnly
|
|
185
|
+
label={t('settings.download-diagnostics.label')}
|
|
186
|
+
onClick={handleDownload}
|
|
187
|
+
/>
|
|
188
|
+
</SettingsForm.Item>
|
|
189
|
+
<SettingsForm.Item
|
|
190
|
+
title={t('settings.download-logs.label')}
|
|
191
|
+
description={t('settings.download-logs.description')}
|
|
192
|
+
>
|
|
193
|
+
<IconButton
|
|
194
|
+
icon='ph--download-simple--regular'
|
|
195
|
+
iconOnly
|
|
196
|
+
label={t('settings.download-logs.label')}
|
|
197
|
+
onClick={handleDownloadLogs}
|
|
198
|
+
/>
|
|
199
|
+
</SettingsForm.Item>
|
|
200
|
+
<SettingsForm.Item title={t('settings.repair.label')} description={t('settings.repair.description')}>
|
|
201
|
+
<IconButton
|
|
202
|
+
icon='ph--first-aid-kit--regular'
|
|
203
|
+
iconOnly
|
|
204
|
+
label={t('settings.repair.label')}
|
|
205
|
+
onClick={handleRepair}
|
|
206
|
+
/>
|
|
207
|
+
</SettingsForm.Item>
|
|
208
|
+
|
|
209
|
+
{/* TODO(burdon): Move to layout? */}
|
|
210
|
+
{toast && (
|
|
211
|
+
<Toast.Root>
|
|
212
|
+
<Toast.Body>
|
|
213
|
+
<Toast.Title>
|
|
214
|
+
<Icon icon='ph--gift--duotone' classNames='inline mr-1' />
|
|
215
|
+
<span>{toast.title}</span>
|
|
216
|
+
</Toast.Title>
|
|
217
|
+
{toast.description && <Toast.Description>{toast.description}</Toast.Description>}
|
|
218
|
+
</Toast.Body>
|
|
219
|
+
</Toast.Root>
|
|
220
|
+
)}
|
|
221
|
+
|
|
222
|
+
<SettingsForm.Item
|
|
223
|
+
title={t('settings.choose-storage-adaptor.label')}
|
|
224
|
+
description={t('settings.choose-storage-adaptor.description')}
|
|
225
|
+
>
|
|
226
|
+
<Select.Root
|
|
227
|
+
disabled={!onSettingsChange}
|
|
228
|
+
value={
|
|
229
|
+
Object.entries(StorageAdapters).find(
|
|
230
|
+
([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,
|
|
231
|
+
)?.[0]
|
|
232
|
+
}
|
|
233
|
+
onValueChange={handleStorageAdapterChange}
|
|
234
|
+
>
|
|
235
|
+
<Select.TriggerButton disabled={!onSettingsChange} placeholder={t('settings.data-store.label')} />
|
|
236
|
+
<Select.Portal>
|
|
237
|
+
<Select.Content>
|
|
238
|
+
<Select.Viewport>
|
|
239
|
+
{Object.keys(StorageAdapters).map((key) => (
|
|
240
|
+
<Select.Option key={key} value={key}>
|
|
241
|
+
{t(`settings.storage-adaptor.${key}.label`)}
|
|
242
|
+
</Select.Option>
|
|
243
|
+
))}
|
|
244
|
+
</Select.Viewport>
|
|
245
|
+
<Select.Arrow />
|
|
246
|
+
</Select.Content>
|
|
247
|
+
</Select.Portal>
|
|
248
|
+
</Select.Root>
|
|
249
|
+
</SettingsForm.Item>
|
|
250
|
+
</SettingsForm.Section>
|
|
251
|
+
</SettingsForm.Viewport>
|
|
252
|
+
);
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
const updateConfig = (config: ConfigProto, setConfig: (newConfig: ConfigProto) => void, path: string[], value: any) => {
|
|
256
|
+
const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));
|
|
257
|
+
setDeep(storageConfigCopy, path, value);
|
|
258
|
+
setConfig(storageConfigCopy);
|
|
259
|
+
queueMicrotask(async () => {
|
|
260
|
+
await SaveConfig(storageConfigCopy);
|
|
261
|
+
});
|
|
262
|
+
};
|
|
@@ -4,23 +4,22 @@
|
|
|
4
4
|
|
|
5
5
|
import type * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
|
-
import { addressToA1Notation } from '@dxos/compute';
|
|
7
|
+
import { addressToA1Notation } from '@dxos/compute-hyperformula';
|
|
8
8
|
import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from '@dxos/conductor';
|
|
9
|
-
import { DXN, Filter, Key, type Type } from '@dxos/echo';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { faker } from '@dxos/random';
|
|
9
|
+
import { DXN, Filter, Key, type Type, View } from '@dxos/echo';
|
|
10
|
+
import { OperationInvoker } from '@dxos/operation';
|
|
11
|
+
import { Markdown } from '@dxos/plugin-markdown';
|
|
12
|
+
import { Sheet } from '@dxos/plugin-sheet';
|
|
13
|
+
import { Sketch } from '@dxos/plugin-sketch';
|
|
14
|
+
import { SpaceOperation } from '@dxos/plugin-space';
|
|
15
|
+
import { random } from '@dxos/random';
|
|
17
16
|
import { type Client } from '@dxos/react-client';
|
|
18
17
|
import { type Space } from '@dxos/react-client/echo';
|
|
19
18
|
import { getTypenameFromQuery } from '@dxos/schema';
|
|
20
19
|
import { type ValueGenerator, createAsyncGenerator } from '@dxos/schema/testing';
|
|
21
20
|
import { range } from '@dxos/util';
|
|
22
21
|
|
|
23
|
-
const generator: ValueGenerator =
|
|
22
|
+
const generator: ValueGenerator = random as any;
|
|
24
23
|
|
|
25
24
|
const findViewByTypename = async (views: View.View[], typename: string) => {
|
|
26
25
|
return views.find((view) => getTypenameFromQuery(view.query.ast) === typename);
|
|
@@ -57,8 +56,8 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
|
|
|
57
56
|
const objects = range(n).map(() => {
|
|
58
57
|
return space.db.add(
|
|
59
58
|
Markdown.make({
|
|
60
|
-
name:
|
|
61
|
-
content:
|
|
59
|
+
name: random.commerce.productName(),
|
|
60
|
+
content: random.lorem.sentences(5),
|
|
62
61
|
}),
|
|
63
62
|
);
|
|
64
63
|
});
|
|
@@ -71,7 +70,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
|
|
|
71
70
|
Sketch.Sketch.typename,
|
|
72
71
|
async (space, n, cb) => {
|
|
73
72
|
const objects = range(n).map(() => {
|
|
74
|
-
const obj = space.db.add(Sketch.make({ name:
|
|
73
|
+
const obj = space.db.add(Sketch.make({ name: random.commerce.productName() }));
|
|
75
74
|
return obj;
|
|
76
75
|
});
|
|
77
76
|
|
|
@@ -107,7 +106,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
|
|
|
107
106
|
// TODO(burdon): Set formatting for columns.
|
|
108
107
|
return space.db.add(
|
|
109
108
|
Sheet.make({
|
|
110
|
-
name:
|
|
109
|
+
name: random.commerce.productName(),
|
|
111
110
|
cells,
|
|
112
111
|
}),
|
|
113
112
|
);
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from '@antv/layout';
|
|
16
16
|
import { type Editor, type SerializedStore, type TLRecord, createBindingId, createShapeId } from '@tldraw/tldraw';
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import { random } from '@dxos/random';
|
|
19
19
|
import { isTruthy, range } from '@dxos/util';
|
|
20
20
|
|
|
21
21
|
// TODO(burdon): Graph layout:
|
|
@@ -32,10 +32,10 @@ import { isTruthy, range } from '@dxos/util';
|
|
|
32
32
|
// TODO(burdon): Factor out.
|
|
33
33
|
// TODO(burdon): Map ECHO to Graph.
|
|
34
34
|
export const generateGraph = (): Graph<PlainObject, PlainObject> => {
|
|
35
|
-
const nodes = range(
|
|
36
|
-
id:
|
|
35
|
+
const nodes = range(random.number.int({ min: 8, max: 32 })).map(() => ({
|
|
36
|
+
id: random.string.uuid(),
|
|
37
37
|
data: {
|
|
38
|
-
label:
|
|
38
|
+
label: random.lorem
|
|
39
39
|
.words(2)
|
|
40
40
|
.split(' ')
|
|
41
41
|
.map((word) => word.charAt(0).toUpperCase())
|
|
@@ -46,7 +46,7 @@ export const generateGraph = (): Graph<PlainObject, PlainObject> => {
|
|
|
46
46
|
const unlinked = new Set(nodes.map((node) => node.id));
|
|
47
47
|
const pop = () => {
|
|
48
48
|
if (unlinked.size) {
|
|
49
|
-
const id =
|
|
49
|
+
const id = random.helpers.arrayElement(Array.from(unlinked));
|
|
50
50
|
unlinked.delete(id);
|
|
51
51
|
return id;
|
|
52
52
|
}
|
|
@@ -54,12 +54,12 @@ export const generateGraph = (): Graph<PlainObject, PlainObject> => {
|
|
|
54
54
|
|
|
55
55
|
const edges: Edge<PlainObject>[] = [];
|
|
56
56
|
const link = (source: string, target: string) => {
|
|
57
|
-
edges.push({ id:
|
|
57
|
+
edges.push({ id: random.string.uuid(), source, target, data: {} });
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
const branching = 3;
|
|
61
61
|
const traverse = (source: string) => {
|
|
62
|
-
const targets = range(
|
|
62
|
+
const targets = range(random.number.int({ min: 1, max: branching }))
|
|
63
63
|
.map(() => {
|
|
64
64
|
const target = pop();
|
|
65
65
|
if (target) {
|
|
@@ -106,7 +106,7 @@ export const drawGraph = async (
|
|
|
106
106
|
preventOverlap: true,
|
|
107
107
|
};
|
|
108
108
|
|
|
109
|
-
const layoutType =
|
|
109
|
+
const layoutType = random.helpers.arrayElement(['d3force', 'grid', 'radial']);
|
|
110
110
|
let layout: Layout<any>;
|
|
111
111
|
switch (layoutType) {
|
|
112
112
|
case 'd3force': {
|
|
@@ -4,16 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
|
-
import { AgentPrompt,
|
|
8
|
-
import {
|
|
7
|
+
import { AgentPrompt, WebSearchBlueprint } from '@dxos/assistant-toolkit';
|
|
8
|
+
import { Routine, Trigger, Operation } from '@dxos/compute';
|
|
9
9
|
import { type ComputeGraphModel, NODE_INPUT } from '@dxos/conductor';
|
|
10
10
|
import { DXN, Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Tag } from '@dxos/echo';
|
|
11
|
-
import { Trigger } from '@dxos/functions';
|
|
12
11
|
import { invariant } from '@dxos/invariant';
|
|
13
|
-
import { Operation } from '@dxos/operation';
|
|
14
12
|
import { InboxOperation } from '@dxos/plugin-inbox';
|
|
15
|
-
import { Mailbox } from '@dxos/plugin-inbox
|
|
16
|
-
import { Markdown } from '@dxos/plugin-markdown
|
|
13
|
+
import { Mailbox } from '@dxos/plugin-inbox';
|
|
14
|
+
import { Markdown } from '@dxos/plugin-markdown';
|
|
17
15
|
import { type Space } from '@dxos/react-client/echo';
|
|
18
16
|
import {
|
|
19
17
|
type ComputeShape,
|
|
@@ -21,9 +19,9 @@ import {
|
|
|
21
19
|
createChat,
|
|
22
20
|
createComputeGraph,
|
|
23
21
|
createConstant,
|
|
22
|
+
createFeed,
|
|
24
23
|
createFunction,
|
|
25
24
|
createGpt,
|
|
26
|
-
createQueue,
|
|
27
25
|
createRandom,
|
|
28
26
|
createSurface,
|
|
29
27
|
createTemplate,
|
|
@@ -73,9 +71,9 @@ export const generator = () => ({
|
|
|
73
71
|
);
|
|
74
72
|
|
|
75
73
|
const tag = space.db.add(Tag.make({ label: 'Investor' }));
|
|
76
|
-
const
|
|
77
|
-
Obj.
|
|
78
|
-
Obj.getMeta(
|
|
74
|
+
const tagDXN = Obj.getDXN(tag).toString();
|
|
75
|
+
Obj.update(doc, (doc) => {
|
|
76
|
+
Obj.getMeta(doc).tags = [tagDXN];
|
|
79
77
|
});
|
|
80
78
|
|
|
81
79
|
// space.db.add(
|
|
@@ -87,7 +85,7 @@ export const generator = () => ({
|
|
|
87
85
|
// );
|
|
88
86
|
|
|
89
87
|
space.db.add(
|
|
90
|
-
Obj.make(Person.Person, { [Obj.Meta]: { tags: [
|
|
88
|
+
Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagDXN] }, fullName: 'Rich', organization: Ref.make(org) }),
|
|
91
89
|
);
|
|
92
90
|
space.db.add(
|
|
93
91
|
Obj.make(Person.Person, {
|
|
@@ -122,23 +120,20 @@ export const generator = () => ({
|
|
|
122
120
|
invariant(mailbox, 'Mailbox not found');
|
|
123
121
|
const mailboxFeed = await mailbox.feed?.tryLoad();
|
|
124
122
|
invariant(mailboxFeed, 'Mailbox missing feed reference');
|
|
125
|
-
const
|
|
126
|
-
invariant(
|
|
123
|
+
const feedDXN = Feed.getQueueDxn(mailboxFeed)?.toString();
|
|
124
|
+
invariant(feedDXN, 'Mailbox feed missing DXN');
|
|
127
125
|
const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();
|
|
128
|
-
const
|
|
126
|
+
const tagDXN = Obj.getDXN(tag).toString();
|
|
129
127
|
|
|
130
128
|
const objects = range(n, () => {
|
|
131
|
-
const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(
|
|
132
|
-
const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(
|
|
133
|
-
const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(
|
|
129
|
+
const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagDXN));
|
|
130
|
+
const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagDXN));
|
|
131
|
+
const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagDXN));
|
|
134
132
|
|
|
135
133
|
space.db.add(
|
|
136
134
|
Trigger.make({
|
|
137
135
|
enabled: true,
|
|
138
|
-
spec:
|
|
139
|
-
kind: 'timer',
|
|
140
|
-
cron: '* * * * *', // Every minute.
|
|
141
|
-
},
|
|
136
|
+
spec: Trigger.specTimer('* * * * *'), // Every minute.
|
|
142
137
|
function: Ref.make(Operation.serialize(InboxOperation.GoogleMailSync)),
|
|
143
138
|
input: {
|
|
144
139
|
mailbox: Ref.make(mailbox),
|
|
@@ -146,23 +141,8 @@ export const generator = () => ({
|
|
|
146
141
|
}),
|
|
147
142
|
);
|
|
148
143
|
|
|
149
|
-
space.db.add(
|
|
150
|
-
Trigger.make({
|
|
151
|
-
enabled: true,
|
|
152
|
-
// TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
|
|
153
|
-
spec: {
|
|
154
|
-
kind: 'queue',
|
|
155
|
-
queue: queueDxn,
|
|
156
|
-
},
|
|
157
|
-
function: Ref.make(Operation.serialize(EntityExtraction)),
|
|
158
|
-
input: {
|
|
159
|
-
source: '{{event.item}}',
|
|
160
|
-
},
|
|
161
|
-
}),
|
|
162
|
-
);
|
|
163
|
-
|
|
164
144
|
const researchPrompt = space.db.add(
|
|
165
|
-
|
|
145
|
+
Routine.make({
|
|
166
146
|
name: 'Research',
|
|
167
147
|
description: 'Research organization',
|
|
168
148
|
input: Schema.Struct({
|
|
@@ -177,19 +157,14 @@ export const generator = () => ({
|
|
|
177
157
|
Create a research note for it at the end.
|
|
178
158
|
NOTE: Do mocked reseach (set mockSearch to true).
|
|
179
159
|
`,
|
|
180
|
-
blueprints: [Ref.make(
|
|
160
|
+
blueprints: [Ref.make(WebSearchBlueprint.make())],
|
|
181
161
|
}),
|
|
182
162
|
);
|
|
183
163
|
|
|
184
164
|
space.db.add(
|
|
185
165
|
Trigger.make({
|
|
186
166
|
enabled: true,
|
|
187
|
-
spec:
|
|
188
|
-
kind: 'subscription',
|
|
189
|
-
query: {
|
|
190
|
-
ast: organizationsQuery.ast,
|
|
191
|
-
},
|
|
192
|
-
},
|
|
167
|
+
spec: Trigger.specSubscription(organizationsQuery),
|
|
193
168
|
function: Ref.make(Operation.serialize(AgentPrompt)),
|
|
194
169
|
input: {
|
|
195
170
|
prompt: Ref.make(researchPrompt),
|
|
@@ -204,7 +179,7 @@ export const generator = () => ({
|
|
|
204
179
|
properties: { labels: Filter.contains('investor') },
|
|
205
180
|
}),
|
|
206
181
|
).from({
|
|
207
|
-
|
|
182
|
+
feeds: [feedDXN],
|
|
208
183
|
}),
|
|
209
184
|
jsonSchema: JsonSchema.toJsonSchema(Message.Message),
|
|
210
185
|
});
|
|
@@ -618,7 +593,7 @@ export const generator = () => ({
|
|
|
618
593
|
);
|
|
619
594
|
const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));
|
|
620
595
|
const view = canvasModel.createNode(createText(position({ x: 12, y: 0 })));
|
|
621
|
-
const queue = canvasModel.createNode(
|
|
596
|
+
const queue = canvasModel.createNode(createFeed(position({ x: 0, y: 12 })));
|
|
622
597
|
|
|
623
598
|
builder
|
|
624
599
|
.createEdge({
|
|
@@ -763,8 +738,8 @@ const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
|
|
|
763
738
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
764
739
|
const triggerSpec = functionTrigger.spec;
|
|
765
740
|
invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');
|
|
766
|
-
Obj.
|
|
767
|
-
initSpec(
|
|
741
|
+
Obj.update(functionTrigger, (functionTrigger) => {
|
|
742
|
+
initSpec(functionTrigger.spec as any);
|
|
768
743
|
});
|
|
769
744
|
});
|
|
770
745
|
|
|
@@ -804,7 +779,7 @@ const setupQueue = (
|
|
|
804
779
|
}),
|
|
805
780
|
);
|
|
806
781
|
const queue = canvasModel.createNode(
|
|
807
|
-
|
|
782
|
+
createFeed(
|
|
808
783
|
args?.queuePosition ? rawPosition(args.queuePosition) : position({ x: -3, y: 3, width: 14, height: 10 }),
|
|
809
784
|
),
|
|
810
785
|
);
|
|
@@ -815,9 +790,9 @@ const setupQueue = (
|
|
|
815
790
|
const attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {
|
|
816
791
|
invariant(functionTrigger);
|
|
817
792
|
const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;
|
|
818
|
-
Obj.
|
|
819
|
-
|
|
820
|
-
|
|
793
|
+
Obj.update(functionTrigger, (functionTrigger) => {
|
|
794
|
+
functionTrigger.function = Ref.make(computeModel.root);
|
|
795
|
+
functionTrigger.inputNodeId = inputNode.id;
|
|
821
796
|
});
|
|
822
797
|
};
|
|
823
798
|
|
package/src/components/index.ts
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React
|
|
5
|
+
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Tree } from '@dxos/devtools';
|
|
8
8
|
import { Graph } from '@dxos/plugin-graph';
|
|
9
9
|
|
|
10
10
|
export type DebugGraphProps = { graph: Graph.Graph; root: string };
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
export const DebugGraph = ({ graph, root }: DebugGraphProps) => {
|
|
12
13
|
return <Tree data={Graph.toJSON(graph, root)} />;
|
|
13
14
|
};
|