@dxos/react-ui-canvas-compute 0.7.5-labs.071a3e2

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 (155) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +1 -0
  3. package/dist/lib/browser/index.mjs +2535 -0
  4. package/dist/lib/browser/index.mjs.map +7 -0
  5. package/dist/lib/browser/meta.json +1 -0
  6. package/dist/lib/node/index.cjs +2627 -0
  7. package/dist/lib/node/index.cjs.map +7 -0
  8. package/dist/lib/node/meta.json +1 -0
  9. package/dist/lib/node-esm/index.mjs +2535 -0
  10. package/dist/lib/node-esm/index.mjs.map +7 -0
  11. package/dist/lib/node-esm/meta.json +1 -0
  12. package/dist/types/src/components/DiagnosticOverlay.d.ts +7 -0
  13. package/dist/types/src/components/DiagnosticOverlay.d.ts.map +1 -0
  14. package/dist/types/src/components/index.d.ts +2 -0
  15. package/dist/types/src/components/index.d.ts.map +1 -0
  16. package/dist/types/src/compute-layout.d.ts +9 -0
  17. package/dist/types/src/compute-layout.d.ts.map +1 -0
  18. package/dist/types/src/compute.stories.d.ts +28 -0
  19. package/dist/types/src/compute.stories.d.ts.map +1 -0
  20. package/dist/types/src/graph/controller.d.ts +142 -0
  21. package/dist/types/src/graph/controller.d.ts.map +1 -0
  22. package/dist/types/src/graph/index.d.ts +3 -0
  23. package/dist/types/src/graph/index.d.ts.map +1 -0
  24. package/dist/types/src/graph/node-defs.d.ts +6 -0
  25. package/dist/types/src/graph/node-defs.d.ts.map +1 -0
  26. package/dist/types/src/hooks/compute-context.d.ts +7 -0
  27. package/dist/types/src/hooks/compute-context.d.ts.map +1 -0
  28. package/dist/types/src/hooks/index.d.ts +4 -0
  29. package/dist/types/src/hooks/index.d.ts.map +1 -0
  30. package/dist/types/src/hooks/useComputeNodeState.d.ts +19 -0
  31. package/dist/types/src/hooks/useComputeNodeState.d.ts.map +1 -0
  32. package/dist/types/src/hooks/useGraphMonitor.d.ts +14 -0
  33. package/dist/types/src/hooks/useGraphMonitor.d.ts.map +1 -0
  34. package/dist/types/src/index.d.ts +6 -0
  35. package/dist/types/src/index.d.ts.map +1 -0
  36. package/dist/types/src/json.test.d.ts +21 -0
  37. package/dist/types/src/json.test.d.ts.map +1 -0
  38. package/dist/types/src/registry.d.ts +9 -0
  39. package/dist/types/src/registry.d.ts.map +1 -0
  40. package/dist/types/src/schema.test.d.ts +2 -0
  41. package/dist/types/src/schema.test.d.ts.map +1 -0
  42. package/dist/types/src/shapes/Append.d.ts +54 -0
  43. package/dist/types/src/shapes/Append.d.ts.map +1 -0
  44. package/dist/types/src/shapes/Array.d.ts +38 -0
  45. package/dist/types/src/shapes/Array.d.ts.map +1 -0
  46. package/dist/types/src/shapes/Audio.d.ts +54 -0
  47. package/dist/types/src/shapes/Audio.d.ts.map +1 -0
  48. package/dist/types/src/shapes/Beacon.d.ts +54 -0
  49. package/dist/types/src/shapes/Beacon.d.ts.map +1 -0
  50. package/dist/types/src/shapes/Boolean.d.ts +233 -0
  51. package/dist/types/src/shapes/Boolean.d.ts.map +1 -0
  52. package/dist/types/src/shapes/Chat.d.ts +57 -0
  53. package/dist/types/src/shapes/Chat.d.ts.map +1 -0
  54. package/dist/types/src/shapes/Constant.d.ts +60 -0
  55. package/dist/types/src/shapes/Constant.d.ts.map +1 -0
  56. package/dist/types/src/shapes/Database.d.ts +54 -0
  57. package/dist/types/src/shapes/Database.d.ts.map +1 -0
  58. package/dist/types/src/shapes/Function.d.ts +54 -0
  59. package/dist/types/src/shapes/Function.d.ts.map +1 -0
  60. package/dist/types/src/shapes/Gpt.d.ts +54 -0
  61. package/dist/types/src/shapes/Gpt.d.ts.map +1 -0
  62. package/dist/types/src/shapes/GptRealtime.d.ts +54 -0
  63. package/dist/types/src/shapes/GptRealtime.d.ts.map +1 -0
  64. package/dist/types/src/shapes/Json.d.ts +107 -0
  65. package/dist/types/src/shapes/Json.d.ts.map +1 -0
  66. package/dist/types/src/shapes/Logic.d.ts +109 -0
  67. package/dist/types/src/shapes/Logic.d.ts.map +1 -0
  68. package/dist/types/src/shapes/Queue.d.ts +58 -0
  69. package/dist/types/src/shapes/Queue.d.ts.map +1 -0
  70. package/dist/types/src/shapes/RNG.d.ts +58 -0
  71. package/dist/types/src/shapes/RNG.d.ts.map +1 -0
  72. package/dist/types/src/shapes/Scope.d.ts +54 -0
  73. package/dist/types/src/shapes/Scope.d.ts.map +1 -0
  74. package/dist/types/src/shapes/Surface.d.ts +54 -0
  75. package/dist/types/src/shapes/Surface.d.ts.map +1 -0
  76. package/dist/types/src/shapes/Switch.d.ts +54 -0
  77. package/dist/types/src/shapes/Switch.d.ts.map +1 -0
  78. package/dist/types/src/shapes/Table.d.ts +54 -0
  79. package/dist/types/src/shapes/Table.d.ts.map +1 -0
  80. package/dist/types/src/shapes/Template.d.ts +56 -0
  81. package/dist/types/src/shapes/Template.d.ts.map +1 -0
  82. package/dist/types/src/shapes/Text.d.ts +54 -0
  83. package/dist/types/src/shapes/Text.d.ts.map +1 -0
  84. package/dist/types/src/shapes/TextToImage.d.ts +54 -0
  85. package/dist/types/src/shapes/TextToImage.d.ts.map +1 -0
  86. package/dist/types/src/shapes/Thread.d.ts +58 -0
  87. package/dist/types/src/shapes/Thread.d.ts.map +1 -0
  88. package/dist/types/src/shapes/Trigger.d.ts +64 -0
  89. package/dist/types/src/shapes/Trigger.d.ts.map +1 -0
  90. package/dist/types/src/shapes/common/Box.d.ts +25 -0
  91. package/dist/types/src/shapes/common/Box.d.ts.map +1 -0
  92. package/dist/types/src/shapes/common/FunctionBody.d.ts +15 -0
  93. package/dist/types/src/shapes/common/FunctionBody.d.ts.map +1 -0
  94. package/dist/types/src/shapes/common/TypeSelect.d.ts +4 -0
  95. package/dist/types/src/shapes/common/TypeSelect.d.ts.map +1 -0
  96. package/dist/types/src/shapes/common/index.d.ts +4 -0
  97. package/dist/types/src/shapes/common/index.d.ts.map +1 -0
  98. package/dist/types/src/shapes/defs.d.ts +39 -0
  99. package/dist/types/src/shapes/defs.d.ts.map +1 -0
  100. package/dist/types/src/shapes/index.d.ts +27 -0
  101. package/dist/types/src/shapes/index.d.ts.map +1 -0
  102. package/dist/types/src/testing/circuits.d.ts +193 -0
  103. package/dist/types/src/testing/circuits.d.ts.map +1 -0
  104. package/dist/types/src/testing/index.d.ts +2 -0
  105. package/dist/types/src/testing/index.d.ts.map +1 -0
  106. package/dist/types/tsconfig.tsbuildinfo +1 -0
  107. package/package.json +85 -0
  108. package/src/README.md +47 -0
  109. package/src/components/DiagnosticOverlay.tsx +23 -0
  110. package/src/components/index.ts +5 -0
  111. package/src/compute-layout.ts +37 -0
  112. package/src/compute.stories.tsx +365 -0
  113. package/src/graph/controller.ts +419 -0
  114. package/src/graph/index.ts +6 -0
  115. package/src/graph/node-defs.ts +82 -0
  116. package/src/hooks/compute-context.ts +19 -0
  117. package/src/hooks/index.ts +7 -0
  118. package/src/hooks/useComputeNodeState.ts +83 -0
  119. package/src/hooks/useGraphMonitor.ts +133 -0
  120. package/src/index.ts +9 -0
  121. package/src/json.test.ts +35 -0
  122. package/src/registry.ts +100 -0
  123. package/src/schema.test.ts +62 -0
  124. package/src/shapes/Append.tsx +43 -0
  125. package/src/shapes/Array.tsx +61 -0
  126. package/src/shapes/Audio.tsx +55 -0
  127. package/src/shapes/Beacon.tsx +56 -0
  128. package/src/shapes/Boolean.tsx +215 -0
  129. package/src/shapes/Chat.tsx +77 -0
  130. package/src/shapes/Constant.tsx +125 -0
  131. package/src/shapes/Database.tsx +39 -0
  132. package/src/shapes/Function.tsx +40 -0
  133. package/src/shapes/Gpt.tsx +91 -0
  134. package/src/shapes/GptRealtime.tsx +175 -0
  135. package/src/shapes/Json.tsx +103 -0
  136. package/src/shapes/Logic.tsx +82 -0
  137. package/src/shapes/Queue.tsx +78 -0
  138. package/src/shapes/RNG.tsx +84 -0
  139. package/src/shapes/Scope.tsx +54 -0
  140. package/src/shapes/Surface.tsx +57 -0
  141. package/src/shapes/Switch.tsx +53 -0
  142. package/src/shapes/Table.tsx +45 -0
  143. package/src/shapes/Template.tsx +98 -0
  144. package/src/shapes/Text.tsx +56 -0
  145. package/src/shapes/TextToImage.tsx +39 -0
  146. package/src/shapes/Thread.tsx +87 -0
  147. package/src/shapes/Trigger.tsx +152 -0
  148. package/src/shapes/common/Box.tsx +74 -0
  149. package/src/shapes/common/FunctionBody.tsx +122 -0
  150. package/src/shapes/common/TypeSelect.tsx +31 -0
  151. package/src/shapes/common/index.ts +7 -0
  152. package/src/shapes/defs.ts +50 -0
  153. package/src/shapes/index.ts +31 -0
  154. package/src/testing/circuits.ts +320 -0
  155. package/src/testing/index.ts +5 -0
