@aotui/runtime 1.0.0
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/dist/adapters/aotui-driven-source.d.ts +106 -0
- package/dist/adapters/aotui-driven-source.js +549 -0
- package/dist/adapters/aotui-driven-source.js.map +1 -0
- package/dist/adapters/bridge/index.d.ts +94 -0
- package/dist/adapters/bridge/index.js +199 -0
- package/dist/adapters/bridge/index.js.map +1 -0
- package/dist/adapters/index.d.ts +7 -0
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/session/index.d.ts +7 -0
- package/dist/adapters/session/index.js +2 -0
- package/dist/adapters/session/index.js.map +1 -0
- package/dist/adapters/session/session.d.ts +46 -0
- package/dist/adapters/session/session.js +76 -0
- package/dist/adapters/session/session.js.map +1 -0
- package/dist/adapters/session/types.d.ts +52 -0
- package/dist/adapters/session/types.js +7 -0
- package/dist/adapters/session/types.js.map +1 -0
- package/dist/adapters/system-instruction.d.ts +9 -0
- package/dist/adapters/system-instruction.js +434 -0
- package/dist/adapters/system-instruction.js.map +1 -0
- package/dist/benchmarks/dom-engine-comparison.d.ts +1 -0
- package/dist/benchmarks/dom-engine-comparison.js +84 -0
- package/dist/benchmarks/dom-engine-comparison.js.map +1 -0
- package/dist/benchmarks/shadow-dom-check.d.ts +1 -0
- package/dist/benchmarks/shadow-dom-check.js +44 -0
- package/dist/benchmarks/shadow-dom-check.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +314 -0
- package/dist/cli.js.map +1 -0
- package/dist/engine/app/config.d.ts +81 -0
- package/dist/engine/app/config.js +32 -0
- package/dist/engine/app/config.js.map +1 -0
- package/dist/engine/app/index.d.ts +14 -0
- package/dist/engine/app/index.js +33 -0
- package/dist/engine/app/index.js.map +1 -0
- package/dist/engine/app/manager.d.ts +194 -0
- package/dist/engine/app/manager.js +340 -0
- package/dist/engine/app/manager.js.map +1 -0
- package/dist/engine/app/registry.d.ts +138 -0
- package/dist/engine/app/registry.js +473 -0
- package/dist/engine/app/registry.js.map +1 -0
- package/dist/engine/app/worker-app-host.service.d.ts +62 -0
- package/dist/engine/app/worker-app-host.service.js +189 -0
- package/dist/engine/app/worker-app-host.service.js.map +1 -0
- package/dist/engine/app/worker-host.d.ts +139 -0
- package/dist/engine/app/worker-host.js +397 -0
- package/dist/engine/app/worker-host.js.map +1 -0
- package/dist/engine/app/worker-pool.d.ts +45 -0
- package/dist/engine/app/worker-pool.js +122 -0
- package/dist/engine/app/worker-pool.js.map +1 -0
- package/dist/engine/app/worker-sandbox.d.ts +152 -0
- package/dist/engine/app/worker-sandbox.js +290 -0
- package/dist/engine/app/worker-sandbox.js.map +1 -0
- package/dist/engine/core/desktop-logger.d.ts +69 -0
- package/dist/engine/core/desktop-logger.js +124 -0
- package/dist/engine/core/desktop-logger.js.map +1 -0
- package/dist/engine/core/desktop.d.ts +208 -0
- package/dist/engine/core/desktop.js +351 -0
- package/dist/engine/core/desktop.js.map +1 -0
- package/dist/engine/core/index.d.ts +12 -0
- package/dist/engine/core/index.js +28 -0
- package/dist/engine/core/index.js.map +1 -0
- package/dist/engine/core/llm-output-channel.d.ts +45 -0
- package/dist/engine/core/llm-output-channel.js +122 -0
- package/dist/engine/core/llm-output-channel.js.map +1 -0
- package/dist/engine/core/manager.d.ts +59 -0
- package/dist/engine/core/manager.js +131 -0
- package/dist/engine/core/manager.js.map +1 -0
- package/dist/engine/core/operation-log-buffer.d.ts +79 -0
- package/dist/engine/core/operation-log-buffer.js +108 -0
- package/dist/engine/core/operation-log-buffer.js.map +1 -0
- package/dist/engine/core/operation-log-formatter.d.ts +44 -0
- package/dist/engine/core/operation-log-formatter.js +180 -0
- package/dist/engine/core/operation-log-formatter.js.map +1 -0
- package/dist/engine/core/services/lock.service.d.ts +33 -0
- package/dist/engine/core/services/lock.service.js +99 -0
- package/dist/engine/core/services/lock.service.js.map +1 -0
- package/dist/engine/core/signal-bus.d.ts +84 -0
- package/dist/engine/core/signal-bus.js +160 -0
- package/dist/engine/core/signal-bus.js.map +1 -0
- package/dist/engine/core/signal-service.d.ts +42 -0
- package/dist/engine/core/signal-service.js +58 -0
- package/dist/engine/core/signal-service.js.map +1 -0
- package/dist/engine/system/dispatcher.d.ts +18 -0
- package/dist/engine/system/dispatcher.js +48 -0
- package/dist/engine/system/dispatcher.js.map +1 -0
- package/dist/engine/system/index.d.ts +10 -0
- package/dist/engine/system/index.js +20 -0
- package/dist/engine/system/index.js.map +1 -0
- package/dist/engine/system/operations/index.d.ts +26 -0
- package/dist/engine/system/operations/index.js +38 -0
- package/dist/engine/system/operations/index.js.map +1 -0
- package/dist/engine/system/operations/registry.d.ts +62 -0
- package/dist/engine/system/operations/registry.js +101 -0
- package/dist/engine/system/operations/registry.js.map +1 -0
- package/dist/engine/system/operations/system/close-app.d.ts +13 -0
- package/dist/engine/system/operations/system/close-app.js +43 -0
- package/dist/engine/system/operations/system/close-app.js.map +1 -0
- package/dist/engine/system/operations/system/dismount-view.d.ts +13 -0
- package/dist/engine/system/operations/system/dismount-view.js +48 -0
- package/dist/engine/system/operations/system/dismount-view.js.map +1 -0
- package/dist/engine/system/operations/system/index.d.ts +6 -0
- package/dist/engine/system/operations/system/index.js +7 -0
- package/dist/engine/system/operations/system/index.js.map +1 -0
- package/dist/engine/system/operations/system/open-app.d.ts +13 -0
- package/dist/engine/system/operations/system/open-app.js +43 -0
- package/dist/engine/system/operations/system/open-app.js.map +1 -0
- package/dist/engine/system/registry.d.ts +36 -0
- package/dist/engine/system/registry.js +101 -0
- package/dist/engine/system/registry.js.map +1 -0
- package/dist/engine/view/index.d.ts +13 -0
- package/dist/engine/view/index.js +20 -0
- package/dist/engine/view/index.js.map +1 -0
- package/dist/engine/view/manager.d.ts +42 -0
- package/dist/engine/view/manager.js +57 -0
- package/dist/engine/view/manager.js.map +1 -0
- package/dist/engine/view/snapshot/builder.d.ts +34 -0
- package/dist/engine/view/snapshot/builder.js +119 -0
- package/dist/engine/view/snapshot/builder.js.map +1 -0
- package/dist/engine/view/snapshot/formatter.d.ts +76 -0
- package/dist/engine/view/snapshot/formatter.js +297 -0
- package/dist/engine/view/snapshot/formatter.js.map +1 -0
- package/dist/engine/view/snapshot/index.d.ts +8 -0
- package/dist/engine/view/snapshot/index.js +8 -0
- package/dist/engine/view/snapshot/index.js.map +1 -0
- package/dist/engine/view/snapshot/templates.d.ts +41 -0
- package/dist/engine/view/snapshot/templates.js +317 -0
- package/dist/engine/view/snapshot/templates.js.map +1 -0
- package/dist/engine/view/transformer/__tests__/visitors/test-utils.d.ts +1 -0
- package/dist/engine/view/transformer/__tests__/visitors/test-utils.js +14 -0
- package/dist/engine/view/transformer/__tests__/visitors/test-utils.js.map +1 -0
- package/dist/engine/view/transformer/helpers.d.ts +19 -0
- package/dist/engine/view/transformer/helpers.js +32 -0
- package/dist/engine/view/transformer/helpers.js.map +1 -0
- package/dist/engine/view/transformer/index.d.ts +40 -0
- package/dist/engine/view/transformer/index.js +38 -0
- package/dist/engine/view/transformer/index.js.map +1 -0
- package/dist/engine/view/transformer/pure.d.ts +17 -0
- package/dist/engine/view/transformer/pure.js +124 -0
- package/dist/engine/view/transformer/pure.js.map +1 -0
- package/dist/engine/view/transformer/types.d.ts +31 -0
- package/dist/engine/view/transformer/types.js +16 -0
- package/dist/engine/view/transformer/types.js.map +1 -0
- package/dist/engine/view/transformer/visitors/application.visitor.d.ts +8 -0
- package/dist/engine/view/transformer/visitors/application.visitor.js +37 -0
- package/dist/engine/view/transformer/visitors/application.visitor.js.map +1 -0
- package/dist/engine/view/transformer/visitors/html.visitor.d.ts +8 -0
- package/dist/engine/view/transformer/visitors/html.visitor.js +161 -0
- package/dist/engine/view/transformer/visitors/html.visitor.js.map +1 -0
- package/dist/engine/view/transformer/visitors/index.d.ts +12 -0
- package/dist/engine/view/transformer/visitors/index.js +27 -0
- package/dist/engine/view/transformer/visitors/index.js.map +1 -0
- package/dist/engine/view/transformer/visitors/interface.d.ts +53 -0
- package/dist/engine/view/transformer/visitors/interface.js +8 -0
- package/dist/engine/view/transformer/visitors/interface.js.map +1 -0
- package/dist/engine/view/transformer/visitors/operation.visitor.d.ts +9 -0
- package/dist/engine/view/transformer/visitors/operation.visitor.js +122 -0
- package/dist/engine/view/transformer/visitors/operation.visitor.js.map +1 -0
- package/dist/engine/view/transformer/visitors/view-link.visitor.d.ts +15 -0
- package/dist/engine/view/transformer/visitors/view-link.visitor.js +98 -0
- package/dist/engine/view/transformer/visitors/view-link.visitor.js.map +1 -0
- package/dist/engine/view/transformer/visitors/view.visitor.d.ts +8 -0
- package/dist/engine/view/transformer/visitors/view.visitor.js +43 -0
- package/dist/engine/view/transformer/visitors/view.visitor.js.map +1 -0
- package/dist/engine/view/types.d.ts +70 -0
- package/dist/engine/view/types.js +17 -0
- package/dist/engine/view/types.js.map +1 -0
- package/dist/facades/facades.d.ts +40 -0
- package/dist/facades/facades.js +66 -0
- package/dist/facades/facades.js.map +1 -0
- package/dist/facades/index.d.ts +13 -0
- package/dist/facades/index.js +15 -0
- package/dist/facades/index.js.map +1 -0
- package/dist/factory/createKernel.d.ts +37 -0
- package/dist/factory/createKernel.js +42 -0
- package/dist/factory/createKernel.js.map +1 -0
- package/dist/factory/index.d.ts +9 -0
- package/dist/factory/index.js +10 -0
- package/dist/factory/index.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/browser.d.ts +20 -0
- package/dist/internal/browser.js +20 -0
- package/dist/internal/browser.js.map +1 -0
- package/dist/kernel/index.d.ts +120 -0
- package/dist/kernel/index.js +328 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/spi/app/aoapp.d.ts +86 -0
- package/dist/spi/app/aoapp.js +39 -0
- package/dist/spi/app/aoapp.js.map +1 -0
- package/dist/spi/app/app-config.interface.d.ts +9 -0
- package/dist/spi/app/app-config.interface.js +2 -0
- package/dist/spi/app/app-config.interface.js.map +1 -0
- package/dist/spi/app/app-factory.interface.d.ts +78 -0
- package/dist/spi/app/app-factory.interface.js +49 -0
- package/dist/spi/app/app-factory.interface.js.map +1 -0
- package/dist/spi/app/app-kernel.interface.d.ts +139 -0
- package/dist/spi/app/app-kernel.interface.js +2 -0
- package/dist/spi/app/app-kernel.interface.js.map +1 -0
- package/dist/spi/app/app.interface.d.ts +84 -0
- package/dist/spi/app/app.interface.js +8 -0
- package/dist/spi/app/app.interface.js.map +1 -0
- package/dist/spi/app/index.d.ts +26 -0
- package/dist/spi/app/index.js +13 -0
- package/dist/spi/app/index.js.map +1 -0
- package/dist/spi/app/public-types.d.ts +309 -0
- package/dist/spi/app/public-types.js +17 -0
- package/dist/spi/app/public-types.js.map +1 -0
- package/dist/spi/app/ref-exporter.interface.d.ts +23 -0
- package/dist/spi/app/ref-exporter.interface.js +10 -0
- package/dist/spi/app/ref-exporter.interface.js.map +1 -0
- package/dist/spi/app/store.interface.d.ts +45 -0
- package/dist/spi/app/store.interface.js +11 -0
- package/dist/spi/app/store.interface.js.map +1 -0
- package/dist/spi/app/view-context-core.interface.d.ts +50 -0
- package/dist/spi/app/view-context-core.interface.js +8 -0
- package/dist/spi/app/view-context-core.interface.js.map +1 -0
- package/dist/spi/app/view-context-ext.interface.d.ts +79 -0
- package/dist/spi/app/view-context-ext.interface.js +19 -0
- package/dist/spi/app/view-context-ext.interface.js.map +1 -0
- package/dist/spi/app/view-factory.interface.d.ts +46 -0
- package/dist/spi/app/view-factory.interface.js +2 -0
- package/dist/spi/app/view-factory.interface.js.map +1 -0
- package/dist/spi/app/view-link.types.d.ts +136 -0
- package/dist/spi/app/view-link.types.js +19 -0
- package/dist/spi/app/view-link.types.js.map +1 -0
- package/dist/spi/app/view-tree.interface.d.ts +254 -0
- package/dist/spi/app/view-tree.interface.js +13 -0
- package/dist/spi/app/view-tree.interface.js.map +1 -0
- package/dist/spi/app/view.interface.d.ts +122 -0
- package/dist/spi/app/view.interface.js +15 -0
- package/dist/spi/app/view.interface.js.map +1 -0
- package/dist/spi/bridge/bridge.interface.d.ts +118 -0
- package/dist/spi/bridge/bridge.interface.js +32 -0
- package/dist/spi/bridge/bridge.interface.js.map +1 -0
- package/dist/spi/bridge/index.d.ts +8 -0
- package/dist/spi/bridge/index.js +9 -0
- package/dist/spi/bridge/index.js.map +1 -0
- package/dist/spi/component-factory.interface.d.ts +123 -0
- package/dist/spi/component-factory.interface.js +15 -0
- package/dist/spi/component-factory.interface.js.map +1 -0
- package/dist/spi/config/define-config.d.ts +31 -0
- package/dist/spi/config/define-config.js +72 -0
- package/dist/spi/config/define-config.js.map +1 -0
- package/dist/spi/config/domains/bridge.config.d.ts +21 -0
- package/dist/spi/config/domains/bridge.config.js +10 -0
- package/dist/spi/config/domains/bridge.config.js.map +1 -0
- package/dist/spi/config/domains/lock.config.d.ts +20 -0
- package/dist/spi/config/domains/lock.config.js +10 -0
- package/dist/spi/config/domains/lock.config.js.map +1 -0
- package/dist/spi/config/domains/logger.config.d.ts +28 -0
- package/dist/spi/config/domains/logger.config.js +11 -0
- package/dist/spi/config/domains/logger.config.js.map +1 -0
- package/dist/spi/config/domains/snapshot.config.d.ts +20 -0
- package/dist/spi/config/domains/snapshot.config.js +10 -0
- package/dist/spi/config/domains/snapshot.config.js.map +1 -0
- package/dist/spi/config/domains/transform.config.d.ts +28 -0
- package/dist/spi/config/domains/transform.config.js +11 -0
- package/dist/spi/config/domains/transform.config.js.map +1 -0
- package/dist/spi/config/domains/worker.config.d.ts +54 -0
- package/dist/spi/config/domains/worker.config.js +15 -0
- package/dist/spi/config/domains/worker.config.js.map +1 -0
- package/dist/spi/config/index.d.ts +16 -0
- package/dist/spi/config/index.js +18 -0
- package/dist/spi/config/index.js.map +1 -0
- package/dist/spi/config/types.d.ts +38 -0
- package/dist/spi/config/types.js +7 -0
- package/dist/spi/config/types.js.map +1 -0
- package/dist/spi/config/validate.d.ts +12 -0
- package/dist/spi/config/validate.js +90 -0
- package/dist/spi/config/validate.js.map +1 -0
- package/dist/spi/core/errors.d.ts +117 -0
- package/dist/spi/core/errors.js +233 -0
- package/dist/spi/core/errors.js.map +1 -0
- package/dist/spi/core/id-factory.d.ts +85 -0
- package/dist/spi/core/id-factory.js +119 -0
- package/dist/spi/core/id-factory.js.map +1 -0
- package/dist/spi/core/index.d.ts +21 -0
- package/dist/spi/core/index.js +25 -0
- package/dist/spi/core/index.js.map +1 -0
- package/dist/spi/core/llm-output.d.ts +74 -0
- package/dist/spi/core/llm-output.js +12 -0
- package/dist/spi/core/llm-output.js.map +1 -0
- package/dist/spi/core/operation-log.d.ts +133 -0
- package/dist/spi/core/operation-log.js +13 -0
- package/dist/spi/core/operation-log.js.map +1 -0
- package/dist/spi/core/operations.d.ts +198 -0
- package/dist/spi/core/operations.js +13 -0
- package/dist/spi/core/operations.js.map +1 -0
- package/dist/spi/core/signals.d.ts +16 -0
- package/dist/spi/core/signals.js +7 -0
- package/dist/spi/core/signals.js.map +1 -0
- package/dist/spi/core/snapshot.d.ts +77 -0
- package/dist/spi/core/snapshot.js +18 -0
- package/dist/spi/core/snapshot.js.map +1 -0
- package/dist/spi/core/tool-call.d.ts +60 -0
- package/dist/spi/core/tool-call.js +10 -0
- package/dist/spi/core/tool-call.js.map +1 -0
- package/dist/spi/core/types.d.ts +68 -0
- package/dist/spi/core/types.js +8 -0
- package/dist/spi/core/types.js.map +1 -0
- package/dist/spi/index.d.ts +31 -0
- package/dist/spi/index.js +57 -0
- package/dist/spi/index.js.map +1 -0
- package/dist/spi/runtime/app-host.interface.d.ts +142 -0
- package/dist/spi/runtime/app-host.interface.js +10 -0
- package/dist/spi/runtime/app-host.interface.js.map +1 -0
- package/dist/spi/runtime/app-installer.interface.d.ts +33 -0
- package/dist/spi/runtime/app-installer.interface.js +2 -0
- package/dist/spi/runtime/app-installer.interface.js.map +1 -0
- package/dist/spi/runtime/context.interface.d.ts +10 -0
- package/dist/spi/runtime/context.interface.js +2 -0
- package/dist/spi/runtime/context.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-context.interface.d.ts +45 -0
- package/dist/spi/runtime/desktop-context.interface.js +10 -0
- package/dist/spi/runtime/desktop-context.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-dom.interface.d.ts +48 -0
- package/dist/spi/runtime/desktop-dom.interface.js +13 -0
- package/dist/spi/runtime/desktop-dom.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-lifecycle.interface.d.ts +23 -0
- package/dist/spi/runtime/desktop-lifecycle.interface.js +2 -0
- package/dist/spi/runtime/desktop-lifecycle.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-lock.interface.d.ts +50 -0
- package/dist/spi/runtime/desktop-lock.interface.js +2 -0
- package/dist/spi/runtime/desktop-lock.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-manager.interface.d.ts +22 -0
- package/dist/spi/runtime/desktop-manager.interface.js +13 -0
- package/dist/spi/runtime/desktop-manager.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-repository.interface.d.ts +8 -0
- package/dist/spi/runtime/desktop-repository.interface.js +2 -0
- package/dist/spi/runtime/desktop-repository.interface.js.map +1 -0
- package/dist/spi/runtime/desktop-state-accessor.interface.d.ts +22 -0
- package/dist/spi/runtime/desktop-state-accessor.interface.js +2 -0
- package/dist/spi/runtime/desktop-state-accessor.interface.js.map +1 -0
- package/dist/spi/runtime/dispatcher.interface.d.ts +34 -0
- package/dist/spi/runtime/dispatcher.interface.js +10 -0
- package/dist/spi/runtime/dispatcher.interface.js.map +1 -0
- package/dist/spi/runtime/index.d.ts +28 -0
- package/dist/spi/runtime/index.js +11 -0
- package/dist/spi/runtime/index.js.map +1 -0
- package/dist/spi/runtime/kernel.interface.d.ts +221 -0
- package/dist/spi/runtime/kernel.interface.js +7 -0
- package/dist/spi/runtime/kernel.interface.js.map +1 -0
- package/dist/spi/runtime/llm-output-channel.interface.d.ts +81 -0
- package/dist/spi/runtime/llm-output-channel.interface.js +12 -0
- package/dist/spi/runtime/llm-output-channel.interface.js.map +1 -0
- package/dist/spi/runtime/signal.interface.d.ts +80 -0
- package/dist/spi/runtime/signal.interface.js +9 -0
- package/dist/spi/runtime/signal.interface.js.map +1 -0
- package/dist/spi/runtime/snapshot.interface.d.ts +126 -0
- package/dist/spi/runtime/snapshot.interface.js +14 -0
- package/dist/spi/runtime/snapshot.interface.js.map +1 -0
- package/dist/spi/runtime/transformer.interface.d.ts +47 -0
- package/dist/spi/runtime/transformer.interface.js +10 -0
- package/dist/spi/runtime/transformer.interface.js.map +1 -0
- package/dist/spi/runtime/worker-message.interface.d.ts +80 -0
- package/dist/spi/runtime/worker-message.interface.js +49 -0
- package/dist/spi/runtime/worker-message.interface.js.map +1 -0
- package/dist/spi/runtime/worker-runtime.interface.d.ts +177 -0
- package/dist/spi/runtime/worker-runtime.interface.js +14 -0
- package/dist/spi/runtime/worker-runtime.interface.js.map +1 -0
- package/dist/spi/worker-protocol/index.d.ts +26 -0
- package/dist/spi/worker-protocol/index.js +29 -0
- package/dist/spi/worker-protocol/index.js.map +1 -0
- package/dist/spi/worker-protocol/messages.d.ts +257 -0
- package/dist/spi/worker-protocol/messages.js +42 -0
- package/dist/spi/worker-protocol/messages.js.map +1 -0
- package/dist/spi/worker-protocol/types.d.ts +12 -0
- package/dist/spi/worker-protocol/types.js +16 -0
- package/dist/spi/worker-protocol/types.js.map +1 -0
- package/dist/worker-runtime/app-kernel/AppKernel.d.ts +178 -0
- package/dist/worker-runtime/app-kernel/AppKernel.js +622 -0
- package/dist/worker-runtime/app-kernel/AppKernel.js.map +1 -0
- package/dist/worker-runtime/app-kernel/index.d.ts +23 -0
- package/dist/worker-runtime/app-kernel/index.js +23 -0
- package/dist/worker-runtime/app-kernel/index.js.map +1 -0
- package/dist/worker-runtime/app-kernel/view-registry.d.ts +85 -0
- package/dist/worker-runtime/app-kernel/view-registry.js +119 -0
- package/dist/worker-runtime/app-kernel/view-registry.js.map +1 -0
- package/dist/worker-runtime/app-kernel/view-tree.d.ts +222 -0
- package/dist/worker-runtime/app-kernel/view-tree.js +682 -0
- package/dist/worker-runtime/app-kernel/view-tree.js.map +1 -0
- package/dist/worker-runtime/index.d.ts +16 -0
- package/dist/worker-runtime/index.js +731 -0
- package/dist/worker-runtime/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppManager - App 安装与生命周期管理
|
|
3
|
+
*
|
|
4
|
+
* [Worker-Only] 重构为使用 WorkerSandbox 实现 App 隔离
|
|
5
|
+
*
|
|
6
|
+
* 职责:
|
|
7
|
+
* - App 安装 (Worker 模式)
|
|
8
|
+
* - App 生命周期 (open/close/pause/resume)
|
|
9
|
+
* - App 状态查询
|
|
10
|
+
* - 管理 WorkerSandbox 集合
|
|
11
|
+
*
|
|
12
|
+
* 设计说明:
|
|
13
|
+
* - 每个 App 在独立的 Worker Thread 中运行
|
|
14
|
+
* - 通过 mirrorDOM 实现主线程 DOM 同步
|
|
15
|
+
* - AppManager 持有 Desktop 引用用于日志和信号
|
|
16
|
+
*/
|
|
17
|
+
import type { AppID, AppState, IDesktop } from '../../spi/index.js';
|
|
18
|
+
import { WorkerSandbox } from './worker-sandbox.js';
|
|
19
|
+
/**
|
|
20
|
+
* 已安装的 App 信息
|
|
21
|
+
*/
|
|
22
|
+
export interface InstalledApp {
|
|
23
|
+
appId: AppID;
|
|
24
|
+
name?: string;
|
|
25
|
+
/** [RFC-013] App 描述 - 告诉 Agent 什么时候使用此 App */
|
|
26
|
+
description?: string;
|
|
27
|
+
/** App 是什么 (用于 Desktop State 展示) */
|
|
28
|
+
whatItIs?: string;
|
|
29
|
+
/** 什么时候用 (用于 Desktop State 展示) */
|
|
30
|
+
whenToUse?: string;
|
|
31
|
+
html: string;
|
|
32
|
+
/**
|
|
33
|
+
* [RFC-014] App 状态
|
|
34
|
+
* - 'pending': 已注册但未启动 (懒加载)
|
|
35
|
+
* - 'running': 正在运行
|
|
36
|
+
* - 'closed': 已关闭
|
|
37
|
+
* - 'collapsed': 已折叠
|
|
38
|
+
*/
|
|
39
|
+
status: 'pending' | 'running' | 'closed' | 'collapsed';
|
|
40
|
+
installedAt: number;
|
|
41
|
+
/** [RFC-014] 懒加载: 模块路径 */
|
|
42
|
+
modulePath?: string;
|
|
43
|
+
/** [RFC-014] 懒加载: Worker 脚本路径 */
|
|
44
|
+
workerScript?: string;
|
|
45
|
+
/** [RFC-014] 消息角色 */
|
|
46
|
+
promptRole?: 'user' | 'assistant';
|
|
47
|
+
}
|
|
48
|
+
export interface AppManagerOptions {
|
|
49
|
+
/** App 安装回调 */
|
|
50
|
+
onAppInstalled?: (appId: AppID) => void;
|
|
51
|
+
/** App 移除回调 */
|
|
52
|
+
onAppRemoved?: (appId: AppID) => void;
|
|
53
|
+
}
|
|
54
|
+
export declare class AppManager {
|
|
55
|
+
/** [Worker-Only] WorkerSandbox 集合 - 核心隔离机制 */
|
|
56
|
+
private workers;
|
|
57
|
+
/** 已安装 App 元数据 (用于序列化和状态查询) */
|
|
58
|
+
private installedApps;
|
|
59
|
+
/** App ID 计数器 */
|
|
60
|
+
private appIdCounter;
|
|
61
|
+
/** 配置选项 */
|
|
62
|
+
private options;
|
|
63
|
+
/** Desktop 引用 (用于日志和信号) */
|
|
64
|
+
private readonly desktop;
|
|
65
|
+
constructor(desktop: IDesktop, options?: AppManagerOptions);
|
|
66
|
+
/**
|
|
67
|
+
* [Worker-Only] 安装 App
|
|
68
|
+
*
|
|
69
|
+
* App 运行在独立的 Worker Thread 中,通过 IPC 通信
|
|
70
|
+
*
|
|
71
|
+
* [C1 Fix] workerScriptPath 现在是可选的,默认使用 Runtime 内置的 worker-runtime
|
|
72
|
+
*/
|
|
73
|
+
install(appModulePath: string, options?: {
|
|
74
|
+
workerScriptPath?: string;
|
|
75
|
+
appId?: AppID;
|
|
76
|
+
name?: string;
|
|
77
|
+
/** [RFC-013] App description for Agent */
|
|
78
|
+
description?: string;
|
|
79
|
+
/** App 是什么 */
|
|
80
|
+
whatItIs?: string;
|
|
81
|
+
/** 什么时候用 */
|
|
82
|
+
whenToUse?: string;
|
|
83
|
+
config?: import('../../spi/app/app-config.interface.js').AppLaunchConfig;
|
|
84
|
+
runtimeConfig?: import('../../spi/config/index.js').RuntimeConfig;
|
|
85
|
+
/** [RFC-014] App Role */
|
|
86
|
+
promptRole?: 'user' | 'assistant';
|
|
87
|
+
}): Promise<AppID>;
|
|
88
|
+
/**
|
|
89
|
+
* [RFC-014] 注册待启动 App (懒加载)
|
|
90
|
+
*
|
|
91
|
+
* App 信息写入 installedApps,但不启动 Worker。
|
|
92
|
+
* Agent 可以在 Snapshot 中看到这些 App,并通过 open_app 启动。
|
|
93
|
+
*/
|
|
94
|
+
registerPendingApp(options: {
|
|
95
|
+
appId?: AppID;
|
|
96
|
+
name?: string;
|
|
97
|
+
description?: string;
|
|
98
|
+
whatItIs?: string;
|
|
99
|
+
whenToUse?: string;
|
|
100
|
+
modulePath: string;
|
|
101
|
+
workerScriptPath?: string;
|
|
102
|
+
promptRole?: 'user' | 'assistant';
|
|
103
|
+
}): AppID;
|
|
104
|
+
/**
|
|
105
|
+
* [RFC-014] 启动待启动 App
|
|
106
|
+
*
|
|
107
|
+
* 将 pending 状态的 App 真正安装并启动 Worker
|
|
108
|
+
*/
|
|
109
|
+
startPendingApp(appId: AppID): Promise<boolean>;
|
|
110
|
+
/**
|
|
111
|
+
* 暂停所有 App
|
|
112
|
+
*/
|
|
113
|
+
pauseAll(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* 恢复所有 App
|
|
116
|
+
*/
|
|
117
|
+
resumeAll(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* 关闭所有 App
|
|
120
|
+
*/
|
|
121
|
+
closeAll(): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* [RFC-015] 删除所有 App
|
|
124
|
+
*
|
|
125
|
+
* 1. 触发每个 App 的 onDelete (数据清理)
|
|
126
|
+
* 2. 关闭并销毁 Worker
|
|
127
|
+
*/
|
|
128
|
+
deleteAll(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* 打开指定 App (显示已关闭/折叠的 App)
|
|
131
|
+
*/
|
|
132
|
+
openApp(appId: AppID): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* 关闭指定 App (隐藏 UI)
|
|
135
|
+
*/
|
|
136
|
+
closeApp(appId: AppID): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* 折叠指定 App
|
|
139
|
+
*/
|
|
140
|
+
collapseApp(appId: AppID): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* 显示指定 App (从折叠状态恢复)
|
|
143
|
+
*/
|
|
144
|
+
showApp(appId: AppID): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* 获取所有 Workers
|
|
147
|
+
*/
|
|
148
|
+
getAllWorkers(): Map<AppID, WorkerSandbox>;
|
|
149
|
+
/**
|
|
150
|
+
* 获取所有已安装 App
|
|
151
|
+
*/
|
|
152
|
+
getInstalledApps(): InstalledApp[];
|
|
153
|
+
/**
|
|
154
|
+
* 获取动态 App ID 列表
|
|
155
|
+
*/
|
|
156
|
+
getDynamicAppIds(): AppID[];
|
|
157
|
+
/**
|
|
158
|
+
* 获取 App 状态列表
|
|
159
|
+
*/
|
|
160
|
+
getAppStates(): AppState[];
|
|
161
|
+
/**
|
|
162
|
+
* 获取 WorkerSandbox
|
|
163
|
+
*/
|
|
164
|
+
getWorkerSandbox(appId: AppID): WorkerSandbox | undefined;
|
|
165
|
+
/**
|
|
166
|
+
* 检查 App 是否运行在 Worker 模式
|
|
167
|
+
*
|
|
168
|
+
* 在 Worker-Only 架构下,始终返回 true
|
|
169
|
+
*/
|
|
170
|
+
isWorkerMode(appId: AppID): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* [RFC-011] Broadcast LLM text to all Workers
|
|
173
|
+
* [RFC-020] Now accepts structured payload { reasoning?, content? }
|
|
174
|
+
*
|
|
175
|
+
* Called by Desktop when LLMOutputChannelService receives new text.
|
|
176
|
+
*/
|
|
177
|
+
broadcastLLMOutput(payload: {
|
|
178
|
+
reasoning?: string;
|
|
179
|
+
content?: string;
|
|
180
|
+
}, type: 'complete', meta?: {
|
|
181
|
+
model?: string;
|
|
182
|
+
providerId?: string;
|
|
183
|
+
modelId?: string;
|
|
184
|
+
usage?: {
|
|
185
|
+
promptTokens: number;
|
|
186
|
+
completionTokens: number;
|
|
187
|
+
totalTokens: number;
|
|
188
|
+
};
|
|
189
|
+
}): void;
|
|
190
|
+
/**
|
|
191
|
+
* 清理所有 Worker
|
|
192
|
+
*/
|
|
193
|
+
cleanup(): void;
|
|
194
|
+
}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AppManager - App 安装与生命周期管理
|
|
3
|
+
*
|
|
4
|
+
* [Worker-Only] 重构为使用 WorkerSandbox 实现 App 隔离
|
|
5
|
+
*
|
|
6
|
+
* 职责:
|
|
7
|
+
* - App 安装 (Worker 模式)
|
|
8
|
+
* - App 生命周期 (open/close/pause/resume)
|
|
9
|
+
* - App 状态查询
|
|
10
|
+
* - 管理 WorkerSandbox 集合
|
|
11
|
+
*
|
|
12
|
+
* 设计说明:
|
|
13
|
+
* - 每个 App 在独立的 Worker Thread 中运行
|
|
14
|
+
* - 通过 mirrorDOM 实现主线程 DOM 同步
|
|
15
|
+
* - AppManager 持有 Desktop 引用用于日志和信号
|
|
16
|
+
*/
|
|
17
|
+
import { createAppId } from '../../spi/index.js';
|
|
18
|
+
import { WorkerSandbox } from './worker-sandbox.js';
|
|
19
|
+
export class AppManager {
|
|
20
|
+
// ════════════════════════════════════════════════════════════════
|
|
21
|
+
// Private State
|
|
22
|
+
// ════════════════════════════════════════════════════════════════
|
|
23
|
+
/** [Worker-Only] WorkerSandbox 集合 - 核心隔离机制 */
|
|
24
|
+
workers = new Map();
|
|
25
|
+
/** 已安装 App 元数据 (用于序列化和状态查询) */
|
|
26
|
+
installedApps = new Map();
|
|
27
|
+
/** App ID 计数器 */
|
|
28
|
+
appIdCounter = 0;
|
|
29
|
+
/** 配置选项 */
|
|
30
|
+
options;
|
|
31
|
+
/** Desktop 引用 (用于日志和信号) */
|
|
32
|
+
desktop;
|
|
33
|
+
// ════════════════════════════════════════════════════════════════
|
|
34
|
+
// Constructor
|
|
35
|
+
// ════════════════════════════════════════════════════════════════
|
|
36
|
+
constructor(desktop, options) {
|
|
37
|
+
this.desktop = desktop;
|
|
38
|
+
this.options = options || {};
|
|
39
|
+
}
|
|
40
|
+
// ════════════════════════════════════════════════════════════════
|
|
41
|
+
// 安装方法
|
|
42
|
+
// ════════════════════════════════════════════════════════════════
|
|
43
|
+
/**
|
|
44
|
+
* [Worker-Only] 安装 App
|
|
45
|
+
*
|
|
46
|
+
* App 运行在独立的 Worker Thread 中,通过 IPC 通信
|
|
47
|
+
*
|
|
48
|
+
* [C1 Fix] workerScriptPath 现在是可选的,默认使用 Runtime 内置的 worker-runtime
|
|
49
|
+
*/
|
|
50
|
+
async install(appModulePath, options) {
|
|
51
|
+
// 分配 ID
|
|
52
|
+
const appId = options?.appId ?? createAppId(this.appIdCounter++);
|
|
53
|
+
// 创建 WorkerSandbox
|
|
54
|
+
const workerSandbox = new WorkerSandbox({
|
|
55
|
+
appId,
|
|
56
|
+
desktopId: this.desktop.id,
|
|
57
|
+
name: options?.name,
|
|
58
|
+
appModulePath,
|
|
59
|
+
workerScriptPath: options?.workerScriptPath,
|
|
60
|
+
config: options?.config, // ✨ 传递配置
|
|
61
|
+
runtimeConfig: options?.runtimeConfig, // [RFC-005] Pass configuration
|
|
62
|
+
});
|
|
63
|
+
// 设置更新回调
|
|
64
|
+
workerSandbox.onUpdateRequest = () => {
|
|
65
|
+
this.desktop.emitSignal('manual_refresh');
|
|
66
|
+
};
|
|
67
|
+
// 启动 Worker 并打开 App
|
|
68
|
+
await workerSandbox.installDynamic();
|
|
69
|
+
// [RFC-001 Phase 2] Removed Mirror DOM initialization and initial HTML push
|
|
70
|
+
// Worker now uses Snapshot Fragment protocol exclusively.
|
|
71
|
+
// 注册
|
|
72
|
+
this.workers.set(appId, workerSandbox);
|
|
73
|
+
// 记录元数据
|
|
74
|
+
this.installedApps.set(appId, {
|
|
75
|
+
appId,
|
|
76
|
+
name: options?.name,
|
|
77
|
+
description: options?.description, // [RFC-013]
|
|
78
|
+
whatItIs: options?.whatItIs,
|
|
79
|
+
whenToUse: options?.whenToUse,
|
|
80
|
+
html: '', // 初始为空,之后通过 mirrorDOM 同步
|
|
81
|
+
status: 'running',
|
|
82
|
+
installedAt: Date.now(),
|
|
83
|
+
promptRole: options?.promptRole,
|
|
84
|
+
});
|
|
85
|
+
this.desktop.logSystem(`Installed Worker app: ${appId}`);
|
|
86
|
+
this.desktop.emitSignal('app_opened');
|
|
87
|
+
this.options.onAppInstalled?.(appId);
|
|
88
|
+
return appId;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* [RFC-014] 注册待启动 App (懒加载)
|
|
92
|
+
*
|
|
93
|
+
* App 信息写入 installedApps,但不启动 Worker。
|
|
94
|
+
* Agent 可以在 Snapshot 中看到这些 App,并通过 open_app 启动。
|
|
95
|
+
*/
|
|
96
|
+
registerPendingApp(options) {
|
|
97
|
+
const appId = options.appId ?? createAppId(this.appIdCounter++);
|
|
98
|
+
this.installedApps.set(appId, {
|
|
99
|
+
appId,
|
|
100
|
+
name: options.name,
|
|
101
|
+
description: options.description,
|
|
102
|
+
whatItIs: options.whatItIs,
|
|
103
|
+
whenToUse: options.whenToUse,
|
|
104
|
+
html: '',
|
|
105
|
+
status: 'pending',
|
|
106
|
+
installedAt: Date.now(),
|
|
107
|
+
modulePath: options.modulePath,
|
|
108
|
+
workerScript: options.workerScriptPath,
|
|
109
|
+
promptRole: options.promptRole,
|
|
110
|
+
});
|
|
111
|
+
this.desktop.logSystem(`Registered pending app: ${appId} (${options.name ?? 'unnamed'})`);
|
|
112
|
+
return appId;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* [RFC-014] 启动待启动 App
|
|
116
|
+
*
|
|
117
|
+
* 将 pending 状态的 App 真正安装并启动 Worker
|
|
118
|
+
*/
|
|
119
|
+
async startPendingApp(appId) {
|
|
120
|
+
const app = this.installedApps.get(appId);
|
|
121
|
+
if (!app) {
|
|
122
|
+
console.warn(`[AppManager] Cannot start ${appId}: not found`);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
if (app.status !== 'pending') {
|
|
126
|
+
console.warn(`[AppManager] App ${appId} is not pending (status: ${app.status})`);
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
if (!app.modulePath) {
|
|
130
|
+
console.error(`[AppManager] Cannot start ${appId}: missing modulePath`);
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
// 真正安装 Worker
|
|
134
|
+
await this.install(app.modulePath, {
|
|
135
|
+
appId,
|
|
136
|
+
name: app.name,
|
|
137
|
+
description: app.description,
|
|
138
|
+
workerScriptPath: app.workerScript,
|
|
139
|
+
promptRole: app.promptRole,
|
|
140
|
+
});
|
|
141
|
+
this.desktop.logSystem(`Started pending app: ${appId}`);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
// ════════════════════════════════════════════════════════════════
|
|
145
|
+
// 生命周期方法
|
|
146
|
+
// ════════════════════════════════════════════════════════════════
|
|
147
|
+
/**
|
|
148
|
+
* 暂停所有 App
|
|
149
|
+
*/
|
|
150
|
+
async pauseAll() {
|
|
151
|
+
for (const [appId, worker] of this.workers) {
|
|
152
|
+
if (worker.status === 'running') {
|
|
153
|
+
await worker.pause();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 恢复所有 App
|
|
159
|
+
*/
|
|
160
|
+
async resumeAll() {
|
|
161
|
+
for (const [appId, worker] of this.workers) {
|
|
162
|
+
if (worker.status === 'paused') {
|
|
163
|
+
await worker.resume();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 关闭所有 App
|
|
169
|
+
*/
|
|
170
|
+
async closeAll() {
|
|
171
|
+
for (const [appId, worker] of this.workers) {
|
|
172
|
+
await worker.close();
|
|
173
|
+
worker.dispose();
|
|
174
|
+
this.options.onAppRemoved?.(appId);
|
|
175
|
+
}
|
|
176
|
+
this.workers.clear();
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* [RFC-015] 删除所有 App
|
|
180
|
+
*
|
|
181
|
+
* 1. 触发每个 App 的 onDelete (数据清理)
|
|
182
|
+
* 2. 关闭并销毁 Worker
|
|
183
|
+
*/
|
|
184
|
+
async deleteAll() {
|
|
185
|
+
for (const [appId, worker] of this.workers) {
|
|
186
|
+
await worker.delete();
|
|
187
|
+
worker.dispose();
|
|
188
|
+
this.options.onAppRemoved?.(appId);
|
|
189
|
+
}
|
|
190
|
+
this.workers.clear();
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* 打开指定 App (显示已关闭/折叠的 App)
|
|
194
|
+
*/
|
|
195
|
+
async openApp(appId) {
|
|
196
|
+
// [RFC-014] Check if app is pending and start it
|
|
197
|
+
const app = this.installedApps.get(appId);
|
|
198
|
+
if (app?.status === 'pending') {
|
|
199
|
+
const started = await this.startPendingApp(appId);
|
|
200
|
+
if (!started) {
|
|
201
|
+
console.warn(`Failed to start pending app ${appId}`);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// After start, worker should exist and status should be running
|
|
205
|
+
}
|
|
206
|
+
const worker = this.workers.get(appId);
|
|
207
|
+
if (!worker) {
|
|
208
|
+
console.warn(`App ${appId} not found.`);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
// [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
|
|
212
|
+
if (app)
|
|
213
|
+
app.status = 'running';
|
|
214
|
+
this.desktop.logSystem(`Opened application: ${appId}`);
|
|
215
|
+
this.desktop.logAppOperation(appId, 'Application opened.');
|
|
216
|
+
this.desktop.emitSignal('app_opened');
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* 关闭指定 App (隐藏 UI)
|
|
220
|
+
*/
|
|
221
|
+
async closeApp(appId) {
|
|
222
|
+
const worker = this.workers.get(appId);
|
|
223
|
+
if (!worker)
|
|
224
|
+
return;
|
|
225
|
+
// [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
|
|
226
|
+
const app = this.installedApps.get(appId);
|
|
227
|
+
if (app)
|
|
228
|
+
app.status = 'closed';
|
|
229
|
+
this.desktop.logSystem(`Closed application: ${appId}`);
|
|
230
|
+
this.desktop.logAppOperation(appId, 'Application closed.');
|
|
231
|
+
this.desktop.emitSignal('dom_mutation');
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* 折叠指定 App
|
|
235
|
+
*/
|
|
236
|
+
async collapseApp(appId) {
|
|
237
|
+
const worker = this.workers.get(appId);
|
|
238
|
+
if (!worker)
|
|
239
|
+
return;
|
|
240
|
+
// [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
|
|
241
|
+
const app = this.installedApps.get(appId);
|
|
242
|
+
if (app)
|
|
243
|
+
app.status = 'collapsed';
|
|
244
|
+
this.desktop.logAppOperation(appId, 'Application collapsed.');
|
|
245
|
+
this.desktop.emitSignal('dom_mutation');
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* 显示指定 App (从折叠状态恢复)
|
|
249
|
+
*/
|
|
250
|
+
async showApp(appId) {
|
|
251
|
+
const worker = this.workers.get(appId);
|
|
252
|
+
if (!worker)
|
|
253
|
+
return;
|
|
254
|
+
// [RFC-001 Phase 2] UI logic should be handled by Frontend/Product layer based on app status
|
|
255
|
+
const app = this.installedApps.get(appId);
|
|
256
|
+
if (app)
|
|
257
|
+
app.status = 'running';
|
|
258
|
+
this.desktop.logAppOperation(appId, 'Application shown.');
|
|
259
|
+
this.desktop.emitSignal('dom_mutation');
|
|
260
|
+
}
|
|
261
|
+
// ════════════════════════════════════════════════════════════════
|
|
262
|
+
// 查询方法
|
|
263
|
+
// ════════════════════════════════════════════════════════════════
|
|
264
|
+
/**
|
|
265
|
+
* 获取所有 Workers
|
|
266
|
+
*/
|
|
267
|
+
getAllWorkers() {
|
|
268
|
+
return this.workers;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* 获取所有已安装 App
|
|
272
|
+
*/
|
|
273
|
+
getInstalledApps() {
|
|
274
|
+
return Array.from(this.installedApps.values());
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* 获取动态 App ID 列表
|
|
278
|
+
*/
|
|
279
|
+
getDynamicAppIds() {
|
|
280
|
+
return Array.from(this.workers.keys());
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* 获取 App 状态列表
|
|
284
|
+
*/
|
|
285
|
+
getAppStates() {
|
|
286
|
+
// [RFC-001 Phase 2] HTML is no longer available in AppManager (Headless)
|
|
287
|
+
// Clients should subscribe to Snapshots.
|
|
288
|
+
return Array.from(this.installedApps.entries()).map(([appId, app]) => ({
|
|
289
|
+
appId,
|
|
290
|
+
name: app.name,
|
|
291
|
+
html: app.html,
|
|
292
|
+
status: app.status,
|
|
293
|
+
installedAt: app.installedAt
|
|
294
|
+
}));
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* 获取 WorkerSandbox
|
|
298
|
+
*/
|
|
299
|
+
getWorkerSandbox(appId) {
|
|
300
|
+
return this.workers.get(appId);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* 检查 App 是否运行在 Worker 模式
|
|
304
|
+
*
|
|
305
|
+
* 在 Worker-Only 架构下,始终返回 true
|
|
306
|
+
*/
|
|
307
|
+
isWorkerMode(appId) {
|
|
308
|
+
return this.workers.has(appId);
|
|
309
|
+
}
|
|
310
|
+
// ════════════════════════════════════════════════════════════════
|
|
311
|
+
// [RFC-011] LLM Output Channel
|
|
312
|
+
// ════════════════════════════════════════════════════════════════
|
|
313
|
+
/**
|
|
314
|
+
* [RFC-011] Broadcast LLM text to all Workers
|
|
315
|
+
* [RFC-020] Now accepts structured payload { reasoning?, content? }
|
|
316
|
+
*
|
|
317
|
+
* Called by Desktop when LLMOutputChannelService receives new text.
|
|
318
|
+
*/
|
|
319
|
+
broadcastLLMOutput(payload, type, meta) {
|
|
320
|
+
console.log(`[AppManager] Broadcasting LLM text to ${this.workers.size} workers`);
|
|
321
|
+
for (const [appId, worker] of this.workers) {
|
|
322
|
+
worker.pushLLMOutput(payload, type, meta);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// ════════════════════════════════════════════════════════════════
|
|
326
|
+
// 清理
|
|
327
|
+
// ════════════════════════════════════════════════════════════════
|
|
328
|
+
/**
|
|
329
|
+
* 清理所有 Worker
|
|
330
|
+
*/
|
|
331
|
+
cleanup() {
|
|
332
|
+
for (const worker of this.workers.values()) {
|
|
333
|
+
worker.dispose();
|
|
334
|
+
}
|
|
335
|
+
this.workers.clear();
|
|
336
|
+
this.installedApps.clear();
|
|
337
|
+
this.appIdCounter = 0;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/engine/app/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* App Registry
|
|
3
|
+
*
|
|
4
|
+
* 管理第三方 TUI App 的注册和加载。
|
|
5
|
+
*
|
|
6
|
+
* 职责:
|
|
7
|
+
* - 从 ~/.agentina/config.json 加载配置
|
|
8
|
+
* - 动态加载 App 模块
|
|
9
|
+
* - 为 Desktop 提供 App 安装服务
|
|
10
|
+
*
|
|
11
|
+
* @module @aotui/runtime/engine/app-registry
|
|
12
|
+
*/
|
|
13
|
+
import type { IDesktop, AppID, TUIAppFactory, AOAppManifest } from '../../spi/index.js';
|
|
14
|
+
import type { TUIConfig } from './config.js';
|
|
15
|
+
import type { AppLaunchConfig } from '../../spi/app/app-config.interface.js';
|
|
16
|
+
export type { TUIConfig, AppConfigEntry } from './config.js';
|
|
17
|
+
/**
|
|
18
|
+
* 已加载的 App 信息
|
|
19
|
+
*/
|
|
20
|
+
export interface LoadedApp {
|
|
21
|
+
/** App 名称 (来自 manifest) */
|
|
22
|
+
name: string;
|
|
23
|
+
/** App 清单 (传统模式) 或 undefined (方案 B kernelConfig 模式) */
|
|
24
|
+
manifest?: AOAppManifest;
|
|
25
|
+
/** 工厂对象 */
|
|
26
|
+
factory: TUIAppFactory;
|
|
27
|
+
/** 来源 */
|
|
28
|
+
source: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* AppRegistry 配置
|
|
32
|
+
*/
|
|
33
|
+
export interface AppRegistryOptions {
|
|
34
|
+
/** 配置文件路径 (默认 ~/.agentina/config.json) */
|
|
35
|
+
configPath?: string;
|
|
36
|
+
/** 是否自动加载 (默认 true) */
|
|
37
|
+
autoLoad?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* App Registry
|
|
41
|
+
*
|
|
42
|
+
* 管理第三方 TUI App 的生命周期
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const registry = new AppRegistry();
|
|
47
|
+
* await registry.loadFromConfig();
|
|
48
|
+
*
|
|
49
|
+
* // 为 Desktop 安装所有已注册的 App
|
|
50
|
+
* await registry.installAllTo(desktop);
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare class AppRegistry {
|
|
54
|
+
private apps;
|
|
55
|
+
private config;
|
|
56
|
+
private configPath;
|
|
57
|
+
constructor(options?: AppRegistryOptions);
|
|
58
|
+
/**
|
|
59
|
+
* 从配置文件加载所有 App
|
|
60
|
+
*/
|
|
61
|
+
loadFromConfig(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* 添加 App 到配置
|
|
64
|
+
*
|
|
65
|
+
* @param source 来源 (npm:xxx, local:xxx, git:xxx)
|
|
66
|
+
* @param options 选项
|
|
67
|
+
*/
|
|
68
|
+
add(source: string, options?: {
|
|
69
|
+
force?: boolean;
|
|
70
|
+
alias?: string;
|
|
71
|
+
}): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* 注册临时 App (不保存到配置文件)
|
|
74
|
+
* 用于开发环境自动发现或运行时动态添加
|
|
75
|
+
*/
|
|
76
|
+
registerTransient(source: string, options?: {
|
|
77
|
+
alias?: string;
|
|
78
|
+
}): Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* 移除 App
|
|
81
|
+
*/
|
|
82
|
+
remove(name: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* 列出所有已安装的 App
|
|
85
|
+
*/
|
|
86
|
+
list(): LoadedApp[];
|
|
87
|
+
/**
|
|
88
|
+
* 获取已安装的 App
|
|
89
|
+
*/
|
|
90
|
+
get(name: string): LoadedApp | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* 检查 App 是否已安装
|
|
93
|
+
*/
|
|
94
|
+
has(name: string): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* 启用/禁用 App
|
|
97
|
+
*/
|
|
98
|
+
setEnabled(name: string, enabled: boolean): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* [RFC-014] 设置 App 自动启动状态
|
|
101
|
+
*
|
|
102
|
+
* @param name - App 名称
|
|
103
|
+
* @param autoStart - 是否在 Desktop 创建时自动启动
|
|
104
|
+
*/
|
|
105
|
+
setAutoStart(name: string, autoStart: boolean): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* [Option D] 为 Desktop 安装所有已注册的 App (配置驱动)
|
|
108
|
+
*
|
|
109
|
+
* 使用 config.json 中的 runtime.workerScript 作为默认 Worker 脚本,
|
|
110
|
+
* 各 App 可以通过 workerScript 字段覆盖。
|
|
111
|
+
*
|
|
112
|
+
* @param desktop - 目标 Desktop
|
|
113
|
+
* @param options - 可选配置
|
|
114
|
+
* @returns 已安装的 App ID 列表
|
|
115
|
+
*/
|
|
116
|
+
installAll(desktop: IDesktop, options?: {
|
|
117
|
+
defaultWorkerScript?: string;
|
|
118
|
+
/** [RFC-025] Dynamic config to inject into all apps (e.g. projectPath) */
|
|
119
|
+
dynamicConfig?: AppLaunchConfig;
|
|
120
|
+
}): Promise<AppID[]>;
|
|
121
|
+
/**
|
|
122
|
+
* 解析模块路径
|
|
123
|
+
*
|
|
124
|
+
* [Fix] Now properly resolves directory paths to their entry points
|
|
125
|
+
* by checking aoapp.json, package.json, or defaulting to index.js
|
|
126
|
+
*/
|
|
127
|
+
resolveModulePath(source: string): string | null;
|
|
128
|
+
/**
|
|
129
|
+
* 获取配置(用于调试)
|
|
130
|
+
*/
|
|
131
|
+
getConfig(): TUIConfig;
|
|
132
|
+
private getDefaultConfigPath;
|
|
133
|
+
private readConfig;
|
|
134
|
+
private saveConfig;
|
|
135
|
+
private loadFactory;
|
|
136
|
+
}
|
|
137
|
+
export type { TUIAppFactory, AOAppManifest } from '../../spi/index.js';
|
|
138
|
+
export { isTUIAppFactory, validateManifest, isValidAppName } from '../../spi/index.js';
|