@dxos/plugin-debug 0.8.4-main.67995b8 → 0.8.4-main.6fa680abb7

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 (197) hide show
  1. package/dist/lib/browser/DebugGraph-7HXJ2PS2.mjs +16 -0
  2. package/dist/lib/browser/DebugGraph-7HXJ2PS2.mjs.map +7 -0
  3. package/dist/lib/browser/DebugObjectPanel-3TCDNUNW.mjs +33 -0
  4. package/dist/lib/browser/DebugObjectPanel-3TCDNUNW.mjs.map +7 -0
  5. package/dist/lib/browser/DebugSettings-XNAKCV2F.mjs +174 -0
  6. package/dist/lib/browser/DebugSettings-XNAKCV2F.mjs.map +7 -0
  7. package/dist/lib/browser/DebugSpaceObjectsPanel-SIK72DXV.mjs +45 -0
  8. package/dist/lib/browser/DebugSpaceObjectsPanel-SIK72DXV.mjs.map +7 -0
  9. package/dist/lib/browser/DebugStatus-COQGH37G.mjs +125 -0
  10. package/dist/lib/browser/DebugStatus-COQGH37G.mjs.map +7 -0
  11. package/dist/lib/browser/DevtoolsOverviewContainer-C75NFVER.mjs +20 -0
  12. package/dist/lib/browser/DevtoolsOverviewContainer-C75NFVER.mjs.map +7 -0
  13. package/dist/lib/browser/{SpaceGenerator-6ZOCEREN.mjs → SpaceGenerator-Q2GH6S6D.mjs} +577 -380
  14. package/dist/lib/browser/SpaceGenerator-Q2GH6S6D.mjs.map +7 -0
  15. package/dist/lib/browser/Wireframe-KAGOKEFW.mjs +53 -0
  16. package/dist/lib/browser/Wireframe-KAGOKEFW.mjs.map +7 -0
  17. package/dist/lib/browser/app-graph-builder-FU4BCDDC.mjs +593 -0
  18. package/dist/lib/browser/app-graph-builder-FU4BCDDC.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AJA6RYN3.mjs → chunk-Q37TZWW5.mjs} +13 -3
  20. package/dist/lib/browser/chunk-Q37TZWW5.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-ZOM2FBHQ.mjs +20 -0
  22. package/dist/lib/browser/chunk-ZOM2FBHQ.mjs.map +7 -0
  23. package/dist/lib/browser/index.mjs +43 -41
  24. package/dist/lib/browser/index.mjs.map +4 -4
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/react-context-5ENRJEB2.mjs +17 -0
  27. package/dist/lib/browser/react-context-5ENRJEB2.mjs.map +7 -0
  28. package/dist/lib/browser/react-surface-5QQRQ2DT.mjs +427 -0
  29. package/dist/lib/browser/react-surface-5QQRQ2DT.mjs.map +7 -0
  30. package/dist/lib/browser/settings-XXFUM3QJ.mjs +32 -0
  31. package/dist/lib/browser/settings-XXFUM3QJ.mjs.map +7 -0
  32. package/dist/types/src/DebugPlugin.d.ts +7 -1
  33. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  35. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  37. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/index.d.ts +4 -8
  39. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  41. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  42. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  43. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/react-surface/index.d.ts +5 -0
  45. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +9 -0
  47. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  48. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  49. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  50. package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
  51. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  52. package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -0
  53. package/dist/types/src/components/SchemaTable/index.d.ts +2 -0
  54. package/dist/types/src/components/SchemaTable/index.d.ts.map +1 -0
  55. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +5 -5
  56. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  57. package/dist/types/src/components/SpaceGenerator/draw-util.d.ts.map +1 -1
  58. package/dist/types/src/components/SpaceGenerator/index.d.ts +2 -2
  59. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  60. package/dist/types/src/components/SpaceGenerator/presets.d.ts +4 -4
  61. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  62. package/dist/types/src/components/index.d.ts +2 -9
  63. package/dist/types/src/components/index.d.ts.map +1 -1
  64. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +8 -0
  65. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
  66. package/dist/types/src/containers/DebugGraph/index.d.ts +3 -0
  67. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
  68. package/dist/types/src/{components → containers/DebugObjectPanel}/DebugObjectPanel.d.ts +2 -2
  69. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
  70. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +3 -0
  71. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
  72. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +10 -0
  73. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
  74. package/dist/types/src/containers/DebugSettings/index.d.ts +3 -0
  75. package/dist/types/src/containers/DebugSettings/index.d.ts.map +1 -0
  76. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -0
  77. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
  78. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +3 -0
  79. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
  80. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
  81. package/dist/types/src/containers/DebugStatus/index.d.ts +3 -0
  82. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
  83. package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
  84. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
  85. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +3 -0
  86. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
  87. package/dist/types/src/{components → containers}/SpaceGenerator/SpaceGenerator.d.ts +2 -2
  88. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
  89. package/dist/types/src/containers/SpaceGenerator/index.d.ts +3 -0
  90. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
  91. package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +2 -2
  92. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
  93. package/dist/types/src/containers/Wireframe/index.d.ts +3 -0
  94. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
  95. package/dist/types/src/containers/index.d.ts +10 -0
  96. package/dist/types/src/containers/index.d.ts.map +1 -0
  97. package/dist/types/src/meta.d.ts +2 -3
  98. package/dist/types/src/meta.d.ts.map +1 -1
  99. package/dist/types/src/translations.d.ts +5 -1
  100. package/dist/types/src/translations.d.ts.map +1 -1
  101. package/dist/types/src/types.d.ts +40 -35
  102. package/dist/types/src/types.d.ts.map +1 -1
  103. package/dist/types/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +77 -69
  105. package/src/DebugPlugin.tsx +27 -32
  106. package/src/capabilities/app-graph-builder/app-graph-builder.ts +419 -0
  107. package/src/capabilities/app-graph-builder/index.ts +7 -0
  108. package/src/capabilities/index.ts +4 -6
  109. package/src/capabilities/react-context/index.ts +7 -0
  110. package/src/capabilities/react-context/react-context.tsx +20 -0
  111. package/src/capabilities/react-surface/index.ts +7 -0
  112. package/src/capabilities/react-surface/react-surface.tsx +413 -0
  113. package/src/capabilities/settings/index.ts +7 -0
  114. package/src/capabilities/settings/settings.ts +31 -0
  115. package/src/components/SchemaTable/index.ts +5 -0
  116. package/src/components/SpaceGenerator/ObjectGenerator.tsx +28 -36
  117. package/src/components/SpaceGenerator/draw-util.ts +5 -5
  118. package/src/components/SpaceGenerator/index.ts +2 -3
  119. package/src/components/SpaceGenerator/presets.ts +339 -53
  120. package/src/components/index.ts +2 -10
  121. package/src/containers/DebugGraph/DebugGraph.tsx +13 -0
  122. package/src/containers/DebugGraph/index.ts +7 -0
  123. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +45 -0
  124. package/src/containers/DebugObjectPanel/index.ts +7 -0
  125. package/src/containers/DebugSettings/DebugSettings.tsx +201 -0
  126. package/src/containers/DebugSettings/index.ts +7 -0
  127. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +55 -0
  128. package/src/containers/DebugSpaceObjectsPanel/index.ts +7 -0
  129. package/src/{components → containers/DebugStatus}/DebugStatus.tsx +2 -2
  130. package/src/containers/DebugStatus/index.ts +7 -0
  131. package/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.tsx +2 -4
  132. package/src/containers/DevtoolsOverviewContainer/index.ts +7 -0
  133. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +127 -0
  134. package/src/containers/SpaceGenerator/index.ts +7 -0
  135. package/src/{components → containers/Wireframe}/Wireframe.tsx +7 -7
  136. package/src/containers/Wireframe/index.ts +7 -0
  137. package/src/containers/index.ts +14 -0
  138. package/src/meta.ts +8 -7
  139. package/src/translations.ts +5 -1
  140. package/src/types.ts +10 -3
  141. package/dist/lib/browser/DebugApp-ZDL4CPY5.mjs +0 -228
  142. package/dist/lib/browser/DebugApp-ZDL4CPY5.mjs.map +0 -7
  143. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs +0 -25
  144. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs.map +0 -7
  145. package/dist/lib/browser/SpaceGenerator-6ZOCEREN.mjs.map +0 -7
  146. package/dist/lib/browser/app-graph-builder-SQXFD2BL.mjs +0 -597
  147. package/dist/lib/browser/app-graph-builder-SQXFD2BL.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-5XPIRNQS.mjs +0 -18
  149. package/dist/lib/browser/chunk-5XPIRNQS.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-AJA6RYN3.mjs.map +0 -7
  151. package/dist/lib/browser/react-context-NVAGLAJD.mjs +0 -16
  152. package/dist/lib/browser/react-context-NVAGLAJD.mjs.map +0 -7
  153. package/dist/lib/browser/react-surface-CHHHE5CF.mjs +0 -768
  154. package/dist/lib/browser/react-surface-CHHHE5CF.mjs.map +0 -7
  155. package/dist/lib/browser/settings-LSSWLM5I.mjs +0 -22
  156. package/dist/lib/browser/settings-LSSWLM5I.mjs.map +0 -7
  157. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  158. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  159. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  160. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  161. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  162. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  163. package/dist/types/src/capabilities/settings.d.ts +0 -4
  164. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  165. package/dist/types/src/components/Container.d.ts +0 -5
  166. package/dist/types/src/components/Container.d.ts.map +0 -1
  167. package/dist/types/src/components/DebugApp/DebugApp.d.ts +0 -6
  168. package/dist/types/src/components/DebugApp/DebugApp.d.ts.map +0 -1
  169. package/dist/types/src/components/DebugApp/Tree.d.ts +0 -18
  170. package/dist/types/src/components/DebugApp/Tree.d.ts.map +0 -1
  171. package/dist/types/src/components/DebugApp/index.d.ts +0 -3
  172. package/dist/types/src/components/DebugApp/index.d.ts.map +0 -1
  173. package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
  174. package/dist/types/src/components/DebugSettings.d.ts +0 -6
  175. package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
  176. package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
  177. package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
  178. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
  179. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +0 -1
  180. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -6
  181. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
  182. package/dist/types/src/components/Wireframe.d.ts.map +0 -1
  183. package/src/capabilities/app-graph-builder.ts +0 -457
  184. package/src/capabilities/react-context.tsx +0 -16
  185. package/src/capabilities/react-surface.tsx +0 -397
  186. package/src/capabilities/settings.ts +0 -19
  187. package/src/components/Container.tsx +0 -15
  188. package/src/components/DebugApp/DebugApp.tsx +0 -84
  189. package/src/components/DebugApp/Tree.tsx +0 -103
  190. package/src/components/DebugApp/index.ts +0 -7
  191. package/src/components/DebugObjectPanel.tsx +0 -35
  192. package/src/components/DebugSettings.tsx +0 -151
  193. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -52
  194. package/src/components/SpaceGenerator/SpaceGenerator.tsx +0 -122
  195. /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
  196. /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +0 -0
  197. /package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +0 -0
