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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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-54FUIZIH.mjs → SpaceGenerator-SWSGJEEL.mjs} +476 -461
  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 +258 -141
  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-54FUIZIH.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-BTWJ2I3F.mjs +0 -772
  151. package/dist/lib/browser/react-surface-BTWJ2I3F.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, ResearchOn, 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, Relation, 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,43 +44,68 @@ 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 org = space.db.add(Obj.make(DataType.Organization, { name: 'DXOS', website: 'https://dxos.org' }));
67
-
61
+ const org = space.db.add(
62
+ Obj.make(Organization.Organization, {
63
+ name: 'DXOS',
64
+ website: 'https://dxos.org',
65
+ }),
66
+ );
68
67
  const doc = space.db.add(
69
- Markdown.makeDocument({
68
+ Markdown.make({
70
69
  name: 'DXOS Research',
71
70
  content: 'DXOS builds Composer, an open-source AI-powered malleable application.',
72
71
  }),
73
72
  );
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
+
80
+ // space.db.add(
81
+ // Relation.make(HasSubject, {
82
+ // [Relation.Source]: doc,
83
+ // [Relation.Target]: org,
84
+ // completedAt: new Date().toISOString(),
85
+ // }),
86
+ // );
87
+
88
+ space.db.add(
89
+ Obj.make(Person.Person, { [Obj.Meta]: { tags: [tagDxn] }, fullName: 'Rich', organization: Ref.make(org) }),
90
+ );
74
91
  space.db.add(
75
- Relation.make(ResearchOn, {
76
- [Relation.Source]: doc,
77
- [Relation.Target]: org,
78
- completedAt: new Date().toISOString(),
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),
79
101
  }),
80
102
  );
81
-
82
103
  space.db.add(
83
- Obj.make(DataType.Person, { fullName: 'Rich', jobTitle: 'investor', organization: Ref.make(org) }),
104
+ Obj.make(Person.Person, {
105
+ fullName: 'Mykola',
106
+ organization: Ref.make(org),
107
+ }),
84
108
  );
85
- space.db.add(Obj.make(DataType.Person, { fullName: 'Josiah', organization: Ref.make(org) }));
86
- space.db.add(Obj.make(DataType.Person, { fullName: 'Dima', organization: Ref.make(org) }));
87
- space.db.add(Obj.make(DataType.Person, { fullName: 'Mykola', organization: Ref.make(org) }));
88
- space.db.add(Obj.make(DataType.Person, { fullName: 'Will', organization: Ref.make(org) }));
89
109
 
90
110
  return doc;
91
111
  });
