@dxos/plugin-debug 0.8.4-main.406dc2a → 0.8.4-main.4a85c3132b

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 (188) 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-VMWHGAJZ.mjs → SpaceGenerator-SWSGJEEL.mjs} +475 -460
  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-SRV2AIGJ.mjs → chunk-4UFQXPP7.mjs} +11 -1
  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 +42 -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/index.d.ts +2 -2
  58. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  59. package/dist/types/src/components/SpaceGenerator/presets.d.ts +2 -5
  60. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  61. package/dist/types/src/components/index.d.ts +2 -10
  62. package/dist/types/src/components/index.d.ts.map +1 -1
  63. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +8 -0
  64. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
  65. package/dist/types/src/containers/DebugGraph/index.d.ts +3 -0
  66. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
  67. package/dist/types/src/{components → containers/DebugObjectPanel}/DebugObjectPanel.d.ts +2 -2
  68. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
  69. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +3 -0
  70. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
  71. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +10 -0
  72. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
  73. package/dist/types/src/containers/DebugSettings/index.d.ts +3 -0
  74. package/dist/types/src/containers/DebugSettings/index.d.ts.map +1 -0
  75. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -0
  76. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
  77. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +3 -0
  78. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
  79. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
  80. package/dist/types/src/containers/DebugStatus/index.d.ts +3 -0
  81. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
  82. package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
  83. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
  84. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +3 -0
  85. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
  86. package/dist/types/src/{components → containers}/SpaceGenerator/SpaceGenerator.d.ts +2 -2
  87. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
  88. package/dist/types/src/containers/SpaceGenerator/index.d.ts +3 -0
  89. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
  90. package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +2 -2
  91. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
  92. package/dist/types/src/containers/Wireframe/index.d.ts +3 -0
  93. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
  94. package/dist/types/src/containers/index.d.ts +10 -0
  95. package/dist/types/src/containers/index.d.ts.map +1 -0
  96. package/dist/types/src/meta.d.ts +2 -2
  97. package/dist/types/src/meta.d.ts.map +1 -1
  98. package/dist/types/src/translations.d.ts +3 -1
  99. package/dist/types/src/translations.d.ts.map +1 -1
  100. package/dist/types/src/types.d.ts +5 -0
  101. package/dist/types/src/types.d.ts.map +1 -1
  102. package/dist/types/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +75 -69
  104. package/src/DebugPlugin.tsx +27 -31
  105. package/src/capabilities/app-graph-builder/app-graph-builder.ts +441 -0
  106. package/src/capabilities/app-graph-builder/index.ts +7 -0
  107. package/src/capabilities/index.ts +4 -6
  108. package/src/capabilities/react-context/index.ts +7 -0
  109. package/src/capabilities/react-context/react-context.tsx +20 -0
  110. package/src/capabilities/react-surface/index.ts +7 -0
  111. package/src/capabilities/react-surface/react-surface.tsx +428 -0
  112. package/src/capabilities/settings/index.ts +7 -0
  113. package/src/capabilities/settings/settings.ts +31 -0
  114. package/src/components/SchemaTable/index.ts +5 -0
  115. package/src/components/SpaceGenerator/ObjectGenerator.tsx +26 -32
  116. package/src/components/SpaceGenerator/index.ts +2 -3
  117. package/src/components/SpaceGenerator/presets.ts +250 -127
  118. package/src/components/index.ts +2 -10
  119. package/src/containers/DebugGraph/DebugGraph.tsx +13 -0
  120. package/src/containers/DebugGraph/index.ts +7 -0
  121. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +45 -0
  122. package/src/containers/DebugObjectPanel/index.ts +7 -0
  123. package/src/{components → containers/DebugSettings}/DebugSettings.tsx +78 -36
  124. package/src/containers/DebugSettings/index.ts +7 -0
  125. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +60 -0
  126. package/src/containers/DebugSpaceObjectsPanel/index.ts +7 -0
  127. package/src/containers/DebugStatus/index.ts +7 -0
  128. package/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.tsx +2 -4
  129. package/src/containers/DevtoolsOverviewContainer/index.ts +7 -0
  130. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +127 -0
  131. package/src/containers/SpaceGenerator/index.ts +7 -0
  132. package/src/{components → containers/Wireframe}/Wireframe.tsx +6 -7
  133. package/src/containers/Wireframe/index.ts +7 -0
  134. package/src/containers/index.ts +14 -0
  135. package/src/meta.ts +7 -4
  136. package/src/translations.ts +3 -1
  137. package/src/types.ts +8 -0
  138. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs +0 -20
  139. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs.map +0 -7
  140. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs +0 -25
  141. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs.map +0 -7
  142. package/dist/lib/browser/SpaceGenerator-VMWHGAJZ.mjs.map +0 -7
  143. package/dist/lib/browser/app-graph-builder-I4IHBKKN.mjs +0 -588
  144. package/dist/lib/browser/app-graph-builder-I4IHBKKN.mjs.map +0 -7
  145. package/dist/lib/browser/chunk-SRV2AIGJ.mjs.map +0 -7
  146. package/dist/lib/browser/chunk-SVCKCXCL.mjs +0 -16
  147. package/dist/lib/browser/chunk-SVCKCXCL.mjs.map +0 -7
  148. package/dist/lib/browser/react-context-QLZE7VSQ.mjs +0 -16
  149. package/dist/lib/browser/react-context-QLZE7VSQ.mjs.map +0 -7
  150. package/dist/lib/browser/react-surface-GFORPA3A.mjs +0 -772
  151. package/dist/lib/browser/react-surface-GFORPA3A.mjs.map +0 -7
  152. package/dist/lib/browser/settings-EBVICEEW.mjs +0 -22
  153. package/dist/lib/browser/settings-EBVICEEW.mjs.map +0 -7
  154. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  155. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  156. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  157. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  158. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  159. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  160. package/dist/types/src/capabilities/settings.d.ts +0 -4
  161. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  162. package/dist/types/src/components/Container.d.ts +0 -5
  163. package/dist/types/src/components/Container.d.ts.map +0 -1
  164. package/dist/types/src/components/DebugGraph.d.ts +0 -8
  165. package/dist/types/src/components/DebugGraph.d.ts.map +0 -1
  166. package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
  167. package/dist/types/src/components/DebugSettings.d.ts +0 -6
  168. package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
  169. package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
  170. package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
  171. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
  172. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +0 -1
  173. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -15
  174. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
  175. package/dist/types/src/components/Wireframe.d.ts.map +0 -1
  176. package/src/capabilities/app-graph-builder.ts +0 -431
  177. package/src/capabilities/react-context.tsx +0 -16
  178. package/src/capabilities/react-surface.tsx +0 -399
  179. package/src/capabilities/settings.ts +0 -19
  180. package/src/components/Container.tsx +0 -15
  181. package/src/components/DebugGraph.tsx +0 -14
  182. package/src/components/DebugObjectPanel.tsx +0 -33
  183. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -52
  184. package/src/components/SpaceGenerator/SpaceGenerator.tsx +0 -122
  185. /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
  186. /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +0 -0
  187. /package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +0 -0
  188. /package/src/{components → containers/DebugStatus}/DebugStatus.tsx +0 -0