@@ -1,263 +1,281 @@
1
- // src/components/SpaceGenerator/SpaceGenerator.tsx
2
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
1
+ // src/containers/SpaceGenerator/SpaceGenerator.tsx
3
2
  import React2, { useCallback, useMemo, useState } from "react";
4
- import { useIntentDispatcher } from "@dxos/app-framework";
3
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
5
4
  import { ComputeGraph as ComputeGraph2 } from "@dxos/conductor";
6
- import { Filter as Filter2 } from "@dxos/echo";
7
- import { Markdown as Markdown2 } from "@dxos/plugin-markdown/types";
8
- import { SheetType as SheetType2 } from "@dxos/plugin-sheet/types";
9
- import { DiagramType as DiagramType2 } from "@dxos/plugin-sketch/types";
5
+ import { Filter as Filter3, Obj as Obj2 } from "@dxos/echo";
6
+ import { Markdown as Markdown3 } from "@dxos/plugin-markdown/types";
7
+ import { Sheet as Sheet2 } from "@dxos/plugin-sheet/types";
8
+ import { Sketch as Sketch2 } from "@dxos/plugin-sketch/types";
10
9
  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";
10
+ import { IconButton as IconButton2, Input, Panel, ScrollArea, Toolbar, useAsyncEffect } from "@dxos/react-ui";
13
11
  import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
14
- import { DataType as DataType2 } from "@dxos/schema";
12
+ import { Organization as Organization2, Person as Person2, Task } from "@dxos/types";
15
13
  import { jsonKeyReplacer, sortKeys } from "@dxos/util";
