@dxos/plugin-debug 0.8.4-main.c1de068 → 0.8.4-main.c351d160a8

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-KXVFOGU6.mjs +35 -0
  4. package/dist/lib/browser/DebugObjectPanel-KXVFOGU6.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-AG3XGNMV.mjs → SpaceGenerator-Q2GH6S6D.mjs} +577 -382
  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-VD6RD6PL.mjs +427 -0
  29. package/dist/lib/browser/react-surface-VD6RD6PL.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 +76 -67
  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 +31 -39
  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 +47 -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-AG3XGNMV.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-3GD2OWCA.mjs +0 -768
  154. package/dist/lib/browser/react-surface-3GD2OWCA.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,265 +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 { DocumentType as DocumentType2 } 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 { DocumentType } 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
- DocumentType.typename,
61
- async (space, n, cb) => {
62
- const objects = range(n).map(() => {
63
- return space.db.add(Obj.make(DocumentType, {
64
- name: faker.commerce.productName(),
65
- content: Ref.make(Obj.make(DataType.Text, {
66
- content: faker.lorem.sentences(5)
67
- }))
68
- }));
69
- });
70
- cb?.(objects);
71
- return objects;
72
- }
73
- ],
74
- [
75
- DiagramType.typename,
76
- async (space, n, cb) => {
77
- const objects = range(n).map(() => {
78
- const obj = space.db.add(Obj.make(DiagramType, {
79
- name: faker.commerce.productName(),
80
- canvas: Ref.make(Obj.make(CanvasType, {
81
- content: {}
82
- }))
83
- }));
84
- return obj;
85
- });
86
- cb?.(objects);
87
- return objects;
88
- }
89
- ],
90
- // TODO(burdon): Create unit tests.
91
- [
92
- SheetType.typename,
93
- async (space, n, cb) => {
94
- const objects = range(n).map(() => {
95
- const cells = {};
96
- const year = (/* @__PURE__ */ new Date()).getFullYear();
97
- const cols = 4;
98
- const rows = 16;
99
- for (let col = 1; col <= cols; col++) {
100
- for (let row = 1; row <= rows; row++) {
101
- const cell = addressToA1Notation({
102
- col,
103
- row
104
- });
105
- if (row === 1) {
106
- cells[cell] = {
107
- value: `${year} Q${col}`
108
- };
109
- } else if (row === rows) {
110
- const from = addressToA1Notation({
111
- col,
112
- row: 2
113
- });
114
- const to = addressToA1Notation({
115
- col,
116
- row: rows - 1
117
- });
118
- cells[cell] = {
119
- value: `=SUM(${from}:${to})`
120
- };
121
- } else if (row > 2 && row < rows - 1) {
122
- cells[cell] = {
123
- value: Math.floor(Math.random() * 1e4)
124
- };
125
- }
126
- }
127
- }
128
- return space.db.add(createSheet({
129
- name: faker.commerce.productName(),
130
- cells
131
- }));
132
- });
133
- cb?.(objects);
134
- return objects;
135
- }
136
- ],
137
- [
138
- ComputeGraph.typename,
139
- async (space, n, cb) => {
140
- const objects = range(n, () => {
141
- const model = ComputeGraphModel.create();
142
- model.builder.createNode({
143
- id: "gpt-INPUT",
144
- type: NODE_INPUT
145
- }).createNode({
146
- id: "gpt-GPT",
147
- type: "gpt"
148
- }).createNode({
149
- id: "gpt-QUEUE_ID",
150
- type: "constant",
151
- value: new DXN(DXN.kind.QUEUE, [
152
- "data",
153
- space.id,
154
- Key.ObjectId.random()
155
- ]).toString()
156
- }).createNode({
157
- id: "gpt-APPEND",
158
- type: "append"
159
- }).createNode({
160
- id: "gpt-OUTPUT",
161
- type: NODE_OUTPUT
162
- }).createEdge({
163
- node: "gpt-INPUT",
164
- property: "prompt"
165
- }, {
166
- node: "gpt-GPT",
167
- property: "prompt"
168
- }).createEdge({
169
- node: "gpt-GPT",
170
- property: "text"
171
- }, {
172
- node: "gpt-OUTPUT",
173
- property: "text"
174
- }).createEdge({
175
- node: "gpt-QUEUE_ID",
176
- property: DEFAULT_OUTPUT
177
- }, {
178
- node: "gpt-APPEND",
179
- property: "id"
180
- }).createEdge({
181
- node: "gpt-GPT",
182
- property: "messages"
183
- }, {
184
- node: "gpt-APPEND",
185
- property: "items"
186
- }).createEdge({
187
- node: "gpt-QUEUE_ID",
188
- property: DEFAULT_OUTPUT
189
- }, {
190
- node: "gpt-OUTPUT",
191
- property: "queue"
192
- });
193
- return space.db.add(model.root);
194
- });
195
- cb?.(objects);
196
- return objects;
197
- }
198
- ]
199
- ]);
200
-
201
- // src/components/SpaceGenerator/SchemaTable.tsx
202
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
15
+ // src/components/SchemaTable/SchemaTable.tsx
203
16
  import React from "react";
