@dxos/plugin-debug 0.7.5-labs.c0e040f → 0.7.5-labs.d199c0f

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 (69) hide show
  1. package/dist/lib/browser/{DebugSpace-4JHYA7FG.mjs → DebugSpace-BTMTVZ6C.mjs} +2 -2
  2. package/dist/lib/browser/{SpaceGenerator-OIDM3MIN.mjs → SpaceGenerator-BPZGOSH4.mjs} +290 -111
  3. package/dist/lib/browser/SpaceGenerator-BPZGOSH4.mjs.map +7 -0
  4. package/dist/lib/browser/app-graph-builder-BZFZ6UG6.mjs +533 -0
  5. package/dist/lib/browser/app-graph-builder-BZFZ6UG6.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-UASI2CRI.mjs +72 -0
  7. package/dist/lib/browser/chunk-UASI2CRI.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +44 -8
  9. package/dist/lib/browser/index.mjs.map +3 -3
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/react-context-TCD3MNIT.mjs +16 -0
  12. package/dist/lib/browser/react-context-TCD3MNIT.mjs.map +7 -0
  13. package/dist/lib/browser/{react-surface-YAJPSHG4.mjs → react-surface-W6QLG4YJ.mjs} +191 -34
  14. package/dist/lib/browser/react-surface-W6QLG4YJ.mjs.map +7 -0
  15. package/dist/lib/browser/{settings-OIMSBZUC.mjs → settings-INPXR64L.mjs} +5 -6
  16. package/dist/lib/browser/{settings-OIMSBZUC.mjs.map → settings-INPXR64L.mjs.map} +3 -3
  17. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  18. package/dist/types/src/capabilities/app-graph-builder.d.ts +110 -110
  19. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  20. package/dist/types/src/capabilities/index.d.ts +115 -110
  21. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  22. package/dist/types/src/capabilities/react-context.d.ts +8 -0
  23. package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
  24. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  25. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  26. package/dist/types/src/components/Container.d.ts +2 -2
  27. package/dist/types/src/components/Container.d.ts.map +1 -1
  28. package/dist/types/src/components/DebugObjectPanel.d.ts +1 -2
  29. package/dist/types/src/components/DebugObjectPanel.d.ts.map +1 -1
  30. package/dist/types/src/components/DebugSettings.d.ts +1 -2
  31. package/dist/types/src/components/DebugSettings.d.ts.map +1 -1
  32. package/dist/types/src/components/DebugSpace/ObjectCreator.d.ts +1 -2
  33. package/dist/types/src/components/DebugSpace/ObjectCreator.d.ts.map +1 -1
  34. package/dist/types/src/components/DebugStatus.d.ts +1 -2
  35. package/dist/types/src/components/DebugStatus.d.ts.map +1 -1
  36. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts +1 -2
  37. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +1 -1
  38. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +1 -2
  39. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  40. package/dist/types/src/components/SpaceGenerator/presets.d.ts +3 -1
  41. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  42. package/dist/types/src/components/Wireframe.d.ts +1 -2
  43. package/dist/types/src/components/Wireframe.d.ts.map +1 -1
  44. package/dist/types/src/components/index.d.ts +4 -4
  45. package/dist/types/src/components/index.d.ts.map +1 -1
  46. package/dist/types/src/translations.d.ts +28 -0
  47. package/dist/types/src/translations.d.ts.map +1 -1
  48. package/dist/types/src/types.d.ts +44 -1
  49. package/dist/types/src/types.d.ts.map +1 -1
  50. package/package.json +49 -47
  51. package/src/DebugPlugin.tsx +12 -4
  52. package/src/capabilities/app-graph-builder.ts +292 -82
  53. package/src/capabilities/index.ts +1 -0
  54. package/src/capabilities/react-context.tsx +16 -0
  55. package/src/capabilities/react-surface.tsx +204 -27
  56. package/src/capabilities/settings.ts +0 -1
  57. package/src/components/DebugSettings.tsx +0 -3
  58. package/src/components/SpaceGenerator/ObjectGenerator.tsx +2 -2
  59. package/src/components/SpaceGenerator/SpaceGenerator.tsx +68 -2
  60. package/src/components/SpaceGenerator/presets.ts +170 -60
  61. package/src/translations.ts +28 -0
  62. package/src/types.ts +52 -1
  63. package/dist/lib/browser/SpaceGenerator-OIDM3MIN.mjs.map +0 -7
  64. package/dist/lib/browser/app-graph-builder-DCMGZAT3.mjs +0 -181
  65. package/dist/lib/browser/app-graph-builder-DCMGZAT3.mjs.map +0 -7
  66. package/dist/lib/browser/chunk-P7GHHMDB.mjs +0 -21
  67. package/dist/lib/browser/chunk-P7GHHMDB.mjs.map +0 -7
  68. package/dist/lib/browser/react-surface-YAJPSHG4.mjs.map +0 -7
  69. /package/dist/lib/browser/{DebugSpace-4JHYA7FG.mjs.map → DebugSpace-BTMTVZ6C.mjs.map} +0 -0
@@ -4,9 +4,9 @@
4
4
 
5
5
  import { type ComputeGraphModel, EmailTriggerOutput, NODE_INPUT } from '@dxos/conductor';
6
6
  import { AST, ObjectId, S, toJsonSchema } from '@dxos/echo-schema';
7
- import { FunctionTrigger, TriggerKind } from '@dxos/functions/types';
7
+ import { FunctionTrigger, TriggerKind, type TriggerType } from '@dxos/functions/types';
8
8
  import { invariant } from '@dxos/invariant';
9
- import { DXN, SpaceId } from '@dxos/keys';
9
+ import { DXN } from '@dxos/keys';
10
10
  import { create, makeRef } from '@dxos/live-object';
11
11
  import { Filter, type Space } from '@dxos/react-client/echo';
