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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/lib/browser/index.mjs +101 -100
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/types/src/DebugPlugin.d.ts +7 -1
  5. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  6. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  7. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  8. package/dist/types/src/capabilities/index.d.ts +12 -5
  9. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  10. package/dist/types/src/capabilities/react-context.d.ts +4 -2
  11. package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
  12. package/dist/types/src/capabilities/react-surface.d.ts +7 -2
  13. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  14. package/dist/types/src/capabilities/settings.d.ts +8 -2
  15. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  16. package/dist/types/src/components/DebugSettings/DebugSettings.d.ts +11 -0
  17. package/dist/types/src/components/DebugSettings/DebugSettings.d.ts.map +1 -0
  18. package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts +79 -0
  19. package/dist/types/src/components/DebugSettings/DebugSettings.stories.d.ts.map +1 -0
  20. package/dist/types/src/components/DebugSettings/index.d.ts +3 -0
  21. package/dist/types/src/components/DebugSettings/index.d.ts.map +1 -0
  22. package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -0
  23. package/dist/types/src/components/SchemaTable/index.d.ts +2 -0
  24. package/dist/types/src/components/SchemaTable/index.d.ts.map +1 -0
  25. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +5 -5
  26. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  27. package/dist/types/src/components/SpaceGenerator/index.d.ts +2 -2
  28. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  29. package/dist/types/src/components/SpaceGenerator/presets.d.ts +2 -5
  30. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  31. package/dist/types/src/components/index.d.ts +4 -10
  32. package/dist/types/src/components/index.d.ts.map +1 -1
  33. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +8 -0
  34. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
  35. package/dist/types/src/containers/DebugGraph/index.d.ts +3 -0
  36. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
  37. package/dist/types/src/{components → containers/DebugObjectPanel}/DebugObjectPanel.d.ts +2 -2
  38. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
  39. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +3 -0
  40. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
  41. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -0
  42. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
  43. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +3 -0
  44. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
  45. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
  46. package/dist/types/src/containers/DebugStatus/index.d.ts +3 -0
  47. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
  48. package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
  49. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
  50. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +3 -0
  51. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
  52. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts +15 -0
  53. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
  54. package/dist/types/src/containers/SpaceGenerator/index.d.ts +3 -0
  55. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
  56. package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +2 -2
  57. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
  58. package/dist/types/src/containers/Wireframe/index.d.ts +3 -0
  59. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
  60. package/dist/types/src/containers/index.d.ts +9 -0
  61. package/dist/types/src/containers/index.d.ts.map +1 -0
  62. package/dist/types/src/meta.d.ts +2 -2
  63. package/dist/types/src/meta.d.ts.map +1 -1
  64. package/dist/types/src/translations.d.ts +60 -58
  65. package/dist/types/src/translations.d.ts.map +1 -1
  66. package/dist/types/src/types/Settings.d.ts +6 -0
  67. package/dist/types/src/types/Settings.d.ts.map +1 -0
  68. package/dist/types/src/types/index.d.ts +67 -0
  69. package/dist/types/src/types/index.d.ts.map +1 -0
  70. package/dist/types/tsconfig.tsbuildinfo +1 -1
  71. package/package.json +83 -70
  72. package/src/DebugPlugin.tsx +31 -33
  73. package/src/capabilities/app-graph-builder.ts +363 -388
  74. package/src/capabilities/index.ts +5 -5
  75. package/src/capabilities/react-context.tsx +16 -7
  76. package/src/capabilities/react-surface.tsx +360 -337
  77. package/src/capabilities/settings.ts +24 -12
  78. package/src/components/DebugSettings/DebugSettings.stories.tsx +36 -0
  79. package/src/components/DebugSettings/DebugSettings.tsx +228 -0
  80. package/src/components/DebugSettings/index.ts +7 -0
  81. package/src/components/SchemaTable/index.ts +5 -0
  82. package/src/components/SpaceGenerator/ObjectGenerator.tsx +21 -23
  83. package/src/components/SpaceGenerator/index.ts +2 -3
  84. package/src/components/SpaceGenerator/presets.ts +243 -121
  85. package/src/components/index.ts +4 -8
  86. package/src/containers/DebugGraph/DebugGraph.tsx +13 -0
  87. package/src/containers/DebugGraph/index.ts +7 -0
  88. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +47 -0
  89. package/src/containers/DebugObjectPanel/index.ts +7 -0
  90. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +55 -0
  91. package/src/containers/DebugSpaceObjectsPanel/index.ts +7 -0
  92. package/src/{components → containers/DebugStatus}/DebugStatus.tsx +41 -17
  93. package/src/containers/DebugStatus/index.ts +7 -0
  94. package/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx +25 -0
  95. package/src/containers/DevtoolsOverviewContainer/index.ts +7 -0
  96. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +130 -0
  97. package/src/containers/SpaceGenerator/index.ts +7 -0
  98. package/src/{components → containers/Wireframe}/Wireframe.tsx +6 -7
  99. package/src/containers/Wireframe/index.ts +7 -0
  100. package/src/containers/index.ts +13 -0
  101. package/src/meta.ts +3 -3
  102. package/src/translations.ts +66 -58
  103. package/src/types/Settings.ts +15 -0
  104. package/src/{types.ts → types/index.ts} +12 -10
  105. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs +0 -20
  106. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs.map +0 -7
  107. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs +0 -25
  108. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs.map +0 -7
  109. package/dist/lib/browser/SpaceGenerator-7Q7CX64P.mjs +0 -1159
  110. package/dist/lib/browser/SpaceGenerator-7Q7CX64P.mjs.map +0 -7
  111. package/dist/lib/browser/app-graph-builder-RXWTHLEW.mjs +0 -588
  112. package/dist/lib/browser/app-graph-builder-RXWTHLEW.mjs.map +0 -7
  113. package/dist/lib/browser/chunk-SRV2AIGJ.mjs +0 -68
  114. package/dist/lib/browser/chunk-SRV2AIGJ.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-WZFZ4ESO.mjs +0 -20
  116. package/dist/lib/browser/chunk-WZFZ4ESO.mjs.map +0 -7
  117. package/dist/lib/browser/react-context-P2YDWEWI.mjs +0 -16
  118. package/dist/lib/browser/react-context-P2YDWEWI.mjs.map +0 -7
  119. package/dist/lib/browser/react-surface-4XGZUT3Z.mjs +0 -772
  120. package/dist/lib/browser/react-surface-4XGZUT3Z.mjs.map +0 -7
  121. package/dist/lib/browser/settings-SQXR3OAH.mjs +0 -22
  122. package/dist/lib/browser/settings-SQXR3OAH.mjs.map +0 -7
  123. package/dist/types/src/components/Container.d.ts +0 -5
  124. package/dist/types/src/components/Container.d.ts.map +0 -1
  125. package/dist/types/src/components/DebugGraph.d.ts +0 -8
  126. package/dist/types/src/components/DebugGraph.d.ts.map +0 -1
  127. package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
  128. package/dist/types/src/components/DebugSettings.d.ts +0 -6
  129. package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
  130. package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
  131. package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
  132. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
  133. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +0 -9
  134. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +0 -1
  135. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -15
  136. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
  137. package/dist/types/src/components/Wireframe.d.ts.map +0 -1
  138. package/dist/types/src/types.d.ts +0 -63
  139. package/dist/types/src/types.d.ts.map +0 -1
  140. package/src/components/Container.tsx +0 -15
  141. package/src/components/DebugGraph.tsx +0 -14
  142. package/src/components/DebugObjectPanel.tsx +0 -33
  143. package/src/components/DebugSettings.tsx +0 -159
  144. package/src/components/DevtoolsOverviewContainer.tsx +0 -20
  145. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -52
  146. package/src/components/SpaceGenerator/SpaceGenerator.tsx +0 -122
  147. /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
  148. /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +0 -0
  149. /package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +0 -0
