@schlenkr/ragents 0.1.5 → 0.1.7
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/README.md +18 -11
- package/apps/server/package.json +8 -6
- package/apps/server/src/access-projection.ts +3 -3
- package/apps/server/src/access-service.ts +19 -8
- package/apps/server/src/access-session.ts +6 -2
- package/apps/server/src/api/contracts.ts +19 -18
- package/apps/server/src/api/core-methods.ts +45 -26
- package/apps/server/src/api/delivery.ts +4 -4
- package/apps/server/src/api/reference.ts +1 -1
- package/apps/server/src/api/rights.ts +86 -7
- package/apps/server/src/chat-context.ts +1 -1
- package/apps/server/src/chat-handler.ts +16 -7
- package/apps/server/src/config-file.ts +25 -6
- package/apps/server/src/config.ts +10 -4
- package/apps/server/src/data-directory.ts +1 -1
- package/apps/server/src/folder-install.ts +115 -0
- package/apps/server/src/host-api.json +1257 -0
- package/apps/server/src/host-api.ts +190 -0
- package/apps/server/src/host-resolution-hooks.mjs +50 -1
- package/apps/server/src/host-resolution.ts +26 -1
- package/apps/server/src/host-version.ts +41 -0
- package/apps/server/src/host-web.ts +59 -0
- package/apps/server/src/layout.ts +0 -15
- package/apps/server/src/main.ts +3 -2
- package/apps/server/src/missing-environment.ts +47 -0
- package/apps/server/src/parent-watch.ts +37 -0
- package/apps/server/src/plugin-build/build.ts +650 -0
- package/apps/server/src/plugin-build/host-api-names.ts +185 -0
- package/apps/server/src/plugin-build/plugin-description.ts +118 -0
- package/apps/server/src/plugin-build/typecheck.ts +66 -0
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/app-project.ts +16 -15
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-compiler.ts +4 -4
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-contracts.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-runtime.ts +27 -0
- package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/contract.ts +3 -3
- package/apps/server/src/plugin-support/actor-programs/service.ts +1 -1
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/tailwind.ts +2 -3
- package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/index.ts +48 -48
- package/apps/server/src/plugin-support/agent-tool.ts +12 -8
- package/apps/server/src/plugin-support/http.ts +1 -1
- package/apps/server/src/plugin-support/language-server/contract.ts +37 -6
- package/apps/server/src/plugin-support/language-server/plugin.ts +18 -8
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +32 -7
- package/apps/server/src/plugin-support/language-server/tools.ts +59 -15
- package/apps/server/src/plugin-support/model-aliases.ts +77 -0
- package/apps/server/src/plugin-support/model-choice.ts +17 -7
- package/apps/server/src/plugin-support/model-completion.ts +58 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +2 -2
- package/apps/server/src/plugin-support/native-typescript-executor.ts +10 -7
- package/apps/server/src/plugin-support/plugin-config.ts +1 -1
- package/apps/server/src/plugin-support/plugin-folder.ts +4 -1
- package/apps/server/src/plugin-support/plugin-module.ts +1 -1
- package/apps/server/src/plugin-support/plugins-root.ts +6 -10
- package/apps/server/src/plugin-support/process-sandbox.ts +312 -0
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +14 -5
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -9
- package/{plugins/ragents.product/server/relay.ts → apps/server/src/plugin-support/product-relay.ts} +2 -2
- package/apps/server/src/plugin-support/product-start-options.ts +8 -3
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +6 -0
- package/apps/server/src/plugin-support/run-scripts.ts +16 -2
- package/apps/server/src/plugin-support/skills.ts +32 -16
- package/apps/server/src/plugin-support/start-entries-contract.ts +12 -3
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -1
- package/apps/server/src/plugin-support/thinking-level.ts +6 -1
- package/apps/server/src/plugin-support/tool-availability.ts +1 -7
- package/apps/server/src/plugin-support/workspace-ownership.ts +12 -6
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +184 -37
- package/apps/server/src/profile/bundle-manifest.ts +183 -0
- package/apps/server/src/profile/compose.ts +19 -10
- package/apps/server/src/profile/plugin-discovery.ts +98 -46
- package/apps/server/src/profile/provisioning.ts +30 -26
- package/apps/server/src/profile-target.ts +3 -0
- package/apps/server/src/provider.ts +212 -106
- package/apps/server/src/ragents/actor-chat-history.ts +24 -22
- package/apps/server/src/ragents/chat-projection.ts +25 -14
- package/apps/server/src/ragents/chat-text-positions.ts +4 -4
- package/apps/server/src/ragents/coordinator.ts +27 -1
- package/apps/server/src/ragents/document-store.ts +1 -1
- package/apps/server/src/ragents/engine.ts +68 -43
- package/apps/server/src/ragents/global-chat.ts +26 -13
- package/apps/server/src/ragents/host-services.ts +15 -6
- package/apps/server/src/ragents/journal-chat-events.ts +33 -15
- package/apps/server/src/ragents/product-runtime.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +18 -0
- package/apps/server/src/ragents/runtime-bridge.ts +1 -1
- package/apps/server/src/ragents/session.ts +184 -85
- package/apps/server/src/ragents/start-option-state.ts +1 -1
- package/apps/server/src/ragents/typescript-tools.ts +35 -27
- package/apps/server/src/ragents/workspace-runtime.ts +74 -8
- package/apps/server/src/rpc/dispatcher.ts +17 -8
- package/apps/server/src/rpc/http-transport.ts +1 -3
- package/apps/server/src/rpc/stdio-transport.ts +1 -1
- package/apps/server/src/run-preparation-contract.ts +1 -1
- package/apps/server/src/run-preparation-input.ts +1 -1
- package/apps/server/src/run-preparation.ts +18 -29
- package/apps/server/src/run-transfer.ts +66 -5
- package/apps/server/src/server.ts +112 -33
- package/apps/server/src/settings.ts +9 -12
- package/apps/server/src/title-compactor.ts +5 -8
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +79 -0
- package/apps/server/src/web-stylesheet.ts +85 -0
- package/apps/server/tsconfig.json +4 -4
- package/apps/server/tsconfig.plugin.json +58 -0
- package/apps/web/dist/assets/highlighted-body-KPVGNVTW-CFhTJEmH.js +1 -0
- package/apps/web/dist/assets/main-DlzW4t4c.js +6 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BPn4aV2r.css +1 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-kxkB991i.js +478 -0
- package/apps/web/dist/assets/runPanel-BJEFQ__w.js +21 -0
- package/apps/web/dist/help/guide-access.html +199 -0
- package/apps/web/dist/help/guide-access.md +84 -0
- package/apps/web/dist/help/guide-clients.html +430 -0
- package/apps/web/dist/help/guide-clients.md +346 -0
- package/apps/web/dist/help/guide-distributed.html +325 -0
- package/apps/web/dist/help/guide-distributed.md +230 -0
- package/apps/web/dist/help/guide-functions.html +231 -0
- package/apps/web/dist/help/guide-functions.md +127 -0
- package/apps/web/dist/help/guide-getting-started.html +230 -0
- package/apps/web/dist/help/guide-getting-started.md +123 -0
- package/apps/web/dist/help/guide-ideas.html +183 -0
- package/apps/web/dist/help/guide-ideas.md +71 -0
- package/apps/web/dist/help/guide-plugins.html +450 -0
- package/apps/web/dist/help/guide-plugins.md +341 -0
- package/apps/web/dist/help/guide-programs.html +359 -0
- package/apps/web/dist/help/guide-programs.md +271 -0
- package/apps/web/dist/help/guide-runtime.html +344 -0
- package/apps/web/dist/help/guide-runtime.md +232 -0
- package/apps/web/dist/help/guide.html +133 -0
- package/apps/web/dist/help/guide.md +13 -0
- package/apps/web/dist/help/homepage-bullets.js +12 -0
- package/apps/web/dist/help/homepage-distributed.js +261 -0
- package/apps/web/dist/help/homepage-plugins.js +30 -0
- package/apps/web/dist/help/homepage-scenes.js +368 -0
- package/apps/web/dist/help/homepage-stickers.js +69 -0
- package/apps/web/dist/help/homepage-story-nav.js +11 -0
- package/apps/web/dist/help/homepage-subnav.js +61 -0
- package/apps/web/dist/help/homepage.css +833 -0
- package/apps/web/dist/help/index.html +1167 -0
- package/apps/web/dist/help/mini-app.css +7076 -0
- package/apps/web/dist/help/mini-app.html +15 -0
- package/apps/web/dist/help/mini-app.js +131 -0
- package/apps/web/dist/help/screenshots/release-checklist-vscode.png +0 -0
- package/apps/web/dist/help/screenshots/release-checklist-web.png +0 -0
- package/apps/web/dist/help/scroll-vendor.js +73 -0
- package/apps/web/dist/help/site.css +63 -0
- package/apps/web/dist/help/site.js +103 -0
- package/apps/web/dist/host-web.json +143 -0
- package/apps/web/dist/index.html +15 -0
- package/apps/web/dist/run-panel.html +15 -0
- package/apps/web/package.json +2 -2
- package/apps/web/src/App.tsx +8 -6
- package/apps/web/src/Overview.tsx +5 -5
- package/apps/web/src/PluginActivation.ts +25 -5
- package/apps/web/src/PluginChat.tsx +163 -129
- package/apps/web/src/PluginFailureNotice.tsx +15 -0
- package/apps/web/src/PluginRegistry.tsx +106 -68
- package/apps/web/src/RunPreparationChat.tsx +40 -28
- package/apps/web/src/RunStore.ts +2 -2
- package/apps/web/src/SessionList.tsx +16 -8
- package/apps/web/src/SettingsModal.tsx +37 -37
- package/apps/web/src/StartOptions.tsx +81 -26
- package/apps/web/src/StartSelection.tsx +111 -0
- package/apps/web/src/StartTiles.tsx +73 -0
- package/apps/web/src/{CanvasShortcuts.tsx → SurfaceShortcuts.tsx} +2 -2
- package/apps/web/src/ThemeSettings.tsx +1 -1
- package/apps/web/src/WorkspacePanel.tsx +4 -4
- package/apps/web/src/access-session.ts +4 -1
- package/{plugins/ragents.orchestration/web → apps/web/src}/actor-conversation.ts +3 -3
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/DataTable.tsx +9 -9
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FilePicker.tsx +4 -4
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagram.tsx +16 -14
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagramRenderer.tsx +3 -3
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Form.tsx +12 -12
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Layout.tsx +1 -1
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/MessageList.tsx +5 -5
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Viewers.tsx +8 -7
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/chat-contracts.d.ts +64 -0
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/contracts.d.ts +2 -2
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-selection.ts +5 -5
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/index.tsx +22 -16
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/layout-contracts.d.ts +1 -1
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/message-list-contracts.d.ts +2 -2
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/workflow-diagram-contracts.d.ts +1 -1
- package/apps/web/src/api.ts +45 -22
- package/apps/web/src/chat/QuasselHost.tsx +12 -0
- package/apps/web/src/chat/StoppedActorNotice.tsx +39 -0
- package/apps/web/src/chat/chat-target.ts +14 -5
- package/apps/web/src/chat/requests.ts +13 -5
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat/useChat.ts +8 -7
- package/apps/web/src/chat/user-location.ts +1 -1
- package/apps/web/src/chat-view-settings.tsx +49 -0
- package/apps/web/src/host-modules.ts +90 -0
- package/apps/web/src/language-server/api.ts +24 -0
- package/{plugins/ragents.lsp-roslyn/web → apps/web/src/language-server}/language-server-plugin.tsx +133 -6
- package/apps/web/src/main.tsx +4 -2
- package/apps/web/src/offered-machines.ts +11 -0
- package/apps/web/src/panel/ConnectionsPage.tsx +117 -0
- package/apps/web/src/panel/LoginForm.tsx +9 -9
- package/apps/web/src/panel/PanelDialogs.tsx +44 -27
- package/apps/web/src/panel/PanelHeader.tsx +11 -0
- package/apps/web/src/panel/PanelPage.tsx +8 -5
- package/apps/web/src/panel/RunLine.tsx +50 -0
- package/apps/web/src/panel/RunsPage.tsx +84 -0
- package/apps/web/src/panel/StartPage.tsx +163 -0
- package/apps/web/src/panel/connection-state.ts +40 -0
- package/apps/web/src/panel/contract.ts +66 -21
- package/apps/web/src/panel/page-props.ts +6 -0
- package/apps/web/src/plugin-bootstrap.ts +60 -31
- package/{plugins/ragents.product/web → apps/web/src/product}/ModelControl.tsx +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/ProductModelSettings.tsx +7 -7
- package/{plugins/ragents.product/web → apps/web/src/product}/SystemPromptControl.tsx +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/model-settings.ts +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/start-options.tsx +2 -2
- package/apps/web/src/rpc/client.ts +28 -6
- package/apps/web/src/run-panel/RunPanelApp.tsx +334 -0
- package/apps/web/src/{column/ColumnRunHeader.tsx → run-panel/RunPanelHeader.tsx} +2 -2
- package/apps/web/src/{column/ColumnMenu.tsx → run-panel/RunPanelMenu.tsx} +4 -4
- package/apps/web/src/run-panel/RunPanelRail.tsx +38 -0
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +55 -0
- package/apps/web/src/{column → run-panel}/clipboard.ts +21 -10
- package/apps/web/src/run-panel/host-contract.ts +123 -0
- package/apps/web/src/{column → run-panel}/host.ts +31 -23
- package/apps/web/src/run-panel/input-bridge.ts +75 -0
- package/apps/web/src/run-panel/keyboard.ts +53 -0
- package/apps/web/src/run-panel/run-panel-location.ts +35 -0
- package/apps/web/src/{column → run-panel}/use-session-list.ts +3 -3
- package/apps/web/src/run-panel/workspace-state.ts +43 -0
- package/apps/web/src/{column.tsx → run-panel.tsx} +20 -13
- package/apps/web/src/run-preparation.ts +1 -1
- package/{plugins/ragents.orchestration/web → apps/web/src}/run-view.ts +25 -7
- package/apps/web/src/settings-contributions.ts +16 -18
- package/apps/web/src/title-model-settings.ts +1 -1
- package/apps/web/src/toolLine.ts +1 -1
- package/apps/web/src/ui/ListDetail.tsx +1 -1
- package/apps/web/src/ui/dialog.tsx +5 -5
- package/apps/web/src/ui/frame.css +1 -0
- package/apps/web/src/ui/index.ts +5 -0
- package/apps/web/src/ui/popover.tsx +2 -2
- package/apps/web/src/ui/quassel.css +41 -0
- package/apps/web/src/ui/relative-time.ts +36 -0
- package/apps/web/src/ui/startup-notice.tsx +22 -0
- package/apps/web/src/ui/state-icon.tsx +60 -0
- package/apps/web/src/ui/state-vocabulary.ts +31 -0
- package/apps/web/src/ui/stop-button.tsx +22 -0
- package/apps/web/src/ui/tailwind.css +2 -3
- package/apps/web/src/ui/theme.css +19 -19
- package/apps/web/tsconfig.json +4 -5
- package/apps/web/tsconfig.plugin.json +44 -0
- package/bundles/ragents.activity/ragents-bundle.json +38 -0
- package/bundles/ragents.activity/server/index.js +14 -0
- package/bundles/ragents.activity/server/index.js.map +7 -0
- package/bundles/ragents.activity/web/classes.json +1 -0
- package/bundles/ragents.activity/web/index.js +2 -0
- package/bundles/ragents.activity/web/index.js.map +7 -0
- package/bundles/ragents.actor-programs/prompt.hbs +80 -0
- package/bundles/ragents.actor-programs/ragents-bundle.json +214 -0
- package/bundles/ragents.actor-programs/server/index.js +2071 -0
- package/bundles/ragents.actor-programs/server/index.js.map +7 -0
- package/bundles/ragents.actor-programs/summary.hbs +17 -0
- package/bundles/ragents.actor-programs/web/classes.json +1 -0
- package/bundles/ragents.actor-programs/web/index.js +27 -0
- package/bundles/ragents.actor-programs/web/index.js.map +7 -0
- package/bundles/ragents.ask/ask.hbs +4 -0
- package/bundles/ragents.ask/ragents-bundle.json +97 -0
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js +13 -0
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +11 -0
- package/bundles/ragents.ask/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.ask/server/index.js +279 -0
- package/bundles/ragents.ask/server/index.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js +25 -0
- package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -0
- package/bundles/ragents.ask/web/exports/ask-payload.js +2 -0
- package/bundles/ragents.ask/web/exports/ask-payload.js.map +7 -0
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +2 -0
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js.map +7 -0
- package/bundles/ragents.ask/web/exports/web/api.js +2 -0
- package/bundles/ragents.ask/web/exports/web/api.js.map +7 -0
- package/bundles/ragents.ask/web/index.js +2 -0
- package/bundles/ragents.ask/web/index.js.map +7 -0
- package/bundles/ragents.browser/ragents-bundle.json +53 -0
- package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js +11 -0
- package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +7 -0
- package/bundles/ragents.browser/server/exports/server/contract.js +9 -0
- package/bundles/ragents.browser/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.browser/server/index.js +479 -0
- package/bundles/ragents.browser/server/index.js.map +7 -0
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +38 -0
- package/bundles/ragents.documents/prompt.hbs +18 -0
- package/bundles/ragents.documents/ragents-bundle.json +120 -0
- package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js +37 -0
- package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js.map +7 -0
- package/bundles/ragents.documents/server/exports/contract.js +11 -0
- package/bundles/ragents.documents/server/exports/contract.js.map +7 -0
- package/bundles/ragents.documents/server/index.js +290 -0
- package/bundles/ragents.documents/server/index.js.map +7 -0
- package/bundles/ragents.documents/web/classes.json +1 -0
- package/bundles/ragents.documents/web/index.js +26 -0
- package/bundles/ragents.documents/web/index.js.map +7 -0
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +49 -0
- package/bundles/ragents.lsp-fsharp/server/index.js +82 -0
- package/bundles/ragents.lsp-fsharp/server/index.js.map +7 -0
- package/bundles/ragents.lsp-fsharp/web/classes.json +1 -0
- package/bundles/ragents.lsp-fsharp/web/index.js +2 -0
- package/bundles/ragents.lsp-fsharp/web/index.js.map +7 -0
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +61 -0
- package/bundles/ragents.lsp-roslyn/server/index.js +208 -0
- package/bundles/ragents.lsp-roslyn/server/index.js.map +7 -0
- package/bundles/ragents.lsp-roslyn/web/classes.json +1 -0
- package/bundles/ragents.lsp-roslyn/web/index.js +2 -0
- package/bundles/ragents.lsp-roslyn/web/index.js.map +7 -0
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +36 -0
- package/bundles/ragents.lsp-typescript/server/index.js +13 -0
- package/bundles/ragents.lsp-typescript/server/index.js.map +7 -0
- package/bundles/ragents.lsp-typescript/web/classes.json +1 -0
- package/bundles/ragents.lsp-typescript/web/index.js +2 -0
- package/bundles/ragents.lsp-typescript/web/index.js.map +7 -0
- package/bundles/ragents.model-relay/ragents-bundle.json +33 -0
- package/bundles/ragents.model-relay/server/index.js +230 -0
- package/bundles/ragents.model-relay/server/index.js.map +7 -0
- package/bundles/ragents.orchestration/orchestration.hbs +106 -0
- package/bundles/ragents.orchestration/ragents-bundle.json +194 -0
- package/bundles/ragents.orchestration/server/index.js +277 -0
- package/bundles/ragents.orchestration/server/index.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +7 -0
- package/bundles/ragents.orchestration/web/classes.json +1 -0
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js.map +7 -0
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +7 -0
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +7 -0
- package/bundles/ragents.orchestration/web/index.js +51 -0
- package/bundles/ragents.orchestration/web/index.js.map +7 -0
- package/bundles/ragents.overseer/ragents-bundle.json +144 -0
- package/bundles/ragents.overseer/server/index.js +652 -0
- package/bundles/ragents.overseer/server/index.js.map +7 -0
- package/bundles/ragents.overseer/web/classes.json +1 -0
- package/bundles/ragents.overseer/web/index.js +25 -0
- package/bundles/ragents.overseer/web/index.js.map +7 -0
- package/bundles/ragents.processes/ragents-bundle.json +93 -0
- package/bundles/ragents.processes/server/index.js +204 -0
- package/bundles/ragents.processes/server/index.js.map +7 -0
- package/bundles/ragents.processes/web/classes.json +1 -0
- package/bundles/ragents.processes/web/index.js +4 -0
- package/bundles/ragents.processes/web/index.js.map +7 -0
- package/bundles/ragents.product/preamble.hbs +9 -0
- package/bundles/ragents.product/ragents-bundle.json +93 -0
- package/bundles/ragents.product/server/index.js +208 -0
- package/bundles/ragents.product/server/index.js.map +7 -0
- package/bundles/ragents.product/web/classes.json +1 -0
- package/bundles/ragents.product/web/index.js +2 -0
- package/bundles/ragents.product/web/index.js.map +7 -0
- package/bundles/ragents.profile-distribution/ragents-bundle.json +64 -0
- package/bundles/ragents.profile-distribution/server/index.js +241 -0
- package/bundles/ragents.profile-distribution/server/index.js.map +7 -0
- package/bundles/ragents.reference/ragents-bundle.json +39 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +27 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +10 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +80 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +82 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +154 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +32 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +59 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +13 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +81 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +34 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +24 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +10 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +5 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +27 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +137 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/state.ts +38 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +42 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +38 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +218 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +12 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +60 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +24 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +18 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +16 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +39 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +15 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/server.ts +14 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +13 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +65 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +42 -0
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +25 -0
- package/bundles/ragents.reference/run-scripts/word-game/package.json +11 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +27 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +23 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +105 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/state.ts +22 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/view.tsx +54 -0
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +252 -0
- package/bundles/ragents.reference/server/index.js +16 -0
- package/bundles/ragents.reference/server/index.js.map +7 -0
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +33 -0
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +33 -0
- package/bundles/ragents.reference/web/classes.json +1 -0
- package/bundles/ragents.reference/web/index.js +2 -0
- package/bundles/ragents.reference/web/index.js.map +7 -0
- package/bundles/ragents.todo/ragents-bundle.json +48 -0
- package/bundles/ragents.todo/server/index.js +108 -0
- package/bundles/ragents.todo/server/index.js.map +7 -0
- package/bundles/ragents.todo/web/classes.json +1 -0
- package/bundles/ragents.todo/web/index.js +2 -0
- package/bundles/ragents.todo/web/index.js.map +7 -0
- package/bundles/ragents.transcript/ragents-bundle.json +34 -0
- package/bundles/ragents.transcript/server/index.js +102 -0
- package/bundles/ragents.transcript/server/index.js.map +7 -0
- package/bundles/ragents.watch/ragents-bundle.json +39 -0
- package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js +11 -0
- package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js.map +7 -0
- package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js +10 -0
- package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js.map +7 -0
- package/bundles/ragents.watch/server/exports/contract.js +9 -0
- package/bundles/ragents.watch/server/exports/contract.js.map +7 -0
- package/bundles/ragents.watch/server/exports/server/contract.js +9 -0
- package/bundles/ragents.watch/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.watch/server/index.js +482 -0
- package/bundles/ragents.watch/server/index.js.map +7 -0
- package/bundles/ragents.workspace/prompt.hbs +7 -0
- package/bundles/ragents.workspace/ragents-bundle.json +148 -0
- package/bundles/ragents.workspace/server/index.js +1049 -0
- package/bundles/ragents.workspace/server/index.js.map +7 -0
- package/bundles/ragents.workspace/web/classes.json +1 -0
- package/bundles/ragents.workspace/web/index.js +39 -0
- package/bundles/ragents.workspace/web/index.js.map +7 -0
- package/package.json +4 -15
- package/packages/agent/dist/core/agent-settings.d.ts +27 -0
- package/packages/agent/dist/core/compaction/compaction.d.ts +82 -0
- package/packages/agent/dist/core/compaction/index.d.ts +6 -0
- package/packages/agent/dist/core/compaction/utils.d.ts +39 -0
- package/packages/agent/dist/core/context-log.d.ts +25 -0
- package/packages/agent/dist/core/messages.d.ts +30 -0
- package/packages/agent/dist/core/model-runtime.d.ts +32 -0
- package/packages/agent/dist/core/provider-composer.d.ts +25 -0
- package/packages/agent/dist/core/skills.d.ts +20 -0
- package/packages/agent/dist/core/tool-definition.d.ts +17 -0
- package/packages/agent/dist/core/tools/bash.d.ts +58 -0
- package/packages/agent/dist/core/tools/edit-diff.d.ts +98 -0
- package/packages/agent/dist/core/tools/edit.d.ts +41 -0
- package/packages/agent/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/packages/agent/dist/core/tools/index.d.ts +5 -0
- package/packages/agent/dist/core/tools/output-accumulator.d.ts +58 -0
- package/packages/agent/dist/core/tools/path-utils.d.ts +8 -0
- package/packages/agent/dist/core/tools/read.d.ts +33 -0
- package/packages/agent/dist/core/tools/truncate.d.ts +61 -0
- package/packages/agent/dist/core/tools/write.d.ts +23 -0
- package/packages/agent/dist/index.d.ts +12 -0
- package/packages/agent/dist/loop/agent-loop.d.ts +13 -0
- package/packages/agent/dist/loop/agent.d.ts +99 -0
- package/packages/agent/dist/loop/index.d.ts +5 -0
- package/packages/agent/dist/loop/types.d.ts +333 -0
- package/packages/agent/dist/loop/uuid.d.ts +2 -0
- package/packages/agent/dist/utils/child-process.d.ts +17 -0
- package/packages/agent/dist/utils/exif-orientation.d.ts +5 -0
- package/packages/agent/dist/utils/frontmatter.d.ts +8 -0
- package/packages/agent/dist/utils/image-convert.d.ts +2 -0
- package/packages/agent/dist/utils/image-process.d.ts +18 -0
- package/packages/agent/dist/utils/image-resize-core.d.ts +30 -0
- package/packages/agent/dist/utils/image-resize-worker.d.ts +2 -0
- package/packages/agent/dist/utils/image-resize.d.ts +16 -0
- package/packages/agent/dist/utils/mime.d.ts +3 -0
- package/packages/agent/dist/utils/paths.d.ts +15 -0
- package/packages/agent/dist/utils/photon.d.ts +21 -0
- package/packages/agent/dist/utils/shell.d.ts +17 -0
- package/packages/agent/dist/utils/sleep.d.ts +5 -0
- package/packages/agent/package.json +3 -32
- package/packages/agent/src/core/agent-settings.ts +20 -0
- package/packages/agent/src/core/compaction/compaction.ts +53 -208
- package/packages/agent/src/core/compaction/index.ts +0 -1
- package/packages/agent/src/core/compaction/utils.ts +2 -2
- package/packages/agent/src/core/context-log.ts +49 -0
- package/packages/agent/src/core/messages.ts +9 -119
- package/packages/agent/src/core/model-runtime.ts +109 -467
- package/packages/agent/src/core/provider-composer.ts +21 -451
- package/packages/agent/src/core/skills.ts +8 -440
- package/packages/agent/src/core/tool-definition.ts +29 -0
- package/packages/agent/src/core/tools/bash.ts +22 -41
- package/packages/agent/src/core/tools/edit-diff.ts +0 -60
- package/packages/agent/src/core/tools/edit.ts +4 -29
- package/packages/agent/src/core/tools/index.ts +4 -130
- package/packages/agent/src/core/tools/output-accumulator.ts +33 -5
- package/packages/agent/src/core/tools/path-utils.ts +2 -49
- package/packages/agent/src/core/tools/read.ts +6 -29
- package/packages/agent/src/core/tools/truncate.ts +0 -15
- package/packages/agent/src/core/tools/write.ts +2 -13
- package/packages/agent/src/index.ts +23 -270
- package/packages/{agent-core/src → agent/src/loop}/agent-loop.ts +128 -275
- package/packages/{agent-core/src → agent/src/loop}/agent.ts +20 -166
- package/packages/{agent-core/src → agent/src/loop}/types.ts +6 -105
- package/packages/agent/src/utils/child-process.ts +0 -13
- package/packages/agent/src/utils/image-convert.ts +0 -25
- package/packages/agent/src/utils/paths.ts +1 -71
- package/packages/agent/src/utils/shell.ts +13 -156
- package/packages/ai/dist/api/ai-sdk-messages.d.ts +9 -0
- package/packages/ai/dist/api/ai-sdk-transport.d.ts +13 -0
- package/packages/ai/dist/api/ai-sdk.d.ts +15 -0
- package/packages/ai/dist/api/ai-sdk.lazy.d.ts +3 -0
- package/packages/ai/dist/api/lazy.d.ts +15 -0
- package/packages/ai/dist/api/simple-options.d.ts +4 -0
- package/packages/ai/dist/api/transform-messages.d.ts +8 -0
- package/packages/ai/dist/api-registry.d.ts +25 -0
- package/packages/ai/dist/auth/context.d.ts +4 -0
- package/packages/ai/dist/auth/helpers.d.ts +4 -0
- package/packages/ai/dist/auth/resolve.d.ts +19 -0
- package/packages/ai/dist/auth/types.d.ts +51 -0
- package/packages/ai/dist/env-api-keys.d.ts +8 -0
- package/packages/ai/dist/index.d.ts +19 -0
- package/packages/ai/dist/models.d.ts +71 -0
- package/packages/ai/dist/models.generated.d.ts +8021 -0
- package/packages/ai/dist/providers/all.d.ts +15 -0
- package/packages/ai/dist/providers/faux.d.ts +97 -0
- package/packages/ai/dist/providers/openrouter.d.ts +3 -0
- package/packages/ai/dist/providers/openrouter.models.d.ts +8019 -0
- package/packages/ai/dist/types.d.ts +543 -0
- package/packages/ai/dist/utils/diagnostics.d.ts +13 -0
- package/packages/ai/dist/utils/error-body.d.ts +25 -0
- package/packages/ai/dist/utils/estimate.d.ts +17 -0
- package/packages/ai/dist/utils/event-stream.d.ts +21 -0
- package/packages/ai/dist/utils/headers.d.ts +2 -0
- package/packages/ai/dist/utils/json-parse.d.ts +16 -0
- package/packages/ai/dist/utils/overflow.d.ts +54 -0
- package/packages/ai/dist/utils/provider-env.d.ts +7 -0
- package/packages/ai/dist/utils/retry.d.ts +12 -0
- package/packages/ai/dist/utils/sanitize-unicode.d.ts +22 -0
- package/packages/ai/dist/utils/typebox-helpers.d.ts +17 -0
- package/packages/ai/dist/utils/validation.d.ts +10 -0
- package/packages/ai/package.json +2 -6
- package/packages/ai/src/api/ai-sdk-messages.ts +15 -10
- package/packages/ai/src/api/ai-sdk-transport.ts +2 -2
- package/packages/ai/src/api/ai-sdk.ts +11 -0
- package/packages/ai/src/api/simple-options.ts +0 -34
- package/packages/ai/src/api/transform-messages.ts +1 -1
- package/packages/ai/src/api-registry.ts +1 -12
- package/packages/ai/src/auth/context.ts +1 -30
- package/packages/ai/src/auth/helpers.ts +3 -34
- package/packages/ai/src/auth/resolve.ts +10 -108
- package/packages/ai/src/auth/types.ts +9 -176
- package/packages/ai/src/index.ts +1 -13
- package/packages/ai/src/models.ts +41 -407
- package/packages/ai/src/providers/all.ts +3 -31
- package/packages/ai/src/providers/openrouter.models.ts +14 -0
- package/packages/ai/src/types.ts +2 -104
- package/packages/ai/src/utils/diagnostics.ts +0 -32
- package/packages/ai/src/utils/headers.ts +0 -11
- package/packages/ai/src/utils/overflow.ts +0 -7
- package/packages/ai/src/utils/retry.ts +14 -0
- package/packages/ai/src/utils/validation.ts +0 -15
- package/packages/ragents/package.json +3 -6
- package/packages/ragents/src/access.ts +2 -1
- package/packages/ragents/src/agents/actor-input.ts +29 -18
- package/packages/ragents/src/agents/catalog.ts +3 -3
- package/packages/ragents/src/agents/model-context.ts +360 -0
- package/packages/ragents/src/agents/plugins.ts +0 -4
- package/packages/ragents/src/agents/scheduler.ts +233 -83
- package/packages/ragents/src/agents/schemas.ts +1 -36
- package/packages/ragents/src/agents/tool-orientation.ts +1 -1
- package/packages/ragents/src/agents/tools.ts +74 -75
- package/packages/ragents/src/agents/toolset.ts +51 -24
- package/packages/ragents/src/agents/turn.ts +2 -14
- package/packages/ragents/src/agents/workspaces.ts +12 -0
- package/packages/ragents/src/domain/actor-reference.ts +22 -0
- package/packages/ragents/src/domain/driver.ts +0 -9
- package/packages/ragents/src/domain/event-semantics.ts +111 -72
- package/packages/ragents/src/domain/event-validation.ts +188 -21
- package/packages/ragents/src/domain/events.ts +91 -7
- package/packages/ragents/src/domain/json.ts +2 -0
- package/packages/ragents/src/domain/model.ts +42 -18
- package/packages/ragents/src/domain/projection.ts +52 -15
- package/packages/ragents/src/domain/schema-errors.ts +3 -3
- package/packages/ragents/src/domain/tool-result-text.ts +9 -0
- package/packages/ragents/src/drivers/agent-hooks.ts +27 -0
- package/packages/ragents/src/drivers/agent-runtime.ts +137 -1020
- package/packages/ragents/src/drivers/agent-turn.ts +735 -0
- package/packages/ragents/src/drivers/agent.ts +13 -26
- package/packages/ragents/src/drivers/attachments.ts +4 -24
- package/packages/ragents/src/drivers/skill-preload.ts +56 -78
- package/packages/ragents/src/drivers/types.ts +39 -6
- package/packages/ragents/src/http/contracts.ts +16 -3
- package/packages/ragents/src/http/methods.ts +32 -33
- package/packages/ragents/src/index.ts +12 -21
- package/packages/ragents/src/plugin-host.ts +150 -105
- package/packages/ragents/src/plugin-types.ts +86 -23
- package/packages/ragents/src/rpc/peer.ts +6 -0
- package/packages/ragents/src/runtime/decisions/actions.ts +40 -37
- package/packages/ragents/src/runtime/decisions/actors.ts +100 -51
- package/packages/ragents/src/runtime/decisions/artifacts.ts +2 -2
- package/packages/ragents/src/runtime/decisions/inputs.ts +3 -3
- package/packages/ragents/src/runtime/decisions/subscriptions.ts +9 -7
- package/packages/ragents/src/runtime/decisions/turns.ts +101 -9
- package/packages/ragents/src/runtime/guards.ts +12 -21
- package/packages/ragents/src/runtime/journal-storage.ts +8 -3
- package/packages/ragents/src/runtime/journal.ts +36 -1
- package/packages/ragents/src/runtime/orchestration.ts +167 -19
- package/packages/ragents/src/runtime/serial-queue.ts +24 -0
- package/packages/ragents/src/runtime/stop.ts +19 -44
- package/packages/ragents/src/script/mediators.ts +4 -5
- package/packages/ragents/src/typescript/index.ts +2 -0
- package/packages/ragents/src/typescript/run-context.ts +10 -8
- package/packages/ragents/src/typescript/snippet.ts +7 -6
- package/packages/workspace-executor/package.json +2 -2
- package/packages/workspace-executor/src/bash-launch.ts +45 -0
- package/packages/workspace-executor/src/browser/contract.ts +71 -0
- package/packages/workspace-executor/src/browser/module.ts +74 -0
- package/packages/workspace-executor/src/browser/pages.ts +298 -0
- package/packages/workspace-executor/src/browser/playwright.ts +52 -0
- package/packages/workspace-executor/src/commands.ts +170 -0
- package/packages/workspace-executor/src/context.ts +34 -6
- package/packages/workspace-executor/src/errors.ts +12 -0
- package/packages/workspace-executor/src/executor.ts +62 -104
- package/packages/workspace-executor/src/files.ts +287 -0
- package/packages/workspace-executor/src/index.ts +82 -18
- package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +1 -0
- package/packages/workspace-executor/src/language-server/contract.ts +14 -0
- package/packages/workspace-executor/src/language-server/host.ts +82 -26
- package/packages/workspace-executor/src/language-server/module.ts +107 -0
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +90 -0
- package/packages/workspace-executor/src/managed-process.ts +1 -1
- package/packages/workspace-executor/src/module.ts +35 -0
- package/packages/workspace-executor/src/modules.ts +25 -0
- package/packages/workspace-executor/src/paths.ts +57 -5
- package/packages/workspace-executor/src/process-sandbox.ts +16 -0
- package/packages/workspace-executor/src/processes/module.ts +48 -0
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/process-table.ts +80 -57
- package/packages/workspace-executor/src/processes/scanner.ts +106 -0
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/snapshot.ts +23 -11
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/terminator.ts +19 -20
- package/packages/workspace-executor/src/run-folders.ts +33 -0
- package/packages/workspace-executor/src/safe-environment.ts +14 -0
- package/packages/workspace-executor/src/sandbox-tools.ts +212 -43
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/plugins/package.json +1 -1
- package/plugins/ragents.activity/ragents-plugin.json +3 -0
- package/plugins/ragents.activity/server/index.ts +2 -2
- package/plugins/ragents.activity/web/ActivityHeader.tsx +2 -2
- package/plugins/ragents.activity/web/activity.ts +1 -1
- package/plugins/ragents.activity/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/prompt.hbs +8 -7
- package/plugins/ragents.actor-programs/ragents-plugin.json +3 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +3 -3
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/capability-resolver.ts +1 -16
- package/plugins/ragents.actor-programs/server/controls-template.ts +5 -18
- package/plugins/ragents.actor-programs/server/controls-tool.ts +8 -11
- package/plugins/ragents.actor-programs/server/index.ts +10 -10
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/limits.ts +4 -4
- package/plugins/ragents.actor-programs/server/methods.ts +2 -2
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/operations.ts +2 -4
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +65 -70
- package/plugins/ragents.actor-programs/server/prompts.ts +4 -4
- package/plugins/ragents.actor-programs/server/routes.ts +14 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +132 -55
- package/plugins/ragents.actor-programs/server/templates.ts +35 -80
- package/plugins/ragents.actor-programs/server/test-report.ts +106 -0
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +4 -4
- package/plugins/ragents.actor-programs/summary.hbs +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +15 -10
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +47 -30
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +15 -17
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +3 -3
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +12 -3
- package/plugins/ragents.actor-programs/web/api.ts +5 -5
- package/plugins/ragents.actor-programs/web/bridge.ts +2 -3
- package/plugins/ragents.actor-programs/web/chat-state.ts +9 -8
- package/plugins/ragents.actor-programs/web/index.tsx +7 -17
- package/plugins/ragents.actor-programs/web/program-state.ts +3 -3
- package/plugins/ragents.actor-programs/web/state-revision.ts +2 -2
- package/plugins/ragents.ask/ask-payload.ts +25 -0
- package/plugins/ragents.ask/contract.ts +2 -2
- package/plugins/ragents.ask/ragents-plugin.json +7 -0
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +43 -19
- package/plugins/ragents.ask/server/ask-tool.ts +2 -2
- package/plugins/ragents.ask/server/contract.ts +9 -1
- package/plugins/ragents.ask/server/index.ts +8 -10
- package/plugins/ragents.ask/server/tool-contributor.ts +3 -3
- package/plugins/ragents.ask/web/AskActionView.tsx +36 -0
- package/{apps/web/src/chat → plugins/ragents.ask/web}/QuestionCard.tsx +7 -5
- package/plugins/ragents.ask/web/QuestionSection.tsx +22 -21
- package/plugins/ragents.ask/web/api.ts +1 -1
- package/plugins/ragents.ask/web/index.tsx +11 -8
- package/plugins/ragents.browser/provision.ts +9 -8
- package/plugins/ragents.browser/ragents-plugin.json +6 -0
- package/plugins/ragents.browser/server/browser.ts +165 -286
- package/plugins/ragents.browser/server/contract.ts +8 -19
- package/plugins/ragents.browser/server/index.ts +8 -7
- package/plugins/ragents.browser/server/tools.ts +29 -37
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +3 -1
- package/plugins/ragents.documents/contract.ts +4 -2
- package/plugins/ragents.documents/ragents-plugin.json +6 -0
- package/plugins/ragents.documents/server/config.ts +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +2 -2
- package/plugins/ragents.documents/server/files-route.ts +2 -3
- package/plugins/ragents.documents/server/index.ts +10 -11
- package/plugins/ragents.documents/server/show-document-tool.ts +2 -2
- package/plugins/ragents.documents/server/store.ts +3 -3
- package/plugins/ragents.documents/server/tool-contributor.ts +3 -3
- package/plugins/ragents.documents/web/DocumentViewer.tsx +5 -6
- package/plugins/ragents.documents/web/api.ts +1 -1
- package/plugins/ragents.documents/web/index.tsx +4 -4
- package/plugins/ragents.lsp-fsharp/provision.ts +2 -2
- package/plugins/ragents.lsp-fsharp/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-fsharp/server/index.ts +3 -3
- package/plugins/ragents.lsp-fsharp/web/index.tsx +1 -1
- package/plugins/ragents.lsp-roslyn/provision.ts +2 -2
- package/plugins/ragents.lsp-roslyn/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-roslyn/server/index.ts +47 -8
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +145 -0
- package/plugins/ragents.lsp-roslyn/web/index.tsx +1 -1
- package/plugins/ragents.lsp-typescript/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-typescript/server/index.ts +3 -3
- package/plugins/ragents.lsp-typescript/web/index.tsx +1 -1
- package/plugins/ragents.model-relay/ragents-plugin.json +3 -0
- package/plugins/ragents.model-relay/server/config.ts +5 -31
- package/plugins/ragents.model-relay/server/index.ts +5 -6
- package/plugins/ragents.model-relay/server/relay.ts +8 -9
- package/plugins/ragents.orchestration/contract.ts +13 -14
- package/plugins/ragents.orchestration/orchestration.hbs +4 -3
- package/plugins/ragents.orchestration/ragents-plugin.json +6 -0
- package/plugins/ragents.orchestration/server/index.ts +13 -16
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +4 -4
- package/plugins/ragents.orchestration/server/{canvas-tool.ts → surface-tool.ts} +42 -43
- package/plugins/ragents.orchestration/surface.hbs +34 -0
- package/plugins/ragents.orchestration/tiled-layout.ts +16 -16
- package/plugins/ragents.orchestration/web/ActorChat.tsx +16 -14
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +23 -26
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +5 -6
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +7 -5
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +16 -16
- package/plugins/ragents.orchestration/web/{ActorCanvasControls.tsx → ActorSurfaceControls.tsx} +23 -28
- package/plugins/ragents.orchestration/web/ActorTile.tsx +2 -2
- package/plugins/ragents.orchestration/web/Center.tsx +47 -55
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +4 -4
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +7 -7
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +24 -42
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +8 -8
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +5 -5
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/SurfaceStartup.tsx +8 -0
- package/plugins/ragents.orchestration/web/{CanvasTiles.tsx → SurfaceTiles.tsx} +18 -18
- package/plugins/ragents.orchestration/web/{TiledCanvas.tsx → TiledSurface.tsx} +22 -22
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/api.ts +4 -10
- package/plugins/ragents.orchestration/web/constants.ts +0 -1
- package/plugins/ragents.orchestration/web/executions.ts +3 -3
- package/plugins/ragents.orchestration/web/index.tsx +19 -124
- package/plugins/ragents.orchestration/web/program-slot.ts +14 -0
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +95 -0
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +109 -0
- package/plugins/ragents.orchestration/web/{column/RunColumn.tsx → run-panel/RunPanel.tsx} +211 -83
- package/plugins/ragents.orchestration/web/{column/ColumnSettings.tsx → run-panel/RunPanelSettings.tsx} +13 -13
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +165 -0
- package/plugins/ragents.orchestration/web/{column/column-actors.ts → run-panel/run-panel-actors.ts} +14 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +47 -0
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +30 -0
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +71 -0
- package/plugins/ragents.orchestration/web/{column → run-panel}/sheet-status.ts +4 -4
- package/plugins/ragents.orchestration/web/{canvas-stage.ts → surface-entities.ts} +2 -2
- package/plugins/ragents.orchestration/web/{canvas-startup.ts → surface-startup.ts} +7 -10
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +42 -0
- package/plugins/ragents.orchestration/web/tile-docking.ts +14 -14
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +26 -26
- package/plugins/ragents.overseer/contract.ts +20 -14
- package/plugins/ragents.overseer/ragents-plugin.json +3 -0
- package/plugins/ragents.overseer/server/api.ts +34 -23
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +3 -3
- package/plugins/ragents.overseer/server/coordinator.ts +19 -0
- package/plugins/ragents.overseer/server/index.ts +39 -27
- package/plugins/ragents.overseer/server/orientation.ts +4 -5
- package/plugins/ragents.overseer/server/quick-answer.ts +5 -4
- package/plugins/ragents.overseer/server/reset-method.ts +4 -3
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings-method.ts +1 -1
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +20 -19
- package/plugins/ragents.overseer/web/ModelSettings.tsx +4 -4
- package/plugins/ragents.overseer/web/chat-display.ts +1 -1
- package/plugins/ragents.overseer/web/index.tsx +51 -26
- 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/ragents-plugin.json +3 -0
- package/plugins/ragents.processes/server/index.ts +13 -19
- package/plugins/ragents.processes/server/methods.ts +18 -20
- package/plugins/ragents.processes/server/observer.ts +64 -104
- package/plugins/ragents.processes/server/run-processes.ts +24 -0
- package/plugins/ragents.processes/web/ProcessHeader.tsx +13 -16
- package/plugins/ragents.processes/web/index.tsx +2 -1
- package/plugins/ragents.processes/web/processes.ts +1 -1
- package/plugins/ragents.product/ragents-plugin.json +3 -0
- package/plugins/ragents.product/server/config.ts +12 -13
- package/plugins/ragents.product/server/index.ts +15 -16
- package/plugins/ragents.product/server/runtime.ts +2 -2
- package/plugins/ragents.product/web/index.tsx +3 -3
- package/plugins/ragents.profile-distribution/contract.ts +6 -9
- package/plugins/ragents.profile-distribution/ragents-plugin.json +3 -0
- package/plugins/ragents.profile-distribution/server/archive.ts +26 -51
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +9 -16
- package/plugins/ragents.reference/examples.ts +1 -1
- package/plugins/ragents.reference/ragents-plugin.json +3 -0
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/state.ts +2 -2
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +11 -11
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +15 -15
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +4 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +1 -1
- 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 +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +1 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/state.ts +6 -6
- package/plugins/ragents.reference/run-scripts/word-game/src/view.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +7 -8
- package/plugins/ragents.reference/server/index.ts +2 -2
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +2 -2
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +2 -2
- package/plugins/ragents.reference/walkthroughs.ts +19 -19
- package/plugins/ragents.reference/web/StartGuides.tsx +2 -2
- package/plugins/ragents.reference/web/index.tsx +1 -1
- package/plugins/ragents.todo/ragents-plugin.json +3 -0
- package/plugins/ragents.todo/server/index.ts +2 -2
- package/plugins/ragents.todo/server/todo-tool.ts +4 -5
- package/plugins/ragents.todo/server/tool-contributor.ts +2 -2
- package/plugins/ragents.todo/web/TodoSection.tsx +3 -3
- package/plugins/ragents.todo/web/index.ts +1 -1
- package/plugins/ragents.transcript/ragents-plugin.json +3 -0
- package/plugins/ragents.transcript/server/index.ts +4 -4
- package/plugins/ragents.transcript/server/transcript.ts +2 -3
- package/plugins/ragents.watch/ragents-plugin.json +6 -0
- package/plugins/ragents.watch/server/condition.ts +2 -2
- package/plugins/ragents.watch/server/contract.ts +1 -1
- package/plugins/ragents.watch/server/functions.ts +3 -3
- package/plugins/ragents.watch/server/index.ts +3 -3
- package/plugins/ragents.watch/server/observation.ts +6 -6
- package/plugins/ragents.watch/server/service.ts +5 -5
- package/plugins/ragents.workspace/client/workspace-client.ts +129 -58
- package/plugins/ragents.workspace/contract.ts +98 -35
- package/plugins/ragents.workspace/prompt.hbs +1 -8
- package/plugins/ragents.workspace/ragents-plugin.json +3 -0
- package/plugins/ragents.workspace/server/binding.ts +122 -39
- package/plugins/ragents.workspace/server/browse-route.ts +96 -103
- package/plugins/ragents.workspace/server/clients.ts +236 -68
- package/plugins/ragents.workspace/server/config.ts +30 -0
- package/plugins/ragents.workspace/server/index.ts +61 -26
- package/plugins/ragents.workspace/server/runtime.ts +271 -46
- package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/shell-platform.ts +3 -5
- package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/workspace-tool-naming.ts +7 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +11 -8
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +115 -61
- package/plugins/ragents.workspace/web/api.ts +1 -1
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +2 -7
- package/ragents.config.showcase.ts +2 -5
- package/scripts/agent/agent-cli.ts +265 -107
- package/scripts/agent/journal.ts +8 -4
- package/scripts/agent/turn-control.ts +19 -0
- package/scripts/package/build-package.ts +68 -13
- package/scripts/package/ragents.mjs +4 -2
- package/scripts/plugin/build-builtin-plugins.ts +52 -0
- package/scripts/plugin/plugin-cli.ts +99 -0
- package/scripts/provision/run-provision.ts +20 -18
- package/scripts/remote/connect.ts +75 -53
- package/scripts/remote/start.ts +2 -3
- package/scripts/workspace-client/run-workspace-client.ts +15 -9
- package/apps/server/agent-home/settings.json +0 -3
- package/apps/server/src/chat-attachments.ts +0 -52
- package/apps/server/src/chat-events.ts +0 -185
- package/apps/server/src/plugin-support/asset-path.ts +0 -4
- package/apps/server/src/profile/plugin-list.ts +0 -19
- package/apps/server/src/web-build.ts +0 -82
- package/apps/web/column.html +0 -12
- package/apps/web/index.html +0 -12
- package/apps/web/src/StartSurface.tsx +0 -161
- package/apps/web/src/chat/ChatInputToolbar.tsx +0 -488
- package/apps/web/src/chat/ChatMessages.tsx +0 -666
- package/apps/web/src/chat/ChatPanel.tsx +0 -61
- package/apps/web/src/chat/DetailModeSwitch.tsx +0 -58
- package/apps/web/src/chat/Markdown.tsx +0 -104
- package/apps/web/src/chat/StepPopover.tsx +0 -82
- package/apps/web/src/chat/WorkingScenes.tsx +0 -235
- package/apps/web/src/chat/attachments.ts +0 -53
- package/apps/web/src/chat/chat-scroll.ts +0 -41
- package/apps/web/src/chat/texts.ts +0 -61
- package/apps/web/src/chat/types.ts +0 -26
- package/apps/web/src/column/ColumnApp.tsx +0 -234
- package/apps/web/src/column/column-location.ts +0 -30
- package/apps/web/src/column/host-contract.ts +0 -93
- package/apps/web/src/panel/OverviewPage.tsx +0 -215
- package/apps/web/src/panel/SettingsPage.tsx +0 -98
- package/apps/web/src/panel/target-state.ts +0 -78
- package/apps/web/src/plugin-discovery.ts +0 -5
- package/apps/web/src/virtual-plugins.d.ts +0 -3
- package/apps/web/vite.config.ts +0 -140
- package/packages/agent/src/config.ts +0 -161
- package/packages/agent/src/core/agent-session-runtime.ts +0 -548
- package/packages/agent/src/core/agent-session-services.ts +0 -224
- package/packages/agent/src/core/agent-session.ts +0 -3357
- package/packages/agent/src/core/auth-guidance.ts +0 -18
- package/packages/agent/src/core/auth-storage.ts +0 -271
- package/packages/agent/src/core/bash-executor.ts +0 -156
- package/packages/agent/src/core/compaction/branch-summarization.ts +0 -372
- package/packages/agent/src/core/defaults.ts +0 -3
- package/packages/agent/src/core/diagnostics.ts +0 -15
- package/packages/agent/src/core/event-bus.ts +0 -33
- package/packages/agent/src/core/exec.ts +0 -107
- package/packages/agent/src/core/experimental.ts +0 -3
- package/packages/agent/src/core/extensions/index.ts +0 -149
- package/packages/agent/src/core/extensions/loader.ts +0 -709
- package/packages/agent/src/core/extensions/runner.ts +0 -1132
- package/packages/agent/src/core/extensions/types.ts +0 -1460
- package/packages/agent/src/core/extensions/wrapper.ts +0 -45
- package/packages/agent/src/core/footer-data-provider.ts +0 -388
- package/packages/agent/src/core/http-dispatcher.ts +0 -106
- package/packages/agent/src/core/index.ts +0 -78
- package/packages/agent/src/core/model-config.ts +0 -287
- package/packages/agent/src/core/model-registry.ts +0 -126
- package/packages/agent/src/core/model-resolver.ts +0 -675
- package/packages/agent/src/core/output-guard.ts +0 -108
- package/packages/agent/src/core/package-manager.ts +0 -2441
- package/packages/agent/src/core/prompt-templates.ts +0 -284
- package/packages/agent/src/core/resolve-config-value.ts +0 -287
- package/packages/agent/src/core/resource-loader.ts +0 -946
- package/packages/agent/src/core/runtime-credentials.ts +0 -48
- package/packages/agent/src/core/sdk.ts +0 -358
- package/packages/agent/src/core/session-cwd.ts +0 -59
- package/packages/agent/src/core/session-manager.ts +0 -1623
- package/packages/agent/src/core/settings-manager.ts +0 -1212
- package/packages/agent/src/core/slash-commands.ts +0 -41
- package/packages/agent/src/core/source-info.ts +0 -40
- package/packages/agent/src/core/system-prompt.ts +0 -147
- package/packages/agent/src/core/timings.ts +0 -50
- package/packages/agent/src/core/tools/tool-definition-wrapper.ts +0 -45
- package/packages/agent/src/core/trust-manager.ts +0 -244
- package/packages/agent/src/utils/ansi.ts +0 -60
- package/packages/agent/src/utils/fs-watch.ts +0 -30
- package/packages/agent/src/utils/git.ts +0 -226
- package/packages/agent/src/utils/json.ts +0 -6
- package/packages/agent/src/utils/tools-manager.ts +0 -63
- package/packages/agent-core/package.json +0 -32
- package/packages/ai/src/api/openrouter-images.lazy.ts +0 -10
- package/packages/ai/src/api/openrouter-images.ts +0 -98
- package/packages/ai/src/auth/credential-store.ts +0 -51
- package/packages/ai/src/compat/extension-oauth-types.ts +0 -45
- package/packages/ai/src/image-models.generated.ts +0 -533
- package/packages/ai/src/images-models.ts +0 -274
- package/packages/ai/src/models-store.ts +0 -38
- package/packages/ai/src/oauth.ts +0 -10
- package/packages/ai/src/providers/openrouter-images.ts +0 -14
- package/packages/ai/src/session-resources.ts +0 -24
- package/packages/ai/src/utils/abort-signals.ts +0 -41
- package/packages/ai/src/utils/deferred-tools.ts +0 -39
- package/packages/ai/src/utils/hash.ts +0 -13
- package/packages/ai/src/utils/node-http-proxy.ts +0 -112
- package/plugins/ragents.actor-programs/server/client-runtime.ts +0 -16
- package/plugins/ragents.ask/web/constants.ts +0 -1
- package/plugins/ragents.lsp-roslyn/web/api.ts +0 -10
- package/plugins/ragents.orchestration/web/CanvasStartup.tsx +0 -14
- package/plugins/ragents.orchestration/web/canvas-view-settings.ts +0 -42
- package/plugins/ragents.orchestration/web/column/AddresseeControl.tsx +0 -116
- package/plugins/ragents.orchestration/web/column/column-settings.ts +0 -47
- package/plugins/ragents.orchestration/web/column/column-state.ts +0 -68
- package/plugins/ragents.orchestration/web/contract.ts +0 -25
- package/plugins/ragents.product/model-settings-contract.ts +0 -10
- package/plugins/ragents.profile-distribution/server/web.ts +0 -24
- /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/authoring-contracts.ts +0 -0
- /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/runtime-libraries.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/prompt-reader.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram.css +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/form-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/frame-layout.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/table-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/viewer-contracts.d.ts +0 -0
- /package/{plugins/ragents.orchestration/canvas.hbs → bundles/ragents.orchestration/surface.hbs} +0 -0
- /package/packages/{agent-core/src → agent/src/loop}/index.ts +0 -0
- /package/packages/{agent-core/src → agent/src/loop}/uuid.ts +0 -0
|
@@ -1,33 +1,40 @@
|
|
|
1
|
-
import { realpath } from "node:fs/promises";
|
|
1
|
+
import { mkdir, realpath } from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import {
|
|
4
|
+
DomainError,
|
|
4
5
|
serviceToken,
|
|
5
6
|
type RunFunction,
|
|
6
7
|
type PluginContext,
|
|
7
8
|
type ToolContributor,
|
|
8
|
-
|
|
9
|
+
type ToolScope,
|
|
10
|
+
} from "@ragents/engine";
|
|
9
11
|
import {
|
|
10
12
|
createBashToolDefinition,
|
|
11
13
|
createEditToolDefinition,
|
|
12
14
|
createReadToolDefinition,
|
|
13
15
|
createWriteToolDefinition,
|
|
14
|
-
} from "@
|
|
16
|
+
} from "@ragents/agent";
|
|
15
17
|
import {
|
|
16
|
-
|
|
18
|
+
WorkspaceOperationError,
|
|
19
|
+
WorkspaceOperationExecutor,
|
|
17
20
|
resolvedWorkspacePath,
|
|
18
21
|
sandboxRunEnvironment,
|
|
19
|
-
|
|
22
|
+
workspaceExecutorModules,
|
|
20
23
|
workspaceProcessContext,
|
|
24
|
+
type AddressedRoots,
|
|
21
25
|
type ResolvedWorkspaceRoot,
|
|
22
26
|
type SandboxHomeEnvironment,
|
|
27
|
+
type SeenFile,
|
|
23
28
|
type SessionIdent,
|
|
24
29
|
type WorkspaceExecuteOptions,
|
|
25
30
|
type WorkspaceExecutor,
|
|
26
31
|
type WorkspaceProcessContext,
|
|
27
|
-
} from "@
|
|
32
|
+
} from "@ragents/workspace-executor";
|
|
28
33
|
import { hostRoot } from "../host-version.js";
|
|
29
|
-
import type { SessionWorkspace } from "../ragents/workspace-runtime.js";
|
|
30
|
-
import { agentToolFrom, toolDescriptorFrom, type AgentToolDefinition } from "./agent-tool.js";
|
|
34
|
+
import type { SandboxFolder, SessionWorkspace } from "../ragents/workspace-runtime.js";
|
|
35
|
+
import { agentToolFrom, textOf, toolDescriptorFrom, type AgentToolDefinition, type ToolOutput } from "./agent-tool.js";
|
|
36
|
+
import type { RunProcessSandboxes } from "./process-sandbox.js";
|
|
37
|
+
import { SKILLS_ALIAS, skillRootAlias } from "./skills.js";
|
|
31
38
|
import { alwaysAvailable } from "./tool-availability.js";
|
|
32
39
|
import { syncWorkspaceOwnership } from "./workspace-ownership.js";
|
|
33
40
|
|
|
@@ -39,13 +46,26 @@ export interface RegisteredWorkspaceRoot {
|
|
|
39
46
|
ownershipDirectoryFor?: (runId: string) => string | Promise<string>;
|
|
40
47
|
}
|
|
41
48
|
|
|
49
|
+
/** Eine Wurzel des Servers, wie ein Prompt sie nennt: ihr Alias, ob Werkzeuge darin schreiben dürfen, und die Variable, die sie in einer Bash auf dem Server nennt. */
|
|
50
|
+
export interface ServerRootDescription {
|
|
51
|
+
readonly alias: string;
|
|
52
|
+
readonly writable: boolean;
|
|
53
|
+
readonly environmentVariable?: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Der einzige Zugang der Plugins zum Arbeitsbereich eines Runs: eine Operation läuft beim Executor der Maschine, der die angesprochene Wurzel gehört. */
|
|
42
57
|
export interface SandboxServices {
|
|
43
|
-
|
|
58
|
+
execute: (runId: string, operation: string, input: unknown, options?: WorkspaceExecuteOptions) => Promise<unknown>;
|
|
59
|
+
/** Der Kontext für Arbeit, die auf dem Server läuft (TypeScript-Plattform, Actor-Programme); nie der Ordner eines Arbeitsplatzes. */
|
|
60
|
+
serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;
|
|
44
61
|
registerWorkspaceRoot: (root: RegisteredWorkspaceRoot) => void;
|
|
45
|
-
execute: (runId: string, tool: string, input: unknown, options?: WorkspaceExecuteOptions) => Promise<unknown>;
|
|
46
62
|
shutdown: (runId: string) => Promise<void>;
|
|
47
63
|
}
|
|
48
64
|
|
|
65
|
+
/** Ein fachlicher Fehler des Executors sieht beim Aufrufer aus wie jeder andere Fehler des Servers. */
|
|
66
|
+
export const withDomainCause = (error: unknown): unknown =>
|
|
67
|
+
error instanceof WorkspaceOperationError ? new DomainError(error.code, error.message, error.status) : error;
|
|
68
|
+
|
|
49
69
|
export const sandboxServicesToken = serviceToken<SandboxServices>("ragents.workspace.sandbox-services");
|
|
50
70
|
|
|
51
71
|
export interface WorkspaceSandboxHostOptions {
|
|
@@ -55,15 +75,21 @@ export interface WorkspaceSandboxHostOptions {
|
|
|
55
75
|
skillPaths: () => Promise<readonly string[]>;
|
|
56
76
|
homeFor: (runId: string) => Promise<SandboxHomeEnvironment>;
|
|
57
77
|
storageRootFor?: (runId: string) => string;
|
|
58
|
-
/** Der Executor
|
|
78
|
+
/** Der Executor eines Runs, der nicht auf dem Server arbeitet; ohne Antwort führt der Executor des Servers aus. */
|
|
59
79
|
executorFor?: (runId: string) => Promise<WorkspaceExecutor | undefined>;
|
|
80
|
+
/** Der eigene Ordner eines solchen Runs auf dem Server, für Arbeit, die dort läuft. */
|
|
81
|
+
serverDirectoryFor?: (runId: string) => Promise<string>;
|
|
82
|
+
/** Die Prozess-Sandbox, in der jeder Prozess des Executors dieses Servers startet; ohne sie laufen Prozesse ohne. */
|
|
83
|
+
processSandbox?: RunProcessSandboxes;
|
|
84
|
+
/** Die Bash des Executors dieses Servers; unter Windows Pflicht, sonst ohne Angabe die des Systems. */
|
|
85
|
+
bash?: string;
|
|
60
86
|
}
|
|
61
87
|
|
|
62
88
|
const sandboxDescriptions: Readonly<Record<string, string>> = {
|
|
63
89
|
read: "Read file contents or images within the run's allowed workspace roots.",
|
|
64
90
|
edit: "Apply exact text replacements to existing files within the run's writable workspace roots.",
|
|
65
91
|
write: "Create or overwrite files within the run's writable workspace roots.",
|
|
66
|
-
bash: "Execute shell commands in the run's workspace with sandbox restrictions.",
|
|
92
|
+
bash: "Execute shell commands in the run's workspace, or with cwd in one of its roots, with sandbox restrictions.",
|
|
67
93
|
};
|
|
68
94
|
|
|
69
95
|
const describeSandboxTool = (definition: AgentToolDefinition): AgentToolDefinition => {
|
|
@@ -82,24 +108,51 @@ const sandboxDescriptorDefinitions = [
|
|
|
82
108
|
const sandboxDescriptors = sandboxDescriptorDefinitions.map((definition) =>
|
|
83
109
|
toolDescriptorFrom(describeSandboxTool(definition), alwaysAvailable));
|
|
84
110
|
|
|
111
|
+
const fileToolNames = new Set(["read", "edit", "write"]);
|
|
112
|
+
|
|
85
113
|
interface StableRunParts {
|
|
86
114
|
ident?: SessionIdent;
|
|
87
115
|
home: SandboxHomeEnvironment;
|
|
88
116
|
readOnlyRoots: readonly ResolvedWorkspaceRoot[];
|
|
117
|
+
/** Der eigene Temp-Ordner des Runs in der Sandbox. */
|
|
118
|
+
temporary?: string;
|
|
89
119
|
}
|
|
90
120
|
|
|
91
|
-
|
|
121
|
+
const mixedRoots = (aliases: readonly string[]): DomainError => new DomainError(
|
|
122
|
+
"workspace-roots-mixed",
|
|
123
|
+
`Der Aufruf nennt ${aliases.join(", ")} auf dem Server und zugleich einen Pfad im Arbeitsbereich auf dem Arbeitsplatz; `
|
|
124
|
+
+ "ein Aufruf erreicht nur einen Rechner. Teile ihn in einen Aufruf je Rechner.",
|
|
125
|
+
400,
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
/** Die Ordner, die ein Arbeitsbereich der Prozess-Sandbox zusätzlich öffnet, getrennt nach Zugriff; ein relativer Pfad hätte auf dem Server keinen Ort. */
|
|
129
|
+
const sandboxFoldersWith = (folders: readonly SandboxFolder[], access: SandboxFolder["access"]): string[] =>
|
|
130
|
+
folders.filter((folder) => folder.access === access).map((folder) => {
|
|
131
|
+
if (!path.isAbsolute(folder.directory)) throw new Error(`Der Ordner ${folder.directory} für die Prozess-Sandbox muss absolut sein`);
|
|
132
|
+
return folder.directory;
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
/** Ein nur lesbarer Pfad, den es nicht gibt, ist keine Wurzel; ein fehlender Skill-Ordner darf keinen Run verhindern. */
|
|
136
|
+
const existingRoots = async (roots: readonly ResolvedWorkspaceRoot[]): Promise<ResolvedWorkspaceRoot[]> => {
|
|
137
|
+
const resolved = await Promise.all(roots.map((root) =>
|
|
138
|
+
realpath(root.directory).then((directory) => ({ ...root, directory }), () => undefined)));
|
|
139
|
+
return resolved.filter((root) => root !== undefined);
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
/** Der Executor des Servers mit den Wurzeln des Servers; eine Operation mit Alias läuft dort, jede andere beim Executor der Bindung des Runs. */
|
|
92
143
|
export class WorkspaceSandboxHost implements SandboxServices {
|
|
93
144
|
readonly #options: WorkspaceSandboxHostOptions;
|
|
94
145
|
readonly #workspaceRoots: RegisteredWorkspaceRoot[] = [];
|
|
95
|
-
readonly #local:
|
|
146
|
+
readonly #local: WorkspaceOperationExecutor;
|
|
96
147
|
readonly #stable = new Map<string, Promise<StableRunParts>>();
|
|
148
|
+
/** Je Run der Dateistand, den ein Modell zuletzt gesehen hat, nach Actor, Modellkontext und Pfad; nur im Speicher, ein Verlust verlangt höchstens ein neues read. */
|
|
149
|
+
readonly #seen = new Map<string, Map<string, SeenFile>>();
|
|
97
150
|
|
|
98
151
|
constructor(options: WorkspaceSandboxHostOptions) {
|
|
99
152
|
this.#options = options;
|
|
100
|
-
this.#local = new
|
|
101
|
-
contextFor: (runId) => this.
|
|
102
|
-
|
|
153
|
+
this.#local = new WorkspaceOperationExecutor({
|
|
154
|
+
contextFor: (runId) => this.serverProcessContextFor(runId),
|
|
155
|
+
modules: workspaceExecutorModules(),
|
|
103
156
|
});
|
|
104
157
|
}
|
|
105
158
|
|
|
@@ -107,8 +160,9 @@ export class WorkspaceSandboxHost implements SandboxServices {
|
|
|
107
160
|
if (!root.id.trim() || this.#workspaceRoots.some((entry) => entry.id === root.id)) {
|
|
108
161
|
throw new Error(`Arbeitsverzeichnis ${root.id} ist leer oder bereits registriert`);
|
|
109
162
|
}
|
|
110
|
-
if (root.alias && (!/^@[a-z][a-z0-9-]*$/.test(root.alias) ||
|
|
111
|
-
|
|
163
|
+
if (root.alias && (!/^@[a-z][a-z0-9-]*$/.test(root.alias) || root.alias === SKILLS_ALIAS
|
|
164
|
+
|| this.#workspaceRoots.some((entry) => entry.alias === root.alias))) {
|
|
165
|
+
throw new Error(`Arbeitsverzeichnis-Alias ${root.alias} ist ungültig, dem Host vorbehalten oder bereits registriert`);
|
|
112
166
|
}
|
|
113
167
|
if (root.environmentVariable && (!/^RAGENTS_[A-Z_]+_DIR$/.test(root.environmentVariable) || this.#workspaceRoots.some((entry) => entry.environmentVariable === root.environmentVariable))) {
|
|
114
168
|
throw new Error(`Arbeitsverzeichnis-Variable ${root.environmentVariable} ist ungültig oder bereits registriert`);
|
|
@@ -129,24 +183,71 @@ export class WorkspaceSandboxHost implements SandboxServices {
|
|
|
129
183
|
return roots.filter((root) => root !== undefined);
|
|
130
184
|
}
|
|
131
185
|
|
|
132
|
-
|
|
186
|
+
/** Die Wurzeln des Servers mit Alias, die ein Run neben seinem Arbeitsbereich erreicht: die registrierten und die Skill-Ordner. */
|
|
187
|
+
async serverRoots(): Promise<readonly ServerRootDescription[]> {
|
|
188
|
+
const registered = this.#workspaceRoots.flatMap(({ alias, environmentVariable }) => alias === undefined ? [] : [{
|
|
189
|
+
alias, writable: true, ...(environmentVariable === undefined ? {} : { environmentVariable }),
|
|
190
|
+
}]);
|
|
191
|
+
const skills = (await this.#options.skillPaths()).length > 0 ? [{ alias: SKILLS_ALIAS, writable: false }] : [];
|
|
192
|
+
return [...registered, ...skills];
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** Bei einem Run mit eigenem Executor ein Ordner des Runs auf dem Server, sonst derselbe Kontext wie für seine Werkzeuge. */
|
|
196
|
+
async serverProcessContextFor(runId: string): Promise<WorkspaceProcessContext> {
|
|
197
|
+
if (!await this.#options.executorFor?.(runId)) return this.#contextFor(runId);
|
|
198
|
+
const serverDirectoryFor = this.#options.serverDirectoryFor;
|
|
199
|
+
if (!serverDirectoryFor) throw new Error(`Der Run ${runId} arbeitet nicht auf dem Server, und der Sandbox-Host kennt keinen Serverordner für ihn`);
|
|
200
|
+
return this.#contextFor(runId, await serverDirectoryFor(runId));
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/** Der Kontext des Executors dieses Servers; ohne eigenen Ordner der Arbeitsbereich selbst, der dafür auf dem Server liegen muss. */
|
|
204
|
+
async #contextFor(runId: string, serverDirectory?: string): Promise<WorkspaceProcessContext> {
|
|
133
205
|
const workspace = await this.#options.workspaceFor(runId);
|
|
134
|
-
const { ident, home, readOnlyRoots } = await this.#stableParts(runId, workspace);
|
|
206
|
+
const { ident, home, readOnlyRoots, temporary } = await this.#stableParts(runId, workspace);
|
|
207
|
+
const root = serverDirectory ?? await workspace.currentRoot();
|
|
208
|
+
const additionalRoots = await this.#additionalRoots(runId, ident);
|
|
209
|
+
const folders = workspace.sandboxFolders ?? [];
|
|
210
|
+
const sandbox = this.#options.processSandbox && temporary !== undefined
|
|
211
|
+
? this.#options.processSandbox.forRun({
|
|
212
|
+
writable: [
|
|
213
|
+
root, ...additionalRoots.map((entry) => entry.directory), home.home, ...home.nugetPackages ? [home.nugetPackages] : [],
|
|
214
|
+
...sandboxFoldersWith(folders, "write"),
|
|
215
|
+
],
|
|
216
|
+
readable: [
|
|
217
|
+
...readOnlyRoots.map((entry) => entry.directory), ...this.#options.storageRootFor ? [this.#options.storageRootFor(runId)] : [],
|
|
218
|
+
...sandboxFoldersWith(folders, "read"),
|
|
219
|
+
],
|
|
220
|
+
temporary,
|
|
221
|
+
})
|
|
222
|
+
: undefined;
|
|
135
223
|
return workspaceProcessContext({
|
|
136
224
|
runId,
|
|
137
|
-
cwd: workspace.cwd,
|
|
138
|
-
root
|
|
225
|
+
cwd: serverDirectory ?? workspace.cwd,
|
|
226
|
+
root,
|
|
139
227
|
home,
|
|
140
228
|
logDirectory: home.home,
|
|
141
229
|
hostRoot: hostRoot(),
|
|
142
230
|
...(ident ? { ident } : {}),
|
|
143
|
-
additionalRoots
|
|
231
|
+
additionalRoots,
|
|
144
232
|
readOnlyRoots,
|
|
145
233
|
additions: sandboxRunEnvironment(runId, workspace),
|
|
146
234
|
runOperation: workspace.runOperation,
|
|
235
|
+
...(sandbox ? { sandbox } : {}),
|
|
236
|
+
...(this.#options.bash === undefined ? {} : { bash: this.#options.bash }),
|
|
147
237
|
});
|
|
148
238
|
}
|
|
149
239
|
|
|
240
|
+
/** Der Temp-Ordner eines Runs liegt in seiner Ablage, damit er mit dem Run verschwindet und kein anderer Run ihn sieht. */
|
|
241
|
+
async #temporaryFor(runId: string, ident: SessionIdent | undefined): Promise<string | undefined> {
|
|
242
|
+
if (!this.#options.processSandbox) return undefined;
|
|
243
|
+
const storageRoot = this.#options.storageRootFor?.(runId);
|
|
244
|
+
if (!storageRoot) throw new Error(`Die Prozess-Sandbox braucht die Ablage des Runs ${runId} für seinen Temp-Ordner`);
|
|
245
|
+
const directory = path.join(storageRoot, "tmp");
|
|
246
|
+
await mkdir(directory, { recursive: true });
|
|
247
|
+
if (ident) await syncWorkspaceOwnership(directory, { ...ident, storageRoot });
|
|
248
|
+
return realpath(directory);
|
|
249
|
+
}
|
|
250
|
+
|
|
150
251
|
/** Kennung, Heimatordner und nur lesbare Wurzeln stehen je Run fest; nur sie werden gemerkt. */
|
|
151
252
|
#stableParts(runId: string, workspace: SessionWorkspace): Promise<StableRunParts> {
|
|
152
253
|
const known = this.#stable.get(runId);
|
|
@@ -161,17 +262,27 @@ export class WorkspaceSandboxHost implements SandboxServices {
|
|
|
161
262
|
|
|
162
263
|
async #resolveStableParts(runId: string, workspace: SessionWorkspace): Promise<StableRunParts> {
|
|
163
264
|
if (workspace.hostSandbox) {
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
return {
|
|
265
|
+
const { home, ident } = workspace.hostSandbox;
|
|
266
|
+
const temporary = await this.#temporaryFor(runId, ident);
|
|
267
|
+
return {
|
|
268
|
+
...(ident ? { ident } : {}),
|
|
269
|
+
home: { home },
|
|
270
|
+
readOnlyRoots: await existingRoots(workspace.hostSandbox.readOnlyRoots),
|
|
271
|
+
...(temporary ? { temporary } : {}),
|
|
272
|
+
};
|
|
167
273
|
}
|
|
168
274
|
const [ident, home, skills] = await Promise.all([
|
|
169
275
|
this.#options.identFor(runId),
|
|
170
276
|
this.#options.homeFor(runId),
|
|
171
277
|
this.#options.skillPaths(),
|
|
172
278
|
]);
|
|
173
|
-
const
|
|
174
|
-
return {
|
|
279
|
+
const temporary = await this.#temporaryFor(runId, ident);
|
|
280
|
+
return {
|
|
281
|
+
...(ident ? { ident } : {}),
|
|
282
|
+
home,
|
|
283
|
+
readOnlyRoots: await existingRoots(skills.map((directory) => ({ directory, alias: skillRootAlias(path.basename(directory)) }))),
|
|
284
|
+
...(temporary ? { temporary } : {}),
|
|
285
|
+
};
|
|
175
286
|
}
|
|
176
287
|
|
|
177
288
|
workspaceTools(): ToolContributor {
|
|
@@ -182,23 +293,40 @@ export class WorkspaceSandboxHost implements SandboxServices {
|
|
|
182
293
|
};
|
|
183
294
|
}
|
|
184
295
|
|
|
185
|
-
|
|
186
|
-
|
|
296
|
+
/** Die Laufzeit, die eine Eingabe selbst verlangt, gilt, wenn der Aufrufer keine nennt; sie verlängert nur das Warten auf einen entfernten Executor. */
|
|
297
|
+
async execute(runId: string, operation: string, input: unknown, options: WorkspaceExecuteOptions = {}): Promise<unknown> {
|
|
298
|
+
try {
|
|
299
|
+
const { roots, durationMs } = this.#local.footprintOf(operation, input);
|
|
300
|
+
const executor = await this.#executorFor(runId, roots);
|
|
301
|
+
const timed = options.durationMs === undefined && durationMs !== undefined ? { ...options, durationMs } : options;
|
|
302
|
+
return await executor.execute(runId, operation, input, timed);
|
|
303
|
+
} catch (error) {
|
|
304
|
+
throw withDomainCause(error);
|
|
305
|
+
}
|
|
187
306
|
}
|
|
188
307
|
|
|
189
|
-
/**
|
|
308
|
+
/** Auch ein Run mit eigenem Executor hat auf dem Server markierte Prozesse der TypeScript-Plattform; beide Executoren räumen ab. */
|
|
190
309
|
async shutdown(runId: string): Promise<void> {
|
|
191
310
|
this.#stable.delete(runId);
|
|
192
|
-
|
|
311
|
+
this.#seen.delete(runId);
|
|
312
|
+
const remote = await this.#options.executorFor?.(runId);
|
|
313
|
+
const results = await Promise.allSettled([this.#local.stopRun(runId), ...(remote ? [remote.stopRun(runId)] : [])]);
|
|
314
|
+
const failed = results.find((result): result is PromiseRejectedResult => result.status === "rejected");
|
|
315
|
+
if (failed) throw failed.reason;
|
|
193
316
|
}
|
|
194
317
|
|
|
195
318
|
shutdownAll(): Promise<void> {
|
|
196
319
|
this.#stable.clear();
|
|
320
|
+
this.#seen.clear();
|
|
197
321
|
return this.#local.shutdown();
|
|
198
322
|
}
|
|
199
323
|
|
|
200
|
-
|
|
201
|
-
|
|
324
|
+
/** Aliasse nennen Wurzeln des Servers, jeder andere Pfad die Wurzel des Runs auf der Maschine seiner Bindung; ohne Alias entscheidet die Bindung. */
|
|
325
|
+
async #executorFor(runId: string, { aliases, runRoot }: AddressedRoots): Promise<WorkspaceExecutor> {
|
|
326
|
+
const bound = await this.#options.executorFor?.(runId);
|
|
327
|
+
if (!bound || aliases.length === 0) return bound ?? this.#local;
|
|
328
|
+
if (runRoot) throw mixedRoots(aliases);
|
|
329
|
+
return this.#local;
|
|
202
330
|
}
|
|
203
331
|
|
|
204
332
|
#workspaceToolsFor(context: PluginContext): Promise<RunFunction[]> {
|
|
@@ -207,9 +335,28 @@ export class WorkspaceSandboxHost implements SandboxServices {
|
|
|
207
335
|
const proxy = {
|
|
208
336
|
...described,
|
|
209
337
|
execute: (toolCallId: string, params: unknown, signal: AbortSignal | undefined) =>
|
|
210
|
-
this.execute(context.runId, described.name, params, {
|
|
338
|
+
this.execute(context.runId, described.name, params, {
|
|
339
|
+
toolCallId,
|
|
340
|
+
...(signal ? { signal } : {}),
|
|
341
|
+
}),
|
|
211
342
|
} as AgentToolDefinition;
|
|
212
|
-
|
|
343
|
+
const tool = agentToolFrom(proxy, alwaysAvailable, described.name === "bash" ? "sequential" : "parallel");
|
|
344
|
+
return fileToolNames.has(described.name)
|
|
345
|
+
? { ...tool, run: (scope: ToolScope, toolCallId: string, input: never) => this.#fileToolCall(context.runId, described.name, scope, toolCallId, input) }
|
|
346
|
+
: tool;
|
|
213
347
|
}));
|
|
214
348
|
}
|
|
349
|
+
|
|
350
|
+
/** Ein direkter Aufruf des Modells gibt den Stand mit, den es von der Datei gesehen hat, und merkt sich den neuen; ein Aufruf aus TypeScript arbeitet ohne. */
|
|
351
|
+
async #fileToolCall(runId: string, name: string, scope: ToolScope, toolCallId: string, input: { path: string }): Promise<string> {
|
|
352
|
+
const options = { toolCallId, ...(scope.signal ? { signal: scope.signal } : {}) };
|
|
353
|
+
if (scope.modelContext === undefined) return textOf(await this.execute(runId, name, input, options) as ToolOutput);
|
|
354
|
+
const known = this.#seen.get(runId) ?? new Map<string, SeenFile>();
|
|
355
|
+
const key = [scope.caller.actorId, scope.modelContext, path.posix.normalize(input.path)].join("\0");
|
|
356
|
+
const result = await this.execute(runId, name, { ...input, seen: known.get(key) ?? null }, options) as ToolOutput & { details?: { seen?: SeenFile } };
|
|
357
|
+
const seen = result.details?.seen;
|
|
358
|
+
if (!seen) throw new Error(`Der Executor meldet nach ${name} keinen Dateistand; Server und Arbeitsplatz brauchen denselben Executor-Stand`);
|
|
359
|
+
this.#seen.set(runId, known.set(key, seen));
|
|
360
|
+
return textOf(result);
|
|
361
|
+
}
|
|
215
362
|
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { ragentsDataRoot } from "../data-directory.js";
|
|
5
|
+
import { filesBelow } from "../folder-install.js";
|
|
6
|
+
import { HOST_API_VERSION, type HostApiHalf } from "../host-api.js";
|
|
7
|
+
import { hostRoot, type HostApiRecord } from "../host-version.js";
|
|
8
|
+
import { isCheckout } from "../host-web.js";
|
|
9
|
+
import { bundlesRoot, pluginIdOf } from "../plugin-support/plugins-root.js";
|
|
10
|
+
|
|
11
|
+
export const BUNDLE_MANIFEST_FILE = "ragents-bundle.json";
|
|
12
|
+
export const BUNDLE_FORMAT = 3;
|
|
13
|
+
|
|
14
|
+
/** The value names a half imports from each module of the host API. */
|
|
15
|
+
export type HostNames = Readonly<Record<string, readonly string[]>>;
|
|
16
|
+
|
|
17
|
+
/** The one entry point of a bundle, written by the build tool and never by hand. */
|
|
18
|
+
export interface BundleManifest {
|
|
19
|
+
readonly format: typeof BUNDLE_FORMAT;
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly api: number;
|
|
22
|
+
/** The names of the host API the bundle uses, per half; a host that lacks one refuses the bundle. */
|
|
23
|
+
readonly hostNames: Readonly<Record<HostApiHalf, HostNames>>;
|
|
24
|
+
/** A hash over every file of the bundle; copies and the build tool check it. */
|
|
25
|
+
readonly stand: string;
|
|
26
|
+
/** A hash over the source folder and the host inputs of the build; a checkout compares it with its built-in plugins. */
|
|
27
|
+
readonly sourceStand: string;
|
|
28
|
+
readonly server: string;
|
|
29
|
+
readonly web?: { readonly entry: string; readonly css?: string; readonly classes: string };
|
|
30
|
+
readonly exports: Readonly<Record<HostApiHalf, Readonly<Record<string, string>>>>;
|
|
31
|
+
readonly uses: readonly string[];
|
|
32
|
+
readonly assets: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const MANIFEST_KEYS = new Set(["format", "id", "api", "hostNames", "stand", "sourceStand", "server", "web", "exports", "uses", "assets"]);
|
|
36
|
+
const SOURCE_MARKERS = ["ragents-plugin.json", "server/index.ts", "server/index.tsx"];
|
|
37
|
+
|
|
38
|
+
const isRecord = (value: unknown): value is Record<string, unknown> =>
|
|
39
|
+
typeof value === "object" && value !== null && !Array.isArray(value);
|
|
40
|
+
|
|
41
|
+
const isStringList = (value: unknown): value is readonly string[] =>
|
|
42
|
+
Array.isArray(value) && value.every((entry) => typeof entry === "string");
|
|
43
|
+
|
|
44
|
+
const isPathRecord = (value: unknown): value is Readonly<Record<string, string>> =>
|
|
45
|
+
isRecord(value) && Object.values(value).every((entry) => typeof entry === "string");
|
|
46
|
+
|
|
47
|
+
const isHostNames = (value: unknown): boolean =>
|
|
48
|
+
isRecord(value) && [value.server, value.web].every((half) => isRecord(half) && Object.values(half).every(isStringList));
|
|
49
|
+
|
|
50
|
+
const isWeb = (value: unknown): boolean =>
|
|
51
|
+
value === undefined || (isRecord(value) && typeof value.entry === "string" && typeof value.classes === "string"
|
|
52
|
+
&& (value.css === undefined || typeof value.css === "string"));
|
|
53
|
+
|
|
54
|
+
const realFolder = (folder: string): string | undefined =>
|
|
55
|
+
existsSync(folder) ? realpathSync.native(folder) : undefined;
|
|
56
|
+
|
|
57
|
+
/** A built-in bundle lies directly in the host's bundles folder; everything else comes from its author. */
|
|
58
|
+
export const isBuiltInBundle = (folder: string, bundles = bundlesRoot): boolean => {
|
|
59
|
+
const root = realFolder(bundles);
|
|
60
|
+
return root !== undefined && path.dirname(realFolder(folder) ?? path.resolve(folder)) === root;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/** A bundle that ragents connect fetched lies below the remote folder of the data root; the server holds its sources. */
|
|
64
|
+
export const isFetchedBundle = (folder: string, dataRoot = ragentsDataRoot()): boolean =>
|
|
65
|
+
path.resolve(folder).startsWith(path.join(dataRoot, "remote") + path.sep);
|
|
66
|
+
|
|
67
|
+
/** How the author, or for a fetched bundle its user, gets a bundle that fits this host again. */
|
|
68
|
+
export const rebuildHint = (folder: string): string => {
|
|
69
|
+
if (isBuiltInBundle(folder)) return "im Checkout mit pnpm build:plugins neu bauen";
|
|
70
|
+
if (isFetchedBundle(folder)) return "der Stand kommt von einem Server: mit ragents connect <server-url> neu holen, connect nennt die passende Host-Fassung";
|
|
71
|
+
return "mit ragents plugin build <quellordner> neu bauen";
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const SKIPPED_SOURCE_ENTRIES = new Set(["node_modules", ".DS_Store"]);
|
|
75
|
+
|
|
76
|
+
const sourceFiles = (folder: string, skipped: ReadonlySet<string>, prefix = ""): readonly string[] =>
|
|
77
|
+
readdirSync(folder, { withFileTypes: true })
|
|
78
|
+
.filter((entry) => !SKIPPED_SOURCE_ENTRIES.has(entry.name) && !skipped.has(path.join(folder, entry.name)))
|
|
79
|
+
.sort((left, right) => left.name.localeCompare(right.name, "en"))
|
|
80
|
+
.flatMap((entry) => {
|
|
81
|
+
const relative = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
82
|
+
if (entry.isDirectory()) return sourceFiles(path.join(folder, entry.name), skipped, relative);
|
|
83
|
+
return entry.isFile() ? [relative] : [];
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const fileDigest = (file: string): string => createHash("sha256").update(readFileSync(file)).digest("hex");
|
|
87
|
+
|
|
88
|
+
/** Host files that shape every bundle besides its sources: the build tool, the host API and the versions of the bundled libraries. */
|
|
89
|
+
const buildInputsOf = (root: string): readonly string[] => [
|
|
90
|
+
"apps/server/src/host-api.ts",
|
|
91
|
+
"apps/server/src/host-api.json",
|
|
92
|
+
"apps/server/src/plugin-build/build.ts",
|
|
93
|
+
"apps/server/src/plugin-build/plugin-description.ts",
|
|
94
|
+
isCheckout(root) ? "pnpm-lock.yaml" : "package.json",
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
/** A hash over every file of a plugin source folder except dependencies and the given output folders, together with the build inputs of the host. */
|
|
98
|
+
export const sourceStandOf = (folder: string, skipped: readonly string[] = [], root = hostRoot()): string => {
|
|
99
|
+
const hash = createHash("sha256");
|
|
100
|
+
for (const relative of sourceFiles(folder, new Set(skipped))) hash.update(`${relative}\0${fileDigest(path.join(folder, relative))}\n`);
|
|
101
|
+
for (const input of buildInputsOf(root)) hash.update(`host:${input}\0${fileDigest(path.join(root, input))}\n`);
|
|
102
|
+
return hash.digest("hex");
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/** A hash over every file of the bundle except its manifest and what Finder leaves behind, stable across machines. */
|
|
106
|
+
export const bundleStand = (folder: string): string => {
|
|
107
|
+
const hash = createHash("sha256");
|
|
108
|
+
const files = filesBelow(folder).filter((name) => name !== BUNDLE_MANIFEST_FILE && path.posix.basename(name) !== ".DS_Store");
|
|
109
|
+
for (const relative of files) hash.update(`${relative}\0${fileDigest(path.join(folder, relative))}\n`);
|
|
110
|
+
return hash.digest("hex");
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/** A copy of a bundle, from a package or an archive, must carry exactly the files it was built with. */
|
|
114
|
+
export const assertBundleStand = (folder: string, manifest: Pick<BundleManifest, "id" | "stand">): void => {
|
|
115
|
+
if (bundleStand(folder) !== manifest.stand) {
|
|
116
|
+
throw new Error(`Das Bundle ${manifest.id} in ${folder} hat nicht mehr die Dateien, mit denen es gebaut wurde (stand); ${rebuildHint(folder)}`);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/** What a bundle needs from the host API that this host does not offer, one line per module. */
|
|
121
|
+
const missingHostNames = (manifest: Pick<BundleManifest, "hostNames">, record: HostApiRecord): readonly string[] =>
|
|
122
|
+
(["server", "web"] as const).flatMap((half) => Object.entries(manifest.hostNames[half]).flatMap(([specifier, names]) => {
|
|
123
|
+
const offered = record[half][specifier];
|
|
124
|
+
if (!offered) return [`${half} ${specifier}`];
|
|
125
|
+
const missing = names.filter((name) => !offered.includes(name));
|
|
126
|
+
return missing.length > 0 ? [`${half} ${specifier}: ${missing.join(", ")}`] : [];
|
|
127
|
+
}));
|
|
128
|
+
|
|
129
|
+
/** A bundle built against a newer host of the same number may use names this host lacks; that is a start error with its cause, never undefined at run time. */
|
|
130
|
+
export const assertHostNames = (folder: string, manifest: Pick<BundleManifest, "id" | "hostNames">, record: HostApiRecord): void => {
|
|
131
|
+
const missing = missingHostNames(manifest, record);
|
|
132
|
+
if (missing.length === 0) return;
|
|
133
|
+
throw new Error(`Das Bundle ${manifest.id} braucht aus der Host-API ${record.version} Namen, die dieser Host nicht anbietet (${missing.join("; ")}); `
|
|
134
|
+
+ `es ist gegen einen neueren Host gebaut: den Host aktualisieren, sonst ${rebuildHint(folder)}`);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/** Reads and checks the manifest; format and host API must match this host exactly. */
|
|
138
|
+
export const readBundleManifest = (folder: string): BundleManifest => {
|
|
139
|
+
const file = path.join(folder, BUNDLE_MANIFEST_FILE);
|
|
140
|
+
if (!statSync(file, { throwIfNoEntry: false })?.isFile()) {
|
|
141
|
+
if (SOURCE_MARKERS.some((marker) => existsSync(path.join(folder, marker)))) {
|
|
142
|
+
throw new Error(`${folder} ist ein Quellordner, kein Bundle: mit ragents plugin build ${folder} bauen und im Profil den Bundle-Ordner nennen`);
|
|
143
|
+
}
|
|
144
|
+
throw new Error(`${folder} ist kein Bundle: ${BUNDLE_MANIFEST_FILE} fehlt`);
|
|
145
|
+
}
|
|
146
|
+
const id = pluginIdOf(folder);
|
|
147
|
+
const raw = ((): unknown => {
|
|
148
|
+
try {
|
|
149
|
+
return JSON.parse(readFileSync(file, "utf8"));
|
|
150
|
+
} catch (cause) {
|
|
151
|
+
throw new Error(`${file} ist kein gültiges JSON: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
152
|
+
}
|
|
153
|
+
})();
|
|
154
|
+
if (!isRecord(raw)) throw new Error(`${file} muss ein Objekt enthalten`);
|
|
155
|
+
if (raw.format !== BUNDLE_FORMAT) {
|
|
156
|
+
throw new Error(`Das Bundle ${id} hat das Format ${String(raw.format)}, dieser Host liest Format ${BUNDLE_FORMAT}; ${rebuildHint(folder)}`);
|
|
157
|
+
}
|
|
158
|
+
if (raw.id !== id) throw new Error(`Das Bundle in ${folder} meldet die Kennung ${String(raw.id)}; die Kennung ist der Ordnername ${id}`);
|
|
159
|
+
if (raw.api !== HOST_API_VERSION) {
|
|
160
|
+
throw new Error(`Das Bundle ${id} ist für Host-API ${String(raw.api)} gebaut, dieser Host bietet ${HOST_API_VERSION}; ${rebuildHint(folder)}`);
|
|
161
|
+
}
|
|
162
|
+
const unknown = Object.keys(raw).filter((key) => !MANIFEST_KEYS.has(key));
|
|
163
|
+
if (unknown.length > 0) throw new Error(`${file}: unbekannte Felder ${unknown.join(", ")}; ${rebuildHint(folder)}`);
|
|
164
|
+
const malformed = [
|
|
165
|
+
...(isHostNames(raw.hostNames) ? [] : ["hostNames"]),
|
|
166
|
+
...(typeof raw.stand === "string" ? [] : ["stand"]),
|
|
167
|
+
...(typeof raw.sourceStand === "string" ? [] : ["sourceStand"]),
|
|
168
|
+
...(typeof raw.server === "string" ? [] : ["server"]),
|
|
169
|
+
...(isWeb(raw.web) ? [] : ["web"]),
|
|
170
|
+
...(isRecord(raw.exports) && isPathRecord(raw.exports.server) && isPathRecord(raw.exports.web) ? [] : ["exports"]),
|
|
171
|
+
...(isStringList(raw.uses) ? [] : ["uses"]),
|
|
172
|
+
...(isStringList(raw.assets) ? [] : ["assets"]),
|
|
173
|
+
];
|
|
174
|
+
if (malformed.length > 0) throw new Error(`${file}: ${malformed.join(", ")} fehlt oder hat die falsche Form; ${rebuildHint(folder)}`);
|
|
175
|
+
const web = raw.web as BundleManifest["web"];
|
|
176
|
+
const webFiles = web === undefined ? [] : [web.entry, web.classes, ...(web.css === undefined ? [] : [web.css])];
|
|
177
|
+
const misplaced = webFiles.filter((entry) => !entry.startsWith("web/") || entry.split("/").includes(".."));
|
|
178
|
+
if (misplaced.length > 0) throw new Error(`${file}: ${misplaced.join(", ")} liegt nicht unter web/; ${rebuildHint(folder)}`);
|
|
179
|
+
for (const required of [raw.server as string, ...webFiles]) {
|
|
180
|
+
if (!statSync(path.join(folder, required), { throwIfNoEntry: false })?.isFile()) throw new Error(`Dem Bundle ${id} fehlt ${required}; ${rebuildHint(folder)}`);
|
|
181
|
+
}
|
|
182
|
+
return raw as unknown as BundleManifest;
|
|
183
|
+
};
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import { PluginHost } from "@
|
|
1
|
+
import { PluginHost, type PluginWebAddresses } from "@ragents/engine";
|
|
2
2
|
import { config, HOST_SECRET_ENV_NAMES } from "../config.js";
|
|
3
3
|
import { SESSION_MODE, SESSIONS_MODE } from "../layout.js";
|
|
4
4
|
import { withFolderAssets } from "../plugin-support/plugin-folder.js";
|
|
5
|
-
import { pluginFolder, webEntryOf } from "../plugin-support/plugins-root.js";
|
|
6
5
|
import type { PluginModule } from "../plugin-support/plugin-module.js";
|
|
7
|
-
import {
|
|
6
|
+
import { runManagementToken } from "../ragents/global-chat.js";
|
|
8
7
|
import { registerTypeScriptFunctions } from "../ragents/typescript-tools.js";
|
|
9
8
|
import {
|
|
9
|
+
hostAddressToken,
|
|
10
10
|
runtimeProviderToken,
|
|
11
11
|
secretEnvNamesToken,
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
runGuardToken,
|
|
13
|
+
runWorkspaceProviderToken,
|
|
14
|
+
workspaceGuardToken,
|
|
14
15
|
type HostBridges,
|
|
15
16
|
} from "../ragents/host-services.js";
|
|
16
17
|
|
|
@@ -24,6 +25,10 @@ export interface ProfileComposition {
|
|
|
24
25
|
readonly product: ProductDescriptor;
|
|
25
26
|
readonly pluginIds: readonly string[];
|
|
26
27
|
readonly modules: ReadonlyMap<string, PluginModule>;
|
|
28
|
+
/** The plugins with a web half and where the browser loads it; the web loads exactly these. */
|
|
29
|
+
readonly web: ReadonlyMap<string, PluginWebAddresses>;
|
|
30
|
+
/** Die Vorlage aus defaultStartEntry der Profildatei; der Host lehnt eine nicht registrierte beim Versiegeln ab. */
|
|
31
|
+
readonly defaultStartEntry?: string;
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
export const composeProfile = (options: ProfileComposition, bridges: HostBridges): PluginHost => {
|
|
@@ -31,11 +36,14 @@ export const composeProfile = (options: ProfileComposition, bridges: HostBridges
|
|
|
31
36
|
product: options.product,
|
|
32
37
|
dataDirectory: config.dataDir,
|
|
33
38
|
storageModes: { sessionsRoot: SESSIONS_MODE, session: SESSION_MODE },
|
|
39
|
+
...(options.defaultStartEntry !== undefined ? { defaultStartEntry: options.defaultStartEntry } : {}),
|
|
34
40
|
});
|
|
35
|
-
host.provideHost(
|
|
36
|
-
host.provideHost(
|
|
41
|
+
host.provideHost(runGuardToken, bridges.ensureSession);
|
|
42
|
+
host.provideHost(workspaceGuardToken, bridges.ensureWorkspaceAccess);
|
|
43
|
+
host.provideHost(runWorkspaceProviderToken, bridges.sessionWorkspaceFor);
|
|
37
44
|
host.provideHost(runtimeProviderToken, bridges.runtime);
|
|
38
|
-
host.provideHost(
|
|
45
|
+
host.provideHost(hostAddressToken, () => bridges.apiBaseUrl);
|
|
46
|
+
host.provideHost(runManagementToken, () => {
|
|
39
47
|
if (!bridges.sessions) throw new Error("Der Host stellt keine Sitzungsverwaltung bereit");
|
|
40
48
|
return bridges.sessions();
|
|
41
49
|
});
|
|
@@ -52,13 +60,14 @@ export const composeProfile = (options: ProfileComposition, bridges: HostBridges
|
|
|
52
60
|
throw new Error(`Plugin ${id} deklariert requires im Manifest; es gehört in den Modulvertrag`);
|
|
53
61
|
}
|
|
54
62
|
if (plugin.manifest.web !== undefined) {
|
|
55
|
-
throw new Error(`Plugin ${id} deklariert web im Manifest; das ergibt sich aus dem
|
|
63
|
+
throw new Error(`Plugin ${id} deklariert web im Manifest; das ergibt sich aus dem Bundle`);
|
|
56
64
|
}
|
|
65
|
+
const web = options.web.get(id);
|
|
57
66
|
host.register(withFolderAssets({
|
|
58
67
|
...plugin,
|
|
59
68
|
manifest: {
|
|
60
69
|
...plugin.manifest,
|
|
61
|
-
web:
|
|
70
|
+
...(web ? { web } : {}),
|
|
62
71
|
...(module.requires ? { requires: module.requires } : {}),
|
|
63
72
|
},
|
|
64
73
|
}));
|