@dxos/plugin-conductor 0.8.4-main.422d1c7879 → 0.8.4-main.43cb759274
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.
- package/LICENSE +102 -5
- package/PLUGIN.mdl +461 -0
- package/dist/lib/neutral/CanvasArticle-KEPXL3ZT.mjs +98 -0
- package/dist/lib/neutral/CanvasArticle-KEPXL3ZT.mjs.map +7 -0
- package/dist/lib/neutral/ConductorPlugin.mjs +38 -0
- package/dist/lib/neutral/ConductorPlugin.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +9 -0
- package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
- package/dist/lib/neutral/chunk-WDHL35VB.mjs +39 -0
- package/dist/lib/neutral/chunk-WDHL35VB.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +1 -0
- package/dist/lib/neutral/components/index.mjs.map +7 -0
- package/dist/lib/neutral/containers/index.mjs +7 -0
- package/dist/lib/neutral/containers/index.mjs.map +7 -0
- package/dist/lib/neutral/create-object-PTHDJAGI.mjs +26 -0
- package/dist/lib/neutral/create-object-PTHDJAGI.mjs.map +7 -0
- package/dist/lib/neutral/index.mjs +7 -0
- package/dist/lib/neutral/index.mjs.map +7 -0
- package/dist/lib/neutral/meta.json +1 -0
- package/dist/lib/neutral/meta.mjs +7 -0
- package/dist/lib/neutral/meta.mjs.map +7 -0
- package/dist/lib/neutral/plugin.mjs +11 -0
- package/dist/lib/neutral/plugin.mjs.map +7 -0
- package/dist/lib/neutral/react-surface-JCMKXAUY.mjs +22 -0
- package/dist/lib/neutral/react-surface-JCMKXAUY.mjs.map +7 -0
- package/dist/lib/neutral/translations.mjs +29 -0
- package/dist/lib/neutral/translations.mjs.map +7 -0
- package/dist/types/src/ConductorPlugin.d.ts +1 -0
- package/dist/types/src/ConductorPlugin.d.ts.map +1 -1
- package/dist/types/src/ConductorPlugin.test.d.ts +2 -0
- package/dist/types/src/ConductorPlugin.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +11 -0
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +6 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/containers/CanvasArticle/CanvasArticle.d.ts +6 -0
- package/dist/types/src/containers/CanvasArticle/CanvasArticle.d.ts.map +1 -0
- package/dist/types/src/containers/CanvasArticle/index.d.ts +2 -0
- package/dist/types/src/containers/CanvasArticle/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +1 -1
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +0 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/plugin.d.ts +3 -0
- package/dist/types/src/plugin.d.ts.map +1 -0
- package/dist/types/src/translations.d.ts +24 -16
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +73 -40
- package/src/ConductorPlugin.test.ts +27 -0
- package/src/ConductorPlugin.tsx +10 -28
- package/src/capabilities/create-object.ts +30 -0
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/react-surface.tsx +2 -2
- package/src/containers/{CanvasContainer/CanvasContainer.tsx → CanvasArticle/CanvasArticle.tsx} +32 -12
- package/src/containers/CanvasArticle/index.ts +5 -0
- package/src/containers/index.ts +1 -1
- package/src/index.ts +0 -1
- package/src/meta.ts +20 -6
- package/src/plugin.ts +9 -0
- package/src/translations.ts +2 -1
- package/src/vite-env.d.ts +10 -0
- package/dist/lib/browser/index.mjs +0 -91
- package/dist/lib/browser/index.mjs.map +0 -7
- package/dist/lib/browser/meta.json +0 -1
- package/dist/lib/node-esm/index.mjs +0 -93
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/types/src/containers/CanvasContainer/CanvasContainer.d.ts +0 -6
- package/dist/types/src/containers/CanvasContainer/CanvasContainer.d.ts.map +0 -1
- package/dist/types/src/containers/CanvasContainer/index.d.ts +0 -2
- package/dist/types/src/containers/CanvasContainer/index.d.ts.map +0 -1
- package/src/containers/CanvasContainer/index.ts +0 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-conductor",
|
|
3
|
-
"version": "0.8.4-main.
|
|
3
|
+
"version": "0.8.4-main.43cb759274",
|
|
4
4
|
"description": "Composer plugin for conductor.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -8,70 +8,103 @@
|
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/dxos/dxos"
|
|
10
10
|
},
|
|
11
|
-
"license": "
|
|
11
|
+
"license": "FSL-1.1-Apache-2.0",
|
|
12
12
|
"author": "DXOS.org",
|
|
13
13
|
"sideEffects": true,
|
|
14
14
|
"type": "module",
|
|
15
15
|
"imports": {
|
|
16
|
-
"#capabilities":
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
"#capabilities": {
|
|
17
|
+
"source": "./src/capabilities/index.ts",
|
|
18
|
+
"types": "./dist/types/src/capabilities/index.d.ts",
|
|
19
|
+
"default": "./dist/lib/neutral/capabilities/index.mjs"
|
|
20
|
+
},
|
|
21
|
+
"#components": {
|
|
22
|
+
"source": "./src/components/index.ts",
|
|
23
|
+
"types": "./dist/types/src/components/index.d.ts",
|
|
24
|
+
"default": "./dist/lib/neutral/components/index.mjs"
|
|
25
|
+
},
|
|
26
|
+
"#containers": {
|
|
27
|
+
"source": "./src/containers/index.ts",
|
|
28
|
+
"types": "./dist/types/src/containers/index.d.ts",
|
|
29
|
+
"default": "./dist/lib/neutral/containers/index.mjs"
|
|
30
|
+
},
|
|
31
|
+
"#meta": {
|
|
32
|
+
"source": "./src/meta.ts",
|
|
33
|
+
"types": "./dist/types/src/meta.d.ts",
|
|
34
|
+
"default": "./dist/lib/neutral/meta.mjs"
|
|
35
|
+
},
|
|
36
|
+
"#plugin": {
|
|
37
|
+
"source": "./src/ConductorPlugin.tsx",
|
|
38
|
+
"types": "./dist/types/src/ConductorPlugin.d.ts",
|
|
39
|
+
"default": "./dist/lib/neutral/ConductorPlugin.mjs"
|
|
40
|
+
},
|
|
41
|
+
"#translations": {
|
|
42
|
+
"source": "./src/translations.ts",
|
|
43
|
+
"types": "./dist/types/src/translations.d.ts",
|
|
44
|
+
"default": "./dist/lib/neutral/translations.mjs"
|
|
45
|
+
}
|
|
21
46
|
},
|
|
22
47
|
"exports": {
|
|
23
48
|
".": {
|
|
24
49
|
"source": "./src/index.ts",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
|
|
50
|
+
"types": "./dist/types/src/index.d.ts",
|
|
51
|
+
"default": "./dist/lib/neutral/index.mjs"
|
|
52
|
+
},
|
|
53
|
+
"./assets/PLUGIN.mdl": "./PLUGIN.mdl",
|
|
54
|
+
"./plugin": {
|
|
55
|
+
"source": "./src/plugin.ts",
|
|
56
|
+
"types": "./dist/types/src/plugin.d.ts",
|
|
57
|
+
"default": "./dist/lib/neutral/plugin.mjs"
|
|
58
|
+
},
|
|
59
|
+
"./translations": {
|
|
60
|
+
"source": "./src/translations.ts",
|
|
61
|
+
"types": "./dist/types/src/translations.d.ts",
|
|
62
|
+
"default": "./dist/lib/neutral/translations.mjs"
|
|
28
63
|
}
|
|
29
64
|
},
|
|
30
65
|
"types": "dist/types/src/index.d.ts",
|
|
31
66
|
"files": [
|
|
32
67
|
"dist",
|
|
33
|
-
"src"
|
|
68
|
+
"src",
|
|
69
|
+
"PLUGIN.mdl"
|
|
34
70
|
],
|
|
35
71
|
"dependencies": {
|
|
36
|
-
"effect": "3.
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/app-toolkit": "0.8.4-main.
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/plugin-
|
|
49
|
-
"@dxos/plugin-
|
|
50
|
-
"@dxos/
|
|
51
|
-
"@dxos/react-
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/react-ui-canvas-editor": "0.8.4-main.
|
|
54
|
-
"@dxos/util": "0.8.4-main.422d1c7879",
|
|
55
|
-
"@dxos/react-ui-stack": "0.8.4-main.422d1c7879",
|
|
56
|
-
"@dxos/react-ui-mosaic": "0.8.4-main.422d1c7879",
|
|
57
|
-
"@dxos/operation": "0.8.4-main.422d1c7879"
|
|
72
|
+
"effect": "3.21.2",
|
|
73
|
+
"@dxos/app-framework": "0.8.4-main.43cb759274",
|
|
74
|
+
"@dxos/compute": "0.8.4-main.43cb759274",
|
|
75
|
+
"@dxos/app-toolkit": "0.8.4-main.43cb759274",
|
|
76
|
+
"@dxos/echo": "0.8.4-main.43cb759274",
|
|
77
|
+
"@dxos/edge-client": "0.8.4-main.43cb759274",
|
|
78
|
+
"@dxos/conductor": "0.8.4-main.43cb759274",
|
|
79
|
+
"@dxos/ai": "0.8.4-main.43cb759274",
|
|
80
|
+
"@dxos/keys": "0.8.4-main.43cb759274",
|
|
81
|
+
"@dxos/log": "0.8.4-main.43cb759274",
|
|
82
|
+
"@dxos/functions": "0.8.4-main.43cb759274",
|
|
83
|
+
"@dxos/plugin-automation": "0.8.4-main.43cb759274",
|
|
84
|
+
"@dxos/plugin-client": "0.8.4-main.43cb759274",
|
|
85
|
+
"@dxos/plugin-space": "0.8.4-main.43cb759274",
|
|
86
|
+
"@dxos/react-client": "0.8.4-main.43cb759274",
|
|
87
|
+
"@dxos/react-ui-canvas-compute": "0.8.4-main.43cb759274",
|
|
88
|
+
"@dxos/util": "0.8.4-main.43cb759274",
|
|
89
|
+
"@dxos/react-ui-canvas-editor": "0.8.4-main.43cb759274"
|
|
58
90
|
},
|
|
59
91
|
"devDependencies": {
|
|
60
92
|
"@types/react": "~19.2.7",
|
|
61
93
|
"@types/react-dom": "~19.2.3",
|
|
62
94
|
"react": "~19.2.3",
|
|
63
95
|
"react-dom": "~19.2.3",
|
|
64
|
-
"vite": "^
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/storybook-utils": "0.8.4-main.
|
|
67
|
-
"@dxos/ui
|
|
96
|
+
"vite": "^8.0.14",
|
|
97
|
+
"@dxos/plugin-testing": "0.8.4-main.43cb759274",
|
|
98
|
+
"@dxos/storybook-utils": "0.8.4-main.43cb759274",
|
|
99
|
+
"@dxos/react-ui": "0.8.4-main.43cb759274",
|
|
100
|
+
"@dxos/ui-theme": "0.8.4-main.43cb759274"
|
|
68
101
|
},
|
|
69
102
|
"peerDependencies": {
|
|
70
|
-
"effect": "3.
|
|
103
|
+
"effect": "3.21.2",
|
|
71
104
|
"react": "~19.2.3",
|
|
72
105
|
"react-dom": "~19.2.3",
|
|
73
|
-
"@dxos/react-ui": "0.8.4-main.
|
|
74
|
-
"@dxos/ui-theme": "0.8.4-main.
|
|
106
|
+
"@dxos/react-ui": "0.8.4-main.43cb759274",
|
|
107
|
+
"@dxos/ui-theme": "0.8.4-main.43cb759274"
|
|
75
108
|
},
|
|
76
109
|
"publishConfig": {
|
|
77
110
|
"access": "public"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { describe, test } from 'vitest';
|
|
6
|
+
|
|
7
|
+
import { ClientPlugin } from '@dxos/plugin-client/plugin';
|
|
8
|
+
import { createComposerTestApp } from '@dxos/plugin-testing/harness';
|
|
9
|
+
|
|
10
|
+
import { ConductorPlugin } from '#plugin';
|
|
11
|
+
|
|
12
|
+
import { meta } from './meta';
|
|
13
|
+
|
|
14
|
+
const moduleId = (name: string) => `${meta.id}.module.${name}`;
|
|
15
|
+
|
|
16
|
+
describe('ConductorPlugin', () => {
|
|
17
|
+
test('modules activate on the expected events', async ({ expect }) => {
|
|
18
|
+
await using harness = await createComposerTestApp({
|
|
19
|
+
plugins: [ClientPlugin({}), ConductorPlugin()],
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// Modules expected to be active after a normal startup.
|
|
23
|
+
expect(harness.manager.getActive()).toEqual(
|
|
24
|
+
expect.arrayContaining([moduleId('CreateObject'), moduleId('schema'), moduleId('ReactSurface')]),
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
});
|
package/src/ConductorPlugin.tsx
CHANGED
|
@@ -2,45 +2,27 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import * as Effect from 'effect/Effect';
|
|
6
|
-
import * as Option from 'effect/Option';
|
|
7
|
-
|
|
8
5
|
import { Plugin } from '@dxos/app-framework';
|
|
9
6
|
import { AppPlugin } from '@dxos/app-toolkit';
|
|
10
7
|
import { ComputeGraph } from '@dxos/conductor';
|
|
11
|
-
import { Annotation } from '@dxos/echo';
|
|
12
|
-
import { Operation } from '@dxos/operation';
|
|
13
|
-
import { SpaceOperation } from '@dxos/plugin-space/operations';
|
|
14
|
-
import { type CreateObject } from '@dxos/plugin-space/types';
|
|
15
8
|
import { CanvasBoard } from '@dxos/react-ui-canvas-editor';
|
|
16
9
|
|
|
17
|
-
import { ReactSurface } from '#capabilities';
|
|
10
|
+
import { CreateObject, ReactSurface } from '#capabilities';
|
|
18
11
|
import { meta } from '#meta';
|
|
12
|
+
import { translations } from '#translations';
|
|
19
13
|
|
|
20
|
-
|
|
14
|
+
// eslint-disable-next-line import/no-relative-packages
|
|
15
|
+
import pluginSpec from '../PLUGIN.mdl?raw';
|
|
21
16
|
|
|
22
17
|
export const ConductorPlugin = Plugin.define(meta).pipe(
|
|
23
|
-
AppPlugin.
|
|
24
|
-
metadata: {
|
|
25
|
-
id: CanvasBoard.CanvasBoard.typename,
|
|
26
|
-
metadata: {
|
|
27
|
-
icon: Annotation.IconAnnotation.get(CanvasBoard.CanvasBoard).pipe(Option.getOrThrow).icon,
|
|
28
|
-
iconHue: Annotation.IconAnnotation.get(CanvasBoard.CanvasBoard).pipe(Option.getOrThrow).hue ?? 'white',
|
|
29
|
-
createObject: ((props, options) =>
|
|
30
|
-
Effect.gen(function* () {
|
|
31
|
-
const object = CanvasBoard.make(props);
|
|
32
|
-
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
33
|
-
object,
|
|
34
|
-
target: options.target,
|
|
35
|
-
hidden: true,
|
|
36
|
-
targetNodeId: options.targetNodeId,
|
|
37
|
-
});
|
|
38
|
-
})) satisfies CreateObject,
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
}),
|
|
18
|
+
AppPlugin.addCreateObjectModule({ activate: CreateObject }),
|
|
42
19
|
AppPlugin.addSchemaModule({ schema: [CanvasBoard.CanvasBoard, ComputeGraph] }),
|
|
43
20
|
AppPlugin.addSurfaceModule({ activate: ReactSurface }),
|
|
44
21
|
AppPlugin.addTranslationsModule({ translations }),
|
|
22
|
+
AppPlugin.addPluginAssetModule({
|
|
23
|
+
asset: { pluginId: meta.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
|
|
24
|
+
}),
|
|
45
25
|
Plugin.make,
|
|
46
26
|
);
|
|
27
|
+
|
|
28
|
+
export default ConductorPlugin;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
|
|
7
|
+
import { Capability } from '@dxos/app-framework';
|
|
8
|
+
import { Operation } from '@dxos/compute';
|
|
9
|
+
import { Type } from '@dxos/echo';
|
|
10
|
+
import { SpaceOperation } from '@dxos/plugin-space';
|
|
11
|
+
import { SpaceCapabilities } from '@dxos/plugin-space';
|
|
12
|
+
import { CanvasBoard } from '@dxos/react-ui-canvas-editor';
|
|
13
|
+
|
|
14
|
+
export default Capability.makeModule(
|
|
15
|
+
Effect.fnUntraced(function* () {
|
|
16
|
+
return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {
|
|
17
|
+
id: Type.getTypename(CanvasBoard.CanvasBoard),
|
|
18
|
+
createObject: (props, options) =>
|
|
19
|
+
Effect.gen(function* () {
|
|
20
|
+
const object = CanvasBoard.make(props);
|
|
21
|
+
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
22
|
+
object,
|
|
23
|
+
target: options.target,
|
|
24
|
+
hidden: true,
|
|
25
|
+
targetNodeId: options.targetNodeId,
|
|
26
|
+
});
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
}),
|
|
30
|
+
);
|
|
@@ -10,7 +10,7 @@ import { Surface } from '@dxos/app-framework/ui';
|
|
|
10
10
|
import { AppSurface } from '@dxos/app-toolkit/ui';
|
|
11
11
|
import { CanvasBoard } from '@dxos/react-ui-canvas-editor';
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import { CanvasArticle } from '#containers';
|
|
14
14
|
|
|
15
15
|
export default Capability.makeModule(() =>
|
|
16
16
|
Effect.succeed(
|
|
@@ -24,7 +24,7 @@ export default Capability.makeModule(() =>
|
|
|
24
24
|
AppSurface.object(AppSurface.Section, CanvasBoard.CanvasBoard),
|
|
25
25
|
),
|
|
26
26
|
component: ({ data, role }) => (
|
|
27
|
-
<
|
|
27
|
+
<CanvasArticle role={role} subject={data.subject} attendableId={data.attendableId} />
|
|
28
28
|
),
|
|
29
29
|
}),
|
|
30
30
|
),
|
package/src/containers/{CanvasContainer/CanvasContainer.tsx → CanvasArticle/CanvasArticle.tsx}
RENAMED
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
import type * as Exit from 'effect/Exit';
|
|
5
7
|
import React, { Fragment, useEffect, useMemo, useRef } from 'react';
|
|
6
8
|
|
|
9
|
+
import { AiService } from '@dxos/ai';
|
|
10
|
+
import { Capabilities } from '@dxos/app-framework';
|
|
7
11
|
import { useCapability } from '@dxos/app-framework/ui';
|
|
8
12
|
import { type AppSurface } from '@dxos/app-toolkit/ui';
|
|
13
|
+
import { Credential, Operation, OperationRegistry, ServiceResolver } from '@dxos/compute';
|
|
9
14
|
import { ComputeGraphModel } from '@dxos/conductor';
|
|
10
|
-
import { Obj } from '@dxos/echo';
|
|
11
|
-
import { AutomationCapabilities } from '@dxos/plugin-automation/types';
|
|
15
|
+
import { Database, Feed, Obj } from '@dxos/echo';
|
|
12
16
|
import { useObject } from '@dxos/react-client/echo';
|
|
13
17
|
import { Flex, type FlexProps } from '@dxos/react-ui';
|
|
14
18
|
import {
|
|
@@ -29,16 +33,16 @@ import {
|
|
|
29
33
|
ShapeRegistry,
|
|
30
34
|
} from '@dxos/react-ui-canvas-editor';
|
|
31
35
|
|
|
32
|
-
export type
|
|
36
|
+
export type CanvasArticleProps = AppSurface.ObjectArticleProps<CanvasBoard.CanvasBoard>;
|
|
33
37
|
|
|
34
|
-
export const
|
|
35
|
-
const
|
|
36
|
-
|
|
38
|
+
export const CanvasArticle = ({ role, subject, attendableId: _attendableId }: CanvasArticleProps) => {
|
|
39
|
+
const [canvas] = useObject(subject);
|
|
40
|
+
const id = Obj.getURI(canvas);
|
|
37
41
|
const graph = useMemo(
|
|
38
|
-
() => CanvasGraphModel.create<ComputeShape>(canvas.layout, (fn) => Obj.
|
|
39
|
-
[canvas],
|
|
42
|
+
() => CanvasGraphModel.create<ComputeShape>(canvas.layout, (fn) => Obj.update(subject, fn)),
|
|
43
|
+
[subject, canvas.layout],
|
|
40
44
|
);
|
|
41
|
-
const controller = useGraphController(
|
|
45
|
+
const controller = useGraphController(subject);
|
|
42
46
|
const graphMonitor = useGraphMonitor(controller?.graph);
|
|
43
47
|
const registry = useMemo(() => new ShapeRegistry(computeShapes), []);
|
|
44
48
|
const editorRef = useRef<EditorController>(null);
|
|
@@ -81,16 +85,32 @@ const Container = (props: FlexProps) => <Flex {...props} classNames='aspect-squa
|
|
|
81
85
|
|
|
82
86
|
const useGraphController = (canvas: CanvasBoard.CanvasBoard) => {
|
|
83
87
|
const db = Obj.getDatabase(canvas);
|
|
84
|
-
const
|
|
88
|
+
const processManagerRuntime = useCapability(Capabilities.ProcessManagerRuntime);
|
|
85
89
|
const [computeGraph] = useObject(canvas.computeGraph);
|
|
86
90
|
const controller = useMemo(() => {
|
|
87
91
|
if (!canvas.computeGraph?.target || !db) {
|
|
88
92
|
return null;
|
|
89
93
|
}
|
|
94
|
+
const spaceId = db.spaceId;
|
|
90
95
|
const model = new ComputeGraphModel(canvas.computeGraph?.target);
|
|
91
|
-
const
|
|
96
|
+
const spaceLayer = ServiceResolver.provide(
|
|
97
|
+
{ space: spaceId },
|
|
98
|
+
AiService.AiService,
|
|
99
|
+
Database.Service,
|
|
100
|
+
Feed.FeedService,
|
|
101
|
+
Credential.CredentialsService,
|
|
102
|
+
Operation.Service,
|
|
103
|
+
OperationRegistry.Service,
|
|
104
|
+
);
|
|
105
|
+
const computeGraphRuntime = {
|
|
106
|
+
runPromiseExit: <A, E>(effect: Effect.Effect<A, E, any>): Promise<Exit.Exit<A, E>> =>
|
|
107
|
+
processManagerRuntime.runPromiseExit(effect.pipe(Effect.provide(spaceLayer)) as any) as Promise<
|
|
108
|
+
Exit.Exit<A, E>
|
|
109
|
+
>,
|
|
110
|
+
};
|
|
111
|
+
const controller = new ComputeGraphController(computeGraphRuntime, model);
|
|
92
112
|
return controller;
|
|
93
|
-
}, [computeGraph, db]);
|
|
113
|
+
}, [computeGraph, db, processManagerRuntime]);
|
|
94
114
|
|
|
95
115
|
useEffect(() => {
|
|
96
116
|
if (!controller) {
|
package/src/containers/index.ts
CHANGED
package/src/index.ts
CHANGED
package/src/meta.ts
CHANGED
|
@@ -2,19 +2,33 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Plugin } from '@dxos/app-framework';
|
|
6
|
+
import { DXN } from '@dxos/keys';
|
|
6
7
|
import { trim } from '@dxos/util';
|
|
7
8
|
|
|
8
|
-
export const meta
|
|
9
|
-
|
|
9
|
+
export const meta = Plugin.makeMeta({
|
|
10
|
+
key: DXN.make('org.dxos.plugin.conductor'),
|
|
10
11
|
name: 'Conductor',
|
|
12
|
+
author: 'DXOS',
|
|
11
13
|
description: trim`
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
Conductor is a visual node-based compute graph plugin for DXOS Composer.
|
|
15
|
+
It lets you compose reactive data pipelines by connecting typed input and output ports on a
|
|
16
|
+
drag-and-drop infinite canvas — no code required for common automation patterns.
|
|
17
|
+
|
|
18
|
+
Each node in the graph is a first-class ECHO object, so the full pipeline topology is
|
|
19
|
+
replicated to every collaborator in real time via the local-first runtime.
|
|
20
|
+
Built-in node types cover constants, templates, boolean logic, control flow, JSON transforms,
|
|
21
|
+
ECHO database access, append-only queues, and conversation threads.
|
|
22
|
+
|
|
23
|
+
AI orchestration is a first-class concern: the GPT node connects to plugin-assistant's AiService
|
|
24
|
+
and supports tool calling, streaming replies, and configurable system prompts.
|
|
25
|
+
Function nodes can invoke any Blueprint operation registered in the space, making it straightforward
|
|
26
|
+
to compose multi-step agent workflows visually and share them across teams.
|
|
14
27
|
`,
|
|
15
28
|
icon: 'ph--infinity--regular',
|
|
16
29
|
iconHue: 'sky',
|
|
17
30
|
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-conductor',
|
|
31
|
+
spec: 'PLUGIN.mdl',
|
|
18
32
|
tags: ['labs'],
|
|
19
33
|
screenshots: ['https://dxos.network/plugin-details-canvas-dark.png'],
|
|
20
|
-
};
|
|
34
|
+
});
|
package/src/plugin.ts
ADDED
package/src/translations.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { Type } from '@dxos/echo';
|
|
5
6
|
import { type Resource } from '@dxos/react-ui';
|
|
6
7
|
import { CanvasBoard } from '@dxos/react-ui-canvas-editor';
|
|
7
8
|
|
|
@@ -10,7 +11,7 @@ import { meta } from '#meta';
|
|
|
10
11
|
export const translations = [
|
|
11
12
|
{
|
|
12
13
|
'en-US': {
|
|
13
|
-
[CanvasBoard.CanvasBoard
|
|
14
|
+
[Type.getTypename(CanvasBoard.CanvasBoard)]: {
|
|
14
15
|
'typename.label': 'Circuit',
|
|
15
16
|
'typename.label_zero': 'Circuits',
|
|
16
17
|
'typename.label_one': 'Circuit',
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
// src/ConductorPlugin.tsx
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import * as Option from "effect/Option";
|
|
4
|
-
import { Plugin } from "@dxos/app-framework";
|
|
5
|
-
import { AppPlugin } from "@dxos/app-toolkit";
|
|
6
|
-
import { ComputeGraph } from "@dxos/conductor";
|
|
7
|
-
import { Annotation } from "@dxos/echo";
|
|
8
|
-
import { Operation } from "@dxos/operation";
|
|
9
|
-
import { SpaceOperation } from "@dxos/plugin-space/operations";
|
|
10
|
-
import { CanvasBoard as CanvasBoard2 } from "@dxos/react-ui-canvas-editor";
|
|
11
|
-
import { ReactSurface } from "#capabilities";
|
|
12
|
-
import { meta as meta2 } from "#meta";
|
|
13
|
-
|
|
14
|
-
// src/translations.ts
|
|
15
|
-
import { CanvasBoard } from "@dxos/react-ui-canvas-editor";
|
|
16
|
-
import { meta } from "#meta";
|
|
17
|
-
var translations = [
|
|
18
|
-
{
|
|
19
|
-
"en-US": {
|
|
20
|
-
[CanvasBoard.CanvasBoard.typename]: {
|
|
21
|
-
"typename.label": "Circuit",
|
|
22
|
-
"typename.label_zero": "Circuits",
|
|
23
|
-
"typename.label_one": "Circuit",
|
|
24
|
-
"typename.label_other": "Circuits",
|
|
25
|
-
"object-name.placeholder": "New circuit",
|
|
26
|
-
"add-object.label": "Add circuit",
|
|
27
|
-
"rename-object.label": "Rename circuit",
|
|
28
|
-
"delete-object.label": "Delete circuit",
|
|
29
|
-
"object-deleted.label": "Circuit deleted"
|
|
30
|
-
},
|
|
31
|
-
[meta.id]: {
|
|
32
|
-
"plugin.name": "Conductor",
|
|
33
|
-
"content.placeholder": "Enter text..."
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
// src/ConductorPlugin.tsx
|
|
40
|
-
var ConductorPlugin = Plugin.define(meta2).pipe(AppPlugin.addMetadataModule({
|
|
41
|
-
metadata: {
|
|
42
|
-
id: CanvasBoard2.CanvasBoard.typename,
|
|
43
|
-
metadata: {
|
|
44
|
-
icon: Annotation.IconAnnotation.get(CanvasBoard2.CanvasBoard).pipe(Option.getOrThrow).icon,
|
|
45
|
-
iconHue: Annotation.IconAnnotation.get(CanvasBoard2.CanvasBoard).pipe(Option.getOrThrow).hue ?? "white",
|
|
46
|
-
createObject: (props, options) => Effect.gen(function* () {
|
|
47
|
-
const object = CanvasBoard2.make(props);
|
|
48
|
-
return yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
49
|
-
object,
|
|
50
|
-
target: options.target,
|
|
51
|
-
hidden: true,
|
|
52
|
-
targetNodeId: options.targetNodeId
|
|
53
|
-
});
|
|
54
|
-
})
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}), AppPlugin.addSchemaModule({
|
|
58
|
-
schema: [
|
|
59
|
-
CanvasBoard2.CanvasBoard,
|
|
60
|
-
ComputeGraph
|
|
61
|
-
]
|
|
62
|
-
}), AppPlugin.addSurfaceModule({
|
|
63
|
-
activate: ReactSurface
|
|
64
|
-
}), AppPlugin.addTranslationsModule({
|
|
65
|
-
translations
|
|
66
|
-
}), Plugin.make);
|
|
67
|
-
|
|
68
|
-
// src/meta.ts
|
|
69
|
-
import { trim } from "@dxos/util";
|
|
70
|
-
var meta3 = {
|
|
71
|
-
id: "org.dxos.plugin.conductor",
|
|
72
|
-
name: "Conductor",
|
|
73
|
-
description: trim`
|
|
74
|
-
Visual workflow builder using node-based compute graphs to orchestrate complex AI agent pipelines.
|
|
75
|
-
Connect data sources, transformations, and AI models in a drag-and-drop interface for advanced automation.
|
|
76
|
-
`,
|
|
77
|
-
icon: "ph--infinity--regular",
|
|
78
|
-
iconHue: "sky",
|
|
79
|
-
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-conductor",
|
|
80
|
-
tags: [
|
|
81
|
-
"labs"
|
|
82
|
-
],
|
|
83
|
-
screenshots: [
|
|
84
|
-
"https://dxos.network/plugin-details-canvas-dark.png"
|
|
85
|
-
]
|
|
86
|
-
};
|
|
87
|
-
export {
|
|
88
|
-
ConductorPlugin,
|
|
89
|
-
meta3 as meta
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/ConductorPlugin.tsx", "../../../src/translations.ts", "../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { ComputeGraph } from '@dxos/conductor';\nimport { Annotation } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { SpaceOperation } from '@dxos/plugin-space/operations';\nimport { type CreateObject } from '@dxos/plugin-space/types';\nimport { CanvasBoard } from '@dxos/react-ui-canvas-editor';\n\nimport { ReactSurface } from '#capabilities';\nimport { meta } from '#meta';\n\nimport { translations } from './translations';\n\nexport const ConductorPlugin = Plugin.define(meta).pipe(\n AppPlugin.addMetadataModule({\n metadata: {\n id: CanvasBoard.CanvasBoard.typename,\n metadata: {\n icon: Annotation.IconAnnotation.get(CanvasBoard.CanvasBoard).pipe(Option.getOrThrow).icon,\n iconHue: Annotation.IconAnnotation.get(CanvasBoard.CanvasBoard).pipe(Option.getOrThrow).hue ?? 'white',\n createObject: ((props, options) =>\n Effect.gen(function* () {\n const object = CanvasBoard.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId,\n });\n })) satisfies CreateObject,\n },\n },\n }),\n AppPlugin.addSchemaModule({ schema: [CanvasBoard.CanvasBoard, ComputeGraph] }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations }),\n Plugin.make,\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\nimport { CanvasBoard } from '@dxos/react-ui-canvas-editor';\n\nimport { meta } from '#meta';\n\nexport const translations = [\n {\n 'en-US': {\n [CanvasBoard.CanvasBoard.typename]: {\n 'typename.label': 'Circuit',\n 'typename.label_zero': 'Circuits',\n 'typename.label_one': 'Circuit',\n 'typename.label_other': 'Circuits',\n 'object-name.placeholder': 'New circuit',\n 'add-object.label': 'Add circuit',\n 'rename-object.label': 'Rename circuit',\n 'delete-object.label': 'Delete circuit',\n 'object-deleted.label': 'Circuit deleted',\n },\n [meta.id]: {\n 'plugin.name': 'Conductor',\n 'content.placeholder': 'Enter text...',\n },\n },\n },\n] as const satisfies Resource[];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.conductor',\n name: 'Conductor',\n description: trim`\n Visual workflow builder using node-based compute graphs to orchestrate complex AI agent pipelines.\n Connect data sources, transformations, and AI models in a drag-and-drop interface for advanced automation.\n `,\n icon: 'ph--infinity--regular',\n iconHue: 'sky',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-conductor',\n tags: ['labs'],\n screenshots: ['https://dxos.network/plugin-details-canvas-dark.png'],\n};\n"],
|
|
5
|
-
"mappings": ";AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAE/B,SAASC,eAAAA,oBAAmB;AAE5B,SAASC,oBAAoB;AAC7B,SAASC,QAAAA,aAAY;;;ACZrB,SAASC,mBAAmB;AAE5B,SAASC,YAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,YAAYA,YAAYC,QAAQ,GAAG;QAClC,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;MAC1B;MACA,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,uBAAuB;MACzB;IACF;EACF;;;;ADPK,IAAMC,kBAAkBC,OAAOC,OAAOC,KAAAA,EAAMC,KACjDC,UAAUC,kBAAkB;EAC1BC,UAAU;IACRC,IAAIC,aAAYA,YAAYC;IAC5BH,UAAU;MACRI,MAAMC,WAAWC,eAAeC,IAAIL,aAAYA,WAAW,EAAEL,KAAYW,iBAAU,EAAEJ;MACrFK,SAASJ,WAAWC,eAAeC,IAAIL,aAAYA,WAAW,EAAEL,KAAYW,iBAAU,EAAEE,OAAO;MAC/FC,cAAe,CAACC,OAAOC,YACdC,WAAI,aAAA;AACT,cAAMC,SAASb,aAAYc,KAAKJ,KAAAA;AAChC,eAAO,OAAOK,UAAUC,OAAOC,eAAeC,WAAW;UACvDL;UACAM,QAAQR,QAAQQ;UAChBC,QAAQ;UACRC,cAAcV,QAAQU;QACxB,CAAA;MACF,CAAA;IACJ;EACF;AACF,CAAA,GACAzB,UAAU0B,gBAAgB;EAAEC,QAAQ;IAACvB,aAAYA;IAAawB;;AAAc,CAAA,GAC5E5B,UAAU6B,iBAAiB;EAAEC,UAAUC;AAAa,CAAA,GACpD/B,UAAUgC,sBAAsB;EAAEC;AAAa,CAAA,GAC/CrC,OAAOsB,IAAI;;;AEvCb,SAASgB,YAAY;AAEd,IAAMC,QAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaC;;;;EAIbC,MAAM;EACNC,SAAS;EACTC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;",
|
|
6
|
-
"names": ["Effect", "Option", "Plugin", "AppPlugin", "ComputeGraph", "Annotation", "Operation", "SpaceOperation", "CanvasBoard", "ReactSurface", "meta", "CanvasBoard", "meta", "translations", "CanvasBoard", "typename", "meta", "id", "ConductorPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addMetadataModule", "metadata", "id", "CanvasBoard", "typename", "icon", "Annotation", "IconAnnotation", "get", "getOrThrow", "iconHue", "hue", "createObject", "props", "options", "gen", "object", "make", "Operation", "invoke", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "addSchemaModule", "schema", "ComputeGraph", "addSurfaceModule", "activate", "ReactSurface", "addTranslationsModule", "translations", "trim", "meta", "id", "name", "description", "trim", "icon", "iconHue", "source", "tags", "screenshots"]
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"inputs":{"src/translations.ts":{"bytes":2880,"imports":[{"path":"@dxos/react-ui-canvas-editor","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/ConductorPlugin.tsx":{"bytes":6313,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/conductor","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/operations","kind":"import-statement","external":true},{"path":"@dxos/react-ui-canvas-editor","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"}],"format":"esm"},"src/meta.ts":{"bytes":2257,"imports":[{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":559,"imports":[{"path":"src/ConductorPlugin.tsx","kind":"import-statement","original":"./ConductorPlugin"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5574},"dist/lib/browser/index.mjs":{"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"effect/Option","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/conductor","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/operation","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/operations","kind":"import-statement","external":true},{"path":"@dxos/react-ui-canvas-editor","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"@dxos/react-ui-canvas-editor","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ConductorPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/ConductorPlugin.tsx":{"bytesInOutput":1452},"src/translations.ts":{"bytesInOutput":712},"src/index.ts":{"bytesInOutput":0},"src/meta.ts":{"bytesInOutput":590}},"bytes":2931}}}
|