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

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 (121) hide show
  1. package/dist/lib/browser/index.mjs +1026 -1177
  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 +1026 -1177
  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 +33 -5
  8. package/dist/types/src/compute.stories.d.ts.map +1 -1
  9. package/dist/types/src/graph/controller.d.ts +41 -27
  10. package/dist/types/src/graph/controller.d.ts.map +1 -1
  11. package/dist/types/src/graph/node-defs.d.ts.map +1 -1
  12. package/dist/types/src/hooks/useComputeGraphController.d.ts +2 -2
  13. package/dist/types/src/hooks/useComputeGraphController.d.ts.map +1 -1
  14. package/dist/types/src/hooks/useComputeNodeState.d.ts +4 -3
  15. package/dist/types/src/hooks/useComputeNodeState.d.ts.map +1 -1
  16. package/dist/types/src/hooks/useGraphMonitor.d.ts +2 -2
  17. package/dist/types/src/hooks/useGraphMonitor.d.ts.map +1 -1
  18. package/dist/types/src/json.test.d.ts +1 -1
  19. package/dist/types/src/json.test.d.ts.map +1 -1
  20. package/dist/types/src/shapes/Append.d.ts +1 -1
  21. package/dist/types/src/shapes/Append.d.ts.map +1 -1
  22. package/dist/types/src/shapes/Array.d.ts +1 -1
  23. package/dist/types/src/shapes/Array.d.ts.map +1 -1
  24. package/dist/types/src/shapes/Audio.d.ts +1 -1
  25. package/dist/types/src/shapes/Audio.d.ts.map +1 -1
  26. package/dist/types/src/shapes/Beacon.d.ts +1 -1
  27. package/dist/types/src/shapes/Beacon.d.ts.map +1 -1
  28. package/dist/types/src/shapes/Boolean.d.ts +1 -1
  29. package/dist/types/src/shapes/Boolean.d.ts.map +1 -1
  30. package/dist/types/src/shapes/Chat.d.ts +1 -1
  31. package/dist/types/src/shapes/Chat.d.ts.map +1 -1
  32. package/dist/types/src/shapes/Constant.d.ts +1 -1
  33. package/dist/types/src/shapes/Constant.d.ts.map +1 -1
  34. package/dist/types/src/shapes/Database.d.ts +1 -1
  35. package/dist/types/src/shapes/Database.d.ts.map +1 -1
  36. package/dist/types/src/shapes/{Queue.d.ts → Feed.d.ts} +9 -9
  37. package/dist/types/src/shapes/Feed.d.ts.map +1 -0
  38. package/dist/types/src/shapes/Function.d.ts +1 -1
  39. package/dist/types/src/shapes/Function.d.ts.map +1 -1
  40. package/dist/types/src/shapes/Gpt.d.ts +1 -1
  41. package/dist/types/src/shapes/Gpt.d.ts.map +1 -1
  42. package/dist/types/src/shapes/GptRealtime.d.ts +1 -1
  43. package/dist/types/src/shapes/GptRealtime.d.ts.map +1 -1
  44. package/dist/types/src/shapes/Json.d.ts +1 -1
  45. package/dist/types/src/shapes/Json.d.ts.map +1 -1
  46. package/dist/types/src/shapes/Logic.d.ts +1 -1
  47. package/dist/types/src/shapes/Logic.d.ts.map +1 -1
  48. package/dist/types/src/shapes/RNG.d.ts +1 -1
  49. package/dist/types/src/shapes/RNG.d.ts.map +1 -1
  50. package/dist/types/src/shapes/Scope.d.ts +1 -1
  51. package/dist/types/src/shapes/Scope.d.ts.map +1 -1
  52. package/dist/types/src/shapes/Surface.d.ts +1 -1
  53. package/dist/types/src/shapes/Surface.d.ts.map +1 -1
  54. package/dist/types/src/shapes/Switch.d.ts +1 -1
  55. package/dist/types/src/shapes/Switch.d.ts.map +1 -1
  56. package/dist/types/src/shapes/Table.d.ts +1 -1
  57. package/dist/types/src/shapes/Table.d.ts.map +1 -1
  58. package/dist/types/src/shapes/Template.d.ts +1 -1
  59. package/dist/types/src/shapes/Template.d.ts.map +1 -1
  60. package/dist/types/src/shapes/Text.d.ts +1 -1
  61. package/dist/types/src/shapes/Text.d.ts.map +1 -1
  62. package/dist/types/src/shapes/TextToImage.d.ts +1 -1
  63. package/dist/types/src/shapes/TextToImage.d.ts.map +1 -1
  64. package/dist/types/src/shapes/Thread.d.ts +1 -1
  65. package/dist/types/src/shapes/Thread.d.ts.map +1 -1
  66. package/dist/types/src/shapes/Trigger.d.ts +7 -34
  67. package/dist/types/src/shapes/Trigger.d.ts.map +1 -1
  68. package/dist/types/src/shapes/common/Box.d.ts +4 -4
  69. package/dist/types/src/shapes/common/Box.d.ts.map +1 -1
  70. package/dist/types/src/shapes/common/FunctionBody.d.ts +3 -3
  71. package/dist/types/src/shapes/common/FunctionBody.d.ts.map +1 -1
  72. package/dist/types/src/shapes/defs.d.ts +2 -1
  73. package/dist/types/src/shapes/defs.d.ts.map +1 -1
  74. package/dist/types/src/shapes/index.d.ts +2 -2
  75. package/dist/types/src/shapes/index.d.ts.map +1 -1
  76. package/dist/types/src/testing/circuits.d.ts +18 -24
  77. package/dist/types/src/testing/circuits.d.ts.map +1 -1
  78. package/dist/types/tsconfig.tsbuildinfo +1 -1
  79. package/package.json +62 -53
  80. package/src/README.md +0 -3
  81. package/src/compute-layout.ts +1 -1
  82. package/src/compute.stories.tsx +102 -140
  83. package/src/graph/controller.ts +114 -80
  84. package/src/graph/node-defs.ts +34 -34
  85. package/src/hooks/useComputeGraphController.ts +2 -2
  86. package/src/hooks/useComputeNodeState.ts +9 -7
  87. package/src/hooks/useGraphMonitor.ts +11 -10
  88. package/src/json.test.ts +4 -4
  89. package/src/registry.ts +4 -4
  90. package/src/schema.test.ts +13 -13
  91. package/src/shapes/Append.tsx +3 -3
  92. package/src/shapes/Array.tsx +3 -3
  93. package/src/shapes/Audio.tsx +4 -4
  94. package/src/shapes/Beacon.tsx +4 -5
  95. package/src/shapes/Boolean.tsx +4 -4
  96. package/src/shapes/Chat.tsx +3 -3
  97. package/src/shapes/Constant.tsx +3 -3
  98. package/src/shapes/Database.tsx +2 -2
  99. package/src/shapes/{Queue.tsx → Feed.tsx} +29 -23
  100. package/src/shapes/Function.tsx +17 -14
  101. package/src/shapes/Gpt.tsx +12 -6
  102. package/src/shapes/GptRealtime.tsx +2 -2
  103. package/src/shapes/Json.tsx +10 -5
  104. package/src/shapes/Logic.tsx +3 -3
  105. package/src/shapes/RNG.tsx +9 -6
  106. package/src/shapes/Scope.tsx +4 -4
  107. package/src/shapes/Surface.tsx +15 -6
  108. package/src/shapes/Switch.tsx +3 -3
  109. package/src/shapes/Table.tsx +6 -6
  110. package/src/shapes/Template.tsx +5 -5
  111. package/src/shapes/Text.tsx +4 -4
  112. package/src/shapes/TextToImage.tsx +2 -2
  113. package/src/shapes/Thread.tsx +20 -14
  114. package/src/shapes/Trigger.tsx +46 -58
  115. package/src/shapes/common/Box.tsx +7 -10
  116. package/src/shapes/common/FunctionBody.tsx +5 -4
  117. package/src/shapes/common/TypeSelect.tsx +1 -1
  118. package/src/shapes/defs.ts +5 -4
  119. package/src/shapes/index.ts +2 -2
  120. package/src/testing/circuits.ts +10 -19
  121. package/dist/types/src/shapes/Queue.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,17 +1,22 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-canvas-compute",