204
17
  import { IconButton } from "@dxos/react-ui";
205
18
  var SchemaTable = ({ types, objects = {}, label, onClick }) => {
206
- var _effect = _useSignals();
207
- try {
208
- return /* @__PURE__ */ React.createElement("div", {
209
- className: "grid grid-cols-[1fr_80px_40px] gap-1 overflow-none"
210
- }, /* @__PURE__ */ React.createElement("h2", {
211
- className: "p-2"
212
- }, label), types.map((type) => /* @__PURE__ */ React.createElement("div", {
213
- key: type.typename,
214
- className: "grid grid-cols-subgrid col-span-3 items-center"
215
- }, /* @__PURE__ */ React.createElement("div", {
216
- className: "px-2 text-sm font-mono text-subdued"
217
- }, type.typename), /* @__PURE__ */ React.createElement("div", {
218
- className: "px-2 text-right font-mono"
219
- }, objects[type.typename] ?? 0), /* @__PURE__ */ React.createElement(IconButton, {
220
- variant: "ghost",
221
- icon: "ph--plus--regular",
222
- iconOnly: true,
223
- label: "Create data",
224
- onClick: () => onClick(type.typename)
225
- }))));
226
- } finally {
227
- _effect.f();
228
- }
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
+ }))));
229
37
  };
230
38
 
231
39
  // src/components/SpaceGenerator/presets.ts
232
- import { Schema } from "effect";
233
- import { NODE_INPUT as NODE_INPUT2 } from "@dxos/conductor";
234
- import { DXN as DXN2, Key as Key2, Obj as Obj2, Ref as Ref2, Type as Type2 } from "@dxos/echo";
235
- 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";
236
46
  import { invariant } from "@dxos/invariant";