16
14
 
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, Obj, Ref, Type } from "@dxos/echo";
22
- import { Markdown } from "@dxos/plugin-markdown/types";
23
- import { createSheet } from "@dxos/plugin-sheet/types";
24
- import { SheetType } from "@dxos/plugin-sheet/types";
25
- import { CanvasType, DiagramType } from "@dxos/plugin-sketch/types";
26
- import { SpaceAction } from "@dxos/plugin-space/types";
27
- import { faker } from "@dxos/random";
28
- import { DataType } from "@dxos/schema";
29
- import { createAsyncGenerator } from "@dxos/schema/testing";
30
- import { range } from "@dxos/util";
31
- var generator = faker;
32
- var findViewByTypename = async (views, typename) => {
33
- return views.find((view) => view.query.typename === typename);
34
- };
35
- var createGenerator = (client, dispatch, schema) => {
36
- return async (space, n, cb) => {
37
- const typename = schema.typename;
38
- const { objects: views } = await space.db.query(Filter.type(DataType.View)).run();
39
- const view = await findViewByTypename(views, typename);
40
- const staticSchema = client?.graph.schemaRegistry.schemas.find((schema2) => Type.getTypename(schema2) === typename);
41
- if (!view && !staticSchema) {
42
- await dispatch(createIntent(SpaceAction.AddSchema, {
43
- space,
44
- schema
45
- }));
46
- } else if (!view && staticSchema) {
47
- await dispatch(createIntent(SpaceAction.UseStaticSchema, {
48
- space,
49
- typename
50
- }));
51
- }
52
- const generate = createAsyncGenerator(generator, schema, {
53
- db: space.db
54
- });
55
- return generate.createObjects(n);
56
- };
57
- };
58
- var staticGenerators = /* @__PURE__ */ new Map([
59
- [
60
- Markdown.Document.typename,
61
- async (space, n, cb) => {
62
- const objects = range(n).map(() => {
63
- return space.db.add(Markdown.makeDocument({
64
- name: faker.commerce.productName(),
65
- content: faker.lorem.sentences(5)
66
- }));
67
- });
68
- cb?.(objects);
69
- return objects;
70
- }
71
- ],
72
- [
73
- DiagramType.typename,
74
- async (space, n, cb) => {
75
- const objects = range(n).map(() => {
76
- const obj = space.db.add(Obj.make(DiagramType, {
77
- name: faker.commerce.productName(),
78
- canvas: Ref.make(Obj.make(CanvasType, {
79
- content: {}
80
- }))
81
- }));
82
- return obj;
83
- });
84
- cb?.(objects);
85
- return objects;
86
- }
87
- ],
88
- // TODO(burdon): Create unit tests.
89
- [
90
- SheetType.typename,
91
- async (space, n, cb) => {
92
- const objects = range(n).map(() => {
93
- const cells = {};
94
- const year = (/* @__PURE__ */ new Date()).getFullYear();
95
- const cols = 4;
96
- const rows = 16;
97
- for (let col = 1; col <= cols; col++) {
98
- for (let row = 1; row <= rows; row++) {
99
- const cell = addressToA1Notation({
100
- col,
101
- row
102
- });
103
- if (row === 1) {
104
- cells[cell] = {
105
- value: `${year} Q${col}`
106
- };
107
- } else if (row === rows) {
108
- const from = addressToA1Notation({
109
- col,
110
- row: 2
111
- });
112
- const to = addressToA1Notation({
113
- col,
114
- row: rows - 1
115
- });
116
- cells[cell] = {
117
- value: `=SUM(${from}:${to})`
118
- };
119
- } else if (row > 2 && row < rows - 1) {
120
- cells[cell] = {
121
- value: Math.floor(Math.random() * 1e4)
122
- };
123
- }
124
- }
125
- }
126
- return space.db.add(createSheet({
127
- name: faker.commerce.productName(),
128
- cells
129
- }));
130
- });
131
- cb?.(objects);
132
- return objects;
133
- }
134
- ],
135
- [
136
- ComputeGraph.typename,
137
- async (space, n, cb) => {
138
- const objects = range(n, () => {
139
- const model = ComputeGraphModel.create();
140
- model.builder.createNode({
141
- id: "gpt-INPUT",
142
- type: NODE_INPUT
143
- }).createNode({
144
- id: "gpt-GPT",
145
- type: "gpt"
146
- }).createNode({
147
- id: "gpt-QUEUE_ID",
148
- type: "constant",
149
- value: new DXN(DXN.kind.QUEUE, [
150
- "data",
151
- space.id,
152
- Key.ObjectId.random()
153
- ]).toString()
154
- }).createNode({
155
- id: "gpt-APPEND",
156
- type: "append"
157
- }).createNode({
158
- id: "gpt-OUTPUT",
159
- type: NODE_OUTPUT
160
- }).createEdge({
161
- node: "gpt-INPUT",
162
- property: "prompt"
163
- }, {
164
- node: "gpt-GPT",
165
- property: "prompt"
166
- }).createEdge({
167
- node: "gpt-GPT",
168
- property: "text"
169
- }, {
170
- node: "gpt-OUTPUT",
171
- property: "text"
172
- }).createEdge({
173
- node: "gpt-QUEUE_ID",
174
- property: DEFAULT_OUTPUT
175
- }, {
176
- node: "gpt-APPEND",
177
- property: "id"
178
- }).createEdge({
179
- node: "gpt-GPT",
180
- property: "messages"
181
- }, {
182
- node: "gpt-APPEND",
183
- property: "items"
184
- }).createEdge({
185
- node: "gpt-QUEUE_ID",
186
- property: DEFAULT_OUTPUT
187
- }, {
188
- node: "gpt-OUTPUT",
189
- property: "queue"
190
- });
191
- return space.db.add(model.root);
192
- });
193
- cb?.(objects);
194
- return objects;
195
- }
196
- ]
197
- ]);
198
-
199
- // src/components/SpaceGenerator/SchemaTable.tsx
200
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
15
+ // src/components/SchemaTable/SchemaTable.tsx
201
16
  import React from "react";
202
17
  import { IconButton } from "@dxos/react-ui";
203
18
  var SchemaTable = ({ types, objects = {}, label, onClick }) => {
204
- var _effect = _useSignals();
205
- try {
206
- return /* @__PURE__ */ React.createElement("div", {
207
- className: "grid grid-cols-[1fr_80px_40px] gap-1 overflow-none"
208
- }, /* @__PURE__ */ React.createElement("h2", {
209
- className: "p-2"
210
- }, label), types.map((type) => /* @__PURE__ */ React.createElement("div", {
211
- key: type.typename,
212
- className: "grid grid-cols-subgrid col-span-3 items-center"
213
- }, /* @__PURE__ */ React.createElement("div", {
214
- className: "px-2 text-sm font-mono text-subdued"
215
- }, type.typename), /* @__PURE__ */ React.createElement("div", {
216
- className: "px-2 text-right font-mono"
217
- }, objects[type.typename] ?? 0), /* @__PURE__ */ React.createElement(IconButton, {
218
- variant: "ghost",
219
- icon: "ph--plus--regular",
220
- iconOnly: true,
221
- label: "Create data",
222
- onClick: () => onClick(type.typename)
223
- }))));
224
- } finally {
225
- _effect.f();
226
- }
19
+ return /* @__PURE__ */ React.createElement("div", {
20
+ className: "grid grid-cols-[1fr_80px_40px] gap-1 overflow-none"
21
+ }, /* @__PURE__ */ React.createElement("h2", {
22
+ className: "p-2"
23
+ }, label), types.map((type) => /* @__PURE__ */ React.createElement("div", {
24
+ key: type.typename,
25
+ className: "grid grid-cols-subgrid col-span-3 items-center"
26
+ }, /* @__PURE__ */ React.createElement("div", {
27
+ className: "px-2 text-sm font-mono text-subdued"
28
+ }, type.typename), /* @__PURE__ */ React.createElement("div", {
29
+ className: "px-2 text-right font-mono"
30
+ }, objects[type.typename] ?? 0), /* @__PURE__ */ React.createElement(IconButton, {
31
+ variant: "ghost",
32
+ icon: "ph--plus--regular",
33
+ iconOnly: true,
34
+ label: "Create data",
35
+ onClick: () => onClick(type.typename)
36
+ }))));
227
37
  };
228
38
 
229
39
  // src/components/SpaceGenerator/presets.ts