3
- "version": "0.8.4-main.f9ba587",
3
+ "version": "0.8.4-main.fcfe5033a5",
4
4
  "description": "A compute graph extension for the canvas editor component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/dxos/dxos"
10
+ },
7
11
  "license": "MIT",
8
12
  "author": "DXOS.org",
9
13
  "type": "module",
10
14
  "exports": {
11
15
  ".": {
12
- "types": "./dist/types/src/index.d.ts",
16
+ "source": "./src/index.ts",
13
17
  "browser": "./dist/lib/browser/index.mjs",
14
- "node": "./dist/lib/node-esm/index.mjs"
18
+ "node": "./dist/lib/node-esm/index.mjs",
19
+ "types": "./dist/types/src/index.d.ts"
15
20
  }
16
21
  },
17
22
  "types": "dist/types/src/index.d.ts",
@@ -25,63 +30,67 @@
25
30
  "dependencies": {
26
31
  "@antv/graphlib": "^2.0.4",
27
32
  "@antv/layout": "^1.2.13",
28
- "@effect/platform": "0.88.0",
29
- "@preact-signals/safe-react": "^0.9.0",
33
+ "@effect/platform": "0.94.4",
30
34
  "chess.js": "^1.0.0",
31
- "@dxos/ai": "0.8.4-main.f9ba587",
32
- "@dxos/app-framework": "0.8.4-main.f9ba587",
33
- "@dxos/assistant": "0.8.4-main.f9ba587",
34
- "@dxos/artifact": "0.8.4-main.f9ba587",
35
- "@dxos/async": "0.8.4-main.f9ba587",
36
- "@dxos/conductor": "0.8.4-main.f9ba587",
37
- "@dxos/context": "0.8.4-main.f9ba587",
38
- "@dxos/debug": "0.8.4-main.f9ba587",
39
- "@dxos/edge-client": "0.8.4-main.f9ba587",
40
- "@dxos/functions": "0.8.4-main.f9ba587",
41
- "@dxos/echo-schema": "0.8.4-main.f9ba587",
42
- "@dxos/graph": "0.8.4-main.f9ba587",
43
- "@dxos/invariant": "0.8.4-main.f9ba587",
44
- "@dxos/keys": "0.8.4-main.f9ba587",
45
- "@dxos/log": "0.8.4-main.f9ba587",
46
- "@dxos/live-object": "0.8.4-main.f9ba587",
47
- "@dxos/react-client": "0.8.4-main.f9ba587",
48
- "@dxos/react-edge-client": "0.8.4-main.f9ba587",
49
- "@dxos/react-ui-attention": "0.8.4-main.f9ba587",
50
- "@dxos/react-ui-canvas": "0.8.4-main.f9ba587",
51
- "@dxos/react-ui-editor": "0.8.4-main.f9ba587",
52
- "@dxos/react-ui-canvas-editor": "0.8.4-main.f9ba587",
53
- "@dxos/react-ui-form": "0.8.4-main.f9ba587",
54
- "@dxos/react-ui-sfx": "0.8.4-main.f9ba587",
55
- "@dxos/react-ui-stack": "0.8.4-main.f9ba587",
56
- "@dxos/schema": "0.8.4-main.f9ba587",
57
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.f9ba587",
58
- "@dxos/util": "0.8.4-main.f9ba587"
35
+ "@dxos/ai": "0.8.4-main.fcfe5033a5",
36
+ "@dxos/app-framework": "0.8.4-main.fcfe5033a5",
37
+ "@dxos/assistant": "0.8.4-main.fcfe5033a5",
38
+ "@dxos/async": "0.8.4-main.fcfe5033a5",
39
+ "@dxos/context": "0.8.4-main.fcfe5033a5",
40
+ "@dxos/debug": "0.8.4-main.fcfe5033a5",
41
+ "@dxos/blueprints": "0.8.4-main.fcfe5033a5",
42
+ "@dxos/conductor": "0.8.4-main.fcfe5033a5",
43
+ "@dxos/edge-client": "0.8.4-main.fcfe5033a5",
44
+ "@dxos/echo": "0.8.4-main.fcfe5033a5",
45
+ "@dxos/effect": "0.8.4-main.fcfe5033a5",
46
+ "@dxos/app-toolkit": "0.8.4-main.fcfe5033a5",
47
+ "@dxos/functions-runtime": "0.8.4-main.fcfe5033a5",
48
+ "@dxos/graph": "0.8.4-main.fcfe5033a5",
49
+ "@dxos/functions": "0.8.4-main.fcfe5033a5",
50
+ "@dxos/keys": "0.8.4-main.fcfe5033a5",
51
+ "@dxos/operation": "0.8.4-main.fcfe5033a5",
52
+ "@dxos/invariant": "0.8.4-main.fcfe5033a5",
53
+ "@dxos/react-client": "0.8.4-main.fcfe5033a5",
54
+ "@dxos/react-edge-client": "0.8.4-main.fcfe5033a5",
55
+ "@dxos/react-ui-attention": "0.8.4-main.fcfe5033a5",
56
+ "@dxos/react-ui-canvas-editor": "0.8.4-main.fcfe5033a5",
57
+ "@dxos/react-ui-canvas": "0.8.4-main.fcfe5033a5",
58
+ "@dxos/log": "0.8.4-main.fcfe5033a5",
59
+ "@dxos/react-ui-sfx": "0.8.4-main.fcfe5033a5",
60
+ "@dxos/react-ui-mosaic": "0.8.4-main.fcfe5033a5",
61
+ "@dxos/react-ui-editor": "0.8.4-main.fcfe5033a5",
62
+ "@dxos/react-ui-form": "0.8.4-main.fcfe5033a5",
63
+ "@dxos/react-ui-stack": "0.8.4-main.fcfe5033a5",
64
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.fcfe5033a5",
65
+ "@dxos/schema": "0.8.4-main.fcfe5033a5",
66
+ "@dxos/types": "0.8.4-main.fcfe5033a5",
67
+ "@dxos/util": "0.8.4-main.fcfe5033a5"
59
68
  },
