@dxos/plugin-debug 0.8.4-main.dedc0f3 → 0.8.4-main.dfabb4ec29
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/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/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/neutral/chunk-3OGPOE7H.mjs +20 -0
- 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-AJA6RYN3.mjs → neutral/chunk-NFIOTQRZ.mjs} +30 -9
- package/dist/lib/neutral/chunk-NFIOTQRZ.mjs.map +7 -0
- package/dist/lib/{browser/SpaceGenerator-DANYBPYZ.mjs → neutral/components/index.mjs} +414 -411
- 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-NH2H63KW.mjs +420 -0
- package/dist/lib/neutral/react-surface-NH2H63KW.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/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 +4 -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 -3
- 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 +131 -72
- package/src/DebugPlugin.node.ts +18 -0
- package/src/DebugPlugin.test.ts +29 -0
- package/src/DebugPlugin.tsx +30 -37
- package/src/capabilities/app-graph-builder.ts +362 -387
- package/src/capabilities/index.ts +5 -5
- package/src/capabilities/react-context.tsx +16 -7
- package/src/capabilities/react-surface.tsx +379 -338
- 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 +33 -41
- package/src/components/SpaceGenerator/draw-util.ts +10 -10
- package/src/components/SpaceGenerator/index.ts +2 -3
- package/src/components/SpaceGenerator/presets.ts +310 -48
- 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 +43 -21
- 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 +8 -7
- 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-DANYBPYZ.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-JTIEFOWZ.mjs +0 -587
- package/dist/lib/browser/app-graph-builder-JTIEFOWZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-5XPIRNQS.mjs +0 -18
- package/dist/lib/browser/chunk-5XPIRNQS.mjs.map +0 -7
- package/dist/lib/browser/chunk-AJA6RYN3.mjs.map +0 -7
- package/dist/lib/browser/index.mjs +0 -133
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/browser/react-context-NVAGLAJD.mjs +0 -16
- package/dist/lib/browser/react-context-NVAGLAJD.mjs.map +0 -7
- package/dist/lib/browser/react-surface-YLOWSIBU.mjs +0 -773
- package/dist/lib/browser/react-surface-YLOWSIBU.mjs.map +0 -7
- package/dist/lib/browser/settings-LSSWLM5I.mjs +0 -22
- package/dist/lib/browser/settings-LSSWLM5I.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 -16
- 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 -35
- package/src/components/DebugSettings.tsx +0 -159
- package/src/components/DevtoolsOverviewContainer.tsx +0 -20
- package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -54
- 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
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
|
+
import { AgentPrompt, WebSearchBlueprint } from '@dxos/assistant-toolkit';
|
|
8
|
+
import { Routine, Trigger, Operation } from '@dxos/compute';
|
|
7
9
|
import { type ComputeGraphModel, NODE_INPUT } from '@dxos/conductor';
|
|
8
|
-
import { DXN, Filter, Key, Obj, Query, Ref,
|
|
9
|
-
import { FunctionTrigger, type TriggerKind, type TriggerType } from '@dxos/functions';
|
|
10
|
+
import { DXN, Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Tag } from '@dxos/echo';
|
|
10
11
|
import { invariant } from '@dxos/invariant';
|
|
12
|
+
import { InboxOperation } from '@dxos/plugin-inbox';
|
|
13
|
+
import { Mailbox } from '@dxos/plugin-inbox';
|
|
14
|
+
import { Markdown } from '@dxos/plugin-markdown';
|
|
11
15
|
import { type Space } from '@dxos/react-client/echo';
|
|
12
16
|
import {
|
|
13
17
|
type ComputeShape,
|
|
@@ -15,49 +19,223 @@ import {
|
|
|
15
19
|
createChat,
|
|
16
20
|
createComputeGraph,
|
|
17
21
|
createConstant,
|
|
22
|
+
createFeed,
|
|
18
23
|
createFunction,
|
|
19
24
|
createGpt,
|
|
20
|
-
createQueue,
|
|
21
25
|
createRandom,
|
|
22
26
|
createSurface,
|
|
23
27
|
createTemplate,
|
|
24
28
|
createText,
|
|
25
29
|
createTrigger,
|
|
26
30
|
} from '@dxos/react-ui-canvas-compute';
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
pointsToRect,
|
|
32
|
-
rectToPoints,
|
|
33
|
-
} from '@dxos/react-ui-canvas-editor';
|
|
34
|
-
import { range } from '@dxos/util';
|
|
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';
|
|
34
|
+
import { range, trim } from '@dxos/util';
|
|
35
35
|
|
|
36
36
|
import { type ObjectGenerator } from './ObjectGenerator';
|
|
37
37
|
|
|
38
38
|
export enum PresetName {
|
|
39
|
+
DXOS_TEAM = 'dxos-team',
|
|
40
|
+
ORG_RESEARCH_PROJECT = 'org-research-project',
|
|
39
41
|
// EMAIL_TABLE = 'email-table',
|
|
40
42
|
GPT_QUEUE = 'webhook-gpt-queue',
|
|
41
43
|
CHAT_GPT = 'chat-gpt-text',
|
|
42
44
|
// EMAIL_WITH_SUMMARY = 'email-gptSummary-table',
|
|
43
45
|
OBJECT_CHANGE_QUEUE = 'objectChange-queue',
|
|
44
|
-
FOREX_FUNCTION_CALL = 'forex-function-call',
|
|
45
46
|
TIMER_TICK_QUEUE = 'timerTick-queue',
|
|
47
|
+
FOREX_FUNCTION_CALL = 'forex-function-call',
|
|
46
48
|
DISCORD_MESSAGES = 'discord-messages',
|
|
47
49
|
// KANBAN_QUEUE = 'kanban-queue',
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
export const generator = () => ({
|
|
51
|
-
schemas: [
|
|
53
|
+
schemas: [CanvasBoard.CanvasBoard, Trigger.Trigger] as any[],
|
|
52
54
|
types: Object.values(PresetName).map((name) => ({ typename: name })),
|
|
53
55
|
items: [
|
|
56
|
+
[
|
|
57
|
+
PresetName.DXOS_TEAM,
|
|
58
|
+
async (space, n, cb) => {
|
|
59
|
+
const objects = range(n, () => {
|
|
60
|
+
const org = space.db.add(
|
|
61
|
+
Obj.make(Organization.Organization, {
|
|
62
|
+
name: 'DXOS',
|
|
63
|
+
website: 'https://dxos.org',
|
|
64
|
+
}),
|
|
65
|
+
);
|
|
66
|
+
const doc = space.db.add(
|
|
67
|
+
Markdown.make({
|
|
68
|
+
name: 'DXOS Research',
|
|
69
|
+
content: 'DXOS builds Composer, an open-source AI-powered malleable application.',
|
|
70
|
+
}),
|
|
71
|
+
);
|
|
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
|
+
|
|
79
|
+
// space.db.add(
|
|
80
|
+
// Relation.make(HasSubject, {
|
|
81
|
+
// [Relation.Source]: doc,
|
|
82
|
+
// [Relation.Target]: org,
|
|
83
|
+
// completedAt: new Date().toISOString(),
|
|
84
|
+
// }),
|
|
85
|
+
// );
|
|
86
|
+
|
|
87
|
+
space.db.add(
|
|
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
|
+
}),
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
return doc;
|
|
110
|
+
});
|
|
111
|
+
cb?.(objects);
|
|
112
|
+
return objects;
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
[
|
|
116
|
+
PresetName.ORG_RESEARCH_PROJECT,
|
|
117
|
+
async (space, n, cb) => {
|
|
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 queueDxn = Feed.getQueueDxn(mailboxFeed)?.toString();
|
|
124
|
+
invariant(queueDxn, 'Mailbox feed missing queue DXN key');
|
|
125
|
+
const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();
|
|
126
|
+
const tagDxn = Obj.getDXN(tag).toString();
|
|
127
|
+
|
|
128
|
+
const objects = range(n, () => {
|
|
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
|
+
);
|
|
143
|
+
|
|
144
|
+
const researchPrompt = space.db.add(
|
|
145
|
+
Routine.make({
|
|
146
|
+
name: 'Research',
|
|
147
|
+
description: 'Research organization',
|
|
148
|
+
input: Schema.Struct({
|
|
149
|
+
org: Schema.Any,
|
|
150
|
+
}),
|
|
151
|
+
output: Schema.Any,
|
|
152
|
+
|
|
153
|
+
// TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.
|
|
154
|
+
// Remove the mock prompt to do the actual research.
|
|
155
|
+
instructions: trim`
|
|
156
|
+
Research the organization provided as input.
|
|
157
|
+
Create a research note for it at the end.
|
|
158
|
+
NOTE: Do mocked reseach (set mockSearch to true).
|
|
159
|
+
`,
|
|
160
|
+
blueprints: [Ref.make(WebSearchBlueprint.make())],
|
|
161
|
+
}),
|
|
162
|
+
);
|
|
163
|
+
|
|
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}}',
|
|
172
|
+
},
|
|
173
|
+
}),
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
const mailboxView = ViewModel.make({
|
|
177
|
+
query: Query.select(
|
|
178
|
+
Filter.type(Message.Message, {
|
|
179
|
+
properties: { labels: Filter.contains('investor') },
|
|
180
|
+
}),
|
|
181
|
+
).from({
|
|
182
|
+
queues: [queueDxn],
|
|
183
|
+
}),
|
|
184
|
+
jsonSchema: JsonSchema.toJsonSchema(Message.Message),
|
|
185
|
+
});
|
|
186
|
+
const contactsView = ViewModel.make({
|
|
187
|
+
query: contactsQuery,
|
|
188
|
+
jsonSchema: JsonSchema.toJsonSchema(Person.Person),
|
|
189
|
+
});
|
|
190
|
+
const organizationsView = ViewModel.make({
|
|
191
|
+
query: organizationsQuery,
|
|
192
|
+
jsonSchema: JsonSchema.toJsonSchema(Organization.Organization),
|
|
193
|
+
});
|
|
194
|
+
const notesView = ViewModel.make({
|
|
195
|
+
query: notesQuery,
|
|
196
|
+
jsonSchema: JsonSchema.toJsonSchema(Markdown.Document),
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
return space.db.add(
|
|
200
|
+
Pipeline.make({
|
|
201
|
+
name: 'Investor Research',
|
|
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
|
+
],
|
|
224
|
+
}),
|
|
225
|
+
);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
cb?.(objects.flat());
|
|
229
|
+
return objects.flat();
|
|
230
|
+
},
|
|
231
|
+
],
|
|
54
232
|
[
|
|
55
233
|
PresetName.GPT_QUEUE,
|
|
56
234
|
async (space, n, cb) => {
|
|
57
235
|
const objects = range(n, () => {
|
|
58
236
|
const canvasModel = CanvasGraphModel.create<ComputeShape>();
|
|
59
237
|
|
|
60
|
-
let functionTrigger:
|
|
238
|
+
let functionTrigger: Trigger.Trigger | undefined;
|
|
61
239
|
canvasModel.builder.call((builder) => {
|
|
62
240
|
const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));
|
|
63
241
|
const triggerShape = createTrigger({
|
|
@@ -71,10 +249,24 @@ export const generator = () => ({
|
|
|
71
249
|
const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
|
|
72
250
|
|
|
73
251
|
builder
|
|
74
|
-
.createEdge({
|
|
252
|
+
.createEdge({
|
|
253
|
+
source: trigger.id,
|
|
254
|
+
target: gpt.id,
|
|
255
|
+
input: 'prompt',
|
|
256
|
+
output: 'bodyText',
|
|
257
|
+
})
|
|
75
258
|
.createEdge({ source: gpt.id, target: text.id, output: 'text' })
|
|
76
|
-
.createEdge({
|
|
77
|
-
|
|
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
|
+
});
|
|
78
270
|
|
|
79
271
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
80
272
|
});
|
|
@@ -97,7 +289,10 @@ export const generator = () => ({
|
|
|
97
289
|
const { canvasModel, computeModel } = createQueueSinkPreset(
|
|
98
290
|
space,
|
|
99
291
|
'subscription',
|
|
100
|
-
(triggerSpec) =>
|
|
292
|
+
(triggerSpec) =>
|
|
293
|
+
(triggerSpec.query = {
|
|
294
|
+
ast: Query.select(Filter.typename('org.dxos.type.chess')).ast as Obj.Mutable<QueryAST.Query>,
|
|
295
|
+
}),
|
|
101
296
|
'type',
|
|
102
297
|
);
|
|
103
298
|
return addToSpace(PresetName.OBJECT_CHANGE_QUEUE, space, canvasModel, computeModel);
|
|
@@ -181,7 +376,7 @@ export const generator = () => ({
|
|
|
181
376
|
// const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
|
|
182
377
|
// invariant(templateComputeNode, 'Template compute node was not created.');
|
|
183
378
|
// templateComputeNode.value = templateContent.join('\n');
|
|
184
|
-
// templateComputeNode.inputSchema =
|
|
379
|
+
// templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
|
|
185
380
|
|
|
186
381
|
// attachTrigger(functionTrigger, computeModel);
|
|
187
382
|
|
|
@@ -209,8 +404,17 @@ export const generator = () => ({
|
|
|
209
404
|
builder
|
|
210
405
|
.createEdge({ source: chat.id, target: gpt.id, input: 'prompt' })
|
|
211
406
|
.createEdge({ source: gpt.id, target: text.id, output: 'text' })
|
|
212
|
-
.createEdge({
|
|
213
|
-
|
|
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
|
+
});
|
|
214
418
|
});
|
|
215
419
|
|
|
216
420
|
const computeModel = createComputeGraph(canvasModel);
|
|
@@ -306,7 +510,7 @@ export const generator = () => ({
|
|
|
306
510
|
// invariant(templateComputeNode, 'Template compute node was not created.');
|
|
307
511
|
// templateComputeNode.value = templateContent.join('\n');
|
|
308
512
|
// const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
|
|
309
|
-
// templateComputeNode.inputSchema =
|
|
513
|
+
// templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
|
|
310
514
|
|
|
311
515
|
// attachTrigger(functionTrigger, computeModel);
|
|
312
516
|
|
|
@@ -334,9 +538,21 @@ export const generator = () => ({
|
|
|
334
538
|
const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));
|
|
335
539
|
|
|
336
540
|
builder
|
|
337
|
-
.createEdge({
|
|
338
|
-
|
|
339
|
-
|
|
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
|
+
});
|
|
340
556
|
});
|
|
341
557
|
|
|
342
558
|
const computeModel = createComputeGraph(canvasModel);
|
|
@@ -354,7 +570,7 @@ export const generator = () => ({
|
|
|
354
570
|
const objects = range(n, () => {
|
|
355
571
|
const canvasModel = CanvasGraphModel.create<ComputeShape>();
|
|
356
572
|
|
|
357
|
-
let functionTrigger:
|
|
573
|
+
let functionTrigger: Trigger.Trigger | undefined;
|
|
358
574
|
canvasModel.builder.call((builder) => {
|
|
359
575
|
const triggerShape = createTrigger({
|
|
360
576
|
spaceId: space.id,
|
|
@@ -364,7 +580,10 @@ export const generator = () => ({
|
|
|
364
580
|
const trigger = canvasModel.createNode(triggerShape);
|
|
365
581
|
// DXOS dev-null channel.
|
|
366
582
|
const channelId = canvasModel.createNode(
|
|
367
|
-
createConstant({
|
|
583
|
+
createConstant({
|
|
584
|
+
value: '1088569858767212554',
|
|
585
|
+
...position({ x: -10, y: 0 }),
|
|
586
|
+
}),
|
|
368
587
|
);
|
|
369
588
|
const queueId = canvasModel.createNode(
|
|
370
589
|
createConstant({
|
|
@@ -374,14 +593,34 @@ export const generator = () => ({
|
|
|
374
593
|
);
|
|
375
594
|
const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));
|
|
376
595
|
const view = canvasModel.createNode(createText(position({ x: 12, y: 0 })));
|
|
377
|
-
const queue = canvasModel.createNode(
|
|
596
|
+
const queue = canvasModel.createNode(createFeed(position({ x: 0, y: 12 })));
|
|
378
597
|
|
|
379
598
|
builder
|
|
380
|
-
.createEdge({
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
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
|
+
});
|
|
385
624
|
|
|
386
625
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
387
626
|
});
|
|
@@ -448,10 +687,10 @@ export const generator = () => ({
|
|
|
448
687
|
] as [PresetName, ObjectGenerator<any>][],
|
|
449
688
|
});
|
|
450
689
|
|
|
451
|
-
const createQueueSinkPreset = <SpecType extends
|
|
690
|
+
const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
|
|
452
691
|
space: Space,
|
|
453
692
|
triggerKind: SpecType,
|
|
454
|
-
initSpec: (spec: Extract<
|
|
693
|
+
initSpec: (spec: Obj.Mutable<Extract<Trigger.Spec, { kind: SpecType }>>) => void,
|
|
455
694
|
triggerOutputName: string,
|
|
456
695
|
) => {
|
|
457
696
|
const canvasModel = CanvasGraphModel.create<ComputeShape>();
|
|
@@ -463,7 +702,7 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
|
|
|
463
702
|
}),
|
|
464
703
|
);
|
|
465
704
|
|
|
466
|
-
let functionTrigger:
|
|
705
|
+
let functionTrigger: Trigger.Trigger | undefined;
|
|
467
706
|
canvasModel.builder.call((builder) => {
|
|
468
707
|
const triggerShape = createTrigger({
|
|
469
708
|
spaceId: space.id,
|
|
@@ -484,7 +723,12 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
|
|
|
484
723
|
builder
|
|
485
724
|
.createEdge({ source: queueId.id, target: append.id, input: 'id' })
|
|
486
725
|
.createEdge({ source: template.id, target: append.id, input: 'items' })
|
|
487
|
-
.createEdge({
|
|
726
|
+
.createEdge({
|
|
727
|
+
source: trigger.id,
|
|
728
|
+
target: template.id,
|
|
729
|
+
output: triggerOutputName,
|
|
730
|
+
input: 'type',
|
|
731
|
+
})
|
|
488
732
|
.createEdge({
|
|
489
733
|
source: random.id,
|
|
490
734
|
target: template.id,
|
|
@@ -494,15 +738,20 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
|
|
|
494
738
|
functionTrigger = triggerShape.functionTrigger!.target!;
|
|
495
739
|
const triggerSpec = functionTrigger.spec;
|
|
496
740
|
invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');
|
|
497
|
-
|
|
741
|
+
Obj.update(functionTrigger, (functionTrigger) => {
|
|
742
|
+
initSpec(functionTrigger.spec as any);
|
|
743
|
+
});
|
|
498
744
|
});
|
|
499
745
|
|
|
500
746
|
const computeModel = createComputeGraph(canvasModel);
|
|
501
747
|
|
|
502
748
|
const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
|
|
503
749
|
invariant(templateComputeNode, 'Template compute node was not created.');
|
|
750
|
+
// NOTE: These are plain object mutations during model construction, not ECHO object mutations.
|
|
504
751
|
templateComputeNode.value = ['{', ' "@type": "{{type}}",', ' "id": "@{{changeId}}"', '}'].join('\n');
|
|
505
|
-
templateComputeNode.inputSchema =
|
|
752
|
+
templateComputeNode.inputSchema = JsonSchema.toJsonSchema(
|
|
753
|
+
Schema.Struct({ type: Schema.String, changeId: Schema.String }),
|
|
754
|
+
);
|
|
506
755
|
attachTrigger(functionTrigger, computeModel);
|
|
507
756
|
|
|
508
757
|
return { canvasModel, computeModel };
|
|
@@ -510,7 +759,7 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
|
|
|
510
759
|
|
|
511
760
|
const addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {
|
|
512
761
|
return space.db.add(
|
|
513
|
-
Obj.make(
|
|
762
|
+
Obj.make(CanvasBoard.CanvasBoard, {
|
|
514
763
|
name,
|
|
515
764
|
computeGraph: Ref.make(compute.root),
|
|
516
765
|
layout: canvas.graph,
|
|
@@ -530,7 +779,7 @@ const setupQueue = (
|
|
|
530
779
|
}),
|
|
531
780
|
);
|
|
532
781
|
const queue = canvasModel.createNode(
|
|
533
|
-
|
|
782
|
+
createFeed(
|
|
534
783
|
args?.queuePosition ? rawPosition(args.queuePosition) : position({ x: -3, y: 3, width: 14, height: 10 }),
|
|
535
784
|
),
|
|
536
785
|
);
|
|
@@ -538,17 +787,27 @@ const setupQueue = (
|
|
|
538
787
|
return { queue, queueId };
|
|
539
788
|
};
|
|
540
789
|
|
|
541
|
-
const attachTrigger = (functionTrigger:
|
|
790
|
+
const attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {
|
|
542
791
|
invariant(functionTrigger);
|
|
543
|
-
functionTrigger.function = Ref.make(computeModel.root);
|
|
544
792
|
const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;
|
|
545
|
-
functionTrigger
|
|
793
|
+
Obj.update(functionTrigger, (functionTrigger) => {
|
|
794
|
+
functionTrigger.function = Ref.make(computeModel.root);
|
|
795
|
+
functionTrigger.inputNodeId = inputNode.id;
|
|
796
|
+
});
|
|
546
797
|
};
|
|
547
798
|
|
|
548
|
-
type RawPositionInput = {
|
|
799
|
+
type RawPositionInput = {
|
|
800
|
+
centerX: number;
|
|
801
|
+
centerY: number;
|
|
802
|
+
width: number;
|
|
803
|
+
height: number;
|
|
804
|
+
};
|
|
549
805
|
|
|
550
806
|
const rawPosition = (args: RawPositionInput) => {
|
|
551
|
-
return {
|
|
807
|
+
return {
|
|
808
|
+
center: { x: args.centerX, y: args.centerY },
|
|
809
|
+
size: { width: args.width, height: args.height },
|
|
810
|
+
};
|
|
552
811
|
};
|
|
553
812
|
|
|
554
813
|
const position = (rect: { x: number; y: number; width?: number; height?: number }) => {
|
|
@@ -556,7 +815,10 @@ const position = (rect: { x: number; y: number; width?: number; height?: number
|
|
|
556
815
|
const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });
|
|
557
816
|
const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);
|
|
558
817
|
if (width && height) {
|
|
559
|
-
return {
|
|
818
|
+
return {
|
|
819
|
+
center: { x, y },
|
|
820
|
+
size: width && height ? { width, height } : undefined,
|
|
821
|
+
};
|
|
560
822
|
} else {
|
|
561
823
|
return { center: { x, y } };
|
|
562
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
|
+
};
|