@dxos/plugin-debug 0.8.4-main.ae835ea → 0.8.4-main.bc2380dfbc
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/neutral/DebugGraph-G4FWS57E.mjs +15 -0
- 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/neutral/DebugSpaceObjectsPanel-NISULU6U.mjs +34 -0
- package/dist/lib/neutral/DebugSpaceObjectsPanel-NISULU6U.mjs.map +7 -0
- package/dist/lib/neutral/DebugStatus-YB3KFP7G.mjs +121 -0
- package/dist/lib/neutral/DebugStatus-YB3KFP7G.mjs.map +7 -0
- package/dist/lib/neutral/DevtoolsOverviewContainer-YX7Z3D2H.mjs +23 -0
- package/dist/lib/neutral/DevtoolsOverviewContainer-YX7Z3D2H.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/neutral/Wireframe-7SNRUKET.mjs +52 -0
- package/dist/lib/neutral/Wireframe-7SNRUKET.mjs.map +7 -0
- package/dist/lib/neutral/app-graph-builder-YPYHL2K5.mjs +577 -0
- package/dist/lib/neutral/app-graph-builder-YPYHL2K5.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/{browser/chunk-WZFZ4ESO.mjs → neutral/chunk-3OGPOE7H.mjs} +2 -2
- package/dist/lib/neutral/chunk-3OGPOE7H.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-SRV2AIGJ.mjs → neutral/chunk-NFIOTQRZ.mjs} +30 -9
- package/dist/lib/neutral/chunk-NFIOTQRZ.mjs.map +7 -0
- package/dist/lib/{browser/SpaceGenerator-7Q7CX64P.mjs → neutral/components/index.mjs} +330 -509
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +21 -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/neutral/react-context-MUZ3KVLU.mjs +17 -0
- package/dist/lib/neutral/react-context-MUZ3KVLU.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-UR2SYHYW.mjs +419 -0
- package/dist/lib/neutral/react-surface-UR2SYHYW.mjs.map +7 -0
- package/dist/lib/neutral/settings-MPM6YUP4.mjs +28 -0
- package/dist/lib/neutral/settings-MPM6YUP4.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +83 -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 +4 -1
- 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 +4 -2
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +8 -5
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-context.d.ts +4 -2
- package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +7 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +5 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- 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 +99 -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 -0
- package/dist/types/src/components/SchemaTable/index.d.ts +2 -0
- package/dist/types/src/components/SchemaTable/index.d.ts.map +1 -0
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +5 -5
- 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/index.d.ts +2 -2
- package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/presets.d.ts +2 -5
- package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +4 -10
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +8 -0
- package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
- package/dist/types/src/containers/DebugGraph/index.d.ts +2 -0
- package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts +6 -0
- package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
- package/dist/types/src/containers/DebugObjectPanel/index.d.ts +2 -0
- package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +5 -0
- package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
- package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +2 -0
- package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
- package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
- package/dist/types/src/containers/DebugStatus/index.d.ts +2 -0
- package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
- package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
- package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +2 -0
- package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts +11 -0
- package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
- package/dist/types/src/containers/SpaceGenerator/index.d.ts +2 -0
- package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
- package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +2 -2
- package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
- package/dist/types/src/containers/Wireframe/index.d.ts +2 -0
- package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +9 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- 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 +2 -2
- 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 +80 -59
- 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/index.d.ts +69 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +134 -75
- package/src/DebugPlugin.node.ts +18 -0
- package/src/DebugPlugin.test.ts +29 -0
- package/src/DebugPlugin.tsx +28 -34
- package/src/DebugPlugin.workerd.ts +12 -0
- package/src/capabilities/app-graph-builder.ts +362 -388
- package/src/capabilities/index.ts +5 -5
- package/src/capabilities/react-context.tsx +16 -7
- package/src/capabilities/react-surface.tsx +378 -339
- package/src/capabilities/settings.ts +24 -12
- 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/SchemaTable/index.ts +5 -0
- package/src/components/SpaceGenerator/ObjectGenerator.tsx +28 -31
- package/src/components/SpaceGenerator/draw-util.ts +8 -8
- package/src/components/SpaceGenerator/index.ts +2 -3
- package/src/components/SpaceGenerator/presets.ts +225 -128
- package/src/components/index.ts +4 -8
- package/src/containers/DebugGraph/DebugGraph.tsx +14 -0
- package/src/containers/DebugGraph/index.ts +5 -0
- package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +76 -0
- package/src/containers/DebugObjectPanel/index.ts +5 -0
- package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +47 -0
- package/src/containers/DebugSpaceObjectsPanel/index.ts +5 -0
- package/src/{components → containers/DebugStatus}/DebugStatus.tsx +41 -19
- package/src/containers/DebugStatus/index.ts +5 -0
- package/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx +25 -0
- package/src/containers/DevtoolsOverviewContainer/index.ts +5 -0
- package/src/containers/SpaceGenerator/SpaceGenerator.tsx +126 -0
- package/src/containers/SpaceGenerator/index.ts +5 -0
- package/src/{components → containers/Wireframe}/Wireframe.tsx +7 -12
- package/src/containers/Wireframe/index.ts +5 -0
- package/src/containers/index.ts +13 -0
- package/src/index.ts +1 -1
- package/src/meta.ts +3 -3
- package/src/plugin.ts +10 -0
- package/src/translations.ts +75 -58
- package/src/types/Settings.ts +16 -0
- package/src/{types.ts → types/index.ts} +20 -11
- package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs +0 -20
- package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs.map +0 -7
- package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs +0 -25
- package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs.map +0 -7
- package/dist/lib/browser/SpaceGenerator-7Q7CX64P.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-RXWTHLEW.mjs +0 -588
- package/dist/lib/browser/app-graph-builder-RXWTHLEW.mjs.map +0 -7
- package/dist/lib/browser/chunk-SRV2AIGJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-WZFZ4ESO.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -130
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-context-P2YDWEWI.mjs +0 -16
- package/dist/lib/browser/react-context-P2YDWEWI.mjs.map +0 -7
- package/dist/lib/browser/react-surface-4XGZUT3Z.mjs +0 -772
- package/dist/lib/browser/react-surface-4XGZUT3Z.mjs.map +0 -7
- package/dist/lib/browser/settings-SQXR3OAH.mjs +0 -22
- package/dist/lib/browser/settings-SQXR3OAH.mjs.map +0 -7
- package/dist/types/src/components/Container.d.ts +0 -5
- package/dist/types/src/components/Container.d.ts.map +0 -1
- package/dist/types/src/components/DebugGraph.d.ts +0 -8
- package/dist/types/src/components/DebugGraph.d.ts.map +0 -1
- package/dist/types/src/components/DebugObjectPanel.d.ts +0 -7
- package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
- package/dist/types/src/components/DebugSettings.d.ts +0 -6
- package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
- package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
- package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
- package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +0 -9
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +0 -1
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -15
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
- package/dist/types/src/components/Wireframe.d.ts.map +0 -1
- package/dist/types/src/types.d.ts +0 -63
- package/dist/types/src/types.d.ts.map +0 -1
- package/src/components/Container.tsx +0 -15
- package/src/components/DebugGraph.tsx +0 -14
- package/src/components/DebugObjectPanel.tsx +0 -33
- package/src/components/DebugSettings.tsx +0 -159
- package/src/components/DevtoolsOverviewContainer.tsx +0 -20
- package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -52
- package/src/components/SpaceGenerator/SpaceGenerator.tsx +0 -122
- /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
- /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +0 -0
- /package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +0 -0
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
|
-
import {
|
|
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
|
-
import { DXN, Filter, Key, Obj, Query, Ref, Tag
|
|
11
|
-
import { Trigger, serializeFunction } from '@dxos/functions';
|
|
10
|
+
import { DXN, Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Tag } from '@dxos/echo';
|
|
12
11
|
import { invariant } from '@dxos/invariant';
|
|
13
|
-
import {
|
|
14
|
-
import { Mailbox } from '@dxos/plugin-inbox
|
|
15
|
-
import { Markdown } from '@dxos/plugin-markdown
|
|
12
|
+
import { InboxOperation } from '@dxos/plugin-inbox';
|
|
13
|
+
import { Mailbox } from '@dxos/plugin-inbox';
|
|
14
|
+
import { Markdown } from '@dxos/plugin-markdown';
|
|
16
15
|
import { type Space } from '@dxos/react-client/echo';
|
|
17
16
|
import {
|
|
18
17
|
type ComputeShape,
|
|
@@ -20,23 +19,18 @@ import {
|
|
|
20
19
|
createChat,
|
|
21
20
|
createComputeGraph,
|
|
22
21
|
createConstant,
|
|
22
|
+
createFeed,
|
|
23
23
|
createFunction,
|
|
24
24
|
createGpt,
|
|
25
|
-
createQueue,
|
|
26
25
|
createRandom,
|
|
27
26
|
createSurface,
|
|
28
27
|
createTemplate,
|
|
29
28
|
createText,
|
|
30
29
|
createTrigger,
|
|
31
30
|
} from '@dxos/react-ui-canvas-compute';
|
|
32
|
-
import {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
pointMultiply,
|
|
36
|
-
pointsToRect,
|
|
37
|
-
rectToPoints,
|
|
38
|
-
} from '@dxos/react-ui-canvas-editor';
|
|
39
|
-
import { DataType, createView } from '@dxos/schema';
|
|
31
|
+
import { CanvasBoard, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from '@dxos/react-ui-canvas-editor';
|
|
32
|
+
import { ViewModel } from '@dxos/schema';
|
|
33
|
+
import { Message, Organization, Person, Pipeline } from '@dxos/types';
|
|
40
34
|
import { range, trim } from '@dxos/util';
|
|
41
35
|
|
|
42
36
|
import { type ObjectGenerator } from './ObjectGenerator';
|
|
@@ -49,32 +43,39 @@ export enum PresetName {
|
|
|
49
43
|
CHAT_GPT = 'chat-gpt-text',
|
|
50
44
|
// EMAIL_WITH_SUMMARY = 'email-gptSummary-table',
|
|
51
45
|
OBJECT_CHANGE_QUEUE = 'objectChange-queue',
|
|
52
|
-
FOREX_FUNCTION_CALL = 'forex-function-call',
|
|
53
46
|
TIMER_TICK_QUEUE = 'timerTick-queue',
|
|
47
|
+
FOREX_FUNCTION_CALL = 'forex-function-call',
|
|
54
48
|
DISCORD_MESSAGES = 'discord-messages',
|
|
55
49
|
// KANBAN_QUEUE = 'kanban-queue',
|
|
56
50
|
}
|
|
57
51
|
|
|
58
52
|
export const generator = () => ({
|
|
59
|
-
schemas: [
|
|
53
|
+
schemas: [CanvasBoard.CanvasBoard, Trigger.Trigger] as any[],
|
|
60
54
|
types: Object.values(PresetName).map((name) => ({ typename: name })),
|
|
61
55
|
items: [
|
|
62
56
|
[
|
|
63
57
|
PresetName.DXOS_TEAM,
|
|
64
58
|
async (space, n, cb) => {
|
|
65
59
|
const objects = range(n, () => {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
60
|
+
const org = space.db.add(
|
|
61
|
+
Obj.make(Organization.Organization, {
|
|
62
|
+
name: 'DXOS',
|
|
63
|
+
website: 'https://dxos.org',
|
|
64
|
+
}),
|
|
65
|
+
);
|
|
71
66
|
const doc = space.db.add(
|
|
72
|
-
Markdown.
|
|
67
|
+
Markdown.make({
|
|
73
68
|
name: 'DXOS Research',
|
|
74
69
|
content: 'DXOS builds Composer, an open-source AI-powered malleable application.',
|
|
75
70
|
}),
|
|
76
71
|
);
|
|
77
|
-
|
|
72
|
+
|
|
73
|
+
const tag = space.db.add(Tag.make({ label: 'Investor' }));
|
|
74
|
+
const tagDXN = Obj.getDXN(tag).toString();
|
|
75
|
+
Obj.update(doc, (doc) => {
|
|
76
|
+
Obj.getMeta(doc).tags = [tagDXN];
|
|
77
|
+
});
|
|
78
|
+
|
|
78
79
|
// space.db.add(
|
|
79
80
|
// Relation.make(HasSubject, {
|
|
80
81
|
// [Relation.Source]: doc,
|
|
@@ -84,12 +85,26 @@ export const generator = () => ({
|
|
|
84
85
|
// );
|
|
85
86
|
|
|
86
87
|
space.db.add(
|
|
87
|
-
Obj.make(
|
|
88
|
+
Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagDXN] }, fullName: 'Rich', organization: Ref.make(org) }),
|
|
89
|
+
);
|
|
90
|
+
space.db.add(
|
|
91
|
+
Obj.make(Person.Person, {
|
|
92
|
+
fullName: 'Josiah',
|
|
93
|
+
organization: Ref.make(org),
|
|
94
|
+
}),
|
|
95
|
+
);
|
|
96
|
+
space.db.add(
|
|
97
|
+
Obj.make(Person.Person, {
|
|
98
|
+
fullName: 'Dima',
|
|
99
|
+
organization: Ref.make(org),
|
|
100
|
+
}),
|
|
101
|
+
);
|
|
102
|
+
space.db.add(
|
|
103
|
+
Obj.make(Person.Person, {
|
|
104
|
+
fullName: 'Mykola',
|
|
105
|
+
organization: Ref.make(org),
|
|
106
|
+
}),
|
|
88
107
|
);
|
|
89
|
-
space.db.add(Obj.make(DataType.Person, { fullName: 'Josiah', organization: Ref.make(org) }));
|
|
90
|
-
space.db.add(Obj.make(DataType.Person, { fullName: 'Dima', organization: Ref.make(org) }));
|
|
91
|
-
space.db.add(Obj.make(DataType.Person, { fullName: 'Mykola', organization: Ref.make(org) }));
|
|
92
|
-
space.db.add(Obj.make(DataType.Person, { fullName: 'Will', organization: Ref.make(org) }));
|
|
93
108
|
|
|
94
109
|
return doc;
|
|
95
110
|
});
|
|
@@ -100,44 +115,34 @@ export const generator = () => ({
|
|
|
100
115
|
[
|
|
101
116
|
PresetName.ORG_RESEARCH_PROJECT,
|
|
102
117
|
async (space, n, cb) => {
|
|
103
|
-
const
|
|
118
|
+
const mailboxes = await space.db.query(Filter.type(Mailbox.Mailbox)).run();
|
|
119
|
+
const mailbox = mailboxes[0];
|
|
120
|
+
invariant(mailbox, 'Mailbox not found');
|
|
121
|
+
const mailboxFeed = await mailbox.feed?.tryLoad();
|
|
122
|
+
invariant(mailboxFeed, 'Mailbox missing feed reference');
|
|
123
|
+
const feedDXN = Feed.getQueueDxn(mailboxFeed)?.toString();
|
|
124
|
+
invariant(feedDXN, 'Mailbox feed missing DXN');
|
|
104
125
|
const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();
|
|
105
|
-
const
|
|
126
|
+
const tagDXN = Obj.getDXN(tag).toString();
|
|
106
127
|
|
|
107
128
|
const objects = range(n, () => {
|
|
108
|
-
const contactsQuery = Query.select(Filter.type(
|
|
109
|
-
const organizationsQuery = Query.select(Filter.type(
|
|
110
|
-
const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
});
|
|
123
|
-
space.db.add(emailSyncTrigger);
|
|
124
|
-
|
|
125
|
-
const contactExtractionTrigger = Trigger.make({
|
|
126
|
-
enabled: true,
|
|
127
|
-
// TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
|
|
128
|
-
spec: {
|
|
129
|
-
kind: 'queue',
|
|
130
|
-
queue: mailbox.queue.dxn.toString(),
|
|
131
|
-
},
|
|
132
|
-
function: Ref.make(serializeFunction(EntityExtraction.extract)),
|
|
133
|
-
input: {
|
|
134
|
-
source: '{{event.item}}',
|
|
135
|
-
},
|
|
136
|
-
});
|
|
137
|
-
space.db.add(contactExtractionTrigger);
|
|
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));
|
|
132
|
+
|
|
133
|
+
space.db.add(
|
|
134
|
+
Trigger.make({
|
|
135
|
+
enabled: true,
|
|
136
|
+
spec: Trigger.specTimer('* * * * *'), // Every minute.
|
|
137
|
+
function: Ref.make(Operation.serialize(InboxOperation.GoogleMailSync)),
|
|
138
|
+
input: {
|
|
139
|
+
mailbox: Ref.make(mailbox),
|
|
140
|
+
},
|
|
141
|
+
}),
|
|
142
|
+
);
|
|
138
143
|
|
|
139
144
|
const researchPrompt = space.db.add(
|
|
140
|
-
|
|
145
|
+
Routine.make({
|
|
141
146
|
name: 'Research',
|
|
142
147
|
description: 'Research organization',
|
|
143
148
|
input: Schema.Struct({
|
|
@@ -152,59 +157,70 @@ export const generator = () => ({
|
|
|
152
157
|
Create a research note for it at the end.
|
|
153
158
|
NOTE: Do mocked reseach (set mockSearch to true).
|
|
154
159
|
`,
|
|
155
|
-
blueprints: [Ref.make(
|
|
160
|
+
blueprints: [Ref.make(WebSearchBlueprint.make())],
|
|
156
161
|
}),
|
|
157
162
|
);
|
|
158
163
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
164
|
+
space.db.add(
|
|
165
|
+
Trigger.make({
|
|
166
|
+
enabled: true,
|
|
167
|
+
spec: Trigger.specSubscription(organizationsQuery),
|
|
168
|
+
function: Ref.make(Operation.serialize(AgentPrompt)),
|
|
169
|
+
input: {
|
|
170
|
+
prompt: Ref.make(researchPrompt),
|
|
171
|
+
input: '{{event.subject}}',
|
|
165
172
|
},
|
|
166
|
-
},
|
|
167
|
-
|
|
168
|
-
input: {
|
|
169
|
-
prompt: Ref.make(researchPrompt),
|
|
170
|
-
input: '{{event.subject}}',
|
|
171
|
-
},
|
|
172
|
-
});
|
|
173
|
-
space.db.add(researchTrigger);
|
|
173
|
+
}),
|
|
174
|
+
);
|
|
174
175
|
|
|
175
|
-
const mailboxView =
|
|
176
|
-
name: 'Mailbox',
|
|
176
|
+
const mailboxView = ViewModel.make({
|
|
177
177
|
query: Query.select(
|
|
178
|
-
Filter.type(
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
Filter.type(Message.Message, {
|
|
179
|
+
properties: { labels: Filter.contains('investor') },
|
|
180
|
+
}),
|
|
181
|
+
).from({
|
|
182
|
+
feeds: [feedDXN],
|
|
181
183
|
}),
|
|
182
|
-
jsonSchema:
|
|
183
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
184
|
+
jsonSchema: JsonSchema.toJsonSchema(Message.Message),
|
|
184
185
|
});
|
|
185
|
-
const contactsView =
|
|
186
|
-
name: 'Contacts',
|
|
186
|
+
const contactsView = ViewModel.make({
|
|
187
187
|
query: contactsQuery,
|
|
188
|
-
jsonSchema:
|
|
189
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
188
|
+
jsonSchema: JsonSchema.toJsonSchema(Person.Person),
|
|
190
189
|
});
|
|
191
|
-
const organizationsView =
|
|
192
|
-
name: 'Organizations',
|
|
190
|
+
const organizationsView = ViewModel.make({
|
|
193
191
|
query: organizationsQuery,
|
|
194
|
-
jsonSchema:
|
|
195
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
192
|
+
jsonSchema: JsonSchema.toJsonSchema(Organization.Organization),
|
|
196
193
|
});
|
|
197
|
-
const notesView =
|
|
198
|
-
name: 'Notes',
|
|
194
|
+
const notesView = ViewModel.make({
|
|
199
195
|
query: notesQuery,
|
|
200
|
-
jsonSchema:
|
|
201
|
-
presentation: Obj.make(DataType.Collection, { objects: [] }),
|
|
196
|
+
jsonSchema: JsonSchema.toJsonSchema(Markdown.Document),
|
|
202
197
|
});
|
|
203
198
|
|
|
204
199
|
return space.db.add(
|
|
205
|
-
|
|
200
|
+
Pipeline.make({
|
|
206
201
|
name: 'Investor Research',
|
|
207
|
-
|
|
202
|
+
columns: [
|
|
203
|
+
{
|
|
204
|
+
name: 'Mailbox',
|
|
205
|
+
view: Ref.make(mailboxView),
|
|
206
|
+
order: [],
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'Contacts',
|
|
210
|
+
view: Ref.make(contactsView),
|
|
211
|
+
order: [],
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: 'Organizations',
|
|
215
|
+
view: Ref.make(organizationsView),
|
|
216
|
+
order: [],
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'Notes',
|
|
220
|
+
view: Ref.make(notesView),
|
|
221
|
+
order: [],
|
|
222
|
+
},
|
|
223
|
+
],
|
|
208
224
|
}),
|
|
209
225
|
);
|
|
210
226
|
});
|
|
@@ -233,10 +249,24 @@ export const generator = () => ({
|
|
|
233
249
|
const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
|
|
234
250
|
|
|
235
251
|
builder
|
|
236
|
-
.createEdge({
|
|
252
|
+
.createEdge({
|
|
253
|
+
source: trigger.id,
|
|
254
|
+
target: gpt.id,
|
|
255
|
+
input: 'prompt',
|
|
256
|
+
output: 'bodyText',
|
|
257
|
+
})
|
|
237
258
|
.createEdge({ source: gpt.id, target: text.id, output: 'text' })
|
|
238
|
-
.createEdge({
|
|
239
|
-
|
|
259
|
+
.createEdge({
|
|
260
|
+
source: queueId.id,
|
|
261
|
+
target: append.id,
|
|
262
|
+
input: 'id',
|
|
263
|
+
})
|
|
264
|
+
.createEdge({
|
|
265
|
+
source: gpt.id,
|
|
266
|
+
target: append.id,
|
|
267
|
+
output: 'messages',
|
|
268
|
+
input: 'items',
|
|
269
|
+
});
|
|
240
270
|
|
|
241
271
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
242
272
|
});
|
|
@@ -261,7 +291,7 @@ export const generator = () => ({
|
|
|
261
291
|
'subscription',
|
|
262
292
|
(triggerSpec) =>
|
|
263
293
|
(triggerSpec.query = {
|
|
264
|
-
ast: Query.select(Filter.typename('dxos.
|
|
294
|
+
ast: Query.select(Filter.typename('org.dxos.type.chess')).ast as Obj.Mutable<QueryAST.Query>,
|
|
265
295
|
}),
|
|
266
296
|
'type',
|
|
267
297
|
);
|
|
@@ -346,7 +376,7 @@ export const generator = () => ({
|
|
|
346
376
|
// const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
|
|
347
377
|
// invariant(templateComputeNode, 'Template compute node was not created.');
|
|
348
378
|
// templateComputeNode.value = templateContent.join('\n');
|
|
349
|
-
// templateComputeNode.inputSchema =
|
|
379
|
+
// templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
|
|
350
380
|
|
|
351
381
|
// attachTrigger(functionTrigger, computeModel);
|
|
352
382
|
|
|
@@ -374,8 +404,17 @@ export const generator = () => ({
|
|
|
374
404
|
builder
|
|
375
405
|
.createEdge({ source: chat.id, target: gpt.id, input: 'prompt' })
|
|
376
406
|
.createEdge({ source: gpt.id, target: text.id, output: 'text' })
|
|
377
|
-
.createEdge({
|
|
378
|
-
|
|
407
|
+
.createEdge({
|
|
408
|
+
source: queueId.id,
|
|
409
|
+
target: append.id,
|
|
410
|
+
input: 'id',
|
|
411
|
+
})
|
|
412
|
+
.createEdge({
|
|
413
|
+
source: gpt.id,
|
|
414
|
+
target: append.id,
|
|
415
|
+
output: 'messages',
|
|
416
|
+
input: 'items',
|
|
417
|
+
});
|
|
379
418
|
});
|
|
380
419
|
|
|
381
420
|
const computeModel = createComputeGraph(canvasModel);
|
|
@@ -471,7 +510,7 @@ export const generator = () => ({
|
|
|
471
510
|
// invariant(templateComputeNode, 'Template compute node was not created.');
|
|
472
511
|
// templateComputeNode.value = templateContent.join('\n');
|
|
473
512
|
// const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
|
|
474
|
-
// templateComputeNode.inputSchema =
|
|
513
|
+
// templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
|
|
475
514
|
|
|
476
515
|
// attachTrigger(functionTrigger, computeModel);
|
|
477
516
|
|
|
@@ -499,9 +538,21 @@ export const generator = () => ({
|
|
|
499
538
|
const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));
|
|
500
539
|
|
|
501
540
|
builder
|
|
502
|
-
.createEdge({
|
|
503
|
-
|
|
504
|
-
|
|
541
|
+
.createEdge({
|
|
542
|
+
source: sourceCurrency.id,
|
|
543
|
+
target: converter.id,
|
|
544
|
+
input: 'from',
|
|
545
|
+
})
|
|
546
|
+
.createEdge({
|
|
547
|
+
source: targetCurrency.id,
|
|
548
|
+
target: converter.id,
|
|
549
|
+
input: 'to',
|
|
550
|
+
})
|
|
551
|
+
.createEdge({
|
|
552
|
+
source: converter.id,
|
|
553
|
+
target: view.id,
|
|
554
|
+
output: 'rate',
|
|
555
|
+
});
|
|
505
556
|
});
|
|
506
557
|
|
|
507
558
|
const computeModel = createComputeGraph(canvasModel);
|
|
@@ -529,7 +580,10 @@ export const generator = () => ({
|
|
|
529
580
|
const trigger = canvasModel.createNode(triggerShape);
|
|
530
581
|
// DXOS dev-null channel.
|
|
531
582
|
const channelId = canvasModel.createNode(
|
|
532
|
-
createConstant({
|
|
583
|
+
createConstant({
|
|
584
|
+
value: '1088569858767212554',
|
|
585
|
+
...position({ x: -10, y: 0 }),
|
|
586
|
+
}),
|
|
533
587
|
);
|
|
534
588
|
const queueId = canvasModel.createNode(
|
|
535
589
|
createConstant({
|
|
@@ -539,14 +593,34 @@ export const generator = () => ({
|
|
|
539
593
|
);
|
|
540
594
|
const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));
|
|
541
595
|
const view = canvasModel.createNode(createText(position({ x: 12, y: 0 })));
|
|
542
|
-
const queue = canvasModel.createNode(
|
|
596
|
+
const queue = canvasModel.createNode(createFeed(position({ x: 0, y: 12 })));
|
|
543
597
|
|
|
544
598
|
builder
|
|
545
|
-
.createEdge({
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
599
|
+
.createEdge({
|
|
600
|
+
source: trigger.id,
|
|
601
|
+
target: converter.id,
|
|
602
|
+
input: 'tick',
|
|
603
|
+
})
|
|
604
|
+
.createEdge({
|
|
605
|
+
source: channelId.id,
|
|
606
|
+
target: converter.id,
|
|
607
|
+
input: 'channelId',
|
|
608
|
+
})
|
|
609
|
+
.createEdge({
|
|
610
|
+
source: queueId.id,
|
|
611
|
+
target: converter.id,
|
|
612
|
+
input: 'queueId',
|
|
613
|
+
})
|
|
614
|
+
.createEdge({
|
|
615
|
+
source: converter.id,
|
|
616
|
+
target: view.id,
|
|
617
|
+
output: 'newMessages',
|
|
618
|
+
})
|
|
619
|
+
.createEdge({
|
|
620
|
+
source: queueId.id,
|
|
621
|
+
target: queue.id,
|
|
622
|
+
input: 'input',
|
|
623
|
+
});
|
|
550
624
|
|
|
551
625
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
552
626
|
});
|
|
@@ -616,7 +690,7 @@ export const generator = () => ({
|
|
|
616
690
|
const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
|
|
617
691
|
space: Space,
|
|
618
692
|
triggerKind: SpecType,
|
|
619
|
-
initSpec: (spec: Extract<Trigger.Spec, { kind: SpecType }
|
|
693
|
+
initSpec: (spec: Obj.Mutable<Extract<Trigger.Spec, { kind: SpecType }>>) => void,
|
|
620
694
|
triggerOutputName: string,
|
|
621
695
|
) => {
|
|
622
696
|
const canvasModel = CanvasGraphModel.create<ComputeShape>();
|
|
@@ -649,7 +723,12 @@ const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
|
|
|
649
723
|
builder
|
|
650
724
|
.createEdge({ source: queueId.id, target: append.id, input: 'id' })
|
|
651
725
|
.createEdge({ source: template.id, target: append.id, input: 'items' })
|
|
652
|
-
.createEdge({
|
|
726
|
+
.createEdge({
|
|
727
|
+
source: trigger.id,
|
|
728
|
+
target: template.id,
|
|
729
|
+
output: triggerOutputName,
|
|
730
|
+
input: 'type',
|
|
731
|
+
})
|
|
653
732
|
.createEdge({
|
|
654
733
|
source: random.id,
|
|
655
734
|
target: template.id,
|
|
@@ -659,15 +738,20 @@ const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
|
|
|
659
738
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
660
739
|
const triggerSpec = functionTrigger.spec;
|
|
661
740
|
invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');
|
|
662
|
-
|
|
741
|
+
Obj.update(functionTrigger, (functionTrigger) => {
|
|
742
|
+
initSpec(functionTrigger.spec as any);
|
|
743
|
+
});
|
|
663
744
|
});
|
|
664
745
|
|
|
665
746
|
const computeModel = createComputeGraph(canvasModel);
|
|
666
747
|
|
|
667
748
|
const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
|
|
668
749
|
invariant(templateComputeNode, 'Template compute node was not created.');
|
|
750
|
+
// NOTE: These are plain object mutations during model construction, not ECHO object mutations.
|
|
669
751
|
templateComputeNode.value = ['{', ' "@type": "{{type}}",', ' "id": "@{{changeId}}"', '}'].join('\n');
|
|
670
|
-
templateComputeNode.inputSchema =
|
|
752
|
+
templateComputeNode.inputSchema = JsonSchema.toJsonSchema(
|
|
753
|
+
Schema.Struct({ type: Schema.String, changeId: Schema.String }),
|
|
754
|
+
);
|
|
671
755
|
attachTrigger(functionTrigger, computeModel);
|
|
672
756
|
|
|
673
757
|
return { canvasModel, computeModel };
|
|
@@ -675,7 +759,7 @@ const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
|
|
|
675
759
|
|
|
676
760
|
const addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {
|
|
677
761
|
return space.db.add(
|
|
678
|
-
Obj.make(
|
|
762
|
+
Obj.make(CanvasBoard.CanvasBoard, {
|
|
679
763
|
name,
|
|
680
764
|
computeGraph: Ref.make(compute.root),
|
|
681
765
|
layout: canvas.graph,
|
|
@@ -695,7 +779,7 @@ const setupQueue = (
|
|
|
695
779
|
}),
|
|
696
780
|
);
|
|
697
781
|
const queue = canvasModel.createNode(
|
|
698
|
-
|
|
782
|
+
createFeed(
|
|
699
783
|
args?.queuePosition ? rawPosition(args.queuePosition) : position({ x: -3, y: 3, width: 14, height: 10 }),
|
|
700
784
|
),
|
|
701
785
|
);
|
|
@@ -705,15 +789,25 @@ const setupQueue = (
|
|
|
705
789
|
|
|
706
790
|
const attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {
|
|
707
791
|
invariant(functionTrigger);
|
|
708
|
-
functionTrigger.function = Ref.make(computeModel.root);
|
|
709
792
|
const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;
|
|
710
|
-
functionTrigger
|
|
793
|
+
Obj.update(functionTrigger, (functionTrigger) => {
|
|
794
|
+
functionTrigger.function = Ref.make(computeModel.root);
|
|
795
|
+
functionTrigger.inputNodeId = inputNode.id;
|
|
796
|
+
});
|
|
711
797
|
};
|
|
712
798
|
|
|
713
|
-
type RawPositionInput = {
|
|
799
|
+
type RawPositionInput = {
|
|
800
|
+
centerX: number;
|
|
801
|
+
centerY: number;
|
|
802
|
+
width: number;
|
|
803
|
+
height: number;
|
|
804
|
+
};
|
|
714
805
|
|
|
715
806
|
const rawPosition = (args: RawPositionInput) => {
|
|
716
|
-
return {
|
|
807
|
+
return {
|
|
808
|
+
center: { x: args.centerX, y: args.centerY },
|
|
809
|
+
size: { width: args.width, height: args.height },
|
|
810
|
+
};
|
|
717
811
|
};
|
|
718
812
|
|
|
719
813
|
const position = (rect: { x: number; y: number; width?: number; height?: number }) => {
|
|
@@ -721,7 +815,10 @@ const position = (rect: { x: number; y: number; width?: number; height?: number
|
|
|
721
815
|
const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });
|
|
722
816
|
const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);
|
|
723
817
|
if (width && height) {
|
|
724
|
-
return {
|
|
818
|
+
return {
|
|
819
|
+
center: { x, y },
|
|
820
|
+
size: width && height ? { width, height } : undefined,
|
|
821
|
+
};
|
|
725
822
|
} else {
|
|
726
823
|
return { center: { x, y } };
|
|
727
824
|
}
|
package/src/components/index.ts
CHANGED
|
@@ -2,13 +2,9 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { lazy } from 'react';
|
|
5
|
+
import { type ComponentType, lazy } from 'react';
|
|
6
6
|
|
|
7
|
-
export const
|
|
8
|
-
export const DevtoolsOverviewContainer = lazy(() => import('./DevtoolsOverviewContainer'));
|
|
9
|
-
export const SpaceGenerator = lazy(() => import('./SpaceGenerator'));
|
|
7
|
+
export const DebugSettings: ComponentType<any> = lazy(() => import('./DebugSettings'));
|
|
10
8
|
|
|
11
|
-
export * from './
|
|
12
|
-
export * from './
|
|
13
|
-
export * from './DebugStatus';
|
|
14
|
-
export * from './Wireframe';
|
|
9
|
+
export * from './SchemaTable';
|
|
10
|
+
export * from './SpaceGenerator';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
|
|
7
|
+
import { Tree } from '@dxos/devtools';
|
|
8
|
+
import { Graph } from '@dxos/plugin-graph';
|
|
9
|
+
|
|
10
|
+
export type DebugGraphProps = { graph: Graph.Graph; root: string };
|
|
11
|
+
|
|
12
|
+
export const DebugGraph = ({ graph, root }: DebugGraphProps) => {
|
|
13
|
+
return <Tree data={Graph.toJSON(graph, root)} />;
|
|
14
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useMemo, useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { AppSurface } from '@dxos/app-toolkit/ui';
|
|
8
|
+
import { ObjectsTree } from '@dxos/devtools';
|
|
9
|
+
import { Filter, Json, Obj, Query } from '@dxos/echo';
|
|
10
|
+
import type { ObjectId } from '@dxos/keys';
|
|
11
|
+
import { useQuery } from '@dxos/react-client/echo';
|
|
12
|
+
import { Clipboard, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';
|
|
13
|
+
import { Syntax } from '@dxos/react-ui-syntax-highlighter';
|
|
14
|
+
import { mx } from '@dxos/ui-theme';
|
|
15
|
+
|
|
16
|
+
export type DebugObjectPanelProps = Pick<
|
|
17
|
+
AppSurface.ObjectArticleProps<Obj.Unknown, {}, Obj.Unknown>,
|
|
18
|
+
'role' | 'companionTo'
|
|
19
|
+
>;
|
|
20
|
+
|
|
21
|
+
export const DebugObjectPanel = ({ role, companionTo }: DebugObjectPanelProps) => {
|
|
22
|
+
const db = Obj.getDatabase(companionTo);
|
|
23
|
+
const [selectedId, setSelectedId] = useState<ObjectId | null>(null);
|
|
24
|
+
const [depth, setDepth] = useState(0);
|
|
25
|
+
const [selectedObject] = useQuery(
|
|
26
|
+
db,
|
|
27
|
+
Query.select(Filter.id(selectedId ?? companionTo.id)).options({ deleted: 'include' }),
|
|
28
|
+
);
|
|
29
|
+
const refReplacer = useMemo(() => (db ? Json.createRefReplacer({ db, depth }) : undefined), [db, depth]);
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<Clipboard.Provider>
|
|
33
|
+
<Panel.Root role={role}>
|
|
34
|
+
<Panel.Toolbar asChild>
|
|
35
|
+
<Toolbar.Root />
|
|
36
|
+
</Panel.Toolbar>
|
|
37
|
+
<Panel.Content asChild>
|
|
38
|
+
<div className={mx('grid divide-y divide-separator', db && 'grid-rows-[1fr_2fr]')}>
|
|
39
|
+
{db && (
|
|
40
|
+
<ScrollArea.Root>
|
|
41
|
+
<ScrollArea.Viewport>
|
|
42
|
+
<ObjectsTree db={db} root={companionTo} onSelect={(entity) => setSelectedId(entity.id)} />
|
|
43
|
+
</ScrollArea.Viewport>
|
|
44
|
+
</ScrollArea.Root>
|
|
45
|
+
)}
|
|
46
|
+
<Syntax.Root data={selectedObject} replacer={refReplacer}>
|
|
47
|
+
<Panel.Root>
|
|
48
|
+
<Panel.Toolbar asChild>
|
|
49
|
+
<Toolbar.Root classNames='grid grid-cols-[1fr_3rem]'>
|
|
50
|
+
<Syntax.Filter />
|
|
51
|
+
<Input.Root>
|
|
52
|
+
<Input.TextInput
|
|
53
|
+
variant='subdued'
|
|
54
|
+
type='number'
|
|
55
|
+
min={0}
|
|
56
|
+
step={1}
|
|
57
|
+
aria-label='Ref depth'
|
|
58
|
+
value={depth}
|
|
59
|
+
onChange={(event) => setDepth(Math.max(0, Number(event.target.value) || 0))}
|
|
60
|
+
/>
|
|
61
|
+
</Input.Root>
|
|
62
|
+
</Toolbar.Root>
|
|
63
|
+
</Panel.Toolbar>
|
|
64
|
+
<Panel.Content asChild>
|
|
65
|
+
<Syntax.Viewport>
|
|
66
|
+
<Syntax.Code />
|
|
67
|
+
</Syntax.Viewport>
|
|
68
|
+
</Panel.Content>
|
|
69
|
+
</Panel.Root>
|
|
70
|
+
</Syntax.Root>
|
|
71
|
+
</div>
|
|
72
|
+
</Panel.Content>
|
|
73
|
+
</Panel.Root>
|
|
74
|
+
</Clipboard.Provider>
|
|
75
|
+
);
|
|
76
|
+
};
|