@dxos/react-ui-canvas-compute 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d

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 (81) hide show
  1. package/dist/lib/browser/index.mjs +143 -123
  2. package/dist/lib/browser/index.mjs.map +4 -4
  3. package/dist/lib/browser/meta.json +1 -1
  4. package/dist/lib/node-esm/index.mjs +143 -123
  5. package/dist/lib/node-esm/index.mjs.map +4 -4
  6. package/dist/lib/node-esm/meta.json +1 -1
  7. package/dist/types/src/compute.stories.d.ts.map +1 -1
  8. package/dist/types/src/graph/controller.d.ts +31 -5
  9. package/dist/types/src/graph/controller.d.ts.map +1 -1
  10. package/dist/types/src/graph/node-defs.d.ts.map +1 -1
  11. package/dist/types/src/hooks/useComputeGraphController.d.ts +1 -1
  12. package/dist/types/src/hooks/useComputeGraphController.d.ts.map +1 -1
  13. package/dist/types/src/hooks/useComputeNodeState.d.ts +3 -2
  14. package/dist/types/src/hooks/useComputeNodeState.d.ts.map +1 -1
  15. package/dist/types/src/hooks/useGraphMonitor.d.ts +1 -1
  16. package/dist/types/src/hooks/useGraphMonitor.d.ts.map +1 -1
  17. package/dist/types/src/shapes/Append.d.ts.map +1 -1
  18. package/dist/types/src/shapes/Array.d.ts.map +1 -1
  19. package/dist/types/src/shapes/Audio.d.ts.map +1 -1
  20. package/dist/types/src/shapes/Beacon.d.ts.map +1 -1
  21. package/dist/types/src/shapes/Boolean.d.ts.map +1 -1
  22. package/dist/types/src/shapes/Chat.d.ts.map +1 -1
  23. package/dist/types/src/shapes/Constant.d.ts +1 -1
  24. package/dist/types/src/shapes/Constant.d.ts.map +1 -1
  25. package/dist/types/src/shapes/Database.d.ts.map +1 -1
  26. package/dist/types/src/shapes/Function.d.ts.map +1 -1
  27. package/dist/types/src/shapes/Gpt.d.ts.map +1 -1
  28. package/dist/types/src/shapes/GptRealtime.d.ts.map +1 -1
  29. package/dist/types/src/shapes/Json.d.ts.map +1 -1
  30. package/dist/types/src/shapes/Logic.d.ts.map +1 -1
  31. package/dist/types/src/shapes/Queue.d.ts.map +1 -1
  32. package/dist/types/src/shapes/RNG.d.ts.map +1 -1
  33. package/dist/types/src/shapes/Scope.d.ts.map +1 -1
  34. package/dist/types/src/shapes/Surface.d.ts.map +1 -1
  35. package/dist/types/src/shapes/Switch.d.ts.map +1 -1
  36. package/dist/types/src/shapes/Table.d.ts.map +1 -1
  37. package/dist/types/src/shapes/Template.d.ts.map +1 -1
  38. package/dist/types/src/shapes/Text.d.ts.map +1 -1
  39. package/dist/types/src/shapes/TextToImage.d.ts.map +1 -1
  40. package/dist/types/src/shapes/Thread.d.ts.map +1 -1
  41. package/dist/types/src/shapes/Trigger.d.ts.map +1 -1
  42. package/dist/types/src/shapes/common/Box.d.ts.map +1 -1
  43. package/dist/types/src/testing/circuits.d.ts +1 -1
  44. package/dist/types/src/testing/circuits.d.ts.map +1 -1
  45. package/dist/types/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +43 -42
  47. package/src/compute.stories.tsx +15 -27
  48. package/src/graph/controller.ts +10 -10
  49. package/src/graph/node-defs.ts +3 -3
  50. package/src/hooks/useComputeGraphController.ts +1 -1
  51. package/src/hooks/useComputeNodeState.ts +6 -4
  52. package/src/hooks/useGraphMonitor.ts +1 -1
  53. package/src/registry.ts +2 -2
  54. package/src/schema.test.ts +2 -2
  55. package/src/shapes/Append.tsx +2 -2
  56. package/src/shapes/Array.tsx +2 -2
  57. package/src/shapes/Audio.tsx +3 -2
  58. package/src/shapes/Beacon.tsx +4 -4
  59. package/src/shapes/Boolean.tsx +2 -2
  60. package/src/shapes/Chat.tsx +3 -2
  61. package/src/shapes/Constant.tsx +3 -2
  62. package/src/shapes/Database.tsx +1 -1
  63. package/src/shapes/Function.tsx +6 -5
  64. package/src/shapes/Gpt.tsx +6 -4
  65. package/src/shapes/GptRealtime.tsx +1 -1
  66. package/src/shapes/Json.tsx +3 -2
  67. package/src/shapes/Logic.tsx +2 -2
  68. package/src/shapes/Queue.tsx +3 -2
  69. package/src/shapes/RNG.tsx +4 -4
  70. package/src/shapes/Scope.tsx +4 -3
  71. package/src/shapes/Surface.tsx +4 -3
  72. package/src/shapes/Switch.tsx +3 -2
  73. package/src/shapes/Table.tsx +5 -5
  74. package/src/shapes/Template.tsx +4 -3
  75. package/src/shapes/Text.tsx +4 -3
  76. package/src/shapes/TextToImage.tsx +1 -1
  77. package/src/shapes/Thread.tsx +5 -5
  78. package/src/shapes/Trigger.tsx +4 -4
  79. package/src/shapes/common/Box.tsx +2 -2
  80. package/src/shapes/common/FunctionBody.tsx +1 -1
  81. package/src/testing/circuits.ts +4 -4