@@ -4,13 +4,13 @@
4
4
 
5
5
  import * as Schema from 'effect/Schema';
6
6
 
7
- import { RESEARCH_BLUEPRINT, agent, entityExtraction } from '@dxos/assistant-testing';
7
+ import { AgentFunctions, EntityExtractionFunctions, ResearchBlueprint } from '@dxos/assistant-toolkit';
8
8
  import { Prompt } from '@dxos/blueprints';
9
9
  import { type ComputeGraphModel, NODE_INPUT } from '@dxos/conductor';
10
- import { DXN, Filter, Key, Obj, Query, Ref, Tag, Type } from '@dxos/echo';
11
- import { FunctionTrigger, type TriggerKind, type TriggerType, serializeFunction } from '@dxos/functions';
10
+ import { DXN, Feed, Filter, JsonSchema, Key, Obj, Query, type QueryAST, Ref, Tag } from '@dxos/echo';
11
+ import { Trigger, serializeFunction } from '@dxos/functions';
12
12
  import { invariant } from '@dxos/invariant';
13
- import { sync } from '@dxos/plugin-inbox';
13
+ import { GmailFunctions } from '@dxos/plugin-inbox';
14
14
  import { Mailbox } from '@dxos/plugin-inbox/types';
15
15
  import { Markdown } from '@dxos/plugin-markdown/types';
16
16
  import { type Space } from '@dxos/react-client/echo';
