@dxos/app-framework 0.8.4-main.ae835ea → 0.8.4-main.bc674ce
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/.storybook/main.mts +1 -1
- package/.storybook/preview.mts +2 -2
- package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +149 -0
- package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +7 -0
- package/dist/lib/browser/capability-7PCNSWBT.mjs +33 -0
- package/dist/lib/browser/capability-7PCNSWBT.mjs.map +7 -0
- package/dist/lib/browser/capability-KP3PFEXD.mjs +31 -0
- package/dist/lib/browser/capability-KP3PFEXD.mjs.map +7 -0
- package/dist/lib/browser/chunk-6Y7PZV72.mjs +77 -0
- package/dist/lib/browser/chunk-6Y7PZV72.mjs.map +7 -0
- package/dist/lib/browser/chunk-7IQHKD4U.mjs +170 -0
- package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +7 -0
- package/dist/lib/browser/chunk-BLQJSGL3.mjs +732 -0
- package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +7 -0
- package/dist/lib/browser/chunk-FHQTHCX7.mjs +8 -0
- package/dist/lib/browser/chunk-FHQTHCX7.mjs.map +7 -0
- package/dist/lib/browser/chunk-FMZN33N4.mjs +807 -0
- package/dist/lib/browser/chunk-FMZN33N4.mjs.map +7 -0
- package/dist/lib/browser/chunk-H4WPA7U7.mjs +77 -0
- package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-PKQT6C53.mjs +47 -0
- package/dist/lib/browser/chunk-PKQT6C53.mjs.map +7 -0
- package/dist/lib/browser/chunk-TCLLRCS3.mjs +145 -0
- package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +7 -0
- package/dist/lib/browser/chunk-XYNO72GQ.mjs +746 -0
- package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +7 -0
- package/dist/lib/browser/common/index.mjs +38 -0
- package/dist/lib/browser/core/activation-event.mjs +20 -0
- package/dist/lib/browser/core/capability.mjs +28 -0
- package/dist/lib/browser/core/plugin-manager.mjs +15 -0
- package/dist/lib/browser/core/plugin-manager.mjs.map +7 -0
- package/dist/lib/browser/core/plugin.mjs +27 -0
- package/dist/lib/browser/core/plugin.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +162 -128
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs +32 -0
- package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +64 -0
- package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +7 -0
- package/dist/lib/browser/react/index.mjs +46 -0
- package/dist/lib/browser/react/index.mjs.map +7 -0
- package/dist/lib/browser/testing/index.mjs +68 -22
- package/dist/lib/browser/testing/index.mjs.map +4 -4
- package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +150 -0
- package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +7 -0
- package/dist/lib/node-esm/capability-CFLQ2QQU.mjs +34 -0
- package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +7 -0
- package/dist/lib/node-esm/capability-RCUNM2M7.mjs +32 -0
- package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-663A54LQ.mjs +171 -0
- package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-6WXBT3EC.mjs +747 -0
- package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs +48 -0
- package/dist/lib/node-esm/chunk-7OWSHPYK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +733 -0
- package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GT6OKM5I.mjs +146 -0
- package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-STMXUEPO.mjs +78 -0
- package/dist/lib/node-esm/chunk-STMXUEPO.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-UEWJDI2L.mjs +10 -0
- package/dist/lib/node-esm/chunk-UEWJDI2L.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +78 -0
- package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XYQTBFPA.mjs +808 -0
- package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +7 -0
- package/dist/lib/node-esm/common/index.mjs +39 -0
- package/dist/lib/node-esm/common/index.mjs.map +7 -0
- package/dist/lib/node-esm/core/activation-event.mjs +21 -0
- package/dist/lib/node-esm/core/activation-event.mjs.map +7 -0
- package/dist/lib/node-esm/core/capability.mjs +29 -0
- package/dist/lib/node-esm/core/capability.mjs.map +7 -0
- package/dist/lib/node-esm/core/plugin-manager.mjs +16 -0
- package/dist/lib/node-esm/core/plugin-manager.mjs.map +7 -0
- package/dist/lib/node-esm/core/plugin.mjs +28 -0
- package/dist/lib/node-esm/core/plugin.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +162 -128
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs +33 -0
- package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +65 -0
- package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +7 -0
- package/dist/lib/node-esm/react/index.mjs +47 -0
- package/dist/lib/node-esm/react/index.mjs.map +7 -0
- package/dist/lib/node-esm/testing/index.mjs +68 -22
- package/dist/lib/node-esm/testing/index.mjs.map +4 -4
- package/dist/types/src/cli.d.ts +39 -0
- package/dist/types/src/cli.d.ts.map +1 -0
- package/dist/types/src/common/activation-event.d.ts +66 -0
- package/dist/types/src/common/activation-event.d.ts.map +1 -0
- package/dist/types/src/common/capability.d.ts +265 -0
- package/dist/types/src/common/capability.d.ts.map +1 -0
- package/dist/types/src/common/collaboration.d.ts +23 -17
- package/dist/types/src/common/collaboration.d.ts.map +1 -1
- package/dist/types/src/common/graph.d.ts +2 -2
- package/dist/types/src/common/graph.d.ts.map +1 -1
- package/dist/types/src/common/index.d.ts +4 -3
- package/dist/types/src/common/index.d.ts.map +1 -1
- package/dist/types/src/common/operations.d.ts +380 -0
- package/dist/types/src/common/operations.d.ts.map +1 -0
- package/dist/types/src/common/plugin.d.ts +201 -0
- package/dist/types/src/common/plugin.d.ts.map +1 -0
- package/dist/types/src/common/surface.d.ts +48 -13
- package/dist/types/src/common/surface.d.ts.map +1 -1
- package/dist/types/src/common/translations.d.ts +9 -0
- package/dist/types/src/common/translations.d.ts.map +1 -1
- package/dist/types/src/context.d.ts +5 -0
- package/dist/types/src/context.d.ts.map +1 -0
- package/dist/types/src/core/{events.d.ts → activation-event.d.ts} +6 -6
- package/dist/types/src/core/activation-event.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.d.ts +43 -0
- package/dist/types/src/core/capability-manager.d.ts.map +1 -0
- package/dist/types/src/core/capability-manager.test.d.ts +2 -0
- package/dist/types/src/core/capability-manager.test.d.ts.map +1 -0
- package/dist/types/src/core/capability.d.ts +150 -0
- package/dist/types/src/core/capability.d.ts.map +1 -0
- package/dist/types/src/core/index.d.ts +5 -4
- package/dist/types/src/core/index.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manager.d.ts +66 -0
- package/dist/types/src/core/plugin-manager.d.ts.map +1 -0
- package/dist/types/src/core/plugin-manager.test.d.ts +2 -0
- package/dist/types/src/core/plugin-manager.test.d.ts.map +1 -0
- package/dist/types/src/core/plugin.d.ts +92 -34
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/playground/debug/Debug.d.ts +4 -2
- package/dist/types/src/playground/debug/Debug.d.ts.map +1 -1
- package/dist/types/src/playground/debug/plugin.d.ts +2 -1
- package/dist/types/src/playground/debug/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/generator/Main.d.ts +4 -2
- package/dist/types/src/playground/generator/Main.d.ts.map +1 -1
- package/dist/types/src/playground/generator/Toolbar.d.ts +4 -2
- package/dist/types/src/playground/generator/Toolbar.d.ts.map +1 -1
- package/dist/types/src/playground/generator/generator.d.ts +17 -5
- package/dist/types/src/playground/generator/generator.d.ts.map +1 -1
- package/dist/types/src/playground/generator/plugin.d.ts +2 -1
- package/dist/types/src/playground/generator/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/layout/Layout.d.ts +4 -2
- package/dist/types/src/playground/layout/Layout.d.ts.map +1 -1
- package/dist/types/src/playground/layout/plugin.d.ts +2 -1
- package/dist/types/src/playground/layout/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/logger/Toolbar.d.ts +4 -2
- package/dist/types/src/playground/logger/Toolbar.d.ts.map +1 -1
- package/dist/types/src/playground/logger/plugin.d.ts +2 -1
- package/dist/types/src/playground/logger/plugin.d.ts.map +1 -1
- package/dist/types/src/playground/logger/schema.d.ts +14 -0
- package/dist/types/src/playground/logger/schema.d.ts.map +1 -1
- package/dist/types/src/playground/playground.stories.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts +3 -0
- package/dist/types/src/plugin-operation/OperationPlugin.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/capability.d.ts +7 -0
- package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/errors.d.ts +5 -0
- package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts +18 -0
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts +2 -0
- package/dist/types/src/plugin-operation/history/history-tracker.test.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/index.d.ts +6 -0
- package/dist/types/src/plugin-operation/history/index.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/types.d.ts +13 -0
- package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +93 -0
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts +23 -0
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts +2 -0
- package/dist/types/src/plugin-operation/history/undo-registry.test.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/index.d.ts +3 -0
- package/dist/types/src/plugin-operation/index.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/invoker-capability.d.ts +6 -0
- package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/meta.d.ts +3 -0
- package/dist/types/src/plugin-operation/meta.d.ts.map +1 -0
- package/dist/types/src/plugin-operation/testing.d.ts +109 -0
- package/dist/types/src/plugin-operation/testing.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts +3 -0
- package/dist/types/src/plugin-runtime/RuntimePlugin.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/capability.d.ts +6 -0
- package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/index.d.ts +2 -0
- package/dist/types/src/plugin-runtime/index.d.ts.map +1 -0
- package/dist/types/src/plugin-runtime/meta.d.ts +3 -0
- package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -0
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +2 -1
- package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/actions.d.ts +36 -0
- package/dist/types/src/plugin-settings/actions.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts +4 -2
- package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/meta.d.ts +2 -2
- package/dist/types/src/plugin-settings/meta.d.ts.map +1 -1
- package/dist/types/src/plugin-settings/operation-resolver.d.ts +6 -0
- package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/react/App.d.ts +8 -0
- package/dist/types/src/react/App.d.ts.map +1 -0
- package/dist/types/src/react/App.stories.d.ts.map +1 -0
- package/dist/types/src/react/DefaultFallback.d.ts.map +1 -0
- package/dist/types/src/react/PluginManagerContext.stories.d.ts +13 -0
- package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +1 -0
- package/dist/types/src/react/PluginManagerProvider.d.ts +2 -2
- package/dist/types/src/react/PluginManagerProvider.d.ts.map +1 -1
- package/dist/types/src/react/Surface.d.ts +8 -6
- package/dist/types/src/react/Surface.d.ts.map +1 -1
- package/dist/types/src/react/Surface.stories.d.ts +3 -6
- package/dist/types/src/react/Surface.stories.d.ts.map +1 -1
- package/dist/types/src/react/SurfaceInfo.d.ts +11 -0
- package/dist/types/src/react/SurfaceInfo.d.ts.map +1 -0
- package/dist/types/src/react/common.d.ts +13 -12
- package/dist/types/src/react/common.d.ts.map +1 -1
- package/dist/types/src/react/index.d.ts +3 -1
- package/dist/types/src/react/index.d.ts.map +1 -1
- package/dist/types/src/react/types.d.ts +12 -0
- package/dist/types/src/react/types.d.ts.map +1 -0
- package/dist/types/src/{components → react}/useApp.d.ts +7 -6
- package/dist/types/src/react/useApp.d.ts.map +1 -0
- package/dist/types/src/react/useCapabilities.d.ts +16 -3
- package/dist/types/src/react/useCapabilities.d.ts.map +1 -1
- package/dist/types/src/{components → react}/useLoading.d.ts +1 -2
- package/dist/types/src/react/useLoading.d.ts.map +1 -0
- package/dist/types/src/react/useOperationResolver.d.ts +19 -0
- package/dist/types/src/react/useOperationResolver.d.ts.map +1 -0
- package/dist/types/src/testing/index.d.ts +1 -0
- package/dist/types/src/testing/index.d.ts.map +1 -1
- package/dist/types/src/testing/service.d.ts +8 -0
- package/dist/types/src/testing/service.d.ts.map +1 -0
- package/dist/types/src/testing/withPluginManager.d.ts +4 -4
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +6 -2
- package/package.json +101 -45
- package/src/cli.ts +107 -0
- package/src/common/activation-event.ts +99 -0
- package/src/common/capability.ts +343 -0
- package/src/common/collaboration.ts +23 -10
- package/src/common/graph.ts +2 -2
- package/src/common/index.ts +4 -3
- package/src/common/operations.ts +412 -0
- package/src/common/plugin.ts +364 -0
- package/src/common/surface.ts +56 -19
- package/src/common/translations.ts +20 -0
- package/src/context.ts +9 -0
- package/src/core/{events.ts → activation-event.ts} +5 -5
- package/src/core/capability-manager.test.ts +151 -0
- package/src/core/capability-manager.ts +171 -0
- package/src/core/capability.ts +236 -0
- package/src/core/index.ts +5 -4
- package/src/core/plugin-manager.test.ts +845 -0
- package/src/core/plugin-manager.ts +696 -0
- package/src/core/plugin.ts +221 -39
- package/src/index.ts +5 -4
- package/src/playground/debug/Debug.tsx +26 -16
- package/src/playground/debug/plugin.ts +8 -8
- package/src/playground/generator/Main.tsx +20 -11
- package/src/playground/generator/Toolbar.tsx +26 -16
- package/src/playground/generator/generator.ts +27 -27
- package/src/playground/generator/plugin.ts +11 -12
- package/src/playground/layout/Layout.tsx +11 -7
- package/src/playground/layout/plugin.ts +8 -8
- package/src/playground/logger/Toolbar.tsx +19 -16
- package/src/playground/logger/plugin.ts +24 -23
- package/src/playground/logger/schema.ts +10 -0
- package/src/playground/playground.stories.tsx +14 -6
- package/src/plugin-operation/OperationPlugin.ts +25 -0
- package/src/plugin-operation/history/capability.ts +37 -0
- package/src/plugin-operation/history/errors.ts +11 -0
- package/src/plugin-operation/history/history-tracker.test.ts +380 -0
- package/src/plugin-operation/history/history-tracker.ts +129 -0
- package/src/plugin-operation/history/index.ts +9 -0
- package/src/plugin-operation/history/types.ts +17 -0
- package/src/plugin-operation/history/undo-mapping.ts +132 -0
- package/src/plugin-operation/history/undo-registry.test.ts +73 -0
- package/src/plugin-operation/history/undo-registry.ts +54 -0
- package/src/plugin-operation/index.ts +6 -0
- package/src/plugin-operation/invoker-capability.ts +40 -0
- package/src/plugin-operation/meta.ts +11 -0
- package/src/plugin-operation/testing.ts +174 -0
- package/src/plugin-runtime/RuntimePlugin.ts +20 -0
- package/src/plugin-runtime/capability.ts +53 -0
- package/src/{components → plugin-runtime}/index.ts +1 -1
- package/src/plugin-runtime/meta.ts +11 -0
- package/src/plugin-settings/SettingsPlugin.ts +11 -26
- package/src/plugin-settings/actions.ts +39 -0
- package/src/plugin-settings/app-graph-builder.ts +122 -142
- package/src/plugin-settings/meta.ts +2 -2
- package/src/plugin-settings/operation-resolver.ts +55 -0
- package/src/plugin-settings/translations.ts +1 -1
- package/src/react/App.stories.tsx +63 -0
- package/src/{components → react}/App.tsx +11 -10
- package/src/{components → react}/DefaultFallback.tsx +1 -1
- package/src/react/PluginManagerContext.stories.tsx +184 -0
- package/src/react/PluginManagerProvider.ts +2 -2
- package/src/react/Surface.stories.tsx +91 -51
- package/src/react/Surface.tsx +226 -45
- package/src/react/SurfaceInfo.tsx +107 -0
- package/src/react/common.ts +29 -5
- package/src/react/index.ts +5 -1
- package/src/react/types.ts +27 -0
- package/src/react/useApp.tsx +209 -0
- package/src/react/useCapabilities.ts +37 -5
- package/src/{components → react}/useLoading.tsx +4 -6
- package/src/react/useOperationResolver.ts +40 -0
- package/src/testing/index.ts +1 -0
- package/src/testing/service.ts +52 -0
- package/src/testing/withPluginManager.stories.tsx +5 -5
- package/src/testing/withPluginManager.tsx +21 -23
- package/tsconfig.json +25 -7
- package/.swc/plugins/linux_x86_64_19.0.0/fce1bdb8e20a094e4af08bad09cc81497ed0e2e7c51223b07d371063cca18429.wasmer-v7 +0 -0
- package/dist/lib/browser/app-graph-builder-PSA3RESL.mjs +0 -138
- package/dist/lib/browser/app-graph-builder-PSA3RESL.mjs.map +0 -7
- package/dist/lib/browser/chunk-2VZ4RF4A.mjs +0 -1608
- package/dist/lib/browser/chunk-2VZ4RF4A.mjs.map +0 -7
- package/dist/lib/browser/chunk-CPVYIS24.mjs +0 -451
- package/dist/lib/browser/chunk-CPVYIS24.mjs.map +0 -7
- package/dist/lib/browser/chunk-SCPE4ZO2.mjs +0 -35
- package/dist/lib/browser/chunk-SCPE4ZO2.mjs.map +0 -7
- package/dist/lib/browser/intent-dispatcher-BND6IF4U.mjs +0 -11
- package/dist/lib/browser/intent-resolver-27FJAJDE.mjs +0 -39
- package/dist/lib/browser/intent-resolver-27FJAJDE.mjs.map +0 -7
- package/dist/lib/browser/store-F545UOIR.mjs +0 -30
- package/dist/lib/browser/store-F545UOIR.mjs.map +0 -7
- package/dist/lib/browser/worker.mjs +0 -77
- package/dist/lib/node-esm/app-graph-builder-VJGZ6KH7.mjs +0 -139
- package/dist/lib/node-esm/app-graph-builder-VJGZ6KH7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3RRWO5TD.mjs +0 -1610
- package/dist/lib/node-esm/chunk-3RRWO5TD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-MN37WUJ2.mjs +0 -452
- package/dist/lib/node-esm/chunk-MN37WUJ2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZX63QUGE.mjs +0 -37
- package/dist/lib/node-esm/chunk-ZX63QUGE.mjs.map +0 -7
- package/dist/lib/node-esm/intent-dispatcher-254AZ6EE.mjs +0 -12
- package/dist/lib/node-esm/intent-resolver-NPMOPNFL.mjs +0 -40
- package/dist/lib/node-esm/intent-resolver-NPMOPNFL.mjs.map +0 -7
- package/dist/lib/node-esm/store-CINC4R4L.mjs +0 -31
- package/dist/lib/node-esm/store-CINC4R4L.mjs.map +0 -7
- package/dist/lib/node-esm/worker.mjs +0 -78
- package/dist/types/src/common/capabilities.d.ts +0 -201
- package/dist/types/src/common/capabilities.d.ts.map +0 -1
- package/dist/types/src/common/events.d.ts +0 -52
- package/dist/types/src/common/events.d.ts.map +0 -1
- package/dist/types/src/common/layout.d.ts +0 -279
- package/dist/types/src/common/layout.d.ts.map +0 -1
- package/dist/types/src/components/App.d.ts +0 -10
- package/dist/types/src/components/App.d.ts.map +0 -1
- package/dist/types/src/components/App.stories.d.ts.map +0 -1
- package/dist/types/src/components/DefaultFallback.d.ts.map +0 -1
- package/dist/types/src/components/index.d.ts +0 -2
- package/dist/types/src/components/index.d.ts.map +0 -1
- package/dist/types/src/components/useApp.d.ts.map +0 -1
- package/dist/types/src/components/useLoading.d.ts.map +0 -1
- package/dist/types/src/core/capabilities.d.ts +0 -117
- package/dist/types/src/core/capabilities.d.ts.map +0 -1
- package/dist/types/src/core/capabilities.test.d.ts +0 -2
- package/dist/types/src/core/capabilities.test.d.ts.map +0 -1
- package/dist/types/src/core/events.d.ts.map +0 -1
- package/dist/types/src/core/manager.d.ts +0 -126
- package/dist/types/src/core/manager.d.ts.map +0 -1
- package/dist/types/src/core/manager.test.d.ts +0 -2
- package/dist/types/src/core/manager.test.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts +0 -2
- package/dist/types/src/plugin-intent/IntentPlugin.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/actions.d.ts +0 -36
- package/dist/types/src/plugin-intent/actions.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/errors.d.ts +0 -16
- package/dist/types/src/plugin-intent/errors.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/index.d.ts +0 -6
- package/dist/types/src/plugin-intent/index.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts +0 -139
- package/dist/types/src/plugin-intent/intent-dispatcher.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts +0 -2
- package/dist/types/src/plugin-intent/intent-dispatcher.test.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/intent.d.ts +0 -63
- package/dist/types/src/plugin-intent/intent.d.ts.map +0 -1
- package/dist/types/src/plugin-intent/meta.d.ts +0 -3
- package/dist/types/src/plugin-intent/meta.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/intent-resolver.d.ts +0 -4
- package/dist/types/src/plugin-settings/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/plugin-settings/store.d.ts +0 -5
- package/dist/types/src/plugin-settings/store.d.ts.map +0 -1
- package/dist/types/src/react/IntentContext.d.ts +0 -8
- package/dist/types/src/react/IntentContext.d.ts.map +0 -1
- package/dist/types/src/react/useIntentResolver.d.ts +0 -3
- package/dist/types/src/react/useIntentResolver.d.ts.map +0 -1
- package/dist/types/src/worker.d.ts +0 -4
- package/dist/types/src/worker.d.ts.map +0 -1
- package/src/common/capabilities.ts +0 -217
- package/src/common/events.ts +0 -79
- package/src/common/layout.ts +0 -277
- package/src/components/App.stories.tsx +0 -33
- package/src/components/useApp.tsx +0 -164
- package/src/core/capabilities.test.ts +0 -136
- package/src/core/capabilities.ts +0 -263
- package/src/core/manager.test.ts +0 -516
- package/src/core/manager.ts +0 -604
- package/src/plugin-intent/IntentPlugin.ts +0 -20
- package/src/plugin-intent/actions.ts +0 -31
- package/src/plugin-intent/errors.ts +0 -40
- package/src/plugin-intent/index.ts +0 -9
- package/src/plugin-intent/intent-dispatcher.test.ts +0 -286
- package/src/plugin-intent/intent-dispatcher.ts +0 -337
- package/src/plugin-intent/intent.ts +0 -154
- package/src/plugin-intent/meta.ts +0 -10
- package/src/plugin-settings/intent-resolver.ts +0 -35
- package/src/plugin-settings/store.ts +0 -33
- package/src/react/IntentContext.tsx +0 -35
- package/src/react/useIntentResolver.ts +0 -22
- package/src/worker.ts +0 -11
- /package/dist/lib/browser/{intent-dispatcher-BND6IF4U.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/browser/{worker.mjs.map → common/index.mjs.map} +0 -0
- /package/dist/lib/{node-esm/intent-dispatcher-254AZ6EE.mjs.map → browser/core/activation-event.mjs.map} +0 -0
- /package/dist/lib/{node-esm/worker.mjs.map → browser/core/capability.mjs.map} +0 -0
- /package/dist/types/src/{components → react}/App.stories.d.ts +0 -0
- /package/dist/types/src/{components → react}/DefaultFallback.d.ts +0 -0
package/src/core/plugin.ts
CHANGED
|
@@ -2,12 +2,75 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import * as Context from 'effect/Context';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
import * as Option from 'effect/Option';
|
|
8
|
+
import * as Pipeable from 'effect/Pipeable';
|
|
6
9
|
|
|
7
|
-
import {
|
|
8
|
-
import { type ActivationEvent, type ActivationEvents } from './events';
|
|
10
|
+
import { invariant } from '@dxos/invariant';
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
import type * as ActivationEvent from './activation-event';
|
|
13
|
+
import * as Capability from './capability';
|
|
14
|
+
import type * as PluginManager from './plugin-manager';
|
|
15
|
+
|
|
16
|
+
//
|
|
17
|
+
// Plugin Service Layer
|
|
18
|
+
//
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Effect Context.Tag for accessing PluginManager via the Effect layer system.
|
|
22
|
+
* This allows lifecycle operations to access the plugin manager without having it passed as an argument.
|
|
23
|
+
*/
|
|
24
|
+
export class Service extends Context.Tag('@dxos/app-framework/PluginManager')<Service, PluginManager.PluginManager>() {}
|
|
25
|
+
|
|
26
|
+
//
|
|
27
|
+
// Lifecycle Functions
|
|
28
|
+
//
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Activates plugins based on the activation event.
|
|
32
|
+
* Accesses the PluginManager via the Effect layer system.
|
|
33
|
+
* @param event The activation event.
|
|
34
|
+
* @returns Whether the activation was successful.
|
|
35
|
+
*/
|
|
36
|
+
export const activate = (event: ActivationEvent.ActivationEvent): Effect.Effect<boolean, Error, Service> =>
|
|
37
|
+
Effect.flatMap(Service, (manager) => manager.activate(event));
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Re-activates the modules that were activated by the event.
|
|
41
|
+
* Accesses the PluginManager via the Effect layer system.
|
|
42
|
+
* @param event The activation event.
|
|
43
|
+
* @returns Whether the reset was successful.
|
|
44
|
+
*/
|
|
45
|
+
export const reset = (event: ActivationEvent.ActivationEvent): Effect.Effect<boolean, Error, Service> =>
|
|
46
|
+
Effect.flatMap(Service, (manager) => manager.reset(event));
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Computes a module ID from plugin ID and export name.
|
|
50
|
+
*/
|
|
51
|
+
const computeModuleId = (pluginId: string, moduleName: string): string => {
|
|
52
|
+
return `${pluginId}/module/${moduleName}`;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Identifier denoting a PluginModule.
|
|
57
|
+
*/
|
|
58
|
+
export const PluginModuleTypeId: unique symbol = Symbol.for('@dxos/app-framework/PluginModule');
|
|
59
|
+
export type PluginModuleTypeId = typeof PluginModuleTypeId;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Type guard to check if a value is a PluginModule.
|
|
63
|
+
*/
|
|
64
|
+
export const isPluginModule = (value: unknown): value is PluginModule => {
|
|
65
|
+
return typeof value === 'object' && value !== null && PluginModuleTypeId in value;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* A unit of containment of modular functionality that can be provided to an application.
|
|
70
|
+
* Activation of a module is async allowing for code to split and loaded lazily.
|
|
71
|
+
*/
|
|
72
|
+
export interface PluginModule {
|
|
73
|
+
readonly [PluginModuleTypeId]: PluginModuleTypeId;
|
|
11
74
|
/**
|
|
12
75
|
* Unique id of the module.
|
|
13
76
|
*/
|
|
@@ -16,43 +79,41 @@ interface PluginModuleInterface {
|
|
|
16
79
|
/**
|
|
17
80
|
* Events for which the module will be activated.
|
|
18
81
|
*/
|
|
19
|
-
activatesOn:
|
|
82
|
+
activatesOn: ActivationEvent.Events;
|
|
20
83
|
|
|
21
84
|
/**
|
|
22
85
|
* Events which the plugin depends on being activated.
|
|
23
86
|
* Plugin is marked as needing reset a plugin activated by a dependent event is removed.
|
|
24
87
|
* Events are automatically activated before activation of the plugin.
|
|
25
88
|
*/
|
|
26
|
-
activatesBefore?: ActivationEvent[];
|
|
89
|
+
activatesBefore?: ActivationEvent.ActivationEvent[];
|
|
27
90
|
|
|
28
91
|
/**
|
|
29
92
|
* Events which this plugin triggers upon activation.
|
|
30
93
|
*/
|
|
31
|
-
activatesAfter?: ActivationEvent[];
|
|
94
|
+
activatesAfter?: ActivationEvent.ActivationEvent[];
|
|
32
95
|
|
|
33
96
|
/**
|
|
34
97
|
* Called when the module is activated.
|
|
35
|
-
*
|
|
98
|
+
* CapabilityManager is accessed via the Effect layer system (Capability.Service).
|
|
99
|
+
* PluginManager is accessed via Plugin.Service.
|
|
100
|
+
* @param props Optional props passed to the module.
|
|
36
101
|
* @returns The capabilities of the module.
|
|
37
102
|
*/
|
|
38
|
-
activate: (
|
|
39
|
-
context: PluginContext,
|
|
40
|
-
) => MaybePromise<AnyCapability | AnyCapability[]> | Promise<() => Promise<AnyCapability | AnyCapability[]>>;
|
|
103
|
+
activate: (props?: any) => Effect.Effect<Capability.ModuleReturn, Error, Capability.Service | Service | never>;
|
|
41
104
|
}
|
|
42
105
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
readonly
|
|
50
|
-
readonly
|
|
51
|
-
readonly
|
|
52
|
-
readonly activatesAfter?: PluginModuleInterface['activatesAfter'];
|
|
53
|
-
readonly activate: PluginModuleInterface['activate'];
|
|
106
|
+
export type PluginModuleOptions = Omit<PluginModule, 'id' | typeof PluginModuleTypeId> & { id?: string };
|
|
107
|
+
|
|
108
|
+
class PluginModuleImpl implements PluginModule {
|
|
109
|
+
readonly [PluginModuleTypeId]: PluginModuleTypeId = PluginModuleTypeId;
|
|
110
|
+
readonly id: PluginModule['id'];
|
|
111
|
+
readonly activatesOn: PluginModule['activatesOn'];
|
|
112
|
+
readonly activatesBefore?: PluginModule['activatesBefore'];
|
|
113
|
+
readonly activatesAfter?: PluginModule['activatesAfter'];
|
|
114
|
+
readonly activate: PluginModule['activate'];
|
|
54
115
|
|
|
55
|
-
constructor(options:
|
|
116
|
+
constructor(options: Omit<PluginModule, typeof PluginModuleTypeId>) {
|
|
56
117
|
this.id = options.id;
|
|
57
118
|
this.activatesOn = options.activatesOn;
|
|
58
119
|
this.activatesBefore = options.activatesBefore;
|
|
@@ -61,12 +122,7 @@ export class PluginModule implements PluginModuleInterface {
|
|
|
61
122
|
}
|
|
62
123
|
}
|
|
63
124
|
|
|
64
|
-
|
|
65
|
-
* Helper to define a module.
|
|
66
|
-
*/
|
|
67
|
-
export const defineModule = (options: PluginModuleInterface) => new PluginModule(options);
|
|
68
|
-
|
|
69
|
-
export type PluginMeta = {
|
|
125
|
+
export type Meta = {
|
|
70
126
|
/**
|
|
71
127
|
* Globally unique ID.
|
|
72
128
|
*
|
|
@@ -117,27 +173,153 @@ export type PluginMeta = {
|
|
|
117
173
|
iconHue?: string;
|
|
118
174
|
};
|
|
119
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Identifier denoting a Plugin.
|
|
178
|
+
*/
|
|
179
|
+
export const PluginTypeId: unique symbol = Symbol.for('@dxos/app-framework/Plugin');
|
|
180
|
+
export type PluginTypeId = typeof PluginTypeId;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Type guard to check if a value is a Plugin.
|
|
184
|
+
*/
|
|
185
|
+
export const isPlugin = (value: unknown): value is Plugin => {
|
|
186
|
+
return typeof value === 'object' && value !== null && PluginTypeId in value;
|
|
187
|
+
};
|
|
188
|
+
|
|
120
189
|
/**
|
|
121
190
|
* A collection of modules that are be enabled/disabled as a unit.
|
|
122
191
|
* Plugins provide things such as components, state, actions, etc. to the application.
|
|
123
192
|
*/
|
|
124
|
-
|
|
125
|
-
|
|
193
|
+
export interface Plugin {
|
|
194
|
+
readonly [PluginTypeId]: PluginTypeId;
|
|
195
|
+
readonly meta: Readonly<Meta>;
|
|
196
|
+
readonly modules: ReadonlyArray<PluginModule>;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Internal implementation of Plugin.
|
|
201
|
+
* @internal
|
|
202
|
+
*/
|
|
203
|
+
class PluginImpl implements Plugin {
|
|
204
|
+
readonly [PluginTypeId]: PluginTypeId = PluginTypeId;
|
|
205
|
+
|
|
126
206
|
constructor(
|
|
127
|
-
readonly
|
|
128
|
-
readonly
|
|
207
|
+
private readonly _meta: Meta,
|
|
208
|
+
private readonly _modules: PluginModule[],
|
|
129
209
|
) {}
|
|
210
|
+
|
|
211
|
+
get meta(): Readonly<Meta> {
|
|
212
|
+
return this._meta;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
get modules(): ReadonlyArray<PluginModule> {
|
|
216
|
+
return this._modules;
|
|
217
|
+
}
|
|
130
218
|
}
|
|
131
219
|
|
|
132
|
-
|
|
220
|
+
/**
|
|
221
|
+
* Builder interface for creating plugins incrementally.
|
|
222
|
+
*/
|
|
223
|
+
export interface PluginBuilder<T = void> extends Pipeable.Pipeable {
|
|
224
|
+
readonly meta: Meta;
|
|
225
|
+
readonly modules: ReadonlyArray<PluginModuleOptions | ((options: T) => PluginModuleOptions)>;
|
|
226
|
+
addModule(moduleOptions: PluginModuleOptions | ((options: T) => PluginModuleOptions)): PluginBuilder<T>;
|
|
227
|
+
}
|
|
133
228
|
|
|
134
229
|
/**
|
|
135
|
-
*
|
|
230
|
+
* Builder implementation for creating plugins incrementally.
|
|
136
231
|
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
232
|
+
class PluginBuilderImpl<T = void> implements PluginBuilder<T> {
|
|
233
|
+
readonly meta: Meta;
|
|
234
|
+
private readonly _modules: Array<PluginModuleOptions | ((options: T) => PluginModuleOptions)> = [];
|
|
235
|
+
|
|
236
|
+
constructor(meta: Meta) {
|
|
237
|
+
this.meta = meta;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
get modules(): ReadonlyArray<PluginModuleOptions | ((options: T) => PluginModuleOptions)> {
|
|
241
|
+
return this._modules;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
addModule(moduleOptions: PluginModuleOptions | ((options: T) => PluginModuleOptions)): PluginBuilder<T> {
|
|
245
|
+
this._modules.push(moduleOptions);
|
|
246
|
+
return this;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
pipe() {
|
|
250
|
+
// eslint-disable-next-line prefer-rest-params
|
|
251
|
+
return Pipeable.pipeArguments(this, arguments);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Creates a new PluginBuilder to start building a plugin.
|
|
257
|
+
*/
|
|
258
|
+
export const define = <T = void>(meta: Meta): PluginBuilder<T> => new PluginBuilderImpl<T>(meta);
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Adds a module to a plugin builder.
|
|
262
|
+
* Supports both pipeline and direct call styles.
|
|
263
|
+
* Modules can be either PluginModuleOptions or functions that receive options.
|
|
264
|
+
*/
|
|
265
|
+
export function addModule<T>(
|
|
266
|
+
moduleOptions: PluginModuleOptions | ((options: T) => PluginModuleOptions),
|
|
267
|
+
): (builder: PluginBuilder<T>) => PluginBuilder<T>;
|
|
268
|
+
export function addModule<T>(
|
|
269
|
+
builder: PluginBuilder<T>,
|
|
270
|
+
moduleOptions: PluginModuleOptions | ((options: T) => PluginModuleOptions),
|
|
271
|
+
): PluginBuilder<T>;
|
|
272
|
+
export function addModule<T>(
|
|
273
|
+
moduleOptionsOrBuilder: PluginModuleOptions | ((options: T) => PluginModuleOptions) | PluginBuilder<T>,
|
|
274
|
+
moduleOptions?: PluginModuleOptions | ((options: T) => PluginModuleOptions),
|
|
275
|
+
): ((builder: PluginBuilder<T>) => PluginBuilder<T>) | PluginBuilder<T> {
|
|
276
|
+
// If second arg is provided, it's the direct call style: addModule(builder, moduleOptions)
|
|
277
|
+
if (moduleOptions !== undefined) {
|
|
278
|
+
return (moduleOptionsOrBuilder as PluginBuilder<T>).addModule(moduleOptions);
|
|
279
|
+
}
|
|
280
|
+
// Otherwise it's pipeline style: addModule(moduleOptions) returns a function
|
|
281
|
+
const moduleOpts = moduleOptionsOrBuilder as PluginModuleOptions | ((options: T) => PluginModuleOptions);
|
|
282
|
+
return (builder: PluginBuilder<T>) => builder.addModule(moduleOpts);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export type PluginFactory<T = void> = ((options: T) => Plugin) & { meta: Meta };
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Resolves a module from either PluginModuleOptions or a function that returns PluginModuleOptions.
|
|
289
|
+
*/
|
|
290
|
+
const resolveModule = (
|
|
291
|
+
meta: Meta,
|
|
292
|
+
module: PluginModuleOptions | ((options: any) => PluginModuleOptions),
|
|
293
|
+
options?: any,
|
|
294
|
+
): PluginModuleImpl => {
|
|
295
|
+
const moduleOptions = typeof module === 'function' ? module(options) : module;
|
|
296
|
+
const id = Option.fromNullable(moduleOptions.id).pipe(
|
|
297
|
+
Option.match({
|
|
298
|
+
onNone: () => {
|
|
299
|
+
const exportName = Capability.getModuleTag(moduleOptions.activate);
|
|
300
|
+
invariant(exportName, `Plugin module missing name. Plugin: ${meta.id}`);
|
|
301
|
+
return computeModuleId(meta.id, exportName);
|
|
302
|
+
},
|
|
303
|
+
onSome: (id) => computeModuleId(meta.id, id),
|
|
304
|
+
}),
|
|
305
|
+
);
|
|
306
|
+
return new PluginModuleImpl({ ...moduleOptions, id });
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Creates a Plugin from a builder.
|
|
311
|
+
* Supports both pipeline and direct call styles.
|
|
312
|
+
* Always returns a factory function (options: T) => Plugin.
|
|
313
|
+
* When T is void, the function takes no arguments: () => Plugin.
|
|
314
|
+
*/
|
|
315
|
+
export function make<T>(builder: PluginBuilder<T>): PluginFactory<T>;
|
|
316
|
+
export function make<T>(builder: PluginBuilder<T>): PluginFactory<T> {
|
|
317
|
+
const meta = builder.meta;
|
|
318
|
+
|
|
319
|
+
const factory = (options: T) => {
|
|
320
|
+
const modules = builder.modules.map((module) => resolveModule(meta, module, options));
|
|
321
|
+
return new PluginImpl(meta, modules);
|
|
140
322
|
};
|
|
141
323
|
|
|
142
324
|
return Object.assign(factory, { meta });
|
|
143
|
-
}
|
|
325
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export * from './
|
|
6
|
-
export * from './
|
|
5
|
+
export * from './cli';
|
|
6
|
+
export * as Common from './common';
|
|
7
|
+
export * from './context';
|
|
7
8
|
export * from './core';
|
|
8
|
-
export * from './plugin-
|
|
9
|
+
export * from './plugin-operation';
|
|
10
|
+
export * from './plugin-runtime';
|
|
9
11
|
export * from './plugin-settings';
|
|
10
|
-
export * from './react';
|
|
@@ -2,23 +2,30 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
5
7
|
import React from 'react';
|
|
6
8
|
|
|
7
9
|
import { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';
|
|
8
10
|
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
+
import * as Common from '../../common';
|
|
12
|
+
import { Capability } from '../../core';
|
|
11
13
|
import { usePluginManager } from '../../react';
|
|
12
14
|
|
|
13
15
|
export const Debug = () => {
|
|
14
16
|
const manager = usePluginManager();
|
|
17
|
+
const core = useAtomValue(manager.core);
|
|
18
|
+
const enabled = useAtomValue(manager.enabled);
|
|
19
|
+
const active = useAtomValue(manager.active);
|
|
20
|
+
const pendingReset = useAtomValue(manager.pendingReset);
|
|
21
|
+
const eventsFired = useAtomValue(manager.eventsFired);
|
|
15
22
|
|
|
16
23
|
const object = {
|
|
17
|
-
core
|
|
18
|
-
enabled
|
|
19
|
-
active
|
|
20
|
-
pendingReset
|
|
21
|
-
eventsFired
|
|
24
|
+
core,
|
|
25
|
+
enabled,
|
|
26
|
+
active,
|
|
27
|
+
pendingReset,
|
|
28
|
+
eventsFired,
|
|
22
29
|
};
|
|
23
30
|
|
|
24
31
|
return (
|
|
@@ -28,12 +35,15 @@ export const Debug = () => {
|
|
|
28
35
|
);
|
|
29
36
|
};
|
|
30
37
|
|
|
31
|
-
export default () =>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
export default Capability.makeModule(() =>
|
|
39
|
+
Effect.succeed(
|
|
40
|
+
Capability.contributes(
|
|
41
|
+
Common.Capability.ReactSurface,
|
|
42
|
+
Common.createSurface({
|
|
43
|
+
id: 'dxos.org/test/debug/main',
|
|
44
|
+
role: 'secondary',
|
|
45
|
+
component: Debug,
|
|
46
|
+
}),
|
|
47
|
+
),
|
|
48
|
+
),
|
|
49
|
+
);
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
5
|
+
import * as Common from '../../common';
|
|
6
|
+
import { Capability, Plugin } from '../../core';
|
|
7
7
|
|
|
8
|
-
const Debug = lazy(() => import('./Debug'));
|
|
8
|
+
const Debug = Capability.lazy('Debug', () => import('./Debug'));
|
|
9
9
|
|
|
10
|
-
export const DebugPlugin =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
activatesOn: Events.Startup,
|
|
10
|
+
export const DebugPlugin = Plugin.define({ id: 'dxos.org/test/plugin-debug', name: 'Debug' }).pipe(
|
|
11
|
+
Plugin.addModule({
|
|
12
|
+
activatesOn: Common.ActivationEvent.Startup,
|
|
14
13
|
activate: Debug,
|
|
15
14
|
}),
|
|
16
|
-
|
|
15
|
+
Plugin.make,
|
|
16
|
+
);
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
5
7
|
import React, { useCallback } from 'react';
|
|
6
8
|
|
|
7
9
|
import { IconButton, List, ListItem } from '@dxos/react-ui';
|
|
8
10
|
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
+
import * as Common from '../../common';
|
|
12
|
+
import { Capability } from '../../core';
|
|
11
13
|
import { usePluginManager } from '../../react';
|
|
12
14
|
|
|
13
15
|
const Item = ({
|
|
@@ -30,7 +32,6 @@ const Item = ({
|
|
|
30
32
|
variant='ghost'
|
|
31
33
|
icon='ph--x--regular'
|
|
32
34
|
label='Remove'
|
|
33
|
-
size={5}
|
|
34
35
|
disabled={disabled}
|
|
35
36
|
onClick={handleRemove}
|
|
36
37
|
/>
|
|
@@ -41,6 +42,8 @@ const Item = ({
|
|
|
41
42
|
|
|
42
43
|
export const Main = () => {
|
|
43
44
|
const manager = usePluginManager();
|
|
45
|
+
const plugins = useAtomValue(manager.plugins);
|
|
46
|
+
const core = useAtomValue(manager.core);
|
|
44
47
|
|
|
45
48
|
const handleRemove = useCallback(
|
|
46
49
|
async (id: string) => {
|
|
@@ -51,11 +54,11 @@ export const Main = () => {
|
|
|
51
54
|
|
|
52
55
|
return (
|
|
53
56
|
<List itemSizes='one'>
|
|
54
|
-
{
|
|
57
|
+
{plugins.map((plugin) => (
|
|
55
58
|
<Item
|
|
56
59
|
key={plugin.meta.id}
|
|
57
60
|
id={plugin.meta.id}
|
|
58
|
-
disabled={
|
|
61
|
+
disabled={core.includes(plugin.meta.id)}
|
|
59
62
|
onRemove={handleRemove}
|
|
60
63
|
/>
|
|
61
64
|
))}
|
|
@@ -63,9 +66,15 @@ export const Main = () => {
|
|
|
63
66
|
);
|
|
64
67
|
};
|
|
65
68
|
|
|
66
|
-
export default () =>
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
export default Capability.makeModule(() =>
|
|
70
|
+
Effect.succeed(
|
|
71
|
+
Capability.contributes(
|
|
72
|
+
Common.Capability.ReactSurface,
|
|
73
|
+
Common.createSurface({
|
|
74
|
+
id: 'dxos.org/test/generator/main',
|
|
75
|
+
role: 'primary',
|
|
76
|
+
component: Main,
|
|
77
|
+
}),
|
|
78
|
+
),
|
|
79
|
+
),
|
|
80
|
+
);
|
|
@@ -2,36 +2,40 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
5
7
|
import React, { useCallback } from 'react';
|
|
6
8
|
|
|
7
9
|
import { Button } from '@dxos/react-ui';
|
|
8
10
|
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { useCapabilities, useIntentDispatcher, usePluginManager } from '../../react';
|
|
11
|
+
import * as Common from '../../common';
|
|
12
|
+
import { Capability, type Plugin } from '../../core';
|
|
13
|
+
import { useCapabilities, useOperationInvoker, usePluginManager } from '../../react';
|
|
13
14
|
|
|
14
|
-
import { Number,
|
|
15
|
+
import { Number, createAlertOperation, createPluginId } from './generator';
|
|
15
16
|
|
|
16
17
|
export const Toolbar = () => {
|
|
17
18
|
const manager = usePluginManager();
|
|
18
|
-
const
|
|
19
|
+
const plugins = useAtomValue(manager.plugins);
|
|
20
|
+
const { invokePromise } = useOperationInvoker();
|
|
19
21
|
|
|
20
22
|
const handleAdd = useCallback(async () => {
|
|
21
23
|
const id = createPluginId(Math.random().toString(16).substring(2, 8));
|
|
22
24
|
await manager.add(id);
|
|
23
25
|
}, [manager]);
|
|
24
26
|
|
|
25
|
-
const count = useCapabilities(Number).reduce((acc, curr) => acc + curr, 0);
|
|
27
|
+
const count = useCapabilities(Number).reduce((acc: number, curr: number) => acc + curr, 0);
|
|
26
28
|
|
|
27
|
-
const generatorPlugins =
|
|
29
|
+
const generatorPlugins = plugins.filter((plugin: Plugin.Plugin) =>
|
|
30
|
+
plugin.meta.id.startsWith('dxos.org/test/generator/'),
|
|
31
|
+
);
|
|
28
32
|
|
|
29
33
|
return (
|
|
30
34
|
<>
|
|
31
35
|
<Button onClick={handleAdd}>Add</Button>
|
|
32
36
|
<div className='flex items-center'>Count: {count}</div>
|
|
33
|
-
{generatorPlugins.map((plugin) => (
|
|
34
|
-
<Button key={plugin.meta.id} onClick={() =>
|
|
37
|
+
{generatorPlugins.map((plugin: Plugin.Plugin) => (
|
|
38
|
+
<Button key={plugin.meta.id} onClick={() => invokePromise(createAlertOperation(plugin.meta.id))}>
|
|
35
39
|
{plugin.meta.id.replace('dxos.org/test/generator/', '')}
|
|
36
40
|
</Button>
|
|
37
41
|
))}
|
|
@@ -39,9 +43,15 @@ export const Toolbar = () => {
|
|
|
39
43
|
);
|
|
40
44
|
};
|
|
41
45
|
|
|
42
|
-
export default () =>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
export default Capability.makeModule(() =>
|
|
47
|
+
Effect.succeed(
|
|
48
|
+
Capability.contributes(
|
|
49
|
+
Common.Capability.ReactSurface,
|
|
50
|
+
Common.createSurface({
|
|
51
|
+
id: 'dxos.org/test/generator/toolbar',
|
|
52
|
+
role: 'toolbar',
|
|
53
|
+
component: Toolbar,
|
|
54
|
+
}),
|
|
55
|
+
),
|
|
56
|
+
),
|
|
57
|
+
);
|
|
@@ -2,47 +2,47 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
5
6
|
import * as Schema from 'effect/Schema';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
-
import { contributes, defineCapability, defineEvent, defineModule, definePlugin } from '../../core';
|
|
9
|
-
import { type IntentSchema, createResolver } from '../../plugin-intent';
|
|
8
|
+
import { Operation, OperationResolver } from '@dxos/operation';
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
import * as Common from '../../common';
|
|
11
|
+
import { ActivationEvent, Capability, Plugin } from '../../core';
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const Number = Capability.make<number>('dxos.org/test/generator/number');
|
|
14
14
|
|
|
15
|
-
export const
|
|
15
|
+
export const CountEvent = ActivationEvent.make('dxos.org/test/generator/count');
|
|
16
16
|
|
|
17
|
-
export const
|
|
18
|
-
class Alert extends Schema.TaggedClass<Alert>()(`${createPluginId(id)}/action/alert`, {
|
|
19
|
-
input: Schema.Void,
|
|
20
|
-
output: Schema.Void,
|
|
21
|
-
}) {}
|
|
17
|
+
export const createPluginId = (id: string) => `dxos.org/test/generator/${id}`;
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
export const createAlertOperation = (id: string) =>
|
|
20
|
+
Operation.make({
|
|
21
|
+
meta: { key: `${createPluginId(id)}/operation/alert`, name: 'Alert' },
|
|
22
|
+
schema: { input: Schema.Void, output: Schema.Void },
|
|
23
|
+
});
|
|
25
24
|
|
|
26
25
|
export const createNumberPlugin = (id: string) => {
|
|
27
26
|
const number = Math.floor(Math.random() * 100);
|
|
27
|
+
const AlertOperation = createAlertOperation(id);
|
|
28
28
|
|
|
29
|
-
return
|
|
30
|
-
|
|
31
|
-
id:
|
|
29
|
+
return Plugin.define({ id, name: `Plugin ${id}` }).pipe(
|
|
30
|
+
Plugin.addModule({
|
|
31
|
+
id: 'Main',
|
|
32
32
|
activatesOn: CountEvent,
|
|
33
|
-
activate: () => contributes(Number, number),
|
|
33
|
+
activate: () => Effect.succeed(Capability.contributes(Number, number)),
|
|
34
34
|
}),
|
|
35
|
-
|
|
36
|
-
id: `${id}/intent-resolver`,
|
|
37
|
-
activatesOn: Events.SetupIntentResolver,
|
|
35
|
+
Common.Plugin.addOperationResolverModule({
|
|
38
36
|
activate: () =>
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
Effect.succeed(
|
|
38
|
+
Capability.contributes(Common.Capability.OperationResolver, [
|
|
39
|
+
OperationResolver.make({
|
|
40
|
+
operation: AlertOperation,
|
|
41
|
+
handler: () => Effect.sync(() => window.alert(JSON.stringify({ number }))),
|
|
42
|
+
}),
|
|
43
|
+
]),
|
|
45
44
|
),
|
|
46
45
|
}),
|
|
47
|
-
|
|
46
|
+
Plugin.make,
|
|
47
|
+
)();
|
|
48
48
|
};
|
|
@@ -2,21 +2,20 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
5
|
+
import * as Common from '../../common';
|
|
6
|
+
import { Capability, Plugin } from '../../core';
|
|
7
7
|
|
|
8
|
-
const Main = lazy(() => import('./Main'));
|
|
9
|
-
const Toolbar = lazy(() => import('./Toolbar'));
|
|
8
|
+
const Main = Capability.lazy('Main', () => import('./Main'));
|
|
9
|
+
const Toolbar = Capability.lazy('Toolbar', () => import('./Toolbar'));
|
|
10
10
|
|
|
11
|
-
export const GeneratorPlugin =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
activatesOn: Events.Startup,
|
|
11
|
+
export const GeneratorPlugin = Plugin.define({ id: 'dxos.org/test/generator', name: 'Generator' }).pipe(
|
|
12
|
+
Plugin.addModule({
|
|
13
|
+
activatesOn: Common.ActivationEvent.Startup,
|
|
15
14
|
activate: Main,
|
|
16
15
|
}),
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
activatesOn: Events.Startup,
|
|
16
|
+
Plugin.addModule({
|
|
17
|
+
activatesOn: Common.ActivationEvent.Startup,
|
|
20
18
|
activate: Toolbar,
|
|
21
19
|
}),
|
|
22
|
-
|
|
20
|
+
Plugin.make,
|
|
21
|
+
);
|