60
69
  "devDependencies": {
61
- "@effect/ai": "0.22.0",
70
+ "@effect/ai": "0.33.2",
71
+ "@effect/experimental": "0.58.0",
62
72
  "@types/lodash.defaultsdeep": "^4.6.6",
63
- "@types/react": "~18.2.0",
64
- "@types/react-dom": "~18.2.0",
65
- "effect": "3.16.13",
73
+ "@types/react": "~19.2.7",
74
+ "@types/react-dom": "~19.2.3",
75
+ "effect": "3.20.0",
66
76
  "lodash.defaultsdeep": "^4.6.1",
67
- "react": "~18.2.0",
68
- "react-dom": "~18.2.0",
69
- "vite": "5.4.7",
70
- "@dxos/app-framework": "0.8.4-main.f9ba587",
71
- "@dxos/artifact-testing": "0.8.4-main.f9ba587",
72
- "@dxos/compute": "0.8.4-main.f9ba587",
73
- "@dxos/echo-signals": "0.8.4-main.f9ba587",
74
- "@dxos/random": "0.8.4-main.f9ba587",
75
- "@dxos/react-ui": "0.8.4-main.f9ba587",
76
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587",
77
- "@dxos/storybook-utils": "0.8.4-main.f9ba587"
77
+ "react": "~19.2.3",
78
+ "react-dom": "~19.2.3",
79
+ "vite": "^7.1.11",
80
+ "@dxos/app-framework": "0.8.4-main.fcfe5033a5",
81
+ "@dxos/assistant-toolkit": "0.8.4-main.fcfe5033a5",
82
+ "@dxos/compute": "0.8.4-main.fcfe5033a5",
83
+ "@dxos/random": "0.8.4-main.fcfe5033a5",
84
+ "@dxos/react-ui": "0.8.4-main.fcfe5033a5",
85
+ "@dxos/ui-theme": "0.8.4-main.fcfe5033a5",
86
+ "@dxos/storybook-utils": "0.8.4-main.fcfe5033a5"
78
87
  },