@@ -3,92 +3,16 @@ import "@dxos/node-std/globals";
3
3
  // src/graph/controller.ts
4
4
  import { Effect, Either, Exit, Scope } from "effect";
5
5
  import { Event, synchronized } from "@dxos/async";
6
- import { GraphExecutor, isNotExecuted, ValueBag } from "@dxos/conductor";
6
+ import { GraphExecutor, ValueBag, isNotExecuted } from "@dxos/conductor";
7
7
  import { Resource } from "@dxos/context";
8
8
  import { log } from "@dxos/log";
9
9
 
10
- // src/graph/node-defs.ts
11
- import { NODE_INPUT, NODE_OUTPUT, registry, getTemplateInputSchema } from "@dxos/conductor";
12
- import { raise } from "@dxos/debug";
13
- import { ObjectId, toJsonSchema } from "@dxos/echo-schema";
14
- import { invariant } from "@dxos/invariant";
15
- var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-canvas-compute/src/graph/node-defs.ts";
16
- var resolveComputeNode = async (node) => {
17
- const impl = registry[node.type];
18
- invariant(impl, `Unknown node type: ${node.type}`, {
19
- F: __dxlog_file,
20
- L: 22,
21
- S: void 0,
22
- A: [
23
- "impl",
24
- "`Unknown node type: ${node.type}`"
25
- ]
26
- });
27
- return impl;
28
- };
29
- var isValidComputeNode = (type) => {
30
- return nodeFactory[type] !== void 0;
31
- };
32
- var createComputeNode = (shape) => {
33
- const type = shape.type ?? raise(new Error("Type not specified"));
34
- const factory = nodeFactory[type] ?? raise(new Error(`Unknown shape type: ${type}`));
35
- return factory(shape);
36
- };
37
- var nodeFactory = {
38
- // System.
39
- [NODE_INPUT]: () => createNode(NODE_INPUT),
40
- [NODE_OUTPUT]: () => createNode(NODE_OUTPUT),
41
- // Extensions.
42
- ["text-to-image"]: () => createNode("text-to-image"),
43
- ["and"]: () => createNode("and"),
44
- ["append"]: () => createNode("append"),
45
- ["audio"]: () => createNode("audio"),
46
- ["beacon"]: () => createNode("beacon"),
47
- ["chat"]: () => createNode("chat"),
48
- ["constant"]: (shape) => createNode("constant", {
49
- value: shape.value
50
- }),
51
- ["make-queue"]: () => createNode("make-queue"),
52
- ["database"]: () => createNode("database"),
53
- ["gpt"]: () => createNode("gpt"),
54
- ["gpt-realtime"]: () => createNode("gpt-realtime"),
55
- ["if"]: () => createNode("if"),
56
- ["if-else"]: () => createNode("if-else"),
57
- ["function"]: () => createNode("function"),
58
- ["json"]: () => createNode("json"),
59
- ["json-transform"]: () => createNode("json-transform"),
60
- ["not"]: () => createNode("not"),
61
- ["or"]: () => createNode("or"),
62
- ["queue"]: () => createNode("queue"),
63
- ["rng"]: () => createNode("rng"),
64
- ["reducer"]: () => createNode("reducer"),
65
- ["scope"]: () => createNode("scope"),
66
- ["surface"]: () => createNode("surface"),
67
- ["switch"]: () => createNode("switch"),
68
- ["template"]: (shape) => {
69
- const node = createNode("template", {
70
- valueType: shape.valueType,
71
- value: shape.text
72
- });
73
- node.inputSchema = toJsonSchema(getTemplateInputSchema(node));
74
- return node;
75
- },
76
- ["text"]: () => createNode("text"),
77
- ["thread"]: () => createNode("thread"),
78
- ["trigger"]: () => createNode(NODE_INPUT)
79
- };
80
- var createNode = (type, props) => ({
81
- id: ObjectId.random(),
82
- type,
83
- ...props
84
- });
85
-
86
10
  // src/hooks/compute-context.ts