237
- import { createAppend, createChat, createComputeGraph, createConstant, createFunction, createGpt, createQueue, createSurface, createRandom, createTemplate, createText, createTrigger } from "@dxos/react-ui-canvas-compute";
238
- import { CanvasBoardType, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from "@dxos/react-ui-canvas-editor";
239
- 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";
240
55
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/components/SpaceGenerator/presets.ts";
241
- 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";
242
59
  PresetName2["GPT_QUEUE"] = "webhook-gpt-queue";
243
60
  PresetName2["CHAT_GPT"] = "chat-gpt-text";
244
61
  PresetName2["OBJECT_CHANGE_QUEUE"] = "objectChange-queue";
245
- PresetName2["FOREX_FUNCTION_CALL"] = "forex-function-call";
246
62
  PresetName2["TIMER_TICK_QUEUE"] = "timerTick-queue";
63
+ PresetName2["FOREX_FUNCTION_CALL"] = "forex-function-call";
247
64
  PresetName2["DISCORD_MESSAGES"] = "discord-messages";
248
65
  return PresetName2;
249
- }({});
250
- var generator2 = () => ({
66
+ })({});
67
+ var generator = () => ({
251
68
  schemas: [
252
- CanvasBoardType,
253
- FunctionTrigger
69
+ CanvasBoard.CanvasBoard,
70
+ Trigger.Trigger
254
71
  ],
255
72
  types: Object.values(PresetName).map((name) => ({
256
73
  typename: name
257
74
  })),
258
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
+ ],
259
275
  [
260
276
  "webhook-gpt-queue",
261
277
  async (space, n, cb) => {
262
- const objects = range2(n, () => {
278
+ const objects = range(n, () => {
263
279
  const canvasModel = CanvasGraphModel.create();
264
280
  let functionTrigger;
265
281
  canvasModel.builder.call((builder) => {
@@ -269,7 +285,7 @@ var generator2 = () => ({
269
285
  })));
270
286
  const triggerShape = createTrigger({
271
287
  spaceId: space.id,
272
- triggerKind: TriggerKind.Webhook,
288
+ triggerKind: "webhook",
273
289
  ...position({
274
290
  x: -18,
275
291
  y: -2
@@ -319,9 +335,9 @@ var generator2 = () => ({
319
335
  [
320
336
  "objectChange-queue",
321
337
  async (space, n, cb) => {
322
- const objects = range2(n, () => {
323
- const { canvasModel, computeModel } = createQueueSinkPreset(space, TriggerKind.Subscription, (triggerSpec) => triggerSpec.filter = {
324
- 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
325
341
  }, "type");
326
342
  return addToSpace("objectChange-queue", space, canvasModel, computeModel);
327
343
  });
@@ -332,8 +348,8 @@ var generator2 = () => ({
332
348
  [
333
349
  "timerTick-queue",
334
350
  async (space, n, cb) => {
335
- const objects = range2(n, () => {
336
- 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");
337
353
  return addToSpace("timerTick-queue", space, canvasModel, computeModel);
338
354
  });
339
355
  cb?.(objects);
@@ -360,7 +376,7 @@ var generator2 = () => ({
360
376
  // canvasModel.builder.call((builder) => {
361
377
  // const triggerShape = createTrigger({
362
378
  // spaceId: space.id,
363
- // triggerKind: TriggerKind.Email,
379
+ // triggerKind: 'email',
364
380
  // ...position({ x: -18, y: -2 }),
365
381
  // });
366
382
  // const trigger = canvasModel.createNode(triggerShape);
@@ -387,7 +403,7 @@ var generator2 = () => ({
387
403
  // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
388
404
  // invariant(templateComputeNode, 'Template compute node was not created.');
389
405
  // templateComputeNode.value = templateContent.join('\n');
390
- // templateComputeNode.inputSchema = Type.toJsonSchema(EmailTriggerOutput);
406
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
391
407
  // attachTrigger(functionTrigger, computeModel);
392
408
  // return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);
393
409
  // });
@@ -398,7 +414,7 @@ var generator2 = () => ({
398
414
  [
399
415
  "chat-gpt-text",
400
416
  async (space, n, cb) => {
401
- const objects = range2(n, () => {
417
+ const objects = range(n, () => {
402
418
  const canvasModel = CanvasGraphModel.create();
403
419
  canvasModel.builder.call((builder) => {
404
420
  const gpt = canvasModel.createNode(createGpt(position({
@@ -475,7 +491,7 @@ var generator2 = () => ({
475
491
  // );
476
492
  // const triggerShape = createTrigger({
477
493
  // spaceId: space.id,
478
- // triggerKind: TriggerKind.Email,
494
+ // triggerKind: 'email',
479
495
  // ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),
480
496
  // });
481
497
  // const trigger = canvasModel.createNode(triggerShape);
@@ -518,7 +534,7 @@ var generator2 = () => ({
518
534
  // invariant(templateComputeNode, 'Template compute node was not created.');
519
535
  // templateComputeNode.value = templateContent.join('\n');
520
536
  // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
521
- // templateComputeNode.inputSchema = Type.toJsonSchema(extendedSchema);
537
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
522
538
  // attachTrigger(functionTrigger, computeModel);
523
539
  // return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);
524
540
  // });
@@ -529,7 +545,7 @@ var generator2 = () => ({
529
545
  [
530
546
  "forex-function-call",
531
547
  async (space, n, cb) => {
532
- const objects = range2(n, () => {
548
+ const objects = range(n, () => {
533
549
  const canvasModel = CanvasGraphModel.create();
534
550
  canvasModel.builder.call((builder) => {
535
551
  const sourceCurrency = canvasModel.createNode(createConstant({
@@ -578,13 +594,13 @@ var generator2 = () => ({
578
594
  [
579
595
  "discord-messages",
580
596
  async (space, n, cb) => {
581
- const objects = range2(n, () => {
597
+ const objects = range(n, () => {
582
598
  const canvasModel = CanvasGraphModel.create();
583
599
  let functionTrigger;
584
600
  canvasModel.builder.call((builder) => {
585
601
  const triggerShape = createTrigger({
586
602
  spaceId: space.id,
587
- triggerKind: TriggerKind.Timer,
603
+ triggerKind: "timer",
588
604
  ...position({
589
605
  x: -10,
590
606
  y: -5
@@ -599,10 +615,10 @@ var generator2 = () => ({
599
615
  })
600
616
  }));
601
617
  const queueId = canvasModel.createNode(createConstant({
602
- value: new DXN2(DXN2.kind.QUEUE, [
618
+ value: new DXN(DXN.kind.QUEUE, [
603
619
  "data",
604
620
  space.id,
605
- Key2.ObjectId.random()
621
+ Key.ObjectId.random()
606
622
  ]).toString(),
607
623
  ...position({
608
624
  x: -10,
@@ -720,20 +736,22 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
720
736
  const triggerSpec = functionTrigger.spec;
721
737
  invariant(triggerSpec && triggerSpec.kind === triggerKind, "No trigger spec.", {
722
738
  F: __dxlog_file,
723
- L: 496,
739
+ L: 764,
724
740
  S: void 0,
725
741
  A: [
726
742
  "triggerSpec && triggerSpec.kind === triggerKind",
727
743
  "'No trigger spec.'"
728
744
  ]
729
745
  });
730
- initSpec(triggerSpec);
746
+ Obj.change(functionTrigger, (ft) => {
747
+ initSpec(ft.spec);
748
+ });
731
749
  });
732
750
  const computeModel = createComputeGraph(canvasModel);
733
751
  const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
734
752
  invariant(templateComputeNode, "Template compute node was not created.", {
735
753
  F: __dxlog_file,
736
- L: 503,
754
+ L: 773,
737
755
  S: void 0,
738
756
  A: [
739
757
  "templateComputeNode",
@@ -746,7 +764,7 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
746
764
  ' "id": "@{{changeId}}"',
747
765
  "}"
748
766
  ].join("\n");
749
- templateComputeNode.inputSchema = Type2.toJsonSchema(Schema.Struct({
767
+ templateComputeNode.inputSchema = JsonSchema.toJsonSchema(Schema.Struct({
750
768
  type: Schema.String,
751
769
  changeId: Schema.String
752
770
  }));
@@ -757,18 +775,18 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
757
775
  };
758
776
  };
759
777
  var addToSpace = (name, space, canvas, compute) => {
760
- return space.db.add(Obj2.make(CanvasBoardType, {
778
+ return space.db.add(Obj.make(CanvasBoard.CanvasBoard, {
761
779
  name,
762
- computeGraph: Ref2.make(compute.root),
780
+ computeGraph: Ref.make(compute.root),
763
781
  layout: canvas.graph
764
782
  }));
765
783
  };
766
784
  var setupQueue = (space, canvasModel, args) => {
767
785
  const queueId = canvasModel.createNode(createConstant({
768
- value: new DXN2(DXN2.kind.QUEUE, [
786
+ value: new DXN(DXN.kind.QUEUE, [
769
787
  "data",
770
788
  space.id,
771
- Key2.ObjectId.random()
789
+ Key.ObjectId.random()
772
790
  ]).toString(),
773
791
  ...args?.idPosition ? rawPosition(args.idPosition) : position({
774
792
  x: -18,
@@ -795,16 +813,18 @@ var setupQueue = (space, canvasModel, args) => {
795
813
  var attachTrigger = (functionTrigger, computeModel) => {
796
814
  invariant(functionTrigger, void 0, {
797
815
  F: __dxlog_file,
798
- L: 542,
816
+ L: 815,
799
817
  S: void 0,
800
818
  A: [
801
819
  "functionTrigger",
802
820
  ""
803
821
  ]
804
822
  });
805
- functionTrigger.function = Ref2.make(computeModel.root);
806
- const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT2);
807
- 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
+ });
808
828
  };
809
829
  var rawPosition = (args) => {
810
830
  return {
@@ -850,134 +870,309 @@ var position = (rect) => {
850
870
  }
851
871
  };
852
872
 
853
- // src/components/SpaceGenerator/SpaceGenerator.tsx
854
- var SpaceGenerator = ({ space, onCreateObjects }) => {
855
- var _effect = _useSignals2();
856
- try {
857
- const { dispatchPromise: dispatch } = useIntentDispatcher();
858
- const client = useClient();
859
- const staticTypes = [
860
- DocumentType2,
861
- DiagramType2,
862
- SheetType2,
863
- ComputeGraph2
864
- ];
865
- const recordTypes = [
866
- DataType2.Organization,
867
- DataType2.Project,
868
- DataType2.Person,
869
- DataType2.Message
870
- ];
871
- const [count, setCount] = useState(1);
872
- const [info, setInfo] = useState({});
873
- const presets = useMemo(() => generator2(), []);
874
- const typeMap = useMemo(() => {
875
- client.addTypes([
876
- ...staticTypes,
877
- ...recordTypes,
878
- ...presets.schemas
879
- ]);
880
- const recordGenerators = new Map(recordTypes.map((type) => [
881
- type.typename,
882
- createGenerator(client, dispatch, type)
883
- ]));
884
- return new Map([
885
- ...staticGenerators,
886
- ...presets.items,
887
- ...recordGenerators
888
- ]);
889
- }, [
890
- client,
891
- recordTypes
892
- ]);
893
- const updateInfo = async () => {
894
- const echoSchema = await space.db.schemaRegistry.query().run();
895
- const staticSchema = space.db.graph.schemaRegistry.schemas;
896
- const { objects } = await space.db.query(Filter2.everything()).run();
897
- const objectMap = sortKeys(objects.reduce((map, obj) => {
898
- const type = getTypename(obj);
899
- if (type) {
900
- const count2 = map[type] ?? 0;
901
- 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
+ }
902
975
  }
903
- return map;
904
- }, {}));
905
- setInfo({
906
- schema: {
907
- static: staticSchema.length,
908
- mutable: echoSchema.length
909
- },
910
- objects: objectMap
976
+ return space.db.add(Sheet.make({
977
+ name: faker.commerce.productName(),
978
+ cells
979
+ }));
911
980
  });
912
- };
913
- useAsyncEffect(updateInfo, [
914
- 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
915
1072
  ]);
916
- const handleCreateData = useCallback(async (typename) => {
917
- const constructor = typeMap.get(typename);
918
- if (constructor) {
919
- await constructor(space, count, onCreateObjects);
920
- await updateInfo();
921
- }
922
- }, [
923
- typeMap,
924
- 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
925
1085
  ]);
926
- return /* @__PURE__ */ React2.createElement("div", {
927
- role: "none",
928
- className: "flex flex-col grow overflow-hidden"
929
- }, /* @__PURE__ */ React2.createElement(Toolbar.Root, {
930
- classNames: "border-be border-subduedSeparator"
931
- }, /* @__PURE__ */ React2.createElement(IconButton2, {
932
- icon: "ph--arrow-clockwise--regular",
933
- iconOnly: true,
934
- label: "Refresh",
935
- onClick: updateInfo
936
- }), /* @__PURE__ */ React2.createElement(Toolbar.Separator, {
937
- variant: "gap"
938
- }), /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
939
- type: "number",
940
- min: 1,
941
- max: 100,
942
- placeholder: "Count",
943
- classNames: "!w-[4rem] !text-right",
944
- size: 8,
945
- value: count,
946
- onChange: (ev) => setCount(parseInt(ev.target.value))
947
- }))), /* @__PURE__ */ React2.createElement("div", {
948
- className: "flex flex-col overflow-y-auto divide-y divide-separator"
949
- }, /* @__PURE__ */ React2.createElement(SchemaTable, {
950
- types: staticTypes,
951
- objects: info.objects,
952
- label: "Static Types",
953
- onClick: handleCreateData
954
- }), /* @__PURE__ */ React2.createElement(SchemaTable, {
955
- types: recordTypes,
956
- objects: info.objects,
957
- label: "Record Types",
958
- onClick: handleCreateData
959
- }), /* @__PURE__ */ React2.createElement(SchemaTable, {
960
- types: presets.types,
961
- objects: info.objects,
962
- label: "Presets",
963
- onClick: handleCreateData
964
- }), /* @__PURE__ */ React2.createElement("div", null, /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
965
- classNames: "flex text-xs",
966
- language: "json"
967
- }, JSON.stringify({
968
- space,
969
- ...info
970
- }, jsonKeyReplacer({
971
- truncate: true
972
- }), 2)))));
973
- } finally {
974
- _effect.f();
975
- }
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))))));
976
1171
  };
977
1172
 
978
- // src/components/SpaceGenerator/index.ts
1173
+ // src/containers/SpaceGenerator/index.ts
979
1174
  var SpaceGenerator_default = SpaceGenerator;
980
1175
  export {
981
1176
  SpaceGenerator_default as default
982
1177
  };
983
- //# sourceMappingURL=SpaceGenerator-AG3XGNMV.mjs.map
1178
+ //# sourceMappingURL=SpaceGenerator-Q2GH6S6D.mjs.map