@@ -0,0 +1,193 @@
1
+ import { CanvasGraphModel } from '@dxos/react-ui-canvas-editor';
2
+ import { ComputeGraphController, type Services } from '../graph';
3
+ import { type ComputeShape } from '../shapes';
4
+ export declare const createComputeGraphController: (graph?: CanvasGraphModel<ComputeShape>, services?: Partial<Services>) => {
5
+ controller: ComputeGraphController;
6
+ graph: CanvasGraphModel<{
7
+ id: string;
8
+ data?: any;
9
+ type: string;
10
+ text?: string | undefined;
11
+ guide?: boolean | undefined;
12
+ classNames?: string | undefined;
13
+ center: {
14
+ readonly x: number;
15
+ readonly y: number;
16
+ };
17
+ size: {
18
+ width: number;
19
+ height: number;
20
+ };
21
+ } & {
22
+ node?: string | undefined;
23
+ }> | undefined;
24
+ };
25
+ export declare const createBasicCircuit: () => CanvasGraphModel<{
26
+ id: string;
27
+ data?: any;
28
+ type: string;
29
+ text?: string | undefined;
30
+ guide?: boolean | undefined;
31
+ classNames?: string | undefined;
32
+ center: {
33
+ readonly x: number;
34
+ readonly y: number;
35
+ };
36
+ size: {
37
+ width: number;
38
+ height: number;
39
+ };
40
+ } & {
41
+ node?: string | undefined;
42
+ }>;
43
+ export declare const createTransformCircuit: () => CanvasGraphModel<{
44
+ id: string;
45
+ data?: any;
46
+ type: string;
47
+ text?: string | undefined;
48
+ guide?: boolean | undefined;
49
+ classNames?: string | undefined;
50
+ center: {
51
+ readonly x: number;
52
+ readonly y: number;
53
+ };
54
+ size: {
55
+ width: number;
56
+ height: number;
57
+ };
58
+ } & {
59
+ node?: string | undefined;
60
+ }>;
61
+ export declare const createLogicCircuit: () => CanvasGraphModel<{
62
+ id: string;
63
+ data?: any;
64
+ type: string;
65
+ text?: string | undefined;
66
+ guide?: boolean | undefined;
67
+ classNames?: string | undefined;
68
+ center: {
69
+ readonly x: number;
70
+ readonly y: number;
71
+ };
72
+ size: {
73
+ width: number;
74
+ height: number;
75
+ };
76
+ } & {
77
+ node?: string | undefined;
78
+ }>;
79
+ export declare const createControlCircuit: () => CanvasGraphModel<{
80
+ id: string;
81
+ data?: any;
82
+ type: string;
83
+ text?: string | undefined;
84
+ guide?: boolean | undefined;
85
+ classNames?: string | undefined;
86
+ center: {
87
+ readonly x: number;
88
+ readonly y: number;
89
+ };
90
+ size: {
91
+ width: number;
92
+ height: number;
93
+ };
94
+ } & {
95
+ node?: string | undefined;
96
+ }>;
97
+ export declare const createTemplateCircuit: () => CanvasGraphModel<{
98
+ id: string;
99
+ data?: any;
100
+ type: string;
101
+ text?: string | undefined;
102
+ guide?: boolean | undefined;
103
+ classNames?: string | undefined;
104
+ center: {
105
+ readonly x: number;
106
+ readonly y: number;
107
+ };
108
+ size: {
109
+ width: number;
110
+ height: number;
111
+ };
112
+ } & {
113
+ node?: string | undefined;
114
+ }>;
115
+ export declare const createArtifactCircuit: () => CanvasGraphModel<{
116
+ id: string;
117
+ data?: any;
118
+ type: string;
119
+ text?: string | undefined;
120
+ guide?: boolean | undefined;
121
+ classNames?: string | undefined;
122
+ center: {
123
+ readonly x: number;
124
+ readonly y: number;
125
+ };
126
+ size: {
127
+ width: number;
128
+ height: number;
129
+ };
130
+ } & {
131
+ node?: string | undefined;
132
+ }>;
133
+ export declare const createGptCircuit: (options: {
134
+ db?: boolean;
135
+ cot?: boolean;
136
+ image?: boolean;
137
+ history?: boolean;
138
+ artifact?: boolean;
139
+ }) => CanvasGraphModel<{
140
+ id: string;
141
+ data?: any;
142
+ type: string;
143
+ text?: string | undefined;
144
+ guide?: boolean | undefined;
145
+ classNames?: string | undefined;
146
+ center: {
147
+ readonly x: number;
148
+ readonly y: number;
149
+ };
150
+ size: {
151
+ width: number;
152
+ height: number;
153
+ };
154
+ } & {
155
+ node?: string | undefined;
156
+ }>;
157
+ export declare const createGPTRealtimeCircuit: () => CanvasGraphModel<{
158
+ id: string;
159
+ data?: any;
160
+ type: string;
161
+ text?: string | undefined;
162
+ guide?: boolean | undefined;
163
+ classNames?: string | undefined;
164
+ center: {
165
+ readonly x: number;
166
+ readonly y: number;
167
+ };
168
+ size: {
169
+ width: number;
170
+ height: number;
171
+ };
172
+ } & {
173
+ node?: string | undefined;
174
+ }>;
175
+ export declare const createAudioCircuit: () => CanvasGraphModel<{
176
+ id: string;
177
+ data?: any;
178
+ type: string;
179
+ text?: string | undefined;
180
+ guide?: boolean | undefined;
181
+ classNames?: string | undefined;
182
+ center: {
183
+ readonly x: number;
184
+ readonly y: number;
185
+ };
186
+ size: {
187
+ width: number;
188
+ height: number;
189
+ };
190
+ } & {
191
+ node?: string | undefined;
192
+ }>;
193
+ //# sourceMappingURL=circuits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"circuits.d.ts","sourceRoot":"","sources":["../../../../src/testing/circuits.ts"],"names":[],"mappings":"AAQA,OAAO,EAAyD,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEvH,OAAO,EAAE,sBAAsB,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEjE,OAAO,EACL,KAAK,YAAY,EAwBlB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,4BAA4B,WAAY,gBAAgB,CAAC,YAAY,CAAC,aAAa,OAAO,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;CAKhH,CAAC;AAMF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;EAa9B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;EAiBlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;EAmB9B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;EA2BhC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;EAiEjC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;EAqBjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAAa;IACxC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;;;;;;;;;;;;;;;;;EA0DA,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;EAIpC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;EAS9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './circuits';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/testing/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":"5.7.3"}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "@dxos/react-ui-canvas-compute",
3
+ "version": "0.7.5-labs.071a3e2",
4
+ "description": "A compute graph extension for the canvas editor component.",
5
+ "homepage": "https://dxos.org",
6
+ "bugs": "https://github.com/dxos/dxos/issues",
7
+ "license": "MIT",
8
+ "author": "DXOS.org",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/types/src/index.d.ts",
12
+ "browser": "./dist/lib/browser/index.mjs",
13
+ "node": "./dist/lib/node-esm/index.mjs"
14
+ }
15
+ },
16
+ "types": "dist/types/src/index.d.ts",
17
+ "files": [
18
+ "dist",
19
+ "src"
20
+ ],
21
+ "dependencies": {
22
+ "@antv/graphlib": "^2.0.4",
23
+ "@antv/layout": "^1.2.13",
24
+ "chess.js": "^1.0.0",
25
+ "@dxos/artifact": "0.7.5-labs.071a3e2",
26
+ "@dxos/app-framework": "0.7.5-labs.071a3e2",
27
+ "@dxos/async": "0.7.5-labs.071a3e2",
28
+ "@dxos/context": "0.7.5-labs.071a3e2",
29
+ "@dxos/conductor": "0.7.5-labs.071a3e2",
30
+ "@dxos/echo-schema": "0.7.5-labs.071a3e2",
31
+ "@dxos/debug": "0.7.5-labs.071a3e2",
32
+ "@dxos/assistant": "0.7.5-labs.071a3e2",
33
+ "@dxos/edge-client": "0.7.5-labs.071a3e2",
34
+ "@dxos/graph": "0.7.5-labs.071a3e2",
35
+ "@dxos/functions": "0.7.5-labs.071a3e2",
36
+ "@dxos/invariant": "0.7.5-labs.071a3e2",
37
+ "@dxos/keys": "0.7.5-labs.071a3e2",
38
+ "@dxos/node-std": "0.7.5-labs.071a3e2",
39
+ "@dxos/live-object": "0.7.5-labs.071a3e2",
40
+ "@dxos/react-client": "0.7.5-labs.071a3e2",
41
+ "@dxos/log": "0.7.5-labs.071a3e2",
42
+ "@dxos/react-edge-client": "0.7.5-labs.071a3e2",
43
+ "@dxos/react-ui-attention": "0.7.5-labs.071a3e2",
44
+ "@dxos/react-ui-canvas": "0.7.5-labs.071a3e2",
45
+ "@dxos/react-ui-form": "0.7.5-labs.071a3e2",
46
+ "@dxos/react-ui-editor": "0.7.5-labs.071a3e2",
47
+ "@dxos/react-ui-sfx": "0.7.5-labs.071a3e2",
48
+ "@dxos/react-ui-canvas-editor": "0.7.5-labs.071a3e2",
49
+ "@dxos/react-ui-stack": "0.7.5-labs.071a3e2",
50
+ "@dxos/react-ui-syntax-highlighter": "0.7.5-labs.071a3e2",
51
+ "@dxos/schema": "0.7.5-labs.071a3e2",
52
+ "@dxos/util": "0.7.5-labs.071a3e2"
53
+ },
54
+ "devDependencies": {
55
+ "@effect/ai": "^0.5.1",
56
+ "@effect/platform": "^0.72.1",
57
+ "@types/lodash.defaultsdeep": "^4.6.6",
58
+ "@types/react": "~18.2.0",
59
+ "@types/react-dom": "~18.2.0",
60
+ "effect": "^3.12.3",
61
+ "lodash.defaultsdeep": "^4.6.1",
62
+ "react": "~18.2.0",
63
+ "react-dom": "~18.2.0",
64
+ "vite": "5.4.7",
65
+ "@dxos/app-framework": "0.7.5-labs.071a3e2",
66
+ "@dxos/artifact-testing": "0.7.5-labs.071a3e2",
67
+ "@dxos/compute": "0.7.5-labs.071a3e2",
68
+ "@dxos/random": "0.7.5-labs.071a3e2",
69
+ "@dxos/echo-signals": "0.7.5-labs.071a3e2",
70
+ "@dxos/react-ui": "0.7.5-labs.071a3e2",
71
+ "@dxos/storybook-utils": "0.7.5-labs.071a3e2",
72
+ "@dxos/react-ui-theme": "0.7.5-labs.071a3e2"
73
+ },
74
+ "peerDependencies": {
75
+ "@effect/schema": "^0.75.5",
76
+ "effect": "^3.12.3",
77
+ "react": "~18.2.0",
78
+ "react-dom": "~18.2.0",
79
+ "@dxos/react-ui": "0.7.5-labs.071a3e2",
80
+ "@dxos/react-ui-theme": "0.7.5-labs.071a3e2"
81
+ },
82
+ "publishConfig": {
83
+ "access": "public"
84
+ }
85
+ }
package/src/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Compute
2
+
3
+ - This folder represents a "compute plugin" for the Canvas component.
4
+ - It defines a set of Shapes that implement a state machine.
5
+
6
+ ### Notes (burdon)
7
+
8
+ - [x] Text/markdown view (parse cot, etc.)
9
+ - [x] Surface view
10
+ - [ ] Prompt with handlebar variables (dynamic schema)
11
+ - [ ] Artifact tool (find artifact defintions AND instances); conext (e.g., current game).
12
+ - [ ] Chess plugin defines artifact to generate and process FEN?
13
+ - [ ] Deploy funciton to play game.
14
+ - [ ] Function node (call script)
15
+ - [ ] Group nodes (sub-graph)
16
+ - [ ] Markdown surface node (parse COT)
17
+ - [ ] Auto layout graphs
18
+
19
+ ### Notes (dmaretskyi)
20
+
21
+ - Consider how different types of edges affect computations:
22
+ - Being able to provide values by reference
23
+ - e.g. GPT gets connected to a vector index that is represented by a separate node that can be queried
24
+ - history node can be provided by reference (as a mutable Thread object) that GPT mutates without requiring a back reference
25
+ - Consider separating purely functional inputs from imperative ones
26
+ - This is what UnrealEngine does - functional inputs trigger computations when the data changes, imperative inputs can trigger computations with the same or no data
27
+ - imperative inputs can represent events or streams of data
28
+ - functional inputs represent values
29
+
30
+ - persisting compute graph and canvas in ECHO
31
+ - (Canvas)-[.nodes]->(CanvasNode)-[.node]->(ComputeNode)<-[.nodes]-(ComputeGraph), (Canvas)-[.computeGraph]->(ComputeGraph)
32
+
33
+ - Computations can operate purely on the ComputeGraph
34
+ - Computations return an ExecutionTrace that is streamable
35
+ - Canvas graph doesn't directly interact with the compute graph, but reads the execution trace
36
+
37
+ - ExecutionTrace
38
+ - has an execution trace id -- one graph can have multiple independent parallel traces
39
+ - series of events - each event is associated with a particular node in a particular graph
40
+ - events include:
41
+ - inputs/outputs being updated
42
+ - logs associated with a node or a graph
43
+ - node state updates (can a node have internal state separate from inputs/outputs)
44
+ - timestep? - to correlate events that happen during a single execution time
45
+
46
+
47
+
@@ -0,0 +1,23 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import type { GraphDiagnostic } from '@dxos/conductor';
8
+
9
+ export type DiagnosticOverlayProps = {
10
+ diagnostics: GraphDiagnostic[];
11
+ };
12
+
13
+ export const DiagnosticOverlay = ({ diagnostics }: DiagnosticOverlayProps) => {
14
+ return (
15
+ <div className='absolute inset-0 pointer-events-none'>
16
+ {diagnostics.map((diagnostic, index) => (
17
+ <div key={index} className='absolute inset-0 pointer-events-none'>
18
+ {diagnostic.message}
19
+ </div>
20
+ ))}
21
+ </div>
22
+ );
23
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './DiagnosticOverlay';
@@ -0,0 +1,37 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import { DefaultInput, DefaultOutput } from '@dxos/conductor';
6
+ import { toEffectSchema } from '@dxos/echo-schema';
7
+ import { type Anchor, ShapeLayout, type ShapeRegistry } from '@dxos/react-ui-canvas-editor';
8
+
9
+ import { type ComputeGraphController } from './graph';
10
+ import { type ComputeShape, createFunctionAnchors } from './shapes';
11
+
12
+ // TODO(burdon): Customize layout. Specialize ComputeShapeDef and registry.
13
+ export class ComputeShapeLayout extends ShapeLayout {
14
+ constructor(
15
+ private _controller: ComputeGraphController,
16
+ registry: ShapeRegistry,
17
+ ) {
18
+ super(registry);
19
+ }
20
+
21
+ // TODO(burdon): Doesn't update.
22
+ override getAnchors(shape: ComputeShape): Record<string, Anchor> {
23
+ const shapeDef = this._registry.getShapeDef(shape.type);
24
+ let anchors = shapeDef?.getAnchors?.(shape) ?? {};
25
+ if (shape.node) {
26
+ const node = this._controller.graph.getNode(shape.node);
27
+ if (node.inputSchema || node.outputSchema) {
28
+ // TODO(burdon): Requires that component defined input and output types.
29
+ const inputSchema = node.inputSchema ? toEffectSchema(node.inputSchema) : DefaultInput;
30
+ const outputSchema = node.outputSchema ? toEffectSchema(node.outputSchema) : DefaultOutput;
31
+ anchors = createFunctionAnchors(shape, inputSchema, outputSchema);
32
+ }
33
+ }
34
+
35
+ return anchors;
36
+ }
37
+ }