@@ -1,1159 +0,0 @@
1
- // src/components/SpaceGenerator/SpaceGenerator.tsx
2
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
3
- import React2, { useCallback, useMemo, useState } from "react";
4
- import { useIntentDispatcher } from "@dxos/app-framework";
5
- import { ComputeGraph as ComputeGraph2 } from "@dxos/conductor";
6
- import { Filter as Filter3 } from "@dxos/echo";
7
- import { Markdown as Markdown3 } from "@dxos/plugin-markdown/types";
8
- import { Sheet as Sheet2 } from "@dxos/plugin-sheet/types";
9
- import { Diagram as Diagram2 } from "@dxos/plugin-sketch/types";
10
- import { useClient } from "@dxos/react-client";
11
- import { getTypename } from "@dxos/react-client/echo";
12
- import { IconButton as IconButton2, Input, Toolbar, useAsyncEffect } from "@dxos/react-ui";
13
- import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
14
- import { DataType as DataType3 } from "@dxos/schema";
15
- import { jsonKeyReplacer, sortKeys } from "@dxos/util";
16
-
17
- // src/components/SpaceGenerator/ObjectGenerator.tsx
18
- import { createIntent } from "@dxos/app-framework";
19
- import { addressToA1Notation } from "@dxos/compute";
20
- import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from "@dxos/conductor";
21
- import { DXN, Filter, Key, Type } from "@dxos/echo";
22
- import { Markdown } from "@dxos/plugin-markdown/types";
23
- import { Sheet } from "@dxos/plugin-sheet/types";
24
- import { Diagram } from "@dxos/plugin-sketch/types";
25
- import { SpaceAction } from "@dxos/plugin-space/types";
26
- import { faker } from "@dxos/random";
27
- import { DataType, getTypenameFromQuery } from "@dxos/schema";
28
- import { createAsyncGenerator } from "@dxos/schema/testing";
29
- import { range } from "@dxos/util";
30
- var generator = faker;
31
- var findViewByTypename = async (views, typename) => {
32
- return views.find((view) => getTypenameFromQuery(view.query.ast) === typename);
33
- };
34
- var createGenerator = (client, dispatch, schema) => {
35
- return async (space, n) => {
36
- const typename = schema.typename;
37
- const { objects: views } = await space.db.query(Filter.type(DataType.View)).run();
38
- const view = await findViewByTypename(views, typename);
39
- const staticSchema = client?.graph.schemaRegistry.schemas.find((schema2) => Type.getTypename(schema2) === typename);
40
- if (!view && !staticSchema) {
41
- await dispatch(createIntent(SpaceAction.AddSchema, {
42
- space,
43
- schema,
44
- show: false
45
- }));
46
- } else if (!view && staticSchema) {
47
- await dispatch(createIntent(SpaceAction.UseStaticSchema, {
48
- space,
49
- typename,
50
- show: false
51
- }));
52
- }
53
- const generate = createAsyncGenerator(generator, schema, {
54
- db: space.db
55
- });
56
- return generate.createObjects(n);
57
- };
58
- };
59
- var staticGenerators = /* @__PURE__ */ new Map([
60
- [
61
- Markdown.Document.typename,
62
- async (space, n, cb) => {
63
- const objects = range(n).map(() => {
64
- return space.db.add(Markdown.makeDocument({
65
- name: faker.commerce.productName(),
66
- content: faker.lorem.sentences(5)
67
- }));
68
- });
69
- cb?.(objects);
70
- return objects;
71
- }
72
- ],
73
- [
74
- Diagram.Diagram.typename,
75
- async (space, n, cb) => {
76
- const objects = range(n).map(() => {
77
- const obj = space.db.add(Diagram.make({
78
- name: faker.commerce.productName()
79
- }));
80
- return obj;
81
- });
82
- cb?.(objects);
83
- return objects;
84
- }
85
- ],
86
- // TODO(burdon): Create unit tests.
87
- [
88
- Sheet.Sheet.typename,
89
- async (space, n, cb) => {
90
- const objects = range(n).map(() => {
91
- const cells = {};
92
- const year = (/* @__PURE__ */ new Date()).getFullYear();
93
- const cols = 4;
94
- const rows = 16;
95
- for (let col = 1; col <= cols; col++) {
96
- for (let row = 1; row <= rows; row++) {
97
- const cell = addressToA1Notation({
98
- col,
99
- row
100
- });
101
- if (row === 1) {
102
- cells[cell] = {
103
- value: `${year} Q${col}`
104
- };
105
- } else if (row === rows) {
106
- const from = addressToA1Notation({
107
- col,
108
- row: 2
109
- });
110
- const to = addressToA1Notation({
111
- col,
112
- row: rows - 1
113
- });
114
- cells[cell] = {
115
- value: `=SUM(${from}:${to})`
116
- };
117
- } else if (row > 2 && row < rows - 1) {
118
- cells[cell] = {
119
- value: Math.floor(Math.random() * 1e4)
120
- };
121
- }
122
- }
123
- }
124
- return space.db.add(Sheet.make({
125
- name: faker.commerce.productName(),
126
- cells
127
- }));
128
- });
129
- cb?.(objects);
130
- return objects;
131
- }
132
- ],
133
- [
134
- ComputeGraph.typename,
135
- async (space, n, cb) => {
136
- const objects = range(n, () => {
137
- const model = ComputeGraphModel.create();
138
- model.builder.createNode({
139
- id: "gpt-INPUT",
140
- type: NODE_INPUT
141
- }).createNode({
142
- id: "gpt-GPT",
143
- type: "gpt"
144
- }).createNode({
145
- id: "gpt-QUEUE_ID",
146
- type: "constant",
147
- value: new DXN(DXN.kind.QUEUE, [
148
- "data",
149
- space.id,
150
- Key.ObjectId.random()
151
- ]).toString()
152
- }).createNode({
153
- id: "gpt-APPEND",
154
- type: "append"
155
- }).createNode({
156
- id: "gpt-OUTPUT",
157
- type: NODE_OUTPUT
158
- }).createEdge({
159
- node: "gpt-INPUT",
160
- property: "prompt"
161
- }, {
162
- node: "gpt-GPT",
163
- property: "prompt"
164
- }).createEdge({
165
- node: "gpt-GPT",
166
- property: "text"
167
- }, {
168
- node: "gpt-OUTPUT",
169
- property: "text"
170
- }).createEdge({
171
- node: "gpt-QUEUE_ID",
172
- property: DEFAULT_OUTPUT
173
- }, {
174
- node: "gpt-APPEND",
175
- property: "id"
176
- }).createEdge({
177
- node: "gpt-GPT",
178
- property: "messages"
179
- }, {
180
- node: "gpt-APPEND",
181
- property: "items"
182
- }).createEdge({
183
- node: "gpt-QUEUE_ID",
184
- property: DEFAULT_OUTPUT
185
- }, {
186
- node: "gpt-OUTPUT",
187
- property: "queue"
188
- });
189
- return space.db.add(model.root);
190
- });
191
- cb?.(objects);
192
- return objects;
193
- }
194
- ]
195
- ]);
196
-
197
- // src/components/SpaceGenerator/presets.ts
198
- import * as Schema from "effect/Schema";
199
- import { Agent, EntityExtraction, ResearchBlueprint } from "@dxos/assistant-toolkit";
200
- import { Prompt } from "@dxos/blueprints";
201
- import { NODE_INPUT as NODE_INPUT2 } from "@dxos/conductor";
202
- import { DXN as DXN2, Filter as Filter2, Key as Key2, Obj, Query, Ref, Tag, Type as Type2 } from "@dxos/echo";
203
- import { Trigger, serializeFunction } from "@dxos/functions";
204
- import { invariant } from "@dxos/invariant";
205
- import { sync } from "@dxos/plugin-inbox";
206
- import { Mailbox } from "@dxos/plugin-inbox/types";
207
- import { Markdown as Markdown2 } from "@dxos/plugin-markdown/types";
208
- import { createAppend, createChat, createComputeGraph, createConstant, createFunction, createGpt, createQueue, createRandom, createSurface, createTemplate, createText, createTrigger } from "@dxos/react-ui-canvas-compute";
209
- import { CanvasBoardType, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from "@dxos/react-ui-canvas-editor";
210
- import { DataType as DataType2, createView } from "@dxos/schema";
211
- import { range as range2, trim } from "@dxos/util";
212
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/components/SpaceGenerator/presets.ts";
213
- var PresetName = /* @__PURE__ */ (function(PresetName2) {
214
- PresetName2["DXOS_TEAM"] = "dxos-team";
215
- PresetName2["ORG_RESEARCH_PROJECT"] = "org-research-project";
216
- PresetName2["GPT_QUEUE"] = "webhook-gpt-queue";
217
- PresetName2["CHAT_GPT"] = "chat-gpt-text";
218
- PresetName2["OBJECT_CHANGE_QUEUE"] = "objectChange-queue";
219
- PresetName2["FOREX_FUNCTION_CALL"] = "forex-function-call";
220
- PresetName2["TIMER_TICK_QUEUE"] = "timerTick-queue";
221
- PresetName2["DISCORD_MESSAGES"] = "discord-messages";
222
- return PresetName2;
223
- })({});
224
- var generator2 = () => ({
225
- schemas: [
226
- CanvasBoardType,
227
- Trigger.Trigger
228
- ],
229
- types: Object.values(PresetName).map((name) => ({
230
- typename: name
231
- })),
232
- items: [
233
- [
234
- "dxos-team",
235
- async (space, n, cb) => {
236
- const objects = range2(n, () => {
237
- const tag = space.db.add(Tag.make({
238
- label: "Investor"
239
- }));
240
- const tagDxn = Obj.getDXN(tag).toString();
241
- const org = space.db.add(Obj.make(DataType2.Organization, {
242
- name: "DXOS",
243
- website: "https://dxos.org"
244
- }));
245
- const doc = space.db.add(Markdown2.makeDocument({
246
- name: "DXOS Research",
247
- content: "DXOS builds Composer, an open-source AI-powered malleable application."
248
- }));
249
- Obj.getMeta(doc).tags = [
250
- tagDxn
251
- ];
252
- space.db.add(Obj.make(DataType2.Person, {
253
- fullName: "Rich",
254
- organization: Ref.make(org)
255
- }, {
256
- tags: [
257
- tagDxn
258
- ]
259
- }));
260
- space.db.add(Obj.make(DataType2.Person, {
261
- fullName: "Josiah",
262
- organization: Ref.make(org)
263
- }));
264
- space.db.add(Obj.make(DataType2.Person, {
265
- fullName: "Dima",
266
- organization: Ref.make(org)
267
- }));
268
- space.db.add(Obj.make(DataType2.Person, {
269
- fullName: "Mykola",
270
- organization: Ref.make(org)
271
- }));
272
- space.db.add(Obj.make(DataType2.Person, {
273
- fullName: "Will",
274
- organization: Ref.make(org)
275
- }));
276
- return doc;
277
- });
278
- cb?.(objects);
279
- return objects;
280
- }
281
- ],
282
- [
283
- "org-research-project",
284
- async (space, n, cb) => {
285
- const mailbox = await space.db.query(Filter2.type(Mailbox.Mailbox)).first();
286
- const tag = await space.db.query(Filter2.type(Tag.Tag, {
287
- label: "Investor"
288
- })).first();
289
- const tagDxn = Obj.getDXN(tag).toString();
290
- const objects = range2(n, () => {
291
- const contactsQuery = Query.select(Filter2.type(DataType2.Person)).select(Filter2.tag(tagDxn));
292
- const organizationsQuery = Query.select(Filter2.type(DataType2.Organization)).select(Filter2.tag(tagDxn));
293
- const notesQuery = Query.select(Filter2.type(Markdown2.Document)).select(Filter2.tag(tagDxn));
294
- const emailSyncTrigger = Trigger.make({
295
- enabled: true,
296
- spec: {
297
- kind: "timer",
298
- cron: "* * * * *"
299
- },
300
- function: Ref.make(serializeFunction(sync)),
301
- input: {
302
- mailboxId: Obj.getDXN(mailbox).toString()
303
- }
304
- });
305
- space.db.add(emailSyncTrigger);
306
- const contactExtractionTrigger = Trigger.make({
307
- enabled: true,
308
- // TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
309
- spec: {
310
- kind: "queue",
311
- queue: mailbox.queue.dxn.toString()
312
- },
313
- function: Ref.make(serializeFunction(EntityExtraction.extract)),
314
- input: {
315
- source: "{{event.item}}"
316
- }
317
- });
318
- space.db.add(contactExtractionTrigger);
319
- const researchPrompt = space.db.add(Prompt.make({
320
- name: "Research",
321
- description: "Research organization",
322
- input: Schema.Struct({
323
- org: Schema.Any
324
- }),
325
- output: Schema.Any,
326
- // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.
327
- // Remove the mock prompt to do the actual research.
328
- instructions: trim`
329
- Research the organization provided as input.
330
- Create a research note for it at the end.
331
- NOTE: Do mocked reseach (set mockSearch to true).
332
- `,
333
- blueprints: [
334
- Ref.make(ResearchBlueprint)
335
- ]
336
- }));
337
- const researchTrigger = Trigger.make({
338
- enabled: true,
339
- spec: {
340
- kind: "subscription",
341
- query: {
342
- ast: organizationsQuery.ast
343
- }
344
- },
345
- function: Ref.make(serializeFunction(Agent.prompt)),
346
- input: {
347
- prompt: Ref.make(researchPrompt),
348
- input: "{{event.subject}}"
349
- }
350
- });
351
- space.db.add(researchTrigger);
352
- const mailboxView = createView({
353
- name: "Mailbox",
354
- query: Query.select(Filter2.type(DataType2.Message, {
355
- properties: {
356
- labels: Filter2.contains("investor")
357
- }
358
- })).options({
359
- queues: [
360
- mailbox.queue.dxn.toString()
361
- ]
362
- }),
363
- jsonSchema: Type2.toJsonSchema(DataType2.Message),
364
- presentation: Obj.make(DataType2.Collection, {
365
- objects: []
366
- })
367
- });
368
- const contactsView = createView({
369
- name: "Contacts",
370
- query: contactsQuery,
371
- jsonSchema: Type2.toJsonSchema(DataType2.Person),
372
- presentation: Obj.make(DataType2.Collection, {
373
- objects: []
374
- })
375
- });
376
- const organizationsView = createView({
377
- name: "Organizations",
378
- query: organizationsQuery,
379
- jsonSchema: Type2.toJsonSchema(DataType2.Organization),
380
- presentation: Obj.make(DataType2.Collection, {
381
- objects: []
382
- })
383
- });
384
- const notesView = createView({
385
- name: "Notes",
386
- query: notesQuery,
387
- jsonSchema: Type2.toJsonSchema(Markdown2.Document),
388
- presentation: Obj.make(DataType2.Collection, {
389
- objects: []
390
- })
391
- });
392
- return space.db.add(DataType2.makeProject({
393
- name: "Investor Research",
394
- collections: [
395
- mailboxView,
396
- contactsView,
397
- organizationsView,
398
- notesView
399
- ].map((view) => Ref.make(view))
400
- }));
401
- });
402
- cb?.(objects.flat());
403
- return objects.flat();
404
- }
405
- ],
406
- [
407
- "webhook-gpt-queue",
408
- async (space, n, cb) => {
409
- const objects = range2(n, () => {
410
- const canvasModel = CanvasGraphModel.create();
411
- let functionTrigger;
412
- canvasModel.builder.call((builder) => {
413
- const gpt = canvasModel.createNode(createGpt(position({
414
- x: 0,
415
- y: -14
416
- })));
417
- const triggerShape = createTrigger({
418
- spaceId: space.id,
419
- triggerKind: "webhook",
420
- ...position({
421
- x: -18,
422
- y: -2
423
- })
424
- });
425
- const trigger = canvasModel.createNode(triggerShape);
426
- const text = canvasModel.createNode(createText(position({
427
- x: 19,
428
- y: 3,
429
- width: 10,
430
- height: 10
431
- })));
432
- const { queueId } = setupQueue(space, canvasModel);
433
- const append = canvasModel.createNode(createAppend(position({
434
- x: 10,
435
- y: 6
436
- })));
437
- builder.createEdge({
438
- source: trigger.id,
439
- target: gpt.id,
440
- input: "prompt",
441
- output: "bodyText"
442
- }).createEdge({
443
- source: gpt.id,
444
- target: text.id,
445
- output: "text"
446
- }).createEdge({
447
- source: queueId.id,
448
- target: append.id,
449
- input: "id"
450
- }).createEdge({
451
- source: gpt.id,
452
- target: append.id,
453
- output: "messages",
454
- input: "items"
455
- });
456
- functionTrigger = triggerShape.functionTrigger.target;
457
- });
458
- const computeModel = createComputeGraph(canvasModel);
459
- attachTrigger(functionTrigger, computeModel);
460
- return addToSpace("webhook-gpt-queue", space, canvasModel, computeModel);
461
- });
462
- cb?.(objects);
463
- return objects;
464
- }
465
- ],
466
- [
467
- "objectChange-queue",
468
- async (space, n, cb) => {
469
- const objects = range2(n, () => {
470
- const { canvasModel, computeModel } = createQueueSinkPreset(space, "subscription", (triggerSpec) => triggerSpec.query = {
471
- ast: Query.select(Filter2.typename("dxos.org/type/Chess")).ast
472
- }, "type");
473
- return addToSpace("objectChange-queue", space, canvasModel, computeModel);
474
- });
475
- cb?.(objects);
476
- return objects;
477
- }
478
- ],
479
- [
480
- "timerTick-queue",
481
- async (space, n, cb) => {
482
- const objects = range2(n, () => {
483
- const { canvasModel, computeModel } = createQueueSinkPreset(space, "timer", (triggerSpec) => triggerSpec.cron = "*/5 * * * * *", "result");
484
- return addToSpace("timerTick-queue", space, canvasModel, computeModel);
485
- });
486
- cb?.(objects);
487
- return objects;
488
- }
489
- ],
490
- // TODO(wittjosiah): Remove?
491
- // [
492
- // PresetName.EMAIL_TABLE,
493
- // async (space, n, cb) => {
494
- // const objects = range(n, () => {
495
- // const canvasModel = CanvasGraphModel.create<ComputeShape>();
496
- // const results = space.db.query(Filter.type(TableType)).runSync();
497
- // const emailTable = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Email'));
498
- // invariant(emailTable, 'Email table not found.');
499
- // const template = canvasModel.createNode(
500
- // createTemplate({
501
- // valueType: 'object',
502
- // ...rawPosition({ centerX: -80, centerY: -64, width: 320, height: 320 }),
503
- // }),
504
- // );
505
- // const templateContent = ['{'];
506
- // let functionTrigger: FunctionTrigger | undefined;
507
- // canvasModel.builder.call((builder) => {
508
- // const triggerShape = createTrigger({
509
- // spaceId: space.id,
510
- // triggerKind: 'email',
511
- // ...position({ x: -18, y: -2 }),
512
- // });
513
- // const trigger = canvasModel.createNode(triggerShape);
514
- // const tableId = canvasModel.createNode(
515
- // createConstant({
516
- // value: DXN.fromLocalObjectId(emailTable.id).toString(),
517
- // ...position({ x: -18, y: 5, width: 8, height: 6 }),
518
- // }),
519
- // );
520
- // const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
521
- // const properties = SchemaAST.getPropertySignatures(EmailTriggerOutput.ast);
522
- // for (let i = 0; i < properties.length; i++) {
523
- // const propName = properties[i].name.toString();
524
- // builder.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });
525
- // templateContent.push(` "${propName}": "{{${propName}}}"` + (i === properties.length - 1 ? '' : ','));
526
- // }
527
- // templateContent.push('}');
528
- // builder
529
- // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })
530
- // .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });
531
- // functionTrigger = triggerShape.functionTrigger!.target!;
532
- // });
533
- // const computeModel = createComputeGraph(canvasModel);
534
- // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
535
- // invariant(templateComputeNode, 'Template compute node was not created.');
536
- // templateComputeNode.value = templateContent.join('\n');
537
- // templateComputeNode.inputSchema = Type.toJsonSchema(EmailTriggerOutput);
538
- // attachTrigger(functionTrigger, computeModel);
539
- // return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);
540
- // });
541
- // cb?.(objects);
542
- // return objects;
543
- // },
544
- // ],
545
- [
546
- "chat-gpt-text",
547
- async (space, n, cb) => {
548
- const objects = range2(n, () => {
549
- const canvasModel = CanvasGraphModel.create();
550
- canvasModel.builder.call((builder) => {
551
- const gpt = canvasModel.createNode(createGpt(position({
552
- x: 0,
553
- y: -14
554
- })));
555
- const chat = canvasModel.createNode(createChat(position({
556
- x: -18,
557
- y: -2
558
- })));
559
- const text = canvasModel.createNode(createText(position({
560
- x: 19,
561
- y: 3,
562
- width: 10,
563
- height: 10
564
- })));
565
- const { queueId } = setupQueue(space, canvasModel);
566
- const append = canvasModel.createNode(createAppend(position({
567
- x: 10,
568
- y: 6
569
- })));
570
- builder.createEdge({
571
- source: chat.id,
572
- target: gpt.id,
573
- input: "prompt"
574
- }).createEdge({
575
- source: gpt.id,
576
- target: text.id,
577
- output: "text"
578
- }).createEdge({
579
- source: queueId.id,
580
- target: append.id,
581
- input: "id"
582
- }).createEdge({
583
- source: gpt.id,
584
- target: append.id,
585
- output: "messages",
586
- input: "items"
587
- });
588
- });
589
- const computeModel = createComputeGraph(canvasModel);
590
- return addToSpace("chat-gpt-text", space, canvasModel, computeModel);
591
- });
592
- cb?.(objects);
593
- return objects;
594
- }
595
- ],
596
- // TODO(wittjosiah): Remove?
597
- // [
598
- // PresetName.EMAIL_WITH_SUMMARY,
599
- // async (space, n, cb) => {
600
- // const objects = range(n, () => {
601
- // const canvasModel = CanvasGraphModel.create<ComputeShape>();
602
- // const results = space.db.query(Filter.type(TableType)).runSync();
603
- // const emailTable = results.find((r) => r.object?.view?.target?.query?.typename?.endsWith('Email'));
604
- // invariant(emailTable, 'Email table not found.');
605
- // const template = canvasModel.createNode(
606
- // createTemplate({
607
- // valueType: 'object',
608
- // ...rawPosition({ centerX: 192, centerY: -176, width: 320, height: 320 }),
609
- // }),
610
- // );
611
- // const templateContent = ['{'];
612
- // let functionTrigger: FunctionTrigger | undefined;
613
- // canvasModel.builder.call((builder) => {
614
- // const gpt = canvasModel.createNode(
615
- // createGpt(rawPosition({ centerX: -400, centerY: -112, width: 256, height: 202 })),
616
- // );
617
- // const systemPrompt = canvasModel.createNode(
618
- // createConstant({
619
- // value: "use one word to describe content category. don't write anything else",
620
- // ...rawPosition({ centerX: -800, centerY: -160, width: 192, height: 128 }),
621
- // }),
622
- // );
623
- // const triggerShape = createTrigger({
624
- // spaceId: space.id,
625
- // triggerKind: 'email',
626
- // ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),
627
- // });
628
- // const trigger = canvasModel.createNode(triggerShape);
629
- // const { queueId } = setupQueue(space, canvasModel, {
630
- // idPosition: { centerX: -720, centerY: 224, width: 192, height: 256 },
631
- // queuePosition: { centerX: -144, centerY: 416, width: 320, height: 448 },
632
- // });
633
- // const appendToQueue = canvasModel.createNode(
634
- // createAppend(rawPosition({ centerX: -80, centerY: 96, width: 122, height: 128 })),
635
- // );
636
- // const tableId = canvasModel.createNode(
637
- // createConstant({
638
- // value: DXN.fromLocalObjectId(emailTable.id).toString(),
639
- // ...rawPosition({ centerX: -112, centerY: -544, width: 192, height: 256 }),
640
- // }),
641
- // );
642
- // const appendToTable = canvasModel.createNode(
643
- // createAppend(rawPosition({ centerX: 560, centerY: -416, width: 128, height: 122 })),
644
- // );
645
- // templateContent.push(' "category": "{{text}}",');
646
- // builder.createEdge({ source: gpt.id, target: template.id, input: 'text', output: 'text' });
647
- // const properties = SchemaAST.getPropertySignatures(EmailTriggerOutput.ast);
648
- // for (let i = 0; i < properties.length; i++) {
649
- // const propName = properties[i].name.toString();
650
- // builder.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });
651
- // templateContent.push(` "${propName}": "{{${propName}}}"` + (i === properties.length - 1 ? '' : ','));
652
- // }
653
- // templateContent.push('}');
654
- // builder
655
- // .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })
656
- // .createEdge({ source: queueId.id, target: appendToQueue.id, input: 'id' })
657
- // .createEdge({ source: gpt.id, target: appendToQueue.id, output: 'messages', input: 'items' })
658
- // .createEdge({ source: systemPrompt.id, target: gpt.id, input: 'systemPrompt' })
659
- // .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'body' })
660
- // .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });
661
- // functionTrigger = triggerShape.functionTrigger!.target!;
662
- // });
663
- // const computeModel = createComputeGraph(canvasModel);
664
- // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
665
- // invariant(templateComputeNode, 'Template compute node was not created.');
666
- // templateComputeNode.value = templateContent.join('\n');
667
- // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
668
- // templateComputeNode.inputSchema = Type.toJsonSchema(extendedSchema);
669
- // attachTrigger(functionTrigger, computeModel);
670
- // return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);
671
- // });
672
- // cb?.(objects);
673
- // return objects;
674
- // },
675
- // ],
676
- [
677
- "forex-function-call",
678
- async (space, n, cb) => {
679
- const objects = range2(n, () => {
680
- const canvasModel = CanvasGraphModel.create();
681
- canvasModel.builder.call((builder) => {
682
- const sourceCurrency = canvasModel.createNode(createConstant({
683
- value: "USD",
684
- ...position({
685
- x: -10,
686
- y: -5
687
- })
688
- }));
689
- const targetCurrency = canvasModel.createNode(createConstant({
690
- value: "EUR",
691
- ...position({
692
- x: -10,
693
- y: 5
694
- })
695
- }));
696
- const converter = canvasModel.createNode(createFunction(position({
697
- x: 0,
698
- y: 0
699
- })));
700
- const view = canvasModel.createNode(createSurface(position({
701
- x: 12,
702
- y: 0
703
- })));
704
- builder.createEdge({
705
- source: sourceCurrency.id,
706
- target: converter.id,
707
- input: "from"
708
- }).createEdge({
709
- source: targetCurrency.id,
710
- target: converter.id,
711
- input: "to"
712
- }).createEdge({
713
- source: converter.id,
714
- target: view.id,
715
- output: "rate"
716
- });
717
- });
718
- const computeModel = createComputeGraph(canvasModel);
719
- return addToSpace("forex-function-call", space, canvasModel, computeModel);
720
- });
721
- cb?.(objects);
722
- return objects;
723
- }
724
- ],
725
- [
726
- "discord-messages",
727
- async (space, n, cb) => {
728
- const objects = range2(n, () => {
729
- const canvasModel = CanvasGraphModel.create();
730
- let functionTrigger;
731
- canvasModel.builder.call((builder) => {
732
- const triggerShape = createTrigger({
733
- spaceId: space.id,
734
- triggerKind: "timer",
735
- ...position({
736
- x: -10,
737
- y: -5
738
- })
739
- });
740
- const trigger = canvasModel.createNode(triggerShape);
741
- const channelId = canvasModel.createNode(createConstant({
742
- value: "1088569858767212554",
743
- ...position({
744
- x: -10,
745
- y: 0
746
- })
747
- }));
748
- const queueId = canvasModel.createNode(createConstant({
749
- value: new DXN2(DXN2.kind.QUEUE, [
750
- "data",
751
- space.id,
752
- Key2.ObjectId.random()
753
- ]).toString(),
754
- ...position({
755
- x: -10,
756
- y: 5
757
- })
758
- }));
759
- const converter = canvasModel.createNode(createFunction(position({
760
- x: 0,
761
- y: 0
762
- })));
763
- const view = canvasModel.createNode(createText(position({
764
- x: 12,
765
- y: 0
766
- })));
767
- const queue = canvasModel.createNode(createQueue(position({
768
- x: 0,
769
- y: 12
770
- })));
771
- builder.createEdge({
772
- source: trigger.id,
773
- target: converter.id,
774
- input: "tick"
775
- }).createEdge({
776
- source: channelId.id,
777
- target: converter.id,
778
- input: "channelId"
779
- }).createEdge({
780
- source: queueId.id,
781
- target: converter.id,
782
- input: "queueId"
783
- }).createEdge({
784
- source: converter.id,
785
- target: view.id,
786
- output: "newMessages"
787
- }).createEdge({
788
- source: queueId.id,
789
- target: queue.id,
790
- input: "input"
791
- });
792
- functionTrigger = triggerShape.functionTrigger.target;
793
- });
794
- const computeModel = createComputeGraph(canvasModel);
795
- attachTrigger(functionTrigger, computeModel);
796
- return addToSpace("discord-messages", space, canvasModel, computeModel);
797
- });
798
- cb?.(objects);
799
- return objects;
800
- }
801
- ]
802
- ]
803
- });
804
- var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) => {
805
- const canvasModel = CanvasGraphModel.create();
806
- const template = canvasModel.createNode(createTemplate({
807
- valueType: "object",
808
- ...rawPosition({
809
- centerX: -64,
810
- centerY: -79,
811
- width: 320,
812
- height: 320
813
- })
814
- }));
815
- let functionTrigger;
816
- canvasModel.builder.call((builder) => {
817
- const triggerShape = createTrigger({
818
- spaceId: space.id,
819
- triggerKind,
820
- ...rawPosition({
821
- centerX: -578,
822
- centerY: -187,
823
- height: 320,
824
- width: 320
825
- })
826
- });
827
- const trigger = canvasModel.createNode(triggerShape);
828
- const { queueId } = setupQueue(space, canvasModel, {
829
- queuePosition: {
830
- centerX: -80,
831
- centerY: 378,
832
- width: 320,
833
- height: 448
834
- }
835
- });
836
- const append = canvasModel.createNode(createAppend(rawPosition({
837
- centerX: 320,
838
- centerY: 192,
839
- width: 128,
840
- height: 122
841
- })));
842
- const random = canvasModel.createNode(createRandom(rawPosition({
843
- centerX: -509,
844
- centerY: -30,
845
- width: 64,
846
- height: 64
847
- })));
848
- builder.createEdge({
849
- source: queueId.id,
850
- target: append.id,
851
- input: "id"
852
- }).createEdge({
853
- source: template.id,
854
- target: append.id,
855
- input: "items"
856
- }).createEdge({
857
- source: trigger.id,
858
- target: template.id,
859
- output: triggerOutputName,
860
- input: "type"
861
- }).createEdge({
862
- source: random.id,
863
- target: template.id,
864
- input: "changeId"
865
- });
866
- functionTrigger = triggerShape.functionTrigger.target;
867
- const triggerSpec = functionTrigger.spec;
868
- invariant(triggerSpec && triggerSpec.kind === triggerKind, "No trigger spec.", {
869
- F: __dxlog_file,
870
- L: 661,
871
- S: void 0,
872
- A: [
873
- "triggerSpec && triggerSpec.kind === triggerKind",
874
- "'No trigger spec.'"
875
- ]
876
- });
877
- initSpec(triggerSpec);
878
- });
879
- const computeModel = createComputeGraph(canvasModel);
880
- const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
881
- invariant(templateComputeNode, "Template compute node was not created.", {
882
- F: __dxlog_file,
883
- L: 668,
884
- S: void 0,
885
- A: [
886
- "templateComputeNode",
887
- "'Template compute node was not created.'"
888
- ]
889
- });
890
- templateComputeNode.value = [
891
- "{",
892
- ' "@type": "{{type}}",',
893
- ' "id": "@{{changeId}}"',
894
- "}"
895
- ].join("\n");
896
- templateComputeNode.inputSchema = Type2.toJsonSchema(Schema.Struct({
897
- type: Schema.String,
898
- changeId: Schema.String
899
- }));
900
- attachTrigger(functionTrigger, computeModel);
901
- return {
902
- canvasModel,
903
- computeModel
904
- };
905
- };
906
- var addToSpace = (name, space, canvas, compute) => {
907
- return space.db.add(Obj.make(CanvasBoardType, {
908
- name,
909
- computeGraph: Ref.make(compute.root),
910
- layout: canvas.graph
911
- }));
912
- };
913
- var setupQueue = (space, canvasModel, args) => {
914
- const queueId = canvasModel.createNode(createConstant({
915
- value: new DXN2(DXN2.kind.QUEUE, [
916
- "data",
917
- space.id,
918
- Key2.ObjectId.random()
919
- ]).toString(),
920
- ...args?.idPosition ? rawPosition(args.idPosition) : position({
921
- x: -18,
922
- y: 5,
923
- width: 8,
924
- height: 6
925
- })
926
- }));
927
- const queue = canvasModel.createNode(createQueue(args?.queuePosition ? rawPosition(args.queuePosition) : position({
928
- x: -3,
929
- y: 3,
930
- width: 14,
931
- height: 10
932
- })));
933
- canvasModel.createEdge({
934
- source: queueId.id,
935
- target: queue.id
936
- });
937
- return {
938
- queue,
939
- queueId
940
- };
941
- };
942
- var attachTrigger = (functionTrigger, computeModel) => {
943
- invariant(functionTrigger, void 0, {
944
- F: __dxlog_file,
945
- L: 707,
946
- S: void 0,
947
- A: [
948
- "functionTrigger",
949
- ""
950
- ]
951
- });
952
- functionTrigger.function = Ref.make(computeModel.root);
953
- const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT2);
954
- functionTrigger.inputNodeId = inputNode.id;
955
- };
956
- var rawPosition = (args) => {
957
- return {
958
- center: {
959
- x: args.centerX,
960
- y: args.centerY
961
- },
962
- size: {
963
- width: args.width,
964
- height: args.height
965
- }
966
- };
967
- };
968
- var position = (rect) => {
969
- const snap = 32;
970
- const [center, size] = rectToPoints({
971
- width: 0,
972
- height: 0,
973
- ...rect
974
- });
975
- const { x, y, width, height } = pointsToRect([
976
- pointMultiply(center, snap),
977
- pointMultiply(size, snap)
978
- ]);
979
- if (width && height) {
980
- return {
981
- center: {
982
- x,
983
- y
984
- },
985
- size: width && height ? {
986
- width,
987
- height
988
- } : void 0
989
- };
990
- } else {
991
- return {
992
- center: {
993
- x,
994
- y
995
- }
996
- };
997
- }
998
- };
999
-
1000
- // src/components/SpaceGenerator/SchemaTable.tsx
1001
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
1002
- import React from "react";
1003
- import { IconButton } from "@dxos/react-ui";
1004
- var SchemaTable = ({ types, objects = {}, label, onClick }) => {
1005
- var _effect = _useSignals();
1006
- try {
1007
- return /* @__PURE__ */ React.createElement("div", {
1008
- className: "grid grid-cols-[1fr_80px_40px] gap-1 overflow-none"
1009
- }, /* @__PURE__ */ React.createElement("h2", {
1010
- className: "p-2"
1011
- }, label), types.map((type) => /* @__PURE__ */ React.createElement("div", {
1012
- key: type.typename,
1013
- className: "grid grid-cols-subgrid col-span-3 items-center"
1014
- }, /* @__PURE__ */ React.createElement("div", {
1015
- className: "px-2 text-sm font-mono text-subdued"
1016
- }, type.typename), /* @__PURE__ */ React.createElement("div", {
1017
- className: "px-2 text-right font-mono"
1018
- }, objects[type.typename] ?? 0), /* @__PURE__ */ React.createElement(IconButton, {
1019
- variant: "ghost",
1020
- icon: "ph--plus--regular",
1021
- iconOnly: true,
1022
- label: "Create data",
1023
- onClick: () => onClick(type.typename)
1024
- }))));
1025
- } finally {
1026
- _effect.f();
1027
- }
1028
- };
1029
-
1030
- // src/components/SpaceGenerator/SpaceGenerator.tsx
1031
- var SpaceGenerator = ({ space, onCreateObjects }) => {
1032
- var _effect = _useSignals2();
1033
- try {
1034
- const { dispatchPromise: dispatch } = useIntentDispatcher();
1035
- const client = useClient();
1036
- const staticTypes = [
1037
- Markdown3.Document,
1038
- Diagram2.Diagram,
1039
- Sheet2.Sheet,
1040
- ComputeGraph2
1041
- ];
1042
- const recordTypes = [
1043
- DataType3.Organization,
1044
- DataType3.Person,
1045
- DataType3.Task
1046
- ];
1047
- const [count, setCount] = useState(1);
1048
- const [info, setInfo] = useState({});
1049
- const presets = useMemo(() => generator2(), []);
1050
- const typeMap = useMemo(() => {
1051
- client.addTypes([
1052
- ...staticTypes,
1053
- ...recordTypes,
1054
- ...presets.schemas
1055
- ]);
1056
- const recordGenerators = new Map(recordTypes.map((type) => [
1057
- type.typename,
1058
- createGenerator(client, dispatch, type)
1059
- ]));
1060
- return new Map([
1061
- ...staticGenerators,
1062
- ...presets.items,
1063
- ...recordGenerators
1064
- ]);
1065
- }, [
1066
- client,
1067
- recordTypes
1068
- ]);
1069
- const updateInfo = async () => {
1070
- const echoSchema = await space.db.schemaRegistry.query().run();
1071
- const staticSchema = space.db.graph.schemaRegistry.schemas;
1072
- const { objects } = await space.db.query(Filter3.everything()).run();
1073
- const objectMap = sortKeys(objects.reduce((map, obj) => {
1074
- const type = getTypename(obj);
1075
- if (type) {
1076
- const count2 = map[type] ?? 0;
1077
- map[type] = count2 + 1;
1078
- }
1079
- return map;
1080
- }, {}));
1081
- setInfo({
1082
- schema: {
1083
- static: staticSchema.length,
1084
- mutable: echoSchema.length
1085
- },
1086
- objects: objectMap
1087
- });
1088
- };
1089
- useAsyncEffect(updateInfo, [
1090
- space
1091
- ]);
1092
- const handleCreateData = useCallback(async (typename) => {
1093
- const constructor = typeMap.get(typename);
1094
- if (constructor) {
1095
- await constructor(space, count, onCreateObjects);
1096
- await updateInfo();
1097
- }
1098
- }, [
1099
- typeMap,
1100
- count
1101
- ]);
1102
- return /* @__PURE__ */ React2.createElement("div", {
1103
- role: "none",
1104
- className: "flex flex-col grow overflow-hidden"
1105
- }, /* @__PURE__ */ React2.createElement(Toolbar.Root, {
1106
- classNames: "border-be border-subduedSeparator"
1107
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
1108
- icon: "ph--arrow-clockwise--regular",
1109
- iconOnly: true,
1110
- label: "Refresh",
1111
- onClick: updateInfo
1112
- }), /* @__PURE__ */ React2.createElement(Toolbar.Separator, {
1113
- variant: "gap"
1114
- }), /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
1115
- type: "number",
1116
- min: 1,
1117
- max: 100,
1118
- placeholder: "Count",
1119
- classNames: "!w-[4rem] !text-right",
1120
- size: 8,
1121
- value: count,
1122
- onChange: (ev) => setCount(parseInt(ev.target.value))
1123
- }))), /* @__PURE__ */ React2.createElement("div", {
1124
- className: "flex flex-col overflow-y-auto divide-y divide-separator"
1125
- }, /* @__PURE__ */ React2.createElement(SchemaTable, {
1126
- types: staticTypes,
1127
- objects: info.objects,
1128
- label: "Static Types",
1129
- onClick: handleCreateData
1130
- }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1131
- types: recordTypes,
1132
- objects: info.objects,
1133
- label: "Record Types",
1134
- onClick: handleCreateData
1135
- }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1136
- types: presets.types,
1137
- objects: info.objects,
1138
- label: "Presets",
1139
- onClick: handleCreateData
1140
- }), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
1141
- language: "json",
1142
- classNames: "text-xs"
1143
- }, JSON.stringify({
1144
- space,
1145
- ...info
1146
- }, jsonKeyReplacer({
1147
- truncate: true
1148
- }), 2)))));
1149
- } finally {
1150
- _effect.f();
1151
- }
1152
- };
1153
-
1154
- // src/components/SpaceGenerator/index.ts
1155
- var SpaceGenerator_default = SpaceGenerator;
1156
- export {
1157
- SpaceGenerator_default as default
1158
- };
1159
- //# sourceMappingURL=SpaceGenerator-7Q7CX64P.mjs.map