@schlenkr/ragents 0.1.10 → 0.1.11
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/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +4 -4
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +29 -29
- package/apps/server/src/api/core-methods.ts +17 -17
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +6 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +61 -56
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +23 -23
- package/apps/server/src/ragents/global-chat.ts +8 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +48 -48
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +53 -54
- package/apps/web/dist/help/guide-clients.md +50 -51
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +196 -144
- package/apps/web/dist/help/mini-app.css +6 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +26 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +28 -28
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +225 -225
- package/bundles/ragents.actor-programs/server/index.js.map +2 -2
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -2
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +2 -2
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +98 -98
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +81 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/plugin-host.ts +119 -119
- package/packages/ragents/src/plugin-types.ts +16 -16
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +12 -12
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -2
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +6 -6
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +7 -7
- package/plugins/ragents.workspace/server/index.ts +3 -3
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
- package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../plugins/ragents.actor-programs/server/index.ts", "../../../plugins/ragents.actor-programs/server/agent-tools.ts", "../../../plugins/ragents.actor-programs/server/methods.ts", "../../../plugins/ragents.actor-programs/server/routes.ts", "../../../plugins/ragents.actor-programs/server/runtime.ts", "../../../plugins/ragents.actor-programs/server/limits.ts", "../../../plugins/ragents.actor-programs/server/capability-resolver.ts", "../../../plugins/ragents.actor-programs/server/controls-template.ts", "../../../plugins/ragents.actor-programs/server/templates.ts", "../../../plugins/ragents.actor-programs/server/test-report.ts", "../../../plugins/ragents.actor-programs/server/tool-contributor.ts", "../../../plugins/ragents.actor-programs/server/controls-tool.ts", "../../../plugins/ragents.actor-programs/server/prompts.ts", "../../../plugins/ragents.actor-programs/server/project-diagnostics.ts", "../../../plugins/ragents.actor-programs/server/access-projections.ts"],
|
|
4
|
-
"sourcesContent": ["import path from \"node:path\";\nimport type { PluginHost, RAgentsPlugin } from \"@ragents/engine\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { runtimeProviderToken, runGuardToken } from \"@ragents/host/ragents/host-services.js\";\nimport { askServiceToken } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nimport { agentToolsFrom } from \"./agent-tools.js\";\nimport { createActorProgramMethods } from \"./methods.js\";\nimport { createMiniAppFrameRoutes, miniAppsApiPrefix } from \"./routes.js\";\nimport { ActorProgramRuntime } from \"./runtime.js\";\nimport { actorProgramManagementToolNames, actorProgramToolsAvailable, createActorProgramToolContributors } from \"./tool-contributor.js\";\nimport { createControlsToolContributor } from \"./controls-tool.js\";\nimport { actorProgramSummary } from \"./prompts.js\";\nimport { sandboxServicesToken } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { actorProgramsToken } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { createProjectDiagnostics } from \"./project-diagnostics.js\";\nimport { actorProgramAccessProjections } from \"./access-projections.js\";\nconst actorProgramsPlugin = (pluginHost: PluginHost): RAgentsPlugin => ({\n manifest: { id: \"ragents.actor-programs\" },\n register: (host) => {\n const runtime = new ActorProgramRuntime({\n runtime: host.service(runtimeProviderToken), agentToolsFor: agentToolsFrom(pluginHost), askService: () => host.service(askServiceToken), reservedToolNames: () => pluginHost.tools.describe().map((entry) => entry.name),\n serverProcessContextFor: (runId) => host.service(sandboxServicesToken).serverProcessContextFor(runId),\n operations: { operation: (id) => host.operation(id), invoke: (id, context, input) => host.invokeOperation(id, context, input), list: () => pluginHost.operations.describe() },\n directoryFor: (runId) => host.storage.session(runId, \"programs\"),\n scriptSources: (entryId, name) => {\n const script = pluginHost.startEntries.scriptPackage(entryId);\n return !script ? undefined : script.handle === name ? script.files : script.programs.find((program) => program.name === name)?.files;\n },\n });\n host.provide(actorProgramsToken, runtime);\n const diagnostics = createProjectDiagnostics({\n workspaceFor: (runId) => runtime.workspaceDirectory(runId), check: (runId, name, actorId, signal) => runtime.check(runId, name, actorId, signal),\n applies: (runId, actorId) => {\n const view = host.service(runtimeProviderToken)().view(runId);\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return !!actor && actor.kind !== \"human\" && actorProgramToolsAvailable(actor, view) && (actor.toolNames === null || actor.toolNames.some((name) => (actorProgramManagementToolNames as readonly string[]).includes(name)));\n },\n });\n host.agentRuntime(diagnostics.contribution);\n host.clientConfig({ routePrefix: miniAppsApiPrefix });\n host.methods(...createActorProgramMethods({ ensureSession: host.service(runGuardToken), runtime }));\n host.http(...createMiniAppFrameRoutes({ ensureSession: host.service(runGuardToken), runtime }));\n host.lifecycle({ id: \"ragents.actor-programs.lifecycle\",\n initialize: () => host.service(sandboxServicesToken).registerWorkspaceRoot({ id: \"ragents.actor-programs\", alias: \"@actors\", environmentVariable: \"RAGENTS_ACTORS_DIR\", directoryFor: (runId) => runtime.workspaceDirectory(runId), ownershipDirectoryFor: async (runId) => path.dirname(await runtime.workspaceDirectory(runId)) }),\n prepareSession: ({ runId }) => runtime.prepareSession(runId), stopSession: ({ runId, signal }) => runtime.stopSession(runId, signal),\n deleteSession: async ({ runId }) => { diagnostics.forget(runId); await runtime.deleteSession(runId); }, shutdown: () => runtime.shutdown(),\n });\n host.prompts(actorProgramSummary);\n host.accessProjections(...actorProgramAccessProjections);\n host.functions(createControlsToolContributor(), ...createActorProgramToolContributors(runtime, diagnostics));\n },\n});\nexport const plugin: PluginModule = { requires: [\"ragents.orchestration\", \"ragents.ask\"], create: actorProgramsPlugin };\n", "import { ToolRegistry, type RunFunction, type ExecutableActor, type PluginHost } from \"@ragents/engine\";\nimport { runtimeProviderToken, runWorkspaceProviderToken } from \"@ragents/host/ragents/host-services.js\";\n\nexport const agentToolsFrom = (host: PluginHost) =>\n async (runId: string, actorId: string, provisional?: ExecutableActor): Promise<readonly RunFunction[]> => {\n const runtime = host.service(runtimeProviderToken)();\n const view = runtime.view(runId);\n const actor = provisional ?? view.actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\") {\n throw new Error(`${actorId} bezeichnet keinen aktiven Agenten in diesem Run.`);\n }\n const registry = new ToolRegistry();\n host.tools.entries().forEach((contributor) => registry.register(contributor));\n const workspace = await host.service(runWorkspaceProviderToken)(runId);\n const tools = await registry.resolve({\n runId,\n actorId,\n turnId: null,\n actor,\n view: provisional ? {...view,actors:[...view.actors,provisional]} : view,\n workspace: workspace.cwd,\n });\n if (actor.toolNames === null) return tools;\n const availableNames = new Set(tools.map((tool) => tool.name));\n const unknown = actor.toolNames.filter((name) => !availableNames.has(name));\n if (unknown.length > 0) {\n throw new Error(`Actor ${actorId} verlangt unbekannte Werkzeuge: ${unknown.join(\", \")}.`);\n }\n const selected = new Set(actor.toolNames);\n return tools.filter((tool) => selected.has(tool.name));\n };\n", "import { DomainError, implement, type MethodContribution } from \"@ragents/engine\";\nimport { actorProgramContracts } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nconst MAX_INPUT_BYTES = 64 * 1024;\n\nexport interface ActorProgramMethodOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\nconst failed = (cause: unknown, code: string, status: number): DomainError => cause instanceof DomainError\n ? cause\n : new DomainError(code, cause instanceof Error ? cause.message : String(cause), status);\n\nconst guarded = <T>(code: string, status: number, work: () => T): T => {\n try {\n return work();\n } catch (cause) {\n throw failed(cause, code, status);\n }\n};\n\nconst checkedInput = (input: unknown): unknown => {\n if (Buffer.byteLength(JSON.stringify(input ?? null), \"utf8\") > MAX_INPUT_BYTES)\n throw new DomainError(\"input-too-large\", `Die Aktionseingabe ist gr\u00F6\u00DFer als ${MAX_INPUT_BYTES} Byte.`, 413);\n return input;\n};\n\nexport const createActorProgramMethods = (options: ActorProgramMethodOptions): MethodContribution[] => {\n const session = (runId: string, code: string, status: number): void =>\n guarded(code, status, () => options.ensureSession(runId));\n return [\n implement(actorProgramContracts.apps, ({ runId }, { access }) => {\n session(runId, \"run-unavailable\", 400);\n return {\n apps: options.runtime.apps(runId),\n tools: access.can(\"runs.inspect\") ? options.runtime.runLocalTools(runId) : [],\n };\n }),\n implement(actorProgramContracts.source, async ({ runId, moduleId }) => {\n session(runId, \"run-unavailable\", 404);\n try {\n return await options.runtime.moduleSource(runId, moduleId);\n } catch (cause) {\n throw failed(cause, \"actor-program-unknown\", 404);\n }\n }),\n implement(actorProgramContracts.action, ({ runId, appId, revision, actionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"action-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startInvocation(runId, appId, revision, actionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.invocation, ({ runId, appId, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, appId, invocationId));\n }),\n implement(actorProgramContracts.function, ({ runId, actorHandle, revision, functionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"function-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startFunctionInvocation(runId, actorHandle, revision, functionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.functionInvocation, ({ runId, actorHandle, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, actorHandle, invocationId));\n }),\n ];\n};\n", "import { randomBytes } from \"node:crypto\";\nimport type { HttpRouteContribution } from \"@ragents/engine\";\nimport { guardedJsonRoute } from \"@ragents/host/plugin-support/http.js\";\nimport { browserInputRuntime, browserRuntimeStyles } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nexport const miniAppsApiPrefix = \"/api/plugins/ragents.actor-programs\";\n\nconst framePattern = new RegExp(`^${miniAppsApiPrefix.replaceAll(\".\", \"\\\\.\")}\\/runs\\/([A-Za-z0-9_-]{1,64})\\/apps\\/([a-z][a-z0-9_-]{0,129})\\/frame$`);\n\nconst escapeForwarder = `\n window.addEventListener(\"keydown\", (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n queueMicrotask(() => {\n if (!event.defaultPrevented) parent.postMessage({ type: \"ragents.app.escape\", version: 1, token: bridgeToken, keyboard: ragentsInputBridge.keyboardMessage(event, \"keydown\") }, \"*\");\n });\n });`;\n\nconst themeReceiver = `\n const applyHostTheme = (theme) => {\n if (theme !== \"light\" && theme !== \"dark\") throw new Error(\"Das Host-Theme muss light oder dark sein.\");\n document.documentElement.dataset.theme = theme;\n };`;\n\n// Die Vorfahren decken den Browser und die Webviews von VS Code ab (Desktop: vscode-file und vscode-cdn.net, \u00E4ltere Fassungen: vscode-webview).\nexport const frameContentSecurityPolicy = (nonce: string): string =>\n `sandbox allow-scripts allow-forms allow-downloads; default-src 'none'; script-src 'nonce-${nonce}'; style-src 'nonce-${nonce}'; img-src 'self' data: blob:; font-src data:; connect-src 'none'; media-src 'self' data: blob:; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self' https://*.vscode-cdn.net vscode-file: vscode-webview:`;\n\nconst escapedScript = (source: string): string => source.replace(/<\\/script/gi, \"<\\\\/script\");\n\nconst typedBridgeSdk = (nonce: string, styles: string): string => `<script nonce=\"${nonce}\">\n${escapedScript(browserInputRuntime)}\nglobalThis.__ragentsAppContext = (() => {\n document.documentElement.dataset.uiSurface = \"mini-app\";\n document.documentElement.dataset.miniAppFrame = \"true\";\n const style = document.createElement(\"style\");\n style.setAttribute(\"nonce\", ${JSON.stringify(nonce)});\n style.textContent = atob(${JSON.stringify(Buffer.from(styles, \"utf8\").toString(\"base64\"))});\n document.head.prepend(style);\n const pending = new Map();\n const listeners = new Set();\n const chats = new Map();\n const freeze = (value) => {\n if (value && typeof value === \"object\") {\n Object.values(value).forEach(freeze);\n Object.freeze(value);\n }\n return value;\n };\n const bridgeToken = new URLSearchParams(location.hash.slice(1)).get(\"ragentsBridge\");\n ${escapeForwarder}\n ${themeReceiver}\n const channel = new MessageChannel();\n const port = channel.port1;\n let currentState = freeze({});\n let currentApp = null;\n let readyResolve;\n const ready = new Promise((resolve) => { readyResolve = resolve; });\n const terminal = new Set([\"succeeded\", \"failed\", \"cancelled\"]);\n const requestId = () => crypto.randomUUID().replaceAll(\"-\", \"\");\n const stateValue = (value) => value && typeof value === \"object\" && value.values && typeof value.values === \"object\"\n ? freeze(structuredClone(value.values))\n : freeze({});\n const settle = (message) => {\n const id = message.requestId || message.invocation?.requestId;\n const waiter = id ? pending.get(id) : undefined;\n if (!waiter || !terminal.has(message.invocation.status)) return;\n pending.delete(id);\n if (message.invocation.status === \"succeeded\") waiter.resolve(message.invocation.result);\n else waiter.reject(new Error(message.invocation.error || \"Die App-Aktion wurde nicht abgeschlossen.\"));\n };\n port.onmessage = ({ data }) => {\n if (data?.version !== 1) return;\n if (data.type === \"ragents.app.ready\") {\n applyHostTheme(data.theme);\n if (data.hostInput === true) {\n const disposeInput = ragentsInputBridge.installFrameInputBridge(window, port);\n window.addEventListener(\"pagehide\", disposeInput, { once: true });\n }\n currentApp = data.app;\n currentState = stateValue(data.state);\n listeners.forEach((listener) => listener(currentState));\n readyResolve();\n port.postMessage({ type: \"ragents.app.connected\", version: 1 });\n } else if (data.type === \"ragents.app.theme\") {\n applyHostTheme(data.theme);\n } else if (data.type === \"ragents.app.state\") {\n currentState = stateValue(data.state);\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.resolve(currentState);\n }\n listeners.forEach((listener) => listener(currentState));\n } else if (data.type === \"ragents.app.invocation\") {\n settle(data);\n } else if (data.type === \"ragents.app.chat-state\") {\n const entry = chats.get(data.actor);\n if (entry) {\n entry.snapshot = freeze(data.snapshot);\n entry.listeners.forEach((listener) => listener());\n }\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.chat-ack\") {\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.error\") {\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.reject(new Error(data.message));\n }\n }\n };\n port.start();\n const send = async (message) => {\n await ready;\n return new Promise((resolve, reject) => {\n pending.set(message.requestId, { resolve, reject });\n port.postMessage(message);\n });\n };\n if (/^[a-f0-9]{32}$/.test(bridgeToken || \"\")) {\n parent.postMessage(\n { type: \"ragents.app.frame-ready\", version: 1, token: bridgeToken },\n \"*\",\n [channel.port2],\n );\n }\n return Object.freeze({\n get actor() { if (!currentApp) throw new Error(\"Die Actor-Ansicht ist noch nicht bereit.\"); return Object.freeze({id:currentApp.actorId,handle:currentApp.actorHandle}); },\n ready: ready.then(() => undefined),\n run: Object.freeze({ id: \"current\" }),\n principal: Object.freeze({ id: \"operator\", kind: \"operator\" }),\n state: Object.freeze({\n read: () => currentState,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n }),\n chat: Object.freeze({\n read: (actor) => chats.get(actor)?.snapshot,\n subscribe: (actor, listener) => {\n let entry = chats.get(actor);\n if (!entry) {\n entry = { listeners: new Set(), snapshot: undefined, started: false };\n chats.set(actor, entry);\n ready.then(() => {\n if (chats.get(actor) !== entry) return;\n entry.started = true;\n send({ type: \"ragents.app.chat-watch\", version: 1, requestId: requestId(), actor })\n .catch((error) => {\n if (chats.get(actor) !== entry) return;\n entry.snapshot = freeze({ messages: [], running: false, error: error.message });\n entry.listeners.forEach((notify) => notify());\n });\n });\n }\n entry.listeners.add(listener);\n return () => {\n entry.listeners.delete(listener);\n if (entry.listeners.size > 0 || chats.get(actor) !== entry) return;\n chats.delete(actor);\n if (entry.started) {\n port.postMessage({ type: \"ragents.app.chat-unwatch\", version: 1, requestId: requestId(), actor });\n }\n };\n },\n send: (actor, text, attachments) => send({ type: \"ragents.app.chat-send\", version: 1, requestId: requestId(), actor, text, attachments }),\n }),\n capabilities: Object.freeze({\n list: () => (currentApp?.actions ?? []).map((action) => action.id),\n call: async (actionId, input = {}) => {\n await ready;\n if (!(currentApp?.actions ?? []).some((action) => action.id === actionId)) {\n throw new Error(\"Die angeforderte App-Aktion ist nicht installiert.\");\n }\n return send({\n type: \"ragents.app.invoke\",\n version: 1,\n requestId: requestId(),\n actionId,\n input,\n });\n },\n }),\n });\n})();\n</script>`;\n\nexport const frameHtml = (\n frame: ReturnType<ActorProgramRuntime[\"frame\"]>,\n nonce: string,\n): string => {\n const head = /<head(?:\\s[^>]*)?>/i;\n if (!head.test(frame.html)) throw new Error(\"Die installierte App besitzt keinen g\u00FCltigen head.\");\n const client = `<script nonce=\"${nonce}\" type=\"module\">await globalThis.__ragentsAppContext.ready;${escapedScript(frame.clientJavaScript)}</script>`;\n return frame.html.replace(head, (value) => `${value}${typedBridgeSdk(nonce, `${browserRuntimeStyles}\\n${frame.styles}`)}${client}`);\n};\n\nexport interface MiniAppFrameOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\n/** Die einzige Auslieferungsroute des Plugins: das HTML des Mini-App-Frames; alles andere sind Methoden. */\nexport const createMiniAppFrameRoutes = (options: MiniAppFrameOptions): HttpRouteContribution[] => [\n {\n id: \"ragents.actor-programs.frame\",\n isApiPath: (pathname) => pathname.startsWith(miniAppsApiPrefix),\n matches: (request, url) => request.method === \"GET\" && framePattern.test(url.pathname),\n handle: async ({ request, response, url }) => {\n const match = url.pathname.match(framePattern);\n if (!match) throw new Error(\"Ung\u00FCltige App-Route.\");\n const [, runId, appId] = match;\n await guardedJsonRoute({\n request,\n response,\n ensureSession: () => options.ensureSession(runId!),\n errorStatus: 404,\n handle: () => {\n const revision = url.searchParams.get(\"revision\") ?? \"\";\n const nonce = randomBytes(18).toString(\"base64\");\n const frame = options.runtime.frame(runId!, appId!, revision);\n const content = Buffer.from(frameHtml(frame, nonce), \"utf8\");\n response.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Security-Policy\": frameContentSecurityPolicy(nonce),\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Content-Length\": content.byteLength,\n \"Referrer-Policy\": \"no-referrer\",\n \"X-Content-Type-Options\": \"nosniff\",\n });\n response.end(content);\n },\n });\n },\n },\n];\n", "import { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, readdir, readFile, realpath, rm, writeFile } from \"node:fs/promises\";\nimport { lstatSync, readFileSync, renameSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { Type, type TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport { actorByHandle, actorDescriptionMaxLength, agentTools, assertJsonValue, canonicalHash, defineRunFunction, defineToolAvailability, emptyUsage, handleKey, runCapabilityContractHash, scriptInputOf, schemaComplaints, type Actor, type ActorProgramExecutor, type RunFunction, type CommandContext, type ExecutableActor, type JsonValue, type Orchestration, type PluginContext, type RunCapabilityDescriptor, type RunView, type TurnRequest, type TurnResult, } from \"@ragents/engine\";\nimport { ACTOR_PROGRAMS_STATE_ID, ACTOR_INVOCATIONS_STATE_ID, ACTOR_SCRIPT_STATE_ID, ACTOR_STATE_ID, resolveActorView, type ActorDataState, type ActorFunctionDefinition, type ActorFunctionInvocation, type ActorProgramDefinition, type ActorProgramState, type ActorScriptState, type ActorViewListing, } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActorProgramSource, ActorProgramsService } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { jsonValue, jsonBytes, MAX_INVOCATIONS_STATE_BYTES } from \"./limits.js\";\nimport { agentCapabilityBinding, operatorCapabilityBinding } from \"./capability-resolver.js\";\nimport type { ActorOperationPort } from \"./operations.js\";\nimport { compileClientProject, installClientSdk } from \"@ragents/host/plugin-support/actor-programs/client-compiler.js\";\nimport { compileAppBackend, installServerSdk, prepareAppProject, prepareAppWorkspace, projectSourceFiles, readAppPackage, typecheckServerProject, type AppContract } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { syncWorkspaceOwnership } from \"@ragents/host/plugin-support/workspace-ownership.js\";\nimport { runManagedProcess, sandboxedLaunch, type WorkspaceProcessContext } from \"@ragents/workspace-executor\";\nimport { runModuleTemplates, templateById, templateFiles } from \"./templates.js\";\nimport { createTestReport, testReporterArgument } from \"./test-report.js\";\nimport { FRAME_BODY_CLASS, FRAME_DOCUMENT_CLASS, FRAME_ROOT_CLASS } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport { buildTailwind } from \"@ragents/host/plugin-support/actor-programs/tailwind.js\";\nimport type { AskService } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nconst NAME = /^[a-z][a-z0-9-]{0,63}$/;\nconst errorText = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst maxShownComplaints = 10;\nconst maxComplaintLength = 240;\n/** A failed check names the count and the first complaints; `lines` keeps all of them for actor_program_diagnostics. */\nconst checkFailure = (title: string, lines: readonly string[], fallback: string): Error => {\n const all = [...new Set(lines.map((line) => line.trim()).filter((line) => line !== \"\"))];\n if (all.length === 0)\n return new Error(fallback);\n const shown = all.slice(0, maxShownComplaints).map((line) => line.length > maxComplaintLength ? `${line.slice(0, maxComplaintLength - 3)}...` : line);\n const omitted = all.length - shown.length;\n return Object.assign(new Error([\n `${title}: ${all.length} Fehler.`,\n ...shown,\n ...(omitted > 0 ? [`... und ${omitted} weitere; alle mit actor_program_diagnostics.`] : []),\n ].join(\"\\n\")), { lines: all });\n};\nconst actorDescriptionOf = (text: string | undefined): string | undefined => {\n const line = (text ?? \"\").replace(/\\s+/g, \" \").trim();\n return line.length <= actorDescriptionMaxLength ? line || undefined : `${line.slice(0, actorDescriptionMaxLength - 3).trimEnd()}...`;\n};\nconst exposed = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"Ver\u00F6ffentlichte Funktion eines aktiven Actors im Run.\" }, () => true);\nconst objectSchema = { type: \"object\", additionalProperties: true };\nconst checked = (schema: object, value: unknown, label: string): JsonValue => {\n const result = jsonValue(value, label);\n if (!Value.Check(schema as TSchema, result))\n throw new Error(`${label}: ${schemaComplaints(schema as TSchema, result)}`);\n return result;\n};\nconst safePath = (name: string): string => {\n if (!name || path.isAbsolute(name) || name.includes(\"\\\\\") || name.includes(\"\\0\") || name.split(\"/\").some((part) => !part || part === \".\" || part === \"..\"))\n throw new Error(`Ung\u00FCltiger Paketpfad ${name}.`);\n return name;\n};\nconst inside = async (directory: string, relative: string): Promise<string> => {\n const root = await realpath(directory);\n const file = await realpath(path.join(root, safePath(relative)));\n if (!file.startsWith(`${root}${path.sep}`))\n throw new Error(`Paketpfad ${relative} liegt au\u00DFerhalb des Pakets.`);\n const stat = await lstat(file);\n if (!stat.isFile() || stat.size > 2000000)\n throw new Error(`Ung\u00FCltige oder zu gro\u00DFe Paketdatei ${relative}.`);\n return readFile(file, \"utf8\");\n};\nconst occupied = (file: string): boolean => {\n try {\n lstatSync(file);\n return true;\n }\n catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\")\n return false;\n throw error;\n }\n};\nconst packageExists = (name: string): Error => new Error(`Das Paket ${name} existiert bereits.`);\n// Pr\u00FCfung und rename synchron hintereinander, weil rename einen leeren Zielordner still ersetzt.\nconst commitPackage = (staged: string, directory: string, name: string): void => {\n if (occupied(directory))\n throw packageExists(name);\n try {\n renameSync(staged, directory);\n }\n catch (error) {\n if ([\"EEXIST\", \"ENOTEMPTY\", \"ENOTDIR\"].includes((error as NodeJS.ErrnoException).code ?? \"\"))\n throw packageExists(name);\n throw error;\n }\n};\nconst descriptor = (tool: RunFunction): RunCapabilityDescriptor => ({ id: tool.name, label: tool.label, description: tool.description, schema: tool.schema, resultSchema: tool.resultSchema });\ninterface BackendBinding {\n id: string;\n kind: \"tool\" | \"app-action\" | \"input\";\n principal: {\n id: string;\n kind: \"agent\" | \"script\" | \"operator\";\n };\n output?: string[];\n descriptorsFor: (capabilityIds: readonly string[]) => readonly RunCapabilityDescriptor[];\n call: (name: string, input: JsonValue, index: number) => Promise<JsonValue>;\n}\ninterface CapabilityContract {\n capabilityIds: string[];\n capabilityContractHash: string;\n}\ninterface InvocationState {\n version: 1;\n invocations: ActorFunctionInvocation[];\n requestIds: string[];\n}\ninterface CompiledProgram {\n directory: string;\n files: ActorProgramSource[];\n definition: ActorProgramDefinition;\n backendJavaScript?: string;\n frameStyles: string;\n clients: {\n file: string;\n javaScript: string;\n }[];\n createActor: boolean;\n}\nexport interface ActorProgramRuntimeOptions {\n runtime: () => Orchestration;\n agentToolsFor: (runId: string, actorId: string, provisional?: ExecutableActor) => Promise<readonly RunFunction[]>;\n askService: () => AskService;\n reservedToolNames: () => readonly string[];\n /** Programme, Tests und Builds laufen auf dem Server, auch bei einem Arbeitsbereich auf einem Arbeitsplatz. */\n serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;\n operations: ActorOperationPort;\n directoryFor: (runId: string) => string;\n scriptSources: (entryId: string, name: string) => readonly ActorProgramSource[] | undefined;\n}\nexport class ActorProgramRuntime implements ActorProgramsService, ActorProgramExecutor {\n readonly #options: ActorProgramRuntimeOptions;\n readonly #queues = new Map<string, Promise<void>>();\n readonly #active = new Map<string, {\n runId: string;\n actorId: string;\n controller: AbortController;\n completed: Promise<unknown>;\n }>();\n readonly #installing = new Set<string>();\n readonly #creating = new Set<string>();\n readonly #staged = new Set<string>();\n readonly #removing = new Set<string>();\n readonly #knownRuns = new Set<string>();\n readonly #epochs = new Map<string, number>();\n readonly #stopping = new Set<string>();\n #shuttingDown = false;\n constructor(options: ActorProgramRuntimeOptions) { this.#options = options; }\n runtime(): Orchestration { return this.#options.runtime(); }\n view(runId: string): RunView { return this.runtime().view(runId); }\n ownerId(runId: string): string { return this.runtime().state(runId).ownerId; }\n operatorContext(runId: string, label = \"operation\"): CommandContext { return { actorId: this.ownerId(runId), commandId: `actor-program:${label}:${randomUUID()}` }; }\n programsOf(view: RunView): ActorProgramDefinition[] {\n return view.pluginStates.flatMap((entry) => {\n if (entry.pluginId !== ACTOR_PROGRAMS_STATE_ID || entry.scope.kind !== \"actor\")\n return [];\n const state = entry.state as unknown as ActorProgramState;\n const actorId = entry.scope.actorId;\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return state.program && actor && actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\" ? [state.program] : [];\n });\n }\n programs(runId: string): ActorProgramDefinition[] { return this.runtime().listRuns().some(run => run.id === runId) ? this.programsOf(this.view(runId)) : []; }\n actor(runId: string, actorId: string): ExecutableActor {\n const actor = this.view(runId).actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\")\n throw new Error(\"Der Actor ist nicht aktiv.\");\n if (this.#removing.has(`${runId}\\0${actorId}`))\n throw new Error(\"Das Actor-Paket wird entfernt.\");\n return actor;\n }\n resolveActor(runId: string, callerId: string, reference: string): ExecutableActor {\n const actors = this.view(runId).actors;\n const found = reference === \"self\" ? actors.find((candidate) => candidate.id === callerId) : actorByHandle(actors, reference);\n if (!found)\n throw new Error(`Actor ${reference} ist unbekannt.`);\n return this.actor(runId, found.id);\n }\n data(runId: string, actorId: string): ActorDataState {\n const view = this.view(runId);\n const entry = view.pluginStates.find((item) => item.pluginId === ACTOR_STATE_ID && item.scope.kind === \"actor\" && item.scope.actorId === actorId);\n const revision = this.runtime().events(runId).filter((event) => (event.type === \"plugin.state-replaced\" || event.type === \"plugin.state-patched\") && event.payload.pluginId === ACTOR_STATE_ID && event.payload.scope.kind === \"actor\" && event.payload.scope.actorId === actorId).at(-1)?.sequence ?? 0;\n return { version: 1, revision, values: (entry?.state ?? {}) as Record<string, unknown> };\n }\n #writeProgram(context: CommandContext, runId: string, actorId: string, program: ActorProgramDefinition | null): void {\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_PROGRAMS_STATE_ID, scope: { kind: \"actor\", actorId }, state: jsonValue({ version: 1, program }, \"Actor-Programm\") });\n }\n #script(runId: string): ActorScriptState | undefined {\n return this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === \"run\")?.state as unknown as ActorScriptState | undefined;\n }\n async #writeSources(directory: string, files: readonly ActorProgramSource[]): Promise<void> {\n for (const source of files) {\n const file = path.join(directory, safePath(source.path));\n if (source.path.split(\"/\").includes(\"node_modules\"))\n throw new Error(\"Paketquellen d\u00FCrfen keine Abh\u00E4ngigkeiten \u00FCberschreiben.\");\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content, { flag: \"wx\" });\n }\n }\n async #refresh(runId: string, program: ActorProgramDefinition, signal: AbortSignal): Promise<void> {\n const script = this.#script(runId);\n const files = script ? this.#options.scriptSources(script.entryId, program.name) : undefined;\n if (files) {\n const directory = path.join(await this.workspaceDirectory(runId), program.name);\n for (const entry of await readdir(directory))\n if (entry !== \"node_modules\")\n await rm(path.join(directory, entry), { recursive: true, force: true });\n await this.#writeSources(directory, files);\n }\n try {\n await this.#activate(this.operatorContext(runId, \"refresh\"), runId, program.name, false, signal);\n }\n catch (error) {\n throw new Error(`Der Capability-Vertrag von ${program.name} hat sich ge\u00E4ndert und die Neuaktivierung scheiterte: ${errorText(error)}`);\n }\n }\n async #bound<T extends CapabilityContract>(runId: string, actorId: string, revision: string | undefined, signal: AbortSignal, contractOf: (program: ActorProgramDefinition) => T, descriptorsFor: BackendBinding[\"descriptorsFor\"]): Promise<{ program: ActorProgramDefinition; contract: T; descriptors: readonly RunCapabilityDescriptor[] }> {\n const current = () => {\n const program = this.programs(runId).find((entry) => entry.actorId === actorId);\n if (!program)\n throw new Error(\"Der Actor besitzt kein aktives Programm.\");\n return program;\n };\n const bind = (program: ActorProgramDefinition) => {\n const contract = contractOf(program);\n const descriptors = descriptorsFor(contract.capabilityIds);\n return { program, contract, descriptors, drifted: runCapabilityContractHash(descriptors) !== contract.capabilityContractHash };\n };\n const program = current();\n if (revision !== undefined && program.revision !== revision)\n throw new Error(\"Das Actor-Paket wurde ersetzt.\");\n const bound = bind(program);\n if (!bound.drifted)\n return bound;\n await this.#refresh(runId, program, signal);\n const refreshed = bind(current());\n if (refreshed.drifted)\n throw new Error(`Der Capability-Vertrag von ${program.name} weicht auch nach der Neuaktivierung ab.`);\n return refreshed;\n }\n async workspaceDirectory(runId: string): Promise<string> { this.#knownRuns.add(runId); return prepareAppWorkspace(path.join(this.#options.directoryFor(runId), \"actor-workspace\")); }\n templates() { return runModuleTemplates.map(({ id, title, description }) => ({ id, title, description })); }\n async #create<T>(runId: string, name: string, build: (directory: string) => Promise<T>): Promise<{ directory: string; built: T }> {\n this.#assertName(name);\n const actors = await this.workspaceDirectory(runId);\n const directory = path.join(actors, name);\n const key = `${runId}\\0${name}`;\n if (this.#creating.has(key))\n throw new Error(`Das Paket ${name} wird gerade angelegt.`);\n if (occupied(directory))\n throw packageExists(name);\n this.#creating.add(key);\n const staging = path.join(path.dirname(actors), \".staging\");\n const staged = path.join(staging, `${name}-${randomUUID()}`);\n this.#staged.add(staged);\n try {\n await mkdir(staging, { recursive: true });\n for (const entry of await readdir(staging))\n if (!this.#staged.has(path.join(staging, entry)))\n await rm(path.join(staging, entry), { recursive: true, force: true });\n await mkdir(staged);\n const built = await build(staged);\n commitPackage(staged, directory, name);\n return { directory, built };\n }\n finally {\n this.#creating.delete(key);\n this.#staged.delete(staged);\n await rm(staged, { recursive: true, force: true });\n }\n }\n async scaffold(runId: string, name: string, templateId: string) {\n const sources = Object.entries(templateFiles(templateById(templateId), name)).map(([file, content]) => ({ path: file, content }));\n const { built: files } = await this.#create(runId, name, async (directory) => {\n await this.#writeSources(directory, sources);\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor }) : undefined;\n await installClientSdk(directory, { stateSchema: backend?.contract.state ?? objectSchema, actions: Object.entries(backend?.contract.functions ?? {}).map(([id, fn]) => ({ id, inputSchema: fn.input, resultSchema: fn.output })) });\n return (await projectSourceFiles(directory)).map((file) => file.path);\n });\n return { name, directory: `@actors/${name}`, files };\n }\n async importPackage(context: CommandContext, runId: string, name: string, files: readonly ActorProgramSource[], signal?: AbortSignal, scriptEntryId?: string) {\n const { directory } = await this.#create(runId, name, (staged) => this.#writeSources(staged, files));\n try {\n if (scriptEntryId)\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_SCRIPT_STATE_ID, scope: { kind: \"run\" }, state: { version: 1, entryId: scriptEntryId } });\n await this.activate(context, runId, name, signal);\n const program = this.programs(runId).find((entry) => entry.name === name)!;\n return { name, actorId: program.actorId, actorHandle: program.actorHandle, views: program.views.length };\n }\n catch (error) {\n await rm(directory, { recursive: true, force: true });\n throw error;\n }\n }\n async check(runId: string, name: string, callerId: string, signal?: AbortSignal, reference?: string): Promise<CompiledProgram> {\n this.#assertName(name);\n const directory = path.join(await this.workspaceDirectory(runId), name);\n if ((await lstat(directory)).isSymbolicLink())\n throw new Error(\"Actor-Pakete d\u00FCrfen keine Symlinks sein.\");\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const previous = this.programs(runId).find((program) => program.name === name);\n const owner = reference ? this.resolveActor(runId, callerId, reference) : previous ? this.actor(runId, previous.actorId) : !pkg.backend ? this.actor(runId, callerId) : undefined;\n if (previous && owner?.id !== previous.actorId)\n throw new Error(\"Ein aktiviertes Paket kann nicht zu einem anderen Actor wechseln.\");\n const caller = this.view(runId).actors.find((candidate) => candidate.id === callerId);\n if (!caller)\n throw new Error(\"Aufrufender Actor fehlt.\");\n const provisional: ExecutableActor = owner ?? {\n id: \"pending\", handle: name, displayName: pkg.title, kind: \"script\", grants: caller.grants.filter((grant) => grant.delegable),\n createdAt: new Date().toISOString(), createdBy: callerId, description: actorDescriptionOf(pkg.description) ?? null, execution: { driver: { kind: \"script\", config: {} }, workspacePath: null, turnTimeoutMs: null }, lifecycle: { kind: \"idle\", since: new Date().toISOString() }, usage: emptyUsage(), toolNames: null, openedToolNames: [],\n };\n const available = (await this.#options.agentToolsFor(runId, provisional.id, owner ? undefined : provisional)).map(descriptor);\n for (const operation of this.#options.operations.list())\n if (operation.operator !== \"unavailable\" && !available.some((entry) => entry.id === operation.id))\n available.push(operation);\n await installServerSdk(directory, available);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor, signal }) : undefined;\n const contract: AppContract = backend?.contract ?? { state: objectSchema, functions: {} };\n if (contract.input && owner?.kind === \"agent\")\n throw new Error(\"Ein LLM-Actor verarbeitet Eingaben mit seinem Agententreiber; onInput ist nur f\u00FCr TypeScript-Actors erlaubt.\");\n if (contract.state.type !== \"object\")\n throw new Error(\"Actor-Zustand muss ein Object-Schema sein.\");\n const state = owner ? this.data(runId, owner.id).values : {};\n checked(contract.state, state, \"Actor-Zustand\");\n const actorId = owner?.id ?? \"pending\";\n const actorHandle = owner?.handle ?? name;\n const functions: ActorFunctionDefinition[] = Object.entries(contract.functions).map(([id, fn]) => {\n if (!/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(id))\n throw new Error(`Ung\u00FCltiger Funktionsname ${id}.`);\n if (fn.tool && !/^[a-z][a-z0-9_]{0,63}$/.test(fn.tool.name))\n throw new Error(`Ung\u00FCltiger Werkzeugname ${fn.tool.name}.`);\n const capabilities = fn.capabilities ?? [];\n const selected = capabilities.map((name) => {\n const entry = available.find((item) => item.id === name);\n if (!entry)\n throw new Error(`Capability ${name} ist nicht verf\u00FCgbar.`);\n return entry;\n });\n return { id, label: fn.label, description: fn.description ?? fn.label, inputSchema: fn.input, resultSchema: fn.output, capabilityIds: capabilities, capabilityContractHash: runCapabilityContractHash(selected), confirmation: fn.confirmation ?? null,\n ...(fn.tool ? { tool: { name: fn.tool.name, targets: fn.tool.targets ? fn.tool.targets.map((target) => target === \"self\" ? actorId : this.resolveActor(runId, callerId, target).id) : null, card: fn.tool.card ?? true } } : {}) };\n });\n const inputCapabilities = contract.input?.capabilities ?? [];\n const inputDescriptors = inputCapabilities.map((id) => {\n const found = available.find((entry) => entry.id === id);\n if (!found)\n throw new Error(`Eingabe-Capability ${id} ist nicht verf\u00FCgbar.`);\n return found;\n });\n await installClientSdk(directory, { stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n const hasServerFiles = pkg.backend || (await projectSourceFiles(directory)).some((file) => /^tests\\/.*\\.tsx?$/.test(file.path));\n const serverErrors = hasServerFiles ? typecheckServerProject(directory, pkg.backend) : [];\n if (serverErrors.length)\n throw checkFailure(`Typpr\u00FCfung von ${name}`, serverErrors, `Die Typpr\u00FCfung von ${name} schlug ohne Meldung fehl.`);\n const clients: CompiledProgram[\"clients\"] = [];\n const views: ActorProgramDefinition[\"views\"] = [];\n for (const view of pkg.views ?? []) {\n const client = await compileClientProject({ directory, entryPoint: view.client, stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n if (!client.valid)\n throw checkFailure(`Client-Build von ${view.client}`,\n client.diagnostics.filter((item) => item.category === \"error\").map((item) =>\n `${item.fileName ?? view.client}${item.start ? `:${item.start.line}:${item.start.column}` : \"\"} ${item.message.replace(/\\s*\\n\\s*/g, \" \")}`),\n `Der Client-Build von ${view.client} schlug ohne Meldung fehl.`);\n const styles = view.styles ? await inside(directory, view.styles) : \"\";\n if (/@import\\b|url\\s*\\(\\s*[\"']?\\s*(?:https?:|\\/\\/)/i.test(styles))\n throw new Error(\"Ansichts-CSS darf keine externen Ressourcen laden.\");\n const clientFile = `view-${view.id}.mjs`;\n clients.push({ file: clientFile, javaScript: client.javaScript });\n views.push({ id: `${name}--${view.id}`, key: view.id, title: view.title ?? pkg.title, visible: previous?.views.find((item) => item.key === view.id)?.visible ?? true,\n placements: [{ kind: \"canvas\", anchorActorId: actorId }], html: `<!doctype html><html class=\"${FRAME_DOCUMENT_CLASS}\"><head><meta charset=\"utf-8\"></head><body class=\"${FRAME_BODY_CLASS}\"><div id=\"root\" class=\"${FRAME_ROOT_CLASS}\"></div></body></html>`, styles, clientFile });\n }\n const viewSources = [...new Set((pkg.views ?? []).map((view) => path.dirname(path.resolve(directory, view.client))))];\n const frameStyles = viewSources.length > 0 ? await buildTailwind(viewSources) : \"\";\n const files = await projectSourceFiles(directory);\n const revision = canonicalHash({ files, backend: backend?.javaScript ?? null, clients });\n const definition: ActorProgramDefinition = { name, title: pkg.title, description: pkg.description ?? \"\", actorId, actorHandle, revision, installedBy: previous?.installedBy ?? callerId,\n directory: path.join(this.#options.directoryFor(runId), \"actor-builds\", name, revision), sourceDirectory: directory,\n ...(backend ? { backendFile: \"server.mjs\" } : {}), stateSchema: contract.state, stylesFile: \"frame.css\", functions, views,\n ...(contract.input ? { input: { capabilityIds: inputCapabilities, capabilityContractHash: runCapabilityContractHash(inputDescriptors) } } : {}) };\n return { directory, files, definition, clients, frameStyles, createActor: !owner, ...(backend ? { backendJavaScript: backend.javaScript } : {}) };\n }\n activate(context: CommandContext, runId: string, name: string, signal?: AbortSignal, reference?: string) {\n return this.#activate(context, runId, name, true, signal, reference);\n }\n async #activate(context: CommandContext, runId: string, name: string, idle: boolean, signal?: AbortSignal, reference?: string) {\n const key = `${runId}\\0${name}`;\n if (this.#installing.has(key))\n throw new Error(`Paket ${name} wird bereits aktiviert.`);\n const epoch = this.invocationPermit(runId);\n this.#installing.add(key);\n const original = this.programs(runId).find((item) => item.name === name);\n let compiled: CompiledProgram | undefined;\n let published = false;\n try {\n compiled = await this.check(runId, name, context.actorId, signal, reference);\n const definition = compiled.definition;\n const tests = compiled.files.filter((file) => /^tests\\/.*\\.test\\.tsx?$/.test(file.path));\n if (tests.length) {\n const processContext = await this.#options.serverProcessContextFor(runId);\n const report = await createTestReport(compiled.directory);\n let stderr = \"\";\n const launch = await sandboxedLaunch(processContext, { command: process.execPath, args: [\"--import\", \"tsx\", \"--test\", testReporterArgument, ...tests.map((file) => file.path)] });\n const result = await runManagedProcess({ command: launch.command, args: [...launch.args], cwd: compiled.directory,\n env: processContext.env, uid: processContext.uid, gid: processContext.gid, label: `Tests ${name}`, signal, timeoutMs: 60000,\n onStdout: (chunk) => report.stdout(chunk.toString()), onStderr: (chunk) => { stderr = (stderr + chunk.toString()).slice(-12000); } });\n if (result.code !== 0 || result.timedOut)\n throw new Error(report.report(name, { code: result.code, timedOut: result.timedOut, stderr }));\n }\n if (canonicalHash(compiled.files) !== canonicalHash(await projectSourceFiles(compiled.directory)))\n throw new Error(\"Paketdateien wurden w\u00E4hrend der Pr\u00FCfung ge\u00E4ndert; erneut aktivieren.\");\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"Der Run wurde w\u00E4hrend der Aktivierung gestoppt.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"Das Paket wurde zwischenzeitlich ge\u00E4ndert.\");\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n const names = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (names.has(fn.tool.name))\n throw new Error(`Werkzeugname ${fn.tool.name} ist bereits vergeben.`);\n names.add(fn.tool.name);\n }\n const occupied = this.programs(runId).find((program) => program.actorId === definition.actorId && program.name !== name);\n if (occupied)\n throw new Error(`Actor @${definition.actorHandle} besitzt bereits das Paket ${occupied.name}. Erg\u00E4nze darin Funktionen oder Ansichten.`);\n await mkdir(definition.directory, { recursive: true });\n for (const source of compiled.files) {\n const file = path.join(definition.directory, safePath(source.path));\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content);\n }\n await prepareAppProject(definition.directory);\n if (compiled.backendJavaScript !== undefined)\n await writeFile(path.join(definition.directory, \"server.mjs\"), compiled.backendJavaScript);\n for (const client of compiled.clients)\n await writeFile(path.join(definition.directory, client.file), client.javaScript);\n await writeFile(path.join(definition.directory, definition.stylesFile), compiled.frameStyles);\n await writeFile(path.join(definition.directory, \"sources.json\"), JSON.stringify(compiled.files));\n await syncWorkspaceOwnership(definition.directory, await this.#options.serverProcessContextFor(runId));\n signal?.throwIfAborted();\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"Der Run wurde w\u00E4hrend der Aktivierung gestoppt.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"Das Paket wurde zwischenzeitlich ge\u00E4ndert.\");\n if (!compiled.createActor) {\n this.actor(runId, definition.actorId);\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n checked(definition.stateSchema, this.data(runId, definition.actorId).values, \"Actor-Zustand\");\n if (this.programs(runId).some((item) => item.actorId === definition.actorId && item.name !== name))\n throw new Error(\"Der Actor besitzt inzwischen ein anderes Paket.\");\n }\n const currentNames = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (currentNames.has(fn.tool.name))\n throw new Error(`Werkzeugname ${fn.tool.name} ist inzwischen vergeben.`);\n currentNames.add(fn.tool.name);\n }\n jsonValue({ version: 1, program: definition }, \"Actor-Programm\");\n if (compiled.createActor) {\n const actors = this.view(runId).actors;\n const caller = actors.find((actor) => actor.id === context.actorId)!;\n const holder = actors.find((actor) => actor.handle === name);\n if (holder?.kind === \"script\" && holder.lifecycle.kind === \"stopped\") {\n checked(definition.stateSchema, this.data(runId, holder.id).values, \"Actor-Zustand\");\n this.runtime().restartActor(context, runId, holder.id, \"Actor-Paket erneut aktiviert\");\n }\n else if (holder)\n throw new Error(`Handle @${name} geh\u00F6rt bereits dem ${holder.kind !== \"human\" && holder.lifecycle.kind === \"stopped\" ? \"gestoppten\" : \"aktiven\"} Actor ${holder.displayName}; nur ein gestoppter TypeScript-Actor wird beim Aktivieren neu gestartet. W\u00E4hle einen anderen Paketnamen.`);\n else\n this.runtime().createScriptActor(context, runId, { handle: name, displayName: definition.title, description: actorDescriptionOf(definition.description), grants: caller.grants.filter((grant) => grant.delegable), toolNames: null });\n const actor = this.resolveActor(runId, context.actorId, `@${name}`);\n definition.actorId = actor.id;\n definition.actorHandle = actor.handle;\n for (const view of definition.views)\n for (const placement of view.placements)\n placement.anchorActorId = actor.id;\n for (const fn of definition.functions)\n if (fn.tool?.targets)\n fn.tool.targets = fn.tool.targets.map((target) => target === \"pending\" ? actor.id : target);\n }\n signal?.throwIfAborted();\n this.#writeProgram(context, runId, definition.actorId, definition);\n published = true;\n if (original && original.revision !== definition.revision)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(original));\n return { name, actor: `@${definition.actorHandle}`, views: definition.views.length, active: true as const };\n }\n finally {\n this.#installing.delete(key);\n if (!published && compiled && compiled.definition.revision !== original?.revision)\n await rm(compiled.definition.directory, { recursive: true, force: true });\n }\n }\n list(runId: string) { return this.programs(runId).map((program) => ({ name: program.name, actor: `@${program.actorHandle}`, functions: program.functions.map((fn) => fn.id), views: program.views.map((view) => ({ name: view.key, title: view.title, visible: view.visible })) })); }\n async remove(context: CommandContext, runId: string, name: string) {\n const program = this.#program(runId, name);\n this.#assertIdle(runId, program.actorId);\n if (this.#installing.has(`${runId}\\0${name}`))\n throw new Error(\"Das Paket wird gerade aktiviert.\");\n const actor = this.actor(runId, program.actorId);\n const key = `${runId}\\0${program.actorId}`;\n this.#removing.add(key);\n try {\n await this.stopActor(runId, program.actorId);\n this.#writeProgram(context, runId, program.actorId, null);\n if (actor.kind === \"script\")\n this.runtime().stopActor(context, runId, program.actorId, \"Actor-Paket entfernt\");\n await rm(program.directory, { recursive: true, force: true });\n }\n finally {\n this.#removing.delete(key);\n }\n return { removed: name };\n }\n setVisibility(context: CommandContext, runId: string, reference: string, visible: boolean) {\n const { program, view } = resolveActorView(this.programs(runId), reference);\n this.#writeProgram(context, runId, program.actorId, { ...program, views: program.views.map((item) => item.id === view.id ? { ...item, visible } : item) });\n return { view: `${program.name}/${view.key}`, visible };\n }\n apps(runId: string): ActorViewListing[] {\n return this.programs(runId).flatMap((program) => program.views.map((view) => ({ id: view.id, actorId: program.actorId, actorHandle: program.actorHandle, title: view.title, description: program.description, revision: program.revision,\n actions: program.functions.map(({ id, label, description, confirmation }) => ({ id, label, description, confirmation })), placements: view.placements, visible: view.visible, state: this.data(runId, program.actorId), invocations: this.#invocations(runId).invocations.filter((invocation) => invocation.actorId === program.actorId && invocation.revision === program.revision) })));\n }\n runLocalTools(runId: string) {\n if (!this.runtime().listRuns().some(run => run.id === runId))\n return [];\n const view = this.view(runId);\n return this.programs(runId).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [{ moduleId: program.name, name: fn.tool.name, description: fn.description, card: fn.tool.card, actorId: program.actorId, actorHandle: program.actorHandle, functionId: fn.id, revision: program.revision, sourceHash: program.revision, installedBy: program.installedBy,\n parameters: Object.entries((fn.inputSchema as {\n properties?: Record<string, {\n type?: string;\n description?: string;\n }>;\n }).properties ?? {}).map(([name, schema]) => ({ name, type: [\"string\", \"number\", \"integer\", \"boolean\"].includes(schema.type ?? \"\") ? schema.type ?? \"json\" : \"json\", description: schema.description ?? name, required: ((fn.inputSchema as {\n required?: string[];\n }).required ?? []).includes(name) })),\n targets: (fn.tool.targets ?? view.actors.filter((actor) => actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\").map((actor) => actor.id)).map((actorId) => ({ actorId, handle: view.actors.find((actor) => actor.id === actorId)?.handle ?? null })) }] : []));\n }\n async moduleSource(runId: string, reference: string) { const program = this.#program(runId, reference); return { files: JSON.parse(await readFile(path.join(program.directory, \"sources.json\"), \"utf8\")) as ActorProgramSource[] }; }\n frame(runId: string, viewId: string, revision: string) {\n const program = this.#program(runId, viewId);\n const view = program.views.find((item) => item.id === viewId);\n if (!view || program.revision !== revision)\n throw new Error(\"Die Ansicht wurde ersetzt oder entfernt.\");\n if (!program.stylesFile)\n throw new Error(\"Das Programm stammt aus einer \u00E4lteren Aktivierung ohne Stylesheet-Datei. Bitte erneut aktivieren.\");\n const frameStyles = readFileSync(path.join(program.directory, program.stylesFile), \"utf8\");\n return { ...view, styles: `${frameStyles}\\n${view.styles}`, platformVersion: 2 as const, clientJavaScript: readFileSync(path.join(program.directory, view.clientFile), \"utf8\") };\n }\n installedTools(context: PluginContext): RunFunction[] {\n return this.programsOf(context.view).flatMap((program) => program.functions.flatMap((fn) => !fn.tool || (fn.tool.targets && !fn.tool.targets.includes(context.actorId)) ? [] : [defineRunFunction({\n name: fn.tool.name, label: fn.label, description: fn.description, schema: fn.inputSchema as TSchema, resultSchema: fn.resultSchema as TSchema, available: exposed, executionMode: \"sequential\",\n run: async (scope, id, input) => {\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(context.actor, scope.availableFunctions(), capabilityIds, new Set()).descriptors;\n return this.#executeFunction(context.runId, program, fn, input, { id, kind: \"tool\", principal: { id: context.actorId, kind: context.actor.kind === \"script\" ? \"script\" : \"agent\" }, descriptorsFor, call: (name, value, index) => scope.invokeFunction(`${id}:capability:${index}`, name, value) }, scope.signal ?? new AbortController().signal);\n },\n })]));\n }\n async #serial<T>(runId: string, actorId: string, signal: AbortSignal, execute: () => Promise<T>): Promise<T> {\n const permit = this.invocationPermit(runId);\n const key = `${runId}\\0${actorId}`;\n const previous = this.#queues.get(key) ?? Promise.resolve();\n const operation = previous.then(() => { signal.throwIfAborted(); if (permit !== this.invocationPermit(runId))\n throw new Error(\"Der Run wurde vor dem Funktionsstart gestoppt.\"); this.actor(runId, actorId); return execute(); });\n const queued = operation.then(() => undefined, () => undefined);\n this.#queues.set(key, queued);\n try {\n return await operation;\n }\n finally {\n if (this.#queues.get(key) === queued)\n this.#queues.delete(key);\n }\n }\n async #backend(runId: string, program: ActorProgramDefinition, input: unknown, binding: BackendBinding, descriptors: readonly RunCapabilityDescriptor[], signal: AbortSignal): Promise<{\n result: unknown;\n logs: string[];\n state: JsonValue;\n initial: ActorDataState;\n }> {\n if (!program.backendFile)\n throw new Error(\"Der Actor besitzt kein TypeScript-Backend.\");\n const current = this.#program(runId, program.name);\n if (current.revision !== program.revision)\n throw new Error(\"Das Actor-Paket wurde ersetzt.\");\n const logs: string[] = [];\n let calls = 0;\n const initial = this.data(runId, program.actorId);\n const result = await this.runtime().nativeTypeScriptExecutor.execute({\n program: { entry: program.backendFile, files: [{ fileName: program.backendFile, text: await readFile(path.join(program.directory, program.backendFile), \"utf8\") }], exportName: \"handle\" },\n instanceId: this.#instance(program), cwd: program.directory, input, state: initial.values,\n std: { now: new Date().toISOString(), idPrefix: binding.id }, context: { runId, actor: { id: program.actorId, handle: program.actorHandle }, invocationId: binding.id, invocationKind: binding.kind, principal: binding.principal, capabilities: descriptors },\n }, { signal, log: (value) => { if (logs.length < 100)\n logs.push((typeof value === \"string\" ? value : JSON.stringify(value)).slice(0, 2000)); }, call: async (name, value) => {\n const capability = descriptors.find((entry) => entry.id === name);\n if (!capability)\n throw new Error(`Capability ${name} ist nicht deklariert.`);\n if (++calls > 64)\n throw new Error(\"Ein Aufruf darf h\u00F6chstens 64 Capabilities ausf\u00FChren.\");\n if (program.functions.some((fn) => fn.tool?.name === name))\n throw new Error(\"Eine Actor-Funktion darf sich nicht \u00FCber ein Werkzeug selbst aufrufen; verwende eine gemeinsame TypeScript-Funktion.\");\n checked(capability.schema, value, `Eingabe ${name}`);\n const output = await binding.call(name, value, calls);\n return checked(capability.resultSchema, output, `Ergebnis ${name}`);\n } });\n signal.throwIfAborted();\n this.actor(runId, program.actorId);\n const state = checked(program.stateSchema, result.state, \"Actor-Zustand\");\n return { result: result.result, logs, state, initial };\n }\n #commitState(runId: string, actorId: string, state: JsonValue, initial: ActorDataState): void {\n if (canonicalHash(state) === canonicalHash(initial.values))\n return;\n if (this.data(runId, actorId).revision !== initial.revision)\n throw new Error(\"Der Actor-Zustand wurde w\u00E4hrend des Aufrufs ge\u00E4ndert. Erneut aufrufen.\");\n this.runtime().replaceActorState(this.operatorContext(runId), runId, actorId, state);\n }\n #executeFunction(runId: string, bound: ActorProgramDefinition, declared: ActorFunctionDefinition, input: unknown, binding: BackendBinding, signal: AbortSignal): Promise<JsonValue> {\n const functionOf = (program: ActorProgramDefinition): ActorFunctionDefinition => {\n const fn = program.functions.find((entry) => entry.id === declared.id);\n if (!fn)\n throw new Error(\"Die Funktion ist nicht deklariert.\");\n return fn;\n };\n return this.#serial(runId, bound.actorId, signal, async () => {\n const { program, contract: fn, descriptors } = await this.#bound(runId, bound.actorId, bound.revision, signal, functionOf, binding.descriptorsFor);\n const value = checked(fn.inputSchema, input, `Eingabe ${fn.id}`);\n const result = await this.#backend(runId, program, { kind: \"function\", functionId: fn.id, input: value }, binding, descriptors, signal);\n const output = checked(fn.resultSchema, result.result, `Ergebnis ${fn.id}`);\n this.#commitState(runId, program.actorId, result.state, result.initial);\n binding.output?.push(...result.logs);\n return output;\n });\n }\n async runInput(request: TurnRequest<\"script\">, signal: AbortSignal): Promise<TurnResult> {\n this.#knownRuns.add(request.runId);\n try {\n const inputOf = (program: ActorProgramDefinition) => {\n if (!program.input)\n throw new Error(\"Dieser TypeScript-Actor besitzt keinen onInput-Handler.\");\n return program.input;\n };\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(this.actor(request.runId, request.agentId), request.tools, capabilityIds, new Set()).descriptors;\n await this.#serial(request.runId, request.agentId, signal, async () => {\n const { program, descriptors } = await this.#bound(request.runId, request.agentId, undefined, signal, inputOf, descriptorsFor);\n const binding: BackendBinding = { id: request.turnId, kind: \"input\", principal: { id: request.agentId, kind: \"script\" }, descriptorsFor, call: (name, input, index) => request.invoke(`${request.turnId}:capability:${index}`, name, input) };\n const result = await this.#backend(request.runId, program, { kind: \"input\", input: scriptInputOf(request.input) }, binding, descriptors, signal);\n this.#commitState(request.runId, request.agentId, result.state, result.initial);\n for (const text of result.logs)\n request.emit({ kind: \"runtime\", text });\n });\n return { failure: null, usage: emptyUsage() };\n }\n catch (error) {\n return { failure: errorText(error), usage: emptyUsage() };\n }\n }\n invocationPermit(runId: string): number { if (this.#shuttingDown || this.#stopping.has(runId))\n throw new Error(\"Der Run wird gestoppt.\"); return this.#epochs.get(runId) ?? 0; }\n startInvocation(runId: string, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.#program(runId, viewId);\n if (!program.views.some((view) => view.id === viewId))\n throw new Error(\"Die Ansicht ist unbekannt.\");\n return this.#start(runId, program, viewId, revision, functionId, requestId, input, permit);\n }\n startFunctionInvocation(runId: string, actorHandle: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.programs(runId).find((entry) => entry.actorHandle === handleKey(actorHandle));\n if (!program)\n throw new Error(\"Der Actor ver\u00F6ffentlicht kein Programm.\");\n return this.#start(runId, program, program.name, revision, functionId, requestId, input, permit);\n }\n #start(runId: string, program: ActorProgramDefinition, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit: number): ActorFunctionInvocation {\n this.#knownRuns.add(runId);\n if (permit !== this.invocationPermit(runId))\n throw new Error(\"Der Run wurde inzwischen gestoppt.\");\n if (program.revision !== revision)\n throw new Error(\"Das Actor-Paket wurde ersetzt. Ansicht aktualisieren.\");\n const fn = program.functions.find((entry) => entry.id === functionId);\n if (!fn)\n throw new Error(\"Die Funktion ist nicht deklariert.\");\n const state = this.#invocations(runId);\n const prior = state.invocations.find((entry) => entry.requestId === requestId);\n if (prior) {\n if (prior.actorId !== program.actorId || prior.actionId !== functionId || prior.revision !== revision || canonicalHash(prior.input) !== canonicalHash(input))\n throw new Error(\"Die Request-ID wurde bereits f\u00FCr einen anderen Aufruf verwendet.\");\n return prior;\n }\n if (!requestId || requestId.length > 200 || state.requestIds.includes(requestId))\n throw new Error(\"Ung\u00FCltige oder bereits verarbeitete Request-ID.\");\n if (state.requestIds.length >= 10000)\n throw new Error(\"Der Run hat seine Aufrufgrenze erreicht.\");\n if ([...this.#active.values()].filter((entry) => entry.runId === runId).length >= 8)\n throw new Error(\"Es laufen bereits acht Actor-Funktionen.\");\n checked(fn.inputSchema, input, \"Funktionseingabe\");\n const invocation: ActorFunctionInvocation = { id: randomUUID(), requestId, actorId: program.actorId, actorHandle: program.actorHandle, appId: viewId, revision, actionId: functionId, input, output: [], createdAt: new Date().toISOString(), status: \"queued\" };\n this.#replaceInvocation(runId, invocation, true);\n const controller = new AbortController();\n const completed = Promise.resolve().then(async () => {\n const started = { ...invocation, status: \"running\" as const, startedAt: new Date().toISOString() };\n this.#replaceInvocation(runId, started);\n try {\n if (fn.confirmation && !await this.#confirm(runId, invocation, fn.confirmation, controller.signal))\n throw new Error(\"Die Funktion wurde nicht best\u00E4tigt.\");\n const descriptorsFor = (capabilityIds: readonly string[]) => operatorCapabilityBinding(this.ownerId(runId), this.#options.operations.list(), capabilityIds).descriptors;\n const output: string[] = [];\n const result = await this.#executeFunction(runId, program, fn, input, { output, id: invocation.id, kind: \"app-action\", principal: { id: this.ownerId(runId), kind: \"operator\" }, descriptorsFor, call: async (name, value, index) => {\n const operation = this.#options.operations.operation(name)!;\n const id = `${invocation.id}:capability:${index}`;\n const confirmation = operation.operator === \"confirm\" ? await this.#confirm(runId, invocation, `${operation.label} ausf\u00FChren?`, controller.signal, value) : true;\n if (!confirmation)\n throw new Error(\"Die Aktion wurde nicht best\u00E4tigt.\");\n return this.#options.operations.invoke(name, { runId, invocationId: id, principal: { kind: \"operator\", actorId: this.ownerId(runId) }, signal: controller.signal, ...(operation.operator === \"confirm\" ? { operatorConfirmation: { operationId: name, invocationId: id, inputHash: canonicalHash(value) } } : {}) }, value);\n } }, controller.signal);\n this.#replaceInvocation(runId, { ...started, status: \"succeeded\", result, output, finishedAt: new Date().toISOString() });\n }\n catch (error) {\n this.#replaceInvocation(runId, { ...started, status: controller.signal.aborted ? \"cancelled\" : \"failed\", error: errorText(error).slice(0, 8000), finishedAt: new Date().toISOString() });\n }\n }).finally(() => this.#active.delete(invocation.id));\n this.#active.set(invocation.id, { runId, actorId: program.actorId, controller, completed });\n return invocation;\n }\n invocation(runId: string, reference: string, id: string): ActorFunctionInvocation {\n const invocation = this.#invocations(runId).invocations.find((entry) => entry.id === id && (entry.appId === reference || entry.actorHandle === reference));\n if (!invocation)\n throw new Error(\"Der Funktionsaufruf ist unbekannt.\");\n return invocation;\n }\n #invocations(runId: string): InvocationState { return (this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_INVOCATIONS_STATE_ID && entry.scope.kind === \"run\")?.state as unknown as InvocationState) ?? { version: 1, invocations: [], requestIds: [] }; }\n #replaceInvocation(runId: string, invocation: ActorFunctionInvocation, remember = false): void {\n const current = this.#invocations(runId);\n const entries = [...current.invocations.filter((entry) => entry.id !== invocation.id), invocation];\n const active = entries.filter((entry) => entry.status === \"queued\" || entry.status === \"running\");\n const finished = entries.filter((entry) => entry.status !== \"queued\" && entry.status !== \"running\").slice(-20);\n const state: InvocationState = { version: 1, invocations: [...active, ...finished], requestIds: remember ? [...current.requestIds, invocation.requestId] : current.requestIds };\n while (jsonBytes(state) > MAX_INVOCATIONS_STATE_BYTES && finished.length) {\n finished.shift();\n state.invocations = [...active, ...finished];\n }\n assertJsonValue(state, \"Actor-Aufrufe\");\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_INVOCATIONS_STATE_ID, scope: { kind: \"run\" }, state });\n }\n async #confirm(runId: string, invocation: ActorFunctionInvocation, question: string, signal: AbortSignal, input = invocation.input): Promise<boolean> {\n const answer = await this.#options.askService().ask({ runId, agentId: this.ownerId(runId), turnId: null, commandId: `actor-confirm:${randomUUID()}` }, { question: `${question}\\nEingabe: ${JSON.stringify(input).slice(0, 500)}`, options: [\"Ausf\u00FChren\", \"Abbrechen\"], multi: false, description: `Funktion ${invocation.actionId} von @${invocation.actorHandle}`, parameters: { source: ACTOR_PROGRAMS_STATE_ID, invocationId: invocation.id } }, signal);\n return answer === \"Ausf\u00FChren\";\n }\n #program(runId: string, reference: string): ActorProgramDefinition {\n const program = this.programs(runId).find((entry) => entry.name === reference || entry.views.some((view) => view.id === reference));\n if (!program)\n throw new Error(`Actor-Paket ${reference} ist nicht aktiv.`);\n return program;\n }\n #instance(program: ActorProgramDefinition): string { return `actor:${program.actorId}:${program.revision}`; }\n #assertName(name: string): void { if (!NAME.test(name))\n throw new Error(\"Paketnamen beginnen mit einem Kleinbuchstaben und enthalten h\u00F6chstens 64 Kleinbuchstaben, Ziffern oder Bindestriche.\"); }\n #assertIdle(runId: string, actorId: string): void { if (this.#queues.has(`${runId}\\0${actorId}`) || [...this.#active.values()].some((entry) => entry.runId === runId && entry.actorId === actorId))\n throw new Error(\"Der Actor hat noch laufende Funktionen oder Eingaben.\"); }\n async stopActor(runId: string, actorId: string): Promise<void> {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId && entry.actorId === actorId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Actor gestoppt.\")));\n const state = this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" && entry.scope.actorId === actorId)?.state as unknown as ActorProgramState | undefined;\n if (state?.program)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(state.program));\n await Promise.allSettled(active.map((entry) => entry.completed));\n }\n async stopRun(runId: string): Promise<void> {\n this.#epochs.set(runId, (this.#epochs.get(runId) ?? 0) + 1);\n this.#stopping.add(runId);\n try {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Run gestoppt.\")));\n await this.runtime().nativeTypeScriptExecutor.stopRun(runId);\n await Promise.allSettled([...active.map((entry) => entry.completed), ...[...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue)]);\n }\n finally {\n this.#stopping.delete(runId);\n }\n }\n waitForRunSettlement(runId: string): Promise<void> { return Promise.allSettled([...this.#active.values()].filter((entry) => entry.runId === runId).map((entry) => entry.completed).concat([...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue))).then(() => undefined); }\n async prepareSession(runId: string): Promise<void> { this.#knownRuns.add(runId); if (!this.runtime().listRuns().some(run => run.id === runId))\n return; for (const invocation of this.#invocations(runId).invocations)\n if (invocation.status === \"queued\" || invocation.status === \"running\")\n this.#replaceInvocation(runId, { ...invocation, status: \"cancelled\", error: \"Der Server wurde w\u00E4hrend des Aufrufs beendet.\", finishedAt: new Date().toISOString() }); }\n async stopSession(runId: string, _signal?: AbortSignal): Promise<void> { await this.stopRun(runId); }\n async disposeRun(runId: string): Promise<void> { await this.stopRun(runId); }\n async deleteSession(runId: string): Promise<void> { await this.stopRun(runId); await rm(this.#options.directoryFor(runId), { recursive: true, force: true }); }\n async shutdown(): Promise<void> { this.#shuttingDown = true; await Promise.allSettled([...this.#knownRuns].map((runId) => this.stopRun(runId))); }\n}\n", "import { assertJsonValue, type JsonValue } from \"@ragents/engine\";\n\nconst MAX_JSON_BYTES = 250_000;\nconst MAX_JSON_DEPTH = 24;\nconst MAX_JSON_KEY_LENGTH = 256;\nexport const MAX_INVOCATIONS_STATE_BYTES = 8 * 1024 * 1024;\n\nexport const jsonBytes = (value: unknown): number => Buffer.byteLength(JSON.stringify(value), \"utf8\");\n\nexport const jsonValue = <T>(value: T, label: string): T & JsonValue => {\n assertJsonValue(value, label);\n const text = JSON.stringify(value);\n if (Buffer.byteLength(text, \"utf8\") > MAX_JSON_BYTES)\n throw new Error(`${label} ist gr\u00F6\u00DFer als ${MAX_JSON_BYTES} Byte.`);\n const pending: Array<{ value: unknown; depth: number }> = [{ value, depth: 0 }];\n while (pending.length > 0) {\n const current = pending.pop()!;\n if (current.depth > MAX_JSON_DEPTH)\n throw new Error(`${label} ist tiefer als ${MAX_JSON_DEPTH} Ebenen verschachtelt.`);\n if (Array.isArray(current.value)) {\n current.value.forEach((entry) => pending.push({ value: entry, depth: current.depth + 1 }));\n continue;\n }\n if (current.value && typeof current.value === \"object\") {\n Object.entries(current.value).forEach(([key, entry]) => {\n if (key.length > MAX_JSON_KEY_LENGTH)\n throw new Error(`${label} enth\u00E4lt einen Schl\u00FCssel mit mehr als ${MAX_JSON_KEY_LENGTH} Zeichen.`);\n pending.push({ value: entry, depth: current.depth + 1 });\n });\n }\n }\n return value;\n};\n", "import {\n runCapabilityBindingHash,\n runCapabilityContractHash,\n type Actor,\n type RunFunction,\n type RunCapabilityDescriptor,\n} from \"@ragents/engine\";\n\nimport type { OperationDescriptorPort } from \"./operations.js\";\n\nexport interface ResolvedCapabilityBinding {\n descriptors: readonly RunCapabilityDescriptor[];\n descriptorContractHash: string;\n bindingContractHash: string;\n}\n\nconst descriptorOf = (capability: {\n id: string;\n label: string;\n description: string;\n schema: RunCapabilityDescriptor[\"schema\"];\n resultSchema: RunCapabilityDescriptor[\"resultSchema\"];\n}): RunCapabilityDescriptor => ({\n id: capability.id,\n label: capability.label,\n description: capability.description,\n schema: capability.schema,\n resultSchema: capability.resultSchema,\n});\n\nconst selected = <T>(\n available: readonly T[],\n capabilityIds: readonly string[],\n idOf: (value: T) => string,\n unavailable: (id: string, names: string) => Error,\n): T[] => {\n const byId = new Map(available.map((value) => [idOf(value), value]));\n return capabilityIds.map((id) => {\n const value = byId.get(id);\n if (!value) throw unavailable(id, [...byId.keys()].sort().join(\", \") || \"keine\");\n return value;\n });\n};\n\nexport const operatorCapabilityBinding = (\n actorId: string,\n operations: readonly OperationDescriptorPort[],\n capabilityIds: readonly string[],\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n operations.filter((operation) => operation.operator !== \"unavailable\"),\n capabilityIds,\n (operation) => operation.id,\n (id, names) => new Error(`Capability ${id} ist f\u00FCr den Bediener nicht verf\u00FCgbar. Verf\u00FCgbar sind: ${names}.`),\n );\n const descriptors = resolved.map(descriptorOf);\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actorId, kind: \"operator\" },\n capabilities: descriptors,\n policies: resolved.map((operation) => ({ id: operation.id, policy: operation.operator })),\n }),\n };\n};\n\nexport const agentCapabilityBinding = (\n actor: Actor,\n tools: readonly RunFunction[],\n capabilityIds: readonly string[],\n blockedNames: ReadonlySet<string>,\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n tools.filter((tool) => !blockedNames.has(tool.name)),\n capabilityIds,\n (tool) => tool.name,\n (id, names) => new Error(\n `Capability ${id} ist f\u00FCr @${actor.handle} nicht verf\u00FCgbar. Verf\u00FCgbar sind: ${names}.`,\n ),\n );\n const descriptors = resolved.map((tool) => descriptorOf({ ...tool, id: tool.name }));\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actor.id, kind: actor.kind === \"script\" ? \"script\" : \"agent\", grants: actor.grants },\n capabilities: descriptors,\n policies: descriptors.map((descriptor) => ({ id: descriptor.id, policy: \"agent\" })),\n }),\n };\n};\n", "import type { ActorProgramTemplate } from \"./templates\";\n\nexport const controlsTemplate: ActorProgramTemplate = {\n id: \"controls\",\n title: \"UI-Controls ausprobieren\",\n description: \"Lokale Demo mit Formular, Tabelle, Dateien, Aufgaben, Ablaufdiagramm, SVG-Verbindungen, Nachrichten, Dokument und Diff ohne Funktionsaufrufe.\",\n ragents: {\n title: \"UI-Controls ausprobieren\",\n description: \"Eine lokale Demo der vorhandenen Mini-App-Controls. Werte und Dateien bleiben in dieser Ansicht.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\ntype Row = { id: string; name: string; count: number };\nconst rows: Row[] = [\n { id: \"analysis\", name: \"Analyse\", count: 12 },\n { id: \"review\", name: \"Review\", count: 4 },\n { id: \"notes\", name: \"Dokumentation\", count: 8 },\n];\n\nconst App = () => {\n const [values, setValues] = React.useState<FormValues>({ title: \"Ergebnisse pr\u00FCfen\", notes: \"\", count: 3, mode: \"review\", approved: false });\n const [selected, setSelected] = React.useState<string[]>([]);\n const [files, setFiles] = React.useState<File[]>([]);\n const [result, setResult] = React.useState(\"Noch keine Formularwerte \u00FCbernommen.\");\n const [messages, setMessages] = React.useState<Parameters<typeof UI.MessageList>[0][\"messages\"]>([\n { key: \"editorial\", sender: \"Redaktion\", text: \"Der Hinweis soll **kurz und verst\u00E4ndlich** bleiben.\" },\n { key: \"review\", sender: \"Textpr\u00FCfung\", text: \"\u00D6ffnungszeiten und Reparaturhinweis bleiben erhalten.\" },\n ]);\n const [done, setDone] = React.useState(false);\n return <UI.AppLayout title=\"UI-Controls ausprobieren\" description=\"Lokale Demo: keine Agenten, Uploads oder Serveraktionen. Werte und Dateiauswahl bleiben nur in dieser Ansicht und werden beim Neuladen zur\u00FCckgesetzt.\">\n <UI.Stack gap=\"large\">\n <UI.Form title=\"Formular\" fields={[\n { id: \"title\", label: \"Auftrag\", type: \"text\", placeholder: \"Was soll bearbeitet werden?\", required: true },\n { id: \"notes\", label: \"Hinweise\", type: \"textarea\", rows: 3, placeholder: \"Was soll bei der Bearbeitung ber\u00FCcksichtigt werden?\", hint: \"Mehrzeiliger Text bleibt im Formular ausgerichtet.\" },\n { id: \"count\", label: \"Anzahl\", type: \"number\", placeholder: \"Anzahl der Ergebnisse\", hint: \"1 bis 10 Ergebnisse.\", required: true, min: 1, max: 10 },\n { id: \"mode\", label: \"Modus\", type: \"select\", options: [{ value: \"review\", label: \"Pr\u00FCfen\" }, { value: \"draft\", label: \"Entwerfen\" }] },\n { id: \"approved\", label: \"Auswahl best\u00E4tigt\", type: \"checkbox\", required: true },\n ]} values={values} onChange={setValues} onSubmit={async (next) => { setResult(JSON.stringify(next, null, 2)); }} submitLabel=\"Werte lokal anzeigen\" />\n <UI.Stack gap=\"small\">\n <UI.DataTable<Row> title=\"Datentabelle\" rows={rows} rowKey={(row) => row.id} filterable\n selectedKeys={selected} onSelectionChange={setSelected}\n columns={[{ id: \"name\", label: \"Arbeit\", value: (row) => row.name, sortable: true }, { id: \"count\", label: \"Ergebnisse\", value: (row) => row.count, sortable: true }]}\n actions={[{ id: \"select\", label: \"Ausw\u00E4hlen\", onClick: (row) => { setSelected([row.id]); } }]} />\n <p aria-live=\"polite\">{selected.length} Zeilen ausgew\u00E4hlt</p>\n </UI.Stack>\n <UI.FilePicker label=\"Lokale Dateiauswahl\" files={files} onChange={setFiles} maxFiles={5} maxBytes={10 * 1024 * 1024} />\n <UI.Stack gap=\"small\">\n <UI.TaskProgress title=\"Beispielaufgaben\" tasks={[\n { id: \"read\", label: \"Unterlagen lesen\", status: \"done\" },\n { id: \"review\", label: \"Ergebnisse pr\u00FCfen\", status: done ? \"done\" : \"pending\", description: \"Lokaler Beispielstatus, kein laufender Actor.\" },\n ]} />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setDone((current) => !current)}>Beispielstatus umschalten</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>Ablaufdiagramm</h2>\n <p>Das Diagramm erh\u00E4lt seinen Zustand aus denselben Daten wie die Aufgabenliste.</p>\n <UI.FlowDiagram label={done ? \"Eingang, Pr\u00FCfung fertig, Ergebnis bereit\" : \"Eingang, Pr\u00FCfung l\u00E4uft, Ergebnis ausstehend\"}\n nodes={[\n { id: \"input\", label: \"Eingang\", detail: \"Unterlagen liegen vor\", status: \"done\", kind: \"service\" },\n { id: \"check\", label: \"Pr\u00FCfung\", detail: done ? \"Pr\u00FCfung abgeschlossen\" : \"Unterlagen werden gepr\u00FCft\", status: done ? \"done\" : \"active\", kind: \"agent\" },\n { id: \"result\", label: \"Ergebnis\", detail: done ? \"Ergebnis bereit\" : \"Wartet auf die Pr\u00FCfung\", status: done ? \"done\" : \"pending\", kind: \"actor\" },\n ]}\n edges={[{ source: \"input\", target: \"check\" }, { source: \"check\", target: \"result\" }]} />\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>SVG-Verbindungen</h2>\n <p>SvgEdge zeichnet die Kanten. Knoten, Beschriftungen und Positionen stehen im Code dieser Ansicht.</p>\n <svg viewBox=\"0 0 360 160\" role=\"img\" aria-label={done ? \"Eingang fertig, Pr\u00FCfung abgeschlossen, Ergebnis bereit\" : \"Eingang fertig, Pr\u00FCfung l\u00E4uft, Ergebnis offen\"}\n className=\"block h-auto w-full text-[13px]\">\n <UI.SvgEdge d=\"M112 42 L144 42\" tone={done ? \"success\" : \"warning\"} active={!done} />\n <UI.SvgEdge d=\"M252 42 C320 42 320 118 252 118\" arrow={done ? \"end\" : \"none\"} tone={done ? \"success\" : \"neutral\"} lineStyle={done ? \"solid\" : \"dashed\"} />\n <UI.SvgEdge d=\"M144 118 C64 118 64 96 64 72\" arrow=\"both\" tone=\"accent\" />\n {[{ x: 8, y: 12, label: \"Eingang\", status: \"Fertig\" },\n { x: 148, y: 12, label: \"Pr\u00FCfung\", status: done ? \"Fertig\" : \"L\u00E4uft\" },\n { x: 148, y: 88, label: \"Ergebnis\", status: done ? \"Bereit\" : \"Offen\" }].map((node) => <g key={node.label}>\n <rect x={node.x} y={node.y} width=\"104\" height=\"56\" rx=\"8\" className=\"fill-background stroke-border-strong\" />\n <text x={node.x + 52} y={node.y + 23} textAnchor=\"middle\" className=\"fill-foreground font-semibold\">{node.label}</text>\n <text x={node.x + 52} y={node.y + 42} textAnchor=\"middle\" className=\"fill-muted-foreground text-[11px]\">{node.status}</text>\n </g>)}\n </svg>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <UI.MessageList messages={messages} label=\"Lokale Redaktionsnotizen\" />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setMessages((current) => [...current, {\n key: \"note-\" + current.length, sender: current.length % 2 ? \"Textpr\u00FCfung\" : \"Redaktion\",\n text: \"Lokale Beispielnotiz \" + (current.length - 1) + \": Diese Nachricht wurde gerade erg\u00E4nzt.\",\n }])}>Lokale Nachricht erg\u00E4nzen</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.DocumentViewer title=\"Lokales Formularergebnis\" format=\"text\" content={result} />\n <UI.DiffViewer title=\"Beispiel\u00E4nderung\" patch={\"--- a/result.txt\\\\n+++ b/result.txt\\\\n@@ -1 +1 @@\\\\n-Status: offen\\\\n+Status: gepr\u00FCft\"} />\n </UI.Stack>\n </UI.AppLayout>;\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Das Wurzelelement #root fehlt.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n", "import type { AppPackage } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { controlsTemplate } from \"./controls-template\";\n\nexport interface ActorProgramTemplate {\n id: string;\n title: string;\n description: string;\n ragents: AppPackage;\n files: Readonly<Record<string, string>> & { readonly \"package.json\"?: never };\n}\n\nconst blank: ActorProgramTemplate = {\n id: \"blank\",\n title: \"Leere Mini-App\",\n description: \"Eine reine React-View am vorhandenen Actor ohne zus\u00E4tzliche Serverfunktion.\",\n ragents: {\n title: \"Meine View\",\n description: \"Eine kleine Bedienoberfl\u00E4che des vorhandenen Actors.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\nconst App = () => (\n <UI.AppLayout title=\"Meine View\">\n <UI.Stack><p>Bereit f\u00FCr deine Inhalte.</p></UI.Stack>\n </UI.AppLayout>\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Das Wurzelelement #root fehlt.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst chat: ActorProgramTemplate = {\n id: \"chat\",\n title: \"Actor-Chat\",\n description: \"Wiederverwendbarer Chat mit Verlauf und optionaler Eingabe an den Actor dieser View.\",\n ragents: {\n title: \"Actor-Chat\",\n description: \"Zeigt das Gespr\u00E4ch mit einem Actor und sendet ihm Benutzereingaben.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\nimport { context } from \"@ragents/client\";\n\nconst App = () => (\n <UI.Chat actor={\"@\" + context.actor.handle} className=\"h-full\" showInput placeholder=\"Nachricht an den Actor\" />\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Das Wurzelelement #root fehlt.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst textAnalysis: ActorProgramTemplate = {\n id: \"text-analysis\",\n title: \"Textanalyse\",\n description: \"Ein TypeScript-Actor analysiert Texte mit eigener Funktion, Zustand und React-View.\",\n ragents: {\n title: \"Textanalyse\",\n description: \"Z\u00E4hlt Zeichen, W\u00F6rter und Zeilen und merkt sich die Zahl der Analysen.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [result, setResult] = React.useState(\"Bereit\");\n\n const analyse = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"analyse\", { text: String(next.text ?? \"\") });\n setResult([\n \\`Zeichen: \\${answer.characters}\\`,\n \\`W\u00F6rter: \\${answer.words}\\`,\n \\`Zeilen: \\${answer.lines}\\`,\n ].join(\"\\\\n\"));\n };\n\n return (\n <UI.AppLayout title=\"Textanalyse\" description={<>Analysen: {state.analyses ?? 0}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"Text\", type: \"textarea\", rows: 6, placeholder: \"Text eingeben\" },\n ]} values={values} onChange={setValues} onSubmit={analyse} submitLabel=\"Analysieren\" />\n <UI.Stack><pre aria-live=\"polite\" className=\"min-h-[90px] overflow-auto rounded-md border border-border bg-muted p-2.5 font-mono whitespace-pre-wrap\">{result}</pre></UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Das Wurzelelement #root fehlt.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ analyses: Type.Optional(Type.Integer({\"minimum\": 0})) }, {\"additionalProperties\": false}),\n functions: {\n analyse: {\n label: \"Text analysieren\",\n description: \"Z\u00E4hlt W\u00F6rter, Zeichen und Zeilen ohne externe Wirkung.\",\n tool: { name: \"analyse_text\" },\n input: Type.Object({ text: Type.String({\"description\": \"Der zu analysierende Text.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), characters: Type.Integer({\"minimum\": 0}), words: Type.Integer({\"minimum\": 0}), lines: Type.Integer({\"minimum\": 0}), analyses: Type.Integer({\"minimum\": 1}) }, {\"additionalProperties\": false}),\n capabilities: [],\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n analyse: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const analyses = (state.analyses ?? 0) + 1;\n context.state.replace({ analyses });\n\n return {\n text,\n characters: text.length,\n words: text ? text.split(/\\\\s+/).length : 0,\n lines: text ? text.split(/\\\\r?\\\\n/).length : 0,\n analyses,\n };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"z\u00E4hlt W\u00F6rter, Zeilen und weitere Analysen\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.analyse({\"text\": \" Hallo Welt\\\\nNeue Zeile \"}, context), {\"text\": \"Hallo Welt\\\\nNeue Zeile\", \"characters\": 21, \"words\": 4, \"lines\": 2, \"analyses\": 1});\n assert.deepEqual(await program.functions.analyse({\"text\": \"\"}, context), {\"text\": \"\", \"characters\": 0, \"words\": 0, \"lines\": 0, \"analyses\": 2});\n assert.deepEqual(context.state.read(), {\"analyses\": 2});\n});\n`,\n },\n};\n\nconst headlessCounter: ActorProgramTemplate = {\n id: \"headless-counter\",\n title: \"Z\u00E4hler ohne Oberfl\u00E4che\",\n description: \"Ein TypeScript-Actor z\u00E4hlt Eingaben in seinem Zustand und bietet dieselbe Arbeit als Funktion an.\",\n ragents: {\n title: \"Z\u00E4hler\",\n description: \"Sammelt eingehende Texte ohne Modellaufrufe oder Oberfl\u00E4che.\",\n backend: \"src/server.ts\",\n },\n files: {\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nconst state = Type.Object({\n texts: Type.Optional(Type.Array(Type.String())),\n count: Type.Optional(Type.Integer({ minimum: 0 })),\n}, { additionalProperties: false });\n\nexport const contract = {\n state,\n functions: {\n record: {\n label: \"Text z\u00E4hlen\",\n input: Type.Object({ text: Type.String() }, { additionalProperties: false }),\n output: Type.Object({ count: Type.Integer(), texts: Type.Array(Type.String()) }, { additionalProperties: false }),\n tool: { name: \"record_text\" },\n },\n inspect: {\n label: \"Z\u00E4hler lesen\",\n input: Type.Object({}, { additionalProperties: false }),\n output: state,\n tool: { name: \"read_counter\" },\n },\n },\n input: { capabilities: [] },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport type { Static } from \"typebox\";\nimport { contract } from \"./contract.ts\";\n\nconst record = (state: Static<typeof contract.state>, text: string) => {\n const texts = [...(state.texts ?? []), text];\n return { texts, count: texts.length };\n};\n\nexport default defineActor(contract, {\n functions: {\n record: (input, context) => {\n const result = record(context.state.read(), input.text);\n context.state.replace(result);\n return result;\n },\n inspect: (_input, context) => context.state.read(),\n },\n onInput: (input, context) => {\n context.state.replace(record(context.state.read(), input.content));\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"Eingaben und Funktionen teilen denselben Z\u00E4hler\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n for (const content of [\"eins\", \"zwei\", \"drei\"]) {\n await program.onInput!({ id: content, content, artifactIds: [], sourceEventIds: [], subscriptionId: null, event: null }, context);\n }\n assert.deepEqual(await program.functions.inspect({}, context), { texts: [\"eins\", \"zwei\", \"drei\"], count: 3 });\n assert.deepEqual(await program.functions.record({ text: \"vier\" }, context), { texts: [\"eins\", \"zwei\", \"drei\", \"vier\"], count: 4 });\n assert.deepEqual(context.state.read(), { texts: [\"eins\", \"zwei\", \"drei\", \"vier\"], count: 4 });\n});\n`,\n },\n};\n\nconst sharedList: ActorProgramTemplate = {\n id: \"shared-list\",\n title: \"Gemeinsame Liste eines Actors\",\n description: \"Ein Actor besitzt eine Funktion und eine React-View f\u00FCr denselben Listenstand.\",\n ragents: {\n title: \"Gemeinsame Liste\",\n description: \"Sammelt Texte aus der App und aus einem Agenten-Werkzeug in einer gemeinsamen Liste.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [status, setStatus] = React.useState(\"Bereit\");\n const entries = state.entries ?? [];\n\n const append = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"append\", { text: String(next.text ?? \"\") });\n setValues({ text: \"\" });\n setStatus(\\`Hinzugef\u00FCgt: \\${answer.text}\\`);\n };\n\n return (\n <UI.AppLayout title=\"Gemeinsame Liste\" description={<>{entries.length} {entries.length === 1 ? \"Eintrag\" : \"Eintr\u00E4ge\"}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"Neuer Eintrag\", type: \"textarea\", placeholder: \"Text eingeben\" },\n ]} values={values} onChange={setValues} onSubmit={append} submitLabel=\"Hinzuf\u00FCgen\" />\n <UI.Stack>\n <p className=\"text-muted-foreground\" role=\"status\">{status}</p>\n <ul className=\"border-t border-border\">\n {entries.map((entry, index) => <li className=\"min-h-[31px] border-b border-border-soft py-1.5 [overflow-wrap:anywhere]\" key={index}>{entry}</li>)}\n </ul>\n </UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"Das Wurzelelement #root fehlt.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ entries: Type.Optional(Type.Array(Type.String())) }, {\"additionalProperties\": false}),\n functions: {\n append: {\n label: \"Eintrag hinzuf\u00FCgen\",\n description: \"H\u00E4ngt den eingegebenen Text an die gemeinsame Liste an.\",\n input: Type.Object({ text: Type.String({\"description\": \"Der Text f\u00FCr den neuen Listeneintrag.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), entries: Type.Array(Type.String()) }, {\"additionalProperties\": false}),\n capabilities: [],\n tool: { name: \"append_to_list\", card: true },\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n append: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const entries = [...(state.entries ?? []), text];\n context.state.replace({ entries });\n return { text, entries };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"erg\u00E4nzt Eintr\u00E4ge ohne vorhandene Eintr\u00E4ge zu verlieren\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.append({\"text\": \" Erster Eintrag \"}, context), {\"text\": \"Erster Eintrag\", \"entries\": [\"Erster Eintrag\"]});\n assert.deepEqual(await program.functions.append({\"text\": \"Zweiter Eintrag\"}, context), {\"text\": \"Zweiter Eintrag\", \"entries\": [\"Erster Eintrag\", \"Zweiter Eintrag\"]});\n assert.deepEqual(context.state.read(), {\"entries\": [\"Erster Eintrag\", \"Zweiter Eintrag\"]});\n});\n`,\n },\n};\n\nexport const runModuleTemplates = [blank, chat, controlsTemplate, textAnalysis, headlessCounter, sharedList] as const;\n\nexport const templateFiles = (template: ActorProgramTemplate, name: string): Readonly<Record<string, string>> => ({\n \"package.json\": `${JSON.stringify({ name, private: true, type: \"module\", ragents: template.ragents }, null, 2)}\\n`,\n ...template.files,\n});\n\nexport const templateById = (id: string): ActorProgramTemplate => {\n const template = runModuleTemplates.find((candidate) => candidate.id === id);\n if (!template) throw new Error(`Unbekannte Actor-Programm-Vorlage ${id}. G\u00FCltig: ${runModuleTemplates.map((entry) => entry.id).join(\", \")}.`);\n return template;\n};\n", "import { realpath } from \"node:fs/promises\";\n\n/** A node:test reporter that writes one JSON line per passed test, failed test and stderr line of a test file. */\nconst reporterSource = `\nimport { inspect } from \"node:util\";\nconst shown = (value) => inspect(value, { depth: 4, breakLength: Infinity, maxArrayLength: 20, maxStringLength: 200 }).slice(0, 300);\nexport default async function* (source) {\n for await (const { type, data } of source) {\n if (type === \"test:pass\" && data.details?.type !== \"suite\") yield JSON.stringify({ kind: \"pass\" }) + \"\\\\n\";\n if (type === \"test:fail\" && data.details?.type !== \"suite\" && data.details?.error?.failureType !== \"subtestsFailed\") {\n const error = data.details.error;\n const cause = error.cause instanceof Error ? error.cause : error;\n const assertion = cause.code === \"ERR_ASSERTION\";\n yield JSON.stringify({ kind: \"fail\", name: data.name, file: data.file ?? null, line: data.line ?? null, column: data.column ?? null,\n message: String(cause.message), generated: cause.generatedMessage === true, stack: String(cause.stack ?? \"\"),\n ...(assertion ? { expected: shown(cause.expected), actual: shown(cause.actual) } : {}) }) + \"\\\\n\";\n }\n if (type === \"test:stderr\") yield JSON.stringify({ kind: \"stderr\", file: data.file ?? null, message: String(data.message) }) + \"\\\\n\";\n }\n}\n`;\n\nexport const testReporterArgument = `--test-reporter=data:text/javascript,${encodeURIComponent(reporterSource)}`;\n\ntype TestRecord =\n | { kind: \"pass\" }\n | { kind: \"fail\"; name: string; file: string | null; line: number | null; column: number | null; message: string; generated: boolean; stack: string; expected?: string; actual?: string }\n | { kind: \"stderr\"; file: string | null; message: string };\n\nconst maxDetailed = 10;\nconst frameLine = /^\\s+at /;\n\n/** The lines of an error output that name the error, without stack frames, code excerpts and the Node version. */\nconst errorLines = (lines: readonly string[]): string[] => {\n const meaningful = lines.map((line) => line.trimEnd()).filter((line) => line.trim() !== \"\" && !frameLine.test(line) && !/^Node\\.js v\\d/.test(line) && !/^\\s*\\^+$/.test(line));\n const named = meaningful.filter((line) => /^[A-Za-z]*Error\\b/.test(line));\n return (named.length > 0 ? named : meaningful.slice(-5)).slice(0, 5);\n};\n\n/** Collects the reporter lines of a test run and turns them into a short failure report: counts, and per failed test its name, message, expected and actual values and its place in the program. */\nexport const createTestReport = async (directory: string) => {\n const roots = [...new Set([directory, await realpath(directory)])].sort((left, right) => right.length - left.length);\n const relative = (text: string): string => roots.reduce((result, root) => result.replaceAll(`file://${root}/`, \"\").replaceAll(`${root}/`, \"\"), text);\n const failures: Extract<TestRecord, { kind: \"fail\" }>[] = [];\n const stderrByFile = new Map<string, string[]>();\n const unparsed: string[] = [];\n let passed = 0;\n let failed = 0;\n let pending = \"\";\n\n const record = (line: string): void => {\n if (line.trim() === \"\") return;\n let parsed: TestRecord;\n try {\n parsed = JSON.parse(line) as TestRecord;\n } catch {\n unparsed.push(line);\n return;\n }\n if (parsed.kind === \"pass\") passed += 1;\n if (parsed.kind === \"fail\") {\n failed += 1;\n if (failures.length < maxDetailed) failures.push(parsed);\n }\n if (parsed.kind === \"stderr\") {\n const lines = stderrByFile.get(parsed.file ?? \"\") ?? [];\n stderrByFile.set(parsed.file ?? \"\", [...lines, ...parsed.message.split(\"\\n\")].slice(-50));\n }\n };\n\n const placeOf = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const frame = failure.stack.split(\"\\n\").filter((line) => frameLine.test(line)).map(relative)\n .map((line) => /\\(?([^\\s()]+:\\d+:\\d+)\\)?\\s*$/.exec(line)?.[1])\n .find((place) => place !== undefined && !place.startsWith(\"/\") && !place.startsWith(\"node:\") && !place.includes(\"node_modules/\"));\n const declared = failure.file === null ? failure.name : `${relative(failure.file)}${failure.line === null ? \"\" : `:${failure.line}:${failure.column ?? 1}`}`;\n return frame ?? declared;\n };\n\n const describe = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const fileOutput = failure.message === \"test failed\" && failure.file !== null ? stderrByFile.get(failure.file) ?? stderrByFile.get(relative(failure.file)) : undefined;\n const message = fileOutput ? errorLines(fileOutput).join(\"; \") : failure.generated ? failure.message.split(\"\\n\")[0]!.replace(/:$/, \"\") : failure.message.trim().slice(0, 500);\n const values = failure.expected === undefined || failure.expected === failure.actual ? \"\" : ` - erwartet ${failure.expected}, tats\u00E4chlich ${failure.actual}`;\n return `- ${failure.name} (${placeOf(failure)}): ${relative(message)}${relative(values)}`;\n };\n\n return {\n stdout: (chunk: string): void => {\n const lines = (pending + chunk).split(\"\\n\");\n pending = lines.pop() ?? \"\";\n lines.forEach(record);\n },\n report: (name: string, outcome: { code: number | null; timedOut: boolean; stderr: string }): string => {\n record(pending);\n pending = \"\";\n const summary = outcome.timedOut\n ? `Tests f\u00FCr ${name} nach Zeit\u00FCberschreitung abgebrochen: ${passed} bestanden, ${failed} fehlgeschlagen.`\n : `Tests f\u00FCr ${name} fehlgeschlagen: ${passed} bestanden, ${failed} fehlgeschlagen.`;\n const details = failures.map(describe);\n const more = failed > failures.length ? [`... und ${failed - failures.length} weitere`] : [];\n const withoutResult = failed === 0\n ? [`Der Testlauf endete${outcome.code === null ? \"\" : ` mit Code ${outcome.code}`} ohne fehlgeschlagenen Test:`, ...errorLines([...unparsed, ...outcome.stderr.split(\"\\n\")]).map(relative)]\n : [];\n return [summary, ...details, ...more, ...withoutResult].join(\"\\n\");\n },\n };\n};\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, holdsUsable, type RunFunction, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\nimport type { createProjectDiagnostics } from \"./project-diagnostics.js\";\nconst metadata = [\n { name: \"actor_program_create\", label: \"Create Actor Program\", description: \"Create a private TypeScript package with fixed libraries.\", longDescription: \"Edit files under @actors/name using workspace tools.\" },\n { name: \"actor_program_activate\", label: \"Activate Actor Program\", description: \"Typecheck, build and test a package, then activate its functions and optional views.\", longDescription: \"actor self or @handle attaches to an existing actor; omitted creates a TypeScript actor for a backend, or attaches static views to self.\" },\n { name: \"actor_program_list\", label: \"List Actor Programs\", description: \"List active actor packages, functions and views.\" },\n { name: \"actor_program_remove\", label: \"Remove Actor Program\", description: \"Detach functions and views and stop the backend.\", longDescription: \"A TypeScript actor is stopped; an LLM actor retains its agent behavior.\" },\n { name: \"actor_view_set_visibility\", label: \"Show or hide Actor View\", description: \"Set surface visibility by package-name/view-key or @handle/view-key.\", longDescription: \"Use names you chose; the server resolves the view ID. A unique view title also works.\" },\n { name: \"actor_program_diagnostics\", label: \"Actor Program Diagnostics\", description: \"Read the last project diagnostics.\", longDescription: \"Changed errors are automatically supplied before the next model request.\" },\n] as const;\nexport const actorProgramManagementToolNames = metadata.map((entry) => entry.name);\nexport const actorProgramToolsAvailable = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"F\u00FCr ausf\u00FChrbare Actors mit agent.spawn und plugin.state.write.\" }, actor => actor.kind !== \"human\" && holdsUsable(actor, \"agent.spawn\") && holdsUsable(actor, \"plugin.state.write\"));\nconst name = Type.String({ pattern: \"^[a-z][a-z0-9-]{0,63}$\" });\ntype Diagnostics = Pick<ReturnType<typeof createProjectDiagnostics>, \"latest\">;\nconst managementTools = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): RunFunction[] => [\n defineRunFunction({ ...metadata[0], schema: Type.Object({ name, template: Type.Union(runtime.templates().map((entry) => Type.Literal(entry.id, { description: entry.description }))) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), directory: Type.String(), files: Type.Array(Type.String()) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => runtime.scaffold(scope.caller.runId, input.name, input.template) }),\n defineRunFunction({ ...metadata[1], schema: Type.Object({ name, actor: Type.Optional(Type.String()) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), actor: Type.String(), views: Type.Number(), active: Type.Literal(true) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.activate(scope.context(id), scope.caller.runId, input.name, scope.signal, input.actor) }),\n defineRunFunction({ ...metadata[2], schema: Type.Object({}, { additionalProperties: false }), resultSchema: Type.Array(Type.Object({ name: Type.String(), actor: Type.String(), functions: Type.Array(Type.String()), views: Type.Array(Type.Object({ name: Type.String(), title: Type.String(), visible: Type.Boolean() })) })), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope) => runtime.list(scope.caller.runId) }),\n defineRunFunction({ ...metadata[3], schema: Type.Object({ name }, { additionalProperties: false }), resultSchema: Type.Object({ removed: Type.String() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.remove(scope.context(id), scope.caller.runId, input.name) }),\n defineRunFunction({ ...metadata[4], schema: Type.Object({ view: Type.String({ minLength: 1, description: \"package-name/view-key or @handle/view-key of an activated view, without the surface entity prefix app:. No generated IDs needed.\" }), visible: Type.Boolean() }, { additionalProperties: false }), resultSchema: Type.Object({ view: Type.String(), visible: Type.Boolean() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.setVisibility(scope.context(id), scope.caller.runId, input.view, input.visible) }),\n defineRunFunction({ ...metadata[5], schema: Type.Object({ name: Type.Optional(name) }, { additionalProperties: false }), resultSchema: Type.String(), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => diagnostics.latest(scope.caller.runId, scope.caller.actorId, input.name) }),\n];\nexport const createActorProgramToolContributors = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): readonly ToolContributor[] => [\n { name: \"ragents.actor-programs.management\", descriptors: metadata.map((item) => toolDescriptorFrom(item, actorProgramToolsAvailable)), tools: () => managementTools(runtime, diagnostics) },\n { name: \"ragents.actor-programs.functions\", descriptors: [], dynamic: true, tools: (context) => runtime.installedTools(context) },\n];\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport { readClientUiComponentNames, readClientUiComponentContracts } from \"@ragents/host/plugin-support/actor-programs/client-contracts.js\";\nimport { actorProgramGuide } from \"./prompts.js\";\n\nconst available = defineToolAvailability({ availability: \"always\", availabilityDetail: \"Typisierte UI-Referenz des installierten Actor-Programm-Plugins.\" }, () => true);\nconst metadata = {\n name: \"actor_program_controls\",\n label: \"Actor-Programm-Anleitung und Controls nachschlagen\",\n description: \"Read Mini-App control contracts or the actor-program authoring guide.\",\n longDescription: \"With topic: guide, explain the TypeScript package workflow through actor_program_activate. Otherwise list control names, or select one component (for example Form) for only its TypeScript props and supporting types. Import controls from @ragents/client/ui and use these exact props.\",\n};\n\nexport const describeClientControls = (component?: string) => {\n const components = readClientUiComponentNames();\n if (component === undefined) return { components };\n if (!components.includes(component)) throw new Error(`Unbekanntes Control ${component}. G\u00FCltig: ${components.join(\", \")}`);\n return { files: readClientUiComponentContracts(component) };\n};\n\nexport const createControlsToolContributor = (): ToolContributor => ({\n name: \"ragents.actor-programs.controls\",\n descriptors: [toolDescriptorFrom(metadata, available)],\n tools: () => [defineRunFunction({\n ...metadata,\n available,\n schema: Type.Object({\n topic: Type.Optional(Type.Union([Type.Literal(\"controls\"), Type.Literal(\"guide\")], { description: \"Default controls: query component names or types. Guide: read the short package workflow without component.\" })),\n component: Type.Optional(Type.String({ minLength: 1, description: \"Optional control name from the catalog, without UI. prefix. Only valid when topic is controls or omitted.\" })),\n }, { additionalProperties: false }),\n resultSchema: Type.Union([\n Type.Object({ guide: Type.String() }, { additionalProperties: false }),\n Type.Object({ components: Type.Array(Type.String()) }, { additionalProperties: false }),\n Type.Object({ files: Type.Record(Type.String(), Type.String()) }, { additionalProperties: false }),\n ]),\n run: async (_scope, _call, input) => {\n if (input.topic === \"guide\") {\n if (input.component !== undefined) throw new Error(\"component ist nur bei topic: controls oder ohne topic erlaubt; f\u00FCr topic: guide lasse component weg.\");\n return { guide: await actorProgramGuide.render({}) };\n }\n return describeClientControls(input.component);\n },\n })],\n});\n", "import { pluginAsset } from \"@ragents/host/plugin-support/plugin-folder.js\";\nimport { boundToTools, handlebarsPrompt } from \"@ragents/host/plugin-support/prompt.js\";\n\nconst buildingTools = [\n \"actor_program_create\",\n \"actor_program_activate\",\n \"actor_program_diagnostics\",\n \"actor_program_list\",\n \"actor_program_remove\",\n \"actor_view_set_visibility\",\n] as const;\n\nexport const actorProgramGuide = handlebarsPrompt(\n \"ragents.actor-programs.prompt\", 750, pluginAsset(\"ragents.actor-programs\", \"prompt.hbs\"),\n);\n\nexport const actorProgramSummary = boundToTools(\n { ...handlebarsPrompt(\"ragents.actor-programs.summary\", 749, pluginAsset(\"ragents.actor-programs\", \"summary.hbs\")), delivery: \"initial\" },\n \"actor_program_controls\",\n ...buildingTools,\n);\n", "import { createHash } from \"node:crypto\";\nimport { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { AgentContribution, JsonValue } from \"@ragents/engine\";\nimport { projectSourceFiles } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\n\nconst entryType = \"ragents.actor-programs.project-diagnostics\";\nconst maxDeltaLines = 8;\nconst maxLineLength = 240;\n\ninterface ProgramDiagnostics {\n fingerprint: string;\n errors: string[];\n}\n\nexport interface ProjectDiagnosticsSnapshot {\n version: 1;\n programs: Record<string, ProgramDiagnostics>;\n}\n\nexport interface ProjectDiagnosticsOptions {\n workspaceFor: (runId: string) => string | Promise<string>;\n check: (runId: string, programName: string, actorId: string, signal?: AbortSignal) => Promise<unknown>;\n applies?: (runId: string, actorId: string) => boolean;\n}\n\nconst messageOf = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst fingerprintOf = (value: unknown): string => createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\");\nconst errorLines = (error: unknown): string[] => {\n const complete = error instanceof Error ? (error as { lines?: unknown }).lines : undefined;\n if (Array.isArray(complete) && complete.every((line) => typeof line === \"string\")) return [...new Set(complete as string[])];\n const lines = messageOf(error).split(\"\\n\").map((line) => line.trim()).filter(Boolean);\n const issues = lines.filter((line) => !/^(Build failed with \\d+ errors?:|.*(?:Typpr\u00FCfung|Typecheck|Diagnostik).*:)$/i.test(line));\n return [...new Set(issues.length ? issues : lines)];\n};\nconst allErrors = (snapshot: ProjectDiagnosticsSnapshot): string[] => Object.entries(snapshot.programs)\n .sort(([left], [right]) => left.localeCompare(right))\n .flatMap(([programName, program]) => program.errors.map((error) => `${programName}: ${error}`));\nconst isSnapshot = (value: unknown): value is ProjectDiagnosticsSnapshot => {\n if (value === null || typeof value !== \"object\") return false;\n const snapshot = value as ProjectDiagnosticsSnapshot;\n return snapshot.version === 1 && snapshot.programs !== null && typeof snapshot.programs === \"object\"\n && Object.values(snapshot.programs).every((program) => program && typeof program.fingerprint === \"string\"\n && Array.isArray(program.errors) && program.errors.every((error) => typeof error === \"string\"));\n};\n\nexport const createProjectDiagnostics = (options: ProjectDiagnosticsOptions) => {\n const snapshots = new Map<string, Map<string, ProjectDiagnosticsSnapshot>>();\n const remember = (runId: string, actorId: string, snapshot: ProjectDiagnosticsSnapshot): void => {\n const agents = snapshots.get(runId) ?? new Map<string, ProjectDiagnosticsSnapshot>();\n agents.set(actorId, snapshot);\n snapshots.set(runId, agents);\n };\n const contribution: AgentContribution = {\n id: entryType,\n beforeModelCall: async ({ runId, agentId }, call) => {\n if (options.applies?.(runId, agentId) === false) return undefined;\n call.signal?.throwIfAborted();\n const previous: ProjectDiagnosticsSnapshot = isSnapshot(call.kept) ? call.kept : { version: 1, programs: {} };\n const next: ProjectDiagnosticsSnapshot = { version: 1, programs: {} };\n let changed = false;\n try {\n const directory = await options.workspaceFor(runId);\n const entries = await readdir(directory, { withFileTypes: true }).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return [];\n throw error;\n });\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n if (!entry.isDirectory() && !entry.isSymbolicLink()) continue;\n call.signal?.throwIfAborted();\n let fingerprint: string;\n let errors: string[] = [];\n try {\n if (entry.isSymbolicLink()) throw new Error(\"Actor-Projekte d\u00FCrfen keine Symlinks sein.\");\n fingerprint = fingerprintOf(await projectSourceFiles(path.join(directory, entry.name)));\n } catch (error) {\n errors = errorLines(error);\n fingerprint = fingerprintOf({ errors });\n }\n const prior = previous.programs[entry.name];\n if (prior?.fingerprint === fingerprint) {\n next.programs[entry.name] = prior;\n continue;\n }\n changed = true;\n if (errors.length === 0) {\n try { await options.check(runId, entry.name, agentId, call.signal); }\n catch (error) {\n call.signal?.throwIfAborted();\n errors = errorLines(error);\n }\n }\n next.programs[entry.name] = { fingerprint, errors };\n }\n } catch (error) {\n call.signal?.throwIfAborted();\n const errors = errorLines(error);\n Object.assign(next.programs, previous.programs);\n next.programs[\"(Workspace)\"] = { fingerprint: fingerprintOf({ errors }), errors };\n }\n if (JSON.stringify(Object.keys(previous.programs).sort()) !== JSON.stringify(Object.keys(next.programs).sort())) changed = true;\n if (JSON.stringify(previous) !== JSON.stringify(next)) changed = true;\n call.signal?.throwIfAborted();\n remember(runId, agentId, next);\n if (!changed) return undefined;\n call.keep(next as unknown as JsonValue);\n const before = new Set(allErrors(previous));\n const after = new Set(allErrors(next));\n const added = [...after].filter((error) => !before.has(error));\n const resolved = [...before].filter((error) => !after.has(error));\n const changes = [...added.map((error) => `Neu: ${error}`), ...resolved.map((error) => `Behoben: ${error}`)];\n const lines = changes.slice(0, maxDeltaLines).map((line) => line.length > maxLineLength ? `${line.slice(0, maxLineLength - 3)}...` : line);\n const omitted = changes.length - lines.length;\n return [\n `Actor-Programm-Projektpr\u00FCfung (TypeScript und Build): ${after.size} Fehler in ${Object.keys(next.programs).length} Projekten; ${added.length} neu, ${resolved.length} behoben.`,\n ...lines,\n ...(omitted > 0 ? [`${omitted} weitere \u00C4nderungen. Vollst\u00E4ndiger letzter Stand: actor_program_diagnostics.`] : []),\n ].join(\"\\n\");\n },\n };\n return {\n contribution,\n latest(runId: string, actorId: string, programName?: string): string {\n const snapshot = snapshots.get(runId)?.get(actorId);\n if (!snapshot) return \"Noch kein Actor-Programm-Projektstand f\u00FCr diesen Agenten gepr\u00FCft.\";\n const programs = Object.entries(snapshot.programs).filter(([id]) => programName === undefined || id === programName);\n if (programs.length === 0) return programName ? `Kein gepr\u00FCfter Projektstand f\u00FCr ${programName}.` : \"Keine Actor-Programm-Projekte vorhanden.\";\n return programs.sort(([left], [right]) => left.localeCompare(right)).map(([id, program]) =>\n [`${id}: ${program.errors.length} Fehler`, ...program.errors].join(\"\\n\")).join(\"\\n\\n\");\n },\n forget(runId: string): void { snapshots.delete(runId); },\n };\n};\n", "import type { AccessProjectionContribution, JsonValue } from \"@ragents/engine\";\nimport { ACTOR_INVOCATIONS_STATE_ID, ACTOR_PROGRAMS_STATE_ID } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\n\nconst record = (value: JsonValue | undefined): Record<string, JsonValue | undefined> | undefined =>\n value !== null && typeof value === \"object\" && !Array.isArray(value) ? value : undefined;\n\n/** Ohne runs.inspect bleiben von einem Programm Name, Actor und Ansichten; Quellen, Funktionen und Verzeichnisse fehlen. */\nconst visibleProgram = (state: JsonValue): JsonValue => {\n const program = record(record(state)?.program);\n if (!program) return state;\n const views = Array.isArray(program.views) ? program.views.map((value) => {\n const view = record(value);\n return view ? { id: view.id, key: view.key, title: view.title, visible: view.visible, placements: view.placements } : value;\n }) : [];\n return {\n version: 1,\n program: {\n name: program.name,\n title: program.title,\n actorId: program.actorId,\n actorHandle: program.actorHandle,\n revision: program.revision,\n views,\n },\n };\n};\n\nexport const actorProgramAccessProjections: readonly AccessProjectionContribution[] = [\n { id: ACTOR_PROGRAMS_STATE_ID, state: (entry) => visibleProgram(entry.state), chatEvent: () => undefined },\n { id: ACTOR_INVOCATIONS_STATE_ID, state: (entry) => ({ version: 1, revision: entry.updatedAt }), chatEvent: () => undefined },\n];\n"],
|
|
5
|
-
"mappings": ";;;;AAAA,OAAOA,WAAU;AAGjB,SAAS,wBAAAC,uBAAsB,qBAAqB;AACpD,SAAS,uBAAuB;;;ACJhC,SAAS,oBAA6E;AACtF,SAAS,sBAAsB,iCAAiC;AAEzD,IAAM,iBAAiB,CAAC,SAC7B,OAAO,OAAe,SAAiB,gBAAmE;AACxG,QAAM,UAAU,KAAK,QAAQ,oBAAoB,EAAE;AACnD,QAAM,OAAO,QAAQ,KAAK,KAAK;AAC/B,QAAM,QAAQ,eAAe,KAAK,OAAO,KAAK,CAAC,cAAc,UAAU,OAAO,OAAO;AACrF,MAAI,CAAC,SAAS,MAAM,SAAS,WAAW,MAAM,UAAU,SAAS,WAAW;AAC1E,UAAM,IAAI,MAAM,GAAG,OAAO,mDAAmD;AAAA,EAC/E;AACA,QAAM,WAAW,IAAI,aAAa;AAClC,OAAK,MAAM,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,SAAS,SAAS,WAAW,CAAC;AAC5E,QAAM,YAAY,MAAM,KAAK,QAAQ,yBAAyB,EAAE,KAAK;AACrE,QAAM,QAAQ,MAAM,SAAS,QAAQ;AAAA,IACnC;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,MAAM,cAAc,EAAC,GAAG,MAAK,QAAO,CAAC,GAAG,KAAK,QAAO,WAAW,EAAC,IAAI;AAAA,IACpE,WAAW,UAAU;AAAA,EACvB,CAAC;AACD,MAAI,MAAM,cAAc,KAAM,QAAO;AACrC,QAAM,iBAAiB,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;AAC7D,QAAM,UAAU,MAAM,UAAU,OAAO,CAACC,UAAS,CAAC,eAAe,IAAIA,KAAI,CAAC;AAC1E,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,IAAI,MAAM,SAAS,OAAO,mCAAmC,QAAQ,KAAK,IAAI,CAAC,GAAG;AAAA,EAC1F;AACA,QAAMC,YAAW,IAAI,IAAI,MAAM,SAAS;AACxC,SAAO,MAAM,OAAO,CAAC,SAASA,UAAS,IAAI,KAAK,IAAI,CAAC;AACvD;;;AC9BF,SAAS,aAAa,iBAA0C;AAChE,SAAS,6BAA6B;AAGtC,IAAM,kBAAkB,KAAK;AAO7B,IAAM,SAAS,CAAC,OAAgB,MAAc,WAAgC,iBAAiB,cAC3F,QACA,IAAI,YAAY,MAAM,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG,MAAM;AAExF,IAAM,UAAU,CAAI,MAAc,QAAgB,SAAqB;AACrE,MAAI;AACF,WAAO,KAAK;AAAA,EACd,SAAS,OAAO;AACd,UAAM,OAAO,OAAO,MAAM,MAAM;AAAA,EAClC;AACF;AAEA,IAAM,eAAe,CAAC,UAA4B;AAChD,MAAI,OAAO,WAAW,KAAK,UAAU,SAAS,IAAI,GAAG,MAAM,IAAI;AAC7D,UAAM,IAAI,YAAY,mBAAmB,2CAAqC,eAAe,UAAU,GAAG;AAC5G,SAAO;AACT;AAEO,IAAM,4BAA4B,CAAC,YAA6D;AACrG,QAAM,UAAU,CAAC,OAAe,MAAc,WAC5C,QAAQ,MAAM,QAAQ,MAAM,QAAQ,cAAc,KAAK,CAAC;AAC1D,SAAO;AAAA,IACL,UAAU,sBAAsB,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,MAAM;AAC/D,cAAQ,OAAO,mBAAmB,GAAG;AACrC,aAAO;AAAA,QACL,MAAM,QAAQ,QAAQ,KAAK,KAAK;AAAA,QAChC,OAAO,OAAO,IAAI,cAAc,IAAI,QAAQ,QAAQ,cAAc,KAAK,IAAI,CAAC;AAAA,MAC9E;AAAA,IACF,CAAC;AAAA,IACD,UAAU,sBAAsB,QAAQ,OAAO,EAAE,OAAO,SAAS,MAAM;AACrE,cAAQ,OAAO,mBAAmB,GAAG;AACrC,UAAI;AACF,eAAO,MAAM,QAAQ,QAAQ,aAAa,OAAO,QAAQ;AAAA,MAC3D,SAAS,OAAO;AACd,cAAM,OAAO,OAAO,yBAAyB,GAAG;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,IACD,UAAU,sBAAsB,QAAQ,CAAC,EAAE,OAAO,OAAO,UAAU,UAAU,WAAW,MAAM,MAAM;AAClG,cAAQ,OAAO,mBAAmB,GAAG;AACrC,aAAO,QAAQ,mBAAmB,KAAK,MAAM;AAC3C,cAAM,SAAS,QAAQ,QAAQ,iBAAiB,KAAK;AACrD,eAAO,QAAQ,QAAQ,gBAAgB,OAAO,OAAO,UAAU,UAAU,WAAW,aAAa,KAAK,GAAG,MAAM;AAAA,MACjH,CAAC;AAAA,IACH,CAAC;AAAA,IACD,UAAU,sBAAsB,YAAY,CAAC,EAAE,OAAO,OAAO,aAAa,MAAM;AAC9E,cAAQ,OAAO,mBAAmB,GAAG;AACrC,aAAO,QAAQ,sBAAsB,KAAK,MAAM,QAAQ,QAAQ,WAAW,OAAO,OAAO,YAAY,CAAC;AAAA,IACxG,CAAC;AAAA,IACD,UAAU,sBAAsB,UAAU,CAAC,EAAE,OAAO,aAAa,UAAU,YAAY,WAAW,MAAM,MAAM;AAC5G,cAAQ,OAAO,mBAAmB,GAAG;AACrC,aAAO,QAAQ,qBAAqB,KAAK,MAAM;AAC7C,cAAM,SAAS,QAAQ,QAAQ,iBAAiB,KAAK;AACrD,eAAO,QAAQ,QAAQ,wBAAwB,OAAO,aAAa,UAAU,YAAY,WAAW,aAAa,KAAK,GAAG,MAAM;AAAA,MACjI,CAAC;AAAA,IACH,CAAC;AAAA,IACD,UAAU,sBAAsB,oBAAoB,CAAC,EAAE,OAAO,aAAa,aAAa,MAAM;AAC5F,cAAQ,OAAO,mBAAmB,GAAG;AACrC,aAAO,QAAQ,sBAAsB,KAAK,MAAM,QAAQ,QAAQ,WAAW,OAAO,aAAa,YAAY,CAAC;AAAA,IAC9G,CAAC;AAAA,EACH;AACF;;;ACvEA,SAAS,mBAAmB;AAE5B,SAAS,wBAAwB;AACjC,SAAS,qBAAqB,4BAA4B;AAGnD,IAAM,oBAAoB;AAEjC,IAAM,eAAe,IAAI,OAAO,IAAI,kBAAkB,WAAW,KAAK,KAAK,CAAC,kEAAuE;AAEnJ,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQxB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAOf,IAAM,6BAA6B,CAAC,UACzC,4FAA4F,KAAK,uBAAuB,KAAK;AAE/H,IAAM,gBAAgB,CAAC,WAA2B,OAAO,QAAQ,eAAe,YAAY;AAE5F,IAAM,iBAAiB,CAAC,OAAe,WAA2B,kBAAkB,KAAK;AAAA,EACvF,cAAc,mBAAmB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,gCAKJ,KAAK,UAAU,KAAK,CAAC;AAAA,6BACxB,KAAK,UAAU,OAAO,KAAK,QAAQ,MAAM,EAAE,SAAS,QAAQ,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAavF,eAAe;AAAA,IACf,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA6IV,IAAM,YAAY,CACvB,OACA,UACW;AACX,QAAM,OAAO;AACb,MAAI,CAAC,KAAK,KAAK,MAAM,IAAI,EAAG,OAAM,IAAI,MAAM,uDAAoD;AAChG,QAAM,SAAS,kBAAkB,KAAK,8DAA8D,cAAc,MAAM,gBAAgB,CAAC;AACzI,SAAO,MAAM,KAAK,QAAQ,MAAM,CAAC,UAAU,GAAG,KAAK,GAAG,eAAe,OAAO,GAAG,oBAAoB;AAAA,EAAK,MAAM,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE;AACpI;AAQO,IAAM,2BAA2B,CAAC,YAA0D;AAAA,EACjG;AAAA,IACE,IAAI;AAAA,IACJ,WAAW,CAAC,aAAa,SAAS,WAAW,iBAAiB;AAAA,IAC9D,SAAS,CAAC,SAAS,QAAQ,QAAQ,WAAW,SAAS,aAAa,KAAK,IAAI,QAAQ;AAAA,IACrF,QAAQ,OAAO,EAAE,SAAS,UAAU,IAAI,MAAM;AAC5C,YAAM,QAAQ,IAAI,SAAS,MAAM,YAAY;AAC7C,UAAI,CAAC,MAAO,OAAM,IAAI,MAAM,yBAAsB;AAClD,YAAM,CAAC,EAAE,OAAO,KAAK,IAAI;AACzB,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,QACA,eAAe,MAAM,QAAQ,cAAc,KAAM;AAAA,QACjD,aAAa;AAAA,QACb,QAAQ,MAAM;AACZ,gBAAM,WAAW,IAAI,aAAa,IAAI,UAAU,KAAK;AACrD,gBAAM,QAAQ,YAAY,EAAE,EAAE,SAAS,QAAQ;AAC/C,gBAAM,QAAQ,QAAQ,QAAQ,MAAM,OAAQ,OAAQ,QAAQ;AAC5D,gBAAM,UAAU,OAAO,KAAK,UAAU,OAAO,KAAK,GAAG,MAAM;AAC3D,mBAAS,UAAU,KAAK;AAAA,YACtB,iBAAiB;AAAA,YACjB,2BAA2B,2BAA2B,KAAK;AAAA,YAC3D,gBAAgB;AAAA,YAChB,kBAAkB,QAAQ;AAAA,YAC1B,mBAAmB;AAAA,YACnB,0BAA0B;AAAA,UAC5B,CAAC;AACD,mBAAS,IAAI,OAAO;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AChPA,SAAS,kBAAkB;AAC3B,SAAS,OAAO,OAAO,SAAS,UAAU,YAAAC,WAAU,IAAI,iBAAiB;AACzE,SAAS,WAAW,cAAc,kBAAkB;AACpD,OAAO,UAAU;AAEjB,SAAS,aAAa;AACtB,SAAS,eAAe,2BAA2B,YAAY,mBAAAC,kBAAiB,eAAe,mBAAmB,wBAAwB,YAAY,WAAW,6BAAAC,4BAA2B,eAAe,wBAAoQ;AAC/c,SAAS,yBAAyB,4BAA4B,uBAAuB,gBAAgB,wBAA6M;;;ACPlT,SAAS,uBAAuC;AAEhD,IAAM,iBAAiB;AACvB,IAAM,iBAAiB;AACvB,IAAM,sBAAsB;AACrB,IAAM,8BAA8B,IAAI,OAAO;AAE/C,IAAM,YAAY,CAAC,UAA2B,OAAO,WAAW,KAAK,UAAU,KAAK,GAAG,MAAM;AAE7F,IAAM,YAAY,CAAI,OAAU,UAAiC;AACtE,kBAAgB,OAAO,KAAK;AAC5B,QAAM,OAAO,KAAK,UAAU,KAAK;AACjC,MAAI,OAAO,WAAW,MAAM,MAAM,IAAI;AACpC,UAAM,IAAI,MAAM,GAAG,KAAK,yBAAmB,cAAc,QAAQ;AACnE,QAAM,UAAoD,CAAC,EAAE,OAAO,OAAO,EAAE,CAAC;AAC9E,SAAO,QAAQ,SAAS,GAAG;AACzB,UAAM,UAAU,QAAQ,IAAI;AAC5B,QAAI,QAAQ,QAAQ;AAClB,YAAM,IAAI,MAAM,GAAG,KAAK,mBAAmB,cAAc,wBAAwB;AACnF,QAAI,MAAM,QAAQ,QAAQ,KAAK,GAAG;AAChC,cAAQ,MAAM,QAAQ,CAAC,UAAU,QAAQ,KAAK,EAAE,OAAO,OAAO,OAAO,QAAQ,QAAQ,EAAE,CAAC,CAAC;AACzF;AAAA,IACF;AACA,QAAI,QAAQ,SAAS,OAAO,QAAQ,UAAU,UAAU;AACtD,aAAO,QAAQ,QAAQ,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,YAAI,IAAI,SAAS;AACf,gBAAM,IAAI,MAAM,GAAG,KAAK,+CAAyC,mBAAmB,WAAW;AACjG,gBAAQ,KAAK,EAAE,OAAO,OAAO,OAAO,QAAQ,QAAQ,EAAE,CAAC;AAAA,MACzD,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;;;AChCA;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AAUP,IAAM,eAAe,CAAC,gBAMU;AAAA,EAC9B,IAAI,WAAW;AAAA,EACf,OAAO,WAAW;AAAA,EAClB,aAAa,WAAW;AAAA,EACxB,QAAQ,WAAW;AAAA,EACnB,cAAc,WAAW;AAC3B;AAEA,IAAM,WAAW,CACfC,YACA,eACA,MACA,gBACQ;AACR,QAAM,OAAO,IAAI,IAAIA,WAAU,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,GAAG,KAAK,CAAC,CAAC;AACnE,SAAO,cAAc,IAAI,CAAC,OAAO;AAC/B,UAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,QAAI,CAAC,MAAO,OAAM,YAAY,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,KAAK,OAAO;AAC/E,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,4BAA4B,CACvC,SACA,YACA,kBAC8B;AAC9B,QAAM,WAAW;AAAA,IACf,WAAW,OAAO,CAAC,cAAc,UAAU,aAAa,aAAa;AAAA,IACrE;AAAA,IACA,CAAC,cAAc,UAAU;AAAA,IACzB,CAAC,IAAI,UAAU,IAAI,MAAM,cAAc,EAAE,mEAA0D,KAAK,GAAG;AAAA,EAC7G;AACA,QAAM,cAAc,SAAS,IAAI,YAAY;AAC7C,SAAO;AAAA,IACL;AAAA,IACA,wBAAwB,0BAA0B,WAAW;AAAA,IAC7D,qBAAqB,yBAAyB;AAAA,MAC5C,WAAW,EAAE,IAAI,SAAS,MAAM,WAAW;AAAA,MAC3C,cAAc;AAAA,MACd,UAAU,SAAS,IAAI,CAAC,eAAe,EAAE,IAAI,UAAU,IAAI,QAAQ,UAAU,SAAS,EAAE;AAAA,IAC1F,CAAC;AAAA,EACH;AACF;AAEO,IAAM,yBAAyB,CACpC,OACA,OACA,eACA,iBAC8B;AAC9B,QAAM,WAAW;AAAA,IACf,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,IAAI,KAAK,IAAI,CAAC;AAAA,IACnD;AAAA,IACA,CAAC,SAAS,KAAK;AAAA,IACf,CAAC,IAAI,UAAU,IAAI;AAAA,MACjB,cAAc,EAAE,gBAAa,MAAM,MAAM,2CAAqC,KAAK;AAAA,IACrF;AAAA,EACF;AACA,QAAM,cAAc,SAAS,IAAI,CAAC,SAAS,aAAa,EAAE,GAAG,MAAM,IAAI,KAAK,KAAK,CAAC,CAAC;AACnF,SAAO;AAAA,IACL;AAAA,IACA,wBAAwB,0BAA0B,WAAW;AAAA,IAC7D,qBAAqB,yBAAyB;AAAA,MAC5C,WAAW,EAAE,IAAI,MAAM,IAAI,MAAM,MAAM,SAAS,WAAW,WAAW,SAAS,QAAQ,MAAM,OAAO;AAAA,MACpG,cAAc;AAAA,MACd,UAAU,YAAY,IAAI,CAACC,iBAAgB,EAAE,IAAIA,YAAW,IAAI,QAAQ,QAAQ,EAAE;AAAA,IACpF,CAAC;AAAA,EACH;AACF;;;AF/EA,SAAS,sBAAsB,wBAAwB;AACvD,SAAS,mBAAmB,kBAAkB,mBAAmB,qBAAqB,oBAAoB,gBAAgB,8BAAgD;AAC1K,SAAS,8BAA8B;AACvC,SAAS,mBAAmB,uBAAqD;;;AGb1E,IAAM,mBAAyC;AAAA,EACpD,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO,CAAC,EAAE,IAAI,QAAQ,QAAQ,iBAAiB,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2FpB;AACF;;;AC7FA,IAAM,QAA8B;AAAA,EAClC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO,CAAC,EAAE,IAAI,QAAQ,QAAQ,iBAAiB,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAapB;AACF;AAEA,IAAM,OAA6B;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO,CAAC,EAAE,IAAI,QAAQ,QAAQ,iBAAiB,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYpB;AACF;AAEA,IAAM,eAAqC;AAAA,EACzC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,IACT,OAAO,CAAC,EAAE,IAAI,QAAQ,QAAQ,iBAAiB,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqClB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBnB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAsBjB,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc3B;AACF;AAEA,IAAM,kBAAwC;AAAA,EAC5C,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA0BnB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuBjB,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiB3B;AACF;AAEA,IAAM,aAAmC;AAAA,EACvC,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,IACb,SAAS;AAAA,IACT,OAAO,CAAC,EAAE,IAAI,QAAQ,QAAQ,iBAAiB,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA,IACL,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAwClB,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAgBnB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAejB,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc3B;AACF;AAEO,IAAM,qBAAqB,CAAC,OAAO,MAAM,kBAAkB,cAAc,iBAAiB,UAAU;AAEpG,IAAM,gBAAgB,CAAC,UAAgCC,WAAoD;AAAA,EAChH,gBAAgB,GAAG,KAAK,UAAU,EAAE,MAAAA,OAAM,SAAS,MAAM,MAAM,UAAU,SAAS,SAAS,QAAQ,GAAG,MAAM,CAAC,CAAC;AAAA;AAAA,EAC9G,GAAG,SAAS;AACd;AAEO,IAAM,eAAe,CAAC,OAAqC;AAChE,QAAM,WAAW,mBAAmB,KAAK,CAAC,cAAc,UAAU,OAAO,EAAE;AAC3E,MAAI,CAAC,SAAU,OAAM,IAAI,MAAM,qCAAqC,EAAE,gBAAa,mBAAmB,IAAI,CAAC,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG;AAC5I,SAAO;AACT;;;AClWA,SAAS,gBAAgB;AAGzB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBhB,IAAM,uBAAuB,wCAAwC,mBAAmB,cAAc,CAAC;AAO9G,IAAM,cAAc;AACpB,IAAM,YAAY;AAGlB,IAAM,aAAa,CAAC,UAAuC;AACvD,QAAM,aAAa,MAAM,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK,MAAM,MAAM,CAAC,UAAU,KAAK,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;AAC5K,QAAM,QAAQ,WAAW,OAAO,CAAC,SAAS,oBAAoB,KAAK,IAAI,CAAC;AACxE,UAAQ,MAAM,SAAS,IAAI,QAAQ,WAAW,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC;AACvE;AAGO,IAAM,mBAAmB,OAAO,cAAsB;AACzD,QAAM,QAAQ,CAAC,GAAG,oBAAI,IAAI,CAAC,WAAW,MAAM,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,MAAM,SAAS,KAAK,MAAM;AACnH,QAAM,WAAW,CAAC,SAAyB,MAAM,OAAO,CAAC,QAAQ,SAAS,OAAO,WAAW,UAAU,IAAI,KAAK,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI;AACnJ,QAAM,WAAoD,CAAC;AAC3D,QAAM,eAAe,oBAAI,IAAsB;AAC/C,QAAM,WAAqB,CAAC;AAC5B,MAAI,SAAS;AACb,MAAIC,UAAS;AACb,MAAI,UAAU;AAEd,QAAMC,UAAS,CAAC,SAAuB;AACnC,QAAI,KAAK,KAAK,MAAM,GAAI;AACxB,QAAI;AACJ,QAAI;AACA,eAAS,KAAK,MAAM,IAAI;AAAA,IAC5B,QAAQ;AACJ,eAAS,KAAK,IAAI;AAClB;AAAA,IACJ;AACA,QAAI,OAAO,SAAS,OAAQ,WAAU;AACtC,QAAI,OAAO,SAAS,QAAQ;AACxB,MAAAD,WAAU;AACV,UAAI,SAAS,SAAS,YAAa,UAAS,KAAK,MAAM;AAAA,IAC3D;AACA,QAAI,OAAO,SAAS,UAAU;AAC1B,YAAM,QAAQ,aAAa,IAAI,OAAO,QAAQ,EAAE,KAAK,CAAC;AACtD,mBAAa,IAAI,OAAO,QAAQ,IAAI,CAAC,GAAG,OAAO,GAAG,OAAO,QAAQ,MAAM,IAAI,CAAC,EAAE,MAAM,GAAG,CAAC;AAAA,IAC5F;AAAA,EACJ;AAEA,QAAM,UAAU,CAAC,YAA2D;AACxE,UAAM,QAAQ,QAAQ,MAAM,MAAM,IAAI,EAAE,OAAO,CAAC,SAAS,UAAU,KAAK,IAAI,CAAC,EAAE,IAAI,QAAQ,EACtF,IAAI,CAAC,SAAS,+BAA+B,KAAK,IAAI,IAAI,CAAC,CAAC,EAC5D,KAAK,CAAC,UAAU,UAAU,UAAa,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,WAAW,OAAO,KAAK,CAAC,MAAM,SAAS,eAAe,CAAC;AACpI,UAAM,WAAW,QAAQ,SAAS,OAAO,QAAQ,OAAO,GAAG,SAAS,QAAQ,IAAI,CAAC,GAAG,QAAQ,SAAS,OAAO,KAAK,IAAI,QAAQ,IAAI,IAAI,QAAQ,UAAU,CAAC,EAAE;AAC1J,WAAO,SAAS;AAAA,EACpB;AAEA,QAAM,WAAW,CAAC,YAA2D;AACzE,UAAM,aAAa,QAAQ,YAAY,iBAAiB,QAAQ,SAAS,OAAO,aAAa,IAAI,QAAQ,IAAI,KAAK,aAAa,IAAI,SAAS,QAAQ,IAAI,CAAC,IAAI;AAC7J,UAAM,UAAU,aAAa,WAAW,UAAU,EAAE,KAAK,IAAI,IAAI,QAAQ,YAAY,QAAQ,QAAQ,MAAM,IAAI,EAAE,CAAC,EAAG,QAAQ,MAAM,EAAE,IAAI,QAAQ,QAAQ,KAAK,EAAE,MAAM,GAAG,GAAG;AAC5K,UAAM,SAAS,QAAQ,aAAa,UAAa,QAAQ,aAAa,QAAQ,SAAS,KAAK,eAAe,QAAQ,QAAQ,oBAAiB,QAAQ,MAAM;AAC1J,WAAO,KAAK,QAAQ,IAAI,KAAK,QAAQ,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,GAAG,SAAS,MAAM,CAAC;AAAA,EAC3F;AAEA,SAAO;AAAA,IACH,QAAQ,CAAC,UAAwB;AAC7B,YAAM,SAAS,UAAU,OAAO,MAAM,IAAI;AAC1C,gBAAU,MAAM,IAAI,KAAK;AACzB,YAAM,QAAQC,OAAM;AAAA,IACxB;AAAA,IACA,QAAQ,CAACC,OAAc,YAAgF;AACnG,MAAAD,QAAO,OAAO;AACd,gBAAU;AACV,YAAM,UAAU,QAAQ,WAClB,gBAAaC,KAAI,4CAAyC,MAAM,eAAeF,OAAM,qBACrF,gBAAaE,KAAI,oBAAoB,MAAM,eAAeF,OAAM;AACtE,YAAM,UAAU,SAAS,IAAI,QAAQ;AACrC,YAAM,OAAOA,UAAS,SAAS,SAAS,CAAC,WAAWA,UAAS,SAAS,MAAM,UAAU,IAAI,CAAC;AAC3F,YAAM,gBAAgBA,YAAW,IAC3B,CAAC,sBAAsB,QAAQ,SAAS,OAAO,KAAK,aAAa,QAAQ,IAAI,EAAE,gCAAgC,GAAG,WAAW,CAAC,GAAG,UAAU,GAAG,QAAQ,OAAO,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,IACxL,CAAC;AACP,aAAO,CAAC,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,EAAE,KAAK,IAAI;AAAA,IACrE;AAAA,EACJ;AACJ;;;ALvFA,SAAS,kBAAkB,sBAAsB,wBAAwB;AACzE,SAAS,qBAAqB;AAE9B,IAAM,OAAO;AACb,IAAM,YAAY,CAAC,UAA2B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACnG,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAE3B,IAAM,eAAe,CAAC,OAAe,OAA0B,aAA4B;AACvF,QAAM,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;AACvF,MAAI,IAAI,WAAW;AACf,WAAO,IAAI,MAAM,QAAQ;AAC7B,QAAM,QAAQ,IAAI,MAAM,GAAG,kBAAkB,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,qBAAqB,GAAG,KAAK,MAAM,GAAG,qBAAqB,CAAC,CAAC,QAAQ,IAAI;AACpJ,QAAM,UAAU,IAAI,SAAS,MAAM;AACnC,SAAO,OAAO,OAAO,IAAI,MAAM;AAAA,IAC3B,GAAG,KAAK,KAAK,IAAI,MAAM;AAAA,IACvB,GAAG;AAAA,IACH,GAAI,UAAU,IAAI,CAAC,WAAW,OAAO,+CAA+C,IAAI,CAAC;AAAA,EAC7F,EAAE,KAAK,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC;AACjC;AACA,IAAM,qBAAqB,CAAC,SAAiD;AACzE,QAAM,QAAQ,QAAQ,IAAI,QAAQ,QAAQ,GAAG,EAAE,KAAK;AACpD,SAAO,KAAK,UAAU,4BAA4B,QAAQ,SAAY,GAAG,KAAK,MAAM,GAAG,4BAA4B,CAAC,EAAE,QAAQ,CAAC;AACnI;AACA,IAAM,UAAU,uBAAuB,EAAE,cAAc,eAAe,oBAAoB,2DAAwD,GAAG,MAAM,IAAI;AAC/J,IAAM,eAAe,EAAE,MAAM,UAAU,sBAAsB,KAAK;AAClE,IAAM,UAAU,CAAC,QAAgB,OAAgB,UAA6B;AAC1E,QAAM,SAAS,UAAU,OAAO,KAAK;AACrC,MAAI,CAAC,MAAM,MAAM,QAAmB,MAAM;AACtC,UAAM,IAAI,MAAM,GAAG,KAAK,KAAK,iBAAiB,QAAmB,MAAM,CAAC,EAAE;AAC9E,SAAO;AACX;AACA,IAAM,WAAW,CAACG,UAAyB;AACvC,MAAI,CAACA,SAAQ,KAAK,WAAWA,KAAI,KAAKA,MAAK,SAAS,IAAI,KAAKA,MAAK,SAAS,IAAI,KAAKA,MAAK,MAAM,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,SAAS,OAAO,SAAS,IAAI;AACrJ,UAAM,IAAI,MAAM,2BAAwBA,KAAI,GAAG;AACnD,SAAOA;AACX;AACA,IAAM,SAAS,OAAO,WAAmB,aAAsC;AAC3E,QAAM,OAAO,MAAMC,UAAS,SAAS;AACrC,QAAM,OAAO,MAAMA,UAAS,KAAK,KAAK,MAAM,SAAS,QAAQ,CAAC,CAAC;AAC/D,MAAI,CAAC,KAAK,WAAW,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE;AACrC,UAAM,IAAI,MAAM,aAAa,QAAQ,iCAA8B;AACvE,QAAM,OAAO,MAAM,MAAM,IAAI;AAC7B,MAAI,CAAC,KAAK,OAAO,KAAK,KAAK,OAAO;AAC9B,UAAM,IAAI,MAAM,4CAAsC,QAAQ,GAAG;AACrE,SAAO,SAAS,MAAM,MAAM;AAChC;AACA,IAAM,WAAW,CAAC,SAA0B;AACxC,MAAI;AACA,cAAU,IAAI;AACd,WAAO;AAAA,EACX,SACO,OAAO;AACV,QAAK,MAAgC,SAAS;AAC1C,aAAO;AACX,UAAM;AAAA,EACV;AACJ;AACA,IAAM,gBAAgB,CAACD,UAAwB,IAAI,MAAM,aAAaA,KAAI,qBAAqB;AAE/F,IAAM,gBAAgB,CAAC,QAAgB,WAAmBA,UAAuB;AAC7E,MAAI,SAAS,SAAS;AAClB,UAAM,cAAcA,KAAI;AAC5B,MAAI;AACA,eAAW,QAAQ,SAAS;AAAA,EAChC,SACO,OAAO;AACV,QAAI,CAAC,UAAU,aAAa,SAAS,EAAE,SAAU,MAAgC,QAAQ,EAAE;AACvF,YAAM,cAAcA,KAAI;AAC5B,UAAM;AAAA,EACV;AACJ;AACA,IAAM,aAAa,CAAC,UAAgD,EAAE,IAAI,KAAK,MAAM,OAAO,KAAK,OAAO,aAAa,KAAK,aAAa,QAAQ,KAAK,QAAQ,cAAc,KAAK,aAAa;AA4CrL,IAAM,sBAAN,MAAgF;AAAA,EAC1E;AAAA,EACA,UAAU,oBAAI,IAA2B;AAAA,EACzC,UAAU,oBAAI,IAKpB;AAAA,EACM,cAAc,oBAAI,IAAY;AAAA,EAC9B,YAAY,oBAAI,IAAY;AAAA,EAC5B,UAAU,oBAAI,IAAY;AAAA,EAC1B,YAAY,oBAAI,IAAY;AAAA,EAC5B,aAAa,oBAAI,IAAY;AAAA,EAC7B,UAAU,oBAAI,IAAoB;AAAA,EAClC,YAAY,oBAAI,IAAY;AAAA,EACrC,gBAAgB;AAAA,EAChB,YAAY,SAAqC;AAAE,SAAK,WAAW;AAAA,EAAS;AAAA,EAC5E,UAAyB;AAAE,WAAO,KAAK,SAAS,QAAQ;AAAA,EAAG;AAAA,EAC3D,KAAK,OAAwB;AAAE,WAAO,KAAK,QAAQ,EAAE,KAAK,KAAK;AAAA,EAAG;AAAA,EAClE,QAAQ,OAAuB;AAAE,WAAO,KAAK,QAAQ,EAAE,MAAM,KAAK,EAAE;AAAA,EAAS;AAAA,EAC7E,gBAAgB,OAAe,QAAQ,aAA6B;AAAE,WAAO,EAAE,SAAS,KAAK,QAAQ,KAAK,GAAG,WAAW,iBAAiB,KAAK,IAAI,WAAW,CAAC,GAAG;AAAA,EAAG;AAAA,EACpK,WAAW,MAAyC;AAChD,WAAO,KAAK,aAAa,QAAQ,CAAC,UAAU;AACxC,UAAI,MAAM,aAAa,2BAA2B,MAAM,MAAM,SAAS;AACnE,eAAO,CAAC;AACZ,YAAM,QAAQ,MAAM;AACpB,YAAM,UAAU,MAAM,MAAM;AAC5B,YAAM,QAAQ,KAAK,OAAO,KAAK,CAAC,cAAc,UAAU,OAAO,OAAO;AACtE,aAAO,MAAM,WAAW,SAAS,MAAM,SAAS,WAAW,MAAM,UAAU,SAAS,YAAY,CAAC,MAAM,OAAO,IAAI,CAAC;AAAA,IACvH,CAAC;AAAA,EACL;AAAA,EACA,SAAS,OAAyC;AAAE,WAAO,KAAK,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAO,IAAI,OAAO,KAAK,IAAI,KAAK,WAAW,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EAAG;AAAA,EAC7J,MAAM,OAAe,SAAkC;AACnD,UAAM,QAAQ,KAAK,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,cAAc,UAAU,OAAO,OAAO;AAClF,QAAI,CAAC,SAAS,MAAM,SAAS,WAAW,MAAM,UAAU,SAAS;AAC7D,YAAM,IAAI,MAAM,4BAA4B;AAChD,QAAI,KAAK,UAAU,IAAI,GAAG,KAAK,KAAK,OAAO,EAAE;AACzC,YAAM,IAAI,MAAM,gCAAgC;AACpD,WAAO;AAAA,EACX;AAAA,EACA,aAAa,OAAe,UAAkB,WAAoC;AAC9E,UAAM,SAAS,KAAK,KAAK,KAAK,EAAE;AAChC,UAAM,QAAQ,cAAc,SAAS,OAAO,KAAK,CAAC,cAAc,UAAU,OAAO,QAAQ,IAAI,cAAc,QAAQ,SAAS;AAC5H,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,SAAS,SAAS,iBAAiB;AACvD,WAAO,KAAK,MAAM,OAAO,MAAM,EAAE;AAAA,EACrC;AAAA,EACA,KAAK,OAAe,SAAiC;AACjD,UAAM,OAAO,KAAK,KAAK,KAAK;AAC5B,UAAM,QAAQ,KAAK,aAAa,KAAK,CAAC,SAAS,KAAK,aAAa,kBAAkB,KAAK,MAAM,SAAS,WAAW,KAAK,MAAM,YAAY,OAAO;AAChJ,UAAM,WAAW,KAAK,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,CAAC,WAAW,MAAM,SAAS,2BAA2B,MAAM,SAAS,2BAA2B,MAAM,QAAQ,aAAa,kBAAkB,MAAM,QAAQ,MAAM,SAAS,WAAW,MAAM,QAAQ,MAAM,YAAY,OAAO,EAAE,GAAG,EAAE,GAAG,YAAY;AACvS,WAAO,EAAE,SAAS,GAAG,UAAU,QAAS,OAAO,SAAS,CAAC,EAA8B;AAAA,EAC3F;AAAA,EACA,cAAc,SAAyB,OAAe,SAAiB,SAA8C;AACjH,SAAK,QAAQ,EAAE,mBAAmB,KAAK,gBAAgB,KAAK,GAAG,OAAO,EAAE,UAAU,yBAAyB,OAAO,EAAE,MAAM,SAAS,QAAQ,GAAG,OAAO,UAAU,EAAE,SAAS,GAAG,QAAQ,GAAG,gBAAgB,EAAE,CAAC;AAAA,EAC/M;AAAA,EACA,QAAQ,OAA6C;AACjD,WAAO,KAAK,KAAK,KAAK,EAAE,aAAa,KAAK,CAAC,UAAU,MAAM,aAAa,yBAAyB,MAAM,MAAM,SAAS,KAAK,GAAG;AAAA,EAClI;AAAA,EACA,MAAM,cAAc,WAAmB,OAAqD;AACxF,eAAW,UAAU,OAAO;AACxB,YAAM,OAAO,KAAK,KAAK,WAAW,SAAS,OAAO,IAAI,CAAC;AACvD,UAAI,OAAO,KAAK,MAAM,GAAG,EAAE,SAAS,cAAc;AAC9C,cAAM,IAAI,MAAM,kEAAyD;AAC7E,YAAM,MAAM,KAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AACnD,YAAM,UAAU,MAAM,OAAO,SAAS,EAAE,MAAM,KAAK,CAAC;AAAA,IACxD;AAAA,EACJ;AAAA,EACA,MAAM,SAAS,OAAe,SAAiC,QAAoC;AAC/F,UAAM,SAAS,KAAK,QAAQ,KAAK;AACjC,UAAM,QAAQ,SAAS,KAAK,SAAS,cAAc,OAAO,SAAS,QAAQ,IAAI,IAAI;AACnF,QAAI,OAAO;AACP,YAAM,YAAY,KAAK,KAAK,MAAM,KAAK,mBAAmB,KAAK,GAAG,QAAQ,IAAI;AAC9E,iBAAW,SAAS,MAAM,QAAQ,SAAS;AACvC,YAAI,UAAU;AACV,gBAAM,GAAG,KAAK,KAAK,WAAW,KAAK,GAAG,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAC9E,YAAM,KAAK,cAAc,WAAW,KAAK;AAAA,IAC7C;AACA,QAAI;AACA,YAAM,KAAK,UAAU,KAAK,gBAAgB,OAAO,SAAS,GAAG,OAAO,QAAQ,MAAM,OAAO,MAAM;AAAA,IACnG,SACO,OAAO;AACV,YAAM,IAAI,MAAM,8BAA8B,QAAQ,IAAI,4DAAyD,UAAU,KAAK,CAAC,EAAE;AAAA,IACzI;AAAA,EACJ;AAAA,EACA,MAAM,OAAqC,OAAe,SAAiB,UAA8B,QAAqB,YAAoD,gBAA8J;AAC5U,UAAM,UAAU,MAAM;AAClB,YAAME,WAAU,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,UAAU,MAAM,YAAY,OAAO;AAC9E,UAAI,CAACA;AACD,cAAM,IAAI,MAAM,0CAA0C;AAC9D,aAAOA;AAAA,IACX;AACA,UAAM,OAAO,CAACA,aAAoC;AAC9C,YAAM,WAAW,WAAWA,QAAO;AACnC,YAAM,cAAc,eAAe,SAAS,aAAa;AACzD,aAAO,EAAE,SAAAA,UAAS,UAAU,aAAa,SAASC,2BAA0B,WAAW,MAAM,SAAS,uBAAuB;AAAA,IACjI;AACA,UAAM,UAAU,QAAQ;AACxB,QAAI,aAAa,UAAa,QAAQ,aAAa;AAC/C,YAAM,IAAI,MAAM,gCAAgC;AACpD,UAAM,QAAQ,KAAK,OAAO;AAC1B,QAAI,CAAC,MAAM;AACP,aAAO;AACX,UAAM,KAAK,SAAS,OAAO,SAAS,MAAM;AAC1C,UAAM,YAAY,KAAK,QAAQ,CAAC;AAChC,QAAI,UAAU;AACV,YAAM,IAAI,MAAM,8BAA8B,QAAQ,IAAI,0CAA0C;AACxG,WAAO;AAAA,EACX;AAAA,EACA,MAAM,mBAAmB,OAAgC;AAAE,SAAK,WAAW,IAAI,KAAK;AAAG,WAAO,oBAAoB,KAAK,KAAK,KAAK,SAAS,aAAa,KAAK,GAAG,iBAAiB,CAAC;AAAA,EAAG;AAAA,EACpL,YAAY;AAAE,WAAO,mBAAmB,IAAI,CAAC,EAAE,IAAI,OAAO,YAAY,OAAO,EAAE,IAAI,OAAO,YAAY,EAAE;AAAA,EAAG;AAAA,EAC3G,MAAM,QAAW,OAAeH,OAAc,OAAoF;AAC9H,SAAK,YAAYA,KAAI;AACrB,UAAM,SAAS,MAAM,KAAK,mBAAmB,KAAK;AAClD,UAAM,YAAY,KAAK,KAAK,QAAQA,KAAI;AACxC,UAAM,MAAM,GAAG,KAAK,KAAKA,KAAI;AAC7B,QAAI,KAAK,UAAU,IAAI,GAAG;AACtB,YAAM,IAAI,MAAM,aAAaA,KAAI,wBAAwB;AAC7D,QAAI,SAAS,SAAS;AAClB,YAAM,cAAcA,KAAI;AAC5B,SAAK,UAAU,IAAI,GAAG;AACtB,UAAM,UAAU,KAAK,KAAK,KAAK,QAAQ,MAAM,GAAG,UAAU;AAC1D,UAAM,SAAS,KAAK,KAAK,SAAS,GAAGA,KAAI,IAAI,WAAW,CAAC,EAAE;AAC3D,SAAK,QAAQ,IAAI,MAAM;AACvB,QAAI;AACA,YAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AACxC,iBAAW,SAAS,MAAM,QAAQ,OAAO;AACrC,YAAI,CAAC,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,KAAK,CAAC;AAC3C,gBAAM,GAAG,KAAK,KAAK,SAAS,KAAK,GAAG,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAC5E,YAAM,MAAM,MAAM;AAClB,YAAM,QAAQ,MAAM,MAAM,MAAM;AAChC,oBAAc,QAAQ,WAAWA,KAAI;AACrC,aAAO,EAAE,WAAW,MAAM;AAAA,IAC9B,UACA;AACI,WAAK,UAAU,OAAO,GAAG;AACzB,WAAK,QAAQ,OAAO,MAAM;AAC1B,YAAM,GAAG,QAAQ,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IACrD;AAAA,EACJ;AAAA,EACA,MAAM,SAAS,OAAeA,OAAc,YAAoB;AAC5D,UAAM,UAAU,OAAO,QAAQ,cAAc,aAAa,UAAU,GAAGA,KAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,OAAO,OAAO,EAAE,MAAM,MAAM,QAAQ,EAAE;AAChI,UAAM,EAAE,OAAO,MAAM,IAAI,MAAM,KAAK,QAAQ,OAAOA,OAAM,OAAO,cAAc;AAC1E,YAAM,KAAK,cAAc,WAAW,OAAO;AAC3C,YAAM,kBAAkB,SAAS;AACjC,YAAM,MAAM,MAAM,eAAe,SAAS;AAC1C,YAAM,UAAU,IAAI,UAAU,MAAM,kBAAkB,EAAE,WAAW,SAAS,IAAI,SAAS,OAAO,UAAU,KAAK,QAAQ,EAAE,yBAAyB,CAAC,IAAI;AACvJ,YAAM,iBAAiB,WAAW,EAAE,aAAa,SAAS,SAAS,SAAS,cAAc,SAAS,OAAO,QAAQ,SAAS,SAAS,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,aAAa,GAAG,OAAO,cAAc,GAAG,OAAO,EAAE,EAAE,CAAC;AAClO,cAAQ,MAAM,mBAAmB,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI;AAAA,IACxE,CAAC;AACD,WAAO,EAAE,MAAAA,OAAM,WAAW,WAAWA,KAAI,IAAI,MAAM;AAAA,EACvD;AAAA,EACA,MAAM,cAAc,SAAyB,OAAeA,OAAc,OAAsC,QAAsB,eAAwB;AAC1J,UAAM,EAAE,UAAU,IAAI,MAAM,KAAK,QAAQ,OAAOA,OAAM,CAAC,WAAW,KAAK,cAAc,QAAQ,KAAK,CAAC;AACnG,QAAI;AACA,UAAI;AACA,aAAK,QAAQ,EAAE,mBAAmB,KAAK,gBAAgB,KAAK,GAAG,OAAO,EAAE,UAAU,uBAAuB,OAAO,EAAE,MAAM,MAAM,GAAG,OAAO,EAAE,SAAS,GAAG,SAAS,cAAc,EAAE,CAAC;AACpL,YAAM,KAAK,SAAS,SAAS,OAAOA,OAAM,MAAM;AAChD,YAAM,UAAU,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,UAAU,MAAM,SAASA,KAAI;AACxE,aAAO,EAAE,MAAAA,OAAM,SAAS,QAAQ,SAAS,aAAa,QAAQ,aAAa,OAAO,QAAQ,MAAM,OAAO;AAAA,IAC3G,SACO,OAAO;AACV,YAAM,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACpD,YAAM;AAAA,IACV;AAAA,EACJ;AAAA,EACA,MAAM,MAAM,OAAeA,OAAc,UAAkB,QAAsB,WAA8C;AAC3H,SAAK,YAAYA,KAAI;AACrB,UAAM,YAAY,KAAK,KAAK,MAAM,KAAK,mBAAmB,KAAK,GAAGA,KAAI;AACtE,SAAK,MAAM,MAAM,SAAS,GAAG,eAAe;AACxC,YAAM,IAAI,MAAM,6CAA0C;AAC9D,UAAM,kBAAkB,SAAS;AACjC,UAAM,MAAM,MAAM,eAAe,SAAS;AAC1C,UAAM,WAAW,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,YAAY,QAAQ,SAASA,KAAI;AAC7E,UAAM,QAAQ,YAAY,KAAK,aAAa,OAAO,UAAU,SAAS,IAAI,WAAW,KAAK,MAAM,OAAO,SAAS,OAAO,IAAI,CAAC,IAAI,UAAU,KAAK,MAAM,OAAO,QAAQ,IAAI;AACxK,QAAI,YAAY,OAAO,OAAO,SAAS;AACnC,YAAM,IAAI,MAAM,mEAAmE;AACvF,UAAM,SAAS,KAAK,KAAK,KAAK,EAAE,OAAO,KAAK,CAAC,cAAc,UAAU,OAAO,QAAQ;AACpF,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,0BAA0B;AAC9C,UAAM,cAA+B,SAAS;AAAA,MAC1C,IAAI;AAAA,MAAW,QAAQA;AAAA,MAAM,aAAa,IAAI;AAAA,MAAO,MAAM;AAAA,MAAU,QAAQ,OAAO,OAAO,OAAO,CAAC,UAAU,MAAM,SAAS;AAAA,MAC5H,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAAG,WAAW;AAAA,MAAU,aAAa,mBAAmB,IAAI,WAAW,KAAK;AAAA,MAAM,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,QAAQ,CAAC,EAAE,GAAG,eAAe,MAAM,eAAe,KAAK;AAAA,MAAG,WAAW,EAAE,MAAM,QAAQ,QAAO,oBAAI,KAAK,GAAE,YAAY,EAAE;AAAA,MAAG,OAAO,WAAW;AAAA,MAAG,WAAW;AAAA,MAAM,iBAAiB,CAAC;AAAA,IAC/U;AACA,UAAMI,cAAa,MAAM,KAAK,SAAS,cAAc,OAAO,YAAY,IAAI,QAAQ,SAAY,WAAW,GAAG,IAAI,UAAU;AAC5H,eAAW,aAAa,KAAK,SAAS,WAAW,KAAK;AAClD,UAAI,UAAU,aAAa,iBAAiB,CAACA,WAAU,KAAK,CAAC,UAAU,MAAM,OAAO,UAAU,EAAE;AAC5F,QAAAA,WAAU,KAAK,SAAS;AAChC,UAAM,iBAAiB,WAAWA,UAAS;AAC3C,UAAM,UAAU,IAAI,UAAU,MAAM,kBAAkB,EAAE,WAAW,SAAS,IAAI,SAAS,OAAO,UAAU,KAAK,QAAQ,EAAE,0BAA0B,OAAO,CAAC,IAAI;AAC/J,UAAM,WAAwB,SAAS,YAAY,EAAE,OAAO,cAAc,WAAW,CAAC,EAAE;AACxF,QAAI,SAAS,SAAS,OAAO,SAAS;AAClC,YAAM,IAAI,MAAM,iHAA8G;AAClI,QAAI,SAAS,MAAM,SAAS;AACxB,YAAM,IAAI,MAAM,4CAA4C;AAChE,UAAM,QAAQ,QAAQ,KAAK,KAAK,OAAO,MAAM,EAAE,EAAE,SAAS,CAAC;AAC3D,YAAQ,SAAS,OAAO,OAAO,eAAe;AAC9C,UAAM,UAAU,OAAO,MAAM;AAC7B,UAAM,cAAc,OAAO,UAAUJ;AACrC,UAAM,YAAuC,OAAO,QAAQ,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM;AAC9F,UAAI,CAAC,gCAAgC,KAAK,EAAE;AACxC,cAAM,IAAI,MAAM,+BAA4B,EAAE,GAAG;AACrD,UAAI,GAAG,QAAQ,CAAC,yBAAyB,KAAK,GAAG,KAAK,IAAI;AACtD,cAAM,IAAI,MAAM,8BAA2B,GAAG,KAAK,IAAI,GAAG;AAC9D,YAAM,eAAe,GAAG,gBAAgB,CAAC;AACzC,YAAMK,YAAW,aAAa,IAAI,CAACL,UAAS;AACxC,cAAM,QAAQI,WAAU,KAAK,CAAC,SAAS,KAAK,OAAOJ,KAAI;AACvD,YAAI,CAAC;AACD,gBAAM,IAAI,MAAM,cAAcA,KAAI,0BAAuB;AAC7D,eAAO;AAAA,MACX,CAAC;AACD,aAAO;AAAA,QAAE;AAAA,QAAI,OAAO,GAAG;AAAA,QAAO,aAAa,GAAG,eAAe,GAAG;AAAA,QAAO,aAAa,GAAG;AAAA,QAAO,cAAc,GAAG;AAAA,QAAQ,eAAe;AAAA,QAAc,wBAAwBG,2BAA0BE,SAAQ;AAAA,QAAG,cAAc,GAAG,gBAAgB;AAAA,QAC9O,GAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,MAAM,SAAS,GAAG,KAAK,UAAU,GAAG,KAAK,QAAQ,IAAI,CAAC,WAAW,WAAW,SAAS,UAAU,KAAK,aAAa,OAAO,UAAU,MAAM,EAAE,EAAE,IAAI,MAAM,MAAM,GAAG,KAAK,QAAQ,KAAK,EAAE,IAAI,CAAC;AAAA,MAAG;AAAA,IACzO,CAAC;AACD,UAAM,oBAAoB,SAAS,OAAO,gBAAgB,CAAC;AAC3D,UAAM,mBAAmB,kBAAkB,IAAI,CAAC,OAAO;AACnD,YAAM,QAAQD,WAAU,KAAK,CAAC,UAAU,MAAM,OAAO,EAAE;AACvD,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,sBAAsB,EAAE,0BAAuB;AACnE,aAAO;AAAA,IACX,CAAC;AACD,UAAM,iBAAiB,WAAW,EAAE,aAAa,SAAS,OAAO,SAAS,UAAU,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,aAAa,GAAG,aAAa,cAAc,GAAG,aAAa,EAAE,EAAE,CAAC;AAC9K,UAAM,iBAAiB,IAAI,YAAY,MAAM,mBAAmB,SAAS,GAAG,KAAK,CAAC,SAAS,oBAAoB,KAAK,KAAK,IAAI,CAAC;AAC9H,UAAM,eAAe,iBAAiB,uBAAuB,WAAW,IAAI,OAAO,IAAI,CAAC;AACxF,QAAI,aAAa;AACb,YAAM,aAAa,qBAAkBJ,KAAI,IAAI,cAAc,yBAAsBA,KAAI,4BAA4B;AACrH,UAAM,UAAsC,CAAC;AAC7C,UAAM,QAAyC,CAAC;AAChD,eAAW,QAAQ,IAAI,SAAS,CAAC,GAAG;AAChC,YAAM,SAAS,MAAM,qBAAqB,EAAE,WAAW,YAAY,KAAK,QAAQ,aAAa,SAAS,OAAO,SAAS,UAAU,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,aAAa,GAAG,aAAa,cAAc,GAAG,aAAa,EAAE,EAAE,CAAC;AAC1N,UAAI,CAAC,OAAO;AACR,cAAM;AAAA,UAAa,oBAAoB,KAAK,MAAM;AAAA,UAC9C,OAAO,YAAY,OAAO,CAAC,SAAS,KAAK,aAAa,OAAO,EAAE,IAAI,CAAC,SAChE,GAAG,KAAK,YAAY,KAAK,MAAM,GAAG,KAAK,QAAQ,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,MAAM,KAAK,EAAE,IAAI,KAAK,QAAQ,QAAQ,aAAa,GAAG,CAAC,EAAE;AAAA,UAC9I,wBAAwB,KAAK,MAAM;AAAA,QAA4B;AACvE,YAAM,SAAS,KAAK,SAAS,MAAM,OAAO,WAAW,KAAK,MAAM,IAAI;AACpE,UAAI,iDAAiD,KAAK,MAAM;AAC5D,cAAM,IAAI,MAAM,oDAAoD;AACxE,YAAM,aAAa,QAAQ,KAAK,EAAE;AAClC,cAAQ,KAAK,EAAE,MAAM,YAAY,YAAY,OAAO,WAAW,CAAC;AAChE,YAAM,KAAK;AAAA,QAAE,IAAI,GAAGA,KAAI,KAAK,KAAK,EAAE;AAAA,QAAI,KAAK,KAAK;AAAA,QAAI,OAAO,KAAK,SAAS,IAAI;AAAA,QAAO,SAAS,UAAU,MAAM,KAAK,CAAC,SAAS,KAAK,QAAQ,KAAK,EAAE,GAAG,WAAW;AAAA,QAC5J,YAAY,CAAC,EAAE,MAAM,UAAU,eAAe,QAAQ,CAAC;AAAA,QAAG,MAAM,+BAA+B,oBAAoB,qDAAqD,gBAAgB,2BAA2B,gBAAgB;AAAA,QAA0B;AAAA,QAAQ;AAAA,MAAW,CAAC;AAAA,IACzR;AACA,UAAM,cAAc,CAAC,GAAG,IAAI,KAAK,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,QAAQ,KAAK,QAAQ,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;AACpH,UAAM,cAAc,YAAY,SAAS,IAAI,MAAM,cAAc,WAAW,IAAI;AAChF,UAAM,QAAQ,MAAM,mBAAmB,SAAS;AAChD,UAAM,WAAW,cAAc,EAAE,OAAO,SAAS,SAAS,cAAc,MAAM,QAAQ,CAAC;AACvF,UAAM,aAAqC;AAAA,MAAE,MAAAA;AAAA,MAAM,OAAO,IAAI;AAAA,MAAO,aAAa,IAAI,eAAe;AAAA,MAAI;AAAA,MAAS;AAAA,MAAa;AAAA,MAAU,aAAa,UAAU,eAAe;AAAA,MAC3K,WAAW,KAAK,KAAK,KAAK,SAAS,aAAa,KAAK,GAAG,gBAAgBA,OAAM,QAAQ;AAAA,MAAG,iBAAiB;AAAA,MAC1G,GAAI,UAAU,EAAE,aAAa,aAAa,IAAI,CAAC;AAAA,MAAI,aAAa,SAAS;AAAA,MAAO,YAAY;AAAA,MAAa;AAAA,MAAW;AAAA,MACpH,GAAI,SAAS,QAAQ,EAAE,OAAO,EAAE,eAAe,mBAAmB,wBAAwBG,2BAA0B,gBAAgB,EAAE,EAAE,IAAI,CAAC;AAAA,IAAG;AACpJ,WAAO,EAAE,WAAW,OAAO,YAAY,SAAS,aAAa,aAAa,CAAC,OAAO,GAAI,UAAU,EAAE,mBAAmB,QAAQ,WAAW,IAAI,CAAC,EAAG;AAAA,EACpJ;AAAA,EACA,SAAS,SAAyB,OAAeH,OAAc,QAAsB,WAAoB;AACrG,WAAO,KAAK,UAAU,SAAS,OAAOA,OAAM,MAAM,QAAQ,SAAS;AAAA,EACvE;AAAA,EACA,MAAM,UAAU,SAAyB,OAAeA,OAAc,MAAe,QAAsB,WAAoB;AAC3H,UAAM,MAAM,GAAG,KAAK,KAAKA,KAAI;AAC7B,QAAI,KAAK,YAAY,IAAI,GAAG;AACxB,YAAM,IAAI,MAAM,SAASA,KAAI,0BAA0B;AAC3D,UAAM,QAAQ,KAAK,iBAAiB,KAAK;AACzC,SAAK,YAAY,IAAI,GAAG;AACxB,UAAM,WAAW,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,SAASA,KAAI;AACvE,QAAI;AACJ,QAAI,YAAY;AAChB,QAAI;AACA,iBAAW,MAAM,KAAK,MAAM,OAAOA,OAAM,QAAQ,SAAS,QAAQ,SAAS;AAC3E,YAAM,aAAa,SAAS;AAC5B,YAAM,QAAQ,SAAS,MAAM,OAAO,CAAC,SAAS,0BAA0B,KAAK,KAAK,IAAI,CAAC;AACvF,UAAI,MAAM,QAAQ;AACd,cAAM,iBAAiB,MAAM,KAAK,SAAS,wBAAwB,KAAK;AACxE,cAAM,SAAS,MAAM,iBAAiB,SAAS,SAAS;AACxD,YAAI,SAAS;AACb,cAAM,SAAS,MAAM,gBAAgB,gBAAgB,EAAE,SAAS,QAAQ,UAAU,MAAM,CAAC,YAAY,OAAO,UAAU,sBAAsB,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;AAChL,cAAM,SAAS,MAAM,kBAAkB;AAAA,UAAE,SAAS,OAAO;AAAA,UAAS,MAAM,CAAC,GAAG,OAAO,IAAI;AAAA,UAAG,KAAK,SAAS;AAAA,UACpG,KAAK,eAAe;AAAA,UAAK,KAAK,eAAe;AAAA,UAAK,KAAK,eAAe;AAAA,UAAK,OAAO,SAASA,KAAI;AAAA,UAAI;AAAA,UAAQ,WAAW;AAAA,UACtH,UAAU,CAAC,UAAU,OAAO,OAAO,MAAM,SAAS,CAAC;AAAA,UAAG,UAAU,CAAC,UAAU;AAAE,sBAAU,SAAS,MAAM,SAAS,GAAG,MAAM,KAAM;AAAA,UAAG;AAAA,QAAE,CAAC;AACxI,YAAI,OAAO,SAAS,KAAK,OAAO;AAC5B,gBAAM,IAAI,MAAM,OAAO,OAAOA,OAAM,EAAE,MAAM,OAAO,MAAM,UAAU,OAAO,UAAU,OAAO,CAAC,CAAC;AAAA,MACrG;AACA,UAAI,cAAc,SAAS,KAAK,MAAM,cAAc,MAAM,mBAAmB,SAAS,SAAS,CAAC;AAC5F,cAAM,IAAI,MAAM,+EAAsE;AAC1F,UAAI,UAAU,KAAK,iBAAiB,KAAK;AACrC,cAAM,IAAI,MAAM,oDAAiD;AACrE,UAAI,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,SAASA,KAAI,GAAG,aAAa,UAAU;AAChF,cAAM,IAAI,MAAM,+CAA4C;AAChE,UAAI;AACA,aAAK,YAAY,OAAO,WAAW,OAAO;AAC9C,YAAM,QAAQ,oBAAI,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,GAAG,KAAK,SAAS,kBAAkB,GAAG,GAAG,KAAK,SAAS,KAAK,EAAE,OAAO,CAAC,YAAY,QAAQ,SAASA,KAAI,EAAE,QAAQ,CAAC,YAAY,QAAQ,UAAU,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/P,iBAAW,MAAM,WAAW;AACxB,YAAI,GAAG,MAAM;AACT,cAAI,MAAM,IAAI,GAAG,KAAK,IAAI;AACtB,kBAAM,IAAI,MAAM,gBAAgB,GAAG,KAAK,IAAI,wBAAwB;AACxE,gBAAM,IAAI,GAAG,KAAK,IAAI;AAAA,QAC1B;AACJ,YAAMM,YAAW,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,YAAY,QAAQ,YAAY,WAAW,WAAW,QAAQ,SAASN,KAAI;AACvH,UAAIM;AACA,cAAM,IAAI,MAAM,UAAU,WAAW,WAAW,8BAA8BA,UAAS,IAAI,+CAA4C;AAC3I,YAAM,MAAM,WAAW,WAAW,EAAE,WAAW,KAAK,CAAC;AACrD,iBAAW,UAAU,SAAS,OAAO;AACjC,cAAM,OAAO,KAAK,KAAK,WAAW,WAAW,SAAS,OAAO,IAAI,CAAC;AAClE,cAAM,MAAM,KAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AACnD,cAAM,UAAU,MAAM,OAAO,OAAO;AAAA,MACxC;AACA,YAAM,kBAAkB,WAAW,SAAS;AAC5C,UAAI,SAAS,sBAAsB;AAC/B,cAAM,UAAU,KAAK,KAAK,WAAW,WAAW,YAAY,GAAG,SAAS,iBAAiB;AAC7F,iBAAW,UAAU,SAAS;AAC1B,cAAM,UAAU,KAAK,KAAK,WAAW,WAAW,OAAO,IAAI,GAAG,OAAO,UAAU;AACnF,YAAM,UAAU,KAAK,KAAK,WAAW,WAAW,WAAW,UAAU,GAAG,SAAS,WAAW;AAC5F,YAAM,UAAU,KAAK,KAAK,WAAW,WAAW,cAAc,GAAG,KAAK,UAAU,SAAS,KAAK,CAAC;AAC/F,YAAM,uBAAuB,WAAW,WAAW,MAAM,KAAK,SAAS,wBAAwB,KAAK,CAAC;AACrG,cAAQ,eAAe;AACvB,UAAI,UAAU,KAAK,iBAAiB,KAAK;AACrC,cAAM,IAAI,MAAM,oDAAiD;AACrE,UAAI,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,SAASN,KAAI,GAAG,aAAa,UAAU;AAChF,cAAM,IAAI,MAAM,+CAA4C;AAChE,UAAI,CAAC,SAAS,aAAa;AACvB,aAAK,MAAM,OAAO,WAAW,OAAO;AACpC,YAAI;AACA,eAAK,YAAY,OAAO,WAAW,OAAO;AAC9C,gBAAQ,WAAW,aAAa,KAAK,KAAK,OAAO,WAAW,OAAO,EAAE,QAAQ,eAAe;AAC5F,YAAI,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,YAAY,WAAW,WAAW,KAAK,SAASA,KAAI;AAC7F,gBAAM,IAAI,MAAM,iDAAiD;AAAA,MACzE;AACA,YAAM,eAAe,oBAAI,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,SAAS,KAAK,IAAI,GAAG,GAAG,KAAK,SAAS,kBAAkB,GAAG,GAAG,KAAK,SAAS,KAAK,EAAE,OAAO,CAAC,YAAY,QAAQ,SAASA,KAAI,EAAE,QAAQ,CAAC,YAAY,QAAQ,UAAU,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtQ,iBAAW,MAAM,WAAW;AACxB,YAAI,GAAG,MAAM;AACT,cAAI,aAAa,IAAI,GAAG,KAAK,IAAI;AAC7B,kBAAM,IAAI,MAAM,gBAAgB,GAAG,KAAK,IAAI,2BAA2B;AAC3E,uBAAa,IAAI,GAAG,KAAK,IAAI;AAAA,QACjC;AACJ,gBAAU,EAAE,SAAS,GAAG,SAAS,WAAW,GAAG,gBAAgB;AAC/D,UAAI,SAAS,aAAa;AACtB,cAAM,SAAS,KAAK,KAAK,KAAK,EAAE;AAChC,cAAM,SAAS,OAAO,KAAK,CAACO,WAAUA,OAAM,OAAO,QAAQ,OAAO;AAClE,cAAM,SAAS,OAAO,KAAK,CAACA,WAAUA,OAAM,WAAWP,KAAI;AAC3D,YAAI,QAAQ,SAAS,YAAY,OAAO,UAAU,SAAS,WAAW;AAClE,kBAAQ,WAAW,aAAa,KAAK,KAAK,OAAO,OAAO,EAAE,EAAE,QAAQ,eAAe;AACnF,eAAK,QAAQ,EAAE,aAAa,SAAS,OAAO,OAAO,IAAI,8BAA8B;AAAA,QACzF,WACS;AACL,gBAAM,IAAI,MAAM,WAAWA,KAAI,0BAAuB,OAAO,SAAS,WAAW,OAAO,UAAU,SAAS,YAAY,eAAe,SAAS,UAAU,OAAO,WAAW,8GAA2G;AAAA;AAEtR,eAAK,QAAQ,EAAE,kBAAkB,SAAS,OAAO,EAAE,QAAQA,OAAM,aAAa,WAAW,OAAO,aAAa,mBAAmB,WAAW,WAAW,GAAG,QAAQ,OAAO,OAAO,OAAO,CAAC,UAAU,MAAM,SAAS,GAAG,WAAW,KAAK,CAAC;AACxO,cAAM,QAAQ,KAAK,aAAa,OAAO,QAAQ,SAAS,IAAIA,KAAI,EAAE;AAClE,mBAAW,UAAU,MAAM;AAC3B,mBAAW,cAAc,MAAM;AAC/B,mBAAW,QAAQ,WAAW;AAC1B,qBAAW,aAAa,KAAK;AACzB,sBAAU,gBAAgB,MAAM;AACxC,mBAAW,MAAM,WAAW;AACxB,cAAI,GAAG,MAAM;AACT,eAAG,KAAK,UAAU,GAAG,KAAK,QAAQ,IAAI,CAAC,WAAW,WAAW,YAAY,MAAM,KAAK,MAAM;AAAA,MACtG;AACA,cAAQ,eAAe;AACvB,WAAK,cAAc,SAAS,OAAO,WAAW,SAAS,UAAU;AACjE,kBAAY;AACZ,UAAI,YAAY,SAAS,aAAa,WAAW;AAC7C,cAAM,KAAK,QAAQ,EAAE,yBAAyB,aAAa,OAAO,KAAK,UAAU,QAAQ,CAAC;AAC9F,aAAO,EAAE,MAAAA,OAAM,OAAO,IAAI,WAAW,WAAW,IAAI,OAAO,WAAW,MAAM,QAAQ,QAAQ,KAAc;AAAA,IAC9G,UACA;AACI,WAAK,YAAY,OAAO,GAAG;AAC3B,UAAI,CAAC,aAAa,YAAY,SAAS,WAAW,aAAa,UAAU;AACrE,cAAM,GAAG,SAAS,WAAW,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IAChF;AAAA,EACJ;AAAA,EACA,KAAK,OAAe;AAAE,WAAO,KAAK,SAAS,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,QAAQ,MAAM,OAAO,IAAI,QAAQ,WAAW,IAAI,WAAW,QAAQ,UAAU,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,MAAM,KAAK,KAAK,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,EAAE,EAAE,EAAE;AAAA,EAAG;AAAA,EACrR,MAAM,OAAO,SAAyB,OAAeA,OAAc;AAC/D,UAAM,UAAU,KAAK,SAAS,OAAOA,KAAI;AACzC,SAAK,YAAY,OAAO,QAAQ,OAAO;AACvC,QAAI,KAAK,YAAY,IAAI,GAAG,KAAK,KAAKA,KAAI,EAAE;AACxC,YAAM,IAAI,MAAM,kCAAkC;AACtD,UAAM,QAAQ,KAAK,MAAM,OAAO,QAAQ,OAAO;AAC/C,UAAM,MAAM,GAAG,KAAK,KAAK,QAAQ,OAAO;AACxC,SAAK,UAAU,IAAI,GAAG;AACtB,QAAI;AACA,YAAM,KAAK,UAAU,OAAO,QAAQ,OAAO;AAC3C,WAAK,cAAc,SAAS,OAAO,QAAQ,SAAS,IAAI;AACxD,UAAI,MAAM,SAAS;AACf,aAAK,QAAQ,EAAE,UAAU,SAAS,OAAO,QAAQ,SAAS,sBAAsB;AACpF,YAAM,GAAG,QAAQ,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IAChE,UACA;AACI,WAAK,UAAU,OAAO,GAAG;AAAA,IAC7B;AACA,WAAO,EAAE,SAASA,MAAK;AAAA,EAC3B;AAAA,EACA,cAAc,SAAyB,OAAe,WAAmB,SAAkB;AACvF,UAAM,EAAE,SAAS,KAAK,IAAI,iBAAiB,KAAK,SAAS,KAAK,GAAG,SAAS;AAC1E,SAAK,cAAc,SAAS,OAAO,QAAQ,SAAS,EAAE,GAAG,SAAS,OAAO,QAAQ,MAAM,IAAI,CAAC,SAAS,KAAK,OAAO,KAAK,KAAK,EAAE,GAAG,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;AACzJ,WAAO,EAAE,MAAM,GAAG,QAAQ,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ;AAAA,EAC1D;AAAA,EACA,KAAK,OAAmC;AACpC,WAAO,KAAK,SAAS,KAAK,EAAE,QAAQ,CAAC,YAAY,QAAQ,MAAM,IAAI,CAAC,UAAU;AAAA,MAAE,IAAI,KAAK;AAAA,MAAI,SAAS,QAAQ;AAAA,MAAS,aAAa,QAAQ;AAAA,MAAa,OAAO,KAAK;AAAA,MAAO,aAAa,QAAQ;AAAA,MAAa,UAAU,QAAQ;AAAA,MAC5N,SAAS,QAAQ,UAAU,IAAI,CAAC,EAAE,IAAI,OAAO,aAAa,aAAa,OAAO,EAAE,IAAI,OAAO,aAAa,aAAa,EAAE;AAAA,MAAG,YAAY,KAAK;AAAA,MAAY,SAAS,KAAK;AAAA,MAAS,OAAO,KAAK,KAAK,OAAO,QAAQ,OAAO;AAAA,MAAG,aAAa,KAAK,aAAa,KAAK,EAAE,YAAY,OAAO,CAAC,eAAe,WAAW,YAAY,QAAQ,WAAW,WAAW,aAAa,QAAQ,QAAQ;AAAA,IAAE,EAAE,CAAC;AAAA,EAChY;AAAA,EACA,cAAc,OAAe;AACzB,QAAI,CAAC,KAAK,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAO,IAAI,OAAO,KAAK;AACvD,aAAO,CAAC;AACZ,UAAM,OAAO,KAAK,KAAK,KAAK;AAC5B,WAAO,KAAK,SAAS,KAAK,EAAE,QAAQ,CAAC,YAAY,QAAQ,UAAU,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;AAAA,MAAE,UAAU,QAAQ;AAAA,MAAM,MAAM,GAAG,KAAK;AAAA,MAAM,aAAa,GAAG;AAAA,MAAa,MAAM,GAAG,KAAK;AAAA,MAAM,SAAS,QAAQ;AAAA,MAAS,aAAa,QAAQ;AAAA,MAAa,YAAY,GAAG;AAAA,MAAI,UAAU,QAAQ;AAAA,MAAU,YAAY,QAAQ;AAAA,MAAU,aAAa,QAAQ;AAAA,MACnV,YAAY,OAAO,QAAS,GAAG,YAK5B,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAACA,OAAM,MAAM,OAAO,EAAE,MAAAA,OAAM,MAAM,CAAC,UAAU,UAAU,WAAW,SAAS,EAAE,SAAS,OAAO,QAAQ,EAAE,IAAI,OAAO,QAAQ,SAAS,QAAQ,aAAa,OAAO,eAAeA,OAAM,WAAY,GAAG,YAEtN,YAAY,CAAC,GAAG,SAASA,KAAI,EAAE,EAAE;AAAA,MACxC,UAAU,GAAG,KAAK,WAAW,KAAK,OAAO,OAAO,CAAC,UAAU,MAAM,SAAS,WAAW,MAAM,UAAU,SAAS,SAAS,EAAE,IAAI,CAAC,UAAU,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,SAAS,QAAQ,KAAK,OAAO,KAAK,CAAC,UAAU,MAAM,OAAO,OAAO,GAAG,UAAU,KAAK,EAAE;AAAA,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAAA,EAClR;AAAA,EACA,MAAM,aAAa,OAAe,WAAmB;AAAE,UAAM,UAAU,KAAK,SAAS,OAAO,SAAS;AAAG,WAAO,EAAE,OAAO,KAAK,MAAM,MAAM,SAAS,KAAK,KAAK,QAAQ,WAAW,cAAc,GAAG,MAAM,CAAC,EAA0B;AAAA,EAAG;AAAA,EACpO,MAAM,OAAe,QAAgB,UAAkB;AACnD,UAAM,UAAU,KAAK,SAAS,OAAO,MAAM;AAC3C,UAAM,OAAO,QAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,MAAM;AAC5D,QAAI,CAAC,QAAQ,QAAQ,aAAa;AAC9B,YAAM,IAAI,MAAM,0CAA0C;AAC9D,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI,MAAM,sGAAmG;AACvH,UAAM,cAAc,aAAa,KAAK,KAAK,QAAQ,WAAW,QAAQ,UAAU,GAAG,MAAM;AACzF,WAAO,EAAE,GAAG,MAAM,QAAQ,GAAG,WAAW;AAAA,EAAK,KAAK,MAAM,IAAI,iBAAiB,GAAY,kBAAkB,aAAa,KAAK,KAAK,QAAQ,WAAW,KAAK,UAAU,GAAG,MAAM,EAAE;AAAA,EACnL;AAAA,EACA,eAAe,SAAuC;AAClD,WAAO,KAAK,WAAW,QAAQ,IAAI,EAAE,QAAQ,CAAC,YAAY,QAAQ,UAAU,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAS,GAAG,KAAK,WAAW,CAAC,GAAG,KAAK,QAAQ,SAAS,QAAQ,OAAO,IAAK,CAAC,IAAI,CAAC,kBAAkB;AAAA,MAC1L,MAAM,GAAG,KAAK;AAAA,MAAM,OAAO,GAAG;AAAA,MAAO,aAAa,GAAG;AAAA,MAAa,QAAQ,GAAG;AAAA,MAAwB,cAAc,GAAG;AAAA,MAAyB,WAAW;AAAA,MAAS,eAAe;AAAA,MAClL,KAAK,OAAO,OAAO,IAAI,UAAU;AAC7B,cAAM,iBAAiB,CAAC,kBAAqC,uBAAuB,QAAQ,OAAO,MAAM,mBAAmB,GAAG,eAAe,oBAAI,IAAI,CAAC,EAAE;AACzJ,eAAO,KAAK,iBAAiB,QAAQ,OAAO,SAAS,IAAI,OAAO,EAAE,IAAI,MAAM,QAAQ,WAAW,EAAE,IAAI,QAAQ,SAAS,MAAM,QAAQ,MAAM,SAAS,WAAW,WAAW,QAAQ,GAAG,gBAAgB,MAAM,CAACA,OAAM,OAAO,UAAU,MAAM,eAAe,GAAG,EAAE,eAAe,KAAK,IAAIA,OAAM,KAAK,EAAE,GAAG,MAAM,UAAU,IAAI,gBAAgB,EAAE,MAAM;AAAA,MACpV;AAAA,IACJ,CAAC,CAAC,CAAC,CAAC;AAAA,EACZ;AAAA,EACA,MAAM,QAAW,OAAe,SAAiB,QAAqB,SAAuC;AACzG,UAAM,SAAS,KAAK,iBAAiB,KAAK;AAC1C,UAAM,MAAM,GAAG,KAAK,KAAK,OAAO;AAChC,UAAM,WAAW,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,QAAQ;AAC1D,UAAM,YAAY,SAAS,KAAK,MAAM;AAAE,aAAO,eAAe;AAAG,UAAI,WAAW,KAAK,iBAAiB,KAAK;AACvG,cAAM,IAAI,MAAM,gDAAgD;AAAG,WAAK,MAAM,OAAO,OAAO;AAAG,aAAO,QAAQ;AAAA,IAAG,CAAC;AACtH,UAAM,SAAS,UAAU,KAAK,MAAM,QAAW,MAAM,MAAS;AAC9D,SAAK,QAAQ,IAAI,KAAK,MAAM;AAC5B,QAAI;AACA,aAAO,MAAM;AAAA,IACjB,UACA;AACI,UAAI,KAAK,QAAQ,IAAI,GAAG,MAAM;AAC1B,aAAK,QAAQ,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,MAAM,SAAS,OAAe,SAAiC,OAAgB,SAAyB,aAAiD,QAKtJ;AACC,QAAI,CAAC,QAAQ;AACT,YAAM,IAAI,MAAM,4CAA4C;AAChE,UAAM,UAAU,KAAK,SAAS,OAAO,QAAQ,IAAI;AACjD,QAAI,QAAQ,aAAa,QAAQ;AAC7B,YAAM,IAAI,MAAM,gCAAgC;AACpD,UAAM,OAAiB,CAAC;AACxB,QAAI,QAAQ;AACZ,UAAM,UAAU,KAAK,KAAK,OAAO,QAAQ,OAAO;AAChD,UAAM,SAAS,MAAM,KAAK,QAAQ,EAAE,yBAAyB,QAAQ;AAAA,MACjE,SAAS,EAAE,OAAO,QAAQ,aAAa,OAAO,CAAC,EAAE,UAAU,QAAQ,aAAa,MAAM,MAAM,SAAS,KAAK,KAAK,QAAQ,WAAW,QAAQ,WAAW,GAAG,MAAM,EAAE,CAAC,GAAG,YAAY,SAAS;AAAA,MACzL,YAAY,KAAK,UAAU,OAAO;AAAA,MAAG,KAAK,QAAQ;AAAA,MAAW;AAAA,MAAO,OAAO,QAAQ;AAAA,MACnF,KAAK,EAAE,MAAK,oBAAI,KAAK,GAAE,YAAY,GAAG,UAAU,QAAQ,GAAG;AAAA,MAAG,SAAS,EAAE,OAAO,OAAO,EAAE,IAAI,QAAQ,SAAS,QAAQ,QAAQ,YAAY,GAAG,cAAc,QAAQ,IAAI,gBAAgB,QAAQ,MAAM,WAAW,QAAQ,WAAW,cAAc,YAAY;AAAA,IACjQ,GAAG,EAAE,QAAQ,KAAK,CAAC,UAAU;AAAE,UAAI,KAAK,SAAS;AACzC,aAAK,MAAM,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU,KAAK,GAAG,MAAM,GAAG,GAAI,CAAC;AAAA,IAAG,GAAG,MAAM,OAAOA,OAAM,UAAU;AACvH,YAAM,aAAa,YAAY,KAAK,CAAC,UAAU,MAAM,OAAOA,KAAI;AAChE,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,cAAcA,KAAI,wBAAwB;AAC9D,UAAI,EAAE,QAAQ;AACV,cAAM,IAAI,MAAM,4DAAsD;AAC1E,UAAI,QAAQ,UAAU,KAAK,CAAC,OAAO,GAAG,MAAM,SAASA,KAAI;AACrD,cAAM,IAAI,MAAM,yHAAsH;AAC1I,cAAQ,WAAW,QAAQ,OAAO,WAAWA,KAAI,EAAE;AACnD,YAAM,SAAS,MAAM,QAAQ,KAAKA,OAAM,OAAO,KAAK;AACpD,aAAO,QAAQ,WAAW,cAAc,QAAQ,YAAYA,KAAI,EAAE;AAAA,IACtE,EAAE,CAAC;AACP,WAAO,eAAe;AACtB,SAAK,MAAM,OAAO,QAAQ,OAAO;AACjC,UAAM,QAAQ,QAAQ,QAAQ,aAAa,OAAO,OAAO,eAAe;AACxE,WAAO,EAAE,QAAQ,OAAO,QAAQ,MAAM,OAAO,QAAQ;AAAA,EACzD;AAAA,EACA,aAAa,OAAe,SAAiB,OAAkB,SAA+B;AAC1F,QAAI,cAAc,KAAK,MAAM,cAAc,QAAQ,MAAM;AACrD;AACJ,QAAI,KAAK,KAAK,OAAO,OAAO,EAAE,aAAa,QAAQ;AAC/C,YAAM,IAAI,MAAM,8EAAwE;AAC5F,SAAK,QAAQ,EAAE,kBAAkB,KAAK,gBAAgB,KAAK,GAAG,OAAO,SAAS,KAAK;AAAA,EACvF;AAAA,EACA,iBAAiB,OAAe,OAA+B,UAAmC,OAAgB,SAAyB,QAAyC;AAChL,UAAM,aAAa,CAAC,YAA6D;AAC7E,YAAM,KAAK,QAAQ,UAAU,KAAK,CAAC,UAAU,MAAM,OAAO,SAAS,EAAE;AACrE,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,oCAAoC;AACxD,aAAO;AAAA,IACX;AACA,WAAO,KAAK,QAAQ,OAAO,MAAM,SAAS,QAAQ,YAAY;AAC1D,YAAM,EAAE,SAAS,UAAU,IAAI,YAAY,IAAI,MAAM,KAAK,OAAO,OAAO,MAAM,SAAS,MAAM,UAAU,QAAQ,YAAY,QAAQ,cAAc;AACjJ,YAAM,QAAQ,QAAQ,GAAG,aAAa,OAAO,WAAW,GAAG,EAAE,EAAE;AAC/D,YAAM,SAAS,MAAM,KAAK,SAAS,OAAO,SAAS,EAAE,MAAM,YAAY,YAAY,GAAG,IAAI,OAAO,MAAM,GAAG,SAAS,aAAa,MAAM;AACtI,YAAM,SAAS,QAAQ,GAAG,cAAc,OAAO,QAAQ,YAAY,GAAG,EAAE,EAAE;AAC1E,WAAK,aAAa,OAAO,QAAQ,SAAS,OAAO,OAAO,OAAO,OAAO;AACtE,cAAQ,QAAQ,KAAK,GAAG,OAAO,IAAI;AACnC,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAAA,EACA,MAAM,SAAS,SAAgC,QAA0C;AACrF,SAAK,WAAW,IAAI,QAAQ,KAAK;AACjC,QAAI;AACA,YAAM,UAAU,CAAC,YAAoC;AACjD,YAAI,CAAC,QAAQ;AACT,gBAAM,IAAI,MAAM,yDAAyD;AAC7E,eAAO,QAAQ;AAAA,MACnB;AACA,YAAM,iBAAiB,CAAC,kBAAqC,uBAAuB,KAAK,MAAM,QAAQ,OAAO,QAAQ,OAAO,GAAG,QAAQ,OAAO,eAAe,oBAAI,IAAI,CAAC,EAAE;AACzK,YAAM,KAAK,QAAQ,QAAQ,OAAO,QAAQ,SAAS,QAAQ,YAAY;AACnE,cAAM,EAAE,SAAS,YAAY,IAAI,MAAM,KAAK,OAAO,QAAQ,OAAO,QAAQ,SAAS,QAAW,QAAQ,SAAS,cAAc;AAC7H,cAAM,UAA0B,EAAE,IAAI,QAAQ,QAAQ,MAAM,SAAS,WAAW,EAAE,IAAI,QAAQ,SAAS,MAAM,SAAS,GAAG,gBAAgB,MAAM,CAACA,OAAM,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,MAAM,eAAe,KAAK,IAAIA,OAAM,KAAK,EAAE;AAC5O,cAAM,SAAS,MAAM,KAAK,SAAS,QAAQ,OAAO,SAAS,EAAE,MAAM,SAAS,OAAO,cAAc,QAAQ,KAAK,EAAE,GAAG,SAAS,aAAa,MAAM;AAC/I,aAAK,aAAa,QAAQ,OAAO,QAAQ,SAAS,OAAO,OAAO,OAAO,OAAO;AAC9E,mBAAW,QAAQ,OAAO;AACtB,kBAAQ,KAAK,EAAE,MAAM,WAAW,KAAK,CAAC;AAAA,MAC9C,CAAC;AACD,aAAO,EAAE,SAAS,MAAM,OAAO,WAAW,EAAE;AAAA,IAChD,SACO,OAAO;AACV,aAAO,EAAE,SAAS,UAAU,KAAK,GAAG,OAAO,WAAW,EAAE;AAAA,IAC5D;AAAA,EACJ;AAAA,EACA,iBAAiB,OAAuB;AAAE,QAAI,KAAK,iBAAiB,KAAK,UAAU,IAAI,KAAK;AACxF,YAAM,IAAI,MAAM,wBAAwB;AAAG,WAAO,KAAK,QAAQ,IAAI,KAAK,KAAK;AAAA,EAAG;AAAA,EACpF,gBAAgB,OAAe,QAAgB,UAAkB,YAAoB,WAAmB,OAAgB,SAAS,KAAK,iBAAiB,KAAK,GAAG;AAC3J,UAAM,UAAU,KAAK,SAAS,OAAO,MAAM;AAC3C,QAAI,CAAC,QAAQ,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,MAAM;AAChD,YAAM,IAAI,MAAM,4BAA4B;AAChD,WAAO,KAAK,OAAO,OAAO,SAAS,QAAQ,UAAU,YAAY,WAAW,OAAO,MAAM;AAAA,EAC7F;AAAA,EACA,wBAAwB,OAAe,aAAqB,UAAkB,YAAoB,WAAmB,OAAgB,SAAS,KAAK,iBAAiB,KAAK,GAAG;AACxK,UAAM,UAAU,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,UAAU,MAAM,gBAAgB,UAAU,WAAW,CAAC;AACjG,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,4CAAyC;AAC7D,WAAO,KAAK,OAAO,OAAO,SAAS,QAAQ,MAAM,UAAU,YAAY,WAAW,OAAO,MAAM;AAAA,EACnG;AAAA,EACA,OAAO,OAAe,SAAiC,QAAgB,UAAkB,YAAoB,WAAmB,OAAgB,QAAyC;AACrL,SAAK,WAAW,IAAI,KAAK;AACzB,QAAI,WAAW,KAAK,iBAAiB,KAAK;AACtC,YAAM,IAAI,MAAM,oCAAoC;AACxD,QAAI,QAAQ,aAAa;AACrB,YAAM,IAAI,MAAM,uDAAuD;AAC3E,UAAM,KAAK,QAAQ,UAAU,KAAK,CAAC,UAAU,MAAM,OAAO,UAAU;AACpE,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,oCAAoC;AACxD,UAAM,QAAQ,KAAK,aAAa,KAAK;AACrC,UAAM,QAAQ,MAAM,YAAY,KAAK,CAAC,UAAU,MAAM,cAAc,SAAS;AAC7E,QAAI,OAAO;AACP,UAAI,MAAM,YAAY,QAAQ,WAAW,MAAM,aAAa,cAAc,MAAM,aAAa,YAAY,cAAc,MAAM,KAAK,MAAM,cAAc,KAAK;AACvJ,cAAM,IAAI,MAAM,qEAAkE;AACtF,aAAO;AAAA,IACX;AACA,QAAI,CAAC,aAAa,UAAU,SAAS,OAAO,MAAM,WAAW,SAAS,SAAS;AAC3E,YAAM,IAAI,MAAM,oDAAiD;AACrE,QAAI,MAAM,WAAW,UAAU;AAC3B,YAAM,IAAI,MAAM,0CAA0C;AAC9D,QAAI,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,MAAM,UAAU,KAAK,EAAE,UAAU;AAC9E,YAAM,IAAI,MAAM,0CAA0C;AAC9D,YAAQ,GAAG,aAAa,OAAO,kBAAkB;AACjD,UAAM,aAAsC,EAAE,IAAI,WAAW,GAAG,WAAW,SAAS,QAAQ,SAAS,aAAa,QAAQ,aAAa,OAAO,QAAQ,UAAU,UAAU,YAAY,OAAO,QAAQ,CAAC,GAAG,YAAW,oBAAI,KAAK,GAAE,YAAY,GAAG,QAAQ,SAAS;AAC/P,SAAK,mBAAmB,OAAO,YAAY,IAAI;AAC/C,UAAM,aAAa,IAAI,gBAAgB;AACvC,UAAM,YAAY,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACjD,YAAM,UAAU,EAAE,GAAG,YAAY,QAAQ,WAAoB,YAAW,oBAAI,KAAK,GAAE,YAAY,EAAE;AACjG,WAAK,mBAAmB,OAAO,OAAO;AACtC,UAAI;AACA,YAAI,GAAG,gBAAgB,CAAC,MAAM,KAAK,SAAS,OAAO,YAAY,GAAG,cAAc,WAAW,MAAM;AAC7F,gBAAM,IAAI,MAAM,wCAAqC;AACzD,cAAM,iBAAiB,CAAC,kBAAqC,0BAA0B,KAAK,QAAQ,KAAK,GAAG,KAAK,SAAS,WAAW,KAAK,GAAG,aAAa,EAAE;AAC5J,cAAM,SAAmB,CAAC;AAC1B,cAAM,SAAS,MAAM,KAAK,iBAAiB,OAAO,SAAS,IAAI,OAAO,EAAE,QAAQ,IAAI,WAAW,IAAI,MAAM,cAAc,WAAW,EAAE,IAAI,KAAK,QAAQ,KAAK,GAAG,MAAM,WAAW,GAAG,gBAAgB,MAAM,OAAOA,OAAM,OAAO,UAAU;AAC7N,gBAAM,YAAY,KAAK,SAAS,WAAW,UAAUA,KAAI;AACzD,gBAAM,KAAK,GAAG,WAAW,EAAE,eAAe,KAAK;AAC/C,gBAAM,eAAe,UAAU,aAAa,YAAY,MAAM,KAAK,SAAS,OAAO,YAAY,GAAG,UAAU,KAAK,kBAAe,WAAW,QAAQ,KAAK,IAAI;AAC5J,cAAI,CAAC;AACD,kBAAM,IAAI,MAAM,sCAAmC;AACvD,iBAAO,KAAK,SAAS,WAAW,OAAOA,OAAM,EAAE,OAAO,cAAc,IAAI,WAAW,EAAE,MAAM,YAAY,SAAS,KAAK,QAAQ,KAAK,EAAE,GAAG,QAAQ,WAAW,QAAQ,GAAI,UAAU,aAAa,YAAY,EAAE,sBAAsB,EAAE,aAAaA,OAAM,cAAc,IAAI,WAAW,cAAc,KAAK,EAAE,EAAE,IAAI,CAAC,EAAG,GAAG,KAAK;AAAA,QAC9T,EAAE,GAAG,WAAW,MAAM;AAC1B,aAAK,mBAAmB,OAAO,EAAE,GAAG,SAAS,QAAQ,aAAa,QAAQ,QAAQ,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,CAAC;AAAA,MAC5H,SACO,OAAO;AACV,aAAK,mBAAmB,OAAO,EAAE,GAAG,SAAS,QAAQ,WAAW,OAAO,UAAU,cAAc,UAAU,OAAO,UAAU,KAAK,EAAE,MAAM,GAAG,GAAI,GAAG,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,CAAC;AAAA,MAC3L;AAAA,IACJ,CAAC,EAAE,QAAQ,MAAM,KAAK,QAAQ,OAAO,WAAW,EAAE,CAAC;AACnD,SAAK,QAAQ,IAAI,WAAW,IAAI,EAAE,OAAO,SAAS,QAAQ,SAAS,YAAY,UAAU,CAAC;AAC1F,WAAO;AAAA,EACX;AAAA,EACA,WAAW,OAAe,WAAmB,IAAqC;AAC9E,UAAM,aAAa,KAAK,aAAa,KAAK,EAAE,YAAY,KAAK,CAAC,UAAU,MAAM,OAAO,OAAO,MAAM,UAAU,aAAa,MAAM,gBAAgB,UAAU;AACzJ,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,oCAAoC;AACxD,WAAO;AAAA,EACX;AAAA,EACA,aAAa,OAAgC;AAAE,WAAQ,KAAK,KAAK,KAAK,EAAE,aAAa,KAAK,CAAC,UAAU,MAAM,aAAa,8BAA8B,MAAM,MAAM,SAAS,KAAK,GAAG,SAAwC,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAAG;AAAA,EAC5Q,mBAAmB,OAAe,YAAqC,WAAW,OAAa;AAC3F,UAAM,UAAU,KAAK,aAAa,KAAK;AACvC,UAAM,UAAU,CAAC,GAAG,QAAQ,YAAY,OAAO,CAAC,UAAU,MAAM,OAAO,WAAW,EAAE,GAAG,UAAU;AACjG,UAAM,SAAS,QAAQ,OAAO,CAAC,UAAU,MAAM,WAAW,YAAY,MAAM,WAAW,SAAS;AAChG,UAAM,WAAW,QAAQ,OAAO,CAAC,UAAU,MAAM,WAAW,YAAY,MAAM,WAAW,SAAS,EAAE,MAAM,GAAG;AAC7G,UAAM,QAAyB,EAAE,SAAS,GAAG,aAAa,CAAC,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,WAAW,CAAC,GAAG,QAAQ,YAAY,WAAW,SAAS,IAAI,QAAQ,WAAW;AAC9K,WAAO,UAAU,KAAK,IAAI,+BAA+B,SAAS,QAAQ;AACtE,eAAS,MAAM;AACf,YAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,QAAQ;AAAA,IAC/C;AACA,IAAAQ,iBAAgB,OAAO,eAAe;AACtC,SAAK,QAAQ,EAAE,mBAAmB,KAAK,gBAAgB,KAAK,GAAG,OAAO,EAAE,UAAU,4BAA4B,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC;AAAA,EACjJ;AAAA,EACA,MAAM,SAAS,OAAe,YAAqC,UAAkB,QAAqB,QAAQ,WAAW,OAAyB;AAClJ,UAAM,SAAS,MAAM,KAAK,SAAS,WAAW,EAAE,IAAI,EAAE,OAAO,SAAS,KAAK,QAAQ,KAAK,GAAG,QAAQ,MAAM,WAAW,iBAAiB,WAAW,CAAC,GAAG,GAAG,EAAE,UAAU,GAAG,QAAQ;AAAA,WAAc,KAAK,UAAU,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,IAAI,SAAS,CAAC,gBAAa,WAAW,GAAG,OAAO,OAAO,aAAa,YAAY,WAAW,QAAQ,SAAS,WAAW,WAAW,IAAI,YAAY,EAAE,QAAQ,yBAAyB,cAAc,WAAW,GAAG,EAAE,GAAG,MAAM;AAC3b,WAAO,WAAW;AAAA,EACtB;AAAA,EACA,SAAS,OAAe,WAA2C;AAC/D,UAAM,UAAU,KAAK,SAAS,KAAK,EAAE,KAAK,CAAC,UAAU,MAAM,SAAS,aAAa,MAAM,MAAM,KAAK,CAAC,SAAS,KAAK,OAAO,SAAS,CAAC;AAClI,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,eAAe,SAAS,mBAAmB;AAC/D,WAAO;AAAA,EACX;AAAA,EACA,UAAU,SAAyC;AAAE,WAAO,SAAS,QAAQ,OAAO,IAAI,QAAQ,QAAQ;AAAA,EAAI;AAAA,EAC5G,YAAYR,OAAoB;AAAE,QAAI,CAAC,KAAK,KAAKA,KAAI;AACjD,YAAM,IAAI,MAAM,yHAAsH;AAAA,EAAG;AAAA,EAC7I,YAAY,OAAe,SAAuB;AAAE,QAAI,KAAK,QAAQ,IAAI,GAAG,KAAK,KAAK,OAAO,EAAE,KAAK,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EAAE,KAAK,CAAC,UAAU,MAAM,UAAU,SAAS,MAAM,YAAY,OAAO;AAC7L,YAAM,IAAI,MAAM,uDAAuD;AAAA,EAAG;AAAA,EAC9E,MAAM,UAAU,OAAe,SAAgC;AAC3D,UAAM,SAAS,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,MAAM,UAAU,SAAS,MAAM,YAAY,OAAO;AAC9G,WAAO,QAAQ,CAAC,UAAU,MAAM,WAAW,MAAM,IAAI,MAAM,iBAAiB,CAAC,CAAC;AAC9E,UAAM,QAAQ,KAAK,KAAK,KAAK,EAAE,aAAa,KAAK,CAAC,UAAU,MAAM,aAAa,2BAA2B,MAAM,MAAM,SAAS,WAAW,MAAM,MAAM,YAAY,OAAO,GAAG;AAC5K,QAAI,OAAO;AACP,YAAM,KAAK,QAAQ,EAAE,yBAAyB,aAAa,OAAO,KAAK,UAAU,MAAM,OAAO,CAAC;AACnG,UAAM,QAAQ,WAAW,OAAO,IAAI,CAAC,UAAU,MAAM,SAAS,CAAC;AAAA,EACnE;AAAA,EACA,MAAM,QAAQ,OAA8B;AACxC,SAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC;AAC1D,SAAK,UAAU,IAAI,KAAK;AACxB,QAAI;AACA,YAAM,SAAS,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,MAAM,UAAU,KAAK;AACjF,aAAO,QAAQ,CAAC,UAAU,MAAM,WAAW,MAAM,IAAI,MAAM,eAAe,CAAC,CAAC;AAC5E,YAAM,KAAK,QAAQ,EAAE,yBAAyB,QAAQ,KAAK;AAC3D,YAAM,QAAQ,WAAW,CAAC,GAAG,OAAO,IAAI,CAAC,UAAU,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,GAAG,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,IACxK,UACA;AACI,WAAK,UAAU,OAAO,KAAK;AAAA,IAC/B;AAAA,EACJ;AAAA,EACA,qBAAqB,OAA8B;AAAE,WAAO,QAAQ,WAAW,CAAC,GAAG,KAAK,QAAQ,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,MAAM,UAAU,KAAK,EAAE,IAAI,CAAC,UAAU,MAAM,SAAS,EAAE,OAAO,CAAC,GAAG,KAAK,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,IAAI,WAAW,GAAG,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,KAAK,CAAC,CAAC,EAAE,KAAK,MAAM,MAAS;AAAA,EAAG;AAAA,EAC/S,MAAM,eAAe,OAA8B;AAAE,SAAK,WAAW,IAAI,KAAK;AAAG,QAAI,CAAC,KAAK,QAAQ,EAAE,SAAS,EAAE,KAAK,SAAO,IAAI,OAAO,KAAK;AACxI;AAAQ,eAAW,cAAc,KAAK,aAAa,KAAK,EAAE;AAC1D,UAAI,WAAW,WAAW,YAAY,WAAW,WAAW;AACxD,aAAK,mBAAmB,OAAO,EAAE,GAAG,YAAY,QAAQ,aAAa,OAAO,oDAAiD,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,CAAC;AAAA,EAAG;AAAA,EAC9K,MAAM,YAAY,OAAe,SAAsC;AAAE,UAAM,KAAK,QAAQ,KAAK;AAAA,EAAG;AAAA,EACpG,MAAM,WAAW,OAA8B;AAAE,UAAM,KAAK,QAAQ,KAAK;AAAA,EAAG;AAAA,EAC5E,MAAM,cAAc,OAA8B;AAAE,UAAM,KAAK,QAAQ,KAAK;AAAG,UAAM,GAAG,KAAK,SAAS,aAAa,KAAK,GAAG,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EAAG;AAAA,EAC9J,MAAM,WAA0B;AAAE,SAAK,gBAAgB;AAAM,UAAM,QAAQ,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,QAAQ,KAAK,CAAC,CAAC;AAAA,EAAG;AACrJ;;;AM7xBA,SAAS,YAAY;AACrB,SAAS,qBAAAS,oBAAmB,0BAAAC,yBAAwB,mBAA2D;AAC/G,SAAS,0BAA0B;AAGnC,IAAM,WAAW;AAAA,EACb,EAAE,MAAM,wBAAwB,OAAO,wBAAwB,aAAa,6DAA6D,iBAAiB,uDAAuD;AAAA,EACjN,EAAE,MAAM,0BAA0B,OAAO,0BAA0B,aAAa,wFAAwF,iBAAiB,2IAA2I;AAAA,EACpU,EAAE,MAAM,sBAAsB,OAAO,uBAAuB,aAAa,mDAAmD;AAAA,EAC5H,EAAE,MAAM,wBAAwB,OAAO,wBAAwB,aAAa,oDAAoD,iBAAiB,0EAA0E;AAAA,EAC3N,EAAE,MAAM,6BAA6B,OAAO,2BAA2B,aAAa,wEAAwE,iBAAiB,wFAAwF;AAAA,EACrQ,EAAE,MAAM,6BAA6B,OAAO,6BAA6B,aAAa,sCAAsC,iBAAiB,2EAA2E;AAC5N;AACO,IAAM,kCAAkC,SAAS,IAAI,CAAC,UAAU,MAAM,IAAI;AAC1E,IAAM,6BAA6BA,wBAAuB,EAAE,cAAc,eAAe,oBAAoB,uEAAiE,GAAG,WAAS,MAAM,SAAS,WAAW,YAAY,OAAO,aAAa,KAAK,YAAY,OAAO,oBAAoB,CAAC;AACxS,IAAM,OAAO,KAAK,OAAO,EAAE,SAAS,yBAAyB,CAAC;AAE9D,IAAM,kBAAkB,CAAC,SAA8B,gBAA4C;AAAA,EAC/FD,mBAAkB,EAAE,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,MAAM,UAAU,KAAK,MAAM,QAAQ,UAAU,EAAE,IAAI,CAAC,UAAU,KAAK,QAAQ,MAAM,IAAI,EAAE,aAAa,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,cAAc,KAAK,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,WAAW,KAAK,OAAO,GAAG,OAAO,KAAK,MAAM,KAAK,OAAO,CAAC,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,WAAW,4BAA4B,eAAe,cAAc,KAAK,CAAC,OAAO,KAAK,UAAU,QAAQ,SAAS,MAAM,OAAO,OAAO,MAAM,MAAM,MAAM,QAAQ,EAAE,CAAC;AAAA,EAC7gBA,mBAAkB,EAAE,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,MAAM,OAAO,KAAK,SAAS,KAAK,OAAO,CAAC,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,cAAc,KAAK,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,QAAQ,KAAK,QAAQ,IAAI,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,WAAW,4BAA4B,eAAe,cAAc,KAAK,CAAC,OAAO,IAAI,UAAU,QAAQ,SAAS,MAAM,QAAQ,EAAE,GAAG,MAAM,OAAO,OAAO,MAAM,MAAM,MAAM,QAAQ,MAAM,KAAK,EAAE,CAAC;AAAA,EACreA,mBAAkB,EAAE,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,cAAc,KAAK,MAAM,KAAK,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,WAAW,KAAK,MAAM,KAAK,OAAO,CAAC,GAAG,OAAO,KAAK,MAAM,KAAK,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,SAAS,KAAK,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,4BAA4B,eAAe,cAAc,KAAK,CAAC,UAAU,QAAQ,KAAK,MAAM,OAAO,KAAK,EAAE,CAAC;AAAA,EACxbA,mBAAkB,EAAE,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,cAAc,KAAK,OAAO,EAAE,SAAS,KAAK,OAAO,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,WAAW,4BAA4B,eAAe,cAAc,KAAK,CAAC,OAAO,IAAI,UAAU,QAAQ,OAAO,MAAM,QAAQ,EAAE,GAAG,MAAM,OAAO,OAAO,MAAM,IAAI,EAAE,CAAC;AAAA,EAC9VA,mBAAkB,EAAE,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,MAAM,KAAK,OAAO,EAAE,WAAW,GAAG,aAAa,mIAAmI,CAAC,GAAG,SAAS,KAAK,QAAQ,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,cAAc,KAAK,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,KAAK,QAAQ,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,WAAW,4BAA4B,eAAe,cAAc,KAAK,CAAC,OAAO,IAAI,UAAU,QAAQ,cAAc,MAAM,QAAQ,EAAE,GAAG,MAAM,OAAO,OAAO,MAAM,MAAM,MAAM,OAAO,EAAE,CAAC;AAAA,EACnlBA,mBAAkB,EAAE,GAAG,SAAS,CAAC,GAAG,QAAQ,KAAK,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC,GAAG,cAAc,KAAK,OAAO,GAAG,WAAW,4BAA4B,eAAe,cAAc,KAAK,CAAC,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,OAAO,OAAO,MAAM,OAAO,SAAS,MAAM,IAAI,EAAE,CAAC;AACpU;AACO,IAAM,qCAAqC,CAAC,SAA8B,gBAAyD;AAAA,EACtI,EAAE,MAAM,qCAAqC,aAAa,SAAS,IAAI,CAAC,SAAS,mBAAmB,MAAM,0BAA0B,CAAC,GAAG,OAAO,MAAM,gBAAgB,SAAS,WAAW,EAAE;AAAA,EAC3L,EAAE,MAAM,oCAAoC,aAAa,CAAC,GAAG,SAAS,MAAM,OAAO,CAAC,YAAY,QAAQ,eAAe,OAAO,EAAE;AACpI;;;AC5BA,SAAS,QAAAE,aAAY;AACrB,SAAS,qBAAAC,oBAAmB,0BAAAC,+BAAoD;AAChF,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,4BAA4B,sCAAsC;;;ACH3E,SAAS,mBAAmB;AAC5B,SAAS,cAAc,wBAAwB;AAE/C,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EAAiC;AAAA,EAAK,YAAY,0BAA0B,YAAY;AAC1F;AAEO,IAAM,sBAAsB;AAAA,EACjC,EAAE,GAAG,iBAAiB,kCAAkC,KAAK,YAAY,0BAA0B,aAAa,CAAC,GAAG,UAAU,UAAU;AAAA,EACxI;AAAA,EACA,GAAG;AACL;;;ADdA,IAAM,YAAYC,wBAAuB,EAAE,cAAc,UAAU,oBAAoB,mEAAmE,GAAG,MAAM,IAAI;AACvK,IAAMC,YAAW;AAAA,EACf,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,iBAAiB;AACnB;AAEO,IAAM,yBAAyB,CAAC,cAAuB;AAC5D,QAAM,aAAa,2BAA2B;AAC9C,MAAI,cAAc,OAAW,QAAO,EAAE,WAAW;AACjD,MAAI,CAAC,WAAW,SAAS,SAAS,EAAG,OAAM,IAAI,MAAM,uBAAuB,SAAS,gBAAa,WAAW,KAAK,IAAI,CAAC,EAAE;AACzH,SAAO,EAAE,OAAO,+BAA+B,SAAS,EAAE;AAC5D;AAEO,IAAM,gCAAgC,OAAwB;AAAA,EACnE,MAAM;AAAA,EACN,aAAa,CAACC,oBAAmBD,WAAU,SAAS,CAAC;AAAA,EACrD,OAAO,MAAM,CAACE,mBAAkB;AAAA,IAC9B,GAAGF;AAAA,IACH;AAAA,IACA,QAAQG,MAAK,OAAO;AAAA,MAClB,OAAOA,MAAK,SAASA,MAAK,MAAM,CAACA,MAAK,QAAQ,UAAU,GAAGA,MAAK,QAAQ,OAAO,CAAC,GAAG,EAAE,aAAa,8GAA8G,CAAC,CAAC;AAAA,MAClN,WAAWA,MAAK,SAASA,MAAK,OAAO,EAAE,WAAW,GAAG,aAAa,4GAA4G,CAAC,CAAC;AAAA,IAClL,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAAA,IAClC,cAAcA,MAAK,MAAM;AAAA,MACvBA,MAAK,OAAO,EAAE,OAAOA,MAAK,OAAO,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAAA,MACrEA,MAAK,OAAO,EAAE,YAAYA,MAAK,MAAMA,MAAK,OAAO,CAAC,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAAA,MACtFA,MAAK,OAAO,EAAE,OAAOA,MAAK,OAAOA,MAAK,OAAO,GAAGA,MAAK,OAAO,CAAC,EAAE,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAAA,IACnG,CAAC;AAAA,IACD,KAAK,OAAO,QAAQ,OAAO,UAAU;AACnC,UAAI,MAAM,UAAU,SAAS;AAC3B,YAAI,MAAM,cAAc,OAAW,OAAM,IAAI,MAAM,yGAAsG;AACzJ,eAAO,EAAE,OAAO,MAAM,kBAAkB,OAAO,CAAC,CAAC,EAAE;AAAA,MACrD;AACA,aAAO,uBAAuB,MAAM,SAAS;AAAA,IAC/C;AAAA,EACF,CAAC,CAAC;AACJ;;;AXhCA,SAAS,4BAA4B;AACrC,SAAS,0BAA0B;;;AabnC,SAAS,kBAAkB;AAC3B,SAAS,WAAAC,gBAAe;AACxB,OAAOC,WAAU;AAEjB,SAAS,sBAAAC,2BAA0B;AAEnC,IAAM,YAAY;AAClB,IAAM,gBAAgB;AACtB,IAAM,gBAAgB;AAkBtB,IAAM,YAAY,CAAC,UAA2B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACnG,IAAM,gBAAgB,CAAC,UAA2B,WAAW,QAAQ,EAAE,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE,OAAO,KAAK;AACjH,IAAMC,cAAa,CAAC,UAA6B;AAC/C,QAAM,WAAW,iBAAiB,QAAS,MAA8B,QAAQ;AACjF,MAAI,MAAM,QAAQ,QAAQ,KAAK,SAAS,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ,EAAG,QAAO,CAAC,GAAG,IAAI,IAAI,QAAoB,CAAC;AAC3H,QAAM,QAAQ,UAAU,KAAK,EAAE,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,OAAO,OAAO;AACpF,QAAM,SAAS,MAAM,OAAO,CAAC,SAAS,CAAC,+EAA+E,KAAK,IAAI,CAAC;AAChI,SAAO,CAAC,GAAG,IAAI,IAAI,OAAO,SAAS,SAAS,KAAK,CAAC;AACpD;AACA,IAAM,YAAY,CAAC,aAAmD,OAAO,QAAQ,SAAS,QAAQ,EACnG,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,QAAQ,CAAC,CAAC,aAAa,OAAO,MAAM,QAAQ,OAAO,IAAI,CAAC,UAAU,GAAG,WAAW,KAAK,KAAK,EAAE,CAAC;AAChG,IAAM,aAAa,CAAC,UAAwD;AAC1E,MAAI,UAAU,QAAQ,OAAO,UAAU,SAAU,QAAO;AACxD,QAAM,WAAW;AACjB,SAAO,SAAS,YAAY,KAAK,SAAS,aAAa,QAAQ,OAAO,SAAS,aAAa,YACvF,OAAO,OAAO,SAAS,QAAQ,EAAE,MAAM,CAAC,YAAY,WAAW,OAAO,QAAQ,gBAAgB,YAC5F,MAAM,QAAQ,QAAQ,MAAM,KAAK,QAAQ,OAAO,MAAM,CAAC,UAAU,OAAO,UAAU,QAAQ,CAAC;AACpG;AAEO,IAAM,2BAA2B,CAAC,YAAuC;AAC9E,QAAM,YAAY,oBAAI,IAAqD;AAC3E,QAAM,WAAW,CAAC,OAAe,SAAiB,aAA+C;AAC/F,UAAM,SAAS,UAAU,IAAI,KAAK,KAAK,oBAAI,IAAwC;AACnF,WAAO,IAAI,SAAS,QAAQ;AAC5B,cAAU,IAAI,OAAO,MAAM;AAAA,EAC7B;AACA,QAAM,eAAkC;AAAA,IACtC,IAAI;AAAA,IACJ,iBAAiB,OAAO,EAAE,OAAO,QAAQ,GAAG,SAAS;AACnD,UAAI,QAAQ,UAAU,OAAO,OAAO,MAAM,MAAO,QAAO;AACxD,WAAK,QAAQ,eAAe;AAC5B,YAAM,WAAuC,WAAW,KAAK,IAAI,IAAI,KAAK,OAAO,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE;AAC5G,YAAM,OAAmC,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE;AACpE,UAAI,UAAU;AACd,UAAI;AACF,cAAM,YAAY,MAAM,QAAQ,aAAa,KAAK;AAClD,cAAM,UAAU,MAAMH,SAAQ,WAAW,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,CAAC,UAAiC;AACxG,cAAI,MAAM,SAAS,SAAU,QAAO,CAAC;AACrC,gBAAM;AAAA,QACR,CAAC;AACD,mBAAW,SAAS,QAAQ,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC,GAAG;AACtF,cAAI,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,eAAe,EAAG;AACrD,eAAK,QAAQ,eAAe;AAC5B,cAAI;AACJ,cAAI,SAAmB,CAAC;AACxB,cAAI;AACF,gBAAI,MAAM,eAAe,EAAG,OAAM,IAAI,MAAM,+CAA4C;AACxF,0BAAc,cAAc,MAAME,oBAAmBD,MAAK,KAAK,WAAW,MAAM,IAAI,CAAC,CAAC;AAAA,UACxF,SAAS,OAAO;AACd,qBAASE,YAAW,KAAK;AACzB,0BAAc,cAAc,EAAE,OAAO,CAAC;AAAA,UACxC;AACA,gBAAM,QAAQ,SAAS,SAAS,MAAM,IAAI;AAC1C,cAAI,OAAO,gBAAgB,aAAa;AACtC,iBAAK,SAAS,MAAM,IAAI,IAAI;AAC5B;AAAA,UACF;AACA,oBAAU;AACV,cAAI,OAAO,WAAW,GAAG;AACvB,gBAAI;AAAE,oBAAM,QAAQ,MAAM,OAAO,MAAM,MAAM,SAAS,KAAK,MAAM;AAAA,YAAG,SAC7D,OAAO;AACZ,mBAAK,QAAQ,eAAe;AAC5B,uBAASA,YAAW,KAAK;AAAA,YAC3B;AAAA,UACF;AACA,eAAK,SAAS,MAAM,IAAI,IAAI,EAAE,aAAa,OAAO;AAAA,QACpD;AAAA,MACF,SAAS,OAAO;AACd,aAAK,QAAQ,eAAe;AAC5B,cAAM,SAASA,YAAW,KAAK;AAC/B,eAAO,OAAO,KAAK,UAAU,SAAS,QAAQ;AAC9C,aAAK,SAAS,aAAa,IAAI,EAAE,aAAa,cAAc,EAAE,OAAO,CAAC,GAAG,OAAO;AAAA,MAClF;AACA,UAAI,KAAK,UAAU,OAAO,KAAK,SAAS,QAAQ,EAAE,KAAK,CAAC,MAAM,KAAK,UAAU,OAAO,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC,EAAG,WAAU;AAC3H,UAAI,KAAK,UAAU,QAAQ,MAAM,KAAK,UAAU,IAAI,EAAG,WAAU;AACjE,WAAK,QAAQ,eAAe;AAC5B,eAAS,OAAO,SAAS,IAAI;AAC7B,UAAI,CAAC,QAAS,QAAO;AACrB,WAAK,KAAK,IAA4B;AACtC,YAAM,SAAS,IAAI,IAAI,UAAU,QAAQ,CAAC;AAC1C,YAAM,QAAQ,IAAI,IAAI,UAAU,IAAI,CAAC;AACrC,YAAM,QAAQ,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC;AAC7D,YAAM,WAAW,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC;AAChE,YAAM,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,QAAQ,KAAK,EAAE,GAAG,GAAG,SAAS,IAAI,CAAC,UAAU,YAAY,KAAK,EAAE,CAAC;AAC1G,YAAM,QAAQ,QAAQ,MAAM,GAAG,aAAa,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,gBAAgB,GAAG,KAAK,MAAM,GAAG,gBAAgB,CAAC,CAAC,QAAQ,IAAI;AACzI,YAAM,UAAU,QAAQ,SAAS,MAAM;AACvC,aAAO;AAAA,QACL,4DAAyD,MAAM,IAAI,cAAc,OAAO,KAAK,KAAK,QAAQ,EAAE,MAAM,eAAe,MAAM,MAAM,SAAS,SAAS,MAAM;AAAA,QACrK,GAAG;AAAA,QACH,GAAI,UAAU,IAAI,CAAC,GAAG,OAAO,oFAA8E,IAAI,CAAC;AAAA,MAClH,EAAE,KAAK,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,OAAO,OAAe,SAAiB,aAA8B;AACnE,YAAM,WAAW,UAAU,IAAI,KAAK,GAAG,IAAI,OAAO;AAClD,UAAI,CAAC,SAAU,QAAO;AACtB,YAAM,WAAW,OAAO,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,gBAAgB,UAAa,OAAO,WAAW;AACnH,UAAI,SAAS,WAAW,EAAG,QAAO,cAAc,yCAAmC,WAAW,MAAM;AACpG,aAAO,SAAS,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,MACpF,CAAC,GAAG,EAAE,KAAK,QAAQ,OAAO,MAAM,WAAW,GAAG,QAAQ,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM;AAAA,IACzF;AAAA,IACA,OAAO,OAAqB;AAAE,gBAAU,OAAO,KAAK;AAAA,IAAG;AAAA,EACzD;AACF;;;ACnIA,SAAS,8BAAAC,6BAA4B,2BAAAC,gCAA+B;AAEpE,IAAM,SAAS,CAAC,UACd,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAAI,QAAQ;AAGjF,IAAM,iBAAiB,CAAC,UAAgC;AACtD,QAAM,UAAU,OAAO,OAAO,KAAK,GAAG,OAAO;AAC7C,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,QAAQ,MAAM,QAAQ,QAAQ,KAAK,IAAI,QAAQ,MAAM,IAAI,CAAC,UAAU;AACxE,UAAM,OAAO,OAAO,KAAK;AACzB,WAAO,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,OAAO,KAAK,OAAO,SAAS,KAAK,SAAS,YAAY,KAAK,WAAW,IAAI;AAAA,EACxH,CAAC,IAAI,CAAC;AACN,SAAO;AAAA,IACL,SAAS;AAAA,IACT,SAAS;AAAA,MACP,MAAM,QAAQ;AAAA,MACd,OAAO,QAAQ;AAAA,MACf,SAAS,QAAQ;AAAA,MACjB,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,gCAAyE;AAAA,EACpF,EAAE,IAAIA,0BAAyB,OAAO,CAAC,UAAU,eAAe,MAAM,KAAK,GAAG,WAAW,MAAM,OAAU;AAAA,EACzG,EAAE,IAAID,6BAA4B,OAAO,CAAC,WAAW,EAAE,SAAS,GAAG,UAAU,MAAM,UAAU,IAAI,WAAW,MAAM,OAAU;AAC9H;;;AddA,IAAM,sBAAsB,CAAC,gBAA2C;AAAA,EACpE,UAAU,EAAE,IAAI,yBAAyB;AAAA,EACzC,UAAU,CAAC,SAAS;AAChB,UAAM,UAAU,IAAI,oBAAoB;AAAA,MACpC,SAAS,KAAK,QAAQE,qBAAoB;AAAA,MAAG,eAAe,eAAe,UAAU;AAAA,MAAG,YAAY,MAAM,KAAK,QAAQ,eAAe;AAAA,MAAG,mBAAmB,MAAM,WAAW,MAAM,SAAS,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,MACvN,yBAAyB,CAAC,UAAU,KAAK,QAAQ,oBAAoB,EAAE,wBAAwB,KAAK;AAAA,MACpG,YAAY,EAAE,WAAW,CAAC,OAAO,KAAK,UAAU,EAAE,GAAG,QAAQ,CAAC,IAAI,SAAS,UAAU,KAAK,gBAAgB,IAAI,SAAS,KAAK,GAAG,MAAM,MAAM,WAAW,WAAW,SAAS,EAAE;AAAA,MAC5K,cAAc,CAAC,UAAU,KAAK,QAAQ,QAAQ,OAAO,UAAU;AAAA,MAC/D,eAAe,CAAC,SAASC,UAAS;AAC9B,cAAM,SAAS,WAAW,aAAa,cAAc,OAAO;AAC5D,eAAO,CAAC,SAAS,SAAY,OAAO,WAAWA,QAAO,OAAO,QAAQ,OAAO,SAAS,KAAK,CAAC,YAAY,QAAQ,SAASA,KAAI,GAAG;AAAA,MACnI;AAAA,IACJ,CAAC;AACD,SAAK,QAAQ,oBAAoB,OAAO;AACxC,UAAM,cAAc,yBAAyB;AAAA,MACzC,cAAc,CAAC,UAAU,QAAQ,mBAAmB,KAAK;AAAA,MAAG,OAAO,CAAC,OAAOA,OAAM,SAAS,WAAW,QAAQ,MAAM,OAAOA,OAAM,SAAS,MAAM;AAAA,MAC/I,SAAS,CAAC,OAAO,YAAY;AACzB,cAAM,OAAO,KAAK,QAAQD,qBAAoB,EAAE,EAAE,KAAK,KAAK;AAC5D,cAAM,QAAQ,KAAK,OAAO,KAAK,CAAC,cAAc,UAAU,OAAO,OAAO;AACtE,eAAO,CAAC,CAAC,SAAS,MAAM,SAAS,WAAW,2BAA2B,OAAO,IAAI,MAAM,MAAM,cAAc,QAAQ,MAAM,UAAU,KAAK,CAACC,UAAU,gCAAsD,SAASA,KAAI,CAAC;AAAA,MAC5N;AAAA,IACJ,CAAC;AACD,SAAK,aAAa,YAAY,YAAY;AAC1C,SAAK,aAAa,EAAE,aAAa,kBAAkB,CAAC;AACpD,SAAK,QAAQ,GAAG,0BAA0B,EAAE,eAAe,KAAK,QAAQ,aAAa,GAAG,QAAQ,CAAC,CAAC;AAClG,SAAK,KAAK,GAAG,yBAAyB,EAAE,eAAe,KAAK,QAAQ,aAAa,GAAG,QAAQ,CAAC,CAAC;AAC9F,SAAK,UAAU;AAAA,MAAE,IAAI;AAAA,MACjB,YAAY,MAAM,KAAK,QAAQ,oBAAoB,EAAE,sBAAsB,EAAE,IAAI,0BAA0B,OAAO,WAAW,qBAAqB,sBAAsB,cAAc,CAAC,UAAU,QAAQ,mBAAmB,KAAK,GAAG,uBAAuB,OAAO,UAAUC,MAAK,QAAQ,MAAM,QAAQ,mBAAmB,KAAK,CAAC,EAAE,CAAC;AAAA,MACnU,gBAAgB,CAAC,EAAE,MAAM,MAAM,QAAQ,eAAe,KAAK;AAAA,MAAG,aAAa,CAAC,EAAE,OAAO,OAAO,MAAM,QAAQ,YAAY,OAAO,MAAM;AAAA,MACnI,eAAe,OAAO,EAAE,MAAM,MAAM;AAAE,oBAAY,OAAO,KAAK;AAAG,cAAM,QAAQ,cAAc,KAAK;AAAA,MAAG;AAAA,MAAG,UAAU,MAAM,QAAQ,SAAS;AAAA,IAC7I,CAAC;AACD,SAAK,QAAQ,mBAAmB;AAChC,SAAK,kBAAkB,GAAG,6BAA6B;AACvD,SAAK,UAAU,8BAA8B,GAAG,GAAG,mCAAmC,SAAS,WAAW,CAAC;AAAA,EAC/G;AACJ;AACO,IAAM,SAAuB,EAAE,UAAU,CAAC,yBAAyB,aAAa,GAAG,QAAQ,oBAAoB;",
|
|
4
|
+
"sourcesContent": ["import path from \"node:path\";\nimport type { PluginHost, RAgentsPlugin } from \"@ragents/engine\";\nimport type { PluginModule } from \"@ragents/host/plugin-support/plugin-module.js\";\nimport { runtimeProviderToken, runGuardToken } from \"@ragents/host/ragents/host-services.js\";\nimport { askServiceToken } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nimport { agentToolsFrom } from \"./agent-tools.js\";\nimport { createActorProgramMethods } from \"./methods.js\";\nimport { createMiniAppFrameRoutes, miniAppsApiPrefix } from \"./routes.js\";\nimport { ActorProgramRuntime } from \"./runtime.js\";\nimport { actorProgramManagementToolNames, actorProgramToolsAvailable, createActorProgramToolContributors } from \"./tool-contributor.js\";\nimport { createControlsToolContributor } from \"./controls-tool.js\";\nimport { actorProgramSummary } from \"./prompts.js\";\nimport { sandboxServicesToken } from \"@ragents/host/plugin-support/workspace-sandbox-host.js\";\nimport { actorProgramsToken } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { createProjectDiagnostics } from \"./project-diagnostics.js\";\nimport { actorProgramAccessProjections } from \"./access-projections.js\";\nconst actorProgramsPlugin = (pluginHost: PluginHost): RAgentsPlugin => ({\n manifest: { id: \"ragents.actor-programs\" },\n register: (host) => {\n const runtime = new ActorProgramRuntime({\n runtime: host.service(runtimeProviderToken), agentToolsFor: agentToolsFrom(pluginHost), askService: () => host.service(askServiceToken), reservedToolNames: () => pluginHost.tools.describe().map((entry) => entry.name),\n serverProcessContextFor: (runId) => host.service(sandboxServicesToken).serverProcessContextFor(runId),\n operations: { operation: (id) => host.operation(id), invoke: (id, context, input) => host.invokeOperation(id, context, input), list: () => pluginHost.operations.describe() },\n directoryFor: (runId) => host.storage.session(runId, \"programs\"),\n scriptSources: (entryId, name) => {\n const script = pluginHost.startEntries.scriptPackage(entryId);\n return !script ? undefined : script.handle === name ? script.files : script.programs.find((program) => program.name === name)?.files;\n },\n });\n host.provide(actorProgramsToken, runtime);\n const diagnostics = createProjectDiagnostics({\n workspaceFor: (runId) => runtime.workspaceDirectory(runId), check: (runId, name, actorId, signal) => runtime.check(runId, name, actorId, signal),\n applies: (runId, actorId) => {\n const view = host.service(runtimeProviderToken)().view(runId);\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return !!actor && actor.kind !== \"human\" && actorProgramToolsAvailable(actor, view) && (actor.toolNames === null || actor.toolNames.some((name) => (actorProgramManagementToolNames as readonly string[]).includes(name)));\n },\n });\n host.agentRuntime(diagnostics.contribution);\n host.clientConfig({ routePrefix: miniAppsApiPrefix });\n host.methods(...createActorProgramMethods({ ensureSession: host.service(runGuardToken), runtime }));\n host.http(...createMiniAppFrameRoutes({ ensureSession: host.service(runGuardToken), runtime }));\n host.lifecycle({ id: \"ragents.actor-programs.lifecycle\",\n initialize: () => host.service(sandboxServicesToken).registerWorkspaceRoot({ id: \"ragents.actor-programs\", alias: \"@actors\", environmentVariable: \"RAGENTS_ACTORS_DIR\", directoryFor: (runId) => runtime.workspaceDirectory(runId), ownershipDirectoryFor: async (runId) => path.dirname(await runtime.workspaceDirectory(runId)) }),\n prepareSession: ({ runId }) => runtime.prepareSession(runId), stopSession: ({ runId, signal }) => runtime.stopSession(runId, signal),\n deleteSession: async ({ runId }) => { diagnostics.forget(runId); await runtime.deleteSession(runId); }, shutdown: () => runtime.shutdown(),\n });\n host.prompts(actorProgramSummary);\n host.accessProjections(...actorProgramAccessProjections);\n host.functions(createControlsToolContributor(), ...createActorProgramToolContributors(runtime, diagnostics));\n },\n});\nexport const plugin: PluginModule = { requires: [\"ragents.orchestration\", \"ragents.ask\"], create: actorProgramsPlugin };\n", "import { ToolRegistry, type RunFunction, type ExecutableActor, type PluginHost } from \"@ragents/engine\";\nimport { runtimeProviderToken, runWorkspaceProviderToken } from \"@ragents/host/ragents/host-services.js\";\n\nexport const agentToolsFrom = (host: PluginHost) =>\n async (runId: string, actorId: string, provisional?: ExecutableActor): Promise<readonly RunFunction[]> => {\n const runtime = host.service(runtimeProviderToken)();\n const view = runtime.view(runId);\n const actor = provisional ?? view.actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\") {\n throw new Error(`${actorId} does not denote an active agent in this run.`);\n }\n const registry = new ToolRegistry();\n host.tools.entries().forEach((contributor) => registry.register(contributor));\n const workspace = await host.service(runWorkspaceProviderToken)(runId);\n const tools = await registry.resolve({\n runId,\n actorId,\n turnId: null,\n actor,\n view: provisional ? {...view,actors:[...view.actors,provisional]} : view,\n workspace: workspace.cwd,\n });\n if (actor.toolNames === null) return tools;\n const availableNames = new Set(tools.map((tool) => tool.name));\n const unknown = actor.toolNames.filter((name) => !availableNames.has(name));\n if (unknown.length > 0) {\n throw new Error(`Actor ${actorId} requires unknown tools: ${unknown.join(\", \")}.`);\n }\n const selected = new Set(actor.toolNames);\n return tools.filter((tool) => selected.has(tool.name));\n };\n", "import { DomainError, implement, type MethodContribution } from \"@ragents/engine\";\nimport { actorProgramContracts } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nconst MAX_INPUT_BYTES = 64 * 1024;\n\nexport interface ActorProgramMethodOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\nconst failed = (cause: unknown, code: string, status: number): DomainError => cause instanceof DomainError\n ? cause\n : new DomainError(code, cause instanceof Error ? cause.message : String(cause), status);\n\nconst guarded = <T>(code: string, status: number, work: () => T): T => {\n try {\n return work();\n } catch (cause) {\n throw failed(cause, code, status);\n }\n};\n\nconst checkedInput = (input: unknown): unknown => {\n if (Buffer.byteLength(JSON.stringify(input ?? null), \"utf8\") > MAX_INPUT_BYTES)\n throw new DomainError(\"input-too-large\", `The action input is larger than ${MAX_INPUT_BYTES} bytes.`, 413);\n return input;\n};\n\nexport const createActorProgramMethods = (options: ActorProgramMethodOptions): MethodContribution[] => {\n const session = (runId: string, code: string, status: number): void =>\n guarded(code, status, () => options.ensureSession(runId));\n return [\n implement(actorProgramContracts.apps, ({ runId }, { access }) => {\n session(runId, \"run-unavailable\", 400);\n return {\n apps: options.runtime.apps(runId),\n tools: access.can(\"runs.inspect\") ? options.runtime.runLocalTools(runId) : [],\n };\n }),\n implement(actorProgramContracts.source, async ({ runId, moduleId }) => {\n session(runId, \"run-unavailable\", 404);\n try {\n return await options.runtime.moduleSource(runId, moduleId);\n } catch (cause) {\n throw failed(cause, \"actor-program-unknown\", 404);\n }\n }),\n implement(actorProgramContracts.action, ({ runId, appId, revision, actionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"action-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startInvocation(runId, appId, revision, actionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.invocation, ({ runId, appId, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, appId, invocationId));\n }),\n implement(actorProgramContracts.function, ({ runId, actorHandle, revision, functionId, requestId, input }) => {\n session(runId, \"run-unavailable\", 400);\n return guarded(\"function-rejected\", 400, () => {\n const permit = options.runtime.invocationPermit(runId);\n return options.runtime.startFunctionInvocation(runId, actorHandle, revision, functionId, requestId, checkedInput(input), permit);\n });\n }),\n implement(actorProgramContracts.functionInvocation, ({ runId, actorHandle, invocationId }) => {\n session(runId, \"run-unavailable\", 404);\n return guarded(\"invocation-unknown\", 404, () => options.runtime.invocation(runId, actorHandle, invocationId));\n }),\n ];\n};\n", "import { randomBytes } from \"node:crypto\";\nimport type { HttpRouteContribution } from \"@ragents/engine\";\nimport { guardedJsonRoute } from \"@ragents/host/plugin-support/http.js\";\nimport { browserInputRuntime, browserRuntimeStyles } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\n\nexport const miniAppsApiPrefix = \"/api/plugins/ragents.actor-programs\";\n\nconst framePattern = new RegExp(`^${miniAppsApiPrefix.replaceAll(\".\", \"\\\\.\")}\\/runs\\/([A-Za-z0-9_-]{1,64})\\/apps\\/([a-z][a-z0-9_-]{0,129})\\/frame$`);\n\nconst escapeForwarder = `\n window.addEventListener(\"keydown\", (event) => {\n if (event.key !== \"Escape\" || event.defaultPrevented) return;\n queueMicrotask(() => {\n if (!event.defaultPrevented) parent.postMessage({ type: \"ragents.app.escape\", version: 1, token: bridgeToken, keyboard: ragentsInputBridge.keyboardMessage(event, \"keydown\") }, \"*\");\n });\n });`;\n\nconst themeReceiver = `\n const applyHostTheme = (theme) => {\n if (theme !== \"light\" && theme !== \"dark\") throw new Error(\"The host theme must be light or dark.\");\n document.documentElement.dataset.theme = theme;\n };`;\n\n// The ancestors cover the browser and the VS Code webviews (desktop: vscode-file and vscode-cdn.net, older versions: vscode-webview).\nexport const frameContentSecurityPolicy = (nonce: string): string =>\n `sandbox allow-scripts allow-forms allow-downloads; default-src 'none'; script-src 'nonce-${nonce}'; style-src 'nonce-${nonce}'; img-src 'self' data: blob:; font-src data:; connect-src 'none'; media-src 'self' data: blob:; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'self' https://*.vscode-cdn.net vscode-file: vscode-webview:`;\n\nconst escapedScript = (source: string): string => source.replace(/<\\/script/gi, \"<\\\\/script\");\n\nconst typedBridgeSdk = (nonce: string, styles: string): string => `<script nonce=\"${nonce}\">\n${escapedScript(browserInputRuntime)}\nglobalThis.__ragentsAppContext = (() => {\n document.documentElement.dataset.uiSurface = \"mini-app\";\n document.documentElement.dataset.miniAppFrame = \"true\";\n const style = document.createElement(\"style\");\n style.setAttribute(\"nonce\", ${JSON.stringify(nonce)});\n style.textContent = atob(${JSON.stringify(Buffer.from(styles, \"utf8\").toString(\"base64\"))});\n document.head.prepend(style);\n const pending = new Map();\n const listeners = new Set();\n const chats = new Map();\n const freeze = (value) => {\n if (value && typeof value === \"object\") {\n Object.values(value).forEach(freeze);\n Object.freeze(value);\n }\n return value;\n };\n const bridgeToken = new URLSearchParams(location.hash.slice(1)).get(\"ragentsBridge\");\n ${escapeForwarder}\n ${themeReceiver}\n const channel = new MessageChannel();\n const port = channel.port1;\n let currentState = freeze({});\n let currentApp = null;\n let readyResolve;\n const ready = new Promise((resolve) => { readyResolve = resolve; });\n const terminal = new Set([\"succeeded\", \"failed\", \"cancelled\"]);\n const requestId = () => crypto.randomUUID().replaceAll(\"-\", \"\");\n const stateValue = (value) => value && typeof value === \"object\" && value.values && typeof value.values === \"object\"\n ? freeze(structuredClone(value.values))\n : freeze({});\n const settle = (message) => {\n const id = message.requestId || message.invocation?.requestId;\n const waiter = id ? pending.get(id) : undefined;\n if (!waiter || !terminal.has(message.invocation.status)) return;\n pending.delete(id);\n if (message.invocation.status === \"succeeded\") waiter.resolve(message.invocation.result);\n else waiter.reject(new Error(message.invocation.error || \"The app action was not completed.\"));\n };\n port.onmessage = ({ data }) => {\n if (data?.version !== 1) return;\n if (data.type === \"ragents.app.ready\") {\n applyHostTheme(data.theme);\n if (data.hostInput === true) {\n const disposeInput = ragentsInputBridge.installFrameInputBridge(window, port);\n window.addEventListener(\"pagehide\", disposeInput, { once: true });\n }\n currentApp = data.app;\n currentState = stateValue(data.state);\n listeners.forEach((listener) => listener(currentState));\n readyResolve();\n port.postMessage({ type: \"ragents.app.connected\", version: 1 });\n } else if (data.type === \"ragents.app.theme\") {\n applyHostTheme(data.theme);\n } else if (data.type === \"ragents.app.state\") {\n currentState = stateValue(data.state);\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.resolve(currentState);\n }\n listeners.forEach((listener) => listener(currentState));\n } else if (data.type === \"ragents.app.invocation\") {\n settle(data);\n } else if (data.type === \"ragents.app.chat-state\") {\n const entry = chats.get(data.actor);\n if (entry) {\n entry.snapshot = freeze(data.snapshot);\n entry.listeners.forEach((listener) => listener());\n }\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.chat-ack\") {\n const waiter = pending.get(data.requestId);\n if (waiter) { pending.delete(data.requestId); waiter.resolve(); }\n } else if (data.type === \"ragents.app.error\") {\n const waiter = data.requestId ? pending.get(data.requestId) : undefined;\n if (waiter) {\n pending.delete(data.requestId);\n waiter.reject(new Error(data.message));\n }\n }\n };\n port.start();\n const send = async (message) => {\n await ready;\n return new Promise((resolve, reject) => {\n pending.set(message.requestId, { resolve, reject });\n port.postMessage(message);\n });\n };\n if (/^[a-f0-9]{32}$/.test(bridgeToken || \"\")) {\n parent.postMessage(\n { type: \"ragents.app.frame-ready\", version: 1, token: bridgeToken },\n \"*\",\n [channel.port2],\n );\n }\n return Object.freeze({\n get actor() { if (!currentApp) throw new Error(\"The actor view is not ready yet.\"); return Object.freeze({id:currentApp.actorId,handle:currentApp.actorHandle}); },\n ready: ready.then(() => undefined),\n run: Object.freeze({ id: \"current\" }),\n principal: Object.freeze({ id: \"operator\", kind: \"operator\" }),\n state: Object.freeze({\n read: () => currentState,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n }),\n chat: Object.freeze({\n read: (actor) => chats.get(actor)?.snapshot,\n subscribe: (actor, listener) => {\n let entry = chats.get(actor);\n if (!entry) {\n entry = { listeners: new Set(), snapshot: undefined, started: false };\n chats.set(actor, entry);\n ready.then(() => {\n if (chats.get(actor) !== entry) return;\n entry.started = true;\n send({ type: \"ragents.app.chat-watch\", version: 1, requestId: requestId(), actor })\n .catch((error) => {\n if (chats.get(actor) !== entry) return;\n entry.snapshot = freeze({ messages: [], running: false, error: error.message });\n entry.listeners.forEach((notify) => notify());\n });\n });\n }\n entry.listeners.add(listener);\n return () => {\n entry.listeners.delete(listener);\n if (entry.listeners.size > 0 || chats.get(actor) !== entry) return;\n chats.delete(actor);\n if (entry.started) {\n port.postMessage({ type: \"ragents.app.chat-unwatch\", version: 1, requestId: requestId(), actor });\n }\n };\n },\n send: (actor, text, attachments) => send({ type: \"ragents.app.chat-send\", version: 1, requestId: requestId(), actor, text, attachments }),\n }),\n capabilities: Object.freeze({\n list: () => (currentApp?.actions ?? []).map((action) => action.id),\n call: async (actionId, input = {}) => {\n await ready;\n if (!(currentApp?.actions ?? []).some((action) => action.id === actionId)) {\n throw new Error(\"The requested app action is not installed.\");\n }\n return send({\n type: \"ragents.app.invoke\",\n version: 1,\n requestId: requestId(),\n actionId,\n input,\n });\n },\n }),\n });\n})();\n</script>`;\n\nexport const frameHtml = (\n frame: ReturnType<ActorProgramRuntime[\"frame\"]>,\n nonce: string,\n): string => {\n const head = /<head(?:\\s[^>]*)?>/i;\n if (!head.test(frame.html)) throw new Error(\"The installed app has no valid head.\");\n const client = `<script nonce=\"${nonce}\" type=\"module\">await globalThis.__ragentsAppContext.ready;${escapedScript(frame.clientJavaScript)}</script>`;\n return frame.html.replace(head, (value) => `${value}${typedBridgeSdk(nonce, `${browserRuntimeStyles}\\n${frame.styles}`)}${client}`);\n};\n\nexport interface MiniAppFrameOptions {\n ensureSession: (runId: string) => void;\n runtime: ActorProgramRuntime;\n}\n\n/** The plugin's only delivery route: the HTML of the mini-app frame; everything else is methods. */\nexport const createMiniAppFrameRoutes = (options: MiniAppFrameOptions): HttpRouteContribution[] => [\n {\n id: \"ragents.actor-programs.frame\",\n isApiPath: (pathname) => pathname.startsWith(miniAppsApiPrefix),\n matches: (request, url) => request.method === \"GET\" && framePattern.test(url.pathname),\n handle: async ({ request, response, url }) => {\n const match = url.pathname.match(framePattern);\n if (!match) throw new Error(\"Invalid app route.\");\n const [, runId, appId] = match;\n await guardedJsonRoute({\n request,\n response,\n ensureSession: () => options.ensureSession(runId!),\n errorStatus: 404,\n handle: () => {\n const revision = url.searchParams.get(\"revision\") ?? \"\";\n const nonce = randomBytes(18).toString(\"base64\");\n const frame = options.runtime.frame(runId!, appId!, revision);\n const content = Buffer.from(frameHtml(frame, nonce), \"utf8\");\n response.writeHead(200, {\n \"Cache-Control\": \"no-store\",\n \"Content-Security-Policy\": frameContentSecurityPolicy(nonce),\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Content-Length\": content.byteLength,\n \"Referrer-Policy\": \"no-referrer\",\n \"X-Content-Type-Options\": \"nosniff\",\n });\n response.end(content);\n },\n });\n },\n },\n];\n", "import { randomUUID } from \"node:crypto\";\nimport { lstat, mkdir, readdir, readFile, realpath, rm, writeFile } from \"node:fs/promises\";\nimport { lstatSync, readFileSync, renameSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { Type, type TSchema } from \"typebox\";\nimport { Value } from \"typebox/value\";\nimport { actorByHandle, actorDescriptionMaxLength, agentTools, assertJsonValue, canonicalHash, defineRunFunction, defineToolAvailability, emptyUsage, handleKey, runCapabilityContractHash, scriptInputOf, schemaComplaints, type Actor, type ActorProgramExecutor, type RunFunction, type CommandContext, type ExecutableActor, type JsonValue, type Orchestration, type PluginContext, type RunCapabilityDescriptor, type RunView, type TurnRequest, type TurnResult, } from \"@ragents/engine\";\nimport { ACTOR_PROGRAMS_STATE_ID, ACTOR_INVOCATIONS_STATE_ID, ACTOR_SCRIPT_STATE_ID, ACTOR_STATE_ID, resolveActorView, type ActorDataState, type ActorFunctionDefinition, type ActorFunctionInvocation, type ActorProgramDefinition, type ActorProgramState, type ActorScriptState, type ActorViewListing, } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\nimport type { ActorProgramSource, ActorProgramsService } from \"@ragents/host/plugin-support/actor-programs/service.js\";\nimport { jsonValue, jsonBytes, MAX_INVOCATIONS_STATE_BYTES } from \"./limits.js\";\nimport { agentCapabilityBinding, operatorCapabilityBinding } from \"./capability-resolver.js\";\nimport type { ActorOperationPort } from \"./operations.js\";\nimport { compileClientProject, installClientSdk } from \"@ragents/host/plugin-support/actor-programs/client-compiler.js\";\nimport { compileAppBackend, installServerSdk, prepareAppProject, prepareAppWorkspace, projectSourceFiles, readAppPackage, typecheckServerProject, type AppContract } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { syncWorkspaceOwnership } from \"@ragents/host/plugin-support/workspace-ownership.js\";\nimport { runManagedProcess, sandboxedLaunch, type WorkspaceProcessContext } from \"@ragents/workspace-executor\";\nimport { runModuleTemplates, templateById, templateFiles } from \"./templates.js\";\nimport { createTestReport, testReporterArgument } from \"./test-report.js\";\nimport { FRAME_BODY_CLASS, FRAME_DOCUMENT_CLASS, FRAME_ROOT_CLASS } from \"@ragents/host/plugin-support/actor-programs/client-runtime.js\";\nimport { buildTailwind } from \"@ragents/host/plugin-support/actor-programs/tailwind.js\";\nimport type { AskService } from \"@ragents/plugins/ragents.ask/server/contract.js\";\nconst NAME = /^[a-z][a-z0-9-]{0,63}$/;\nconst errorText = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst maxShownComplaints = 10;\nconst maxComplaintLength = 240;\n/** A failed check names the count and the first complaints; `lines` keeps all of them for actor_program_diagnostics. */\nconst checkFailure = (title: string, lines: readonly string[], fallback: string): Error => {\n const all = [...new Set(lines.map((line) => line.trim()).filter((line) => line !== \"\"))];\n if (all.length === 0)\n return new Error(fallback);\n const shown = all.slice(0, maxShownComplaints).map((line) => line.length > maxComplaintLength ? `${line.slice(0, maxComplaintLength - 3)}...` : line);\n const omitted = all.length - shown.length;\n return Object.assign(new Error([\n `${title}: ${all.length} errors.`,\n ...shown,\n ...(omitted > 0 ? [`... and ${omitted} more; all with actor_program_diagnostics.`] : []),\n ].join(\"\\n\")), { lines: all });\n};\nconst actorDescriptionOf = (text: string | undefined): string | undefined => {\n const line = (text ?? \"\").replace(/\\s+/g, \" \").trim();\n return line.length <= actorDescriptionMaxLength ? line || undefined : `${line.slice(0, actorDescriptionMaxLength - 3).trimEnd()}...`;\n};\nconst exposed = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"Published function of an active actor in the run.\" }, () => true);\nconst objectSchema = { type: \"object\", additionalProperties: true };\nconst checked = (schema: object, value: unknown, label: string): JsonValue => {\n const result = jsonValue(value, label);\n if (!Value.Check(schema as TSchema, result))\n throw new Error(`${label}: ${schemaComplaints(schema as TSchema, result)}`);\n return result;\n};\nconst safePath = (name: string): string => {\n if (!name || path.isAbsolute(name) || name.includes(\"\\\\\") || name.includes(\"\\0\") || name.split(\"/\").some((part) => !part || part === \".\" || part === \"..\"))\n throw new Error(`Invalid package path ${name}.`);\n return name;\n};\nconst inside = async (directory: string, relative: string): Promise<string> => {\n const root = await realpath(directory);\n const file = await realpath(path.join(root, safePath(relative)));\n if (!file.startsWith(`${root}${path.sep}`))\n throw new Error(`Package path ${relative} is outside the package.`);\n const stat = await lstat(file);\n if (!stat.isFile() || stat.size > 2000000)\n throw new Error(`Invalid or too large package file ${relative}.`);\n return readFile(file, \"utf8\");\n};\nconst occupied = (file: string): boolean => {\n try {\n lstatSync(file);\n return true;\n }\n catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\")\n return false;\n throw error;\n }\n};\nconst packageExists = (name: string): Error => new Error(`The package ${name} already exists.`);\n// Check and rename synchronously one after the other, because rename silently replaces an empty target folder.\nconst commitPackage = (staged: string, directory: string, name: string): void => {\n if (occupied(directory))\n throw packageExists(name);\n try {\n renameSync(staged, directory);\n }\n catch (error) {\n if ([\"EEXIST\", \"ENOTEMPTY\", \"ENOTDIR\"].includes((error as NodeJS.ErrnoException).code ?? \"\"))\n throw packageExists(name);\n throw error;\n }\n};\nconst descriptor = (tool: RunFunction): RunCapabilityDescriptor => ({ id: tool.name, label: tool.label, description: tool.description, schema: tool.schema, resultSchema: tool.resultSchema });\ninterface BackendBinding {\n id: string;\n kind: \"tool\" | \"app-action\" | \"input\";\n principal: {\n id: string;\n kind: \"agent\" | \"script\" | \"operator\";\n };\n output?: string[];\n descriptorsFor: (capabilityIds: readonly string[]) => readonly RunCapabilityDescriptor[];\n call: (name: string, input: JsonValue, index: number) => Promise<JsonValue>;\n}\ninterface CapabilityContract {\n capabilityIds: string[];\n capabilityContractHash: string;\n}\ninterface InvocationState {\n version: 1;\n invocations: ActorFunctionInvocation[];\n requestIds: string[];\n}\ninterface CompiledProgram {\n directory: string;\n files: ActorProgramSource[];\n definition: ActorProgramDefinition;\n backendJavaScript?: string;\n frameStyles: string;\n clients: {\n file: string;\n javaScript: string;\n }[];\n createActor: boolean;\n}\nexport interface ActorProgramRuntimeOptions {\n runtime: () => Orchestration;\n agentToolsFor: (runId: string, actorId: string, provisional?: ExecutableActor) => Promise<readonly RunFunction[]>;\n askService: () => AskService;\n reservedToolNames: () => readonly string[];\n /** Programs, tests, and builds run on the server, even with a workspace on a workstation. */\n serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;\n operations: ActorOperationPort;\n directoryFor: (runId: string) => string;\n scriptSources: (entryId: string, name: string) => readonly ActorProgramSource[] | undefined;\n}\nexport class ActorProgramRuntime implements ActorProgramsService, ActorProgramExecutor {\n readonly #options: ActorProgramRuntimeOptions;\n readonly #queues = new Map<string, Promise<void>>();\n readonly #active = new Map<string, {\n runId: string;\n actorId: string;\n controller: AbortController;\n completed: Promise<unknown>;\n }>();\n readonly #installing = new Set<string>();\n readonly #creating = new Set<string>();\n readonly #staged = new Set<string>();\n readonly #removing = new Set<string>();\n readonly #knownRuns = new Set<string>();\n readonly #epochs = new Map<string, number>();\n readonly #stopping = new Set<string>();\n #shuttingDown = false;\n constructor(options: ActorProgramRuntimeOptions) { this.#options = options; }\n runtime(): Orchestration { return this.#options.runtime(); }\n view(runId: string): RunView { return this.runtime().view(runId); }\n ownerId(runId: string): string { return this.runtime().state(runId).ownerId; }\n operatorContext(runId: string, label = \"operation\"): CommandContext { return { actorId: this.ownerId(runId), commandId: `actor-program:${label}:${randomUUID()}` }; }\n programsOf(view: RunView): ActorProgramDefinition[] {\n return view.pluginStates.flatMap((entry) => {\n if (entry.pluginId !== ACTOR_PROGRAMS_STATE_ID || entry.scope.kind !== \"actor\")\n return [];\n const state = entry.state as unknown as ActorProgramState;\n const actorId = entry.scope.actorId;\n const actor = view.actors.find((candidate) => candidate.id === actorId);\n return state.program && actor && actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\" ? [state.program] : [];\n });\n }\n programs(runId: string): ActorProgramDefinition[] { return this.runtime().listRuns().some(run => run.id === runId) ? this.programsOf(this.view(runId)) : []; }\n actor(runId: string, actorId: string): ExecutableActor {\n const actor = this.view(runId).actors.find((candidate) => candidate.id === actorId);\n if (!actor || actor.kind === \"human\" || actor.lifecycle.kind === \"stopped\")\n throw new Error(\"The actor is not active.\");\n if (this.#removing.has(`${runId}\\0${actorId}`))\n throw new Error(\"The actor package is being removed.\");\n return actor;\n }\n resolveActor(runId: string, callerId: string, reference: string): ExecutableActor {\n const actors = this.view(runId).actors;\n const found = reference === \"self\" ? actors.find((candidate) => candidate.id === callerId) : actorByHandle(actors, reference);\n if (!found)\n throw new Error(`Actor ${reference} is unknown.`);\n return this.actor(runId, found.id);\n }\n data(runId: string, actorId: string): ActorDataState {\n const view = this.view(runId);\n const entry = view.pluginStates.find((item) => item.pluginId === ACTOR_STATE_ID && item.scope.kind === \"actor\" && item.scope.actorId === actorId);\n const revision = this.runtime().events(runId).filter((event) => (event.type === \"plugin.state-replaced\" || event.type === \"plugin.state-patched\") && event.payload.pluginId === ACTOR_STATE_ID && event.payload.scope.kind === \"actor\" && event.payload.scope.actorId === actorId).at(-1)?.sequence ?? 0;\n return { version: 1, revision, values: (entry?.state ?? {}) as Record<string, unknown> };\n }\n #writeProgram(context: CommandContext, runId: string, actorId: string, program: ActorProgramDefinition | null): void {\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_PROGRAMS_STATE_ID, scope: { kind: \"actor\", actorId }, state: jsonValue({ version: 1, program }, \"Actor program\") });\n }\n #script(runId: string): ActorScriptState | undefined {\n return this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === \"run\")?.state as unknown as ActorScriptState | undefined;\n }\n async #writeSources(directory: string, files: readonly ActorProgramSource[]): Promise<void> {\n for (const source of files) {\n const file = path.join(directory, safePath(source.path));\n if (source.path.split(\"/\").includes(\"node_modules\"))\n throw new Error(\"Package sources must not overwrite dependencies.\");\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content, { flag: \"wx\" });\n }\n }\n async #refresh(runId: string, program: ActorProgramDefinition, signal: AbortSignal): Promise<void> {\n const script = this.#script(runId);\n const files = script ? this.#options.scriptSources(script.entryId, program.name) : undefined;\n if (files) {\n const directory = path.join(await this.workspaceDirectory(runId), program.name);\n for (const entry of await readdir(directory))\n if (entry !== \"node_modules\")\n await rm(path.join(directory, entry), { recursive: true, force: true });\n await this.#writeSources(directory, files);\n }\n try {\n await this.#activate(this.operatorContext(runId, \"refresh\"), runId, program.name, false, signal);\n }\n catch (error) {\n throw new Error(`The capability contract of ${program.name} has changed and the reactivation failed: ${errorText(error)}`);\n }\n }\n async #bound<T extends CapabilityContract>(runId: string, actorId: string, revision: string | undefined, signal: AbortSignal, contractOf: (program: ActorProgramDefinition) => T, descriptorsFor: BackendBinding[\"descriptorsFor\"]): Promise<{ program: ActorProgramDefinition; contract: T; descriptors: readonly RunCapabilityDescriptor[] }> {\n const current = () => {\n const program = this.programs(runId).find((entry) => entry.actorId === actorId);\n if (!program)\n throw new Error(\"The actor has no active program.\");\n return program;\n };\n const bind = (program: ActorProgramDefinition) => {\n const contract = contractOf(program);\n const descriptors = descriptorsFor(contract.capabilityIds);\n return { program, contract, descriptors, drifted: runCapabilityContractHash(descriptors) !== contract.capabilityContractHash };\n };\n const program = current();\n if (revision !== undefined && program.revision !== revision)\n throw new Error(\"The actor package was replaced.\");\n const bound = bind(program);\n if (!bound.drifted)\n return bound;\n await this.#refresh(runId, program, signal);\n const refreshed = bind(current());\n if (refreshed.drifted)\n throw new Error(`The capability contract of ${program.name} still differs after the reactivation.`);\n return refreshed;\n }\n async workspaceDirectory(runId: string): Promise<string> { this.#knownRuns.add(runId); return prepareAppWorkspace(path.join(this.#options.directoryFor(runId), \"actor-workspace\")); }\n templates() { return runModuleTemplates.map(({ id, title, description }) => ({ id, title, description })); }\n async #create<T>(runId: string, name: string, build: (directory: string) => Promise<T>): Promise<{ directory: string; built: T }> {\n this.#assertName(name);\n const actors = await this.workspaceDirectory(runId);\n const directory = path.join(actors, name);\n const key = `${runId}\\0${name}`;\n if (this.#creating.has(key))\n throw new Error(`The package ${name} is being created.`);\n if (occupied(directory))\n throw packageExists(name);\n this.#creating.add(key);\n const staging = path.join(path.dirname(actors), \".staging\");\n const staged = path.join(staging, `${name}-${randomUUID()}`);\n this.#staged.add(staged);\n try {\n await mkdir(staging, { recursive: true });\n for (const entry of await readdir(staging))\n if (!this.#staged.has(path.join(staging, entry)))\n await rm(path.join(staging, entry), { recursive: true, force: true });\n await mkdir(staged);\n const built = await build(staged);\n commitPackage(staged, directory, name);\n return { directory, built };\n }\n finally {\n this.#creating.delete(key);\n this.#staged.delete(staged);\n await rm(staged, { recursive: true, force: true });\n }\n }\n async scaffold(runId: string, name: string, templateId: string) {\n const sources = Object.entries(templateFiles(templateById(templateId), name)).map(([file, content]) => ({ path: file, content }));\n const { built: files } = await this.#create(runId, name, async (directory) => {\n await this.#writeSources(directory, sources);\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor }) : undefined;\n await installClientSdk(directory, { stateSchema: backend?.contract.state ?? objectSchema, actions: Object.entries(backend?.contract.functions ?? {}).map(([id, fn]) => ({ id, inputSchema: fn.input, resultSchema: fn.output })) });\n return (await projectSourceFiles(directory)).map((file) => file.path);\n });\n return { name, directory: `@actors/${name}`, files };\n }\n async importPackage(context: CommandContext, runId: string, name: string, files: readonly ActorProgramSource[], signal?: AbortSignal, scriptEntryId?: string) {\n const { directory } = await this.#create(runId, name, (staged) => this.#writeSources(staged, files));\n try {\n if (scriptEntryId)\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_SCRIPT_STATE_ID, scope: { kind: \"run\" }, state: { version: 1, entryId: scriptEntryId } });\n await this.activate(context, runId, name, signal);\n const program = this.programs(runId).find((entry) => entry.name === name)!;\n return { name, actorId: program.actorId, actorHandle: program.actorHandle, views: program.views.length };\n }\n catch (error) {\n await rm(directory, { recursive: true, force: true });\n throw error;\n }\n }\n async check(runId: string, name: string, callerId: string, signal?: AbortSignal, reference?: string): Promise<CompiledProgram> {\n this.#assertName(name);\n const directory = path.join(await this.workspaceDirectory(runId), name);\n if ((await lstat(directory)).isSymbolicLink())\n throw new Error(\"Actor packages must not be symlinks.\");\n await prepareAppProject(directory);\n const pkg = await readAppPackage(directory);\n const previous = this.programs(runId).find((program) => program.name === name);\n const owner = reference ? this.resolveActor(runId, callerId, reference) : previous ? this.actor(runId, previous.actorId) : !pkg.backend ? this.actor(runId, callerId) : undefined;\n if (previous && owner?.id !== previous.actorId)\n throw new Error(\"An activated package cannot move to another actor.\");\n const caller = this.view(runId).actors.find((candidate) => candidate.id === callerId);\n if (!caller)\n throw new Error(\"Calling actor is missing.\");\n const provisional: ExecutableActor = owner ?? {\n id: \"pending\", handle: name, displayName: pkg.title, kind: \"script\", grants: caller.grants.filter((grant) => grant.delegable),\n createdAt: new Date().toISOString(), createdBy: callerId, description: actorDescriptionOf(pkg.description) ?? null, execution: { driver: { kind: \"script\", config: {} }, workspacePath: null, turnTimeoutMs: null }, lifecycle: { kind: \"idle\", since: new Date().toISOString() }, usage: emptyUsage(), toolNames: null, openedToolNames: [],\n };\n const available = (await this.#options.agentToolsFor(runId, provisional.id, owner ? undefined : provisional)).map(descriptor);\n for (const operation of this.#options.operations.list())\n if (operation.operator !== \"unavailable\" && !available.some((entry) => entry.id === operation.id))\n available.push(operation);\n await installServerSdk(directory, available);\n const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor, signal }) : undefined;\n const contract: AppContract = backend?.contract ?? { state: objectSchema, functions: {} };\n if (contract.input && owner?.kind === \"agent\")\n throw new Error(\"An LLM actor processes inputs with its agent driver; onInput is only allowed for TypeScript actors.\");\n if (contract.state.type !== \"object\")\n throw new Error(\"Actor state must be an object schema.\");\n const state = owner ? this.data(runId, owner.id).values : {};\n checked(contract.state, state, \"Actor state\");\n const actorId = owner?.id ?? \"pending\";\n const actorHandle = owner?.handle ?? name;\n const functions: ActorFunctionDefinition[] = Object.entries(contract.functions).map(([id, fn]) => {\n if (!/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(id))\n throw new Error(`Invalid function name ${id}.`);\n if (fn.tool && !/^[a-z][a-z0-9_]{0,63}$/.test(fn.tool.name))\n throw new Error(`Invalid tool name ${fn.tool.name}.`);\n const capabilities = fn.capabilities ?? [];\n const selected = capabilities.map((name) => {\n const entry = available.find((item) => item.id === name);\n if (!entry)\n throw new Error(`Capability ${name} is not available.`);\n return entry;\n });\n return { id, label: fn.label, description: fn.description ?? fn.label, inputSchema: fn.input, resultSchema: fn.output, capabilityIds: capabilities, capabilityContractHash: runCapabilityContractHash(selected), confirmation: fn.confirmation ?? null,\n ...(fn.tool ? { tool: { name: fn.tool.name, targets: fn.tool.targets ? fn.tool.targets.map((target) => target === \"self\" ? actorId : this.resolveActor(runId, callerId, target).id) : null, card: fn.tool.card ?? true } } : {}) };\n });\n const inputCapabilities = contract.input?.capabilities ?? [];\n const inputDescriptors = inputCapabilities.map((id) => {\n const found = available.find((entry) => entry.id === id);\n if (!found)\n throw new Error(`Input capability ${id} is not available.`);\n return found;\n });\n await installClientSdk(directory, { stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n const hasServerFiles = pkg.backend || (await projectSourceFiles(directory)).some((file) => /^tests\\/.*\\.tsx?$/.test(file.path));\n const serverErrors = hasServerFiles ? typecheckServerProject(directory, pkg.backend) : [];\n if (serverErrors.length)\n throw checkFailure(`Typecheck of ${name}`, serverErrors, `The typecheck of ${name} failed without a message.`);\n const clients: CompiledProgram[\"clients\"] = [];\n const views: ActorProgramDefinition[\"views\"] = [];\n for (const view of pkg.views ?? []) {\n const client = await compileClientProject({ directory, entryPoint: view.client, stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });\n if (!client.valid)\n throw checkFailure(`Client build of ${view.client}`,\n client.diagnostics.filter((item) => item.category === \"error\").map((item) =>\n `${item.fileName ?? view.client}${item.start ? `:${item.start.line}:${item.start.column}` : \"\"} ${item.message.replace(/\\s*\\n\\s*/g, \" \")}`),\n `The client build of ${view.client} failed without a message.`);\n const styles = view.styles ? await inside(directory, view.styles) : \"\";\n if (/@import\\b|url\\s*\\(\\s*[\"']?\\s*(?:https?:|\\/\\/)/i.test(styles))\n throw new Error(\"View CSS must not load external resources.\");\n const clientFile = `view-${view.id}.mjs`;\n clients.push({ file: clientFile, javaScript: client.javaScript });\n views.push({ id: `${name}--${view.id}`, key: view.id, title: view.title ?? pkg.title, visible: previous?.views.find((item) => item.key === view.id)?.visible ?? true,\n placements: [{ kind: \"canvas\", anchorActorId: actorId }], html: `<!doctype html><html class=\"${FRAME_DOCUMENT_CLASS}\"><head><meta charset=\"utf-8\"></head><body class=\"${FRAME_BODY_CLASS}\"><div id=\"root\" class=\"${FRAME_ROOT_CLASS}\"></div></body></html>`, styles, clientFile });\n }\n const viewSources = [...new Set((pkg.views ?? []).map((view) => path.dirname(path.resolve(directory, view.client))))];\n const frameStyles = viewSources.length > 0 ? await buildTailwind(viewSources) : \"\";\n const files = await projectSourceFiles(directory);\n const revision = canonicalHash({ files, backend: backend?.javaScript ?? null, clients });\n const definition: ActorProgramDefinition = { name, title: pkg.title, description: pkg.description ?? \"\", actorId, actorHandle, revision, installedBy: previous?.installedBy ?? callerId,\n directory: path.join(this.#options.directoryFor(runId), \"actor-builds\", name, revision), sourceDirectory: directory,\n ...(backend ? { backendFile: \"server.mjs\" } : {}), stateSchema: contract.state, stylesFile: \"frame.css\", functions, views,\n ...(contract.input ? { input: { capabilityIds: inputCapabilities, capabilityContractHash: runCapabilityContractHash(inputDescriptors) } } : {}) };\n return { directory, files, definition, clients, frameStyles, createActor: !owner, ...(backend ? { backendJavaScript: backend.javaScript } : {}) };\n }\n activate(context: CommandContext, runId: string, name: string, signal?: AbortSignal, reference?: string) {\n return this.#activate(context, runId, name, true, signal, reference);\n }\n async #activate(context: CommandContext, runId: string, name: string, idle: boolean, signal?: AbortSignal, reference?: string) {\n const key = `${runId}\\0${name}`;\n if (this.#installing.has(key))\n throw new Error(`Package ${name} is already being activated.`);\n const epoch = this.invocationPermit(runId);\n this.#installing.add(key);\n const original = this.programs(runId).find((item) => item.name === name);\n let compiled: CompiledProgram | undefined;\n let published = false;\n try {\n compiled = await this.check(runId, name, context.actorId, signal, reference);\n const definition = compiled.definition;\n const tests = compiled.files.filter((file) => /^tests\\/.*\\.test\\.tsx?$/.test(file.path));\n if (tests.length) {\n const processContext = await this.#options.serverProcessContextFor(runId);\n const report = await createTestReport(compiled.directory);\n let stderr = \"\";\n const launch = await sandboxedLaunch(processContext, { command: process.execPath, args: [\"--import\", \"tsx\", \"--test\", testReporterArgument, ...tests.map((file) => file.path)] });\n const result = await runManagedProcess({ command: launch.command, args: [...launch.args], cwd: compiled.directory,\n env: processContext.env, uid: processContext.uid, gid: processContext.gid, label: `Tests ${name}`, signal, timeoutMs: 60000,\n onStdout: (chunk) => report.stdout(chunk.toString()), onStderr: (chunk) => { stderr = (stderr + chunk.toString()).slice(-12000); } });\n if (result.code !== 0 || result.timedOut)\n throw new Error(report.report(name, { code: result.code, timedOut: result.timedOut, stderr }));\n }\n if (canonicalHash(compiled.files) !== canonicalHash(await projectSourceFiles(compiled.directory)))\n throw new Error(\"Package files were changed during the check; activate again.\");\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped during the activation.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"The package was changed in the meantime.\");\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n const names = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (names.has(fn.tool.name))\n throw new Error(`Tool name ${fn.tool.name} is already taken.`);\n names.add(fn.tool.name);\n }\n const occupied = this.programs(runId).find((program) => program.actorId === definition.actorId && program.name !== name);\n if (occupied)\n throw new Error(`Actor @${definition.actorHandle} already owns the package ${occupied.name}. Add functions or views there.`);\n await mkdir(definition.directory, { recursive: true });\n for (const source of compiled.files) {\n const file = path.join(definition.directory, safePath(source.path));\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, source.content);\n }\n await prepareAppProject(definition.directory);\n if (compiled.backendJavaScript !== undefined)\n await writeFile(path.join(definition.directory, \"server.mjs\"), compiled.backendJavaScript);\n for (const client of compiled.clients)\n await writeFile(path.join(definition.directory, client.file), client.javaScript);\n await writeFile(path.join(definition.directory, definition.stylesFile), compiled.frameStyles);\n await writeFile(path.join(definition.directory, \"sources.json\"), JSON.stringify(compiled.files));\n await syncWorkspaceOwnership(definition.directory, await this.#options.serverProcessContextFor(runId));\n signal?.throwIfAborted();\n if (epoch !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped during the activation.\");\n if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)\n throw new Error(\"The package was changed in the meantime.\");\n if (!compiled.createActor) {\n this.actor(runId, definition.actorId);\n if (idle)\n this.#assertIdle(runId, definition.actorId);\n checked(definition.stateSchema, this.data(runId, definition.actorId).values, \"Actor state\");\n if (this.programs(runId).some((item) => item.actorId === definition.actorId && item.name !== name))\n throw new Error(\"The actor now owns another package.\");\n }\n const currentNames = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);\n for (const fn of definition.functions)\n if (fn.tool) {\n if (currentNames.has(fn.tool.name))\n throw new Error(`Tool name ${fn.tool.name} has been taken in the meantime.`);\n currentNames.add(fn.tool.name);\n }\n jsonValue({ version: 1, program: definition }, \"Actor program\");\n if (compiled.createActor) {\n const actors = this.view(runId).actors;\n const caller = actors.find((actor) => actor.id === context.actorId)!;\n const holder = actors.find((actor) => actor.handle === name);\n if (holder?.kind === \"script\" && holder.lifecycle.kind === \"stopped\") {\n checked(definition.stateSchema, this.data(runId, holder.id).values, \"Actor state\");\n this.runtime().restartActor(context, runId, holder.id, \"Actor package activated again\");\n }\n else if (holder)\n throw new Error(`Handle @${name} already belongs to the ${holder.kind !== \"human\" && holder.lifecycle.kind === \"stopped\" ? \"stopped\" : \"active\"} actor ${holder.displayName}; only a stopped TypeScript actor is restarted on activation. Choose another package name.`);\n else\n this.runtime().createScriptActor(context, runId, { handle: name, displayName: definition.title, description: actorDescriptionOf(definition.description), grants: caller.grants.filter((grant) => grant.delegable), toolNames: null });\n const actor = this.resolveActor(runId, context.actorId, `@${name}`);\n definition.actorId = actor.id;\n definition.actorHandle = actor.handle;\n for (const view of definition.views)\n for (const placement of view.placements)\n placement.anchorActorId = actor.id;\n for (const fn of definition.functions)\n if (fn.tool?.targets)\n fn.tool.targets = fn.tool.targets.map((target) => target === \"pending\" ? actor.id : target);\n }\n signal?.throwIfAborted();\n this.#writeProgram(context, runId, definition.actorId, definition);\n published = true;\n if (original && original.revision !== definition.revision)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(original));\n return { name, actor: `@${definition.actorHandle}`, views: definition.views.length, active: true as const };\n }\n finally {\n this.#installing.delete(key);\n if (!published && compiled && compiled.definition.revision !== original?.revision)\n await rm(compiled.definition.directory, { recursive: true, force: true });\n }\n }\n list(runId: string) { return this.programs(runId).map((program) => ({ name: program.name, actor: `@${program.actorHandle}`, functions: program.functions.map((fn) => fn.id), views: program.views.map((view) => ({ name: view.key, title: view.title, visible: view.visible })) })); }\n async remove(context: CommandContext, runId: string, name: string) {\n const program = this.#program(runId, name);\n this.#assertIdle(runId, program.actorId);\n if (this.#installing.has(`${runId}\\0${name}`))\n throw new Error(\"The package is being activated.\");\n const actor = this.actor(runId, program.actorId);\n const key = `${runId}\\0${program.actorId}`;\n this.#removing.add(key);\n try {\n await this.stopActor(runId, program.actorId);\n this.#writeProgram(context, runId, program.actorId, null);\n if (actor.kind === \"script\")\n this.runtime().stopActor(context, runId, program.actorId, \"Actor package removed\");\n await rm(program.directory, { recursive: true, force: true });\n }\n finally {\n this.#removing.delete(key);\n }\n return { removed: name };\n }\n setVisibility(context: CommandContext, runId: string, reference: string, visible: boolean) {\n const { program, view } = resolveActorView(this.programs(runId), reference);\n this.#writeProgram(context, runId, program.actorId, { ...program, views: program.views.map((item) => item.id === view.id ? { ...item, visible } : item) });\n return { view: `${program.name}/${view.key}`, visible };\n }\n apps(runId: string): ActorViewListing[] {\n return this.programs(runId).flatMap((program) => program.views.map((view) => ({ id: view.id, actorId: program.actorId, actorHandle: program.actorHandle, title: view.title, description: program.description, revision: program.revision,\n actions: program.functions.map(({ id, label, description, confirmation }) => ({ id, label, description, confirmation })), placements: view.placements, visible: view.visible, state: this.data(runId, program.actorId), invocations: this.#invocations(runId).invocations.filter((invocation) => invocation.actorId === program.actorId && invocation.revision === program.revision) })));\n }\n runLocalTools(runId: string) {\n if (!this.runtime().listRuns().some(run => run.id === runId))\n return [];\n const view = this.view(runId);\n return this.programs(runId).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [{ moduleId: program.name, name: fn.tool.name, description: fn.description, card: fn.tool.card, actorId: program.actorId, actorHandle: program.actorHandle, functionId: fn.id, revision: program.revision, sourceHash: program.revision, installedBy: program.installedBy,\n parameters: Object.entries((fn.inputSchema as {\n properties?: Record<string, {\n type?: string;\n description?: string;\n }>;\n }).properties ?? {}).map(([name, schema]) => ({ name, type: [\"string\", \"number\", \"integer\", \"boolean\"].includes(schema.type ?? \"\") ? schema.type ?? \"json\" : \"json\", description: schema.description ?? name, required: ((fn.inputSchema as {\n required?: string[];\n }).required ?? []).includes(name) })),\n targets: (fn.tool.targets ?? view.actors.filter((actor) => actor.kind !== \"human\" && actor.lifecycle.kind !== \"stopped\").map((actor) => actor.id)).map((actorId) => ({ actorId, handle: view.actors.find((actor) => actor.id === actorId)?.handle ?? null })) }] : []));\n }\n async moduleSource(runId: string, reference: string) { const program = this.#program(runId, reference); return { files: JSON.parse(await readFile(path.join(program.directory, \"sources.json\"), \"utf8\")) as ActorProgramSource[] }; }\n frame(runId: string, viewId: string, revision: string) {\n const program = this.#program(runId, viewId);\n const view = program.views.find((item) => item.id === viewId);\n if (!view || program.revision !== revision)\n throw new Error(\"The view was replaced or removed.\");\n if (!program.stylesFile)\n throw new Error(\"The program comes from an older activation without a stylesheet file. Please activate again.\");\n const frameStyles = readFileSync(path.join(program.directory, program.stylesFile), \"utf8\");\n return { ...view, styles: `${frameStyles}\\n${view.styles}`, platformVersion: 2 as const, clientJavaScript: readFileSync(path.join(program.directory, view.clientFile), \"utf8\") };\n }\n installedTools(context: PluginContext): RunFunction[] {\n return this.programsOf(context.view).flatMap((program) => program.functions.flatMap((fn) => !fn.tool || (fn.tool.targets && !fn.tool.targets.includes(context.actorId)) ? [] : [defineRunFunction({\n name: fn.tool.name, label: fn.label, description: fn.description, schema: fn.inputSchema as TSchema, resultSchema: fn.resultSchema as TSchema, available: exposed, executionMode: \"sequential\",\n run: async (scope, id, input) => {\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(context.actor, scope.availableFunctions(), capabilityIds, new Set()).descriptors;\n return this.#executeFunction(context.runId, program, fn, input, { id, kind: \"tool\", principal: { id: context.actorId, kind: context.actor.kind === \"script\" ? \"script\" : \"agent\" }, descriptorsFor, call: (name, value, index) => scope.invokeFunction(`${id}:capability:${index}`, name, value) }, scope.signal ?? new AbortController().signal);\n },\n })]));\n }\n async #serial<T>(runId: string, actorId: string, signal: AbortSignal, execute: () => Promise<T>): Promise<T> {\n const permit = this.invocationPermit(runId);\n const key = `${runId}\\0${actorId}`;\n const previous = this.#queues.get(key) ?? Promise.resolve();\n const operation = previous.then(() => { signal.throwIfAborted(); if (permit !== this.invocationPermit(runId))\n throw new Error(\"The run was stopped before the function started.\"); this.actor(runId, actorId); return execute(); });\n const queued = operation.then(() => undefined, () => undefined);\n this.#queues.set(key, queued);\n try {\n return await operation;\n }\n finally {\n if (this.#queues.get(key) === queued)\n this.#queues.delete(key);\n }\n }\n async #backend(runId: string, program: ActorProgramDefinition, input: unknown, binding: BackendBinding, descriptors: readonly RunCapabilityDescriptor[], signal: AbortSignal): Promise<{\n result: unknown;\n logs: string[];\n state: JsonValue;\n initial: ActorDataState;\n }> {\n if (!program.backendFile)\n throw new Error(\"The actor has no TypeScript backend.\");\n const current = this.#program(runId, program.name);\n if (current.revision !== program.revision)\n throw new Error(\"The actor package was replaced.\");\n const logs: string[] = [];\n let calls = 0;\n const initial = this.data(runId, program.actorId);\n const result = await this.runtime().nativeTypeScriptExecutor.execute({\n program: { entry: program.backendFile, files: [{ fileName: program.backendFile, text: await readFile(path.join(program.directory, program.backendFile), \"utf8\") }], exportName: \"handle\" },\n instanceId: this.#instance(program), cwd: program.directory, input, state: initial.values,\n std: { now: new Date().toISOString(), idPrefix: binding.id }, context: { runId, actor: { id: program.actorId, handle: program.actorHandle }, invocationId: binding.id, invocationKind: binding.kind, principal: binding.principal, capabilities: descriptors },\n }, { signal, log: (value) => { if (logs.length < 100)\n logs.push((typeof value === \"string\" ? value : JSON.stringify(value)).slice(0, 2000)); }, call: async (name, value) => {\n const capability = descriptors.find((entry) => entry.id === name);\n if (!capability)\n throw new Error(`Capability ${name} is not declared.`);\n if (++calls > 64)\n throw new Error(\"A call may run at most 64 capabilities.\");\n if (program.functions.some((fn) => fn.tool?.name === name))\n throw new Error(\"An actor function must not call itself through a tool; use a shared TypeScript function.\");\n checked(capability.schema, value, `Input ${name}`);\n const output = await binding.call(name, value, calls);\n return checked(capability.resultSchema, output, `Result ${name}`);\n } });\n signal.throwIfAborted();\n this.actor(runId, program.actorId);\n const state = checked(program.stateSchema, result.state, \"Actor state\");\n return { result: result.result, logs, state, initial };\n }\n #commitState(runId: string, actorId: string, state: JsonValue, initial: ActorDataState): void {\n if (canonicalHash(state) === canonicalHash(initial.values))\n return;\n if (this.data(runId, actorId).revision !== initial.revision)\n throw new Error(\"The actor state was changed during the call. Call again.\");\n this.runtime().replaceActorState(this.operatorContext(runId), runId, actorId, state);\n }\n #executeFunction(runId: string, bound: ActorProgramDefinition, declared: ActorFunctionDefinition, input: unknown, binding: BackendBinding, signal: AbortSignal): Promise<JsonValue> {\n const functionOf = (program: ActorProgramDefinition): ActorFunctionDefinition => {\n const fn = program.functions.find((entry) => entry.id === declared.id);\n if (!fn)\n throw new Error(\"The function is not declared.\");\n return fn;\n };\n return this.#serial(runId, bound.actorId, signal, async () => {\n const { program, contract: fn, descriptors } = await this.#bound(runId, bound.actorId, bound.revision, signal, functionOf, binding.descriptorsFor);\n const value = checked(fn.inputSchema, input, `Input ${fn.id}`);\n const result = await this.#backend(runId, program, { kind: \"function\", functionId: fn.id, input: value }, binding, descriptors, signal);\n const output = checked(fn.resultSchema, result.result, `Result ${fn.id}`);\n this.#commitState(runId, program.actorId, result.state, result.initial);\n binding.output?.push(...result.logs);\n return output;\n });\n }\n async runInput(request: TurnRequest<\"script\">, signal: AbortSignal): Promise<TurnResult> {\n this.#knownRuns.add(request.runId);\n try {\n const inputOf = (program: ActorProgramDefinition) => {\n if (!program.input)\n throw new Error(\"This TypeScript actor has no onInput handler.\");\n return program.input;\n };\n const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(this.actor(request.runId, request.agentId), request.tools, capabilityIds, new Set()).descriptors;\n await this.#serial(request.runId, request.agentId, signal, async () => {\n const { program, descriptors } = await this.#bound(request.runId, request.agentId, undefined, signal, inputOf, descriptorsFor);\n const binding: BackendBinding = { id: request.turnId, kind: \"input\", principal: { id: request.agentId, kind: \"script\" }, descriptorsFor, call: (name, input, index) => request.invoke(`${request.turnId}:capability:${index}`, name, input) };\n const result = await this.#backend(request.runId, program, { kind: \"input\", input: scriptInputOf(request.input) }, binding, descriptors, signal);\n this.#commitState(request.runId, request.agentId, result.state, result.initial);\n for (const text of result.logs)\n request.emit({ kind: \"runtime\", text });\n });\n return { failure: null, usage: emptyUsage() };\n }\n catch (error) {\n return { failure: errorText(error), usage: emptyUsage() };\n }\n }\n invocationPermit(runId: string): number { if (this.#shuttingDown || this.#stopping.has(runId))\n throw new Error(\"The run is being stopped.\"); return this.#epochs.get(runId) ?? 0; }\n startInvocation(runId: string, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.#program(runId, viewId);\n if (!program.views.some((view) => view.id === viewId))\n throw new Error(\"The view is unknown.\");\n return this.#start(runId, program, viewId, revision, functionId, requestId, input, permit);\n }\n startFunctionInvocation(runId: string, actorHandle: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {\n const program = this.programs(runId).find((entry) => entry.actorHandle === handleKey(actorHandle));\n if (!program)\n throw new Error(\"The actor publishes no program.\");\n return this.#start(runId, program, program.name, revision, functionId, requestId, input, permit);\n }\n #start(runId: string, program: ActorProgramDefinition, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit: number): ActorFunctionInvocation {\n this.#knownRuns.add(runId);\n if (permit !== this.invocationPermit(runId))\n throw new Error(\"The run has been stopped in the meantime.\");\n if (program.revision !== revision)\n throw new Error(\"The actor package was replaced. Refresh the view.\");\n const fn = program.functions.find((entry) => entry.id === functionId);\n if (!fn)\n throw new Error(\"The function is not declared.\");\n const state = this.#invocations(runId);\n const prior = state.invocations.find((entry) => entry.requestId === requestId);\n if (prior) {\n if (prior.actorId !== program.actorId || prior.actionId !== functionId || prior.revision !== revision || canonicalHash(prior.input) !== canonicalHash(input))\n throw new Error(\"The request ID was already used for another call.\");\n return prior;\n }\n if (!requestId || requestId.length > 200 || state.requestIds.includes(requestId))\n throw new Error(\"Invalid or already processed request ID.\");\n if (state.requestIds.length >= 10000)\n throw new Error(\"The run has reached its call limit.\");\n if ([...this.#active.values()].filter((entry) => entry.runId === runId).length >= 8)\n throw new Error(\"Eight actor functions are already running.\");\n checked(fn.inputSchema, input, \"Function input\");\n const invocation: ActorFunctionInvocation = { id: randomUUID(), requestId, actorId: program.actorId, actorHandle: program.actorHandle, appId: viewId, revision, actionId: functionId, input, output: [], createdAt: new Date().toISOString(), status: \"queued\" };\n this.#replaceInvocation(runId, invocation, true);\n const controller = new AbortController();\n const completed = Promise.resolve().then(async () => {\n const started = { ...invocation, status: \"running\" as const, startedAt: new Date().toISOString() };\n this.#replaceInvocation(runId, started);\n try {\n if (fn.confirmation && !await this.#confirm(runId, invocation, fn.confirmation, controller.signal))\n throw new Error(\"The function was not confirmed.\");\n const descriptorsFor = (capabilityIds: readonly string[]) => operatorCapabilityBinding(this.ownerId(runId), this.#options.operations.list(), capabilityIds).descriptors;\n const output: string[] = [];\n const result = await this.#executeFunction(runId, program, fn, input, { output, id: invocation.id, kind: \"app-action\", principal: { id: this.ownerId(runId), kind: \"operator\" }, descriptorsFor, call: async (name, value, index) => {\n const operation = this.#options.operations.operation(name)!;\n const id = `${invocation.id}:capability:${index}`;\n const confirmation = operation.operator === \"confirm\" ? await this.#confirm(runId, invocation, `Run ${operation.label}?`, controller.signal, value) : true;\n if (!confirmation)\n throw new Error(\"The action was not confirmed.\");\n return this.#options.operations.invoke(name, { runId, invocationId: id, principal: { kind: \"operator\", actorId: this.ownerId(runId) }, signal: controller.signal, ...(operation.operator === \"confirm\" ? { operatorConfirmation: { operationId: name, invocationId: id, inputHash: canonicalHash(value) } } : {}) }, value);\n } }, controller.signal);\n this.#replaceInvocation(runId, { ...started, status: \"succeeded\", result, output, finishedAt: new Date().toISOString() });\n }\n catch (error) {\n this.#replaceInvocation(runId, { ...started, status: controller.signal.aborted ? \"cancelled\" : \"failed\", error: errorText(error).slice(0, 8000), finishedAt: new Date().toISOString() });\n }\n }).finally(() => this.#active.delete(invocation.id));\n this.#active.set(invocation.id, { runId, actorId: program.actorId, controller, completed });\n return invocation;\n }\n invocation(runId: string, reference: string, id: string): ActorFunctionInvocation {\n const invocation = this.#invocations(runId).invocations.find((entry) => entry.id === id && (entry.appId === reference || entry.actorHandle === reference));\n if (!invocation)\n throw new Error(\"The function call is unknown.\");\n return invocation;\n }\n #invocations(runId: string): InvocationState { return (this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_INVOCATIONS_STATE_ID && entry.scope.kind === \"run\")?.state as unknown as InvocationState) ?? { version: 1, invocations: [], requestIds: [] }; }\n #replaceInvocation(runId: string, invocation: ActorFunctionInvocation, remember = false): void {\n const current = this.#invocations(runId);\n const entries = [...current.invocations.filter((entry) => entry.id !== invocation.id), invocation];\n const active = entries.filter((entry) => entry.status === \"queued\" || entry.status === \"running\");\n const finished = entries.filter((entry) => entry.status !== \"queued\" && entry.status !== \"running\").slice(-20);\n const state: InvocationState = { version: 1, invocations: [...active, ...finished], requestIds: remember ? [...current.requestIds, invocation.requestId] : current.requestIds };\n while (jsonBytes(state) > MAX_INVOCATIONS_STATE_BYTES && finished.length) {\n finished.shift();\n state.invocations = [...active, ...finished];\n }\n assertJsonValue(state, \"Actor calls\");\n this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_INVOCATIONS_STATE_ID, scope: { kind: \"run\" }, state });\n }\n async #confirm(runId: string, invocation: ActorFunctionInvocation, question: string, signal: AbortSignal, input = invocation.input): Promise<boolean> {\n const answer = await this.#options.askService().ask({ runId, agentId: this.ownerId(runId), turnId: null, commandId: `actor-confirm:${randomUUID()}` }, { question: `${question}\\nInput: ${JSON.stringify(input).slice(0, 500)}`, options: [\"Run\", \"Cancel\"], multi: false, description: `Function ${invocation.actionId} of @${invocation.actorHandle}`, parameters: { source: ACTOR_PROGRAMS_STATE_ID, invocationId: invocation.id } }, signal);\n return answer === \"Run\";\n }\n #program(runId: string, reference: string): ActorProgramDefinition {\n const program = this.programs(runId).find((entry) => entry.name === reference || entry.views.some((view) => view.id === reference));\n if (!program)\n throw new Error(`Actor package ${reference} is not active.`);\n return program;\n }\n #instance(program: ActorProgramDefinition): string { return `actor:${program.actorId}:${program.revision}`; }\n #assertName(name: string): void { if (!NAME.test(name))\n throw new Error(\"Package names begin with a lowercase letter and contain at most 64 lowercase letters, digits, or hyphens.\"); }\n #assertIdle(runId: string, actorId: string): void { if (this.#queues.has(`${runId}\\0${actorId}`) || [...this.#active.values()].some((entry) => entry.runId === runId && entry.actorId === actorId))\n throw new Error(\"The actor still has running functions or inputs.\"); }\n async stopActor(runId: string, actorId: string): Promise<void> {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId && entry.actorId === actorId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Actor stopped.\")));\n const state = this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === \"actor\" && entry.scope.actorId === actorId)?.state as unknown as ActorProgramState | undefined;\n if (state?.program)\n await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(state.program));\n await Promise.allSettled(active.map((entry) => entry.completed));\n }\n async stopRun(runId: string): Promise<void> {\n this.#epochs.set(runId, (this.#epochs.get(runId) ?? 0) + 1);\n this.#stopping.add(runId);\n try {\n const active = [...this.#active.values()].filter((entry) => entry.runId === runId);\n active.forEach((entry) => entry.controller.abort(new Error(\"Run stopped.\")));\n await this.runtime().nativeTypeScriptExecutor.stopRun(runId);\n await Promise.allSettled([...active.map((entry) => entry.completed), ...[...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue)]);\n }\n finally {\n this.#stopping.delete(runId);\n }\n }\n waitForRunSettlement(runId: string): Promise<void> { return Promise.allSettled([...this.#active.values()].filter((entry) => entry.runId === runId).map((entry) => entry.completed).concat([...this.#queues].filter(([key]) => key.startsWith(`${runId}\\0`)).map(([, queue]) => queue))).then(() => undefined); }\n async prepareSession(runId: string): Promise<void> { this.#knownRuns.add(runId); if (!this.runtime().listRuns().some(run => run.id === runId))\n return; for (const invocation of this.#invocations(runId).invocations)\n if (invocation.status === \"queued\" || invocation.status === \"running\")\n this.#replaceInvocation(runId, { ...invocation, status: \"cancelled\", error: \"The server was stopped during the call.\", finishedAt: new Date().toISOString() }); }\n async stopSession(runId: string, _signal?: AbortSignal): Promise<void> { await this.stopRun(runId); }\n async disposeRun(runId: string): Promise<void> { await this.stopRun(runId); }\n async deleteSession(runId: string): Promise<void> { await this.stopRun(runId); await rm(this.#options.directoryFor(runId), { recursive: true, force: true }); }\n async shutdown(): Promise<void> { this.#shuttingDown = true; await Promise.allSettled([...this.#knownRuns].map((runId) => this.stopRun(runId))); }\n}\n", "import { assertJsonValue, type JsonValue } from \"@ragents/engine\";\n\nconst MAX_JSON_BYTES = 250_000;\nconst MAX_JSON_DEPTH = 24;\nconst MAX_JSON_KEY_LENGTH = 256;\nexport const MAX_INVOCATIONS_STATE_BYTES = 8 * 1024 * 1024;\n\nexport const jsonBytes = (value: unknown): number => Buffer.byteLength(JSON.stringify(value), \"utf8\");\n\nexport const jsonValue = <T>(value: T, label: string): T & JsonValue => {\n assertJsonValue(value, label);\n const text = JSON.stringify(value);\n if (Buffer.byteLength(text, \"utf8\") > MAX_JSON_BYTES)\n throw new Error(`${label} is larger than ${MAX_JSON_BYTES} bytes.`);\n const pending: Array<{ value: unknown; depth: number }> = [{ value, depth: 0 }];\n while (pending.length > 0) {\n const current = pending.pop()!;\n if (current.depth > MAX_JSON_DEPTH)\n throw new Error(`${label} is nested deeper than ${MAX_JSON_DEPTH} levels.`);\n if (Array.isArray(current.value)) {\n current.value.forEach((entry) => pending.push({ value: entry, depth: current.depth + 1 }));\n continue;\n }\n if (current.value && typeof current.value === \"object\") {\n Object.entries(current.value).forEach(([key, entry]) => {\n if (key.length > MAX_JSON_KEY_LENGTH)\n throw new Error(`${label} contains a key with more than ${MAX_JSON_KEY_LENGTH} characters.`);\n pending.push({ value: entry, depth: current.depth + 1 });\n });\n }\n }\n return value;\n};\n", "import {\n runCapabilityBindingHash,\n runCapabilityContractHash,\n type Actor,\n type RunFunction,\n type RunCapabilityDescriptor,\n} from \"@ragents/engine\";\n\nimport type { OperationDescriptorPort } from \"./operations.js\";\n\nexport interface ResolvedCapabilityBinding {\n descriptors: readonly RunCapabilityDescriptor[];\n descriptorContractHash: string;\n bindingContractHash: string;\n}\n\nconst descriptorOf = (capability: {\n id: string;\n label: string;\n description: string;\n schema: RunCapabilityDescriptor[\"schema\"];\n resultSchema: RunCapabilityDescriptor[\"resultSchema\"];\n}): RunCapabilityDescriptor => ({\n id: capability.id,\n label: capability.label,\n description: capability.description,\n schema: capability.schema,\n resultSchema: capability.resultSchema,\n});\n\nconst selected = <T>(\n available: readonly T[],\n capabilityIds: readonly string[],\n idOf: (value: T) => string,\n unavailable: (id: string, names: string) => Error,\n): T[] => {\n const byId = new Map(available.map((value) => [idOf(value), value]));\n return capabilityIds.map((id) => {\n const value = byId.get(id);\n if (!value) throw unavailable(id, [...byId.keys()].sort().join(\", \") || \"none\");\n return value;\n });\n};\n\nexport const operatorCapabilityBinding = (\n actorId: string,\n operations: readonly OperationDescriptorPort[],\n capabilityIds: readonly string[],\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n operations.filter((operation) => operation.operator !== \"unavailable\"),\n capabilityIds,\n (operation) => operation.id,\n (id, names) => new Error(`Capability ${id} is not available to the operator. Available: ${names}.`),\n );\n const descriptors = resolved.map(descriptorOf);\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actorId, kind: \"operator\" },\n capabilities: descriptors,\n policies: resolved.map((operation) => ({ id: operation.id, policy: operation.operator })),\n }),\n };\n};\n\nexport const agentCapabilityBinding = (\n actor: Actor,\n tools: readonly RunFunction[],\n capabilityIds: readonly string[],\n blockedNames: ReadonlySet<string>,\n): ResolvedCapabilityBinding => {\n const resolved = selected(\n tools.filter((tool) => !blockedNames.has(tool.name)),\n capabilityIds,\n (tool) => tool.name,\n (id, names) => new Error(\n `Capability ${id} is not available to @${actor.handle}. Available: ${names}.`,\n ),\n );\n const descriptors = resolved.map((tool) => descriptorOf({ ...tool, id: tool.name }));\n return {\n descriptors,\n descriptorContractHash: runCapabilityContractHash(descriptors),\n bindingContractHash: runCapabilityBindingHash({\n principal: { id: actor.id, kind: actor.kind === \"script\" ? \"script\" : \"agent\", grants: actor.grants },\n capabilities: descriptors,\n policies: descriptors.map((descriptor) => ({ id: descriptor.id, policy: \"agent\" })),\n }),\n };\n};\n", "import type { ActorProgramTemplate } from \"./templates\";\n\nexport const controlsTemplate: ActorProgramTemplate = {\n id: \"controls\",\n title: \"Try UI controls\",\n description: \"Local demo with form, table, files, tasks, flow diagram, SVG connections, messages, document, and diff without function calls.\",\n ragents: {\n title: \"Try UI controls\",\n description: \"A local demo of the available mini-app controls. Values and files stay in this view.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\ntype Row = { id: string; name: string; count: number };\nconst rows: Row[] = [\n { id: \"analysis\", name: \"Analysis\", count: 12 },\n { id: \"review\", name: \"Review\", count: 4 },\n { id: \"notes\", name: \"Documentation\", count: 8 },\n];\n\nconst App = () => {\n const [values, setValues] = React.useState<FormValues>({ title: \"Review results\", notes: \"\", count: 3, mode: \"review\", approved: false });\n const [selected, setSelected] = React.useState<string[]>([]);\n const [files, setFiles] = React.useState<File[]>([]);\n const [result, setResult] = React.useState(\"No form values applied yet.\");\n const [messages, setMessages] = React.useState<Parameters<typeof UI.MessageList>[0][\"messages\"]>([\n { key: \"editorial\", sender: \"Editorial\", text: \"The notice should stay **short and clear**.\" },\n { key: \"review\", sender: \"Text review\", text: \"Opening hours and the repair notice are kept.\" },\n ]);\n const [done, setDone] = React.useState(false);\n return <UI.AppLayout title=\"Try UI controls\" description=\"Local demo: no agents, uploads, or server actions. Values and file selection stay only in this view and are reset on reload.\">\n <UI.Stack gap=\"large\">\n <UI.Form title=\"Form\" fields={[\n { id: \"title\", label: \"Task\", type: \"text\", placeholder: \"What should be worked on?\", required: true },\n { id: \"notes\", label: \"Notes\", type: \"textarea\", rows: 3, placeholder: \"What should be taken into account while working on it?\", hint: \"Multi-line text stays aligned in the form.\" },\n { id: \"count\", label: \"Count\", type: \"number\", placeholder: \"Number of results\", hint: \"1 to 10 results.\", required: true, min: 1, max: 10 },\n { id: \"mode\", label: \"Mode\", type: \"select\", options: [{ value: \"review\", label: \"Review\" }, { value: \"draft\", label: \"Draft\" }] },\n { id: \"approved\", label: \"Selection confirmed\", type: \"checkbox\", required: true },\n ]} values={values} onChange={setValues} onSubmit={async (next) => { setResult(JSON.stringify(next, null, 2)); }} submitLabel=\"Show values locally\" />\n <UI.Stack gap=\"small\">\n <UI.DataTable<Row> title=\"Data table\" rows={rows} rowKey={(row) => row.id} filterable\n selectedKeys={selected} onSelectionChange={setSelected}\n columns={[{ id: \"name\", label: \"Work\", value: (row) => row.name, sortable: true }, { id: \"count\", label: \"Results\", value: (row) => row.count, sortable: true }]}\n actions={[{ id: \"select\", label: \"Select\", onClick: (row) => { setSelected([row.id]); } }]} />\n <p aria-live=\"polite\">{selected.length} rows selected</p>\n </UI.Stack>\n <UI.FilePicker label=\"Local file selection\" files={files} onChange={setFiles} maxFiles={5} maxBytes={10 * 1024 * 1024} />\n <UI.Stack gap=\"small\">\n <UI.TaskProgress title=\"Example tasks\" tasks={[\n { id: \"read\", label: \"Read documents\", status: \"done\" },\n { id: \"review\", label: \"Review results\", status: done ? \"done\" : \"pending\", description: \"Local example status, no running actor.\" },\n ]} />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setDone((current) => !current)}>Toggle example status</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>Flow diagram</h2>\n <p>The diagram gets its state from the same data as the task list.</p>\n <UI.FlowDiagram label={done ? \"Intake, review done, result ready\" : \"Intake, review running, result pending\"}\n nodes={[\n { id: \"input\", label: \"Intake\", detail: \"Documents are available\", status: \"done\", kind: \"service\" },\n { id: \"check\", label: \"Review\", detail: done ? \"Review completed\" : \"Documents are being reviewed\", status: done ? \"done\" : \"active\", kind: \"agent\" },\n { id: \"result\", label: \"Result\", detail: done ? \"Result ready\" : \"Waiting for the review\", status: done ? \"done\" : \"pending\", kind: \"actor\" },\n ]}\n edges={[{ source: \"input\", target: \"check\" }, { source: \"check\", target: \"result\" }]} />\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <h2>SVG connections</h2>\n <p>SvgEdge draws the edges. Nodes, labels, and positions are in the code of this view.</p>\n <svg viewBox=\"0 0 360 160\" role=\"img\" aria-label={done ? \"Intake done, review completed, result ready\" : \"Intake done, review running, result open\"}\n className=\"block h-auto w-full text-[13px]\">\n <UI.SvgEdge d=\"M112 42 L144 42\" tone={done ? \"success\" : \"warning\"} active={!done} />\n <UI.SvgEdge d=\"M252 42 C320 42 320 118 252 118\" arrow={done ? \"end\" : \"none\"} tone={done ? \"success\" : \"neutral\"} lineStyle={done ? \"solid\" : \"dashed\"} />\n <UI.SvgEdge d=\"M144 118 C64 118 64 96 64 72\" arrow=\"both\" tone=\"accent\" />\n {[{ x: 8, y: 12, label: \"Intake\", status: \"Done\" },\n { x: 148, y: 12, label: \"Review\", status: done ? \"Done\" : \"Running\" },\n { x: 148, y: 88, label: \"Result\", status: done ? \"Ready\" : \"Open\" }].map((node) => <g key={node.label}>\n <rect x={node.x} y={node.y} width=\"104\" height=\"56\" rx=\"8\" className=\"fill-background stroke-border-strong\" />\n <text x={node.x + 52} y={node.y + 23} textAnchor=\"middle\" className=\"fill-foreground font-semibold\">{node.label}</text>\n <text x={node.x + 52} y={node.y + 42} textAnchor=\"middle\" className=\"fill-muted-foreground text-[11px]\">{node.status}</text>\n </g>)}\n </svg>\n </UI.Stack>\n <UI.Stack gap=\"small\">\n <UI.MessageList messages={messages} label=\"Local editorial notes\" />\n <UI.Stack direction=\"row\"><UI.Button onClick={() => setMessages((current) => [...current, {\n key: \"note-\" + current.length, sender: current.length % 2 ? \"Text review\" : \"Editorial\",\n text: \"Local example note \" + (current.length - 1) + \": This message was just added.\",\n }])}>Add local message</UI.Button></UI.Stack>\n </UI.Stack>\n <UI.DocumentViewer title=\"Local form result\" format=\"text\" content={result} />\n <UI.DiffViewer title=\"Example change\" patch={\"--- a/result.txt\\\\n+++ b/result.txt\\\\n@@ -1 +1 @@\\\\n-Status: open\\\\n+Status: reviewed\"} />\n </UI.Stack>\n </UI.AppLayout>;\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n", "import type { AppPackage } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\nimport { controlsTemplate } from \"./controls-template\";\n\nexport interface ActorProgramTemplate {\n id: string;\n title: string;\n description: string;\n ragents: AppPackage;\n files: Readonly<Record<string, string>> & { readonly \"package.json\"?: never };\n}\n\nconst blank: ActorProgramTemplate = {\n id: \"blank\",\n title: \"Blank mini-app\",\n description: \"A pure React view on the existing actor without an additional server function.\",\n ragents: {\n title: \"My view\",\n description: \"A small interface of the existing actor.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\n\nconst App = () => (\n <UI.AppLayout title=\"My view\">\n <UI.Stack><p>Ready for your content.</p></UI.Stack>\n </UI.AppLayout>\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst chat: ActorProgramTemplate = {\n id: \"chat\",\n title: \"Actor chat\",\n description: \"Reusable chat with history and optional input to the actor of this view.\",\n ragents: {\n title: \"Actor chat\",\n description: \"Shows the conversation with an actor and sends it user input.\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import { createRoot } from \"react-dom/client\";\nimport * as UI from \"@ragents/client/ui\";\nimport { context } from \"@ragents/client\";\n\nconst App = () => (\n <UI.Chat actor={\"@\" + context.actor.handle} className=\"h-full\" showInput placeholder=\"Message to the actor\" />\n);\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n },\n};\n\nconst textAnalysis: ActorProgramTemplate = {\n id: \"text-analysis\",\n title: \"Text analysis\",\n description: \"A TypeScript actor analyzes texts with its own function, state, and React view.\",\n ragents: {\n title: \"Text analysis\",\n description: \"Counts characters, words, and lines and remembers the number of analyses.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [result, setResult] = React.useState(\"Ready\");\n\n const analyse = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"analyse\", { text: String(next.text ?? \"\") });\n setResult([\n \\`Characters: \\${answer.characters}\\`,\n \\`Words: \\${answer.words}\\`,\n \\`Lines: \\${answer.lines}\\`,\n ].join(\"\\\\n\"));\n };\n\n return (\n <UI.AppLayout title=\"Text analysis\" description={<>Analyses: {state.analyses ?? 0}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"Text\", type: \"textarea\", rows: 6, placeholder: \"Enter text\" },\n ]} values={values} onChange={setValues} onSubmit={analyse} submitLabel=\"Analyze\" />\n <UI.Stack><pre aria-live=\"polite\" className=\"min-h-[90px] overflow-auto rounded-md border border-border bg-muted p-2.5 font-mono whitespace-pre-wrap\">{result}</pre></UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ analyses: Type.Optional(Type.Integer({\"minimum\": 0})) }, {\"additionalProperties\": false}),\n functions: {\n analyse: {\n label: \"Analyze text\",\n description: \"Counts words, characters, and lines without external effects.\",\n tool: { name: \"analyse_text\" },\n input: Type.Object({ text: Type.String({\"description\": \"The text to analyze.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), characters: Type.Integer({\"minimum\": 0}), words: Type.Integer({\"minimum\": 0}), lines: Type.Integer({\"minimum\": 0}), analyses: Type.Integer({\"minimum\": 1}) }, {\"additionalProperties\": false}),\n capabilities: [],\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n analyse: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const analyses = (state.analyses ?? 0) + 1;\n context.state.replace({ analyses });\n\n return {\n text,\n characters: text.length,\n words: text ? text.split(/\\\\s+/).length : 0,\n lines: text ? text.split(/\\\\r?\\\\n/).length : 0,\n analyses,\n };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"counts words, lines, and further analyses\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.analyse({\"text\": \" Hello world\\\\nNew line \"}, context), {\"text\": \"Hello world\\\\nNew line\", \"characters\": 20, \"words\": 4, \"lines\": 2, \"analyses\": 1});\n assert.deepEqual(await program.functions.analyse({\"text\": \"\"}, context), {\"text\": \"\", \"characters\": 0, \"words\": 0, \"lines\": 0, \"analyses\": 2});\n assert.deepEqual(context.state.read(), {\"analyses\": 2});\n});\n`,\n },\n};\n\nconst headlessCounter: ActorProgramTemplate = {\n id: \"headless-counter\",\n title: \"Counter without interface\",\n description: \"A TypeScript actor counts inputs in its state and offers the same work as a function.\",\n ragents: {\n title: \"Counter\",\n description: \"Collects incoming texts without model calls or interface.\",\n backend: \"src/server.ts\",\n },\n files: {\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nconst state = Type.Object({\n texts: Type.Optional(Type.Array(Type.String())),\n count: Type.Optional(Type.Integer({ minimum: 0 })),\n}, { additionalProperties: false });\n\nexport const contract = {\n state,\n functions: {\n record: {\n label: \"Count text\",\n input: Type.Object({ text: Type.String() }, { additionalProperties: false }),\n output: Type.Object({ count: Type.Integer(), texts: Type.Array(Type.String()) }, { additionalProperties: false }),\n tool: { name: \"record_text\" },\n },\n inspect: {\n label: \"Read counter\",\n input: Type.Object({}, { additionalProperties: false }),\n output: state,\n tool: { name: \"read_counter\" },\n },\n },\n input: { capabilities: [] },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport type { Static } from \"typebox\";\nimport { contract } from \"./contract.ts\";\n\nconst record = (state: Static<typeof contract.state>, text: string) => {\n const texts = [...(state.texts ?? []), text];\n return { texts, count: texts.length };\n};\n\nexport default defineActor(contract, {\n functions: {\n record: (input, context) => {\n const result = record(context.state.read(), input.text);\n context.state.replace(result);\n return result;\n },\n inspect: (_input, context) => context.state.read(),\n },\n onInput: (input, context) => {\n context.state.replace(record(context.state.read(), input.content));\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"inputs and functions share the same counter\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n for (const content of [\"one\", \"two\", \"three\"]) {\n await program.onInput!({ id: content, content, artifactIds: [], sourceEventIds: [], subscriptionId: null, event: null }, context);\n }\n assert.deepEqual(await program.functions.inspect({}, context), { texts: [\"one\", \"two\", \"three\"], count: 3 });\n assert.deepEqual(await program.functions.record({ text: \"four\" }, context), { texts: [\"one\", \"two\", \"three\", \"four\"], count: 4 });\n assert.deepEqual(context.state.read(), { texts: [\"one\", \"two\", \"three\", \"four\"], count: 4 });\n});\n`,\n },\n};\n\nconst sharedList: ActorProgramTemplate = {\n id: \"shared-list\",\n title: \"Shared list of an actor\",\n description: \"An actor owns a function and a React view for the same list state.\",\n ragents: {\n title: \"Shared list\",\n description: \"Collects texts from the app and from an agent tool in a shared list.\",\n backend: \"src/server.ts\",\n views: [{ id: \"main\", client: \"src/client.tsx\" }],\n },\n files: {\n \"src/client.tsx\": `import React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { context, useAppState } from \"@ragents/client\";\nimport * as UI from \"@ragents/client/ui\";\n\ntype FormValues = Parameters<typeof UI.Form>[0][\"values\"];\n\nconst App = () => {\n const state = useAppState();\n const [values, setValues] = React.useState<FormValues>({ text: \"\" });\n const [status, setStatus] = React.useState(\"Ready\");\n const entries = state.entries ?? [];\n\n const append = async (next: FormValues): Promise<void> => {\n const answer = await context.capabilities.call(\"append\", { text: String(next.text ?? \"\") });\n setValues({ text: \"\" });\n setStatus(\\`Added: \\${answer.text}\\`);\n };\n\n return (\n <UI.AppLayout title=\"Shared list\" description={<>{entries.length} {entries.length === 1 ? \"item\" : \"items\"}</>}>\n <UI.Grid>\n <UI.Form fields={[\n { id: \"text\", label: \"New item\", type: \"textarea\", placeholder: \"Enter text\" },\n ]} values={values} onChange={setValues} onSubmit={append} submitLabel=\"Add\" />\n <UI.Stack>\n <p className=\"text-muted-foreground\" role=\"status\">{status}</p>\n <ul className=\"border-t border-border\">\n {entries.map((entry, index) => <li className=\"min-h-[31px] border-b border-border-soft py-1.5 [overflow-wrap:anywhere]\" key={index}>{entry}</li>)}\n </ul>\n </UI.Stack>\n </UI.Grid>\n </UI.AppLayout>\n );\n};\n\nconst root = document.getElementById(\"root\");\nif (!root) throw new Error(\"The #root element is missing.\");\ncreateRoot(root).render(<App />);\n`,\n \"src/contract.ts\": `import { Type } from \"typebox\";\n\nexport const contract = {\n state: Type.Object({ entries: Type.Optional(Type.Array(Type.String())) }, {\"additionalProperties\": false}),\n functions: {\n append: {\n label: \"Add entry\",\n description: \"Appends the entered text to the shared list.\",\n input: Type.Object({ text: Type.String({\"description\": \"The text for the new list entry.\"}) }, {\"additionalProperties\": false}),\n output: Type.Object({ text: Type.String(), entries: Type.Array(Type.String()) }, {\"additionalProperties\": false}),\n capabilities: [],\n tool: { name: \"append_to_list\", card: true },\n },\n },\n} as const;\n`,\n \"src/server.ts\": `import { defineActor } from \"@ragents/server\";\nimport { contract } from \"./contract.ts\";\n\nexport default defineActor(contract, {\n functions: {\n append: async (input, context) => {\n const text = input.text.trim();\n const state = context.state.read();\n const entries = [...(state.entries ?? []), text];\n context.state.replace({ entries });\n return { text, entries };\n },\n },\n});\n`,\n \"tests/program.test.ts\": `import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport type { Static } from \"typebox\";\nimport { createTestContext } from \"@ragents/server/testing\";\nimport { contract } from \"../src/contract.ts\";\nimport program from \"../src/server.ts\";\n\ntest(\"adds entries without losing existing entries\", async () => {\n const context = createTestContext<Static<typeof contract.state>>({ state: {} });\n assert.deepEqual(await program.functions.append({\"text\": \" First entry \"}, context), {\"text\": \"First entry\", \"entries\": [\"First entry\"]});\n assert.deepEqual(await program.functions.append({\"text\": \"Second entry\"}, context), {\"text\": \"Second entry\", \"entries\": [\"First entry\", \"Second entry\"]});\n assert.deepEqual(context.state.read(), {\"entries\": [\"First entry\", \"Second entry\"]});\n});\n`,\n },\n};\n\nexport const runModuleTemplates = [blank, chat, controlsTemplate, textAnalysis, headlessCounter, sharedList] as const;\n\nexport const templateFiles = (template: ActorProgramTemplate, name: string): Readonly<Record<string, string>> => ({\n \"package.json\": `${JSON.stringify({ name, private: true, type: \"module\", ragents: template.ragents }, null, 2)}\\n`,\n ...template.files,\n});\n\nexport const templateById = (id: string): ActorProgramTemplate => {\n const template = runModuleTemplates.find((candidate) => candidate.id === id);\n if (!template) throw new Error(`Unknown actor program template ${id}. Valid: ${runModuleTemplates.map((entry) => entry.id).join(\", \")}.`);\n return template;\n};\n", "import { realpath } from \"node:fs/promises\";\n\n/** A node:test reporter that writes one JSON line per passed test, failed test and stderr line of a test file. */\nconst reporterSource = `\nimport { inspect } from \"node:util\";\nconst shown = (value) => inspect(value, { depth: 4, breakLength: Infinity, maxArrayLength: 20, maxStringLength: 200 }).slice(0, 300);\nexport default async function* (source) {\n for await (const { type, data } of source) {\n if (type === \"test:pass\" && data.details?.type !== \"suite\") yield JSON.stringify({ kind: \"pass\" }) + \"\\\\n\";\n if (type === \"test:fail\" && data.details?.type !== \"suite\" && data.details?.error?.failureType !== \"subtestsFailed\") {\n const error = data.details.error;\n const cause = error.cause instanceof Error ? error.cause : error;\n const assertion = cause.code === \"ERR_ASSERTION\";\n yield JSON.stringify({ kind: \"fail\", name: data.name, file: data.file ?? null, line: data.line ?? null, column: data.column ?? null,\n message: String(cause.message), generated: cause.generatedMessage === true, stack: String(cause.stack ?? \"\"),\n ...(assertion ? { expected: shown(cause.expected), actual: shown(cause.actual) } : {}) }) + \"\\\\n\";\n }\n if (type === \"test:stderr\") yield JSON.stringify({ kind: \"stderr\", file: data.file ?? null, message: String(data.message) }) + \"\\\\n\";\n }\n}\n`;\n\nexport const testReporterArgument = `--test-reporter=data:text/javascript,${encodeURIComponent(reporterSource)}`;\n\ntype TestRecord =\n | { kind: \"pass\" }\n | { kind: \"fail\"; name: string; file: string | null; line: number | null; column: number | null; message: string; generated: boolean; stack: string; expected?: string; actual?: string }\n | { kind: \"stderr\"; file: string | null; message: string };\n\nconst maxDetailed = 10;\nconst frameLine = /^\\s+at /;\n\n/** The lines of an error output that name the error, without stack frames, code excerpts and the Node version. */\nconst errorLines = (lines: readonly string[]): string[] => {\n const meaningful = lines.map((line) => line.trimEnd()).filter((line) => line.trim() !== \"\" && !frameLine.test(line) && !/^Node\\.js v\\d/.test(line) && !/^\\s*\\^+$/.test(line));\n const named = meaningful.filter((line) => /^[A-Za-z]*Error\\b/.test(line));\n return (named.length > 0 ? named : meaningful.slice(-5)).slice(0, 5);\n};\n\n/** Collects the reporter lines of a test run and turns them into a short failure report: counts, and per failed test its name, message, expected and actual values and its place in the program. */\nexport const createTestReport = async (directory: string) => {\n const roots = [...new Set([directory, await realpath(directory)])].sort((left, right) => right.length - left.length);\n const relative = (text: string): string => roots.reduce((result, root) => result.replaceAll(`file://${root}/`, \"\").replaceAll(`${root}/`, \"\"), text);\n const failures: Extract<TestRecord, { kind: \"fail\" }>[] = [];\n const stderrByFile = new Map<string, string[]>();\n const unparsed: string[] = [];\n let passed = 0;\n let failed = 0;\n let pending = \"\";\n\n const record = (line: string): void => {\n if (line.trim() === \"\") return;\n let parsed: TestRecord;\n try {\n parsed = JSON.parse(line) as TestRecord;\n } catch {\n unparsed.push(line);\n return;\n }\n if (parsed.kind === \"pass\") passed += 1;\n if (parsed.kind === \"fail\") {\n failed += 1;\n if (failures.length < maxDetailed) failures.push(parsed);\n }\n if (parsed.kind === \"stderr\") {\n const lines = stderrByFile.get(parsed.file ?? \"\") ?? [];\n stderrByFile.set(parsed.file ?? \"\", [...lines, ...parsed.message.split(\"\\n\")].slice(-50));\n }\n };\n\n const placeOf = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const frame = failure.stack.split(\"\\n\").filter((line) => frameLine.test(line)).map(relative)\n .map((line) => /\\(?([^\\s()]+:\\d+:\\d+)\\)?\\s*$/.exec(line)?.[1])\n .find((place) => place !== undefined && !place.startsWith(\"/\") && !place.startsWith(\"node:\") && !place.includes(\"node_modules/\"));\n const declared = failure.file === null ? failure.name : `${relative(failure.file)}${failure.line === null ? \"\" : `:${failure.line}:${failure.column ?? 1}`}`;\n return frame ?? declared;\n };\n\n const describe = (failure: Extract<TestRecord, { kind: \"fail\" }>): string => {\n const fileOutput = failure.message === \"test failed\" && failure.file !== null ? stderrByFile.get(failure.file) ?? stderrByFile.get(relative(failure.file)) : undefined;\n const message = fileOutput ? errorLines(fileOutput).join(\"; \") : failure.generated ? failure.message.split(\"\\n\")[0]!.replace(/:$/, \"\") : failure.message.trim().slice(0, 500);\n const values = failure.expected === undefined || failure.expected === failure.actual ? \"\" : ` - expected ${failure.expected}, actual ${failure.actual}`;\n return `- ${failure.name} (${placeOf(failure)}): ${relative(message)}${relative(values)}`;\n };\n\n return {\n stdout: (chunk: string): void => {\n const lines = (pending + chunk).split(\"\\n\");\n pending = lines.pop() ?? \"\";\n lines.forEach(record);\n },\n report: (name: string, outcome: { code: number | null; timedOut: boolean; stderr: string }): string => {\n record(pending);\n pending = \"\";\n const summary = outcome.timedOut\n ? `Tests for ${name} canceled after a timeout: ${passed} passed, ${failed} failed.`\n : `Tests for ${name} failed: ${passed} passed, ${failed} failed.`;\n const details = failures.map(describe);\n const more = failed > failures.length ? [`... and ${failed - failures.length} more`] : [];\n const withoutResult = failed === 0\n ? [`The test run ended${outcome.code === null ? \"\" : ` with code ${outcome.code}`} without a failed test:`, ...errorLines([...unparsed, ...outcome.stderr.split(\"\\n\")]).map(relative)]\n : [];\n return [summary, ...details, ...more, ...withoutResult].join(\"\\n\");\n },\n };\n};\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, holdsUsable, type RunFunction, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport type { ActorProgramRuntime } from \"./runtime.js\";\nimport type { createProjectDiagnostics } from \"./project-diagnostics.js\";\nconst metadata = [\n { name: \"actor_program_create\", label: \"Create Actor Program\", description: \"Create a private TypeScript package with fixed libraries.\", longDescription: \"Edit files under @actors/name using workspace tools.\" },\n { name: \"actor_program_activate\", label: \"Activate Actor Program\", description: \"Typecheck, build and test a package, then activate its functions and optional views.\", longDescription: \"actor self or @handle attaches to an existing actor; omitted creates a TypeScript actor for a backend, or attaches static views to self.\" },\n { name: \"actor_program_list\", label: \"List Actor Programs\", description: \"List active actor packages, functions and views.\" },\n { name: \"actor_program_remove\", label: \"Remove Actor Program\", description: \"Detach functions and views and stop the backend.\", longDescription: \"A TypeScript actor is stopped; an LLM actor retains its agent behavior.\" },\n { name: \"actor_view_set_visibility\", label: \"Show or hide Actor View\", description: \"Set surface visibility by package-name/view-key or @handle/view-key.\", longDescription: \"Use names you chose; the server resolves the view ID. A unique view title also works.\" },\n { name: \"actor_program_diagnostics\", label: \"Actor Program Diagnostics\", description: \"Read the last project diagnostics.\", longDescription: \"Changed errors are automatically supplied before the next model request.\" },\n] as const;\nexport const actorProgramManagementToolNames = metadata.map((entry) => entry.name);\nexport const actorProgramToolsAvailable = defineToolAvailability({ availability: \"conditional\", availabilityDetail: \"For executable actors with agent.spawn and plugin.state.write.\" }, actor => actor.kind !== \"human\" && holdsUsable(actor, \"agent.spawn\") && holdsUsable(actor, \"plugin.state.write\"));\nconst name = Type.String({ pattern: \"^[a-z][a-z0-9-]{0,63}$\" });\ntype Diagnostics = Pick<ReturnType<typeof createProjectDiagnostics>, \"latest\">;\nconst managementTools = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): RunFunction[] => [\n defineRunFunction({ ...metadata[0], schema: Type.Object({ name, template: Type.Union(runtime.templates().map((entry) => Type.Literal(entry.id, { description: entry.description }))) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), directory: Type.String(), files: Type.Array(Type.String()) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => runtime.scaffold(scope.caller.runId, input.name, input.template) }),\n defineRunFunction({ ...metadata[1], schema: Type.Object({ name, actor: Type.Optional(Type.String()) }, { additionalProperties: false }), resultSchema: Type.Object({ name: Type.String(), actor: Type.String(), views: Type.Number(), active: Type.Literal(true) }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.activate(scope.context(id), scope.caller.runId, input.name, scope.signal, input.actor) }),\n defineRunFunction({ ...metadata[2], schema: Type.Object({}, { additionalProperties: false }), resultSchema: Type.Array(Type.Object({ name: Type.String(), actor: Type.String(), functions: Type.Array(Type.String()), views: Type.Array(Type.Object({ name: Type.String(), title: Type.String(), visible: Type.Boolean() })) })), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope) => runtime.list(scope.caller.runId) }),\n defineRunFunction({ ...metadata[3], schema: Type.Object({ name }, { additionalProperties: false }), resultSchema: Type.Object({ removed: Type.String() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.remove(scope.context(id), scope.caller.runId, input.name) }),\n defineRunFunction({ ...metadata[4], schema: Type.Object({ view: Type.String({ minLength: 1, description: \"package-name/view-key or @handle/view-key of an activated view, without the surface entity prefix app:. No generated IDs needed.\" }), visible: Type.Boolean() }, { additionalProperties: false }), resultSchema: Type.Object({ view: Type.String(), visible: Type.Boolean() }, { additionalProperties: false }), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, id, input) => runtime.setVisibility(scope.context(id), scope.caller.runId, input.view, input.visible) }),\n defineRunFunction({ ...metadata[5], schema: Type.Object({ name: Type.Optional(name) }, { additionalProperties: false }), resultSchema: Type.String(), available: actorProgramToolsAvailable, executionMode: \"sequential\", run: (scope, _id, input) => diagnostics.latest(scope.caller.runId, scope.caller.actorId, input.name) }),\n];\nexport const createActorProgramToolContributors = (runtime: ActorProgramRuntime, diagnostics: Diagnostics): readonly ToolContributor[] => [\n { name: \"ragents.actor-programs.management\", descriptors: metadata.map((item) => toolDescriptorFrom(item, actorProgramToolsAvailable)), tools: () => managementTools(runtime, diagnostics) },\n { name: \"ragents.actor-programs.functions\", descriptors: [], dynamic: true, tools: (context) => runtime.installedTools(context) },\n];\n", "import { Type } from \"typebox\";\nimport { defineRunFunction, defineToolAvailability, type ToolContributor } from \"@ragents/engine\";\nimport { toolDescriptorFrom } from \"@ragents/host/plugin-support/agent-tool.js\";\nimport { readClientUiComponentNames, readClientUiComponentContracts } from \"@ragents/host/plugin-support/actor-programs/client-contracts.js\";\nimport { actorProgramGuide } from \"./prompts.js\";\n\nconst available = defineToolAvailability({ availability: \"always\", availabilityDetail: \"Typed UI reference of the installed actor program plugin.\" }, () => true);\nconst metadata = {\n name: \"actor_program_controls\",\n label: \"Look up actor program guide and controls\",\n description: \"Read Mini-App control contracts or the actor-program authoring guide.\",\n longDescription: \"With topic: guide, explain the TypeScript package workflow through actor_program_activate. Otherwise list control names, or select one component (for example Form) for only its TypeScript props and supporting types. Import controls from @ragents/client/ui and use these exact props.\",\n};\n\nexport const describeClientControls = (component?: string) => {\n const components = readClientUiComponentNames();\n if (component === undefined) return { components };\n if (!components.includes(component)) throw new Error(`Unknown control ${component}. Valid: ${components.join(\", \")}`);\n return { files: readClientUiComponentContracts(component) };\n};\n\nexport const createControlsToolContributor = (): ToolContributor => ({\n name: \"ragents.actor-programs.controls\",\n descriptors: [toolDescriptorFrom(metadata, available)],\n tools: () => [defineRunFunction({\n ...metadata,\n available,\n schema: Type.Object({\n topic: Type.Optional(Type.Union([Type.Literal(\"controls\"), Type.Literal(\"guide\")], { description: \"Default controls: query component names or types. Guide: read the short package workflow without component.\" })),\n component: Type.Optional(Type.String({ minLength: 1, description: \"Optional control name from the catalog, without UI. prefix. Only valid when topic is controls or omitted.\" })),\n }, { additionalProperties: false }),\n resultSchema: Type.Union([\n Type.Object({ guide: Type.String() }, { additionalProperties: false }),\n Type.Object({ components: Type.Array(Type.String()) }, { additionalProperties: false }),\n Type.Object({ files: Type.Record(Type.String(), Type.String()) }, { additionalProperties: false }),\n ]),\n run: async (_scope, _call, input) => {\n if (input.topic === \"guide\") {\n if (input.component !== undefined) throw new Error(\"component is only allowed with topic: controls or without topic; for topic: guide, omit component.\");\n return { guide: await actorProgramGuide.render({}) };\n }\n return describeClientControls(input.component);\n },\n })],\n});\n", "import { pluginAsset } from \"@ragents/host/plugin-support/plugin-folder.js\";\nimport { boundToTools, handlebarsPrompt } from \"@ragents/host/plugin-support/prompt.js\";\n\nconst buildingTools = [\n \"actor_program_create\",\n \"actor_program_activate\",\n \"actor_program_diagnostics\",\n \"actor_program_list\",\n \"actor_program_remove\",\n \"actor_view_set_visibility\",\n] as const;\n\nexport const actorProgramGuide = handlebarsPrompt(\n \"ragents.actor-programs.prompt\", 750, pluginAsset(\"ragents.actor-programs\", \"prompt.hbs\"),\n);\n\nexport const actorProgramSummary = boundToTools(\n { ...handlebarsPrompt(\"ragents.actor-programs.summary\", 749, pluginAsset(\"ragents.actor-programs\", \"summary.hbs\")), delivery: \"initial\" },\n \"actor_program_controls\",\n ...buildingTools,\n);\n", "import { createHash } from \"node:crypto\";\nimport { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { AgentContribution, JsonValue } from \"@ragents/engine\";\nimport { projectSourceFiles } from \"@ragents/host/plugin-support/actor-programs/app-project.js\";\n\nconst entryType = \"ragents.actor-programs.project-diagnostics\";\nconst maxDeltaLines = 8;\nconst maxLineLength = 240;\n\ninterface ProgramDiagnostics {\n fingerprint: string;\n errors: string[];\n}\n\nexport interface ProjectDiagnosticsSnapshot {\n version: 1;\n programs: Record<string, ProgramDiagnostics>;\n}\n\nexport interface ProjectDiagnosticsOptions {\n workspaceFor: (runId: string) => string | Promise<string>;\n check: (runId: string, programName: string, actorId: string, signal?: AbortSignal) => Promise<unknown>;\n applies?: (runId: string, actorId: string) => boolean;\n}\n\nconst messageOf = (error: unknown): string => error instanceof Error ? error.message : String(error);\nconst fingerprintOf = (value: unknown): string => createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\");\nconst errorLines = (error: unknown): string[] => {\n const complete = error instanceof Error ? (error as { lines?: unknown }).lines : undefined;\n if (Array.isArray(complete) && complete.every((line) => typeof line === \"string\")) return [...new Set(complete as string[])];\n const lines = messageOf(error).split(\"\\n\").map((line) => line.trim()).filter(Boolean);\n const issues = lines.filter((line) => !/^(Build failed with \\d+ errors?:|.*(?:Typecheck|Diagnostics).*:)$/i.test(line));\n return [...new Set(issues.length ? issues : lines)];\n};\nconst allErrors = (snapshot: ProjectDiagnosticsSnapshot): string[] => Object.entries(snapshot.programs)\n .sort(([left], [right]) => left.localeCompare(right))\n .flatMap(([programName, program]) => program.errors.map((error) => `${programName}: ${error}`));\nconst isSnapshot = (value: unknown): value is ProjectDiagnosticsSnapshot => {\n if (value === null || typeof value !== \"object\") return false;\n const snapshot = value as ProjectDiagnosticsSnapshot;\n return snapshot.version === 1 && snapshot.programs !== null && typeof snapshot.programs === \"object\"\n && Object.values(snapshot.programs).every((program) => program && typeof program.fingerprint === \"string\"\n && Array.isArray(program.errors) && program.errors.every((error) => typeof error === \"string\"));\n};\n\nexport const createProjectDiagnostics = (options: ProjectDiagnosticsOptions) => {\n const snapshots = new Map<string, Map<string, ProjectDiagnosticsSnapshot>>();\n const remember = (runId: string, actorId: string, snapshot: ProjectDiagnosticsSnapshot): void => {\n const agents = snapshots.get(runId) ?? new Map<string, ProjectDiagnosticsSnapshot>();\n agents.set(actorId, snapshot);\n snapshots.set(runId, agents);\n };\n const contribution: AgentContribution = {\n id: entryType,\n beforeModelCall: async ({ runId, agentId }, call) => {\n if (options.applies?.(runId, agentId) === false) return undefined;\n call.signal?.throwIfAborted();\n const previous: ProjectDiagnosticsSnapshot = isSnapshot(call.kept) ? call.kept : { version: 1, programs: {} };\n const next: ProjectDiagnosticsSnapshot = { version: 1, programs: {} };\n let changed = false;\n try {\n const directory = await options.workspaceFor(runId);\n const entries = await readdir(directory, { withFileTypes: true }).catch((error: NodeJS.ErrnoException) => {\n if (error.code === \"ENOENT\") return [];\n throw error;\n });\n for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n if (!entry.isDirectory() && !entry.isSymbolicLink()) continue;\n call.signal?.throwIfAborted();\n let fingerprint: string;\n let errors: string[] = [];\n try {\n if (entry.isSymbolicLink()) throw new Error(\"Actor projects must not be symlinks.\");\n fingerprint = fingerprintOf(await projectSourceFiles(path.join(directory, entry.name)));\n } catch (error) {\n errors = errorLines(error);\n fingerprint = fingerprintOf({ errors });\n }\n const prior = previous.programs[entry.name];\n if (prior?.fingerprint === fingerprint) {\n next.programs[entry.name] = prior;\n continue;\n }\n changed = true;\n if (errors.length === 0) {\n try { await options.check(runId, entry.name, agentId, call.signal); }\n catch (error) {\n call.signal?.throwIfAborted();\n errors = errorLines(error);\n }\n }\n next.programs[entry.name] = { fingerprint, errors };\n }\n } catch (error) {\n call.signal?.throwIfAborted();\n const errors = errorLines(error);\n Object.assign(next.programs, previous.programs);\n next.programs[\"(Workspace)\"] = { fingerprint: fingerprintOf({ errors }), errors };\n }\n if (JSON.stringify(Object.keys(previous.programs).sort()) !== JSON.stringify(Object.keys(next.programs).sort())) changed = true;\n if (JSON.stringify(previous) !== JSON.stringify(next)) changed = true;\n call.signal?.throwIfAborted();\n remember(runId, agentId, next);\n if (!changed) return undefined;\n call.keep(next as unknown as JsonValue);\n const before = new Set(allErrors(previous));\n const after = new Set(allErrors(next));\n const added = [...after].filter((error) => !before.has(error));\n const resolved = [...before].filter((error) => !after.has(error));\n const changes = [...added.map((error) => `New: ${error}`), ...resolved.map((error) => `Fixed: ${error}`)];\n const lines = changes.slice(0, maxDeltaLines).map((line) => line.length > maxLineLength ? `${line.slice(0, maxLineLength - 3)}...` : line);\n const omitted = changes.length - lines.length;\n return [\n `Actor program project check (TypeScript and build): ${after.size} errors in ${Object.keys(next.programs).length} projects; ${added.length} new, ${resolved.length} fixed.`,\n ...lines,\n ...(omitted > 0 ? [`${omitted} more changes. Complete last state: actor_program_diagnostics.`] : []),\n ].join(\"\\n\");\n },\n };\n return {\n contribution,\n latest(runId: string, actorId: string, programName?: string): string {\n const snapshot = snapshots.get(runId)?.get(actorId);\n if (!snapshot) return \"No actor program project state checked for this agent yet.\";\n const programs = Object.entries(snapshot.programs).filter(([id]) => programName === undefined || id === programName);\n if (programs.length === 0) return programName ? `No checked project state for ${programName}.` : \"No actor program projects exist.\";\n return programs.sort(([left], [right]) => left.localeCompare(right)).map(([id, program]) =>\n [`${id}: ${program.errors.length} errors`, ...program.errors].join(\"\\n\")).join(\"\\n\\n\");\n },\n forget(runId: string): void { snapshots.delete(runId); },\n };\n};\n", "import type { AccessProjectionContribution, JsonValue } from \"@ragents/engine\";\nimport { ACTOR_INVOCATIONS_STATE_ID, ACTOR_PROGRAMS_STATE_ID } from \"@ragents/host/plugin-support/actor-programs/contract.js\";\n\nconst record = (value: JsonValue | undefined): Record<string, JsonValue | undefined> | undefined =>\n value !== null && typeof value === \"object\" && !Array.isArray(value) ? value : undefined;\n\n/** Without runs.inspect, only the name, actor, and views of a program remain; sources, functions, and directories are missing. */\nconst visibleProgram = (state: JsonValue): JsonValue => {\n const program = record(record(state)?.program);\n if (!program) return state;\n const views = Array.isArray(program.views) ? program.views.map((value) => {\n const view = record(value);\n return view ? { id: view.id, key: view.key, title: view.title, visible: view.visible, placements: view.placements } : value;\n }) : [];\n return {\n version: 1,\n program: {\n name: program.name,\n title: program.title,\n actorId: program.actorId,\n actorHandle: program.actorHandle,\n revision: program.revision,\n views,\n },\n };\n};\n\nexport const actorProgramAccessProjections: readonly AccessProjectionContribution[] = [\n { id: ACTOR_PROGRAMS_STATE_ID, state: (entry) => visibleProgram(entry.state), chatEvent: () => undefined },\n { id: ACTOR_INVOCATIONS_STATE_ID, state: (entry) => ({ version: 1, revision: entry.updatedAt }), chatEvent: () => undefined },\n];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["path", "runtimeProviderToken", "name", "selected", "realpath", "assertJsonValue", "runCapabilityContractHash", "available", "descriptor", "name", "failed", "record", "name", "name", "realpath", "program", "runCapabilityContractHash", "available", "selected", "occupied", "actor", "assertJsonValue", "defineRunFunction", "defineToolAvailability", "Type", "defineRunFunction", "defineToolAvailability", "toolDescriptorFrom", "defineToolAvailability", "metadata", "toolDescriptorFrom", "defineRunFunction", "Type", "readdir", "path", "projectSourceFiles", "errorLines", "ACTOR_INVOCATIONS_STATE_ID", "ACTOR_PROGRAMS_STATE_ID", "runtimeProviderToken", "name", "path"]
|
|
7
7
|
}
|