@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,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Types
|
|
3
|
+
*
|
|
4
|
+
* 共享类型定义,供纯函数和兼容层使用
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 创建新的 TransformContext
|
|
8
|
+
*/
|
|
9
|
+
export function createTransformContext(appId) {
|
|
10
|
+
return {
|
|
11
|
+
indexMap: {},
|
|
12
|
+
currentAppId: appId || null,
|
|
13
|
+
currentViewId: null
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/engine/view/transformer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6BH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACjD,OAAO;QACH,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,KAAK,IAAI,IAAI;QAC3B,aAAa,EAAE,IAAI;KACtB,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Visitor
|
|
3
|
+
*
|
|
4
|
+
* Handles <application> tags or elements with data-app-id.
|
|
5
|
+
* Responsible for maintaining currentAppId context.
|
|
6
|
+
*/
|
|
7
|
+
import type { IElementVisitor } from './interface.js';
|
|
8
|
+
export declare const applicationVisitor: IElementVisitor;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application Visitor
|
|
3
|
+
*
|
|
4
|
+
* Handles <application> tags or elements with data-app-id.
|
|
5
|
+
* Responsible for maintaining currentAppId context.
|
|
6
|
+
*/
|
|
7
|
+
export const applicationVisitor = {
|
|
8
|
+
name: 'application',
|
|
9
|
+
priority: 10,
|
|
10
|
+
matches(el, ctx) {
|
|
11
|
+
// [Refactor] Corresponds to: if (appId)
|
|
12
|
+
return el.hasAttribute('data-app-id');
|
|
13
|
+
},
|
|
14
|
+
transform(el, ctx, children) {
|
|
15
|
+
const appId = el.getAttribute('data-app-id');
|
|
16
|
+
const appName = el.getAttribute('name');
|
|
17
|
+
// Manage Context
|
|
18
|
+
const prevAppId = ctx.currentAppId;
|
|
19
|
+
ctx.currentAppId = appId;
|
|
20
|
+
// Clean up context on return
|
|
21
|
+
const restoreContext = () => {
|
|
22
|
+
ctx.currentAppId = prevAppId;
|
|
23
|
+
};
|
|
24
|
+
const isCollapsed = el.getAttribute('data-state') === 'collapsed';
|
|
25
|
+
const isClosed = el.getAttribute('data-state') === 'closed';
|
|
26
|
+
if (isCollapsed || isClosed) {
|
|
27
|
+
restoreContext();
|
|
28
|
+
return `\n<application id="${appId}" name="${appName || ''}" state="${isClosed ? 'closed' : 'collapsed'}" />\n`;
|
|
29
|
+
}
|
|
30
|
+
// Recursively process children
|
|
31
|
+
const childMarkup = children(el, ctx);
|
|
32
|
+
const childrenContent = childMarkup.join('\n');
|
|
33
|
+
restoreContext();
|
|
34
|
+
return `\n<application id="${appId}" name="${appName || ''}">\n${childrenContent}\n</application>\n`;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=application.visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.visitor.js","sourceRoot":"","sources":["../../../../../src/engine/view/transformer/visitors/application.visitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IAC/C,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,EAAE;IAEZ,OAAO,CAAC,EAAW,EAAE,GAA+B;QAChD,wCAAwC;QACxC,OAAO,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,CACL,EAAW,EACX,GAAqB,EACrB,QAA2B;QAE3B,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAExC,iBAAiB;QACjB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC;QACnC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QAEzB,6BAA6B;QAC7B,MAAM,cAAc,GAAG,GAAG,EAAE;YACxB,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC;QACjC,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,WAAW,CAAC;QAClE,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC;QAE5D,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO,sBAAsB,KAAK,WAAW,OAAO,IAAI,EAAE,YAAY,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC;QACpH,CAAC;QAED,+BAA+B;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,cAAc,EAAE,CAAC;QACjB,OAAO,sBAAsB,KAAK,WAAW,OAAO,IAAI,EAAE,OAAO,eAAe,oBAAoB,CAAC;IACzG,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML Visitor (Fallback)
|
|
3
|
+
*
|
|
4
|
+
* Handles generic HTML elements not matched by other visitors.
|
|
5
|
+
* Converts standard HTML tags to Markdown.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Transform nested list with proper prefixes using recursive Visitor calls
|
|
9
|
+
*
|
|
10
|
+
* [RFC-FIX] Use traverse instead of textContent to preserve semantic information
|
|
11
|
+
*/
|
|
12
|
+
function transformNestedList(list, ctx, traverse) {
|
|
13
|
+
const items = [];
|
|
14
|
+
const isOrdered = list.tagName.toLowerCase() === 'ol';
|
|
15
|
+
const children = list.children;
|
|
16
|
+
for (let i = 0; i < children.length; i++) {
|
|
17
|
+
const child = children[i];
|
|
18
|
+
if (child.tagName.toLowerCase() === 'li') {
|
|
19
|
+
const prefix = isOrdered ? `${i + 1}. ` : '- ';
|
|
20
|
+
// [FIX] Use recursive traversal instead of textContent
|
|
21
|
+
const content = traverse(child, ctx);
|
|
22
|
+
items.push(prefix + content.trim());
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return items;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Transform list item with proper indentation for nested lists
|
|
29
|
+
*
|
|
30
|
+
* [RFC-FIX] Use recursive Visitor Pattern for all child elements,
|
|
31
|
+
* ensuring Operation/ViewLink inside <li> are properly transformed.
|
|
32
|
+
*/
|
|
33
|
+
function transformListItem(li, prefix, ctx, traverse) {
|
|
34
|
+
const parts = [];
|
|
35
|
+
let mainContent = '';
|
|
36
|
+
// Process children of li
|
|
37
|
+
const childNodes = li.childNodes;
|
|
38
|
+
for (let i = 0; i < childNodes.length; i++) {
|
|
39
|
+
const node = childNodes[i];
|
|
40
|
+
if (node.nodeType === 3) { // Text node
|
|
41
|
+
mainContent += node.textContent?.trim() || '';
|
|
42
|
+
}
|
|
43
|
+
else if (node.nodeType === 1) { // Element node
|
|
44
|
+
const el = node;
|
|
45
|
+
const tagName = el.tagName.toLowerCase();
|
|
46
|
+
if (tagName === 'ul' || tagName === 'ol') {
|
|
47
|
+
// Nested list - process with indentation using recursive traversal
|
|
48
|
+
const nestedItems = transformNestedList(el, ctx, traverse);
|
|
49
|
+
parts.push(...nestedItems);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// [RFC-FIX] Use recursive traversal for ALL other elements
|
|
53
|
+
// This allows Operation, ViewLink, and other semantic elements
|
|
54
|
+
// to be properly recognized by their respective Visitors
|
|
55
|
+
const childOutput = traverse(el, ctx);
|
|
56
|
+
mainContent += childOutput;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Build result: main content with prefix, then nested items indented
|
|
61
|
+
let result = prefix + mainContent.trim();
|
|
62
|
+
if (parts.length > 0) {
|
|
63
|
+
result += '\n' + parts.map(p => ' ' + p).join('\n');
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
// ============ HTML Visitor ============
|
|
68
|
+
export const htmlVisitor = {
|
|
69
|
+
name: 'html-fallback',
|
|
70
|
+
priority: 100, // Lowest priority
|
|
71
|
+
matches(el, ctx) {
|
|
72
|
+
return true;
|
|
73
|
+
},
|
|
74
|
+
transform(el, ctx, children, traverseElement) {
|
|
75
|
+
const tagName = el.tagName.toLowerCase();
|
|
76
|
+
// Skip specialized internal tags
|
|
77
|
+
if (tagName === 'param')
|
|
78
|
+
return '';
|
|
79
|
+
// Handle line breaks
|
|
80
|
+
if (tagName === 'br')
|
|
81
|
+
return '\n';
|
|
82
|
+
const childTexts = children(el, ctx);
|
|
83
|
+
// G. Handle standard HTML elements integration from pure.ts
|
|
84
|
+
if (/^h[1-6]$/.test(tagName)) {
|
|
85
|
+
const level = '#'.repeat(parseInt(tagName[1]));
|
|
86
|
+
return `\n${level} ${childTexts.join(' ')}\n`;
|
|
87
|
+
}
|
|
88
|
+
if (tagName === 'p') {
|
|
89
|
+
const content = childTexts.join(' ').trim();
|
|
90
|
+
return content ? `\n${content}\n` : '';
|
|
91
|
+
}
|
|
92
|
+
if (tagName === 'strong' || tagName === 'b') {
|
|
93
|
+
return `**${childTexts.join(' ')}**`;
|
|
94
|
+
}
|
|
95
|
+
if (tagName === 'em' || tagName === 'i') {
|
|
96
|
+
return `*${childTexts.join(' ')}*`;
|
|
97
|
+
}
|
|
98
|
+
if (tagName === 'code' && el.parentElement?.tagName.toLowerCase() !== 'pre') {
|
|
99
|
+
return `\`${childTexts.join('')}\``;
|
|
100
|
+
}
|
|
101
|
+
if (tagName === 'pre') {
|
|
102
|
+
const codeEl = el.querySelector('code');
|
|
103
|
+
const lang = codeEl?.getAttribute('class')?.replace('language-', '') || '';
|
|
104
|
+
const codeContent = codeEl ? (codeEl.textContent || '') : childTexts.join('\n');
|
|
105
|
+
return `\n\`\`\`${lang}\n${codeContent.trim()}\n\`\`\`\n`;
|
|
106
|
+
}
|
|
107
|
+
if (tagName === 'a') {
|
|
108
|
+
const href = el.getAttribute('href') || '';
|
|
109
|
+
const text = childTexts.join(' ').trim() || href;
|
|
110
|
+
return `[${text}](${href})`;
|
|
111
|
+
}
|
|
112
|
+
if (tagName === 'blockquote') {
|
|
113
|
+
const quoted = childTexts.join(' ').trim()
|
|
114
|
+
.split('\n')
|
|
115
|
+
.map(line => `> ${line}`)
|
|
116
|
+
.join('\n');
|
|
117
|
+
return `\n${quoted}\n`;
|
|
118
|
+
}
|
|
119
|
+
if (tagName === 'hr') {
|
|
120
|
+
return '\n---\n';
|
|
121
|
+
}
|
|
122
|
+
// Handle lists (ul, ol)
|
|
123
|
+
if (tagName === 'ul' || tagName === 'ol') {
|
|
124
|
+
const items = [];
|
|
125
|
+
const listChildren = el.children;
|
|
126
|
+
// [RFC-FIX] Use ElementTraverser for proper Visitor Pattern
|
|
127
|
+
// This enables semantic elements (Operation, ViewLink) inside lists
|
|
128
|
+
// to be properly recognized by their respective Visitors
|
|
129
|
+
const singleTraverse = traverseElement
|
|
130
|
+
? traverseElement
|
|
131
|
+
: (childEl, childCtx) => children(childEl, childCtx).join(' '); // Fallback
|
|
132
|
+
let liIndex = 0;
|
|
133
|
+
for (let i = 0; i < listChildren.length; i++) {
|
|
134
|
+
const child = listChildren[i];
|
|
135
|
+
const childTag = child.tagName.toLowerCase();
|
|
136
|
+
if (childTag === 'li') {
|
|
137
|
+
// Standard list item
|
|
138
|
+
const prefix = tagName === 'ol' ? `${++liIndex}. ` : '- ';
|
|
139
|
+
const liContent = transformListItem(child, prefix, ctx, singleTraverse);
|
|
140
|
+
items.push(liContent);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// [RFC-FIX] Non-<li> children inside <ol>/<ul> (e.g., <button operation="...">)
|
|
144
|
+
// Use ElementTraverser to apply full Visitor Chain
|
|
145
|
+
const childOutput = singleTraverse(child, ctx);
|
|
146
|
+
if (childOutput.trim()) {
|
|
147
|
+
items.push(childOutput.trim());
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return '\n' + items.join('\n') + '\n';
|
|
152
|
+
}
|
|
153
|
+
// Handle orphan li (shouldn't happen normally)
|
|
154
|
+
if (tagName === 'li') {
|
|
155
|
+
return childTexts.join(' ');
|
|
156
|
+
}
|
|
157
|
+
// Default: Join children
|
|
158
|
+
return childTexts.join(' ');
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=html.visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.visitor.js","sourceRoot":"","sources":["../../../../../src/engine/view/transformer/visitors/html.visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Visitors Registry
|
|
3
|
+
*
|
|
4
|
+
* Exports the default set of visitors used by the Transformer.
|
|
5
|
+
* Visitors are executed in order of their priority.
|
|
6
|
+
*/
|
|
7
|
+
import type { IElementVisitor } from './interface.js';
|
|
8
|
+
export declare const DEFAULT_VISITORS: IElementVisitor[];
|
|
9
|
+
/**
|
|
10
|
+
* Sorts visitors by priority type
|
|
11
|
+
*/
|
|
12
|
+
export declare function sortVisitors(visitors: IElementVisitor[]): IElementVisitor[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformer Visitors Registry
|
|
3
|
+
*
|
|
4
|
+
* Exports the default set of visitors used by the Transformer.
|
|
5
|
+
* Visitors are executed in order of their priority.
|
|
6
|
+
*/
|
|
7
|
+
import { applicationVisitor } from './application.visitor.js';
|
|
8
|
+
import { viewVisitor } from './view.visitor.js';
|
|
9
|
+
import { viewLinkVisitor } from './view-link.visitor.js';
|
|
10
|
+
import { operationVisitor } from './operation.visitor.js';
|
|
11
|
+
import { htmlVisitor } from './html.visitor.js';
|
|
12
|
+
// Default visitors sorted by priority
|
|
13
|
+
// Default visitors sorted by priority
|
|
14
|
+
export const DEFAULT_VISITORS = sortVisitors([
|
|
15
|
+
applicationVisitor,
|
|
16
|
+
viewVisitor,
|
|
17
|
+
viewLinkVisitor,
|
|
18
|
+
operationVisitor,
|
|
19
|
+
htmlVisitor
|
|
20
|
+
]);
|
|
21
|
+
/**
|
|
22
|
+
* Sorts visitors by priority type
|
|
23
|
+
*/
|
|
24
|
+
export function sortVisitors(visitors) {
|
|
25
|
+
return [...visitors].sort((a, b) => a.priority - b.priority);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/engine/view/transformer/visitors/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,sCAAsC;AACtC,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAsB,YAAY,CAAC;IAC5D,kBAAkB;IAClB,WAAW;IACX,eAAe;IACf,gBAAgB;IAChB,WAAW;CACd,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAA2B;IACpD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element Visitor Interface
|
|
3
|
+
*
|
|
4
|
+
* Each Visitor is responsible for identifying and processing a specific type of DOM element.
|
|
5
|
+
* Visitors should be stateless pure functions.
|
|
6
|
+
*/
|
|
7
|
+
import type { TransformContext } from '../types.js';
|
|
8
|
+
export interface IElementVisitor {
|
|
9
|
+
/**
|
|
10
|
+
* Visitor name (for debugging and logging)
|
|
11
|
+
*/
|
|
12
|
+
readonly name: string;
|
|
13
|
+
/**
|
|
14
|
+
* Processing priority
|
|
15
|
+
*
|
|
16
|
+
* Lower numbers execute earlier. A rule of thumb:
|
|
17
|
+
* - 0-30: Structural (Application, View, ViewLink)
|
|
18
|
+
* - 30-60: Semantic (Operation)
|
|
19
|
+
* - 60-99: Reserved for extensions
|
|
20
|
+
* - 100+: General HTML fallback
|
|
21
|
+
*/
|
|
22
|
+
readonly priority: number;
|
|
23
|
+
/**
|
|
24
|
+
* Determines if this visitor should handle the element
|
|
25
|
+
*/
|
|
26
|
+
matches(el: Element, ctx: Readonly<TransformContext>): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Executes the transformation
|
|
29
|
+
*
|
|
30
|
+
* @param el - The current element
|
|
31
|
+
* @param ctx - Transformation context (can modify indexMap)
|
|
32
|
+
* @param children - Function to traverse child nodes
|
|
33
|
+
* @param traverseElement - Function to traverse a single element with full Visitor Chain
|
|
34
|
+
* @returns TUI Markup string
|
|
35
|
+
*/
|
|
36
|
+
transform(el: Element, ctx: TransformContext, children: ChildrenTraverser, traverseElement?: ElementTraverser): string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Child node traverser type
|
|
40
|
+
*
|
|
41
|
+
* Used by Visitors to recursively process child nodes of an element.
|
|
42
|
+
* This does NOT apply Visitor matching to the element itself.
|
|
43
|
+
*/
|
|
44
|
+
export type ChildrenTraverser = (el: Element, ctx: TransformContext) => string[];
|
|
45
|
+
/**
|
|
46
|
+
* Element traverser type
|
|
47
|
+
*
|
|
48
|
+
* Used by Visitors to recursively process a single element with full Visitor Chain.
|
|
49
|
+
* This DOES apply Visitor matching, allowing Operation/ViewLink/etc to be recognized.
|
|
50
|
+
*
|
|
51
|
+
* [RFC-FIX] Added to support semantic elements inside List items.
|
|
52
|
+
*/
|
|
53
|
+
export type ElementTraverser = (el: Element, ctx: TransformContext) => string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../../../src/engine/view/transformer/visitors/interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation Visitor
|
|
3
|
+
*
|
|
4
|
+
* Handles <operation> or data-operation elements.
|
|
5
|
+
* Parses parameter definitions, types, and constraints.
|
|
6
|
+
* Populates IndexMap with detailed operation signatures.
|
|
7
|
+
*/
|
|
8
|
+
import type { IElementVisitor } from './interface.js';
|
|
9
|
+
export declare const operationVisitor: IElementVisitor;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operation Visitor
|
|
3
|
+
*
|
|
4
|
+
* Handles <operation> or data-operation elements.
|
|
5
|
+
* Parses parameter definitions, types, and constraints.
|
|
6
|
+
* Populates IndexMap with detailed operation signatures.
|
|
7
|
+
*/
|
|
8
|
+
export const operationVisitor = {
|
|
9
|
+
name: 'operation',
|
|
10
|
+
priority: 50,
|
|
11
|
+
matches(el, ctx) {
|
|
12
|
+
// [Reference] if (operationId)
|
|
13
|
+
const operationId = el.getAttribute('data-operation') || el.getAttribute('operation');
|
|
14
|
+
return !!operationId;
|
|
15
|
+
},
|
|
16
|
+
transform(el, ctx, children) {
|
|
17
|
+
const operationId = (el.getAttribute('data-operation') || el.getAttribute('operation'));
|
|
18
|
+
const operationDesc = el.getAttribute('data-operation-desc') || el.getAttribute('desc');
|
|
19
|
+
// Extract display text (excluding <param> tags)
|
|
20
|
+
const displayText = Array.from(el.childNodes)
|
|
21
|
+
.filter((child) => {
|
|
22
|
+
if (child.nodeType === 3)
|
|
23
|
+
return true; // Text node
|
|
24
|
+
if (child.nodeType === 1 && child.tagName.toLowerCase() === 'param')
|
|
25
|
+
return false;
|
|
26
|
+
return true;
|
|
27
|
+
})
|
|
28
|
+
.map((child) => {
|
|
29
|
+
if (child.nodeType === 3)
|
|
30
|
+
return child.data.trim();
|
|
31
|
+
return '';
|
|
32
|
+
})
|
|
33
|
+
.filter(Boolean)
|
|
34
|
+
.join(' ')
|
|
35
|
+
.trim() || operationId;
|
|
36
|
+
let opOutput = `- [${displayText}](tool:${operationId})\n`;
|
|
37
|
+
if (operationDesc) {
|
|
38
|
+
opOutput += ` - Desc: ${operationDesc}\n`;
|
|
39
|
+
}
|
|
40
|
+
// Parse Parameters
|
|
41
|
+
const params = Array.from(el.querySelectorAll('param'));
|
|
42
|
+
const paramDefs = [];
|
|
43
|
+
if (params.length > 0) {
|
|
44
|
+
opOutput += ` - Parameters:\n`;
|
|
45
|
+
params.forEach((p) => {
|
|
46
|
+
const name = p.getAttribute('name') || 'param';
|
|
47
|
+
const type = p.getAttribute('type') || 'string';
|
|
48
|
+
const required = p.getAttribute('required') === 'true';
|
|
49
|
+
const desc = p.getAttribute('desc') || undefined;
|
|
50
|
+
// Extended attributes
|
|
51
|
+
const itemType = p.getAttribute('item-type') || undefined;
|
|
52
|
+
const optionsStr = p.getAttribute('options') || undefined;
|
|
53
|
+
const defaultVal = p.getAttribute('default') || undefined;
|
|
54
|
+
// Constraints
|
|
55
|
+
const minLength = p.getAttribute('min-length');
|
|
56
|
+
const maxLength = p.getAttribute('max-length');
|
|
57
|
+
const pattern = p.getAttribute('pattern');
|
|
58
|
+
const min = p.getAttribute('min');
|
|
59
|
+
const max = p.getAttribute('max');
|
|
60
|
+
// Build type description string
|
|
61
|
+
let typeDesc = type;
|
|
62
|
+
if (type === 'array' && itemType) {
|
|
63
|
+
typeDesc = `array<${itemType}>`;
|
|
64
|
+
}
|
|
65
|
+
else if (type === 'enum' && optionsStr) {
|
|
66
|
+
typeDesc = `enum(${optionsStr.split(',').join(' | ')})`;
|
|
67
|
+
}
|
|
68
|
+
// Output Format
|
|
69
|
+
opOutput += ` - ${name}: ${typeDesc}${required ? ' (required)' : ''}`;
|
|
70
|
+
if (desc) {
|
|
71
|
+
opOutput += ` - ${desc}`;
|
|
72
|
+
}
|
|
73
|
+
opOutput += '\n';
|
|
74
|
+
// Output Constraints
|
|
75
|
+
const constraints = {};
|
|
76
|
+
if (minLength) {
|
|
77
|
+
constraints.minLength = parseInt(minLength);
|
|
78
|
+
opOutput += ` - min length: ${minLength}\n`;
|
|
79
|
+
}
|
|
80
|
+
if (maxLength) {
|
|
81
|
+
constraints.maxLength = parseInt(maxLength);
|
|
82
|
+
opOutput += ` - max length: ${maxLength}\n`;
|
|
83
|
+
}
|
|
84
|
+
if (pattern) {
|
|
85
|
+
constraints.pattern = pattern;
|
|
86
|
+
opOutput += ` - pattern: /${pattern}/\n`;
|
|
87
|
+
}
|
|
88
|
+
if (min) {
|
|
89
|
+
constraints.min = parseFloat(min);
|
|
90
|
+
opOutput += ` - min value: ${min}\n`;
|
|
91
|
+
}
|
|
92
|
+
if (max) {
|
|
93
|
+
constraints.max = parseFloat(max);
|
|
94
|
+
opOutput += ` - max value: ${max}\n`;
|
|
95
|
+
}
|
|
96
|
+
if (defaultVal !== undefined) {
|
|
97
|
+
opOutput += ` - default: ${defaultVal}\n`;
|
|
98
|
+
}
|
|
99
|
+
paramDefs.push({
|
|
100
|
+
name,
|
|
101
|
+
type,
|
|
102
|
+
required,
|
|
103
|
+
description: desc,
|
|
104
|
+
itemType,
|
|
105
|
+
options: optionsStr ? optionsStr.split(',') : undefined,
|
|
106
|
+
constraints: Object.keys(constraints).length > 0 ? constraints : undefined,
|
|
107
|
+
default: defaultVal
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// Register in IndexMap (if context valid)
|
|
112
|
+
if (ctx.currentAppId && ctx.currentViewId) {
|
|
113
|
+
const operationPath = `tool:${ctx.currentAppId}.${ctx.currentViewId}.${operationId}`;
|
|
114
|
+
ctx.indexMap[operationPath] = {
|
|
115
|
+
description: operationDesc || undefined,
|
|
116
|
+
params: paramDefs
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return opOutput;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=operation.visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.visitor.js","sourceRoot":"","sources":["../../../../../src/engine/view/transformer/visitors/operation.visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View Link Visitor
|
|
3
|
+
*
|
|
4
|
+
* [RFC-006] Updated to support new ViewLink format:
|
|
5
|
+
* - data-link-id: LinkID for V2 mount API
|
|
6
|
+
* - data-unique-id: Business key for cross-snapshot matching
|
|
7
|
+
* - data-view-type: View type name
|
|
8
|
+
* - data-bound-view: Already mounted ViewID (if any)
|
|
9
|
+
*
|
|
10
|
+
* Output format:
|
|
11
|
+
* - V2: [content](mount:parent_view:link_id) - for Agent to mount via link
|
|
12
|
+
* - Already mounted: [content](view:viewId) - direct navigation
|
|
13
|
+
*/
|
|
14
|
+
import type { IElementVisitor } from './interface.js';
|
|
15
|
+
export declare const viewLinkVisitor: IElementVisitor;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* View Link Visitor
|
|
3
|
+
*
|
|
4
|
+
* [RFC-006] Updated to support new ViewLink format:
|
|
5
|
+
* - data-link-id: LinkID for V2 mount API
|
|
6
|
+
* - data-unique-id: Business key for cross-snapshot matching
|
|
7
|
+
* - data-view-type: View type name
|
|
8
|
+
* - data-bound-view: Already mounted ViewID (if any)
|
|
9
|
+
*
|
|
10
|
+
* Output format:
|
|
11
|
+
* - V2: [content](mount:parent_view:link_id) - for Agent to mount via link
|
|
12
|
+
* - Already mounted: [content](view:viewId) - direct navigation
|
|
13
|
+
*/
|
|
14
|
+
export const viewLinkVisitor = {
|
|
15
|
+
name: 'view-link',
|
|
16
|
+
priority: 30,
|
|
17
|
+
matches(el, ctx) {
|
|
18
|
+
// [RFC-006] Match new data-link-id format (highest priority)
|
|
19
|
+
if (el.hasAttribute('data-link-id')) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
// Legacy: data-view-link attribute
|
|
23
|
+
if (el.hasAttribute('data-view-link') && el.getAttribute('data-view-link') !== '') {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
// Legacy: view-target
|
|
27
|
+
const viewTargetId = el.getAttribute('data-view-target-id');
|
|
28
|
+
const viewTarget = el.getAttribute('view-target');
|
|
29
|
+
return !!(viewTargetId || viewTarget);
|
|
30
|
+
},
|
|
31
|
+
transform(el, ctx, children) {
|
|
32
|
+
const childTexts = children(el, ctx);
|
|
33
|
+
const content = childTexts.join(' ').trim() || 'View';
|
|
34
|
+
// [RFC-006] Handle new ViewLink format with data-link-id
|
|
35
|
+
const linkId = el.getAttribute('data-link-id');
|
|
36
|
+
if (linkId) {
|
|
37
|
+
const boundViewId = el.getAttribute('data-bound-view');
|
|
38
|
+
const viewType = el.getAttribute('data-view-type') || 'View';
|
|
39
|
+
const description = el.getAttribute('data-view-description');
|
|
40
|
+
// If already mounted, output link with ViewID in title
|
|
41
|
+
// Format: [Content](link:LinkID "Mounted: ViewID")
|
|
42
|
+
// This preserves the LinkID for context while showing the ViewID
|
|
43
|
+
if (boundViewId && boundViewId !== '') {
|
|
44
|
+
let output = `[${content}](link:${linkId} "Mounted: ${boundViewId}")`;
|
|
45
|
+
if (description) {
|
|
46
|
+
output += ` - ${description}`;
|
|
47
|
+
}
|
|
48
|
+
return output + '\n';
|
|
49
|
+
}
|
|
50
|
+
// Not mounted: output mount link with V2 format
|
|
51
|
+
// Agent will call: mount(link_id=linkId)
|
|
52
|
+
let output = `[${content}](link:${linkId})`;
|
|
53
|
+
if (description) {
|
|
54
|
+
output += ` - ${description}`;
|
|
55
|
+
}
|
|
56
|
+
return output + '\n';
|
|
57
|
+
}
|
|
58
|
+
// Legacy: data-view-link format
|
|
59
|
+
const dataViewLink = el.getAttribute('data-view-link');
|
|
60
|
+
if (dataViewLink && dataViewLink !== '') {
|
|
61
|
+
const linkDesc = el.getAttribute('data-view-description');
|
|
62
|
+
let linkOutput = `[${content}](view:${dataViewLink})`;
|
|
63
|
+
if (linkDesc) {
|
|
64
|
+
linkOutput += ` - ${linkDesc}`;
|
|
65
|
+
}
|
|
66
|
+
return linkOutput + '\n';
|
|
67
|
+
}
|
|
68
|
+
// Legacy: view-target format
|
|
69
|
+
const viewTargetId = el.getAttribute('data-view-target-id');
|
|
70
|
+
const viewTarget = el.getAttribute('view-target');
|
|
71
|
+
const viewLinkName = el.getAttribute('view');
|
|
72
|
+
const viewParams = el.getAttribute('view-params');
|
|
73
|
+
const targetId = viewTargetId || viewTarget;
|
|
74
|
+
const legacyContent = content || viewLinkName || viewTarget || 'View';
|
|
75
|
+
const desc = el.getAttribute('desc');
|
|
76
|
+
let targetUrl = `view:${targetId}`;
|
|
77
|
+
if (viewParams) {
|
|
78
|
+
try {
|
|
79
|
+
const paramsObj = JSON.parse(viewParams);
|
|
80
|
+
const queryParts = Object.entries(paramsObj)
|
|
81
|
+
.map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)
|
|
82
|
+
.join('&');
|
|
83
|
+
if (queryParts) {
|
|
84
|
+
targetUrl += `?${queryParts}`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Invalid JSON, ignore params
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
let linkOutput = `- [${legacyContent}](${targetUrl})\n`;
|
|
92
|
+
if (desc) {
|
|
93
|
+
linkOutput += ` - Description: ${desc}\n`;
|
|
94
|
+
}
|
|
95
|
+
return linkOutput;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=view-link.visitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-link.visitor.js","sourceRoot":"","sources":["../../../../../src/engine/view/transformer/visitors/view-link.visitor.ts"],"names":[],"mappings":"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"}
|