230
- import { Schema } from "effect";
231
- import { NODE_INPUT as NODE_INPUT2 } from "@dxos/conductor";
232
- import { DXN as DXN2, Key as Key2, Obj as Obj2, Ref as Ref2, Type as Type2 } from "@dxos/echo";
233
- import { FunctionTrigger, TriggerKind } from "@dxos/functions";
40
+ import * as Schema from "effect/Schema";
41
+ import { AgentFunctions, EntityExtractionFunctions, ResearchBlueprint } from "@dxos/assistant-toolkit";
42
+ import { Prompt } from "@dxos/blueprints";
43
+ import { NODE_INPUT } from "@dxos/conductor";
44
+ import { DXN, Feed, Filter, JsonSchema, Key, Obj, Query, Ref, Tag } from "@dxos/echo";
45
+ import { Trigger, serializeFunction } from "@dxos/functions";
234
46
  import { invariant } from "@dxos/invariant";
235
- import { createAppend, createChat, createComputeGraph, createConstant, createFunction, createGpt, createQueue, createSurface, createRandom, createTemplate, createText, createTrigger } from "@dxos/react-ui-canvas-compute";
236
- import { CanvasBoardType, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from "@dxos/react-ui-canvas-editor";
237
- import { range as range2 } from "@dxos/util";
47
+ import { GmailFunctions } from "@dxos/plugin-inbox";
48
+ import { Mailbox } from "@dxos/plugin-inbox/types";
49
+ import { Markdown } from "@dxos/plugin-markdown/types";
50
+ import { createAppend, createChat, createComputeGraph, createConstant, createFunction, createGpt, createQueue, createRandom, createSurface, createTemplate, createText, createTrigger } from "@dxos/react-ui-canvas-compute";
51
+ import { CanvasBoard, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from "@dxos/react-ui-canvas-editor";
52
+ import { ViewModel } from "@dxos/schema";
53
+ import { Message, Organization, Person, Pipeline } from "@dxos/types";
54
+ import { range, trim } from "@dxos/util";
238
55
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/components/SpaceGenerator/presets.ts";
239
- var PresetName = /* @__PURE__ */ function(PresetName2) {
56
+ var PresetName = /* @__PURE__ */ (function(PresetName2) {
57
+ PresetName2["DXOS_TEAM"] = "dxos-team";
58
+ PresetName2["ORG_RESEARCH_PROJECT"] = "org-research-project";
240
59
  PresetName2["GPT_QUEUE"] = "webhook-gpt-queue";
241
60
  PresetName2["CHAT_GPT"] = "chat-gpt-text";
242
61
  PresetName2["OBJECT_CHANGE_QUEUE"] = "objectChange-queue";
243
- PresetName2["FOREX_FUNCTION_CALL"] = "forex-function-call";
244
62
  PresetName2["TIMER_TICK_QUEUE"] = "timerTick-queue";
63
+ PresetName2["FOREX_FUNCTION_CALL"] = "forex-function-call";
245
64
  PresetName2["DISCORD_MESSAGES"] = "discord-messages";
246
65
  return PresetName2;
247
- }({});
248
- var generator2 = () => ({
66
+ })({});
67
+ var generator = () => ({
249
68
  schemas: [
250
- CanvasBoardType,
251
- FunctionTrigger
69
+ CanvasBoard.CanvasBoard,
70
+ Trigger.Trigger
252
71
  ],
253
72
  types: Object.values(PresetName).map((name) => ({
254
73
  typename: name
255
74
  })),
256
75
  items: [
76
+ [
77
+ "dxos-team",
78
+ async (space, n, cb) => {
79
+ const objects = range(n, () => {
80
+ const org = space.db.add(Obj.make(Organization.Organization, {
81
+ name: "DXOS",
82
+ website: "https://dxos.org"
83
+ }));
84
+ const doc = space.db.add(Markdown.make({
85
+ name: "DXOS Research",
86
+ content: "DXOS builds Composer, an open-source AI-powered malleable application."
87
+ }));
88
+ const tag = space.db.add(Tag.make({
89
+ label: "Investor"
90
+ }));
91
+ const tagDxn = Obj.getDXN(tag).toString();
92
+ Obj.change(doc, (d) => {
93
+ Obj.getMeta(d).tags = [
94
+ tagDxn
95
+ ];
96
+ });
97
+ space.db.add(Obj.make(Person.Person, {
98
+ [Obj.Meta]: {
99
+ tags: [
100
+ tagDxn
101
+ ]
102
+ },
103
+ fullName: "Rich",
104
+ organization: Ref.make(org)
105
+ }));
106
+ space.db.add(Obj.make(Person.Person, {
107
+ fullName: "Josiah",
108
+ organization: Ref.make(org)
109
+ }));
110
+ space.db.add(Obj.make(Person.Person, {
111
+ fullName: "Dima",
112
+ organization: Ref.make(org)
113
+ }));
114
+ space.db.add(Obj.make(Person.Person, {
115
+ fullName: "Mykola",
116
+ organization: Ref.make(org)
117
+ }));
118
+ return doc;
119
+ });
120
+ cb?.(objects);
121
+ return objects;
122
+ }
123
+ ],
124
+ [
125
+ "org-research-project",
126
+ async (space, n, cb) => {
127
+ const mailboxes = await space.db.query(Filter.type(Mailbox.Mailbox)).run();
128
+ const mailbox = mailboxes[0];
129
+ invariant(mailbox, "Mailbox not found", {
130
+ F: __dxlog_file,
131
+ L: 121,
132
+ S: void 0,
133
+ A: [
134
+ "mailbox",
135
+ "'Mailbox not found'"
136
+ ]
137
+ });
138
+ const mailboxFeed = await mailbox.feed?.tryLoad();
139
+ invariant(mailboxFeed, "Mailbox missing feed reference", {
140
+ F: __dxlog_file,
141
+ L: 123,
142
+ S: void 0,
143
+ A: [
144
+ "mailboxFeed",
145
+ "'Mailbox missing feed reference'"
146
+ ]
147
+ });
148
+ const queueDxn = Feed.getQueueDxn(mailboxFeed)?.toString();
149
+ invariant(queueDxn, "Mailbox feed missing queue DXN key", {
150
+ F: __dxlog_file,
151
+ L: 125,
152
+ S: void 0,
153
+ A: [
154
+ "queueDxn",
155
+ "'Mailbox feed missing queue DXN key'"
156
+ ]
157
+ });
158
+ const tag = await space.db.query(Filter.type(Tag.Tag, {
159
+ label: "Investor"
160
+ })).first();
161
+ const tagDxn = Obj.getDXN(tag).toString();
162
+ const objects = range(n, () => {
163
+ const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagDxn));
164
+ const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagDxn));
165
+ const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagDxn));
166
+ space.db.add(Trigger.make({
167
+ enabled: true,
168
+ spec: {
169
+ kind: "timer",
170
+ cron: "* * * * *"
171
+ },
172
+ function: Ref.make(serializeFunction(GmailFunctions.Sync)),
173
+ input: {
174
+ mailbox: Ref.make(mailbox)
175
+ }
176
+ }));
177
+ space.db.add(Trigger.make({
178
+ enabled: true,
179
+ // TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
180
+ spec: {
181
+ kind: "queue",
182
+ queue: queueDxn
183
+ },
184
+ function: Ref.make(serializeFunction(EntityExtractionFunctions.Extract)),
185
+ input: {
186
+ source: "{{event.item}}"
187
+ }
188
+ }));
189
+ const researchPrompt = space.db.add(Prompt.make({
190
+ name: "Research",
191
+ description: "Research organization",
192
+ input: Schema.Struct({
193
+ org: Schema.Any
194
+ }),
195
+ output: Schema.Any,
196
+ // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.
197
+ // Remove the mock prompt to do the actual research.
198
+ instructions: trim`
199
+ Research the organization provided as input.
200
+ Create a research note for it at the end.
201
+ NOTE: Do mocked reseach (set mockSearch to true).
202
+ `,
203
+ blueprints: [
204
+ Ref.make(ResearchBlueprint.make())
205
+ ]
206
+ }));
207
+ space.db.add(Trigger.make({
208
+ enabled: true,
209
+ spec: {
210
+ kind: "subscription",
211
+ query: {
212
+ ast: organizationsQuery.ast
213
+ }
214
+ },
215
+ function: Ref.make(serializeFunction(AgentFunctions.Prompt)),
216
+ input: {
217
+ prompt: Ref.make(researchPrompt),
218
+ input: "{{event.subject}}"
219
+ }
220
+ }));
221
+ const mailboxView = ViewModel.make({
222
+ query: Query.select(Filter.type(Message.Message, {
223
+ properties: {
224
+ labels: Filter.contains("investor")
225
+ }
226
+ })).from({
227
+ queues: [
228
+ queueDxn
229
+ ]
230
+ }),
231
+ jsonSchema: JsonSchema.toJsonSchema(Message.Message)
232
+ });
233
+ const contactsView = ViewModel.make({
234
+ query: contactsQuery,
235
+ jsonSchema: JsonSchema.toJsonSchema(Person.Person)
236
+ });
237
+ const organizationsView = ViewModel.make({
238
+ query: organizationsQuery,
239
+ jsonSchema: JsonSchema.toJsonSchema(Organization.Organization)
240
+ });
241
+ const notesView = ViewModel.make({
242
+ query: notesQuery,
243
+ jsonSchema: JsonSchema.toJsonSchema(Markdown.Document)
244
+ });
245
+ return space.db.add(Pipeline.make({
246
+ name: "Investor Research",
247
+ columns: [
248
+ {
249
+ name: "Mailbox",
250
+ view: Ref.make(mailboxView),
251
+ order: []
252
+ },
253
+ {
254
+ name: "Contacts",
255
+ view: Ref.make(contactsView),
256
+ order: []
257
+ },
258
+ {
259
+ name: "Organizations",
260
+ view: Ref.make(organizationsView),
261
+ order: []
262
+ },
263
+ {
264
+ name: "Notes",
265
+ view: Ref.make(notesView),
266
+ order: []
267
+ }
268
+ ]
269
+ }));
270
+ });
271
+ cb?.(objects.flat());
272
+ return objects.flat();
273
+ }
274
+ ],
257
275
  [
258
276
  "webhook-gpt-queue",
259
277
  async (space, n, cb) => {
260
- const objects = range2(n, () => {
278
+ const objects = range(n, () => {
261
279
  const canvasModel = CanvasGraphModel.create();
262
280
  let functionTrigger;
263
281
  canvasModel.builder.call((builder) => {
@@ -267,7 +285,7 @@ var generator2 = () => ({
267
285
  })));
268
286
  const triggerShape = createTrigger({
269
287
  spaceId: space.id,
270
- triggerKind: TriggerKind.Webhook,
288
+ triggerKind: "webhook",
271
289
  ...position({
272
290
  x: -18,
273
291
  y: -2
@@ -317,9 +335,9 @@ var generator2 = () => ({
317
335
  [
318
336
  "objectChange-queue",
319
337
  async (space, n, cb) => {
320
- const objects = range2(n, () => {
321
- const { canvasModel, computeModel } = createQueueSinkPreset(space, TriggerKind.Subscription, (triggerSpec) => triggerSpec.filter = {
322
- type: "dxn:type:dxos.org/type/Chess"
338
+ const objects = range(n, () => {
339
+ const { canvasModel, computeModel } = createQueueSinkPreset(space, "subscription", (triggerSpec) => triggerSpec.query = {
340
+ ast: Query.select(Filter.typename("org.dxos.type.chess")).ast
323
341
  }, "type");
324
342
  return addToSpace("objectChange-queue", space, canvasModel, computeModel);
325
343
  });
@@ -330,8 +348,8 @@ var generator2 = () => ({
330
348
  [
331
349
  "timerTick-queue",
332
350
  async (space, n, cb) => {
333
- const objects = range2(n, () => {
334
- const { canvasModel, computeModel } = createQueueSinkPreset(space, TriggerKind.Timer, (triggerSpec) => triggerSpec.cron = "*/5 * * * * *", "result");
351
+ const objects = range(n, () => {
352
+ const { canvasModel, computeModel } = createQueueSinkPreset(space, "timer", (triggerSpec) => triggerSpec.cron = "*/5 * * * * *", "result");
335
353
  return addToSpace("timerTick-queue", space, canvasModel, computeModel);
336
354
  });
337
355
  cb?.(objects);
@@ -358,7 +376,7 @@ var generator2 = () => ({
358
376
  // canvasModel.builder.call((builder) => {
359
377
  // const triggerShape = createTrigger({
360
378
  // spaceId: space.id,
361
- // triggerKind: TriggerKind.Email,
379
+ // triggerKind: 'email',
362
380
  // ...position({ x: -18, y: -2 }),
363
381
  // });
364
382
  // const trigger = canvasModel.createNode(triggerShape);
@@ -385,7 +403,7 @@ var generator2 = () => ({
385
403
  // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
386
404
  // invariant(templateComputeNode, 'Template compute node was not created.');
387
405
  // templateComputeNode.value = templateContent.join('\n');
388
- // templateComputeNode.inputSchema = Type.toJsonSchema(EmailTriggerOutput);
406
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
389
407
  // attachTrigger(functionTrigger, computeModel);
390
408
  // return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);
391
409
  // });
@@ -396,7 +414,7 @@ var generator2 = () => ({
396
414
  [
397
415
  "chat-gpt-text",
398
416
  async (space, n, cb) => {
399
- const objects = range2(n, () => {
417
+ const objects = range(n, () => {
400
418
  const canvasModel = CanvasGraphModel.create();
401
419
  canvasModel.builder.call((builder) => {
402
420
  const gpt = canvasModel.createNode(createGpt(position({
@@ -473,7 +491,7 @@ var generator2 = () => ({
473
491
  // );
474
492
  // const triggerShape = createTrigger({
475
493
  // spaceId: space.id,
476
- // triggerKind: TriggerKind.Email,
494
+ // triggerKind: 'email',
477
495
  // ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),
478
496
  // });
479
497
  // const trigger = canvasModel.createNode(triggerShape);
@@ -516,7 +534,7 @@ var generator2 = () => ({
516
534
  // invariant(templateComputeNode, 'Template compute node was not created.');
517
535
  // templateComputeNode.value = templateContent.join('\n');
518
536
  // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
519
- // templateComputeNode.inputSchema = Type.toJsonSchema(extendedSchema);
537
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
520
538
  // attachTrigger(functionTrigger, computeModel);
521
539
  // return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);
522
540
  // });
@@ -527,7 +545,7 @@ var generator2 = () => ({
527
545
  [
528
546
  "forex-function-call",
529
547
  async (space, n, cb) => {
530
- const objects = range2(n, () => {
548
+ const objects = range(n, () => {
531
549
  const canvasModel = CanvasGraphModel.create();
532
550
  canvasModel.builder.call((builder) => {
533
551
  const sourceCurrency = canvasModel.createNode(createConstant({
@@ -576,13 +594,13 @@ var generator2 = () => ({
576
594
  [
577
595
  "discord-messages",
578
596
  async (space, n, cb) => {
579
- const objects = range2(n, () => {
597
+ const objects = range(n, () => {
580
598
  const canvasModel = CanvasGraphModel.create();
581
599
  let functionTrigger;
582
600
  canvasModel.builder.call((builder) => {
583
601
  const triggerShape = createTrigger({
584
602
  spaceId: space.id,
585
- triggerKind: TriggerKind.Timer,
603
+ triggerKind: "timer",
586
604
  ...position({
587
605
  x: -10,
588
606
  y: -5
@@ -597,10 +615,10 @@ var generator2 = () => ({
597
615
  })
598
616
  }));
599
617
  const queueId = canvasModel.createNode(createConstant({
600
- value: new DXN2(DXN2.kind.QUEUE, [
618
+ value: new DXN(DXN.kind.QUEUE, [
601
619
  "data",
602
620
  space.id,
603
- Key2.ObjectId.random()
621
+ Key.ObjectId.random()
604
622
  ]).toString(),
605
623
  ...position({
606
624
  x: -10,
@@ -718,20 +736,22 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
718
736
  const triggerSpec = functionTrigger.spec;
719
737
  invariant(triggerSpec && triggerSpec.kind === triggerKind, "No trigger spec.", {
720
738
  F: __dxlog_file,
721
- L: 496,
739
+ L: 764,
722
740
  S: void 0,
723
741
  A: [
724
742
  "triggerSpec && triggerSpec.kind === triggerKind",
725
743
  "'No trigger spec.'"
726
744
  ]
727
745
  });
728
- initSpec(triggerSpec);
746
+ Obj.change(functionTrigger, (ft) => {
747
+ initSpec(ft.spec);
748
+ });
729
749
  });
730
750
  const computeModel = createComputeGraph(canvasModel);
731
751
  const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
732
752
  invariant(templateComputeNode, "Template compute node was not created.", {
733
753
  F: __dxlog_file,
734
- L: 503,
754
+ L: 773,
735
755
  S: void 0,
736
756
  A: [
737
757
  "templateComputeNode",
@@ -744,7 +764,7 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
744
764
  ' "id": "@{{changeId}}"',
745
765
  "}"
746
766
  ].join("\n");
747
- templateComputeNode.inputSchema = Type2.toJsonSchema(Schema.Struct({
767
+ templateComputeNode.inputSchema = JsonSchema.toJsonSchema(Schema.Struct({
748
768
  type: Schema.String,
749
769
  changeId: Schema.String
750
770
  }));
@@ -755,18 +775,18 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
755
775
  };
756
776
  };
757
777
  var addToSpace = (name, space, canvas, compute) => {
758
- return space.db.add(Obj2.make(CanvasBoardType, {
778
+ return space.db.add(Obj.make(CanvasBoard.CanvasBoard, {
759
779
  name,
760
- computeGraph: Ref2.make(compute.root),
780
+ computeGraph: Ref.make(compute.root),
761
781
  layout: canvas.graph
762
782
  }));
763
783
  };
764
784
  var setupQueue = (space, canvasModel, args) => {
765
785
  const queueId = canvasModel.createNode(createConstant({
766
- value: new DXN2(DXN2.kind.QUEUE, [
786
+ value: new DXN(DXN.kind.QUEUE, [
767
787
  "data",
768
788
  space.id,
769
- Key2.ObjectId.random()
789
+ Key.ObjectId.random()
770
790
  ]).toString(),
771
791
  ...args?.idPosition ? rawPosition(args.idPosition) : position({
772
792
  x: -18,
@@ -793,16 +813,18 @@ var setupQueue = (space, canvasModel, args) => {
793
813
  var attachTrigger = (functionTrigger, computeModel) => {
794
814
  invariant(functionTrigger, void 0, {
795
815
  F: __dxlog_file,
796
- L: 542,
816
+ L: 815,
797
817
  S: void 0,
798
818
  A: [
799
819
  "functionTrigger",
800
820
  ""
801
821
  ]
802
822
  });
803
- functionTrigger.function = Ref2.make(computeModel.root);
804
- const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT2);
805
- functionTrigger.inputNodeId = inputNode.id;
823
+ const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT);
824
+ Obj.change(functionTrigger, (t) => {
825
+ t.function = Ref.make(computeModel.root);
826
+ t.inputNodeId = inputNode.id;
827
+ });
806
828
  };
807
829
  var rawPosition = (args) => {
808
830
  return {
@@ -848,134 +870,309 @@ var position = (rect) => {
848
870
  }
849
871
  };
850
872
 
851
- // src/components/SpaceGenerator/SpaceGenerator.tsx
852
- var SpaceGenerator = ({ space, onCreateObjects }) => {
853
- var _effect = _useSignals2();
854
- try {
855
- const { dispatchPromise: dispatch } = useIntentDispatcher();
856
- const client = useClient();
857
- const staticTypes = [
858
- Markdown2.Document,
859
- DiagramType2,
860
- SheetType2,
861
- ComputeGraph2
862
- ];
863
- const recordTypes = [
864
- DataType2.Organization,
865
- DataType2.Project,
866
- DataType2.Person,
867
- DataType2.Message
868
- ];
869
- const [count, setCount] = useState(1);
870
- const [info, setInfo] = useState({});
871
- const presets = useMemo(() => generator2(), []);
872
- const typeMap = useMemo(() => {
873
- client.addTypes([
874
- ...staticTypes,
875
- ...recordTypes,
876
- ...presets.schemas
877
- ]);
878
- const recordGenerators = new Map(recordTypes.map((type) => [
879
- type.typename,
880
- createGenerator(client, dispatch, type)
881
- ]));
882
- return new Map([
883
- ...staticGenerators,
884
- ...presets.items,
885
- ...recordGenerators
886
- ]);
887
- }, [
888
- client,
889
- recordTypes
890
- ]);
891
- const updateInfo = async () => {
892
- const echoSchema = await space.db.schemaRegistry.query().run();
893
- const staticSchema = space.db.graph.schemaRegistry.schemas;
894
- const { objects } = await space.db.query(Filter2.everything()).run();
895
- const objectMap = sortKeys(objects.reduce((map, obj) => {
896
- const type = getTypename(obj);
897
- if (type) {
898
- const count2 = map[type] ?? 0;
899
- map[type] = count2 + 1;
873
+ // src/components/SpaceGenerator/ObjectGenerator.tsx
874
+ import { addressToA1Notation } from "@dxos/compute";
875
+ import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT as NODE_INPUT2, NODE_OUTPUT } from "@dxos/conductor";
876
+ import { DXN as DXN2, Filter as Filter2, Key as Key2 } from "@dxos/echo";
877
+ import { View } from "@dxos/echo";
878
+ import { Markdown as Markdown2 } from "@dxos/plugin-markdown/types";
879
+ import { Sheet } from "@dxos/plugin-sheet/types";
880
+ import { Sketch } from "@dxos/plugin-sketch/types";
881
+ import { SpaceOperation } from "@dxos/plugin-space/types";
882
+ import { faker } from "@dxos/random";
883
+ import { getTypenameFromQuery } from "@dxos/schema";
884
+ import { createAsyncGenerator } from "@dxos/schema/testing";
885
+ import { range as range2 } from "@dxos/util";
886
+ var generator2 = faker;
887
+ var findViewByTypename = async (views, typename) => {
888
+ return views.find((view) => getTypenameFromQuery(view.query.ast) === typename);
889
+ };
890
+ var createGenerator = (client, invokePromise, schema) => {
891
+ return async (space, n) => {
892
+ const typename = schema.typename;
893
+ const views = await space.db.query(Filter2.type(View.View)).run();
894
+ const view = await findViewByTypename(views, typename);
895
+ const staticSchema = client?.graph.schemaRegistry.query({
896
+ typename
897
+ }).runSync()[0];
898
+ if (!view && !staticSchema) {
899
+ await invokePromise(SpaceOperation.AddSchema, {
900
+ db: space.db,
901
+ schema,
902
+ show: false
903
+ });
904
+ }
905
+ const generate = createAsyncGenerator(generator2, schema, {
906
+ db: space.db
907
+ });
908
+ return generate.createObjects(n);
909
+ };
910
+ };
911
+ var staticGenerators = /* @__PURE__ */ new Map([
912
+ [
913
+ Markdown2.Document.typename,
914
+ async (space, n, cb) => {
915
+ const objects = range2(n).map(() => {
916
+ return space.db.add(Markdown2.make({
917
+ name: faker.commerce.productName(),
918
+ content: faker.lorem.sentences(5)
919
+ }));
920
+ });
921
+ cb?.(objects);
922
+ return objects;
923
+ }
924
+ ],
925
+ [
926
+ Sketch.Sketch.typename,
927
+ async (space, n, cb) => {
928
+ const objects = range2(n).map(() => {
929
+ const obj = space.db.add(Sketch.make({
930
+ name: faker.commerce.productName()
931
+ }));
932
+ return obj;
933
+ });
934
+ cb?.(objects);
935
+ return objects;
936
+ }
937
+ ],
938
+ // TODO(burdon): Create unit tests.
939
+ [
940
+ Sheet.Sheet.typename,
941
+ async (space, n, cb) => {
942
+ const objects = range2(n).map(() => {
943
+ const cells = {};
944
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
945
+ const cols = 4;
946
+ const rows = 16;
947
+ for (let col = 1; col <= cols; col++) {
948
+ for (let row = 1; row <= rows; row++) {
949
+ const cell = addressToA1Notation({
950
+ col,
951
+ row
952
+ });
953
+ if (row === 1) {
954
+ cells[cell] = {
955
+ value: `${year} Q${col}`
956
+ };
957
+ } else if (row === rows) {
958
+ const from = addressToA1Notation({
959
+ col,
960
+ row: 2
961
+ });
962
+ const to = addressToA1Notation({
963
+ col,
964
+ row: rows - 1
965
+ });
966
+ cells[cell] = {
967
+ value: `=SUM(${from}:${to})`
968
+ };
969
+ } else if (row > 2 && row < rows - 1) {
970
+ cells[cell] = {
971
+ value: Math.floor(Math.random() * 1e4)
972
+ };
973
+ }
974
+ }
900
975
  }
901
- return map;
902
- }, {}));
903
- setInfo({
904
- schema: {
905
- static: staticSchema.length,
906
- mutable: echoSchema.length
907
- },
908
- objects: objectMap
976
+ return space.db.add(Sheet.make({
977
+ name: faker.commerce.productName(),
978
+ cells
979
+ }));
909
980
  });
910
- };
911
- useAsyncEffect(updateInfo, [
912
- space
981
+ cb?.(objects);
982
+ return objects;
983
+ }
984
+ ],
985
+ [
986
+ ComputeGraph.typename,
987
+ async (space, n, cb) => {
988
+ const objects = range2(n, () => {
989
+ const model = ComputeGraphModel.create();
990
+ model.builder.createNode({
991
+ id: "gpt-INPUT",
992
+ type: NODE_INPUT2
993
+ }).createNode({
994
+ id: "gpt-GPT",
995
+ type: "gpt"
996
+ }).createNode({
997
+ id: "gpt-QUEUE_ID",
998
+ type: "constant",
999
+ value: new DXN2(DXN2.kind.QUEUE, [
1000
+ "data",
1001
+ space.id,
1002
+ Key2.ObjectId.random()
1003
+ ]).toString()
1004
+ }).createNode({
1005
+ id: "gpt-APPEND",
1006
+ type: "append"
1007
+ }).createNode({
1008
+ id: "gpt-OUTPUT",
1009
+ type: NODE_OUTPUT
1010
+ }).createEdge({
1011
+ node: "gpt-INPUT",
1012
+ property: "prompt"
1013
+ }, {
1014
+ node: "gpt-GPT",
1015
+ property: "prompt"
1016
+ }).createEdge({
1017
+ node: "gpt-GPT",
1018
+ property: "text"
1019
+ }, {
1020
+ node: "gpt-OUTPUT",
1021
+ property: "text"
1022
+ }).createEdge({
1023
+ node: "gpt-QUEUE_ID",
1024
+ property: DEFAULT_OUTPUT
1025
+ }, {
1026
+ node: "gpt-APPEND",
1027
+ property: "id"
1028
+ }).createEdge({
1029
+ node: "gpt-GPT",
1030
+ property: "messages"
1031
+ }, {
1032
+ node: "gpt-APPEND",
1033
+ property: "items"
1034
+ }).createEdge({
1035
+ node: "gpt-QUEUE_ID",
1036
+ property: DEFAULT_OUTPUT
1037
+ }, {
1038
+ node: "gpt-OUTPUT",
1039
+ property: "queue"
1040
+ });
1041
+ return space.db.add(model.root);
1042
+ });
1043
+ cb?.(objects);
1044
+ return objects;
1045
+ }
1046
+ ]
1047
+ ]);
1048
+
1049
+ // src/containers/SpaceGenerator/SpaceGenerator.tsx
1050
+ var SpaceGenerator = ({ space, onCreateObjects }) => {
1051
+ const { invokePromise } = useOperationInvoker();
1052
+ const client = useClient();
1053
+ const staticTypes = [
1054
+ Markdown3.Document,
1055
+ Sketch2.Sketch,
1056
+ Sheet2.Sheet,
1057
+ ComputeGraph2
1058
+ ];
1059
+ const recordTypes = [
1060
+ Organization2.Organization,
1061
+ Person2.Person,
1062
+ Task.Task
1063
+ ];
1064
+ const [count, setCount] = useState(1);
1065
+ const [info, setInfo] = useState({});
1066
+ const presets = useMemo(() => generator(), []);
1067
+ useAsyncEffect(async () => {
1068
+ await client.addTypes([
1069
+ ...staticTypes,
1070
+ ...recordTypes,
1071
+ ...presets.schemas
913
1072
  ]);
914
- const handleCreateData = useCallback(async (typename) => {
915
- const constructor = typeMap.get(typename);
916
- if (constructor) {
917
- await constructor(space, count, onCreateObjects);
918
- await updateInfo();
919
- }
920
- }, [
921
- typeMap,
922
- count
1073
+ }, [
1074
+ client
1075
+ ]);
1076
+ const typeMap = useMemo(() => {
1077
+ const recordGenerators = new Map(recordTypes.map((type) => [
1078
+ type.typename,
1079
+ createGenerator(client, invokePromise, type)
1080
+ ]));
1081
+ return new Map([
1082
+ ...staticGenerators,
1083
+ ...presets.items,
1084
+ ...recordGenerators
923
1085
  ]);
924
- return /* @__PURE__ */ React2.createElement("div", {
925
- role: "none",
926
- className: "flex flex-col grow overflow-hidden"
927
- }, /* @__PURE__ */ React2.createElement(Toolbar.Root, {
928
- classNames: "border-be border-subduedSeparator"
929
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
930
- icon: "ph--arrow-clockwise--regular",
931
- iconOnly: true,
932
- label: "Refresh",
933
- onClick: updateInfo
934
- }), /* @__PURE__ */ React2.createElement(Toolbar.Separator, {
935
- variant: "gap"
936
- }), /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
937
- type: "number",
938
- min: 1,
939
- max: 100,
940
- placeholder: "Count",
941
- classNames: "!w-[4rem] !text-right",
942
- size: 8,
943
- value: count,
944
- onChange: (ev) => setCount(parseInt(ev.target.value))
945
- }))), /* @__PURE__ */ React2.createElement("div", {
946
- className: "flex flex-col overflow-y-auto divide-y divide-separator"
947
- }, /* @__PURE__ */ React2.createElement(SchemaTable, {
948
- types: staticTypes,
949
- objects: info.objects,
950
- label: "Static Types",
951
- onClick: handleCreateData
952
- }), /* @__PURE__ */ React2.createElement(SchemaTable, {
953
- types: recordTypes,
954
- objects: info.objects,
955
- label: "Record Types",
956
- onClick: handleCreateData
957
- }), /* @__PURE__ */ React2.createElement(SchemaTable, {
958
- types: presets.types,
959
- objects: info.objects,
960
- label: "Presets",
961
- onClick: handleCreateData
962
- }), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
963
- classNames: "flex text-xs",
964
- language: "json"
965
- }, JSON.stringify({
966
- space,
967
- ...info
968
- }, jsonKeyReplacer({
969
- truncate: true
970
- }), 2)))));
971
- } finally {
972
- _effect.f();
973
- }
1086
+ }, [
1087
+ client,
1088
+ recordTypes,
1089
+ invokePromise
1090
+ ]);
1091
+ const updateInfo = async () => {
1092
+ const echoSchema = await space.db.schemaRegistry.query().run();
1093
+ const staticSchema = await space.db.graph.schemaRegistry.query().run();
1094
+ const objects = await space.db.query(Filter3.everything()).run();
1095
+ const objectMap = sortKeys(objects.reduce((map, obj) => {
1096
+ const type = Obj2.getTypename(obj);
1097
+ if (type) {
1098
+ const count2 = map[type] ?? 0;
1099
+ map[type] = count2 + 1;
1100
+ }
1101
+ return map;
1102
+ }, {}));
1103
+ setInfo({
1104
+ schema: {
1105
+ static: staticSchema.length,
1106
+ mutable: echoSchema.length
1107
+ },
1108
+ objects: objectMap
1109
+ });
1110
+ };
1111
+ useAsyncEffect(updateInfo, [
1112
+ space
1113
+ ]);
1114
+ const handleCreateData = useCallback(async (typename) => {
1115
+ const constructor = typeMap.get(typename);
1116
+ if (constructor) {
1117
+ await constructor(space, count, onCreateObjects);
1118
+ await updateInfo();
1119
+ }
1120
+ }, [
1121
+ typeMap,
1122
+ count
1123
+ ]);
1124
+ return /* @__PURE__ */ React2.createElement(Panel.Root, null, /* @__PURE__ */ React2.createElement(Panel.Toolbar, {
1125
+ asChild: true
1126
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Root, null, /* @__PURE__ */ React2.createElement(IconButton2, {
1127
+ icon: "ph--arrow-clockwise--regular",
1128
+ iconOnly: true,
1129
+ label: "Refresh",
1130
+ onClick: updateInfo
1131
+ }), /* @__PURE__ */ React2.createElement(Toolbar.Separator, null), /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
1132
+ type: "number",
1133
+ placeholder: "Count",
1134
+ classNames: "w-[4rem] text-right",
1135
+ min: 1,
1136
+ max: 100,
1137
+ size: 8,
1138
+ value: count,
1139
+ onChange: (event) => setCount(parseInt(event.target.value))
1140
+ })))), /* @__PURE__ */ React2.createElement(Panel.Content, {
1141
+ asChild: true
1142
+ }, /* @__PURE__ */ React2.createElement(ScrollArea.Root, {
1143
+ thin: true,
1144
+ orientation: "vertical"
1145
+ }, /* @__PURE__ */ React2.createElement(ScrollArea.Viewport, {
1146
+ classNames: "gap-4 divide-y divide-subdued-separator"
1147
+ }, /* @__PURE__ */ React2.createElement(SchemaTable, {
1148
+ types: staticTypes,
1149
+ objects: info.objects,
1150
+ label: "Static Types",
1151
+ onClick: handleCreateData
1152
+ }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1153
+ types: recordTypes,
1154
+ objects: info.objects,
1155
+ label: "Record Types",
1156
+ onClick: handleCreateData
1157
+ }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1158
+ types: presets.types,
1159
+ objects: info.objects,
1160
+ label: "Presets",
1161
+ onClick: handleCreateData
1162
+ }), /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
1163
+ language: "json",
1164
+ classNames: "text-xs"
1165
+ }, JSON.stringify({
1166
+ space,
1167
+ ...info
1168
+ }, jsonKeyReplacer({
1169
+ truncate: true
1170
+ }), 2))))));
974
1171
  };
975
1172
 
976
- // src/components/SpaceGenerator/index.ts
1173
+ // src/containers/SpaceGenerator/index.ts
977
1174
  var SpaceGenerator_default = SpaceGenerator;
978
1175
  export {
979
1176
  SpaceGenerator_default as default
980
1177
  };
981
- //# sourceMappingURL=SpaceGenerator-6ZOCEREN.mjs.map
1178
+ //# sourceMappingURL=SpaceGenerator-Q2GH6S6D.mjs.map