12
12
  import {
@@ -19,6 +19,7 @@ import {
19
19
  createGpt,
20
20
  createQueue,
21
21
  createSurface,
22
+ createRandom,
22
23
  createTemplate,
23
24
  createText,
24
25
  createTrigger,
@@ -42,7 +43,9 @@ export enum PresetName {
42
43
  EMAIL_WITH_SUMMARY = 'email-gptSummary-table',
43
44
  OBJECT_CHANGE_QUEUE = 'objectChange-queue',
44
45
  FOREX_FUNCTION_CALL = 'forex-function-call',
46
+ TIMER_TICK_QUEUE = 'timerTick-queue',
45
47
  DISCORD_MESSAGES = 'discord-messages',
48
+ KANBAN_QUEUE = 'kanban-queue',
46
49
  }
47
50
 
48
51
  export const presets = {
@@ -58,10 +61,14 @@ export const presets = {
58
61
  let functionTrigger: FunctionTrigger | undefined;
59
62
  canvasModel.builder.call((builder) => {
60
63
  const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));
61
- const triggerShape = createTrigger({ triggerKind: TriggerKind.Webhook, ...position({ x: -18, y: -2 }) });
64
+ const triggerShape = createTrigger({
65
+ spaceId: space.id,
66
+ triggerKind: TriggerKind.Webhook,
67
+ ...position({ x: -18, y: -2 }),
68
+ });
62
69
  const trigger = canvasModel.createNode(triggerShape);
63
70
  const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));
64
- const { queueId } = setupQueue(canvasModel);
71
+ const { queueId } = setupQueue(space, canvasModel);
65
72
  const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
66
73
 
67
74
  builder
@@ -88,55 +95,12 @@ export const presets = {
88
95
  PresetName.OBJECT_CHANGE_QUEUE,
89
96
  async (space, n, cb) => {
90
97
  const objects = range(n, () => {
91
- const canvasModel = CanvasGraphModel.create<ComputeShape>();
92
-
93
- const template = canvasModel.createNode(
94
- createTemplate({
95
- valueType: 'object',
96
- ...rawPosition({ centerX: -64, centerY: -79, width: 320, height: 320 }),
97
- }),
98
+ const { canvasModel, computeModel } = createQueueSinkPreset(
99
+ space,
100
+ TriggerKind.Subscription,
101
+ (triggerSpec) => (triggerSpec.filter = { type: 'dxn:type:dxos.org/type/Chess' }),
102
+ 'type',
98
103
  );
99
-
100
- let functionTrigger: FunctionTrigger | undefined;
101
- canvasModel.builder.call((builder) => {
102
- const triggerShape = createTrigger({
103
- triggerKind: TriggerKind.Subscription,
104
- ...position({ x: -18, y: -2 }),
105
- });
106
- const trigger = canvasModel.createNode(triggerShape);
107
- const { queueId } = setupQueue(canvasModel, {
108
- queuePosition: { centerX: -80, centerY: 378, width: 320, height: 448 },
109
- });
110
- const append = canvasModel.createNode(
111
- createAppend(rawPosition({ centerX: 320, centerY: 192, width: 128, height: 122 })),
112
- );
113
-
114
- builder
115
- .createEdge({ source: queueId.id, target: append.id, input: 'id' })
116
- .createEdge({ source: template.id, target: append.id, input: 'items' })
117
- .createEdge({ source: trigger.id, target: template.id, output: 'type', input: 'type' })
118
- .createEdge({
119
- source: trigger.id,
120
- target: template.id,
121
- output: 'changedObjectId',
122
- input: 'changedObjectId',
123
- });
124
-
125
- functionTrigger = triggerShape.functionTrigger!.target!;
126
- const triggerSpec = functionTrigger.spec;
127
- invariant(triggerSpec && triggerSpec.type === TriggerKind.Subscription, 'No trigger spec.');
128
- triggerSpec.filter = { type: 'dxn:type:dxos.org/type/Chess' };
129
- });
130
-
131
- const computeModel = createComputeGraph(canvasModel);
132
-
133
- const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
134
- invariant(templateComputeNode, 'Template compute node was not created.');
135
- templateComputeNode.value = ['{', ' "@type": "{{type}}",', ' "id": "{{changedObjectId}}"', '}'].join('\n');
136
- templateComputeNode.inputSchema = toJsonSchema(S.Struct({ type: S.String, changedObjectId: S.String }));
137
-
138
- attachTrigger(functionTrigger, computeModel);
139
-
140
104
  return addToSpace(PresetName.OBJECT_CHANGE_QUEUE, space, canvasModel, computeModel);
141
105
  });
142
106
  cb?.(objects);
@@ -144,6 +108,23 @@ export const presets = {
144
108
  },
145
109
  ],
146
110
 
111
+ [
112
+ PresetName.TIMER_TICK_QUEUE,
113
+ async (space, n, cb) => {
114
+ const objects = range(n, () => {
115
+ const { canvasModel, computeModel } = createQueueSinkPreset(
116
+ space,
117
+ TriggerKind.Timer,
118
+ (triggerSpec) => (triggerSpec.cron = '*/5 * * * * *'),
119
+ 'result',
120
+ );
121
+ return addToSpace(PresetName.TIMER_TICK_QUEUE, space, canvasModel, computeModel);
122
+ });
123
+ cb?.(objects);
124
+ return objects;
125
+ },
126
+ ],
127
+
147
128
  [
148
129
  PresetName.EMAIL_TABLE,
149
130
  async (space, n, cb) => {
@@ -164,7 +145,11 @@ export const presets = {
164
145
 
165
146
  let functionTrigger: FunctionTrigger | undefined;
166
147
  canvasModel.builder.call((builder) => {
167
- const triggerShape = createTrigger({ triggerKind: TriggerKind.Email, ...position({ x: -18, y: -2 }) });
148
+ const triggerShape = createTrigger({
149
+ spaceId: space.id,
150
+ triggerKind: TriggerKind.Email,
151
+ ...position({ x: -18, y: -2 }),
152
+ });
168
153
  const trigger = canvasModel.createNode(triggerShape);
169
154
 
170
155
  const tableId = canvasModel.createNode(
@@ -217,7 +202,7 @@ export const presets = {
217
202
  const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));
218
203
  const chat = canvasModel.createNode(createChat(position({ x: -18, y: -2 })));
219
204
  const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));
220
- const { queueId } = setupQueue(canvasModel);
205
+ const { queueId } = setupQueue(space, canvasModel);
221
206
 
222
207
  const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
223
208
 
@@ -267,12 +252,13 @@ export const presets = {
267
252
  }),
268
253
  );
269
254
  const triggerShape = createTrigger({
255
+ spaceId: space.id,
270
256
  triggerKind: TriggerKind.Email,
271
257
  ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),
272
258
  });
273
259
  const trigger = canvasModel.createNode(triggerShape);
274
260
 
275
- const { queueId } = setupQueue(canvasModel, {
261
+ const { queueId } = setupQueue(space, canvasModel, {
276
262
  idPosition: { centerX: -720, centerY: 224, width: 192, height: 256 },
277
263
  queuePosition: { centerX: -144, centerY: 416, width: 320, height: 448 },
278
264
  });
@@ -329,6 +315,7 @@ export const presets = {
329
315
  return objects;
330
316
  },
331
317
  ],
318
+
332
319
  [
333
320
  PresetName.FOREX_FUNCTION_CALL,
334
321
  async (space, n, cb) => {
@@ -359,20 +346,28 @@ export const presets = {
359
346
  return objects;
360
347
  },
361
348
  ],
349
+
362
350
  [
363
351
  PresetName.DISCORD_MESSAGES,
364
352
  async (space, n, cb) => {
365
353
  const objects = range(n, () => {
366
354
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
367
355
 
356
+ let functionTrigger: FunctionTrigger | undefined;
368
357
  canvasModel.builder.call((builder) => {
369
- // DXOS general channel.
358
+ const triggerShape = createTrigger({
359
+ spaceId: space.id,
360
+ triggerKind: TriggerKind.Timer,
361
+ ...position({ x: -10, y: -5 }),
362
+ });
363
+ const trigger = canvasModel.createNode(triggerShape);
364
+ // DXOS dev-null channel.
370
365
  const channelId = canvasModel.createNode(
371
- createConstant({ value: '837138313172353098', ...position({ x: -10, y: -5 }) }),
366
+ createConstant({ value: '1088569858767212554', ...position({ x: -10, y: 0 }) }),
372
367
  );
373
368
  const queueId = canvasModel.createNode(
374
369
  createConstant({
375
- value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),
370
+ value: new DXN(DXN.kind.QUEUE, ['data', space.id, ObjectId.random()]).toString(),
376
371
  ...position({ x: -10, y: 5 }),
377
372
  }),
378
373
  );
@@ -381,13 +376,17 @@ export const presets = {
381
376
  const queue = canvasModel.createNode(createQueue(position({ x: 0, y: 12 })));
382
377
 
383
378
  builder
384
- .createEdge({ source: queueId.id, target: converter.id, input: 'queueId' })
379
+ .createEdge({ source: trigger.id, target: converter.id, input: 'tick' })
385
380
  .createEdge({ source: channelId.id, target: converter.id, input: 'channelId' })
381
+ .createEdge({ source: queueId.id, target: converter.id, input: 'queueId' })
386
382
  .createEdge({ source: converter.id, target: view.id, output: 'newMessages' })
387
383
  .createEdge({ source: queueId.id, target: queue.id, input: 'input' });
384
+
385
+ functionTrigger = triggerShape.functionTrigger!.target!;
388
386
  });
389
387
 
390
388
  const computeModel = createComputeGraph(canvasModel);
389
+ attachTrigger(functionTrigger, computeModel);
391
390
 
392
391
  return addToSpace(PresetName.DISCORD_MESSAGES, space, canvasModel, computeModel);
393
392
  });
@@ -395,9 +394,119 @@ export const presets = {
395
394
  return objects;
396
395
  },
397
396
  ],
397
+
398
+ [
399
+ PresetName.KANBAN_QUEUE,
400
+ async (space, n, cb) => {
401
+ const objects = range(n, () => {
402
+ const canvasModel = CanvasGraphModel.create<ComputeShape>();
403
+
404
+ // TODO(wittjosiah): Integrate directly w/ Kanban.
405
+ // const results = space.db.query(Filter.schema(KanbanType)).runSync();
406
+ // const kanban = results.find((r) => r.object?.cardView?.target?.query?.type?.endsWith('Message'));
407
+ // invariant(kanban, 'Kanban not found.');
408
+
409
+ const results = space.db.query(Filter.schema(TableType)).runSync();
410
+ const messages = results.find((r) => r.object?.view?.target?.query?.type?.endsWith('Message'));
411
+ invariant(messages, 'Table not found.');
412
+
413
+ let functionTrigger: FunctionTrigger | undefined;
414
+ canvasModel.builder.call((builder) => {
415
+ const triggerShape = createTrigger({
416
+ spaceId: space.id,
417
+ triggerKind: TriggerKind.Queue,
418
+ ...position({ x: -10, y: -5 }),
419
+ });
420
+ const trigger = canvasModel.createNode(triggerShape);
421
+
422
+ const tableId = canvasModel.createNode(
423
+ createConstant({
424
+ value: DXN.fromLocalObjectId(messages.id).toString(),
425
+ ...position({ x: -10, y: 5 }),
426
+ }),
427
+ );
428
+ const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 0 })));
429
+
430
+ builder
431
+ .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })
432
+ .createEdge({ source: trigger.id, target: appendToTable.id, input: 'items', output: 'item' });
433
+
434
+ functionTrigger = triggerShape.functionTrigger!.target!;
435
+ });
436
+
437
+ const computeModel = createComputeGraph(canvasModel);
438
+ attachTrigger(functionTrigger, computeModel);
439
+
440
+ return addToSpace(PresetName.KANBAN_QUEUE, space, canvasModel, computeModel);
441
+ });
442
+ cb?.(objects);
443
+ return objects;
444
+ },
445
+ ],
398
446
  ] as [PresetName, ObjectGenerator<any>][],