79
88
  "peerDependencies": {
80
- "effect": "^3.13.3",
81
- "react": "~18.2.0",
82
- "react-dom": "~18.2.0",
83
- "@dxos/react-ui": "0.8.4-main.f9ba587",
84
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587"
89
+ "effect": "3.20.0",
90
+ "react": "~19.2.3",
91
+ "react-dom": "~19.2.3",
92
+ "@dxos/ui-theme": "0.8.4-main.fcfe5033a5",
93
+ "@dxos/react-ui": "0.8.4-main.fcfe5033a5"
85
94
  },
86
95
  "publishConfig": {
87
96
  "access": "public"
package/src/README.md CHANGED
@@ -42,6 +42,3 @@
42
42
  - logs associated with a node or a graph
43
43
  - node state updates (can a node have internal state separate from inputs/outputs)
44
44
  - timestep? - to correlate events that happen during a single execution time
45
-
46
-
47
-
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { DefaultInput, DefaultOutput } from '@dxos/conductor';
6
- import { toEffectSchema } from '@dxos/echo-schema';
6
+ import { toEffectSchema } from '@dxos/echo/internal';
7
7
  import { type Anchor, ShapeLayout, type ShapeRegistry } from '@dxos/react-ui-canvas-editor';
8
8
 
9
9
  import { type ComputeGraphController } from './graph';
@@ -2,54 +2,54 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import type { Meta, StoryObj } from '@storybook/react-vite';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Layer from 'effect/Layer';
8
+ import * as ManagedRuntime from 'effect/ManagedRuntime';
8
9
  import React, { type PropsWithChildren, useEffect, useMemo, useRef, useState } from 'react';
9
10
 
10
- import { EdgeAiServiceClient } from '@dxos/ai';
11
- import { createTestAiServiceClient } from '@dxos/ai/testing';
11
+ import { AiServiceTestingPreset } from '@dxos/ai/testing';
12
12
  import { withPluginManager } from '@dxos/app-framework/testing';
13
- import { capabilities, localServiceEndpoints } from '@dxos/artifact-testing';
13
+ import { capabilities } from '@dxos/assistant-toolkit/testing';
14
14
  import { type ComputeGraphModel, type ComputeNode, type GraphDiagnostic } from '@dxos/conductor';
15
- import { AiService, ServiceContainer } from '@dxos/functions';
15
+ import { Feed } from '@dxos/echo';
16
+ import { CredentialsService } from '@dxos/functions';
17
+ import { TestDatabaseLayer } from '@dxos/functions-runtime/testing';
18
+ import { Operation, OperationRegistry } from '@dxos/operation';
16
19
  import { withClientProvider } from '@dxos/react-client/testing';
17
20
  import { Select, Toolbar } from '@dxos/react-ui';
18
21
  import { withAttention } from '@dxos/react-ui-attention/testing';
19
- import {
20
- CanvasGraphModel,
21
- Editor,
22
- type EditorController,
23
- type EditorRootProps,
24
- ShapeRegistry,
25
- } from '@dxos/react-ui-canvas-editor';
22
+ import { Editor, type EditorController, type EditorRootProps, ShapeRegistry } from '@dxos/react-ui-canvas-editor';
26
23
  import { Container, useSelection } from '@dxos/react-ui-canvas-editor/testing';
27
- import { JsonFilter } from '@dxos/react-ui-syntax-highlighter';
28
- import { withLayout, withTheme } from '@dxos/storybook-utils';
24
+ import { Form } from '@dxos/react-ui-form';
25
+ import { Json } from '@dxos/react-ui-syntax-highlighter';
26
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
29
27
 
30
28
  import { DiagnosticOverlay } from './components';
31
29
  import { ComputeShapeLayout } from './compute-layout';
32
- import { type ComputeGraphController } from './graph';
30
+ import { type ComputeGraphController, createComputeGraphController } from './graph';
33
31
  import { ComputeContext, useComputeGraphController, useGraphMonitor } from './hooks';
34
32
  import { computeShapes } from './registry';
35
33
  import { type ComputeShape } from './shapes';
36
34
  import {
35
+ createArtifactCircuit,
36
+ createAudioCircuit,
37
+ createBasicCircuit,
37
38
  createControlCircuit,
39
+ createEmptyCircuit,
38
40
  createGPTRealtimeCircuit,
39
- createLogicCircuit,
40
- createComputeGraphController,
41
- createBasicCircuit,
42
41
  createGptCircuit,
43
- createAudioCircuit,
44
- createTransformCircuit,
42
+ createLogicCircuit,
45
43
  createTemplateCircuit,
46
- createArtifactCircuit,
44
+ createTransformCircuit,
47
45
  } from './testing';
48
46
 
49
- // const FormSchema = Schema.omit<any, any, ['subgraph']>('subgraph')(ComputeNode);
47
+ // TODO(burdon): Replace ServiceContainer.
50
48
 
51
49
  const sidebarTypes: NonNullable<RenderProps['sidebar']>[] = ['canvas', 'compute', 'controller', 'selected'] as const;
52
50
 
51
+ const hiddenArg = { table: { disable: true } };
52
+
53
53
  type RenderProps = EditorRootProps<ComputeShape> &
54
54
  PropsWithChildren<{
55
55
  init?: boolean;
@@ -63,9 +63,10 @@ const DefaultStory = ({
63
63
  children,
64
64
  graph,
65
65
  controller = null,
66
- init,
67
- sidebar: _sidebar,
66
+ sidebar: sidebarProp,
68
67
  registry,
68
+ showGrid = true,
69
+ snapToGrid = true,
69
70
  ...props
70
71
  }: RenderProps) => {
71
72
  const editorRef = useRef<EditorController>(null);
@@ -83,7 +84,7 @@ const DefaultStory = ({
83
84
  };
84
85
 
85
86
  // Sidebar.
86
- const [sidebar, setSidebar] = useState(_sidebar);
87
+ const [sidebar, setSidebar] = useState<RenderProps['sidebar']>(sidebarProp);
87
88
  const json = useMemo(() => {
88
89
  switch (sidebar) {
89
90
  case 'canvas':
@@ -123,7 +124,7 @@ const DefaultStory = ({
123
124
  }
124
125
 
125
126
  return (
126
- <div className='grid grid-cols-[1fr,360px] w-full h-full'>
127
+ <div className='grid grid-cols-[1fr_360px] h-full w-full'>
127
128
  <ComputeContext.Provider value={{ controller }}>
128
129
  <Container id={id} classNames={['flex grow overflow-hidden', !sidebar && 'col-span-2']}>
129
130
  <Editor.Root<ComputeShape>
@@ -135,6 +136,8 @@ const DefaultStory = ({
135
136
  registry={registry}
136
137
  selection={selection}
137
138
  autoZoom
139
+ showGrid={showGrid}
140
+ snapToGrid={snapToGrid}
138
141
  {...props}
139
142
  >
140
143
  <Editor.Canvas>{children}</Editor.Canvas>
@@ -146,9 +149,9 @@ const DefaultStory = ({
146
149
 
147
150
  {sidebar && (
148
151
  <Container id='sidebar' classNames='flex flex-col h-full overflow-hidden'>
149
- <Toolbar.Root classNames='p-1'>
152
+ <Toolbar.Root>
150
153
  <Select.Root value={sidebar} onValueChange={(value) => setSidebar(value as RenderProps['sidebar'])}>
151
- <Select.TriggerButton classNames='is-full'>{sidebar}</Select.TriggerButton>
154
+ <Select.TriggerButton classNames='w-full'>{sidebar}</Select.TriggerButton>
152
155
  <Select.Portal>
153
156
  <Select.Content>
154
157
  <Select.Viewport>
@@ -158,18 +161,30 @@ const DefaultStory = ({
158
161
  </Select.Item>
159
162
  ))}
160
163
  </Select.Viewport>
164
+ <Select.Arrow />
161
165
  </Select.Content>
162
166
  </Select.Portal>
163
167
  </Select.Root>
164
168
  </Toolbar.Root>
165
169
 
166
170
  <div className='flex flex-col h-full overflow-hidden divide-y divider-separator'>
171
+ {/* TODO(burdon): Provide schema. */}
167
172
  {sidebar === 'selected' && selected && (
168
- <div>Form</div>
169
- // <Form<ComputeNode> schema={FormSchema} values={getComputeNode(selected.id) ?? {}} Custom={{}} />
173
+ <Form.Root<ComputeNode> values={getComputeNode(selected.id) ?? {}}>
174
+ <Form.Viewport>
175
+ <Form.Content>
176
+ <Form.FieldSet />
177
+ <Form.Actions />
178
+ </Form.Content>
179
+ </Form.Viewport>
180
+ </Form.Root>
170
181
  )}
171
-
172
- <JsonFilter data={json} />
182
+ <Json.Root data={json}>
183
+ <Json.Content>
184
+ <Json.Filter />
185
+ <Json.Data />
186
+ </Json.Content>
187
+ </Json.Root>
173
188
  </div>
174
189
  </Container>
175
190
  )}
@@ -177,196 +192,143 @@ const DefaultStory = ({
177
192
  );
178
193
  };
179
194
 
180
- const meta: Meta<RenderProps> = {
195
+ const meta = {
181
196
  title: 'ui/react-ui-canvas-compute/compute',
182
- component: Editor.Root,
197
+ component: Editor.Root as any,
183
198
  render: DefaultStory,
184
199
  decorators: [
185
- withTheme,
186
- withAttention,
200
+ withTheme(),
201
+ withLayout({ layout: 'fullscreen' }),
202
+ withAttention(),
187
203
  withClientProvider({ createIdentity: true, createSpace: true }),
188
- withLayout({ fullscreen: true }),
189
204
  withPluginManager({ capabilities }),
190
205
  ],
191
- };
206
+ parameters: {
207
+ layout: 'fullscreen',
208
+ },
209
+ argTypes: {
210
+ controller: hiddenArg,
211
+ graph: hiddenArg,
212
+ registry: hiddenArg,
213
+ sidebar: {
214
+ control: 'select',
215
+ options: [...sidebarTypes, null],
216
+ },
217
+ },
218
+ } satisfies Meta<typeof DefaultStory>;
192
219
 
193
220
  export default meta;
194
221
 
195
- type Story = StoryObj<RenderProps>;
222
+ type Story = StoryObj<typeof meta>;
223
+
224
+ const ServiceLayer = Layer.empty.pipe(
225
+ Layer.provideMerge(
226
+ Layer.mergeAll(
227
+ Layer.succeed(Operation.Service, {
228
+ invoke: () => Effect.die('Operation.Service not available in test.'),
229
+ schedule: () => Effect.die('Operation.Service not available in test.'),
230
+ invokePromise: async () => ({ error: new Error('Not available') }),
231
+ } as any),
232
+ Layer.succeed(OperationRegistry.Service, { resolve: () => Effect.succeed(undefined) } as any),
233
+ ),
234
+ ),
235
+ Layer.provideMerge(
236
+ Layer.mergeAll(
237
+ AiServiceTestingPreset('direct'),
238
+ TestDatabaseLayer(),
239
+ CredentialsService.configuredLayer([]),
240
+ Feed.notAvailable,
241
+ ),
242
+ ),
243
+ Layer.orDie,
244
+ );
196
245
 
197
246
  export const Default: Story = {
198
247
  args: {
199
- // debug: true,
200
- showGrid: false,
201
- snapToGrid: false,
202
- sidebar: 'selected',
203
248
  registry: new ShapeRegistry(computeShapes),
204
- ...createComputeGraphController(CanvasGraphModel.create<ComputeShape>(), new ServiceContainer()),
249
+ ...createComputeGraphController(createEmptyCircuit(), ManagedRuntime.make(ServiceLayer)),
205
250
  },
206
251
  };
207
252
 
208
253
  export const Beacon: Story = {
209
254
  args: {
210
- // debug: true,
211
- showGrid: false,
212
- snapToGrid: false,
213
- sidebar: 'selected',
214
255
  registry: new ShapeRegistry(computeShapes),
215
- ...createComputeGraphController(createBasicCircuit(), new ServiceContainer()),
256
+ ...createComputeGraphController(createBasicCircuit(), ManagedRuntime.make(ServiceLayer)),
216
257
  },
217
258
  };
218
259
 
219
260
  export const Transform: Story = {
220
261
  args: {
221
- // debug: true,
222
- showGrid: false,
223
- snapToGrid: false,
224
- sidebar: 'selected',
225
262
  registry: new ShapeRegistry(computeShapes),
226
- ...createComputeGraphController(createTransformCircuit(), new ServiceContainer()),
263
+ ...createComputeGraphController(createTransformCircuit(), ManagedRuntime.make(ServiceLayer)),
227
264
  },
228
265
  };
229
266
 
230
267
  export const Logic: Story = {
231
268
  args: {
232
- // debug: true,
233
- showGrid: false,
234
- snapToGrid: false,
235
- sidebar: 'compute',
236
269
  registry: new ShapeRegistry(computeShapes),
237
- ...createComputeGraphController(createLogicCircuit(), new ServiceContainer()),
270
+ ...createComputeGraphController(createLogicCircuit(), ManagedRuntime.make(ServiceLayer)),
238
271
  },
239
272
  };
240
273
 
241
274
  export const Control: Story = {
242
275
  args: {
243
- // debug: true,
244
- showGrid: false,
245
- snapToGrid: false,
246
- sidebar: 'compute',
247
276
  registry: new ShapeRegistry(computeShapes),
248
- ...createComputeGraphController(createControlCircuit(), new ServiceContainer()),
277
+ ...createComputeGraphController(createControlCircuit(), ManagedRuntime.make(ServiceLayer)),
249
278
  },
250
279
  };
251
280
 
252
- // export const Ollama: Story = {
253
- // args: {
254
- // // debug: true,
255
- // showGrid: false,
256
- // snapToGrid: false,
257
- // registry: new ShapeRegistry(computeShapes),
258
- // ...createComputeGraphController(createTest3(), createEdgeServices()),
259
- // },
260
- // };
261
-
262
281
  export const Template: Story = {
263
282
  args: {
264
- showGrid: false,
265
- snapToGrid: false,
266
- // sidebar: 'controller',
267
283
  registry: new ShapeRegistry(computeShapes),
268
- ...createComputeGraphController(
269
- createTemplateCircuit(),
270
- new ServiceContainer().setServices({
271
- ai: AiService.make(new EdgeAiServiceClient({ endpoint: localServiceEndpoints.ai })),
272
- }),
273
- ),
284
+ ...createComputeGraphController(createTemplateCircuit(), ManagedRuntime.make(ServiceLayer)),
274
285
  },
275
286
  };
276
287
 
277
288
  export const GPT: Story = {
278
289
  args: {
279
- // debug: true,
280
- showGrid: false,
281
- snapToGrid: false,
282
- // sidebar: 'json',
283
- sidebar: 'controller',
284
290
  registry: new ShapeRegistry(computeShapes),
285
- ...createComputeGraphController(
286
- createGptCircuit({ history: true }),
287
- new ServiceContainer().setServices({
288
- ai: AiService.make(new EdgeAiServiceClient({ endpoint: localServiceEndpoints.ai })),
289
- }),
290
- ),
291
+ ...createComputeGraphController(createGptCircuit({ history: true }), ManagedRuntime.make(ServiceLayer)),
291
292
  },
292
293
  };
293
294
 
294
295
  export const Plugins: Story = {
295
296
  args: {
296
- // debug: true,
297
- showGrid: false,
298
- snapToGrid: false,
299
- // sidebar: 'json',
300
297
  registry: new ShapeRegistry(computeShapes),
301
298
  ...createComputeGraphController(
302
299
  createGptCircuit({ history: true, image: true, artifact: true }),
303
- new ServiceContainer().setServices({
304
- ai: AiService.make(new EdgeAiServiceClient({ endpoint: localServiceEndpoints.ai })),
305
- }),
300
+ ManagedRuntime.make(ServiceLayer),
306
301
  ),
307
302
  },
308
303
  };
309
304
 
310
305
  export const Artifact: Story = {
311
306
  args: {
312
- // debug: true,
313
- showGrid: false,
314
- snapToGrid: false,
315
- // sidebar: 'json',
316
307
  registry: new ShapeRegistry(computeShapes),
317
- ...createComputeGraphController(
318
- createArtifactCircuit(),
319
- new ServiceContainer().setServices({
320
- ai: AiService.make(new EdgeAiServiceClient({ endpoint: localServiceEndpoints.ai })),
321
- }),
322
- ),
308
+ ...createComputeGraphController(createArtifactCircuit(), ManagedRuntime.make(ServiceLayer)),
323
309
  },
324
310
  };
325
311
 
326
312
  export const ImageGen: Story = {
327
313
  args: {
328
- // debug: true,
329
- showGrid: false,
330
- snapToGrid: false,
331
- // sidebar: 'json',
332
- sidebar: 'controller',
333
314
  registry: new ShapeRegistry(computeShapes),
334
315
  ...createComputeGraphController(
335
316
  createGptCircuit({ image: true, artifact: true }),
336
- new ServiceContainer().setServices({
337
- ai: AiService.make(createTestAiServiceClient()),
338
- }),
317
+ ManagedRuntime.make(ServiceLayer),
339
318
  ),
340
319
  },
341
320
  };
342
321
 
343
322
  export const Audio: Story = {
344
323
  args: {
345
- // debug: true,
346
- showGrid: false,
347
- snapToGrid: false,
348
- sidebar: 'controller',
349
324
  registry: new ShapeRegistry(computeShapes),
350
- ...createComputeGraphController(
351
- createAudioCircuit(),
352
- new ServiceContainer().setServices({
353
- ai: AiService.make(createTestAiServiceClient()),
354
- }),
355
- ),
325
+ ...createComputeGraphController(createAudioCircuit(), ManagedRuntime.make(ServiceLayer)),
356
326
  },
357
327
  };
358
328
 
359
329
  export const Voice: Story = {
360
330
  args: {
361
- showGrid: false,
362
- snapToGrid: false,
363
- sidebar: 'controller',
364
331
  registry: new ShapeRegistry(computeShapes),
365
- ...createComputeGraphController(
366
- createGPTRealtimeCircuit(),
367
- new ServiceContainer().setServices({
368
- ai: AiService.make(createTestAiServiceClient()),
369
- }),
370
- ),
332
+ ...createComputeGraphController(createGPTRealtimeCircuit(), ManagedRuntime.make(ServiceLayer)),
371
333
  },
372
334
  };