87
11
  import { createContext, useContext } from "react";
88
- import { raise as raise2 } from "@dxos/debug";
12
+ import { raise } from "@dxos/debug";
89
13
  var ComputeContext = createContext(null);
90
14
  var useComputeContext = () => {
91
- return useContext(ComputeContext) ?? raise2(new Error("Missing ComputeContext"));
15
+ return useContext(ComputeContext) ?? raise(new Error("Missing ComputeContext"));
92
16
  };
93
17
 
94
18
  // src/hooks/useComputeGraphController.ts
@@ -144,13 +68,13 @@ var useComputeGraphController = ({ controller, graph, editorRef }) => {
144
68
  // src/hooks/useComputeNodeState.ts
145
69
  import { Schema } from "effect";
146
70
  import { useCallback, useEffect as useEffect2, useState as useState2 } from "react";
147
- import { invariant as invariant2 } from "@dxos/invariant";
148
- var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui-canvas-compute/src/hooks/useComputeNodeState.ts";
71
+ import { invariant } from "@dxos/invariant";
72
+ var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-canvas-compute/src/hooks/useComputeNodeState.ts";
149
73
  var useComputeNodeState = (shape) => {
150
74
  const { controller } = useComputeContext();
151
- invariant2(controller, void 0, {
152
- F: __dxlog_file2,
153
- L: 32,
75
+ invariant(controller, void 0, {
76
+ F: __dxlog_file,
77
+ L: 34,
154
78
  S: void 0,
155
79
  A: [
156
80
  "controller",
@@ -161,9 +85,9 @@ var useComputeNodeState = (shape) => {
161
85
  useEffect2(() => {
162
86
  let disposed = false;
163
87
  queueMicrotask(async () => {
164
- invariant2(shape.node, "Node not specified", {
165
- F: __dxlog_file2,
166
- L: 38,
88
+ invariant(shape.node, "Node not specified", {
89
+ F: __dxlog_file,
90
+ L: 40,
167
91
  S: void 0,
168
92
  A: [
169
93
  "shape.node",
@@ -218,16 +142,16 @@ var useComputeNodeState = (shape) => {
218
142
  // src/hooks/useGraphMonitor.ts
219
143
  import { useMemo } from "react";
220
144
  import { ComputeGraphModel, DEFAULT_INPUT, DEFAULT_OUTPUT } from "@dxos/conductor";
221
- import { ObjectId as ObjectId2, Ref } from "@dxos/echo-schema";
222
- import { invariant as invariant3 } from "@dxos/invariant";
145
+ import { ObjectId, Ref } from "@dxos/echo-schema";
146
+ import { invariant as invariant2 } from "@dxos/invariant";
223
147
  import { getSpace } from "@dxos/react-client/echo";
224
148
  import { isNonNullable } from "@dxos/util";
225
- var __dxlog_file3 = "/__w/dxos/dxos/packages/ui/react-ui-canvas-compute/src/hooks/useGraphMonitor.ts";
149
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/ui/react-ui-canvas-compute/src/hooks/useGraphMonitor.ts";
226
150
  var mapEdge = (graph, { source, target, output = DEFAULT_OUTPUT, input = DEFAULT_INPUT }) => {
227
151
  const sourceNode = graph.findNode(source);
228
152
  const targetNode = graph.findNode(target);
229
- invariant3(sourceNode?.node, void 0, {
230
- F: __dxlog_file3,
153
+ invariant2(sourceNode?.node, void 0, {
154
+ F: __dxlog_file2,
231
155
  L: 26,
232
156
  S: void 0,
233
157
  A: [
@@ -235,8 +159,8 @@ var mapEdge = (graph, { source, target, output = DEFAULT_OUTPUT, input = DEFAULT
235
159
  ""
236
160
  ]
237
161
  });
238
- invariant3(targetNode?.node, void 0, {
239
- F: __dxlog_file3,
162
+ invariant2(targetNode?.node, void 0, {
163
+ F: __dxlog_file2,
240
164
  L: 27,
241
165
  S: void 0,
242
166
  A: [
@@ -245,7 +169,7 @@ var mapEdge = (graph, { source, target, output = DEFAULT_OUTPUT, input = DEFAULT
245
169
  ]
246
170
  });
247
171
  return {
248
- id: ObjectId2.random(),
172
+ id: ObjectId.random(),
249
173
  source: sourceNode.node,
250
174
  target: targetNode.node,
251
175
  output,
@@ -259,8 +183,8 @@ var useGraphMonitor = (model) => {
259
183
  if (!model) {
260
184
  return;
261
185
  }
262
- invariant3(node.type, void 0, {
263
- F: __dxlog_file3,
186
+ invariant2(node.type, void 0, {
187
+ F: __dxlog_file2,
264
188
  L: 52,
265
189
  S: void 0,
266
190
  A: [
@@ -317,8 +241,8 @@ var createComputeGraph = (graph) => {
317
241
  };
318
242
  var linkTriggerToCompute = (graph, computeNode, triggerData) => {
319
243
  const functionTrigger = triggerData.functionTrigger?.target;
320
- invariant3(functionTrigger, void 0, {
321
- F: __dxlog_file3,
244
+ invariant2(functionTrigger, void 0, {
245
+ F: __dxlog_file2,
322
246
  L: 115,
323
247
  S: void 0,
324
248
  A: [
@@ -342,6 +266,82 @@ var deleteTriggerObjects = (computeGraph, deleted) => {
342
266
  }
343
267
  };
344
268
 
269
+ // src/graph/node-defs.ts
270
+ import { NODE_INPUT, NODE_OUTPUT, getTemplateInputSchema, registry } from "@dxos/conductor";
271
+ import { raise as raise2 } from "@dxos/debug";
272
+ import { ObjectId as ObjectId2, toJsonSchema } from "@dxos/echo-schema";
273
+ import { invariant as invariant3 } from "@dxos/invariant";
274
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/ui/react-ui-canvas-compute/src/graph/node-defs.ts";
275
+ var resolveComputeNode = async (node) => {
276
+ const impl = registry[node.type];
277
+ invariant3(impl, `Unknown node type: ${node.type}`, {
278
+ F: __dxlog_file3,
279
+ L: 22,
280
+ S: void 0,
281
+ A: [
282
+ "impl",
283
+ "`Unknown node type: ${node.type}`"
284
+ ]
285
+ });
286
+ return impl;
287
+ };
288
+ var isValidComputeNode = (type) => {
289
+ return nodeFactory[type] !== void 0;
290
+ };
291
+ var createComputeNode = (shape) => {
292
+ const type = shape.type ?? raise2(new Error("Type not specified"));
293
+ const factory = nodeFactory[type] ?? raise2(new Error(`Unknown shape type: ${type}`));
294
+ return factory(shape);
295
+ };
296
+ var nodeFactory = {
297
+ // System.
298
+ [NODE_INPUT]: () => createNode(NODE_INPUT),
299
+ [NODE_OUTPUT]: () => createNode(NODE_OUTPUT),
300
+ // Extensions.
301
+ ["text-to-image"]: () => createNode("text-to-image"),
302
+ ["and"]: () => createNode("and"),
303
+ ["append"]: () => createNode("append"),
304
+ ["audio"]: () => createNode("audio"),
305
+ ["beacon"]: () => createNode("beacon"),
306
+ ["chat"]: () => createNode("chat"),
307
+ ["constant"]: (shape) => createNode("constant", {
308
+ value: shape.value
309
+ }),
310
+ ["make-queue"]: () => createNode("make-queue"),
311
+ ["database"]: () => createNode("database"),
312
+ ["gpt"]: () => createNode("gpt"),
313
+ ["gpt-realtime"]: () => createNode("gpt-realtime"),
314
+ ["if"]: () => createNode("if"),
315
+ ["if-else"]: () => createNode("if-else"),
316
+ ["function"]: () => createNode("function"),
317
+ ["json"]: () => createNode("json"),
318
+ ["json-transform"]: () => createNode("json-transform"),
319
+ ["not"]: () => createNode("not"),
320
+ ["or"]: () => createNode("or"),
321
+ ["queue"]: () => createNode("queue"),
322
+ ["rng"]: () => createNode("rng"),
323
+ ["reducer"]: () => createNode("reducer"),
324
+ ["scope"]: () => createNode("scope"),
325
+ ["surface"]: () => createNode("surface"),
326
+ ["switch"]: () => createNode("switch"),
327
+ ["template"]: (shape) => {
328
+ const node = createNode("template", {
329
+ valueType: shape.valueType,
330
+ value: shape.text
331
+ });
332
+ node.inputSchema = toJsonSchema(getTemplateInputSchema(node));
333
+ return node;
334
+ },
335
+ ["text"]: () => createNode("text"),
336
+ ["thread"]: () => createNode("thread"),
337
+ ["trigger"]: () => createNode(NODE_INPUT)
338
+ };
339
+ var createNode = (type, props) => ({
340
+ id: ObjectId2.random(),
341
+ type,
342
+ ...props
343
+ });
344
+
345
345
  // src/graph/controller.ts
346
346
  function _ts_decorate(decorators, target, key, desc) {
347
347
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -365,6 +365,24 @@ var createComputeGraphController = (graph, serviceContainer) => {
365
365
  };
366
366
  };
367
367
  var ComputeGraphController = class extends Resource {
368
+ _serviceContainer;
369
+ _graph;
370
+ _executor;
371
+ _diagnostics;
372
+ /**
373
+ * Canvas force-sets outputs of those nodes.
374
+ */
375
+ _forcedOutputs;
376
+ /**
377
+ * Runtime state of the execution graph.
378
+ */
379
+ _runtimeStateInputs;
380
+ _runtimeStateOutputs;
381
+ // TODO(burdon): Remove? Make state reactive?
382
+ update;
383
+ /** Computed result. */
384
+ output;
385
+ events;
368
386
  constructor(_serviceContainer, _graph) {
369
387
  super(), this._serviceContainer = _serviceContainer, this._graph = _graph, this._executor = new GraphExecutor({
370
388
  computeNodeResolver: (node) => resolveComputeNode(node)
@@ -685,7 +703,7 @@ import { SchemaAST as SchemaAST2 } from "effect";
685
703
  import React2, { useRef, useState as useState3 } from "react";
686
704
  import { VoidInput, VoidOutput } from "@dxos/conductor";
687
705
  import { useCanvasContext } from "@dxos/react-ui-canvas";
688
- import { getParentShapeElement, createAnchors, rowHeight } from "@dxos/react-ui-canvas-editor";
706
+ import { createAnchors, getParentShapeElement, rowHeight } from "@dxos/react-ui-canvas-editor";
689
707
 
690
708
  // src/shapes/defs.ts
691
709
  import { Schema as Schema2, SchemaAST } from "effect";
@@ -965,7 +983,6 @@ import React7 from "react";
965
983
  import { DEFAULT_INPUT as DEFAULT_INPUT3, isTruthy } from "@dxos/conductor";
966
984
  import { Icon as Icon3 } from "@dxos/react-ui";
967
985
  import { createAnchorMap as createAnchorMap2 } from "@dxos/react-ui-canvas-editor";
968
- import { mx as mx2 } from "@dxos/react-ui-theme";
969
986
  var BeaconShape = Schema6.extend(ComputeShape, Schema6.Struct({
970
987
  type: Schema6.Literal("beacon")
971
988
  }));
@@ -987,7 +1004,10 @@ var BeaconComponent = ({ shape }) => {
987
1004
  className: "flex w-full justify-center items-center"
988
1005
  }, /* @__PURE__ */ React7.createElement(Icon3, {
989
1006
  icon: "ph--sun--regular",
990
- classNames: mx2("transition opacity-20 duration-1000", isTruthy(value) && "opacity-100 text-yellow-500"),
1007
+ classNames: [
1008
+ "transition opacity-20 duration-1000",
1009
+ isTruthy(value) && "opacity-100 text-yellow-500"
1010
+ ],
991
1011
  size: 8
992
1012
  }));
993
1013
  } finally {
@@ -1390,7 +1410,7 @@ import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking
1390
1410
  import { Schema as Schema11 } from "effect";
1391
1411
  import React12, { useCallback as useCallback3, useRef as useRef4 } from "react";
1392
1412
  import { AnyOutput, FunctionInput } from "@dxos/conductor";
1393
- import { getSnapshot, isInstanceOf, Ref as Ref2 } from "@dxos/echo-schema";
1413
+ import { Ref as Ref2, getSnapshot, isInstanceOf } from "@dxos/echo-schema";
1394
1414
  import { FunctionType, ScriptType } from "@dxos/functions";
1395
1415
  import { useClient } from "@dxos/react-client";
1396
1416
  import { Filter, parseId } from "@dxos/react-client/echo";
@@ -1702,7 +1722,7 @@ import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking
1702
1722
  import { Schema as Schema15 } from "effect";
1703
1723
  import React16, { Fragment } from "react";
1704
1724
  import { DEFAULT_OUTPUT as DEFAULT_OUTPUT4, QueueInput, QueueOutput } from "@dxos/conductor";
1705
- import { mx as mx3 } from "@dxos/react-ui-theme";
1725
+ import { mx as mx2 } from "@dxos/react-ui-theme";
1706
1726
  var QueueShape = Schema15.extend(ComputeShape, Schema15.Struct({
1707
1727
  type: Schema15.Literal("queue")
1708
1728
  }));
@@ -1746,11 +1766,11 @@ var QueueItem = ({ classNames, item }) => {
1746
1766
  try {
1747
1767
  if (typeof item !== "object") {
1748
1768
  return /* @__PURE__ */ React16.createElement("div", {
1749
- className: mx3(classNames, "whitespace-pre-wrap")
1769
+ className: mx2(classNames, "whitespace-pre-wrap")
1750
1770
  }, item);
1751
1771
  }
1752
1772
  return /* @__PURE__ */ React16.createElement("div", {
1753
- className: mx3("grid grid-cols-[80px,1fr]", classNames)
1773
+ className: mx2("grid grid-cols-[80px,1fr]", classNames)
1754
1774
  }, Object.entries(item).map(([key, value]) => /* @__PURE__ */ React16.createElement(Fragment, {
1755
1775
  key
1756
1776
  }, /* @__PURE__ */ React16.createElement("div", {
@@ -1777,7 +1797,6 @@ import React17, { useEffect as useEffect5, useState as useState7 } from "react";
1777
1797
  import { DEFAULT_OUTPUT as DEFAULT_OUTPUT5 } from "@dxos/conductor";
1778
1798
  import { Icon as Icon4 } from "@dxos/react-ui";
1779
1799
  import { createAnchorMap as createAnchorMap7 } from "@dxos/react-ui-canvas-editor";
1780
- import { mx as mx4 } from "@dxos/react-ui-theme";
1781
1800
  var RandomShape = Schema16.extend(ComputeShape, Schema16.Struct({
1782
1801
  type: Schema16.Literal("rng"),
1783
1802
  min: Schema16.optional(Schema16.Number),
@@ -1830,7 +1849,7 @@ var RandomComponent = ({ shape }) => {
1830
1849
  className: "flex grow items-center justify-center"
1831
1850
  }, /* @__PURE__ */ React17.createElement(Icon4, {
1832
1851
  icon,
1833
- classNames: mx4(spin && "animate-[spin_1s]"),
1852
+ classNames: spin && "animate-[spin_1s]",
1834
1853
  size: 10,
1835
1854
  onClick: handleClick
1836
1855
  }));
@@ -1858,7 +1877,7 @@ import { Schema as Schema17 } from "effect";
1858
1877
  import React18 from "react";
1859
1878
  import { DEFAULT_INPUT as DEFAULT_INPUT5 } from "@dxos/conductor";
1860
1879
  import { createAnchorMap as createAnchorMap8 } from "@dxos/react-ui-canvas-editor";
1861
- import { useAudioStream, Chaos, shaderPresets } from "@dxos/react-ui-sfx";
1880
+ import { Chaos, shaderPresets, useAudioStream } from "@dxos/react-ui-sfx";
1862
1881
  var ScopeShape = Schema17.extend(ComputeShape, Schema17.Struct({
1863
1882
  type: Schema17.Literal("scope")
1864
1883
  }));
@@ -1939,7 +1958,7 @@ var SurfaceComponent = ({ shape }) => {
1939
1958
  shape,
1940
1959
  onAction: handleAction
1941
1960
  }, value !== null && /* @__PURE__ */ React19.createElement(Surface, {
1942
- role: "canvas-node",
1961
+ role: "card--extrinsic",
1943
1962
  data: {
1944
1963
  value
1945
1964
  },
@@ -2021,10 +2040,10 @@ var switchShape = {
2021
2040
  import { useSignals as _useSignals20 } from "@preact-signals/safe-react/tracking";
2022
2041
  import { Schema as Schema20 } from "effect";
2023
2042
  import React21 from "react";
2024
- import { Message } from "@dxos/ai";
2025
2043
  import { createInputSchema, createOutputSchema } from "@dxos/conductor";
2026
- var InputSchema = createInputSchema(Message);
2027
- var OutputSchema = createOutputSchema(Schema20.mutable(Schema20.Array(Message)));
2044
+ import { DataType } from "@dxos/schema";
2045
+ var InputSchema = createInputSchema(DataType.Message);
2046
+ var OutputSchema = createOutputSchema(Schema20.mutable(Schema20.Array(DataType.Message)));
2028
2047
  var TableShape = Schema20.extend(ComputeShape, Schema20.Struct({
2029
2048
  type: Schema20.Literal("table")
2030
2049
  }));
@@ -2060,7 +2079,7 @@ var tableShape = {
2060
2079
  import { useSignals as _useSignals21 } from "@preact-signals/safe-react/tracking";
2061
2080
  import { Schema as Schema21 } from "effect";
2062
2081
  import React22, { useRef as useRef5 } from "react";
2063
- import { ComputeValueType as ComputeValueType3, getTemplateInputSchema as getTemplateInputSchema2, TemplateOutput, VoidInput as VoidInput2 } from "@dxos/conductor";
2082
+ import { ComputeValueType as ComputeValueType3, TemplateOutput, VoidInput as VoidInput2, getTemplateInputSchema as getTemplateInputSchema2 } from "@dxos/conductor";
2064
2083
  import { toJsonSchema as toJsonSchema2 } from "@dxos/echo-schema";
2065
2084
  import { invariant as invariant5 } from "@dxos/invariant";
2066
2085
  import { TextBox as TextBox4 } from "@dxos/react-ui-canvas-editor";
@@ -2085,7 +2104,7 @@ var TextInputComponent3 = ({ shape, title, ...props }) => {
2085
2104
  const handleTypeChange = (newType) => {
2086
2105
  invariant5(Schema21.is(ComputeValueType3)(newType), "Invalid type", {
2087
2106
  F: __dxlog_file6,
2088
- L: 58,
2107
+ L: 59,
2089
2108
  S: void 0,
2090
2109
  A: [
2091
2110
  "Schema.is(ComputeValueType)(newType)",
@@ -2193,11 +2212,11 @@ var textShape = {
2193
2212
  import { useSignals as _useSignals23 } from "@preact-signals/safe-react/tracking";
2194
2213
  import { Schema as Schema23 } from "effect";
2195
2214
  import React24, { useEffect as useEffect7, useRef as useRef6 } from "react";
2196
- import { Message as Message2 } from "@dxos/ai";
2197
2215
  import { createInputSchema as createInputSchema2, createOutputSchema as createOutputSchema2 } from "@dxos/conductor";
2198
- import { mx as mx5 } from "@dxos/react-ui-theme";
2199
- var InputSchema2 = createInputSchema2(Message2);
2200
- var OutputSchema2 = createOutputSchema2(Schema23.mutable(Schema23.Array(Message2)));
2216
+ import { mx as mx3 } from "@dxos/react-ui-theme";
2217
+ import { DataType as DataType2 } from "@dxos/schema";
2218
+ var InputSchema2 = createInputSchema2(DataType2.Message);
2219
+ var OutputSchema2 = createOutputSchema2(Schema23.mutable(Schema23.Array(DataType2.Message)));
2201
2220
  var ThreadShape = Schema23.extend(ComputeShape, Schema23.Struct({
2202
2221
  type: Schema23.Literal("thread")
2203
2222
  }));
@@ -2241,14 +2260,14 @@ var ThreadItem = ({ classNames, item }) => {
2241
2260
  try {
2242
2261
  if (typeof item !== "object") {
2243
2262
  return /* @__PURE__ */ React24.createElement("div", {
2244
- className: mx5(classNames)
2263
+ className: mx3(classNames)
2245
2264
  }, item);
2246
2265
  }
2247
2266
  const { role, message } = item;
2248
2267
  return /* @__PURE__ */ React24.createElement("div", {
2249
- className: mx5("flex", classNames, role === "user" && "justify-end")
2268
+ className: mx3("flex", classNames, role === "user" && "justify-end")
2250
2269
  }, /* @__PURE__ */ React24.createElement("div", {
2251
- className: mx5("block rounded-md p-1 px-2 text-sm", role === "user" ? "bg-blue-100 dark:bg-blue-800" : role === "system" ? "bg-red-100, dark:bg-red-800" : "whitespace-pre-wrap bg-neutral-50 dark:bg-neutral-800")
2270
+ className: mx3("block rounded-md p-1 px-2 text-sm", role === "user" ? "bg-blue-100 dark:bg-blue-800" : role === "system" ? "bg-red-100, dark:bg-red-800" : "whitespace-pre-wrap bg-neutral-50 dark:bg-neutral-800")
2252
2271
  }, message));
2253
2272
  } finally {
2254
2273
  _effect.f();
@@ -2310,7 +2329,7 @@ import { Schema as Schema25 } from "effect";
2310
2329
  import React26, { useEffect as useEffect8 } from "react";
2311
2330
  import { VoidInput as VoidInput3 } from "@dxos/conductor";
2312
2331
  import { ObjectId as ObjectId4, Ref as Ref3 } from "@dxos/echo-schema";
2313
- import { EmailTriggerOutput, FunctionTrigger, QueueTriggerOutput, TriggerKind, SubscriptionTriggerOutput, TimerTriggerOutput, WebhookTriggerOutput } from "@dxos/functions";
2332
+ import { EmailTriggerOutput, FunctionTrigger, QueueTriggerOutput, SubscriptionTriggerOutput, TimerTriggerOutput, TriggerKind, WebhookTriggerOutput } from "@dxos/functions";
2314
2333
  import { DXN, SpaceId } from "@dxos/keys";
2315
2334
  import { live, useSpace } from "@dxos/react-client/echo";
2316
2335
  import { Select as Select2 } from "@dxos/react-ui";
@@ -2650,6 +2669,7 @@ import { DefaultInput, DefaultOutput as DefaultOutput2 } from "@dxos/conductor";
2650
2669
  import { toEffectSchema } from "@dxos/echo-schema";
2651
2670
  import { ShapeLayout } from "@dxos/react-ui-canvas-editor";
2652
2671
  var ComputeShapeLayout = class extends ShapeLayout {
2672
+ _controller;
2653
2673
  constructor(_controller, registry2) {
2654
2674
  super(registry2), this._controller = _controller;
2655
2675
  }