@@ -96,44 +116,47 @@ export const generator = () => ({
96
116
  [
97
117
  PresetName.ORG_RESEARCH_PROJECT,
98
118
  async (space, n, cb) => {
99
- 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');
124
+ const tag = await space.db.query(Filter.type(Tag.Tag, { label: 'Investor' })).first();
125
+ const tagDxn = Obj.getDXN(tag).toString();
100
126
 
101
127
  const objects = range(n, () => {
102
- // TODO(wittjosiah): Move filter to a tag.
103
- const contactsQuery = Query.select(Filter.type(DataType.Person, { jobTitle: 'investor' }));
104
- const organizationsQuery = contactsQuery.reference('organization');
105
- const notesQuery = organizationsQuery.targetOf(ResearchOn).source();
106
-
107
- const contactsQueryString = 'Query.select(Filter.type(DataType.Person, { jobTitle: "investor" }))';
108
- const organizationsQueryString = `${contactsQueryString}.reference("organization")`;
109
- const notesQueryString = `${organizationsQueryString}.targetOf(ResearchOn).source()`;
110
-
111
- const emailSyncTrigger = Obj.make(FunctionTrigger, {
112
- enabled: true,
113
- spec: {
114
- kind: 'timer',
115
- cron: '* * * * *', // Every minute.
116
- },
117
- function: Ref.make(serializeFunction(sync)),
118
- input: {
119
- mailboxId: Obj.getDXN(mailbox).toString(),
120
- },
121
- });
122
- space.db.add(emailSyncTrigger);
123
-
124
- const contactExtractionTrigger = Obj.make(FunctionTrigger, {
125
- enabled: true,
126
- // TODO(wittjosiah): Queue trigger doesn't support matching query of the column.
127
- spec: {
128
- kind: 'queue',
129
- queue: mailbox.queue.dxn.toString(),
130
- },
131
- function: Ref.make(serializeFunction(entityExtraction)),
132
- input: {
133
- source: '{{event.item}}',
134
- },
135
- });
136
- space.db.add(contactExtractionTrigger);
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));
130
+ const notesQuery = Query.select(Filter.type(Markdown.Document)).select(Filter.tag(tagDxn));
131
+
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
+ );
137
160
 
138
161
  const researchPrompt = space.db.add(
139
162
  Prompt.make({
@@ -146,70 +169,84 @@ export const generator = () => ({
146
169
 
147
170
  // TODO(dmaretskyi): This mocks research (returns pre-baked result), the actual research might take compute minutes.
148
171
  // Remove the mock prompt to do the actual research.
149
- instructions:
150
- 'Research the organization provided as input. Create a research note for it at the end. NOTE: Do mocked reseach (set mockSearch to true).',
151
- 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())],
152
178
  }),
153
179
  );
154
180
 
155
- const researchTrigger = Obj.make(FunctionTrigger, {
156
- enabled: true,
157
- spec: {
158
- kind: 'subscription',
159
- query: {
160
- string: organizationsQueryString,
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
- queryString:
180
- 'Query.select(Filter.type(DataType.Message, { properties: { labels: Filter.contains("investor") } }))',
181
- jsonSchema: Type.toJsonSchema(DataType.Message),
182
- presentation: Obj.make(DataType.Collection, { objects: [] }),
206
+ jsonSchema: JsonSchema.toJsonSchema(Message.Message),
183
207
  });
184
- const contactsView = createView({
185
- name: 'Contacts',
208
+ const contactsView = ViewModel.make({
186
209
  query: contactsQuery,
187
- queryString: contactsQueryString,
188
- jsonSchema: Type.toJsonSchema(DataType.Person),
189
- presentation: Obj.make(DataType.Collection, { objects: [] }),
210
+ jsonSchema: JsonSchema.toJsonSchema(Person.Person),
190
211
  });
191
- const organizationsView = createView({
192
- name: 'Organizations',
212
+ const organizationsView = ViewModel.make({
193
213
  query: organizationsQuery,
194
- queryString: organizationsQueryString,
195
- jsonSchema: Type.toJsonSchema(DataType.Organization),
196
- presentation: Obj.make(DataType.Collection, { objects: [] }),
214
+ jsonSchema: JsonSchema.toJsonSchema(Organization.Organization),
197
215
  });
198
- const notesView = createView({
199
- name: 'Notes',
216
+ const notesView = ViewModel.make({
200
217
  query: notesQuery,
201
- queryString: notesQueryString,
202
- jsonSchema: Type.toJsonSchema(Markdown.Document),
203
- presentation: Obj.make(DataType.Collection, { objects: [] }),
218
+ jsonSchema: JsonSchema.toJsonSchema(Markdown.Document),
204
219
  });
205
220
 
206
221
  return space.db.add(
207
- DataType.makeProject({
222
+ Pipeline.make({
208
223
  name: 'Investor Research',
209
- 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
+ ],
210
246
  }),
211
247
  );
212
248
  });
249
+
213
250
  cb?.(objects.flat());
214
251
  return objects.flat();
215
252
  },
@@ -220,7 +257,7 @@ export const generator = () => ({
220
257
  const objects = range(n, () => {
221
258
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
222
259
 
223
- let functionTrigger: FunctionTrigger | undefined;
260
+ let functionTrigger: Trigger.Trigger | undefined;
224
261
  canvasModel.builder.call((builder) => {
225
262
  const gpt = canvasModel.createNode(createGpt(position({ x: 0, y: -14 })));
226
263
  const triggerShape = createTrigger({
@@ -234,10 +271,24 @@ export const generator = () => ({
234
271
  const append = canvasModel.createNode(createAppend(position({ x: 10, y: 6 })));
235
272
 
236
273
  builder
237
- .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
+ })
238
280
  .createEdge({ source: gpt.id, target: text.id, output: 'text' })
239
- .createEdge({ source: queueId.id, target: append.id, input: 'id' })
240
- .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
+ });
241
292
 
242
293
  functionTrigger = triggerShape.functionTrigger!.target!;
243
294
  });
@@ -262,8 +313,7 @@ export const generator = () => ({
262
313
  'subscription',
263
314
  (triggerSpec) =>
264
315
  (triggerSpec.query = {
265
- string: 'Query.select(Filter.typename("dxos.org/type/Chess"))',
266
- 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>,
267
317
  }),
268
318
  'type',
269
319
  );
@@ -348,7 +398,7 @@ export const generator = () => ({
348
398
  // const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
349
399
  // invariant(templateComputeNode, 'Template compute node was not created.');
350
400
  // templateComputeNode.value = templateContent.join('\n');
351
- // templateComputeNode.inputSchema = Type.toJsonSchema(EmailTriggerOutput);
401
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(EmailTriggerOutput);
352
402
 
353
403
  // attachTrigger(functionTrigger, computeModel);
354
404
 
@@ -376,8 +426,17 @@ export const generator = () => ({
376
426
  builder
377
427
  .createEdge({ source: chat.id, target: gpt.id, input: 'prompt' })
378
428
  .createEdge({ source: gpt.id, target: text.id, output: 'text' })
379
- .createEdge({ source: queueId.id, target: append.id, input: 'id' })
380
- .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
+ });
381
440
  });
382
441
 
383
442
  const computeModel = createComputeGraph(canvasModel);
@@ -473,7 +532,7 @@ export const generator = () => ({
473
532
  // invariant(templateComputeNode, 'Template compute node was not created.');
474
533
  // templateComputeNode.value = templateContent.join('\n');
475
534
  // const extendedSchema = Schema.extend(EmailTriggerOutput, Schema.Struct({ text: Schema.String }));
476
- // templateComputeNode.inputSchema = Type.toJsonSchema(extendedSchema);
535
+ // templateComputeNode.inputSchema = JsonSchema.toJsonSchema(extendedSchema);
477
536
 
478
537
  // attachTrigger(functionTrigger, computeModel);
479
538
 
@@ -501,9 +560,21 @@ export const generator = () => ({
501
560
  const view = canvasModel.createNode(createSurface(position({ x: 12, y: 0 })));
502
561
 
503
562
  builder
504
- .createEdge({ source: sourceCurrency.id, target: converter.id, input: 'from' })
505
- .createEdge({ source: targetCurrency.id, target: converter.id, input: 'to' })
506
- .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
+ });
507
578
  });
508
579
 
509
580
  const computeModel = createComputeGraph(canvasModel);
@@ -521,7 +592,7 @@ export const generator = () => ({
521
592
  const objects = range(n, () => {
522
593
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
523
594
 
524
- let functionTrigger: FunctionTrigger | undefined;
595
+ let functionTrigger: Trigger.Trigger | undefined;
525
596
  canvasModel.builder.call((builder) => {
526
597
  const triggerShape = createTrigger({
527
598
  spaceId: space.id,
@@ -531,7 +602,10 @@ export const generator = () => ({
531
602
  const trigger = canvasModel.createNode(triggerShape);
532
603
  // DXOS dev-null channel.
533
604
  const channelId = canvasModel.createNode(
534
- createConstant({ value: '1088569858767212554', ...position({ x: -10, y: 0 }) }),
605
+ createConstant({
606
+ value: '1088569858767212554',
607
+ ...position({ x: -10, y: 0 }),
608
+ }),
535
609
  );
536
610
  const queueId = canvasModel.createNode(
537
611
  createConstant({
@@ -544,11 +618,31 @@ export const generator = () => ({
544
618
  const queue = canvasModel.createNode(createQueue(position({ x: 0, y: 12 })));
545
619
 
546
620
  builder
547
- .createEdge({ source: trigger.id, target: converter.id, input: 'tick' })
548
- .createEdge({ source: channelId.id, target: converter.id, input: 'channelId' })
549
- .createEdge({ source: queueId.id, target: converter.id, input: 'queueId' })
550
- .createEdge({ source: converter.id, target: view.id, output: 'newMessages' })
551
- .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
+ });
552
646
 
553
647
  functionTrigger = triggerShape.functionTrigger!.target!;
554
648
  });
@@ -615,10 +709,10 @@ export const generator = () => ({
615
709
  ] as [PresetName, ObjectGenerator<any>][],
616
710
  });
617
711
 
618
- const createQueueSinkPreset = <SpecType extends TriggerKind>(
712
+ const createQueueSinkPreset = <SpecType extends Trigger.Kind>(
619
713
  space: Space,
620
714
  triggerKind: SpecType,
621
- initSpec: (spec: Extract<TriggerType, { kind: SpecType }>) => void,
715
+ initSpec: (spec: Obj.Mutable<Extract<Trigger.Spec, { kind: SpecType }>>) => void,
622
716
  triggerOutputName: string,
623
717
  ) => {
624
718
  const canvasModel = CanvasGraphModel.create<ComputeShape>();
@@ -630,7 +724,7 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
630
724
  }),
631
725
  );
632
726
 
633
- let functionTrigger: FunctionTrigger | undefined;
727
+ let functionTrigger: Trigger.Trigger | undefined;
634
728
  canvasModel.builder.call((builder) => {
635
729
  const triggerShape = createTrigger({
636
730
  spaceId: space.id,
@@ -651,7 +745,12 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
651
745
  builder
652
746
  .createEdge({ source: queueId.id, target: append.id, input: 'id' })
653
747
  .createEdge({ source: template.id, target: append.id, input: 'items' })
654
- .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
+ })
655
754
  .createEdge({
656
755
  source: random.id,
657
756
  target: template.id,
@@ -661,15 +760,20 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
661
760
  functionTrigger = triggerShape.functionTrigger!.target!;
662
761
  const triggerSpec = functionTrigger.spec;
663
762
  invariant(triggerSpec && triggerSpec.kind === triggerKind, 'No trigger spec.');
664
- initSpec(triggerSpec as any);
763
+ Obj.change(functionTrigger, (ft) => {
764
+ initSpec(ft.spec as any);
765
+ });
665
766
  });
666
767
 
667
768
  const computeModel = createComputeGraph(canvasModel);
668
769
 
669
770
  const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
670
771
  invariant(templateComputeNode, 'Template compute node was not created.');
772
+ // NOTE: These are plain object mutations during model construction, not ECHO object mutations.
671
773
  templateComputeNode.value = ['{', ' "@type": "{{type}}",', ' "id": "@{{changeId}}"', '}'].join('\n');
672
- 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
+ );
673
777
  attachTrigger(functionTrigger, computeModel);
674
778
 
675
779
  return { canvasModel, computeModel };
@@ -677,7 +781,7 @@ const createQueueSinkPreset = <SpecType extends TriggerKind>(
677
781
 
678
782
  const addToSpace = (name: string, space: Space, canvas: CanvasGraphModel, compute: ComputeGraphModel) => {
679
783
  return space.db.add(
680
- Obj.make(CanvasBoardType, {
784
+ Obj.make(CanvasBoard.CanvasBoard, {
681
785
  name,
682
786
  computeGraph: Ref.make(compute.root),
683
787
  layout: canvas.graph,
@@ -705,17 +809,27 @@ const setupQueue = (
705
809
  return { queue, queueId };
706
810
  };
707
811
 
708
- const attachTrigger = (functionTrigger: FunctionTrigger | undefined, computeModel: ComputeGraphModel) => {
812
+ const attachTrigger = (functionTrigger: Trigger.Trigger | undefined, computeModel: ComputeGraphModel) => {
709
813
  invariant(functionTrigger);
710
- functionTrigger.function = Ref.make(computeModel.root);
711
814
  const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT)!;
712
- functionTrigger.inputNodeId = inputNode.id;
815
+ Obj.change(functionTrigger, (t) => {
816
+ t.function = Ref.make(computeModel.root);
817
+ t.inputNodeId = inputNode.id;
818
+ });
713
819
  };
714
820
 
715
- 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
+ };
716
827
 
717
828
  const rawPosition = (args: RawPositionInput) => {
718
- 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
+ };
719
833
  };
720
834
 
721
835
  const position = (rect: { x: number; y: number; width?: number; height?: number }) => {
@@ -723,7 +837,10 @@ const position = (rect: { x: number; y: number; width?: number; height?: number
723
837
  const [center, size] = rectToPoints({ width: 0, height: 0, ...rect });
724
838
  const { x, y, width, height } = pointsToRect([pointMultiply(center, snap), pointMultiply(size, snap)]);
725
839
  if (width && height) {
726
- return { center: { x, y }, size: width && height ? { width, height } : undefined };
840
+ return {
841
+ center: { x, y },
842
+ size: width && height ? { width, height } : undefined,
843
+ };
727
844
  } else {
728
845
  return { center: { x, y } };
729
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;