@@ -29,15 +29,10 @@ import {
29
29
  createText,
30
30
  createTrigger,
31
31
  } from '@dxos/react-ui-canvas-compute';
32
- import {
33
- CanvasBoardType,
34
- CanvasGraphModel,
35
- pointMultiply,
36
- pointsToRect,
37
- rectToPoints,
38
- } from '@dxos/react-ui-canvas-editor';
39
- import { DataType, createView } from '@dxos/schema';
40
- import { range } from '@dxos/util';
32
+ import { CanvasBoard, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from '@dxos/react-ui-canvas-editor';
33
+ import { ViewModel } from '@dxos/schema';
34
+ import { Message, Organization, Person, Pipeline } from '@dxos/types';
35
+ import { range, trim } from '@dxos/util';
41
36
 
42
37
  import { type ObjectGenerator } from './ObjectGenerator';
43
38
 
@@ -49,34 +44,41 @@ export enum PresetName {
49
44
  CHAT_GPT = 'chat-gpt-text',
50
45
  // EMAIL_WITH_SUMMARY = 'email-gptSummary-table',
51
46
  OBJECT_CHANGE_QUEUE = 'objectChange-queue',
52
- FOREX_FUNCTION_CALL = 'forex-function-call',
53
47
  TIMER_TICK_QUEUE = 'timerTick-queue',
48
+ FOREX_FUNCTION_CALL = 'forex-function-call',
54
49
  DISCORD_MESSAGES = 'discord-messages',
55
50
  // KANBAN_QUEUE = 'kanban-queue',
56
51
  }
57
52
 
58
53
  export const generator = () => ({
59
- schemas: [CanvasBoardType, FunctionTrigger],
54
+ schemas: [CanvasBoard.CanvasBoard, Trigger.Trigger] as any[],
60
55
  types: Object.values(PresetName).map((name) => ({ typename: name })),
61
56
  items: [
62
57
  [
63
58
  PresetName.DXOS_TEAM,
64
59
  async (space, n, cb) => {
65
60
  const objects = range(n, () => {
66
- const tag = space.db.add(Tag.make({ label: 'Investor' }));
67
- const tagDxn = Obj.getDXN(tag).toString();
68
-
69
- const org = space.db.add(Obj.make(DataType.Organization, { name: 'DXOS', website: 'https://dxos.org' }));
70
-
61
+ const org = space.db.add(
62
+ Obj.make(Organization.Organization, {
63
+ name: 'DXOS',
64
+ website: 'https://dxos.org',
65
+ }),
66
+ );
71
67
  const doc = space.db.add(
72
- Markdown.makeDocument({
68
+ Markdown.make({
73
69
  name: 'DXOS Research',
74
70
  content: 'DXOS builds Composer, an open-source AI-powered malleable application.',
75
71
  }),
76
72
  );
77
- Obj.getMeta(doc).tags = [tagDxn];
73
+
74
+ const tag = space.db.add(Tag.make({ label: 'Investor' }));
75
+ const tagDxn = Obj.getDXN(tag).toString();
76
+ Obj.change(doc, (d) => {
77
+ Obj.getMeta(d).tags = [tagDxn];
78
+ });
79
+
78
80
  // space.db.add(
79
- // Relation.make(ResearchOn, {
81
+ // Relation.make(HasSubject, {
80
82
  // [Relation.Source]: doc,
81
83
  // [Relation.Target]: org,
82
84
  // completedAt: new Date().toISOString(),
@@ -84,12 +86,26 @@ export const generator = () => ({
84
86
  // );
85
87
 
86
88
  space.db.add(
87
- Obj.make(DataType.Person, { fullName: 'Rich', organization: Ref.make(org) }, { tags: [tagDxn] }),
89
+ Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagDxn] }, fullName: 'Rich', organization: Ref.make(org) }),
90
+ );
91
+ space.db.add(
92
+ Obj.make(Person.Person, {
93
+ fullName: 'Josiah',
94
+ organization: Ref.make(org),
95
+ }),
96
+ );
97
+ space.db.add(
98
+ Obj.make(Person.Person, {
99
+ fullName: 'Dima',
100
+ organization: Ref.make(org),
101
+ }),
102
+ );
103
+ space.db.add(
104
+ Obj.make(Person.Person, {
105
+ fullName: 'Mykola',
106
+ organization: Ref.make(org),
107
+ }),
88
108
  );
89
- space.db.add(Obj.make(DataType.Person, { fullName: 'Josiah', organization: Ref.make(org) }));
90
- space.db.add(Obj.make(DataType.Person, { fullName: 'Dima', organization: Ref.make(org) }));
91
- space.db.add(Obj.make(DataType.Person, { fullName: 'Mykola', organization: Ref.make(org) }));
92
- space.db.add(Obj.make(DataType.Person, { fullName: 'Will', organization: Ref.make(org) }));
93
109
 
94
110
  return doc;
95
111
  });
@@ -100,41 +116,47 @@ export const generator = () => ({
100
116
  [
101
117
  PresetName.ORG_RESEARCH_PROJECT,
102
118
  async (space, n, cb) => {
103
- const mailbox = await space.db.query(Filter.type(Mailbox.Mailbox)).first();
119
+ const feeds = await space.db.query(Filter.type(Feed.Feed)).run();
120
+ const mailbox = feeds.find((feed) => feed.kind === Mailbox.kind);
121
+ invariant(mailbox, 'Mailbox feed not found');
122
+ const queueDxn = Feed.getQueueDxn(mailbox)?.toString();
123
+ invariant(queueDxn, 'Mailbox feed missing queue DXN key');
104
124
  const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();
105
125
  const tagDxn = Obj.getDXN(tag).toString();
106
126
 
107
127
  const objects = range(n, () => {
108
- const contactsQuery = Query.select(Filter.type(DataType.Person)).select(Filter.tag(tagDxn));
109
- const organizationsQuery = Query.select(Filter.type(DataType.Organization)).select(Filter.tag(tagDxn));
128
+ const contactsQuery = Query.select(Filter.type(Person.Person)).select(Filter.tag(tagDxn));
129
+ const organizationsQuery = Query.select(Filter.type(Organization.Organization)).select(Filter.tag(tagDxn));
110
130
  const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagDxn));
111
131
 
112
- const emailSyncTrigger = Obj.make(FunctionTrigger, {
113
- enabled: true,
114
- spec: {
115
- kind: 'timer',
116
- cron: '* * * * *', // Every minute.
117
- },
118
- function: Ref.make(serializeFunction(sync)),
119
- input: {
120
- mailboxId: Obj.getDXN(mailbox).toString(),
121
- },
122
- });
123
- space.db.add(emailSyncTrigger);
124
-
125
- const contactExtractionTrigger = Obj.make(FunctionTrigger, {
126
- enabled: true,
127
- // TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
128
- spec: {
129
- kind: 'queue',
130
- queue: mailbox.queue.dxn.toString(),
131
- },
132
- function: Ref.make(serializeFunction(entityExtraction)),
133
- input: {
134
- source: '{{event.item}}',
135
- },
136
- });
137
- space.db.add(contactExtractionTrigger);
132
+ space.db.add(
133
+ Trigger.make({
134
+ enabled: true,
135
+ spec: {
136
+ kind: 'timer',
137
+ cron: '* * * * *', // Every minute.
138
+ },
139
+ function: Ref.make(serializeFunction(GmailFunctions.Sync)),
140
+ input: {
141
+ mailbox: Ref.make(mailbox),
142
+ },
143
+ }),
144
+ );
145
+
146
+ space.db.add(
147
+ Trigger.make({
148
+ enabled: true,
149
+ // TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
150
+ spec: {
151
+ kind: 'queue',
152
+ queue: queueDxn,
153
+ },
154
+ function: Ref.make(serializeFunction(EntityExtractionFunctions.Extract)),
155
+ input: {
156
+ source: '{{event.item}}',
157
+ },
158
+ }),
159
+ );
138
160
 
139
161
  const researchPrompt = space.db.add(
140
162
  Prompt.make({
@@ -147,64 +169,84 @@ export const generator = () => ({
147
169
 
148
170
  // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.
149
171
  // Remove the mock prompt to do the actual research.
150
- instructions:
151
- 'Research the organization provided as input. Create a research note for it at the end. NOTE: Do mocked reseach (set mockSearch to true).',
152
- blueprints: [Ref.make(RESEARCH_BLUEPRINT)],
172
+ instructions: trim`
173
+ Research the organization provided as input.
174
+ Create a research note for it at the end.
175
+ NOTE: Do mocked reseach (set mockSearch to true).
176
+ `,
177
+ blueprints: [Ref.make(ResearchBlueprint.make())],
153
178
  }),
154
179
  );
155
180
 
156
- const researchTrigger = Obj.make(FunctionTrigger, {
157
- enabled: true,
158
- spec: {
159
- kind: 'subscription',
160
- query: {
161
- ast: organizationsQuery.ast,
181
+ space.db.add(
182
+ Trigger.make({
183
+ enabled: true,
184
+ spec: {
185
+ kind: 'subscription',
186
+ query: {
187
+ ast: organizationsQuery.ast,
188
+ },
162
189
  },
163
- },
164
- function: Ref.make(serializeFunction(agent)),
165
- input: {
166
- prompt: Ref.make(researchPrompt),
167
- input: '{{event.subject}}',
168
- },
169
- });
170
- space.db.add(researchTrigger);
190
+ function: Ref.make(serializeFunction(AgentFunctions.Prompt)),
191
+ input: {
192
+ prompt: Ref.make(researchPrompt),
193
+ input: '{{event.subject}}',
194
+ },
195
+ }),
196
+ );
171
197
 
172
- const mailboxView = createView({
173
- name: 'Mailbox',
198
+ const mailboxView = ViewModel.make({
174
199
  query: Query.select(
175
- Filter.type(DataType.Message, { properties: { labels: Filter.contains('investor') } }),
176
- ).options({
177
- queues: [mailbox.queue.dxn.toString()],
200
+ Filter.type(Message.Message, {
201
+ properties: { labels: Filter.contains('investor') },
202
+ }),
203
+ ).from({
204
+ queues: [queueDxn],
178
205
  }),
179
- jsonSchema: Type.toJsonSchema(DataType.Message),
180
- presentation: Obj.make(DataType.Collection, { objects: [] }),
206
+ jsonSchema: JsonSchema.toJsonSchema(Message.Message),
181
207
  });
182
- const contactsView = createView({
183
- name: 'Contacts',
208
+ const contactsView = ViewModel.make({
184
209
  query: contactsQuery,
185
- jsonSchema: Type.toJsonSchema(DataType.Person),
186
- presentation: Obj.make(DataType.Collection, { objects: [] }),
210
+ jsonSchema: JsonSchema.toJsonSchema(Person.Person),
187
211
  });
188
- const organizationsView = createView({
189
- name: 'Organizations',
212
+ const organizationsView = ViewModel.make({
190
213
  query: organizationsQuery,
191
- jsonSchema: Type.toJsonSchema(DataType.Organization),
192
- presentation: Obj.make(DataType.Collection, { objects: [] }),
214
+ jsonSchema: JsonSchema.toJsonSchema(Organization.Organization),
193
215
  });
194
- const notesView = createView({
195
- name: 'Notes',
216
+ const notesView = ViewModel.make({
196
217
  query: notesQuery,
197
- jsonSchema: Type.toJsonSchema(Markdown.Document),
198
- presentation: Obj.make(DataType.Collection, { objects: [] }),
218
+ jsonSchema: JsonSchema.toJsonSchema(Markdown.Document),
199
219
  });
200
220
 
201
221
  return space.db.add(
202
- DataType.makeProject({
222
+ Pipeline.make({
203
223
  name: 'Investor Research',
204
- collections: [mailboxView, contactsView, organizationsView, notesView].map((view) => Ref.make(view)),
224
+ columns: [
225
+ {
226
+ name: 'Mailbox',
227
+ view: Ref.make(mailboxView),
228
+ order: [],
229
+ },
230
+ {
231
+ name: 'Contacts',
232
+ view: Ref.make(contactsView),
233
+ order: [],
234
+ },
235
+ {
236
+ name: 'Organizations',
237
+ view: Ref.make(organizationsView),
238
+ order: [],
239
+ },
240
+ {
241
+ name: 'Notes',
242
+ view: Ref.make(notesView),
243
+ order: [],
244
+ },
245
+ ],
205
246
  }),
206
247
  );
207
248
  });
249
+
208
250
  cb?.(objects.flat());
209
251
  return objects.flat();
210
252
  },
@@ -215,7 +257,7 @@ export const generator = () => ({
215
257
  const objects = range(n, () => {
216
258
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
217
259
 
218
- let functionTrigger: FunctionTrigger | undefined;
260
+ let functionTrigger: Trigger.Trigger | undefined;
219
261
  canvasModel.builder.call((builder) => {
220
262
  const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));
221
263
  const triggerShape = createTrigger({
@@ -229,10 +271,24 @@ export const generator = () => ({
229
271
  const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
230
272
 
231
273
  builder
232
- .createEdge({ source: trigger.id, target: gpt.id, input: 'prompt', output: 'bodyText' })
274
+ .createEdge({
275
+ source: trigger.id,
276
+ target: gpt.id,
277
+ input: 'prompt',
278
+ output: 'bodyText',
279
+ })
233
280
  .createEdge({ source: gpt.id, target: text.id, output: 'text' })
234
- .createEdge({ source: queueId.id, target: append.id, input: 'id' })
235
- .createEdge({ source: gpt.id, target: append.id, output: 'messages', input: 'items' });
281
+ .createEdge({
282
+ source: queueId.id,
283
+ target: append.id,
284
+ input: 'id',
285
+ })
286
+ .createEdge({
287
+ source: gpt.id,
288
+ target: append.id,
289
+ output: 'messages',
290
+ input: 'items',
291
+ });
236
292
 
237
293
  functionTrigger = triggerShape.functionTrigger!.target!;
238
294
  });
@@ -257,7 +313,7 @@ export const generator = () => ({
257
313
  'subscription',
258
314
  (triggerSpec) =>
259
315
  (triggerSpec.query = {
260
- ast: Query.select(Filter.typename('dxos.org/type/Chess')).ast,
316
+ ast: Query.select(Filter.typename('dxos.org/type/Chess')).ast as Obj.Mutable<QueryAST.Query>,
261
317
  }),
262
318
  'type',
263
319
  );
@@ -342,7 +398,7 @@ export const generator = () => ({
342
398
  // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
343
399
  // invariant(templateComputeNode, 'Template compute node was not created.');
344
400
  // templateComputeNode.value = templateContent.join('\n');
345
- // templateComputeNode.inputSchema = Type.toJsonSchema(EmailTriggerOutput);
401
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
346
402
 
347
403
  // attachTrigger(functionTrigger, computeModel);
348
404
 
@@ -370,8 +426,17 @@ export const generator = () => ({
370
426
  builder
371
427
  .createEdge({ source: chat.id, target: gpt.id, input: 'prompt' })
372
428
  .createEdge({ source: gpt.id, target: text.id, output: 'text' })
373
- .createEdge({ source: queueId.id, target: append.id, input: 'id' })
374
- .createEdge({ source: gpt.id, target: append.id, output: 'messages', input: 'items' });
429
+ .createEdge({
430
+ source: queueId.id,
431
+ target: append.id,
432
+ input: 'id',
433
+ })
434
+ .createEdge({
435
+ source: gpt.id,
436
+ target: append.id,
437
+ output: 'messages',
438
+ input: 'items',
439
+ });
375
440
  });
376
441
 
377
442
  const computeModel = createComputeGraph(canvasModel);
@@ -467,7 +532,7 @@ export const generator = () => ({
467
532
  // invariant(templateComputeNode, 'Template compute node was not created.');
468
533
  // templateComputeNode.value = templateContent.join('\n');
469
534
  // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
470
- // templateComputeNode.inputSchema = Type.toJsonSchema(extendedSchema);
535
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
471
536
 
472
537
  // attachTrigger(functionTrigger, computeModel);
473
538
 
@@ -495,9 +560,21 @@ export const generator = () => ({
495
560
  const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));
496
561
 
497
562
  builder
498
- .createEdge({ source: sourceCurrency.id, target: converter.id, input: 'from' })
499
- .createEdge({ source: targetCurrency.id, target: converter.id, input: 'to' })
500
- .createEdge({ source: converter.id, target: view.id, output: 'rate' });
563
+ .createEdge({
564
+ source: sourceCurrency.id,
565
+ target: converter.id,
566
+ input: 'from',
567
+ })
568
+ .createEdge({
569
+ source: targetCurrency.id,
570
+ target: converter.id,
571
+ input: 'to',
572
+ })
573
+ .createEdge({
574
+ source: converter.id,
575
+ target: view.id,
576
+ output: 'rate',
577
+ });
501
578
  });
502
579
 
503
580
  const computeModel = createComputeGraph(canvasModel);
@@ -515,7 +592,7 @@ export const generator = () => ({
515
592
  const objects = range(n, () => {
516
593
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
517
594
 
518
- let functionTrigger: FunctionTrigger | undefined;
595
+ let functionTrigger: Trigger.Trigger | undefined;
519
596
  canvasModel.builder.call((builder) => {
520
597
  const triggerShape = createTrigger({
521
598
  spaceId: space.id,
@@ -525,7 +602,10 @@ export const generator = () => ({
525
602
  const trigger = canvasModel.createNode(triggerShape);
526
603
  // DXOS dev-null channel.
527
604
  const channelId = canvasModel.createNode(
528
- createConstant({ value: '1088569858767212554', ...position({ x: -10, y: 0 }) }),
605
+ createConstant({
606
+ value: '1088569858767212554',
607
+ ...position({ x: -10, y: 0 }),
608
+ }),
529
609
  );
530
610
  const queueId = canvasModel.createNode(
531
611
  createConstant({
@@ -538,11 +618,31 @@ export const generator = () => ({
538
618
  const queue = canvasModel.createNode(createQueue(position({ x: 0, y: 12 })));
539
619
 
540
620
  builder
541
- .createEdge({ source: trigger.id, target: converter.id, input: 'tick' })
542
- .createEdge({ source: channelId.id, target: converter.id, input: 'channelId' })
543
- .createEdge({ source: queueId.id, target: converter.id, input: 'queueId' })
544
- .createEdge({ source: converter.id, target: view.id, output: 'newMessages' })
545
- .createEdge({ source: queueId.id, target: queue.id, input: 'input' });
621
+ .createEdge({
622
+ source: trigger.id,
623
+ target: converter.id,
624
+ input: 'tick',
625
+ })
626
+ .createEdge({
627
+ source: channelId.id,
628
+ target: converter.id,
629
+ input: 'channelId',
630
+ })
631
+ .createEdge({
632
+ source: queueId.id,
633
+ target: converter.id,
634
+ input: 'queueId',
635
+ })
636
+ .createEdge({
637
+ source: converter.id,
638
+ target: view.id,
639
+ output: 'newMessages',
640
+ })
641
+ .createEdge({
642
+ source: queueId.id,
643
+ target: queue.id,
644
+ input: 'input',
645
+ });
546
646
 
547
647
  functionTrigger = triggerShape.functionTrigger!.target!;
548
648
  });
@@ -609,10 +709,10 @@ export const generator = () => ({
609
709
  ] as [PresetName, ObjectGenerator<any>][],
610
710
  });
611
711
 
612
- const createQueueSinkPreset = <SpecType extends TriggerKind>(
712
+ const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
613
713
  space: Space,
614
714
  triggerKind: SpecType,
615
- initSpec: (spec: Extract<TriggerType, { kind: SpecType }>) => void,
715
+ initSpec: (spec: Obj.Mutable<Extract<Trigger.Spec, { kind: SpecType }>>) => void,
616
716
  triggerOutputName: string,
617
717
  ) => {
618
718
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
@@ -624,7 +724,7 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
624
724
  }),
625
725
  );
626
726
 
627
- let functionTrigger: FunctionTrigger | undefined;
727
+ let functionTrigger: Trigger.Trigger | undefined;
628
728
  canvasModel.builder.call((builder) => {
629
729
  const triggerShape = createTrigger({
630
730
  spaceId: space.id,
@@ -645,7 +745,12 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
645
745
  builder
646
746
  .createEdge({ source: queueId.id, target: append.id, input: 'id' })
647
747
  .createEdge({ source: template.id, target: append.id, input: 'items' })
648
- .createEdge({ source: trigger.id, target: template.id, output: triggerOutputName, input: 'type' })
748
+ .createEdge({
749
+ source: trigger.id,
750
+ target: template.id,
751
+ output: triggerOutputName,
752
+ input: 'type',
753
+ })
649
754
  .createEdge({
650
755
  source: random.id,
651
756
  target: template.id,
@@ -655,15 +760,20 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
655
760
  functionTrigger = triggerShape.functionTrigger!.target!;
656
761
  const triggerSpec = functionTrigger.spec;
657
762
  invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');
658
- initSpec(triggerSpec as any);
763
+ Obj.change(functionTrigger, (ft) => {
764
+ initSpec(ft.spec as any);
765
+ });
659
766
  });
660
767
 
661
768
  const computeModel = createComputeGraph(canvasModel);
662
769
 
663
770
  const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
664
771
  invariant(templateComputeNode, 'Template compute node was not created.');
772
+ // NOTE: These are plain object mutations during model construction, not ECHO object mutations.
665
773
  templateComputeNode.value = ['{', ' "@type": "{{type}}",', ' "id": "@{{changeId}}"', '}'].join('\n');
666
- templateComputeNode.inputSchema = Type.toJsonSchema(Schema.Struct({ type: Schema.String, changeId: Schema.String }));
774
+ templateComputeNode.inputSchema = JsonSchema.toJsonSchema(
775
+ Schema.Struct({ type: Schema.String, changeId: Schema.String }),
776
+ );
667
777
  attachTrigger(functionTrigger, computeModel);
668
778
 
669
779
  return { canvasModel, computeModel };
@@ -671,7 +781,7 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
671
781
 
672
782
  const addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {
673
783
  return space.db.add(
674
- Obj.make(CanvasBoardType, {
784
+ Obj.make(CanvasBoard.CanvasBoard, {
675
785
  name,
676
786
  computeGraph: Ref.make(compute.root),
677
787
  layout: canvas.graph,
@@ -699,17 +809,27 @@ const setupQueue = (
699
809
  return { queue, queueId };
700
810
  };
701
811
 
702
- const attachTrigger = (functionTrigger: FunctionTrigger | undefined, computeModel: ComputeGraphModel) => {
812
+ const attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {
703
813
  invariant(functionTrigger);
704
- functionTrigger.function = Ref.make(computeModel.root);
705
814
  const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;
706
- functionTrigger.inputNodeId = inputNode.id;
815
+ Obj.change(functionTrigger, (t) => {
816
+ t.function = Ref.make(computeModel.root);
817
+ t.inputNodeId = inputNode.id;
818
+ });
707
819
  };
708
820
 
709
- type RawPositionInput = { centerX: number; centerY: number; width: number; height: number };
821
+ type RawPositionInput = {
822
+ centerX: number;
823
+ centerY: number;
824
+ width: number;
825
+ height: number;
826
+ };
710
827
 
711
828
  const rawPosition = (args: RawPositionInput) => {
712
- return { center: { x: args.centerX, y: args.centerY }, size: { width: args.width, height: args.height } };
829
+ return {
830
+ center: { x: args.centerX, y: args.centerY },
831
+ size: { width: args.width, height: args.height },
832
+ };
713
833
  };
714
834
 
715
835
  const position = (rect: { x: number; y: number; width?: number; height?: number }) => {
@@ -717,7 +837,10 @@ const position = (rect: { x: number; y: number; width?: number; height?: number
717
837
  const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });
718
838
  const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);
719
839
  if (width && height) {
720
- return { center: { x, y }, size: width && height ? { width, height } : undefined };
840
+ return {
841
+ center: { x, y },
842
+ size: width && height ? { width, height } : undefined,
843
+ };
721
844
  } else {
722
845
  return { center: { x, y } };
723
846
  }
@@ -2,13 +2,5 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { lazy } from 'react';
6
-
7
- export const DebugGraph = lazy(() => import('./DebugGraph'));
8
- export const DevtoolsOverviewContainer = lazy(() => import('./DevtoolsOverviewContainer'));
9
- export const SpaceGenerator = lazy(() => import('./SpaceGenerator'));
10
-
11
- export * from './DebugObjectPanel';
12
- export * from './DebugSettings';
13
- export * from './DebugStatus';
14
- export * from './Wireframe';
5
+ export * from './SchemaTable';
6
+ export * from './SpaceGenerator';
@@ -0,0 +1,13 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { type FC } from 'react';
6
+
7
+ import { Tree } from '@dxos/devtools';
8
+ import { Graph } from '@dxos/plugin-graph';
9
+
10
+ export type DebugGraphProps = { graph: Graph.Graph; root: string };
11
+ export const DebugGraph: FC<DebugGraphProps> = ({ graph, root }) => {
12
+ return <Tree data={Graph.toJSON(graph, root)} />;
13
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { DebugGraph } from './DebugGraph';
6
+
7
+ export default DebugGraph;