@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,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Snapshot Templates
|
|
3
|
+
*
|
|
4
|
+
* [RFC-007] System Instruction and formatting templates for TUI output.
|
|
5
|
+
* [RFC-014] Added SYSTEM_INSTRUCTION_PURE for semantic separation.
|
|
6
|
+
*
|
|
7
|
+
* @module @aotui/runtime/engine/view/snapshot/templates
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* [RFC-014] Pure System Instruction - 100% Stable Meta Instructions
|
|
11
|
+
* [RFC-017] Updated to encourage parallel tool calls
|
|
12
|
+
*
|
|
13
|
+
* This template contains ONLY:
|
|
14
|
+
* - Who: Agent's role definition
|
|
15
|
+
* - Why: Agent's purpose
|
|
16
|
+
* - How: Operational guidelines
|
|
17
|
+
*
|
|
18
|
+
* NO dynamic content (Apps, Logs, State) is included.
|
|
19
|
+
* This enables maximum LLM KV Cache hit rate.
|
|
20
|
+
*/
|
|
21
|
+
export const SYSTEM_INSTRUCTION_PURE = `# TUI Desktop System Instruction
|
|
22
|
+
|
|
23
|
+
## Who You Are
|
|
24
|
+
|
|
25
|
+
You are the **sole operator** of this TUI (Text-based User Interface) Desktop.
|
|
26
|
+
Human users communicate with you **through applications** (e.g., Chat app), not directly.
|
|
27
|
+
|
|
28
|
+
## Why You Exist
|
|
29
|
+
|
|
30
|
+
This is a text-based workspace designed for AI Agents to interact with applications and accomplish tasks.
|
|
31
|
+
You have full control over this Desktop: open/close applications, mount/dismount views, and execute tools.
|
|
32
|
+
|
|
33
|
+
## How You Work
|
|
34
|
+
|
|
35
|
+
### Function Calling Convention
|
|
36
|
+
|
|
37
|
+
- App tools: \`{app_id}-{view_id}-{tool_id}\`
|
|
38
|
+
- System tools: \`system-{tool}\`
|
|
39
|
+
|
|
40
|
+
### Operational Workflow
|
|
41
|
+
|
|
42
|
+
1. **READ** - Examine the current TUI state (check 'Where You Are' and 'What's Happening')
|
|
43
|
+
2. **DECIDE** - Determine what action to take
|
|
44
|
+
3. **ACT** - Execute tool(s) via Function Call. **Batch independent tools when possible.**
|
|
45
|
+
4. **CHECK** - Review the result in 'What Just Happened'
|
|
46
|
+
5. **LOOP or WAIT** - Continue or end the response without calling any tool
|
|
47
|
+
|
|
48
|
+
### Parallel Tool Execution
|
|
49
|
+
|
|
50
|
+
You CAN call **multiple tools in a single response** when:
|
|
51
|
+
|
|
52
|
+
1. **Independent Tasks** - Tools don't depend on each other's results
|
|
53
|
+
- ✅ \`send_message\` + \`update_topic\` (independent)
|
|
54
|
+
- ✅ Multiple \`pin_message\` for different items
|
|
55
|
+
- ✅ \`open_app\` for multiple apps simultaneously
|
|
56
|
+
|
|
57
|
+
2. **Batch Operations** - Same tool on multiple targets
|
|
58
|
+
- ✅ Pin 3 different messages at once
|
|
59
|
+
- ✅ Close multiple apps at once
|
|
60
|
+
|
|
61
|
+
You SHOULD execute **sequentially** (one tool per response) when:
|
|
62
|
+
|
|
63
|
+
- Tool B needs the result from Tool A
|
|
64
|
+
- You're unsure about the state after Tool A
|
|
65
|
+
- The operation involves creating then using a resource
|
|
66
|
+
|
|
67
|
+
**Examples:**
|
|
68
|
+
|
|
69
|
+
<example>
|
|
70
|
+
[User: "Pin the last 2 messages and update the topic summary"]
|
|
71
|
+
Agent: Call BOTH 'pin_message' (x2) AND 'update_topic' in ONE response
|
|
72
|
+
</example>
|
|
73
|
+
|
|
74
|
+
<example>
|
|
75
|
+
[User: "Create a todo and then mark it done"]
|
|
76
|
+
Agent: First call 'create_todo', WAIT for result, then call 'mark_done'
|
|
77
|
+
</example>
|
|
78
|
+
|
|
79
|
+
### System Tools
|
|
80
|
+
|
|
81
|
+
| Tool | When to Use |
|
|
82
|
+
|-----------|-------------|
|
|
83
|
+
| \`system-open_app\` | Need an app that's not currently open |
|
|
84
|
+
| \`system-close_app\` | Done with an app, free context space |
|
|
85
|
+
| \`system-dismount_view\` | Remove a specific view to reduce clutter |
|
|
86
|
+
|
|
87
|
+
### Tone and Style
|
|
88
|
+
|
|
89
|
+
- Be concise and task-focused. Minimize text output.
|
|
90
|
+
- Never explain what you're about to do - just do it.
|
|
91
|
+
- Never summarize what you just did - move to the next task or wait.
|
|
92
|
+
|
|
93
|
+
### Proactiveness Rules
|
|
94
|
+
|
|
95
|
+
- Be **reactive, not proactive**. Wait for signals before acting.
|
|
96
|
+
- When there's nothing to do → end the response without calling any tool.
|
|
97
|
+
- Never invent tasks. If the TUI shows no pending work, wait.
|
|
98
|
+
|
|
99
|
+
IMPORTANT: Always read the current TUI state before taking any action. Never assume state from memory.
|
|
100
|
+
IMPORTANT: When you have nothing to do, do not call any tool.
|
|
101
|
+
`;
|
|
102
|
+
/**
|
|
103
|
+
* System Instruction for LLM Agent @opencode
|
|
104
|
+
*
|
|
105
|
+
* @deprecated Use SYSTEM_INSTRUCTION_PURE + structured snapshot for RFC-014
|
|
106
|
+
*
|
|
107
|
+
* This is the first thing the Agent sees in every snapshot.
|
|
108
|
+
* It establishes the Agent's role and available operations.
|
|
109
|
+
*/
|
|
110
|
+
export const SYSTEM_INSTRUCTION = `# TUI Desktop System Instruction
|
|
111
|
+
|
|
112
|
+
You are the **sole operator** of this TUI (Text-based User Interface) Desktop.
|
|
113
|
+
This is a text-based workspace designed for AI Agents to interact with applications and accomplish tasks.
|
|
114
|
+
|
|
115
|
+
Human users communicate with you **through applications** (e.g., Chat app), not directly.
|
|
116
|
+
You have full control over this Desktop: open/close applications, mount/dismount views, and execute operations.
|
|
117
|
+
|
|
118
|
+
IMPORTANT: Always read the current TUI state before taking any action. Never assume state from memory.
|
|
119
|
+
IMPORTANT: Each operation you execute is atomic. Check the result before proceeding to the next action.
|
|
120
|
+
IMPORTANT: When you have nothing to do, do not call any tool. Never guess or hallucinate tasks.
|
|
121
|
+
|
|
122
|
+
## Help & Guidance
|
|
123
|
+
|
|
124
|
+
If the user asks about system capabilities or how to use the Desktop:
|
|
125
|
+
|
|
126
|
+
- Refer them to the **Installed Applications** section in 'desktop' to see available apps
|
|
127
|
+
- Each application's View contains an **Application Instruction** section explaining its purpose
|
|
128
|
+
- For technical issues, the user should contact system administrators
|
|
129
|
+
|
|
130
|
+
## Tone and Style
|
|
131
|
+
|
|
132
|
+
You operate a TUI Desktop. Your "speech" is minimal - **actions speak louder than words**.
|
|
133
|
+
|
|
134
|
+
**Core Principles:**
|
|
135
|
+
|
|
136
|
+
- Be concise and task-focused. Minimize text output.
|
|
137
|
+
- When communicating with users (via Chat app), be helpful but brief.
|
|
138
|
+
- Never explain what you're about to do - just do it.
|
|
139
|
+
- Never summarize what you just did - move to the next task or wait.
|
|
140
|
+
|
|
141
|
+
IMPORTANT: Your output is logged and consumes tokens. Keep responses short unless the user explicitly asks for detail.
|
|
142
|
+
IMPORTANT: After completing an operation, either continue to the next task or end the response. Do NOT output status updates.
|
|
143
|
+
|
|
144
|
+
**Examples of appropriate behavior:**
|
|
145
|
+
|
|
146
|
+
<example>
|
|
147
|
+
[User sends "Hi" via Chat app]
|
|
148
|
+
Agent action: Call 'app_0-view_0-send_message' with '{ "content": "Hello! How can I help you today?" }'
|
|
149
|
+
</example>
|
|
150
|
+
|
|
151
|
+
<example>
|
|
152
|
+
[User asks "What time is it?"]
|
|
153
|
+
Agent action: Call 'send_message' with '{ "content": "I don't have access to real-time clock. Is there something else I can help with?" }'
|
|
154
|
+
</example>
|
|
155
|
+
|
|
156
|
+
<example>
|
|
157
|
+
[No new messages, no pending tasks]
|
|
158
|
+
Agent action: End the response without calling any tool
|
|
159
|
+
</example>
|
|
160
|
+
|
|
161
|
+
<example>
|
|
162
|
+
[TUI shows an error in Last Operation Results]
|
|
163
|
+
Agent action: Check error code, decide recovery strategy, retry or inform user
|
|
164
|
+
</example>
|
|
165
|
+
|
|
166
|
+
<example>
|
|
167
|
+
[User asks to pin an important message]
|
|
168
|
+
Agent action: Call 'pin_message' with '{ "message": "recent_msgs[0]" }'
|
|
169
|
+
</example>
|
|
170
|
+
|
|
171
|
+
## Proactiveness
|
|
172
|
+
|
|
173
|
+
You should be **reactive, not proactive**. Wait for signals before acting.
|
|
174
|
+
|
|
175
|
+
**Guidelines:**
|
|
176
|
+
|
|
177
|
+
1. When the user sends a message → respond appropriately.
|
|
178
|
+
2. When a task is in progress → continue until complete, then wait.
|
|
179
|
+
3. When there's nothing to do → end the response without calling any tool.
|
|
180
|
+
4. Never invent tasks. If the TUI shows no pending work, wait.
|
|
181
|
+
5. Never perform actions "just in case" or "to be helpful".
|
|
182
|
+
6. Never continuously repeat actions.
|
|
183
|
+
|
|
184
|
+
**The Wait Rule:**
|
|
185
|
+
After each operation, ask yourself: "Is there more work I need to do NOW?"
|
|
186
|
+
|
|
187
|
+
- YES → Execute the next operation
|
|
188
|
+
- NO → End the response without calling any tool
|
|
189
|
+
|
|
190
|
+
## Understanding Applications
|
|
191
|
+
|
|
192
|
+
Each application has its own purpose and operations. Before using an app:
|
|
193
|
+
|
|
194
|
+
1. **Read the Application Instruction** - Each view has an instruction section explaining:
|
|
195
|
+
- What the app is for
|
|
196
|
+
- When to use it
|
|
197
|
+
- Available operations and their parameters
|
|
198
|
+
|
|
199
|
+
2. **Check the Application View Tree** - See what views are mounted and what's available
|
|
200
|
+
|
|
201
|
+
3. **Understand Operation Parameters** - Each operation lists required and optional parameters
|
|
202
|
+
|
|
203
|
+
**Key Conventions:**
|
|
204
|
+
|
|
205
|
+
- Never assume an operation exists without seeing it in the current TUI state
|
|
206
|
+
- Never assume parameter values - use data from the TUI (e.g., 'recent_msgs[0]' references)
|
|
207
|
+
- App data is accessed via semantic references like 'pinned_msgs[2]', not by guessing IDs
|
|
208
|
+
|
|
209
|
+
## Operational Workflow
|
|
210
|
+
|
|
211
|
+
Follow this loop for all tasks:
|
|
212
|
+
|
|
213
|
+
**1. READ** - Examine the current TUI state
|
|
214
|
+
|
|
215
|
+
- Check 'desktop' for installed apps and system logs
|
|
216
|
+
- Check each 'application' for views and operation logs
|
|
217
|
+
- Check each 'view' for content and available operations
|
|
218
|
+
|
|
219
|
+
**2. DECIDE** - Determine what action to take
|
|
220
|
+
|
|
221
|
+
- What is the user asking for?
|
|
222
|
+
- Which app/view/operation is appropriate?
|
|
223
|
+
- What parameters are needed?
|
|
224
|
+
|
|
225
|
+
**3. ACT** - Execute tool(s) via Function Call. **Batch independent tools when possible.**
|
|
226
|
+
|
|
227
|
+
- System commands: 'system-{tool}'
|
|
228
|
+
- App tools: '{app_id}-{view_id}-{tool}'
|
|
229
|
+
|
|
230
|
+
**4. CHECK** - Review the result in "Last Operation Results"
|
|
231
|
+
|
|
232
|
+
- ✅ Success → Continue or wait
|
|
233
|
+
- ❌ Failed → Handle error (retry, inform user, or escalate)
|
|
234
|
+
|
|
235
|
+
**5. LOOP or WAIT**
|
|
236
|
+
|
|
237
|
+
- More work to do? → Go to step 1
|
|
238
|
+
- Nothing to do? → End the response without calling any tool
|
|
239
|
+
|
|
240
|
+
IMPORTANT: Always check operation results. Failed operations need attention.
|
|
241
|
+
IMPORTANT: Never skip the WAIT step. An idle agent should be waiting, not outputting text.
|
|
242
|
+
|
|
243
|
+
## Operation Policy
|
|
244
|
+
|
|
245
|
+
**Parallel Tool Execution:**
|
|
246
|
+
|
|
247
|
+
- You CAN call **multiple tools in a single response** when they are independent
|
|
248
|
+
- Execute sequentially when Tool B depends on Tool A's result
|
|
249
|
+
- Each tool executes atomically; check results before proceeding
|
|
250
|
+
|
|
251
|
+
**Referencing Data:**
|
|
252
|
+
|
|
253
|
+
- Use semantic paths like 'recent_msgs[0]' to reference list items
|
|
254
|
+
- Never hardcode IDs or guess values
|
|
255
|
+
- If you need data not visible, mount the relevant view first
|
|
256
|
+
|
|
257
|
+
**System Operations:**
|
|
258
|
+
|
|
259
|
+
| Operation | Parameters | When to Use |
|
|
260
|
+
|-----------|------------|-------------|
|
|
261
|
+
| 'system-open_app' | '{ application: "app_id" }' | Need an app that's not currently open |
|
|
262
|
+
| 'system-close_app' | '{ application: "app_id" }' | Done with an app, free context space |
|
|
263
|
+
| 'system-dismount_view' | '{ app_id: "id", view_id: "id" }' | Remove a specific view |
|
|
264
|
+
|
|
265
|
+
# TUI Structure Reference
|
|
266
|
+
|
|
267
|
+
**Desktop Structure:**
|
|
268
|
+
|
|
269
|
+
The content enclosed within the **DESKTOP** XML tag is the TUI Desktop, it includes
|
|
270
|
+
## System Instruction (this section)
|
|
271
|
+
## Installed Applications (list of apps with status)
|
|
272
|
+
## System Logs (recent system events)
|
|
273
|
+
|
|
274
|
+
The content enclosed within the **APPLICATION** XML tag is the TUI Desktop, it includes multiple **VIEW**s and application info.
|
|
275
|
+
|
|
276
|
+
The content enclosed within the **VIEW** XML tag is the a view node of the TUI Application.
|
|
277
|
+
|
|
278
|
+
**Function Call Format:**
|
|
279
|
+
|
|
280
|
+
\`\`\` json
|
|
281
|
+
{
|
|
282
|
+
"name": "app_0-view_0-send_message",
|
|
283
|
+
"arguments": {
|
|
284
|
+
"content": "Your message here"
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
\`\`\`
|
|
288
|
+
|
|
289
|
+
**Common Errors and Recovery:**
|
|
290
|
+
|
|
291
|
+
- 'E_UNKNOWN_OPERATION': Check if the operation exists in current view
|
|
292
|
+
- 'E_INVALID_ARGS': Check parameter requirements in the operation definition
|
|
293
|
+
- 'INDEX_OUT_OF_RANGE': The referenced item doesn't exist, check list length
|
|
294
|
+
- 'E_NOT_FOUND': The referenced app/view/link doesn't exist`;
|
|
295
|
+
/**
|
|
296
|
+
* Format timestamp to ISO-like readable string
|
|
297
|
+
*
|
|
298
|
+
* @param timestamp - Unix timestamp in milliseconds
|
|
299
|
+
* @returns Formatted string like "2026-01-15 16:00:00"
|
|
300
|
+
*/
|
|
301
|
+
export function formatTimestamp(timestamp) {
|
|
302
|
+
const date = new Date(timestamp);
|
|
303
|
+
return date.toISOString().replace('T', ' ').slice(0, 19);
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Format application status for TUI display
|
|
307
|
+
*/
|
|
308
|
+
export function formatAppStatus(status) {
|
|
309
|
+
switch (status) {
|
|
310
|
+
case 'running': return 'running';
|
|
311
|
+
case 'pending': return 'available (not started)';
|
|
312
|
+
case 'closed': return 'not launched';
|
|
313
|
+
case 'collapsed': return 'minimized';
|
|
314
|
+
default: return status;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/engine/view/snapshot/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFtC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAwL0B,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAsD;IACpF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;QACjC,KAAK,SAAS,CAAC,CAAC,OAAO,yBAAyB,CAAC;QACjD,KAAK,QAAQ,CAAC,CAAC,OAAO,cAAc,CAAC;QACrC,KAAK,WAAW,CAAC,CAAC,OAAO,WAAW,CAAC;QACrC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createMockElement(html: string): Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { parseHTML } from 'linkedom';
|
|
2
|
+
export function createMockElement(html) {
|
|
3
|
+
const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);
|
|
4
|
+
const el = document.body.firstElementChild;
|
|
5
|
+
if (!el) {
|
|
6
|
+
// Fallback if linkedom behaving weirdly, check root
|
|
7
|
+
const rootEl = document.querySelector('div, application, view');
|
|
8
|
+
if (rootEl)
|
|
9
|
+
return rootEl;
|
|
10
|
+
throw new Error(`Failed to create mock element from: ${html}`);
|
|
11
|
+
}
|
|
12
|
+
return el;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../../../../../src/engine/view/transformer/__tests__/visitors/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,8BAA8B,IAAI,gBAAgB,CAAC,CAAC;IACnF,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,oDAAoD;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QAChE,IAAI,MAAM;YAAE,OAAO,MAAiB,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAa,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Helpers (Pure Functions)
|
|
3
|
+
*
|
|
4
|
+
* Shared utility functions for DOM traversal and payload sanitization.
|
|
5
|
+
* Extracted from pure.ts to support Visitor Pattern refactoring.
|
|
6
|
+
*/
|
|
7
|
+
/** DOM Node union type for type-safe traversal */
|
|
8
|
+
export type DOMNode = Node | Element | Text | Comment | DocumentFragment;
|
|
9
|
+
/** Type guard: Check if node is an Element */
|
|
10
|
+
export declare function isElement(node: DOMNode): node is Element;
|
|
11
|
+
/** Type guard: Check if node is a Text node */
|
|
12
|
+
/**
|
|
13
|
+
* Type guard: Check if node is a Text node
|
|
14
|
+
*/
|
|
15
|
+
export declare function isText(node: DOMNode): node is Text;
|
|
16
|
+
/**
|
|
17
|
+
* Decode HTML entities for JSON parsing
|
|
18
|
+
*/
|
|
19
|
+
export declare function decodeHtmlEntities(str: string): string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Helpers (Pure Functions)
|
|
3
|
+
*
|
|
4
|
+
* Shared utility functions for DOM traversal and payload sanitization.
|
|
5
|
+
* Extracted from pure.ts to support Visitor Pattern refactoring.
|
|
6
|
+
*/
|
|
7
|
+
/** Type guard: Check if node is an Element */
|
|
8
|
+
export function isElement(node) {
|
|
9
|
+
return node.nodeType === 1;
|
|
10
|
+
}
|
|
11
|
+
/** Type guard: Check if node is a Text node */
|
|
12
|
+
/**
|
|
13
|
+
* Type guard: Check if node is a Text node
|
|
14
|
+
*/
|
|
15
|
+
export function isText(node) {
|
|
16
|
+
return node.nodeType === 3;
|
|
17
|
+
}
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Helper Functions (Pure)
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Decode HTML entities for JSON parsing
|
|
23
|
+
*/
|
|
24
|
+
export function decodeHtmlEntities(str) {
|
|
25
|
+
return str
|
|
26
|
+
.replace(/"/g, '"')
|
|
27
|
+
.replace(/'/g, "'")
|
|
28
|
+
.replace(/</g, '<')
|
|
29
|
+
.replace(/>/g, '>')
|
|
30
|
+
.replace(/&/g, '&');
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,8CAA8C;AAC9C,MAAM,UAAU,SAAS,CAAC,IAAa;IACnC,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,+CAA+C;AAC/C;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,IAAa;IAChC,OAAO,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC1C,OAAO,GAAG;SACL,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer (Compatibility Layer)
|
|
3
|
+
*
|
|
4
|
+
* 保持向后兼容的类形式 API。
|
|
5
|
+
* 内部委托给纯函数实现,无状态共享。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const transformer = new Transformer();
|
|
10
|
+
* const { markup, indexMap } = transformer.transform(dom);
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @see pure.ts 纯函数实现
|
|
14
|
+
*/
|
|
15
|
+
import type { IndexMap } from '../../../spi/index.js';
|
|
16
|
+
import type { ITransformer } from '../../../spi/runtime/transformer.interface.js';
|
|
17
|
+
export type { TransformResult, TransformContext } from './types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Transformer Class (Compatibility Wrapper)
|
|
20
|
+
*
|
|
21
|
+
* 这个类现在是无状态的,所有调用都委托给纯函数。
|
|
22
|
+
* 可以安全地在多个 Desktop 之间共享同一实例。
|
|
23
|
+
*/
|
|
24
|
+
export declare class Transformer implements ITransformer {
|
|
25
|
+
/**
|
|
26
|
+
* Transforms full DOM (Window or Document) to TUI Markup
|
|
27
|
+
*/
|
|
28
|
+
transform(dom: unknown): {
|
|
29
|
+
markup: string;
|
|
30
|
+
indexMap: IndexMap;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Transform a single Element (e.g., app container) to TUI Markup
|
|
34
|
+
*/
|
|
35
|
+
transformElement(element: Element, appId?: string): {
|
|
36
|
+
markup: string;
|
|
37
|
+
indexMap: IndexMap;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export { transformDOM, transformElement } from './pure.js';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer (Compatibility Layer)
|
|
3
|
+
*
|
|
4
|
+
* 保持向后兼容的类形式 API。
|
|
5
|
+
* 内部委托给纯函数实现,无状态共享。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const transformer = new Transformer();
|
|
10
|
+
* const { markup, indexMap } = transformer.transform(dom);
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @see pure.ts 纯函数实现
|
|
14
|
+
*/
|
|
15
|
+
import { transformDOM, transformElement as transformElementPure } from './pure.js';
|
|
16
|
+
/**
|
|
17
|
+
* Transformer Class (Compatibility Wrapper)
|
|
18
|
+
*
|
|
19
|
+
* 这个类现在是无状态的,所有调用都委托给纯函数。
|
|
20
|
+
* 可以安全地在多个 Desktop 之间共享同一实例。
|
|
21
|
+
*/
|
|
22
|
+
export class Transformer {
|
|
23
|
+
/**
|
|
24
|
+
* Transforms full DOM (Window or Document) to TUI Markup
|
|
25
|
+
*/
|
|
26
|
+
transform(dom) {
|
|
27
|
+
return transformDOM(dom);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Transform a single Element (e.g., app container) to TUI Markup
|
|
31
|
+
*/
|
|
32
|
+
transformElement(element, appId) {
|
|
33
|
+
return transformElementPure(element, appId);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Re-export pure functions for direct use
|
|
37
|
+
export { transformDOM, transformElement } from './pure.js';
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,YAAY,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAKnF;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACpB;;OAEG;IACH,SAAS,CAAC,GAAY;QAClB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,OAAgB,EAAE,KAAc;QAC7C,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Function Transformer
|
|
3
|
+
*
|
|
4
|
+
* Refactored to use Visitor Pattern (RFC-005).
|
|
5
|
+
* Stateless, thread-safe, and extensible.
|
|
6
|
+
*
|
|
7
|
+
* @module @aotui/runtime/engine/transformer/pure
|
|
8
|
+
*/
|
|
9
|
+
import type { TransformResult } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Transform full DOM (Window or Document) to TUI Markup
|
|
12
|
+
*/
|
|
13
|
+
export declare function transformDOM(dom: unknown): TransformResult;
|
|
14
|
+
/**
|
|
15
|
+
* Transform a single Element to TUI Markup
|
|
16
|
+
*/
|
|
17
|
+
export declare function transformElement(element: Element, appId?: string): TransformResult;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure Function Transformer
|
|
3
|
+
*
|
|
4
|
+
* Refactored to use Visitor Pattern (RFC-005).
|
|
5
|
+
* Stateless, thread-safe, and extensible.
|
|
6
|
+
*
|
|
7
|
+
* @module @aotui/runtime/engine/transformer/pure
|
|
8
|
+
*/
|
|
9
|
+
import { createTransformContext } from './types.js';
|
|
10
|
+
import { isElement, isText } from './helpers.js';
|
|
11
|
+
import { DEFAULT_VISITORS } from './visitors/index.js';
|
|
12
|
+
/**
|
|
13
|
+
* Type guard for multi-sandbox structure
|
|
14
|
+
*/
|
|
15
|
+
function isDesktopDOM(dom) {
|
|
16
|
+
return (typeof dom === 'object' &&
|
|
17
|
+
dom !== null &&
|
|
18
|
+
'desktopId' in dom &&
|
|
19
|
+
'apps' in dom &&
|
|
20
|
+
dom.apps instanceof Map);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Transform full DOM (Window or Document) to TUI Markup
|
|
24
|
+
*/
|
|
25
|
+
export function transformDOM(dom) {
|
|
26
|
+
// Handle multi-sandbox structure
|
|
27
|
+
if (isDesktopDOM(dom)) {
|
|
28
|
+
return transformDesktopDOM(dom);
|
|
29
|
+
}
|
|
30
|
+
// Legacy: Single Window/Document
|
|
31
|
+
const ctx = createTransformContext();
|
|
32
|
+
let doc = dom;
|
|
33
|
+
if (dom.document) {
|
|
34
|
+
doc = dom.document;
|
|
35
|
+
}
|
|
36
|
+
const markup = traverse(doc.body, ctx);
|
|
37
|
+
return {
|
|
38
|
+
markup,
|
|
39
|
+
indexMap: ctx.indexMap
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Transform a single Element to TUI Markup
|
|
44
|
+
*/
|
|
45
|
+
export function transformElement(element, appId) {
|
|
46
|
+
const ctx = createTransformContext(appId);
|
|
47
|
+
const markup = traverse(element, ctx);
|
|
48
|
+
return {
|
|
49
|
+
markup,
|
|
50
|
+
indexMap: ctx.indexMap
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Internal Implementation
|
|
55
|
+
// ============================================================================
|
|
56
|
+
/**
|
|
57
|
+
* Transform Desktop DOM structure
|
|
58
|
+
*/
|
|
59
|
+
function transformDesktopDOM(desktop) {
|
|
60
|
+
const ctx = createTransformContext();
|
|
61
|
+
const parts = [];
|
|
62
|
+
// Traverse each App's Document
|
|
63
|
+
for (const [appId, doc] of desktop.apps) {
|
|
64
|
+
const container = doc.body.querySelector(`[data-app-id="${appId}"]`);
|
|
65
|
+
if (container) {
|
|
66
|
+
const appMarkup = traverse(container, ctx);
|
|
67
|
+
if (appMarkup.trim()) {
|
|
68
|
+
parts.push(appMarkup);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
markup: parts.join('\n'),
|
|
74
|
+
indexMap: ctx.indexMap
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Core Traversal Function (Visitor Pattern)
|
|
79
|
+
*/
|
|
80
|
+
function traverse(node, ctx, visitors = DEFAULT_VISITORS) {
|
|
81
|
+
// 1. Text Nodes
|
|
82
|
+
if (isText(node)) {
|
|
83
|
+
return node.data.trim();
|
|
84
|
+
}
|
|
85
|
+
// 2. Element Check
|
|
86
|
+
if (!isElement(node))
|
|
87
|
+
return '';
|
|
88
|
+
const el = node;
|
|
89
|
+
// 3. Global Checks
|
|
90
|
+
const state = el.getAttribute('data-state');
|
|
91
|
+
if (state === 'hidden')
|
|
92
|
+
return '';
|
|
93
|
+
// [RFC-007] Ignore ViewTree container (sent separately)
|
|
94
|
+
if (el.hasAttribute('data-view-tree'))
|
|
95
|
+
return '';
|
|
96
|
+
// 4. Find Matching Visitor
|
|
97
|
+
// Visitors are strict priority ordered. The first match wins.
|
|
98
|
+
const visitor = visitors.find(v => v.matches(el, ctx));
|
|
99
|
+
if (visitor) {
|
|
100
|
+
// Log visitor usage for debug?
|
|
101
|
+
// console.log(`[Visitor] ${visitor.name} matched ${el.tagName}`);
|
|
102
|
+
// [RFC-FIX] Provide both ChildrenTraverser and ElementTraverser to visitors
|
|
103
|
+
// - ChildrenTraverser: traverse child nodes (existing behavior)
|
|
104
|
+
// - ElementTraverser: traverse a single element with full Visitor Chain
|
|
105
|
+
const childrenTraverser = (el, ctx) => traverseChildren(el, ctx, visitors);
|
|
106
|
+
const elementTraverser = (el, ctx) => traverse(el, ctx, visitors);
|
|
107
|
+
return visitor.transform(el, ctx, childrenTraverser, elementTraverser);
|
|
108
|
+
}
|
|
109
|
+
// 5. Fallback (Should be handled by HtmlVisitor if configured correctly, but as safety)
|
|
110
|
+
return traverseChildren(el, ctx, visitors).join(' ');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Child Traverser Helper
|
|
114
|
+
*/
|
|
115
|
+
function traverseChildren(el, ctx, visitors = DEFAULT_VISITORS) {
|
|
116
|
+
const results = [];
|
|
117
|
+
for (const child of Array.from(el.childNodes)) {
|
|
118
|
+
const text = traverse(child, ctx, visitors);
|
|
119
|
+
if (text)
|
|
120
|
+
results.push(text);
|
|
121
|
+
}
|
|
122
|
+
return results;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/pure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Types
|
|
3
|
+
*
|
|
4
|
+
* 共享类型定义,供纯函数和兼容层使用
|
|
5
|
+
*/
|
|
6
|
+
import type { IndexMap } from '../../../spi/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Transform 结果
|
|
9
|
+
*/
|
|
10
|
+
export interface TransformResult {
|
|
11
|
+
markup: string;
|
|
12
|
+
indexMap: IndexMap;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Transform 上下文 (纯函数内部状态)
|
|
16
|
+
*
|
|
17
|
+
* 这些数据在单次 transform 调用中积累,
|
|
18
|
+
* 但不跨调用共享,保证线程安全。
|
|
19
|
+
*/
|
|
20
|
+
export interface TransformContext {
|
|
21
|
+
/** 累积的 IndexMap */
|
|
22
|
+
indexMap: IndexMap;
|
|
23
|
+
/** 当前 App ID 上下文 */
|
|
24
|
+
currentAppId: string | null;
|
|
25
|
+
/** 当前 View ID 上下文 */
|
|
26
|
+
currentViewId: string | null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 创建新的 TransformContext
|
|
30
|
+
*/
|
|
31
|
+
export declare function createTransformContext(appId?: string): TransformContext;
|