399
447
  };
400
448
 
449
+ const createQueueSinkPreset = <SpecType extends TriggerKind>(
450
+ space: Space,
451
+ triggerKind: SpecType,
452
+ initSpec: (spec: Extract<TriggerType, { type: SpecType }>) => void,
453
+ triggerOutputName: string,
454
+ ) => {
455
+ const canvasModel = CanvasGraphModel.create<ComputeShape>();
456
+
457
+ const template = canvasModel.createNode(
458
+ createTemplate({
459
+ valueType: 'object',
460
+ ...rawPosition({ centerX: -64, centerY: -79, width: 320, height: 320 }),
461
+ }),
462
+ );
463
+
464
+ let functionTrigger: FunctionTrigger | undefined;
465
+ canvasModel.builder.call((builder) => {
466
+ const triggerShape = createTrigger({
467
+ spaceId: space.id,
468
+ triggerKind,
469
+ ...rawPosition({ centerX: -578, centerY: -187, height: 320, width: 320 }),
470
+ });
471
+ const trigger = canvasModel.createNode(triggerShape);
472
+ const { queueId } = setupQueue(space, canvasModel, {
473
+ queuePosition: { centerX: -80, centerY: 378, width: 320, height: 448 },
474
+ });
475
+ const append = canvasModel.createNode(
476
+ createAppend(rawPosition({ centerX: 320, centerY: 192, width: 128, height: 122 })),
477
+ );
478
+ const random = canvasModel.createNode(
479
+ createRandom(rawPosition({ centerX: -509, centerY: -30, width: 64, height: 64 })),
480
+ );
481
+
482
+ builder
483
+ .createEdge({ source: queueId.id, target: append.id, input: 'id' })
484
+ .createEdge({ source: template.id, target: append.id, input: 'items' })
485
+ .createEdge({ source: trigger.id, target: template.id, output: triggerOutputName, input: 'type' })
486
+ .createEdge({
487
+ source: random.id,
488
+ target: template.id,
489
+ input: 'changeId',
490
+ });
491
+
492
+ functionTrigger = triggerShape.functionTrigger!.target!;
493
+ const triggerSpec = functionTrigger.spec;
494
+ invariant(triggerSpec && triggerSpec.type === triggerKind, 'No trigger spec.');
495
+ initSpec(triggerSpec as any);
496
+ });
497
+
498
+ const computeModel = createComputeGraph(canvasModel);
499
+
500
+ const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
501
+ invariant(templateComputeNode, 'Template compute node was not created.');
502
+ templateComputeNode.value = ['{', ' "@type": "{{type}}",', ' "id": "@{{changeId}}"', '}'].join('\n');
503
+ templateComputeNode.inputSchema = toJsonSchema(S.Struct({ type: S.String, changeId: S.String }));
504
+
505
+ attachTrigger(functionTrigger, computeModel);
506
+
507
+ return { canvasModel, computeModel };
508
+ };
509
+
401
510
  const addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {
402
511
  return space.db.add(
403
512
  create(CanvasBoardType, {
@@ -409,12 +518,13 @@ const addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, comput
409
518
  };
410
519
 
411
520
  const setupQueue = (
521
+ space: Space,
412
522
  canvasModel: CanvasGraphModel,
413
523
  args?: { idPosition?: RawPositionInput; queuePosition?: RawPositionInput },
414
524
  ) => {
415
525
  const queueId = canvasModel.createNode(
416
526
  createConstant({
417
- value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),
527
+ value: new DXN(DXN.kind.QUEUE, ['data', space.id, ObjectId.random()]).toString(),
418
528
  ...(args?.idPosition ? rawPosition(args.idPosition) : position({ x: -18, y: 5, width: 8, height: 6 })),
419
529
  }),
420
530
  );
@@ -31,6 +31,34 @@ export default [
31
31
  'Warning: Swapping the storage adapter will make your data unavailable.',
32
32
  'settings space fragmentation': 'Enable AM space fragmentation',
33
33
  'open debug panel label': 'Show Debug',
34
+ 'client label': 'Client',
35
+ 'config label': 'Config',
36
+ 'storage label': 'Storage',
37
+ 'logs label': 'Logs',
38
+ 'diagnostics label': 'Diagnostics',
39
+ 'tracing label': 'Tracing',
40
+ 'halo label': 'HALO',
41
+ 'identity label': 'Identity',
42
+ 'devices label': 'Devices',
43
+ 'keyring label': 'Keyring',
44
+ 'credentials label': 'Credentials',
45
+ 'echo label': 'ECHO',
46
+ 'spaces label': 'Spaces',
47
+ 'space label': 'Space',
48
+ 'feeds label': 'Feeds',
49
+ 'objects label': 'Objects',
50
+ 'automerge label': 'Automerge',
51
+ 'members label': 'Members',
52
+ 'metadata label': 'Metadata',
53
+ 'mesh label': 'Mesh',
54
+ 'signal label': 'Signal',
55
+ 'swarm label': 'Swarm',
56
+ 'network label': 'Network',
57
+ 'agent label': 'Agent',
58
+ 'dashboard label': 'Dashboard',
59
+ 'search label': 'Search',
60
+ 'edge label': 'Edge',
61
+ 'workflows label': 'Workflows',
34
62
  },
35
63
  },
36
64
  },
package/src/types.ts CHANGED
@@ -21,10 +21,61 @@ export const DebugContext: Context<DebugContextType> = createContext<DebugContex
21
21
 
22
22
  export const DebugSettingsSchema = S.mutable(
23
23
  S.Struct({
24
- devtools: S.optional(S.Boolean),
25
24
  debug: S.optional(S.Boolean),
26
25
  wireframe: S.optional(S.Boolean),
27
26
  }),
28
27
  );
29
28
 
30
29
  export interface DebugSettingsProps extends S.Schema.Type<typeof DebugSettingsSchema> {}
30
+
31
+ export namespace Devtools {
32
+ // TODO(wittjosiah): Cannot use slashes in ids until we have a router which decouples ids from url paths.
33
+ export const id = 'dxos.org.plugin.debug.devtools';
34
+
35
+ export namespace Client {
36
+ export const id = `${Devtools.id}.client`;
37
+ export const Config = `${Devtools.Client.id}.config`;
38
+ export const Storage = `${Devtools.Client.id}.storage`;
39
+ export const Logs = `${Devtools.Client.id}.logs`;
40
+ export const Diagnostics = `${Devtools.Client.id}.diagnostics`;
41
+ export const Tracing = `${Devtools.Client.id}.tracing`;
42
+ }
43
+
44
+ export namespace Halo {
45
+ export const id = `${Devtools.id}.halo`;
46
+ export const Identity = `${Devtools.Halo.id}.identity`;
47
+ export const Devices = `${Devtools.Halo.id}.devices`;
48
+ export const Keyring = `${Devtools.Halo.id}.keyring`;
49
+ export const Credentials = `${Devtools.Halo.id}.credentials`;
50
+ }
51
+
52
+ export namespace Echo {
53
+ export const id = `${Devtools.id}.echo`;
54
+ export const Spaces = `${Devtools.Echo.id}.spaces`;
55
+ export const Space = `${Devtools.Echo.id}.space`;
56
+ export const Feeds = `${Devtools.Echo.id}.feeds`;
57
+ export const Objects = `${Devtools.Echo.id}.objects`;
58
+ export const Automerge = `${Devtools.Echo.id}.automerge`;
59
+ export const Members = `${Devtools.Echo.id}.members`;
60
+ export const Metadata = `${Devtools.Echo.id}.metadata`;
61
+ }
62
+
63
+ export namespace Mesh {
64
+ export const id = `${Devtools.id}.mesh`;
65
+ export const Signal = `${Devtools.Mesh.id}.signal`;
66
+ export const Swarm = `${Devtools.Mesh.id}.swarm`;
67
+ export const Network = `${Devtools.Mesh.id}.network`;
68
+ }
69
+
70
+ export namespace Agent {
71
+ export const id = `${Devtools.id}.agent`;
72
+ export const Dashboard = `${Devtools.Agent.id}.dashboard`;
73
+ export const Search = `${Devtools.Agent.id}.search`;
74
+ }
75
+
76
+ export namespace Edge {
77
+ export const id = `${Devtools.id}.edge`;
78
+ export const Dashboard = `${Devtools.Edge.id}.dashboard`;
79
+ export const Workflows = `${Devtools.Edge.id}.workflows`;
80
+ }
81
+ }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/SpaceGenerator/SpaceGenerator.tsx", "../../../src/components/SpaceGenerator/ObjectGenerator.tsx", "../../../src/components/SpaceGenerator/SchemaTable.tsx", "../../../src/components/SpaceGenerator/presets.ts", "../../../src/components/SpaceGenerator/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { ComputeGraph } from '@dxos/conductor';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { SheetType } from '@dxos/plugin-sheet/types';\nimport { DiagramType } from '@dxos/plugin-sketch/types';\nimport { useClient } from '@dxos/react-client';\nimport { getTypename, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, Toolbar, useAsyncEffect } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { Testing } from '@dxos/schema/testing';\nimport { jsonKeyReplacer, sortKeys } from '@dxos/util';\n\nimport { type ObjectGenerator, createGenerator, staticGenerators } from './ObjectGenerator';\nimport { SchemaTable } from './SchemaTable';\nimport { presets } from './presets';\n\nexport type SpaceGeneratorProps = {\n space: Space;\n onCreateObjects?: (objects: ReactiveObject<any>[]) => void;\n};\n\nexport const SpaceGenerator = ({ space, onCreateObjects }: SpaceGeneratorProps) => {\n const client = useClient();\n const staticTypes = [DocumentType, DiagramType, SheetType, ComputeGraph]; // TODO(burdon): Make extensible.\n const mutableTypes = [Testing.OrgType, Testing.ProjectType, Testing.ContactType, Testing.EmailType];\n const [count, setCount] = useState(1);\n const [info, setInfo] = useState<any>({});\n\n // Create type generators.\n const typeMap = useMemo(() => {\n client.addTypes([...staticTypes, ...presets.schemas]);\n const mutableGenerators = new Map<string, ObjectGenerator<any>>(\n mutableTypes.map((type) => [type.typename, createGenerator(type as any)]),\n );\n\n return new Map([...staticGenerators, ...presets.items, ...mutableGenerators]);\n }, [client, mutableTypes]);\n\n // Query space to get info.\n const updateInfo = async () => {\n // Create schema map.\n const echoSchema = await space.db.schemaRegistry.query().run();\n const staticSchema = space.db.graph.schemaRegistry.schemas;\n\n // Create object map.\n const { objects } = await space.db.query().run();\n const objectMap = sortKeys(\n objects.reduce<Record<string, number>>((map, obj) => {\n const type = getTypename(obj);\n if (type) {\n const count = map[type] ?? 0;\n map[type] = count + 1;\n }\n return map;\n }, {}),\n );\n\n setInfo({\n schema: {\n static: staticSchema.length,\n mutable: echoSchema.length,\n },\n objects: objectMap,\n });\n };\n\n useAsyncEffect(updateInfo, [space]);\n\n const handleCreateData = useCallback(\n async (typename: string) => {\n const constructor = typeMap.get(typename);\n if (constructor) {\n // TODO(burdon): Input to specify number of objects.\n await constructor(space, count, onCreateObjects);\n await updateInfo();\n }\n },\n [typeMap, count],\n );\n\n return (\n <div role='none' className='flex flex-col divide-y divide-separator'>\n <Toolbar.Root classNames='p-1'>\n <IconButton icon='ph--arrow-clockwise--regular' iconOnly label='Refresh' onClick={updateInfo} />\n <Toolbar.Separator variant='gap' />\n <div className='flex'>\n <Input.Root>\n <Input.TextInput\n type='number'\n min={1}\n max={100}\n placeholder={'Count'}\n classNames='w-[80px]'\n value={count}\n onChange={(ev) => setCount(parseInt(ev.target.value))}\n />\n </Input.Root>\n </div>\n </Toolbar.Root>\n\n <SchemaTable types={staticTypes} objects={info.objects} label='Static Types' onClick={handleCreateData} />\n <SchemaTable types={mutableTypes} objects={info.objects} label='Mutable Types' onClick={handleCreateData} />\n <SchemaTable types={presets.types} objects={info.objects} label='Presets' onClick={handleCreateData} />\n\n <SyntaxHighlighter classNames='flex text-xs' language='json'>\n {JSON.stringify({ space, ...info }, jsonKeyReplacer({ truncate: true }), 2)}\n </SyntaxHighlighter>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { addressToA1Notation } from '@dxos/compute';\nimport { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from '@dxos/conductor';\nimport { ObjectId, type BaseObject, type TypedObject } from '@dxos/echo-schema';\nimport { DXN, SpaceId } from '@dxos/keys';\nimport { create, makeRef, type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { createSheet } from '@dxos/plugin-sheet/types';\nimport { SheetType, type CellValue } from '@dxos/plugin-sheet/types';\nimport { CanvasType, DiagramType } from '@dxos/plugin-sketch/types';\nimport { faker } from '@dxos/random';\nimport { Filter, type Space } from '@dxos/react-client/echo';\nimport { TableType } from '@dxos/react-ui-table';\nimport { createView, TextType } from '@dxos/schema';\nimport { createAsyncGenerator, type ValueGenerator } from '@dxos/schema/testing';\nimport { range } from '@dxos/util';\n\nconst generator: ValueGenerator = faker as any;\n\n// TODO(burdon): Add objects to collections.\n// TODO(burdon): Create docs.\n// TODO(burdon): Create sketches.\n// TODO(burdon): Create sheets.\n// TODO(burdon): Create comments.\n// TODO(burdon): Reuse in testbench-app.\n// TODO(burdon): Mutator running in background (factor out): from echo-generator.\n\nexport type ObjectGenerator<T extends BaseObject> = (\n space: Space,\n n: number,\n cb?: (objects: ReactiveObject<any>[]) => void,\n) => Promise<ReactiveObject<T>[]>;\n\nexport const staticGenerators = new Map<string, ObjectGenerator<any>>([\n [\n DocumentType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n return space.db.add(\n create(DocumentType, {\n name: faker.commerce.productName(),\n content: makeRef(create(TextType, { content: faker.lorem.sentences(5) })),\n threads: [],\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n DiagramType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n // TODO(burdon): Generate diagram.\n const obj = space.db.add(\n create(DiagramType, {\n name: faker.commerce.productName(),\n canvas: makeRef(create(CanvasType, { content: {} })),\n }),\n );\n\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n // TODO(burdon): Create unit tests.\n [\n SheetType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const cells: Record<string, CellValue> = {};\n const year = new Date().getFullYear();\n const cols = 4;\n const rows = 16;\n for (let col = 1; col <= cols; col++) {\n for (let row = 1; row <= rows; row++) {\n const cell = addressToA1Notation({ col, row });\n if (row === 1) {\n cells[cell] = { value: `${year} Q${col}` };\n } else if (row === rows) {\n const from = addressToA1Notation({ col, row: 2 });\n const to = addressToA1Notation({ col, row: rows - 1 });\n cells[cell] = { value: `=SUM(${from}:${to})` };\n } else if (row > 2 && row < rows - 1) {\n cells[cell] = { value: Math.floor(Math.random() * 10_000) };\n }\n }\n }\n\n // TODO(burdon): Set width.\n // TODO(burdon): Set formatting for columns.\n return space.db.add(\n createSheet({\n name: faker.commerce.productName(),\n cells,\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n ComputeGraph.typename,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const model = ComputeGraphModel.create();\n model.builder\n .createNode({ id: 'gpt-INPUT', type: NODE_INPUT })\n .createNode({ id: 'gpt-GPT', type: 'gpt' })\n .createNode({\n id: 'gpt-QUEUE_ID',\n type: 'constant',\n value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),\n })\n .createNode({ id: 'gpt-APPEND', type: 'append' })\n .createNode({ id: 'gpt-OUTPUT', type: NODE_OUTPUT })\n .createEdge({ node: 'gpt-INPUT', property: 'prompt' }, { node: 'gpt-GPT', property: 'prompt' })\n .createEdge({ node: 'gpt-GPT', property: 'text' }, { node: 'gpt-OUTPUT', property: 'text' })\n .createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-APPEND', property: 'id' })\n .createEdge({ node: 'gpt-GPT', property: 'messages' }, { node: 'gpt-APPEND', property: 'items' })\n .createEdge({ node: 'gpt-QUEUE_ID', property: DEFAULT_OUTPUT }, { node: 'gpt-OUTPUT', property: 'queue' });\n\n return space.db.add(model.root);\n });\n cb?.(objects);\n return objects;\n },\n ],\n]);\n\nexport const createGenerator = <T extends BaseObject>(type: TypedObject<T>): ObjectGenerator<T> => {\n return async (\n space: Space,\n n: number,\n cb?: (objects: ReactiveObject<any>[]) => void,\n ): Promise<ReactiveObject<T>[]> => {\n // Find or create mutable schema.\n const schema =\n (await space.db.schemaRegistry.query({ typename: type.typename }).firstOrUndefined()) ??\n (await space.db.schemaRegistry.register([type]))[0];\n\n // Create objects.\n const generate = createAsyncGenerator(generator, schema.getSchemaSnapshot(), { db: space.db });\n const objects = await generate.createObjects(n);\n\n // Find or create table and view.\n const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();\n const table = tables.find((table) => table.view?.target?.query?.type === type.typename);\n if (!table) {\n const name = type.typename.split('/').pop() ?? type.typename;\n const view = createView({ name, typename: type.typename, jsonSchema: schema.jsonSchema });\n const table = space.db.add(create(TableType, { name, view: makeRef(view) }));\n cb?.([table]);\n }\n\n return objects;\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { IconButton } from '@dxos/react-ui';\n\nexport type SchemaTableProps = {\n types: any[];\n objects?: Record<string, number | undefined>;\n label: string;\n onClick: (typename: string) => void;\n};\n\nexport const SchemaTable = ({ types, objects = {}, label, onClick }: SchemaTableProps) => {\n return (\n <div className='grid grid-cols-[1fr_80px_40px] gap-1 overflow-hidden'>\n <div className='grid grid-cols-subgrid col-span-3'>\n <div className='px-2 text-sm text-primary-500'>{label}</div>\n <div className='px-2 text-xs text-subdued text-right'>count</div>\n </div>\n {types.map((type) => (\n <div key={type.typename} className='grid grid-cols-subgrid col-span-3 items-center'>\n <div className='px-2 text-sm font-mono text-green-500'>{type.typename}</div>\n <div className='px-2 text-right font-mono'>{objects[type.typename] ?? 0}</div>\n <IconButton\n variant='ghost'\n icon='ph--plus--regular'\n iconOnly\n label='Create data'\n onClick={() => onClick(type.typename)}\n />\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComputeGraphModel, EmailTriggerOutput, NODE_INPUT } from '@dxos/conductor';\nimport { AST, ObjectId, S, toJsonSchema } from '@dxos/echo-schema';\nimport { FunctionTrigger, TriggerKind } from '@dxos/functions/types';\nimport { invariant } from '@dxos/invariant';\nimport { DXN, SpaceId } from '@dxos/keys';\nimport { create, makeRef } from '@dxos/live-object';\nimport { Filter, type Space } from '@dxos/react-client/echo';\nimport {\n type ComputeShape,\n createAppend,\n createChat,\n createComputeGraph,\n createConstant,\n createFunction,\n createGpt,\n createQueue,\n createSurface,\n createTemplate,\n createText,\n createTrigger,\n} from '@dxos/react-ui-canvas-compute';\nimport {\n CanvasBoardType,\n CanvasGraphModel,\n pointMultiply,\n pointsToRect,\n rectToPoints,\n} from '@dxos/react-ui-canvas-editor';\nimport { TableType } from '@dxos/react-ui-table';\nimport { range } from '@dxos/util';\n\nimport { type ObjectGenerator } from './ObjectGenerator';\n\nexport enum PresetName {\n EMAIL_TABLE = 'email-table',\n GPT_QUEUE = 'webhook-gpt-queue',\n CHAT_GPT = 'chat-gpt-text',\n EMAIL_WITH_SUMMARY = 'email-gptSummary-table',\n OBJECT_CHANGE_QUEUE = 'objectChange-queue',\n FOREX_FUNCTION_CALL = 'forex-function-call',\n DISCORD_MESSAGES = 'discord-messages',\n}\n\nexport const presets = {\n schemas: [CanvasBoardType, FunctionTrigger],\n types: Object.values(PresetName).map((name) => ({ typename: name })),\n items: [\n [\n PresetName.GPT_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n let functionTrigger: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const triggerShape = createTrigger({ triggerKind: TriggerKind.Webhook, ...position({ x: -18, y: -2 }) });\n const trigger = canvasModel.createNode(triggerShape);\n const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));\n const { queueId } = setupQueue(canvasModel);\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n builder\n .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'bodyText' })\n .createEdge({ source: gpt.id, target: text.id, output: 'text' })\n .createEdge({ source: queueId.id, target: append.id, input: 'id' })\n .createEdge({ source: gpt.id, target: append.id, output: 'messages', input: 'items' });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.GPT_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.OBJECT_CHANGE_QUEUE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n const template = canvasModel.createNode(\n createTemplate({\n valueType: 'object',\n ...rawPosition({ centerX: -64, centerY: -79, width: 320, height: 320 }),\n }),\n );\n\n let functionTrigger: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const triggerShape = createTrigger({\n triggerKind: TriggerKind.Subscription,\n ...position({ x: -18, y: -2 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n const { queueId } = setupQueue(canvasModel, {\n queuePosition: { centerX: -80, centerY: 378, width: 320, height: 448 },\n });\n const append = canvasModel.createNode(\n createAppend(rawPosition({ centerX: 320, centerY: 192, width: 128, height: 122 })),\n );\n\n builder\n .createEdge({ source: queueId.id, target: append.id, input: 'id' })\n .createEdge({ source: template.id, target: append.id, input: 'items' })\n .createEdge({ source: trigger.id, target: template.id, output: 'type', input: 'type' })\n .createEdge({\n source: trigger.id,\n target: template.id,\n output: 'changedObjectId',\n input: 'changedObjectId',\n });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n const triggerSpec = functionTrigger.spec;\n invariant(triggerSpec && triggerSpec.type === TriggerKind.Subscription, 'No trigger spec.');\n triggerSpec.filter = { type: 'dxn:type:dxos.org/type/Chess' };\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n invariant(templateComputeNode, 'Template compute node was not created.');\n templateComputeNode.value = ['{', ' \"@type\": \"{{type}}\",', ' \"id\": \"{{changedObjectId}}\"', '}'].join('\\n');\n templateComputeNode.inputSchema = toJsonSchema(S.Struct({ type: S.String, changedObjectId: S.String }));\n\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.OBJECT_CHANGE_QUEUE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.EMAIL_TABLE,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n const results = space.db.query(Filter.schema(TableType)).runSync();\n const emailTable = results.find((r) => r.object?.view?.target?.query?.type?.endsWith('Email'));\n invariant(emailTable, 'Email table not found.');\n\n const template = canvasModel.createNode(\n createTemplate({\n valueType: 'object',\n ...rawPosition({ centerX: -80, centerY: -64, width: 320, height: 320 }),\n }),\n );\n const templateContent = ['{'];\n\n let functionTrigger: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const triggerShape = createTrigger({ triggerKind: TriggerKind.Email, ...position({ x: -18, y: -2 }) });\n const trigger = canvasModel.createNode(triggerShape);\n\n const tableId = canvasModel.createNode(\n createConstant({\n value: DXN.fromLocalObjectId(emailTable.id).toString(),\n ...position({ x: -18, y: 5, width: 8, height: 6 }),\n }),\n );\n\n const appendToTable = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n const properties = AST.getPropertySignatures(EmailTriggerOutput.ast);\n for (let i = 0; i < properties.length; i++) {\n const propName = properties[i].name.toString();\n builder.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });\n templateContent.push(` \"${propName}\": \"{{${propName}}}\"` + (i === properties.length - 1 ? '' : ','));\n }\n templateContent.push('}');\n\n builder\n .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n invariant(templateComputeNode, 'Template compute node was not created.');\n templateComputeNode.value = templateContent.join('\\n');\n templateComputeNode.inputSchema = toJsonSchema(EmailTriggerOutput);\n\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.EMAIL_TABLE, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.CHAT_GPT,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n canvasModel.builder.call((builder) => {\n const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));\n const chat = canvasModel.createNode(createChat(position({ x: -18, y: -2 })));\n const text = canvasModel.createNode(createText(position({ x: 19, y: 3, width: 10, height: 10 })));\n const { queueId } = setupQueue(canvasModel);\n\n const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));\n\n builder\n .createEdge({ source: chat.id, target: gpt.id, input: 'prompt' })\n .createEdge({ source: gpt.id, target: text.id, output: 'text' })\n .createEdge({ source: queueId.id, target: append.id, input: 'id' })\n .createEdge({ source: gpt.id, target: append.id, output: 'messages', input: 'items' });\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.CHAT_GPT, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n\n [\n PresetName.EMAIL_WITH_SUMMARY,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n const results = space.db.query(Filter.schema(TableType)).runSync();\n const emailTable = results.find((r) => r.object?.view?.target?.query?.type?.endsWith('Email'));\n invariant(emailTable, 'Email table not found.');\n\n const template = canvasModel.createNode(\n createTemplate({\n valueType: 'object',\n ...rawPosition({ centerX: 192, centerY: -176, width: 320, height: 320 }),\n }),\n );\n const templateContent = ['{'];\n\n let functionTrigger: FunctionTrigger | undefined;\n canvasModel.builder.call((builder) => {\n const gpt = canvasModel.createNode(\n createGpt(rawPosition({ centerX: -400, centerY: -112, width: 256, height: 202 })),\n );\n const systemPrompt = canvasModel.createNode(\n createConstant({\n value: \"use one word to describe content category. don't write anything else\",\n ...rawPosition({ centerX: -800, centerY: -160, width: 192, height: 128 }),\n }),\n );\n const triggerShape = createTrigger({\n triggerKind: TriggerKind.Email,\n ...rawPosition({ centerX: -736, centerY: -384, width: 182, height: 192 }),\n });\n const trigger = canvasModel.createNode(triggerShape);\n\n const { queueId } = setupQueue(canvasModel, {\n idPosition: { centerX: -720, centerY: 224, width: 192, height: 256 },\n queuePosition: { centerX: -144, centerY: 416, width: 320, height: 448 },\n });\n const appendToQueue = canvasModel.createNode(\n createAppend(rawPosition({ centerX: -80, centerY: 96, width: 122, height: 128 })),\n );\n\n const tableId = canvasModel.createNode(\n createConstant({\n value: DXN.fromLocalObjectId(emailTable.id).toString(),\n ...rawPosition({ centerX: -112, centerY: -544, width: 192, height: 256 }),\n }),\n );\n\n const appendToTable = canvasModel.createNode(\n createAppend(rawPosition({ centerX: 560, centerY: -416, width: 128, height: 122 })),\n );\n\n templateContent.push(' \"category\": \"{{text}}\",');\n builder.createEdge({ source: gpt.id, target: template.id, input: 'text', output: 'text' });\n\n const properties = AST.getPropertySignatures(EmailTriggerOutput.ast);\n for (let i = 0; i < properties.length; i++) {\n const propName = properties[i].name.toString();\n builder.createEdge({ source: trigger.id, target: template.id, input: propName, output: propName });\n templateContent.push(` \"${propName}\": \"{{${propName}}}\"` + (i === properties.length - 1 ? '' : ','));\n }\n templateContent.push('}');\n\n builder\n .createEdge({ source: tableId.id, target: appendToTable.id, input: 'id' })\n .createEdge({ source: queueId.id, target: appendToQueue.id, input: 'id' })\n .createEdge({ source: gpt.id, target: appendToQueue.id, output: 'messages', input: 'items' })\n .createEdge({ source: systemPrompt.id, target: gpt.id, input: 'systemPrompt' })\n .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'body' })\n .createEdge({ source: template.id, target: appendToTable.id, input: 'items' });\n\n functionTrigger = triggerShape.functionTrigger!.target!;\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);\n invariant(templateComputeNode, 'Template compute node was not created.');\n templateComputeNode.value = templateContent.join('\\n');\n const extendedSchema = S.extend(EmailTriggerOutput, S.Struct({ text: S.String }));\n templateComputeNode.inputSchema = toJsonSchema(extendedSchema);\n\n attachTrigger(functionTrigger, computeModel);\n\n return addToSpace(PresetName.EMAIL_WITH_SUMMARY, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n [\n PresetName.FOREX_FUNCTION_CALL,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n canvasModel.builder.call((builder) => {\n const sourceCurrency = canvasModel.createNode(\n createConstant({ value: 'USD', ...position({ x: -10, y: -5 }) }),\n );\n const targetCurrency = canvasModel.createNode(\n createConstant({ value: 'EUR', ...position({ x: -10, y: 5 }) }),\n );\n const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));\n const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));\n\n builder\n .createEdge({ source: sourceCurrency.id, target: converter.id, input: 'from' })\n .createEdge({ source: targetCurrency.id, target: converter.id, input: 'to' })\n .createEdge({ source: converter.id, target: view.id, output: 'rate' });\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.FOREX_FUNCTION_CALL, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n [\n PresetName.DISCORD_MESSAGES,\n async (space, n, cb) => {\n const objects = range(n, () => {\n const canvasModel = CanvasGraphModel.create<ComputeShape>();\n\n canvasModel.builder.call((builder) => {\n // DXOS general channel.\n const channelId = canvasModel.createNode(\n createConstant({ value: '837138313172353098', ...position({ x: -10, y: -5 }) }),\n );\n const queueId = canvasModel.createNode(\n createConstant({\n value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),\n ...position({ x: -10, y: 5 }),\n }),\n );\n const converter = canvasModel.createNode(createFunction(position({ x: 0, y: 0 })));\n const view = canvasModel.createNode(createText(position({ x: 12, y: 0 })));\n const queue = canvasModel.createNode(createQueue(position({ x: 0, y: 12 })));\n\n builder\n .createEdge({ source: queueId.id, target: converter.id, input: 'queueId' })\n .createEdge({ source: channelId.id, target: converter.id, input: 'channelId' })\n .createEdge({ source: converter.id, target: view.id, output: 'newMessages' })\n .createEdge({ source: queueId.id, target: queue.id, input: 'input' });\n });\n\n const computeModel = createComputeGraph(canvasModel);\n\n return addToSpace(PresetName.DISCORD_MESSAGES, space, canvasModel, computeModel);\n });\n cb?.(objects);\n return objects;\n },\n ],\n ] as [PresetName, ObjectGenerator<any>][],\n};\n\nconst addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {\n return space.db.add(\n create(CanvasBoardType, {\n name,\n computeGraph: makeRef(compute.root),\n layout: canvas.graph,\n }),\n );\n};\n\nconst setupQueue = (\n canvasModel: CanvasGraphModel,\n args?: { idPosition?: RawPositionInput; queuePosition?: RawPositionInput },\n) => {\n const queueId = canvasModel.createNode(\n createConstant({\n value: new DXN(DXN.kind.QUEUE, ['data', SpaceId.random(), ObjectId.random()]).toString(),\n ...(args?.idPosition ? rawPosition(args.idPosition) : position({ x: -18, y: 5, width: 8, height: 6 })),\n }),\n );\n const queue = canvasModel.createNode(\n createQueue(\n args?.queuePosition ? rawPosition(args.queuePosition) : position({ x: -3, y: 3, width: 14, height: 10 }),\n ),\n );\n canvasModel.createEdge({ source: queueId.id, target: queue.id });\n return { queue, queueId };\n};\n\nconst attachTrigger = (functionTrigger: FunctionTrigger | undefined, computeModel: ComputeGraphModel) => {\n invariant(functionTrigger);\n functionTrigger.function = DXN.fromLocalObjectId(computeModel.root.id).toString();\n functionTrigger.meta ??= {};\n const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;\n functionTrigger.meta.computeNodeId = inputNode.id;\n};\n\ntype RawPositionInput = { centerX: number; centerY: number; width: number; height: number };\n\nconst rawPosition = (args: RawPositionInput) => {\n return { center: { x: args.centerX, y: args.centerY }, size: { width: args.width, height: args.height } };\n};\n\nconst position = (rect: { x: number; y: number; width?: number; height?: number }) => {\n const snap = 32;\n const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });\n const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);\n if (width && height) {\n return { center: { x, y }, size: width && height ? { width, height } : undefined };\n } else {\n return { center: { x, y } };\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SpaceGenerator } from './SpaceGenerator';\n\nexport default SpaceGenerator;\n"],
5
- "mappings": "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",
6
- "names": ["React", "useCallback", "useMemo", "useState", "ComputeGraph", "DocumentType", "SheetType", "DiagramType", "useClient", "getTypename", "IconButton", "Input", "Toolbar", "useAsyncEffect", "SyntaxHighlighter", "Testing", "jsonKeyReplacer", "sortKeys", "addressToA1Notation", "ComputeGraph", "ComputeGraphModel", "DEFAULT_OUTPUT", "NODE_INPUT", "NODE_OUTPUT", "ObjectId", "DXN", "SpaceId", "create", "makeRef", "DocumentType", "createSheet", "SheetType", "CanvasType", "DiagramType", "faker", "Filter", "TableType", "createView", "TextType", "createAsyncGenerator", "range", "generator", "faker", "staticGenerators", "Map", "DocumentType", "typename", "space", "n", "cb", "objects", "range", "map", "db", "add", "create", "name", "commerce", "productName", "content", "makeRef", "TextType", "lorem", "sentences", "threads", "DiagramType", "obj", "canvas", "CanvasType", "SheetType", "cells", "year", "Date", "getFullYear", "cols", "rows", "col", "row", "cell", "addressToA1Notation", "value", "from", "to", "Math", "floor", "random", "createSheet", "ComputeGraph", "model", "ComputeGraphModel", "builder", "createNode", "id", "type", "NODE_INPUT", "DXN", "kind", "QUEUE", "SpaceId", "ObjectId", "toString", "NODE_OUTPUT", "createEdge", "node", "property", "DEFAULT_OUTPUT", "root", "createGenerator", "schema", "schemaRegistry", "query", "firstOrUndefined", "register", "generate", "createAsyncGenerator", "getSchemaSnapshot", "createObjects", "tables", "Filter", "TableType", "run", "table", "find", "view", "target", "split", "pop", "createView", "jsonSchema", "React", "IconButton", "SchemaTable", "types", "objects", "label", "onClick", "div", "className", "map", "type", "key", "typename", "IconButton", "variant", "icon", "iconOnly", "EmailTriggerOutput", "NODE_INPUT", "AST", "ObjectId", "S", "toJsonSchema", "FunctionTrigger", "TriggerKind", "invariant", "DXN", "SpaceId", "create", "makeRef", "Filter", "createAppend", "createChat", "createComputeGraph", "createConstant", "createFunction", "createGpt", "createQueue", "createSurface", "createTemplate", "createText", "createTrigger", "CanvasBoardType", "CanvasGraphModel", "pointMultiply", "pointsToRect", "rectToPoints", "TableType", "range", "PresetName", "presets", "schemas", "types", "Object", "values", "map", "name", "typename", "items", "space", "n", "cb", "objects", "canvasModel", "functionTrigger", "builder", "call", "gpt", "createNode", "position", "x", "y", "triggerShape", "triggerKind", "Webhook", "trigger", "text", "width", "height", "queueId", "setupQueue", "append", "createEdge", "source", "id", "target", "input", "output", "computeModel", "attachTrigger", "addToSpace", "template", "valueType", "rawPosition", "centerX", "centerY", "Subscription", "queuePosition", "triggerSpec", "spec", "type", "filter", "templateComputeNode", "nodes", "find", "node", "value", "join", "inputSchema", "Struct", "String", "changedObjectId", "results", "db", "query", "schema", "runSync", "emailTable", "r", "object", "view", "endsWith", "templateContent", "Email", "tableId", "fromLocalObjectId", "toString", "appendToTable", "properties", "getPropertySignatures", "ast", "i", "length", "propName", "push", "chat", "systemPrompt", "idPosition", "appendToQueue", "extendedSchema", "extend", "sourceCurrency", "targetCurrency", "converter", "channelId", "kind", "QUEUE", "random", "queue", "canvas", "compute", "add", "computeGraph", "root", "layout", "graph", "args", "function", "meta", "inputNode", "computeNodeId", "center", "size", "rect", "snap", "undefined", "SpaceGenerator", "space", "onCreateObjects", "client", "useClient", "staticTypes", "DocumentType", "DiagramType", "SheetType", "ComputeGraph", "mutableTypes", "Testing", "OrgType", "ProjectType", "ContactType", "EmailType", "count", "setCount", "useState", "info", "setInfo", "typeMap", "useMemo", "addTypes", "presets", "schemas", "mutableGenerators", "Map", "map", "type", "typename", "createGenerator", "staticGenerators", "items", "updateInfo", "echoSchema", "db", "schemaRegistry", "query", "run", "staticSchema", "graph", "objects", "objectMap", "sortKeys", "reduce", "obj", "getTypename", "schema", "static", "length", "mutable", "useAsyncEffect", "handleCreateData", "useCallback", "constructor", "get", "React", "div", "role", "className", "Toolbar", "Root", "classNames", "IconButton", "icon", "iconOnly", "label", "onClick", "Separator", "variant", "Input", "TextInput", "min", "max", "placeholder", "value", "onChange", "ev", "parseInt", "target", "SchemaTable", "types", "SyntaxHighlighter", "language", "JSON", "stringify", "jsonKeyReplacer", "truncate", "SpaceGenerator"]
7
- }