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

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-JZMIUDYB.mjs +174 -0
  6. package/dist/lib/browser/DebugSettings-JZMIUDYB.mjs.map +7 -0
  7. package/dist/lib/browser/DebugSpaceObjectsPanel-7NRPLWZ4.mjs +50 -0
  8. package/dist/lib/browser/DebugSpaceObjectsPanel-7NRPLWZ4.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-SWSGJEEL.mjs} +573 -382
  14. package/dist/lib/browser/SpaceGenerator-SWSGJEEL.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-LGUQNXHD.mjs +625 -0
  18. package/dist/lib/browser/app-graph-builder-LGUQNXHD.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AJA6RYN3.mjs → chunk-4UFQXPP7.mjs} +12 -2
  20. package/dist/lib/browser/chunk-4UFQXPP7.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-A5H5GRV6.mjs +20 -0
  22. package/dist/lib/browser/chunk-A5H5GRV6.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-I3USIAF6.mjs +17 -0
  27. package/dist/lib/browser/react-context-I3USIAF6.mjs.map +7 -0
  28. package/dist/lib/browser/react-surface-BTVNKKVQ.mjs +443 -0
  29. package/dist/lib/browser/react-surface-BTVNKKVQ.mjs.map +7 -0
  30. package/dist/lib/browser/settings-SLTQJJNF.mjs +32 -0
  31. package/dist/lib/browser/settings-SLTQJJNF.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 +6 -1
  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 +441 -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 +428 -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 +32 -38
  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 +337 -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 +60 -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 +9 -1
  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,271 @@
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 { Diagram as Diagram2 } 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 feeds = await space.db.query(Filter.type(Feed.Feed)).run();
128
+ const mailbox = feeds.find((feed) => feed.kind === Mailbox.kind);
129
+ invariant(mailbox, "Mailbox feed not found", {
130
+ F: __dxlog_file,
131
+ L: 121,
132
+ S: void 0,
133
+ A: [
134
+ "mailbox",
135
+ "'Mailbox feed not found'"
136
+ ]
137
+ });
138
+ const queueDxn = Feed.getQueueDxn(mailbox)?.toString();
139
+ invariant(queueDxn, "Mailbox feed missing queue DXN key", {
140
+ F: __dxlog_file,
141
+ L: 123,
142
+ S: void 0,
143
+ A: [
144
+ "queueDxn",
145
+ "'Mailbox feed missing queue DXN key'"
146
+ ]
147
+ });
148
+ const tag = await space.db.query(Filter.type(Tag.Tag, {
149
+ label: "Investor"
150
+ })).first();
151
+ const tagDxn = Obj.getDXN(tag).toString();
152
+ const objects = range(n, () => {
153
+ const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagDxn));
154
+ const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagDxn));
155
+ const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagDxn));
156
+ space.db.add(Trigger.make({
157
+ enabled: true,
158
+ spec: {
159
+ kind: "timer",
160
+ cron: "* * * * *"
161
+ },
162
+ function: Ref.make(serializeFunction(GmailFunctions.Sync)),
163
+ input: {
164
+ mailbox: Ref.make(mailbox)
165
+ }
166
+ }));
167
+ space.db.add(Trigger.make({
168
+ enabled: true,
169
+ // TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
170
+ spec: {
171
+ kind: "queue",
172
+ queue: queueDxn
173
+ },
174
+ function: Ref.make(serializeFunction(EntityExtractionFunctions.Extract)),
175
+ input: {
176
+ source: "{{event.item}}"
177
+ }
178
+ }));
179
+ const researchPrompt = space.db.add(Prompt.make({
180
+ name: "Research",
181
+ description: "Research organization",
182
+ input: Schema.Struct({
183
+ org: Schema.Any
184
+ }),
185
+ output: Schema.Any,
186
+ // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.
187
+ // Remove the mock prompt to do the actual research.
188
+ instructions: trim`
189
+ Research the organization provided as input.
190
+ Create a research note for it at the end.
191
+ NOTE: Do mocked reseach (set mockSearch to true).
192
+ `,
193
+ blueprints: [
194
+ Ref.make(ResearchBlueprint.make())
195
+ ]
196
+ }));
197
+ space.db.add(Trigger.make({
198
+ enabled: true,
199
+ spec: {
200
+ kind: "subscription",
201
+ query: {
202
+ ast: organizationsQuery.ast
203
+ }
204
+ },
205
+ function: Ref.make(serializeFunction(AgentFunctions.Prompt)),
206
+ input: {
207
+ prompt: Ref.make(researchPrompt),
208
+ input: "{{event.subject}}"
209
+ }
210
+ }));
211
+ const mailboxView = ViewModel.make({
212
+ query: Query.select(Filter.type(Message.Message, {
213
+ properties: {
214
+ labels: Filter.contains("investor")
215
+ }
216
+ })).from({
217
+ queues: [
218
+ queueDxn
219
+ ]
220
+ }),
221
+ jsonSchema: JsonSchema.toJsonSchema(Message.Message)
222
+ });
223
+ const contactsView = ViewModel.make({
224
+ query: contactsQuery,
225
+ jsonSchema: JsonSchema.toJsonSchema(Person.Person)
226
+ });
227
+ const organizationsView = ViewModel.make({
228
+ query: organizationsQuery,
229
+ jsonSchema: JsonSchema.toJsonSchema(Organization.Organization)
230
+ });
231
+ const notesView = ViewModel.make({
232
+ query: notesQuery,
233
+ jsonSchema: JsonSchema.toJsonSchema(Markdown.Document)
234
+ });
235
+ return space.db.add(Pipeline.make({
236
+ name: "Investor Research",
237
+ columns: [
238
+ {
239
+ name: "Mailbox",
240
+ view: Ref.make(mailboxView),
241
+ order: []
242
+ },
243
+ {
244
+ name: "Contacts",
245
+ view: Ref.make(contactsView),
246
+ order: []
247
+ },
248
+ {
249
+ name: "Organizations",
250
+ view: Ref.make(organizationsView),
251
+ order: []
252
+ },
253
+ {
254
+ name: "Notes",
255
+ view: Ref.make(notesView),
256
+ order: []
257
+ }
258
+ ]
259
+ }));
260
+ });
261
+ cb?.(objects.flat());
262
+ return objects.flat();
263
+ }
264
+ ],
259
265
  [
260
266
  "webhook-gpt-queue",
261
267
  async (space, n, cb) => {
262
- const objects = range2(n, () => {
268
+ const objects = range(n, () => {
263
269
  const canvasModel = CanvasGraphModel.create();
264
270
  let functionTrigger;
265
271
  canvasModel.builder.call((builder) => {
@@ -269,7 +275,7 @@ var generator2 = () => ({
269
275
  })));
270
276
  const triggerShape = createTrigger({
271
277
  spaceId: space.id,
272
- triggerKind: TriggerKind.Webhook,
278
+ triggerKind: "webhook",
273
279
  ...position({
274
280
  x: -18,
275
281
  y: -2
@@ -319,9 +325,9 @@ var generator2 = () => ({
319
325
  [
320
326
  "objectChange-queue",
321
327
  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"
328
+ const objects = range(n, () => {
329
+ const { canvasModel, computeModel } = createQueueSinkPreset(space, "subscription", (triggerSpec) => triggerSpec.query = {
330
+ ast: Query.select(Filter.typename("dxos.org/type/Chess")).ast
325
331
  }, "type");
326
332
  return addToSpace("objectChange-queue", space, canvasModel, computeModel);
327
333
  });
@@ -332,8 +338,8 @@ var generator2 = () => ({
332
338
  [
333
339
  "timerTick-queue",
334
340
  async (space, n, cb) => {
335
- const objects = range2(n, () => {
336
- const { canvasModel, computeModel } = createQueueSinkPreset(space, TriggerKind.Timer, (triggerSpec) => triggerSpec.cron = "*/5 * * * * *", "result");
341
+ const objects = range(n, () => {
342
+ const { canvasModel, computeModel } = createQueueSinkPreset(space, "timer", (triggerSpec) => triggerSpec.cron = "*/5 * * * * *", "result");
337
343
  return addToSpace("timerTick-queue", space, canvasModel, computeModel);
338
344
  });
339
345
  cb?.(objects);
@@ -360,7 +366,7 @@ var generator2 = () => ({
360
366
  // canvasModel.builder.call((builder) => {
361
367
  // const triggerShape = createTrigger({
362
368
  // spaceId: space.id,
363
- // triggerKind: TriggerKind.Email,
369
+ // triggerKind: 'email',
364
370
  // ...position({ x: -18, y: -2 }),
365
371
  // });
366
372
  // const trigger = canvasModel.createNode(triggerShape);
@@ -387,7 +393,7 @@ var generator2 = () => ({
387
393
  // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
388
394
  // invariant(templateComputeNode, 'Template compute node was not created.');
389
395
  // templateComputeNode.value = templateContent.join('\n');
390
- // templateComputeNode.inputSchema = Type.toJsonSchema(EmailTriggerOutput);
396
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
391
397
  // attachTrigger(functionTrigger, computeModel);
392
398
  // return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);
393
399
  // });
@@ -398,7 +404,7 @@ var generator2 = () => ({
398
404
  [
399
405
  "chat-gpt-text",
400
406
  async (space, n, cb) => {
401
- const objects = range2(n, () => {
407
+ const objects = range(n, () => {
402
408
  const canvasModel = CanvasGraphModel.create();
403
409
  canvasModel.builder.call((builder) => {
404
410
  const gpt = canvasModel.createNode(createGpt(position({
@@ -475,7 +481,7 @@ var generator2 = () => ({
475
481
  // );
476
482
  // const triggerShape = createTrigger({
477
483
  // spaceId: space.id,
478
- // triggerKind: TriggerKind.Email,
484
+ // triggerKind: 'email',
479
485
  // ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),
480
486
  // });
481
487
  // const trigger = canvasModel.createNode(triggerShape);
@@ -518,7 +524,7 @@ var generator2 = () => ({
518
524
  // invariant(templateComputeNode, 'Template compute node was not created.');
519
525
  // templateComputeNode.value = templateContent.join('\n');
520
526
  // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
521
- // templateComputeNode.inputSchema = Type.toJsonSchema(extendedSchema);
527
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
522
528
  // attachTrigger(functionTrigger, computeModel);
523
529
  // return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);
524
530
  // });
@@ -529,7 +535,7 @@ var generator2 = () => ({
529
535
  [
530
536
  "forex-function-call",
531
537
  async (space, n, cb) => {
532
- const objects = range2(n, () => {
538
+ const objects = range(n, () => {
533
539
  const canvasModel = CanvasGraphModel.create();
534
540
  canvasModel.builder.call((builder) => {
535
541
  const sourceCurrency = canvasModel.createNode(createConstant({
@@ -578,13 +584,13 @@ var generator2 = () => ({
578
584
  [
579
585
  "discord-messages",
580
586
  async (space, n, cb) => {
581
- const objects = range2(n, () => {
587
+ const objects = range(n, () => {
582
588
  const canvasModel = CanvasGraphModel.create();
583
589
  let functionTrigger;
584
590
  canvasModel.builder.call((builder) => {
585
591
  const triggerShape = createTrigger({
586
592
  spaceId: space.id,
587
- triggerKind: TriggerKind.Timer,
593
+ triggerKind: "timer",
588
594
  ...position({
589
595
  x: -10,
590
596
  y: -5
@@ -599,10 +605,10 @@ var generator2 = () => ({
599
605
  })
600
606
  }));
601
607
  const queueId = canvasModel.createNode(createConstant({
602
- value: new DXN2(DXN2.kind.QUEUE, [
608
+ value: new DXN(DXN.kind.QUEUE, [
603
609
  "data",
604
610
  space.id,
605
- Key2.ObjectId.random()
611
+ Key.ObjectId.random()
606
612
  ]).toString(),
607
613
  ...position({
608
614
  x: -10,
@@ -720,20 +726,22 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
720
726
  const triggerSpec = functionTrigger.spec;
721
727
  invariant(triggerSpec && triggerSpec.kind === triggerKind, "No trigger spec.", {
722
728
  F: __dxlog_file,
723
- L: 496,
729
+ L: 762,
724
730
  S: void 0,
725
731
  A: [
726
732
  "triggerSpec && triggerSpec.kind === triggerKind",
727
733
  "'No trigger spec.'"
728
734
  ]
729
735
  });
730
- initSpec(triggerSpec);
736
+ Obj.change(functionTrigger, (ft) => {
737
+ initSpec(ft.spec);
738
+ });
731
739
  });
732
740
  const computeModel = createComputeGraph(canvasModel);
733
741
  const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
734
742
  invariant(templateComputeNode, "Template compute node was not created.", {
735
743
  F: __dxlog_file,
736
- L: 503,
744
+ L: 771,
737
745
  S: void 0,
738
746
  A: [
739
747
  "templateComputeNode",
@@ -746,7 +754,7 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
746
754
  ' "id": "@{{changeId}}"',
747
755
  "}"
748
756
  ].join("\n");
749
- templateComputeNode.inputSchema = Type2.toJsonSchema(Schema.Struct({
757
+ templateComputeNode.inputSchema = JsonSchema.toJsonSchema(Schema.Struct({
750
758
  type: Schema.String,
751
759
  changeId: Schema.String
752
760
  }));
@@ -757,18 +765,18 @@ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) =>
757
765
  };
758
766
  };
759
767
  var addToSpace = (name, space, canvas, compute) => {
760
- return space.db.add(Obj2.make(CanvasBoardType, {
768
+ return space.db.add(Obj.make(CanvasBoard.CanvasBoard, {
761
769
  name,
762
- computeGraph: Ref2.make(compute.root),
770
+ computeGraph: Ref.make(compute.root),
763
771
  layout: canvas.graph
764
772
  }));
765
773
  };
766
774
  var setupQueue = (space, canvasModel, args) => {
767
775
  const queueId = canvasModel.createNode(createConstant({
768
- value: new DXN2(DXN2.kind.QUEUE, [
776
+ value: new DXN(DXN.kind.QUEUE, [
769
777
  "data",
770
778
  space.id,
771
- Key2.ObjectId.random()
779
+ Key.ObjectId.random()
772
780
  ]).toString(),
773
781
  ...args?.idPosition ? rawPosition(args.idPosition) : position({
774
782
  x: -18,
@@ -795,16 +803,18 @@ var setupQueue = (space, canvasModel, args) => {
795
803
  var attachTrigger = (functionTrigger, computeModel) => {
796
804
  invariant(functionTrigger, void 0, {
797
805
  F: __dxlog_file,
798
- L: 542,
806
+ L: 813,
799
807
  S: void 0,
800
808
  A: [
801
809
  "functionTrigger",
802
810
  ""
803
811
  ]
804
812
  });
805
- functionTrigger.function = Ref2.make(computeModel.root);
806
- const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT2);
807
- functionTrigger.inputNodeId = inputNode.id;
813
+ const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT);
814
+ Obj.change(functionTrigger, (t) => {
815
+ t.function = Ref.make(computeModel.root);
816
+ t.inputNodeId = inputNode.id;
817
+ });
808
818
  };
809
819
  var rawPosition = (args) => {
810
820
  return {
@@ -850,134 +860,315 @@ var position = (rect) => {
850
860
  }
851
861
  };
852
862
 
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;
863
+ // src/components/SpaceGenerator/ObjectGenerator.tsx
864
+ import { addressToA1Notation } from "@dxos/compute";
865
+ import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT as NODE_INPUT2, NODE_OUTPUT } from "@dxos/conductor";
866
+ import { DXN as DXN2, Filter as Filter2, Key as Key2 } from "@dxos/echo";
867
+ import { View } from "@dxos/echo";
868
+ import { Markdown as Markdown2 } from "@dxos/plugin-markdown/types";
869
+ import { Sheet } from "@dxos/plugin-sheet/types";
870
+ import { Diagram } from "@dxos/plugin-sketch/types";
871
+ import { SpaceOperation } from "@dxos/plugin-space/types";
872
+ import { faker } from "@dxos/random";
873
+ import { getTypenameFromQuery } from "@dxos/schema";
874
+ import { createAsyncGenerator } from "@dxos/schema/testing";
875
+ import { range as range2 } from "@dxos/util";
876
+ var generator2 = faker;
877
+ var findViewByTypename = async (views, typename) => {
878
+ return views.find((view) => getTypenameFromQuery(view.query.ast) === typename);
879
+ };
880
+ var createGenerator = (client, invokePromise, schema) => {
881
+ return async (space, n) => {
882
+ const typename = schema.typename;
883
+ const views = await space.db.query(Filter2.type(View.View)).run();
884
+ const view = await findViewByTypename(views, typename);
885
+ const staticSchema = client?.graph.schemaRegistry.query({
886
+ typename
887
+ }).runSync()[0];
888
+ if (!view && !staticSchema) {
889
+ await invokePromise(SpaceOperation.AddSchema, {
890
+ db: space.db,
891
+ schema,
892
+ show: false
893
+ });
894
+ } else if (!view && staticSchema) {
895
+ await invokePromise(SpaceOperation.UseStaticSchema, {
896
+ db: space.db,
897
+ typename,
898
+ show: false
899
+ });
900
+ }
901
+ const generate = createAsyncGenerator(generator2, schema, {
902
+ db: space.db
903
+ });
904
+ return generate.createObjects(n);
905
+ };
906
+ };
907
+ var staticGenerators = /* @__PURE__ */ new Map([
908
+ [
909
+ Markdown2.Document.typename,
910
+ async (space, n, cb) => {
911
+ const objects = range2(n).map(() => {
912
+ return space.db.add(Markdown2.make({
913
+ name: faker.commerce.productName(),
914
+ content: faker.lorem.sentences(5)
915
+ }));
916
+ });
917
+ cb?.(objects);
918
+ return objects;
919
+ }
920
+ ],
921
+ [
922
+ Diagram.Diagram.typename,
923
+ async (space, n, cb) => {
924
+ const objects = range2(n).map(() => {
925
+ const obj = space.db.add(Diagram.make({
926
+ name: faker.commerce.productName()
927
+ }));
928
+ return obj;
929
+ });
930
+ cb?.(objects);
931
+ return objects;
932
+ }
933
+ ],
934
+ // TODO(burdon): Create unit tests.
935
+ [
936
+ Sheet.Sheet.typename,
937
+ async (space, n, cb) => {
938
+ const objects = range2(n).map(() => {
939
+ const cells = {};
940
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
941
+ const cols = 4;
942
+ const rows = 16;
943
+ for (let col = 1; col <= cols; col++) {
944
+ for (let row = 1; row <= rows; row++) {
945
+ const cell = addressToA1Notation({
946
+ col,
947
+ row
948
+ });
949
+ if (row === 1) {
950
+ cells[cell] = {
951
+ value: `${year} Q${col}`
952
+ };
953
+ } else if (row === rows) {
954
+ const from = addressToA1Notation({
955
+ col,
956
+ row: 2
957
+ });
958
+ const to = addressToA1Notation({
959
+ col,
960
+ row: rows - 1
961
+ });
962
+ cells[cell] = {
963
+ value: `=SUM(${from}:${to})`
964
+ };
965
+ } else if (row > 2 && row < rows - 1) {
966
+ cells[cell] = {
967
+ value: Math.floor(Math.random() * 1e4)
968
+ };
969
+ }
970
+ }
902
971
  }
903
- return map;
904
- }, {}));
905
- setInfo({
906
- schema: {
907
- static: staticSchema.length,
908
- mutable: echoSchema.length
909
- },
910
- objects: objectMap
972
+ return space.db.add(Sheet.make({
973
+ name: faker.commerce.productName(),
974
+ cells
975
+ }));
911
976
  });
912
- };
913
- useAsyncEffect(updateInfo, [
914
- space
977
+ cb?.(objects);
978
+ return objects;
979
+ }
980
+ ],
981
+ [
982
+ ComputeGraph.typename,
983
+ async (space, n, cb) => {
984
+ const objects = range2(n, () => {
985
+ const model = ComputeGraphModel.create();
986
+ model.builder.createNode({
987
+ id: "gpt-INPUT",
988
+ type: NODE_INPUT2
989
+ }).createNode({
990
+ id: "gpt-GPT",
991
+ type: "gpt"
992
+ }).createNode({
993
+ id: "gpt-QUEUE_ID",
994
+ type: "constant",
995
+ value: new DXN2(DXN2.kind.QUEUE, [
996
+ "data",
997
+ space.id,
998
+ Key2.ObjectId.random()
999
+ ]).toString()
1000
+ }).createNode({
1001
+ id: "gpt-APPEND",
1002
+ type: "append"
1003
+ }).createNode({
1004
+ id: "gpt-OUTPUT",
1005
+ type: NODE_OUTPUT
1006
+ }).createEdge({
1007
+ node: "gpt-INPUT",
1008
+ property: "prompt"
1009
+ }, {
1010
+ node: "gpt-GPT",
1011
+ property: "prompt"
1012
+ }).createEdge({
1013
+ node: "gpt-GPT",
1014
+ property: "text"
1015
+ }, {
1016
+ node: "gpt-OUTPUT",
1017
+ property: "text"
1018
+ }).createEdge({
1019
+ node: "gpt-QUEUE_ID",
1020
+ property: DEFAULT_OUTPUT
1021
+ }, {
1022
+ node: "gpt-APPEND",
1023
+ property: "id"
1024
+ }).createEdge({
1025
+ node: "gpt-GPT",
1026
+ property: "messages"
1027
+ }, {
1028
+ node: "gpt-APPEND",
1029
+ property: "items"
1030
+ }).createEdge({
1031
+ node: "gpt-QUEUE_ID",
1032
+ property: DEFAULT_OUTPUT
1033
+ }, {
1034
+ node: "gpt-OUTPUT",
1035
+ property: "queue"
1036
+ });
1037
+ return space.db.add(model.root);
1038
+ });
1039
+ cb?.(objects);
1040
+ return objects;
1041
+ }
1042
+ ]
1043
+ ]);
1044
+
1045
+ // src/containers/SpaceGenerator/SpaceGenerator.tsx
1046
+ var SpaceGenerator = ({ space, onCreateObjects }) => {
1047
+ const { invokePromise } = useOperationInvoker();
1048
+ const client = useClient();
1049
+ const staticTypes = [
1050
+ Markdown3.Document,
1051
+ Diagram2.Diagram,
1052
+ Sheet2.Sheet,
1053
+ ComputeGraph2
1054
+ ];
1055
+ const recordTypes = [
1056
+ Organization2.Organization,
1057
+ Person2.Person,
1058
+ Task.Task
1059
+ ];
1060
+ const [count, setCount] = useState(1);
1061
+ const [info, setInfo] = useState({});
1062
+ const presets = useMemo(() => generator(), []);
1063
+ useAsyncEffect(async () => {
1064
+ await client.addTypes([
1065
+ ...staticTypes,
1066
+ ...recordTypes,
1067
+ ...presets.schemas
915
1068
  ]);
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
1069
+ }, [
1070
+ client
1071
+ ]);
1072
+ const typeMap = useMemo(() => {
1073
+ const recordGenerators = new Map(recordTypes.map((type) => [
1074
+ type.typename,
1075
+ createGenerator(client, invokePromise, type)
1076
+ ]));
1077
+ return new Map([
1078
+ ...staticGenerators,
1079
+ ...presets.items,
1080
+ ...recordGenerators
925
1081
  ]);
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
- }
1082
+ }, [
1083
+ client,
1084
+ recordTypes,
1085
+ invokePromise
1086
+ ]);
1087
+ const updateInfo = async () => {
1088
+ const echoSchema = await space.db.schemaRegistry.query().run();
1089
+ const staticSchema = await space.db.graph.schemaRegistry.query().run();
1090
+ const objects = await space.db.query(Filter3.everything()).run();
1091
+ const objectMap = sortKeys(objects.reduce((map, obj) => {
1092
+ const type = Obj2.getTypename(obj);
1093
+ if (type) {
1094
+ const count2 = map[type] ?? 0;
1095
+ map[type] = count2 + 1;
1096
+ }
1097
+ return map;
1098
+ }, {}));
1099
+ setInfo({
1100
+ schema: {
1101
+ static: staticSchema.length,
1102
+ mutable: echoSchema.length
1103
+ },
1104
+ objects: objectMap
1105
+ });
1106
+ };
1107
+ useAsyncEffect(updateInfo, [
1108
+ space
1109
+ ]);
1110
+ const handleCreateData = useCallback(async (typename) => {
1111
+ const constructor = typeMap.get(typename);
1112
+ if (constructor) {
1113
+ await constructor(space, count, onCreateObjects);
1114
+ await updateInfo();
1115
+ }
1116
+ }, [
1117
+ typeMap,
1118
+ count
1119
+ ]);
1120
+ return /* @__PURE__ */ React2.createElement(Panel.Root, null, /* @__PURE__ */ React2.createElement(Panel.Toolbar, {
1121
+ asChild: true
1122
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Root, null, /* @__PURE__ */ React2.createElement(IconButton2, {
1123
+ icon: "ph--arrow-clockwise--regular",
1124
+ iconOnly: true,
1125
+ label: "Refresh",
1126
+ onClick: updateInfo
1127
+ }), /* @__PURE__ */ React2.createElement(Toolbar.Separator, null), /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
1128
+ type: "number",
1129
+ placeholder: "Count",
1130
+ classNames: "w-[4rem] text-right",
1131
+ min: 1,
1132
+ max: 100,
1133
+ size: 8,
1134
+ value: count,
1135
+ onChange: (event) => setCount(parseInt(event.target.value))
1136
+ })))), /* @__PURE__ */ React2.createElement(Panel.Content, {
1137
+ asChild: true
1138
+ }, /* @__PURE__ */ React2.createElement(ScrollArea.Root, {
1139
+ thin: true,
1140
+ orientation: "vertical"
1141
+ }, /* @__PURE__ */ React2.createElement(ScrollArea.Viewport, {
1142
+ classNames: "gap-4 divide-y divide-subdued-separator"
1143
+ }, /* @__PURE__ */ React2.createElement(SchemaTable, {
1144
+ types: staticTypes,
1145
+ objects: info.objects,
1146
+ label: "Static Types",
1147
+ onClick: handleCreateData
1148
+ }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1149
+ types: recordTypes,
1150
+ objects: info.objects,
1151
+ label: "Record Types",
1152
+ onClick: handleCreateData
1153
+ }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1154
+ types: presets.types,
1155
+ objects: info.objects,
1156
+ label: "Presets",
1157
+ onClick: handleCreateData
1158
+ }), /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
1159
+ language: "json",
1160
+ classNames: "text-xs"
1161
+ }, JSON.stringify({
1162
+ space,
1163
+ ...info
1164
+ }, jsonKeyReplacer({
1165
+ truncate: true
1166
+ }), 2))))));
976
1167
  };
977
1168
 
978
- // src/components/SpaceGenerator/index.ts
1169
+ // src/containers/SpaceGenerator/index.ts
979
1170
  var SpaceGenerator_default = SpaceGenerator;
980
1171
  export {
981
1172
  SpaceGenerator_default as default
982
1173
  };
983
- //# sourceMappingURL=SpaceGenerator-AG3XGNMV.mjs.map
1174
+ //# sourceMappingURL=SpaceGenerator-SWSGJEEL.mjs.map