@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,15 +1,15 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { existsSync } from "node:fs";
|
|
3
|
+
import { existsSync, statSync } from "node:fs";
|
|
4
4
|
import { chmod, mkdir, open, readFile, readdir, realpath, rename, rm } from "node:fs/promises";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import type { ChatSessionLike, ChatSessionProvider, SessionInfo } from "./chat-handler.js";
|
|
7
|
-
import { DomainError, isRunId, unrestrictedAccess, type AccessContext, type HttpRouteContribution, type MethodContribution, type PluginHost, type ServiceToken } from "@
|
|
8
|
-
import { WORKSPACE_EXECUTOR_VERSION } from "@
|
|
9
|
-
import type
|
|
6
|
+
import type { ChatSessionLike, ChatSessionProvider, RunListScope, SessionInfo } from "./chat-handler.js";
|
|
7
|
+
import { DomainError, isRunId, unrestrictedAccess, type AccessContext, type HttpRouteContribution, type Journal, type JournalLoadFailure, type MethodContribution, type PluginHost, type ServiceToken, type SessionStartedContext } from "@ragents/engine";
|
|
8
|
+
import { WORKSPACE_EXECUTOR_VERSION } from "@ragents/workspace-executor";
|
|
9
|
+
import { assertRunRights, assertRunWorkspaceAccess, runIdInPath, runListScope, runReachable, type GlobalRunPolicy, type RunAccessPolicy } from "./api/rights.js";
|
|
10
10
|
import { configuredAnonymousUser, configuredUsers } from "./config-file.js";
|
|
11
11
|
import { accessibleRunView } from "./access-projection.js";
|
|
12
|
-
import {
|
|
12
|
+
import { coordinatorAccessToken } from "./access-service.js";
|
|
13
13
|
import { config } from "./config.js";
|
|
14
14
|
import { layout, ROOT_ONLY_MODE, SESSION_MODE, SESSIONS_MODE } from "./layout.js";
|
|
15
15
|
import { readHostPackage, readHostVersion } from "./host-version.js";
|
|
@@ -17,6 +17,8 @@ import {
|
|
|
17
17
|
assertRunIdFree,
|
|
18
18
|
assertRunStopped,
|
|
19
19
|
assertWorkspaceReplacement,
|
|
20
|
+
contentHashesOf,
|
|
21
|
+
installContents,
|
|
20
22
|
installSessionDirectory,
|
|
21
23
|
packRunArchive,
|
|
22
24
|
runTransferStagingDirectory,
|
|
@@ -28,17 +30,19 @@ import {
|
|
|
28
30
|
type RunTransferPlaces,
|
|
29
31
|
} from "./run-transfer.js";
|
|
30
32
|
import type { StartOptionState } from "./plugin-support/start-options-contract.js";
|
|
33
|
+
import { ALIAS_PROVIDER, validatedModelAliases } from "./plugin-support/model-aliases.js";
|
|
31
34
|
import { runScriptFromDirectory } from "./plugin-support/run-scripts.js";
|
|
32
35
|
import { createEngine, SessionWorkspaces, type Engine } from "./ragents/engine.js";
|
|
33
36
|
import type { ProductProfileFactory } from "./ragents/host-services.js";
|
|
34
37
|
import { actorProgramsToken } from "./plugin-support/actor-programs/service.js";
|
|
35
38
|
import { productRuntimeToken } from "./ragents/product-runtime.js";
|
|
39
|
+
import { runOwnerOf, runOwnerOnly } from "./ragents/run-owner.js";
|
|
36
40
|
import { RunChatSession } from "./ragents/session.js";
|
|
37
|
-
import { globalChatToken, type ManagedRunStart, type
|
|
41
|
+
import { globalChatToken, globalRunPolicyOf, type GlobalChatPolicy, type ManagedRunStart, type RunManagement } from "./ragents/global-chat.js";
|
|
38
42
|
import { workspaceRuntimeToken, type SessionWorkspace, type WorkspaceTransfer } from "./ragents/workspace-runtime.js";
|
|
39
43
|
import { settingsResponse, skillDetailResponse, type SettingsResponse, type SettingsSkillDetail } from "./settings.js";
|
|
40
44
|
import { createTitleCompactor } from "./title-compactor.js";
|
|
41
|
-
import { ModelRuntime } from "@
|
|
45
|
+
import { ModelRuntime } from "@ragents/agent";
|
|
42
46
|
import { TitleSettingsStore } from "./title-settings.js";
|
|
43
47
|
import { sandboxServicesToken } from "./plugin-support/workspace-sandbox-host.js";
|
|
44
48
|
import { parseRunPreparationRequest, prepareRunMessage } from "./run-preparation.js";
|
|
@@ -50,12 +54,23 @@ const hostVersionOf = (): string => readHostPackage()?.hostVersion ?? readHostVe
|
|
|
50
54
|
/** accepted: the delete intent is durable and the run is hidden; done: the cleanup job has finished. */
|
|
51
55
|
interface DeleteJob { accepted: Promise<void>; done: Promise<void> }
|
|
52
56
|
|
|
57
|
+
type ListedSession = SessionInfo & {
|
|
58
|
+
running: boolean;
|
|
59
|
+
/** Ob der Aufrufer den Arbeitsbereich des Runs erreicht; Oberflächen blenden sonst aus, was ihn braucht. */
|
|
60
|
+
workspaceAccessible: boolean;
|
|
61
|
+
metadata?: Readonly<Record<string, unknown>>;
|
|
62
|
+
metadataUnavailable?: Readonly<Record<string, string>>;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/** Die Run-Liste wird oft abgefragt; so lange wartet sie höchstens auf einen Metadaten-Beitrag. */
|
|
66
|
+
export const SESSION_METADATA_TIMEOUT_MS = 1_500;
|
|
67
|
+
|
|
53
68
|
export class RunSessionProvider implements ChatSessionProvider {
|
|
54
69
|
private readonly sessions = new Map<string, RunChatSession>();
|
|
55
70
|
private readonly deleting = new Map<string, DeleteJob>();
|
|
56
71
|
private readonly deleteRequested = new Set<string>();
|
|
57
72
|
private readonly deleted = new Set<string>();
|
|
58
|
-
private readonly workspaces = new SessionWorkspaces();
|
|
73
|
+
private readonly workspaces = new SessionWorkspaces(() => this.plugins.service(sandboxServicesToken));
|
|
59
74
|
private readonly sessionWorkspaces = new Map<string, Promise<SessionWorkspace>>();
|
|
60
75
|
private modelRuntime: Promise<ModelRuntime> | undefined;
|
|
61
76
|
private readonly runPreparations = new Map<string, { controller: AbortController; done: Promise<RunPreparationResponse> }>();
|
|
@@ -63,7 +78,6 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
63
78
|
private readonly listListeners = new Set<() => void>();
|
|
64
79
|
private readonly titleCompactor = createTitleCompactor({
|
|
65
80
|
selection: () => this.requireTitleSettings().selection(),
|
|
66
|
-
agentHomeDir: config.agentHomeDir,
|
|
67
81
|
sessionsDir: layout.sessionsDir,
|
|
68
82
|
modelRuntime: () => this.getModelRuntime(),
|
|
69
83
|
onTitle: () => this.notifyList(),
|
|
@@ -72,23 +86,31 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
72
86
|
readonly plugins: PluginHost;
|
|
73
87
|
private shutdownPromise: Promise<void> | undefined;
|
|
74
88
|
private engine: Engine | undefined;
|
|
75
|
-
private
|
|
76
|
-
private
|
|
89
|
+
private readonly globalResets = new Map<string, Promise<void>>();
|
|
90
|
+
private readonly globalResetsRequested = new Set<string>();
|
|
77
91
|
private transferring = false;
|
|
92
|
+
/** Die Adresse, unter der dieser Server seine API anbietet; ohne HTTP (nur stdio) keine. */
|
|
93
|
+
private readonly apiBaseUrl: string | undefined;
|
|
78
94
|
|
|
79
|
-
constructor(profileFactory: ProductProfileFactory) {
|
|
95
|
+
constructor(profileFactory: ProductProfileFactory, apiBaseUrl: string | undefined) {
|
|
96
|
+
this.apiBaseUrl = apiBaseUrl;
|
|
80
97
|
this.plugins = profileFactory({
|
|
81
98
|
ensureSession: (runId) => this.ensureUsable(runId),
|
|
99
|
+
ensureWorkspaceAccess: (access, runId) => {
|
|
100
|
+
this.ensureUsable(runId);
|
|
101
|
+
assertRunWorkspaceAccess(access, runId, this.runAccess());
|
|
102
|
+
},
|
|
82
103
|
runtime: () => this.requireEngine().runtime,
|
|
83
104
|
sessionWorkspaceFor: (runId) => this.sessionWorkspace(runId, () => {}),
|
|
84
105
|
sessions: () => this.sessionManagement(),
|
|
106
|
+
...(apiBaseUrl === undefined ? {} : { apiBaseUrl }),
|
|
85
107
|
});
|
|
86
108
|
}
|
|
87
109
|
|
|
88
110
|
private requireContract(token: ServiceToken<unknown>): void {
|
|
89
111
|
if (this.plugins.optionalService(token) !== undefined) return;
|
|
90
112
|
throw new Error(
|
|
91
|
-
`Das
|
|
113
|
+
`Das Profil stellt den Pflichtvertrag ${token.id} nicht bereit. `
|
|
92
114
|
+ "Ein Produkt-Plugin muss ihn mit host.provide(...) registrieren.",
|
|
93
115
|
);
|
|
94
116
|
}
|
|
@@ -119,11 +141,16 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
119
141
|
this.requireContract(productRuntimeToken);
|
|
120
142
|
this.requireContract(workspaceRuntimeToken);
|
|
121
143
|
const globalChat = this.plugins.optionalService(globalChatToken);
|
|
122
|
-
if (globalChat?.
|
|
123
|
-
await
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
144
|
+
if (globalChat?.resetIntentDirectory && existsSync(globalChat.resetIntentDirectory)) {
|
|
145
|
+
for (const entry of await readdir(globalChat.resetIntentDirectory)) {
|
|
146
|
+
if (!entry.endsWith(".json")) continue;
|
|
147
|
+
const intentFile = path.join(globalChat.resetIntentDirectory, entry);
|
|
148
|
+
const runId = entry.slice(0, -5);
|
|
149
|
+
await this.validateGlobalResetIntent(intentFile, runId);
|
|
150
|
+
await this.removeGlobalConversation(runId);
|
|
151
|
+
await rm(intentFile);
|
|
152
|
+
await this.syncDirectory(globalChat.resetIntentDirectory);
|
|
153
|
+
}
|
|
127
154
|
}
|
|
128
155
|
this.engine = await createEngine({
|
|
129
156
|
plugins: this.plugins,
|
|
@@ -131,16 +158,16 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
131
158
|
modelRuntime: this.getModelRuntime(),
|
|
132
159
|
assertAvailable: () => this.ensureAvailable(),
|
|
133
160
|
assertRunUsable: (runId) => this.ensureUsable(runId),
|
|
134
|
-
onChatSessionPersisted: () => undefined,
|
|
135
161
|
});
|
|
136
162
|
for (const id of this.deleted) {
|
|
137
163
|
if (this.deleteRequested.has(id)) continue;
|
|
138
164
|
if (this.engine.journal.stateOf(id) || existsSync(layout.sessionDir(id))) {
|
|
139
|
-
throw new Error(`
|
|
165
|
+
throw new Error(`Archivierter Run ${id} besitzt erneut aktive Daten`);
|
|
140
166
|
}
|
|
141
167
|
}
|
|
142
168
|
for (const id of pendingDeletes) await this.beginDelete(id).done;
|
|
143
|
-
|
|
169
|
+
// Ein Koordinator ohne heutigen Zugang (der frühere gemeinsame, ein entfernter Benutzer) bleibt unberührt.
|
|
170
|
+
const runIds = this.engine.journal.runIds().filter((runId) => !globalChat?.isCoordinator(runId) || this.coordinatorUser(runId) !== undefined);
|
|
144
171
|
await Promise.all(runIds.map((runId) => this.sessionWorkspace(runId, () => {})));
|
|
145
172
|
for (const runId of runIds) this.openSession(runId);
|
|
146
173
|
this.engine.start();
|
|
@@ -151,13 +178,15 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
151
178
|
return this.engine;
|
|
152
179
|
}
|
|
153
180
|
|
|
154
|
-
/** Die eine Modelllaufzeit des Servers; Anbieter der Plugins
|
|
181
|
+
/** Die eine Modelllaufzeit des Servers; Anbieter der Plugins und Aliasse des Profils stehen, bevor jemand ein Modell nachschlägt. */
|
|
155
182
|
private getModelRuntime(): Promise<ModelRuntime> {
|
|
156
|
-
return this.modelRuntime ??=
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
183
|
+
return this.modelRuntime ??= this.plugins.profiles.providers().then((providers) => {
|
|
184
|
+
const runtime = ModelRuntime.create();
|
|
185
|
+
for (const provider of providers) runtime.registerProvider(provider.id, provider.config);
|
|
186
|
+
const aliases = validatedModelAliases();
|
|
187
|
+
if (aliases.length > 0) runtime.registerAliases(ALIAS_PROVIDER, aliases);
|
|
188
|
+
return runtime;
|
|
189
|
+
});
|
|
161
190
|
}
|
|
162
191
|
|
|
163
192
|
private requireTitleSettings(): TitleSettingsStore {
|
|
@@ -186,7 +215,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
186
215
|
const engine = this.requireEngine();
|
|
187
216
|
const productRuntime = this.plugins.service(productRuntimeToken);
|
|
188
217
|
const globalChat = this.plugins.optionalService(globalChatToken);
|
|
189
|
-
const globalPolicy =
|
|
218
|
+
const globalPolicy = globalChat?.isCoordinator(id) ? globalChat : undefined;
|
|
190
219
|
const session = new RunChatSession({
|
|
191
220
|
engine,
|
|
192
221
|
id,
|
|
@@ -208,7 +237,9 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
208
237
|
},
|
|
209
238
|
prepare: (runId) => this.prepareRun(runId),
|
|
210
239
|
prepareWorkspace: (runId, emitSystem) => this.prepareWorkspace(runId, emitSystem),
|
|
240
|
+
started: (runId, startEntry) => this.startedRun(runId, startEntry),
|
|
211
241
|
scriptEntryFor: (entryId) => globalPolicy ? undefined : this.plugins.startEntries.scriptPackage(entryId),
|
|
242
|
+
startEntryFor: (entryId) => globalPolicy ? undefined : this.plugins.startEntries.entry(entryId),
|
|
212
243
|
actorPrograms: {
|
|
213
244
|
runInput: (...args) => this.plugins.service(actorProgramsToken).runInput(...args),
|
|
214
245
|
workspaceDirectory: (runId) => this.plugins.service(actorProgramsToken).workspaceDirectory(runId),
|
|
@@ -220,52 +251,59 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
220
251
|
return session;
|
|
221
252
|
}
|
|
222
253
|
|
|
223
|
-
startOptions(id: string): readonly StartOptionState[] {
|
|
224
|
-
return this.openSession(id).startOptions();
|
|
254
|
+
startOptions(id: string, userId: string | null): readonly StartOptionState[] {
|
|
255
|
+
return this.openSession(id).startOptions(userId);
|
|
225
256
|
}
|
|
226
257
|
|
|
227
|
-
selectStartOption(id: string, optionId: string, value: unknown): StartOptionState {
|
|
228
|
-
return this.openSession(id).selectStartOption(optionId, value);
|
|
258
|
+
selectStartOption(id: string, optionId: string, value: unknown, userId: string | null): Promise<StartOptionState> {
|
|
259
|
+
return this.openSession(id).selectStartOption(optionId, value, userId);
|
|
229
260
|
}
|
|
230
261
|
|
|
231
|
-
async prepareRunMessage(id: string, value: unknown, signal: AbortSignal): Promise<RunPreparationResponse> {
|
|
262
|
+
async prepareRunMessage(id: string, value: unknown, signal: AbortSignal, userId: string | null): Promise<RunPreparationResponse> {
|
|
232
263
|
this.ensureUsable(id);
|
|
233
264
|
if (this.runPreparations.has(id)) throw new DomainError("preparation-busy", "Eine Antwort für diese Vorbereitung wird bereits erstellt.", 409);
|
|
234
265
|
const request = parseRunPreparationRequest(value);
|
|
235
266
|
const session = this.openSession(id);
|
|
236
|
-
const selection = session.preparationSelection();
|
|
267
|
+
const selection = session.preparationSelection(userId);
|
|
237
268
|
const prompt = this.plugins.optionalService(globalChatToken)?.preparationPrompt;
|
|
238
269
|
if (!prompt) throw new DomainError("preparation-unavailable", "Das Profil stellt keinen Vorbereitungskoordinator bereit.", 409);
|
|
239
270
|
const controller = new AbortController();
|
|
240
271
|
const combined = AbortSignal.any([signal, controller.signal]);
|
|
241
272
|
const done = this.getModelRuntime().then(async (runtime) => {
|
|
242
273
|
this.ensureUsable(id);
|
|
243
|
-
session.preparationSelection();
|
|
244
|
-
const result = await prepareRunMessage({ runtime, selection, request, prompt,
|
|
274
|
+
session.preparationSelection(userId);
|
|
275
|
+
const result = await prepareRunMessage({ runtime, selection, request, prompt, signal: combined });
|
|
245
276
|
this.ensureUsable(id);
|
|
246
|
-
session.preparationSelection();
|
|
277
|
+
session.preparationSelection(userId);
|
|
247
278
|
return result;
|
|
248
279
|
}).finally(() => this.runPreparations.delete(id));
|
|
249
280
|
this.runPreparations.set(id, { controller, done });
|
|
250
281
|
return done;
|
|
251
282
|
}
|
|
252
283
|
|
|
253
|
-
|
|
284
|
+
/** Nur sichtbare Runs bekommen Titel und Metadaten; ohne Bereich alle, ohne einen Arbeitsbereich, den nur sein Eigentümer bedient. */
|
|
285
|
+
async list(scope?: RunListScope): Promise<SessionInfo[]> {
|
|
286
|
+
const visible = scope?.visible ?? (() => true);
|
|
287
|
+
const workspaceAccessible = scope?.workspaceAccessible ?? ((runId: string) => !this.runOwnerOnly(runId));
|
|
254
288
|
const engine = this.requireEngine();
|
|
255
289
|
const productRuntime = this.plugins.service(productRuntimeToken);
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
290
|
+
const isCoordinator = (runId: string) => this.plugins.optionalService(globalChatToken)?.isCoordinator(runId) ?? false;
|
|
291
|
+
const listed = engine.journal.runIds().filter((runId) => !isCoordinator(runId)
|
|
292
|
+
&& !this.deleteRequested.has(runId) && !this.deleted.has(runId) && visible(runId));
|
|
293
|
+
const described = await Promise.all(listed.map(async (runId): Promise<ListedSession | undefined> => {
|
|
260
294
|
const state = engine.journal.stateOf(runId);
|
|
261
|
-
if (!state)
|
|
295
|
+
if (!state) return undefined;
|
|
262
296
|
const firstInput = [...state.inputs.values()]
|
|
263
297
|
.sort((left, right) => left.sequence - right.sequence)
|
|
264
298
|
.find((input) => input.enqueuedBy === state.ownerId);
|
|
265
299
|
// A title set on purpose (run script, run_configure) beats the first-message heuristic.
|
|
266
300
|
const chosenTitle = state.title !== productRuntime.coordinator.runTitle ? state.title : undefined;
|
|
267
|
-
const
|
|
268
|
-
|
|
301
|
+
const workspace = workspaceAccessible(runId);
|
|
302
|
+
const [compactTitle, metadata] = await Promise.all([
|
|
303
|
+
chosenTitle ?? this.titleCompactor.titleFor(runId, firstInput?.content),
|
|
304
|
+
this.plugins.sessionMetadata.describe(runId, workspace, SESSION_METADATA_TIMEOUT_MS),
|
|
305
|
+
]);
|
|
306
|
+
return {
|
|
269
307
|
id: runId,
|
|
270
308
|
title: compactTitle ?? sessionTitle(firstInput?.content) ?? productRuntime.coordinator.runTitle,
|
|
271
309
|
createdAt: Date.parse(state.createdAt),
|
|
@@ -273,11 +311,17 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
273
311
|
revision: state.revision,
|
|
274
312
|
running: [...state.actors.values()].some((actor) => actor.kind !== "human" && engine.scheduler.isRunning(runId, actor.id))
|
|
275
313
|
|| (this.sessions.get(runId)?.running ?? false),
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
314
|
+
workspaceAccessible: workspace,
|
|
315
|
+
metadata: metadata.values,
|
|
316
|
+
...(Object.keys(metadata.unavailable).length > 0 ? { metadataUnavailable: metadata.unavailable } : {}),
|
|
317
|
+
};
|
|
318
|
+
}));
|
|
319
|
+
const locked = engine.journal.unavailableRuns()
|
|
320
|
+
.filter(({ runId }) => !isCoordinator(runId) && !this.deleteRequested.has(runId) && !this.deleted.has(runId) && visible(runId))
|
|
321
|
+
.map((failure) => lockedSession(failure, engine.journal));
|
|
322
|
+
const infos = [...described.filter((info): info is ListedSession => info !== undefined), ...locked];
|
|
279
323
|
for (const [id, session] of this.sessions) {
|
|
280
|
-
if (id
|
|
324
|
+
if (isCoordinator(id) || !visible(id)) continue;
|
|
281
325
|
if (this.deleteRequested.has(id) || this.deleted.has(id)) continue;
|
|
282
326
|
if (!session.started || infos.some((info) => info.id === id)) continue;
|
|
283
327
|
infos.push({
|
|
@@ -285,14 +329,15 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
285
329
|
title: productRuntime.coordinator.runTitle,
|
|
286
330
|
updatedAt: Date.now(),
|
|
287
331
|
running: session.running,
|
|
332
|
+
workspaceAccessible: workspaceAccessible(id),
|
|
288
333
|
});
|
|
289
334
|
}
|
|
290
335
|
return infos.sort((a, b) => b.updatedAt - a.updatedAt);
|
|
291
336
|
}
|
|
292
337
|
|
|
293
|
-
private sessionManagement():
|
|
338
|
+
private sessionManagement(): RunManagement {
|
|
294
339
|
return {
|
|
295
|
-
list: () => this.list(),
|
|
340
|
+
list: (access) => this.list(access ? runListScope(access, this.runAccess()) : undefined),
|
|
296
341
|
view: (runId) => {
|
|
297
342
|
this.ensureUsable(runId);
|
|
298
343
|
return this.requireEngine().runtime.view(runId);
|
|
@@ -302,9 +347,12 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
302
347
|
return this.requireEngine().runtime.events(runId);
|
|
303
348
|
},
|
|
304
349
|
create: (start) => this.createManagedRun(start),
|
|
305
|
-
send: (runId, message) =>
|
|
350
|
+
send: (runId, message, access) => {
|
|
351
|
+
assertRunRights(access, runId, "write", this.runAccess());
|
|
352
|
+
return this.openSession(runId).sendAndWait(message, access.user ? { id: access.user.id, label: access.user.label } : undefined);
|
|
353
|
+
},
|
|
306
354
|
stop: (runId) => this.openSession(runId).stop(),
|
|
307
|
-
resetGlobal: () => this.resetGlobalConversation(),
|
|
355
|
+
resetGlobal: (runId) => this.resetGlobalConversation(runId),
|
|
308
356
|
};
|
|
309
357
|
}
|
|
310
358
|
|
|
@@ -312,14 +360,15 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
312
360
|
const local = start.kind === "package" ? runScriptFromDirectory(start.directory) : undefined;
|
|
313
361
|
const id = randomUUID();
|
|
314
362
|
const session = this.openSession(id, start.title);
|
|
315
|
-
|
|
316
|
-
|
|
363
|
+
const user = start.user ?? undefined;
|
|
364
|
+
for (const [optionId, value] of Object.entries(start.options ?? {})) await session.selectStartOption(optionId, value, start.user?.id ?? null);
|
|
365
|
+
if (start.kind === "script") await session.startAndWait(start.entryId, start.input, user);
|
|
317
366
|
else if (start.kind === "package") {
|
|
318
367
|
if (!local) throw new Error("Das Run-Script-Paket wurde nicht geladen");
|
|
319
368
|
const { script, ...entry } = local;
|
|
320
|
-
await session.startPackageAndWait({ ...script, entry: { ...entry, coordinator: script.coordinator, owner: "ragents.overseer" } }, start.input);
|
|
369
|
+
await session.startPackageAndWait({ ...script, entry: { ...entry, coordinator: script.coordinator, owner: "ragents.overseer" } }, start.input, user);
|
|
321
370
|
}
|
|
322
|
-
else await session.sendAndWait(start.message);
|
|
371
|
+
else await session.sendAndWait(start.message, user);
|
|
323
372
|
return id;
|
|
324
373
|
}
|
|
325
374
|
|
|
@@ -332,8 +381,19 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
332
381
|
}
|
|
333
382
|
|
|
334
383
|
globalPolicy(): GlobalRunPolicy | undefined {
|
|
335
|
-
|
|
336
|
-
|
|
384
|
+
return globalRunPolicyOf(this.plugins.optionalService(globalChatToken));
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
runOwner(id: string): string | null | undefined {
|
|
388
|
+
return runOwnerOf(this.requireEngine().journal, id);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
runOwnerOnly(id: string): boolean {
|
|
392
|
+
return runOwnerOnly(this.requireEngine().journal, this.plugins.startOptions, id);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
runAccess(): RunAccessPolicy {
|
|
396
|
+
return { global: this.globalPolicy(), ownerOf: (runId) => this.runOwner(runId), ownerOnly: (runId) => this.runOwnerOnly(runId) };
|
|
337
397
|
}
|
|
338
398
|
|
|
339
399
|
runView(id: string, access: AccessContext = unrestrictedAccess): unknown {
|
|
@@ -363,18 +423,25 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
363
423
|
return pathname === "/rpc" || pathname === "/rpc/stream" || pathname.startsWith("/files/") || this.plugins.isApiPath(pathname);
|
|
364
424
|
}
|
|
365
425
|
|
|
366
|
-
|
|
426
|
+
/** Auslieferungsrouten nennen ihren Run im Pfad; ein fremder Run ist dort so wenig erreichbar wie in einer Methode. */
|
|
427
|
+
async pluginRoutes(req: IncomingMessage, res: ServerResponse, url: URL, access?: AccessContext): Promise<boolean> {
|
|
428
|
+
const named = runIdInPath(url.pathname);
|
|
429
|
+
if (named !== undefined && access && !runReachable(access, named, this.runAccess())) {
|
|
430
|
+
res.writeHead(404, { "Cache-Control": "no-store", "Content-Type": "application/json" });
|
|
431
|
+
res.end(JSON.stringify({ error: `Run ${named} does not exist.`, code: "run-not-found" }));
|
|
432
|
+
return true;
|
|
433
|
+
}
|
|
367
434
|
return this.plugins.dispatchHttp(req, res, url, access);
|
|
368
435
|
}
|
|
369
436
|
|
|
370
437
|
private ensureUsable(id: string): void {
|
|
371
|
-
if (!isRunId(id)) throw new DomainError("invalid-run", `Ungültige
|
|
438
|
+
if (!isRunId(id)) throw new DomainError("invalid-run", `Ungültige Run-ID: ${id}`, 400);
|
|
372
439
|
this.ensureAvailable();
|
|
373
|
-
if (this.
|
|
440
|
+
if (this.globalResetsRequested.has(id)) {
|
|
374
441
|
throw new DomainError("conversation-resetting", "Das globale Gespräch wird zurückgesetzt. Bitte warte kurz oder wiederhole den Reset nach einem Fehler.", 409);
|
|
375
442
|
}
|
|
376
|
-
if (this.deleteRequested.has(id)) throw new DomainError("run-deleting", "
|
|
377
|
-
if (this.deleted.has(id)) throw new DomainError("run-deleted", "
|
|
443
|
+
if (this.deleteRequested.has(id)) throw new DomainError("run-deleting", "Der Run wird gelöscht", 409);
|
|
444
|
+
if (this.deleted.has(id)) throw new DomainError("run-deleted", "Der Run wurde gelöscht", 410);
|
|
378
445
|
this.engine?.journal.assertRunAvailable(id);
|
|
379
446
|
}
|
|
380
447
|
|
|
@@ -389,7 +456,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
389
456
|
const created = this.resolveWorkspace(id, emitSystem)
|
|
390
457
|
.then((workspace) => {
|
|
391
458
|
this.ensureUsable(id);
|
|
392
|
-
this.workspaces.remember(id, workspace.cwd);
|
|
459
|
+
this.workspaces.remember(id, workspace.cwd, workspace.description);
|
|
393
460
|
return workspace;
|
|
394
461
|
})
|
|
395
462
|
.catch((error: unknown) => {
|
|
@@ -402,12 +469,13 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
402
469
|
|
|
403
470
|
private async prepareRun(id: string): Promise<void> {
|
|
404
471
|
this.ensureUsable(id);
|
|
405
|
-
if (
|
|
406
|
-
this.ensureUsable(id);
|
|
407
|
-
await mkdir(layout.chatDir(id), { recursive: true, mode: ROOT_ONLY_MODE });
|
|
472
|
+
if (!this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) await this.plugins.lifecycle.prepareSession(id);
|
|
408
473
|
this.ensureUsable(id);
|
|
409
|
-
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
private async startedRun(id: string, startEntry: SessionStartedContext["startEntry"]): Promise<void> {
|
|
410
477
|
this.ensureUsable(id);
|
|
478
|
+
if (!this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) await this.plugins.lifecycle.sessionStarted(id, startEntry);
|
|
411
479
|
}
|
|
412
480
|
|
|
413
481
|
private async prepareWorkspace(id: string, emitSystem: (text: string) => void): Promise<void> {
|
|
@@ -417,10 +485,10 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
417
485
|
}
|
|
418
486
|
|
|
419
487
|
delete(id: string): Promise<void> {
|
|
420
|
-
if (
|
|
421
|
-
return Promise.reject(new DomainError("global-chat-protected", "Der
|
|
488
|
+
if (this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) {
|
|
489
|
+
return Promise.reject(new DomainError("global-chat-protected", "Der globale Koordinator kann nicht gelöscht werden", 409));
|
|
422
490
|
}
|
|
423
|
-
if (!isRunId(id)) return Promise.reject(new Error(`Ungültige
|
|
491
|
+
if (!isRunId(id)) return Promise.reject(new Error(`Ungültige Run-ID: ${id}`));
|
|
424
492
|
if (this.shutdownPromise) return Promise.reject(new Error("Der Server wird beendet"));
|
|
425
493
|
return this.beginDelete(id).accepted;
|
|
426
494
|
}
|
|
@@ -429,16 +497,16 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
429
497
|
return this.deleting.get(id)?.done;
|
|
430
498
|
}
|
|
431
499
|
|
|
432
|
-
/** Ein gestoppter Run als Archiv: Journal, Payloads,
|
|
500
|
+
/** Ein gestoppter Run als Archiv: Journal, Payloads, die Inhalte, auf die er verweist, und seine Plugin-Ablagen. */
|
|
433
501
|
exportRun(id: string): Promise<RunTransferExport> {
|
|
434
502
|
this.ensureUsable(id);
|
|
435
|
-
if (
|
|
436
|
-
return Promise.reject(new DomainError("global-chat-protected", "Der
|
|
503
|
+
if (this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) {
|
|
504
|
+
return Promise.reject(new DomainError("global-chat-protected", "Der globale Koordinator zieht nicht um", 409));
|
|
437
505
|
}
|
|
438
506
|
return this.runTransfer(async () => {
|
|
439
507
|
const engine = this.requireEngine();
|
|
440
508
|
const state = engine.journal.stateOf(id);
|
|
441
|
-
if (!state) throw new DomainError("run-not-found", `
|
|
509
|
+
if (!state) throw new DomainError("run-not-found", `Den Run ${id} gibt es nicht`, 404);
|
|
442
510
|
assertRunStopped({
|
|
443
511
|
runId: id,
|
|
444
512
|
state,
|
|
@@ -457,7 +525,12 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
457
525
|
boundDirectory: this.workspaceTransfer().boundDirectory(id),
|
|
458
526
|
exportedAt: new Date().toISOString(),
|
|
459
527
|
};
|
|
460
|
-
const archive = await packRunArchive({
|
|
528
|
+
const archive = await packRunArchive({
|
|
529
|
+
places: this.transferPlaces(),
|
|
530
|
+
runId: id,
|
|
531
|
+
manifest,
|
|
532
|
+
contentHashes: contentHashesOf(engine.journal.load(id)),
|
|
533
|
+
});
|
|
461
534
|
return { manifest, archive: archive.toString("base64") };
|
|
462
535
|
});
|
|
463
536
|
}
|
|
@@ -476,6 +549,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
476
549
|
assertWorkspaceReplacement(manifest, workspacePath);
|
|
477
550
|
if (workspacePath !== undefined) transfer.assertDirectory(workspacePath);
|
|
478
551
|
const sessionDirectory = await installSessionDirectory({ places, runId: manifest.runId, staging, mode: SESSION_MODE });
|
|
552
|
+
await installContents({ places, staging });
|
|
479
553
|
const engine = this.requireEngine();
|
|
480
554
|
try {
|
|
481
555
|
engine.journal.adopt(unpacked.records);
|
|
@@ -520,8 +594,8 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
520
594
|
}
|
|
521
595
|
|
|
522
596
|
private assertRunIdAvailable(id: string): void {
|
|
523
|
-
if (
|
|
524
|
-
throw new DomainError("run-transfer-exists", `Die Kennung ${id}
|
|
597
|
+
if (this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) {
|
|
598
|
+
throw new DomainError("run-transfer-exists", `Die Kennung ${id} ist den übergeordneten Koordinatoren dieses Servers vorbehalten.`, 409);
|
|
525
599
|
}
|
|
526
600
|
const engine = this.requireEngine();
|
|
527
601
|
assertRunIdFree({
|
|
@@ -531,23 +605,26 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
531
605
|
});
|
|
532
606
|
}
|
|
533
607
|
|
|
534
|
-
private resetGlobalConversation(): Promise<void> {
|
|
608
|
+
private resetGlobalConversation(id: string): Promise<void> {
|
|
535
609
|
this.ensureAvailable();
|
|
536
|
-
|
|
610
|
+
const running = this.globalResets.get(id);
|
|
611
|
+
if (running) return running;
|
|
537
612
|
const policy = this.plugins.optionalService(globalChatToken);
|
|
538
|
-
if (!policy?.
|
|
539
|
-
|
|
540
|
-
const
|
|
541
|
-
|
|
613
|
+
if (!policy?.resetIntentDirectory) return Promise.reject(new DomainError("conversation-reset-unavailable", "Dieses Profil bietet keinen Gesprächsreset an.", 404));
|
|
614
|
+
if (!policy.isCoordinator(id)) return Promise.reject(new DomainError("conversation-reset-unavailable", `${id} ist kein globaler Koordinator.`, 404));
|
|
615
|
+
const intentFile = path.join(policy.resetIntentDirectory, `${id}.json`);
|
|
616
|
+
this.globalResetsRequested.add(id);
|
|
617
|
+
const operation = this.resetGlobalInner(id, intentFile, policy).catch((error: unknown) => {
|
|
618
|
+
if (!existsSync(intentFile)) this.globalResetsRequested.delete(id);
|
|
542
619
|
throw error;
|
|
543
620
|
}).finally(() => {
|
|
544
|
-
if (this.
|
|
621
|
+
if (this.globalResets.get(id) === operation) this.globalResets.delete(id);
|
|
545
622
|
});
|
|
546
|
-
this.
|
|
623
|
+
this.globalResets.set(id, operation);
|
|
547
624
|
return operation;
|
|
548
625
|
}
|
|
549
626
|
|
|
550
|
-
private async resetGlobalInner(id: string, intentFile: string): Promise<void> {
|
|
627
|
+
private async resetGlobalInner(id: string, intentFile: string, policy: GlobalChatPolicy): Promise<void> {
|
|
551
628
|
if (!existsSync(intentFile)) {
|
|
552
629
|
await mkdir(path.dirname(intentFile), { recursive: true });
|
|
553
630
|
const temporary = `${intentFile}.tmp-${randomUUID()}`;
|
|
@@ -568,33 +645,42 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
568
645
|
await stopped;
|
|
569
646
|
await settled;
|
|
570
647
|
await this.plugins.optionalService(sandboxServicesToken)?.shutdown(id);
|
|
571
|
-
await this.removeGlobalConversation();
|
|
572
|
-
engine.
|
|
648
|
+
await this.removeGlobalConversation(id, policy);
|
|
649
|
+
engine.runtime.forgetRun(id);
|
|
573
650
|
this.sessionWorkspaces.delete(id);
|
|
574
651
|
this.workspaces.forget(id);
|
|
575
652
|
});
|
|
576
653
|
await rm(intentFile);
|
|
577
654
|
await this.syncDirectory(path.dirname(intentFile));
|
|
578
|
-
this.
|
|
655
|
+
this.globalResetsRequested.delete(id);
|
|
579
656
|
session?.resetHistory();
|
|
580
657
|
}
|
|
581
658
|
|
|
582
659
|
private async validateGlobalResetIntent(file: string, id: string): Promise<void> {
|
|
583
660
|
const marker: unknown = JSON.parse(await readFile(file, "utf8"));
|
|
584
|
-
if (!marker || typeof marker !== "object" || !("version" in marker) || marker.version !== 1 || !("runId" in marker) || marker.runId !== id) {
|
|
661
|
+
if (!isRunId(id) || !marker || typeof marker !== "object" || !("version" in marker) || marker.version !== 1 || !("runId" in marker) || marker.runId !== id) {
|
|
585
662
|
throw new Error("Der Gesprächsreset-Marker ist ungültig");
|
|
586
663
|
}
|
|
587
664
|
}
|
|
588
665
|
|
|
589
|
-
private async removeGlobalConversation(): Promise<void> {
|
|
590
|
-
const
|
|
591
|
-
const directories = [layout.sessionDir(policy.runId), path.join(layout.runsDir, policy.runId), layout.recoverySessionDir(policy.runId), policy.workspaceDirectory];
|
|
666
|
+
private async removeGlobalConversation(id: string, policy = this.plugins.service(globalChatToken)): Promise<void> {
|
|
667
|
+
const directories = [layout.sessionDir(id), path.join(layout.runsDir, id), layout.recoverySessionDir(id), policy.workspaceDirectory(id)];
|
|
592
668
|
for (const directory of directories) await rm(directory, { recursive: true, force: true });
|
|
593
669
|
for (const parent of new Set(directories.map((directory) => path.dirname(directory)))) {
|
|
594
670
|
if (existsSync(parent)) await this.syncDirectory(parent);
|
|
595
671
|
}
|
|
596
672
|
}
|
|
597
673
|
|
|
674
|
+
/** Wem ein Koordinator gehört: dem Benutzer, dessen Kennung er trägt, ohne Anmeldung dem einen Zugang; sonst niemandem. */
|
|
675
|
+
private coordinatorUser(id: string): { userId: string | null } | undefined {
|
|
676
|
+
const policy = this.plugins.optionalService(globalChatToken);
|
|
677
|
+
if (!policy?.isCoordinator(id)) return undefined;
|
|
678
|
+
const users = configuredUsers();
|
|
679
|
+
if (!users) return policy.runIdFor(null) === id ? { userId: null } : undefined;
|
|
680
|
+
const user = users.find((entry) => policy.runIdFor(entry.id) === id);
|
|
681
|
+
return user ? { userId: user.id } : undefined;
|
|
682
|
+
}
|
|
683
|
+
|
|
598
684
|
private beginDelete(id: string): DeleteJob {
|
|
599
685
|
const vorhanden = this.deleting.get(id);
|
|
600
686
|
if (vorhanden) return vorhanden;
|
|
@@ -637,7 +723,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
637
723
|
await Promise.allSettled([...this.runPreparations.values()].map((preparation) => preparation.done));
|
|
638
724
|
await this.titleCompactor.shutdown();
|
|
639
725
|
this.listListeners.clear();
|
|
640
|
-
const resetResults = await Promise.allSettled(
|
|
726
|
+
const resetResults = await Promise.allSettled([...this.globalResets.values()]);
|
|
641
727
|
const sessions = [...this.sessions.entries()];
|
|
642
728
|
for (const [, session] of sessions) session.dispose();
|
|
643
729
|
const results = await Promise.allSettled([
|
|
@@ -674,10 +760,10 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
674
760
|
.slice(0, 3)
|
|
675
761
|
.filter((result): result is PromiseRejectedResult => result.status === "rejected")
|
|
676
762
|
.map((result) => result.reason);
|
|
677
|
-
if (failures.length > 0) throw new AggregateError(failures, `
|
|
763
|
+
if (failures.length > 0) throw new AggregateError(failures, `Run ${id} konnte nicht gestoppt werden`);
|
|
678
764
|
await this.plugins.lifecycle.deleteSession(id);
|
|
679
765
|
await this.archiveSession(id);
|
|
680
|
-
this.engine?.
|
|
766
|
+
this.engine?.runtime.forgetRun(id);
|
|
681
767
|
this.sessions.delete(id);
|
|
682
768
|
this.sessionWorkspaces.delete(id);
|
|
683
769
|
this.workspaces.forget(id);
|
|
@@ -764,20 +850,24 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
764
850
|
|
|
765
851
|
private async resolveWorkspace(id: string, emitSystem: (text: string) => void): Promise<SessionWorkspace> {
|
|
766
852
|
const globalChat = this.plugins.optionalService(globalChatToken);
|
|
767
|
-
if (
|
|
768
|
-
|
|
769
|
-
|
|
853
|
+
if (globalChat?.isCoordinator(id)) {
|
|
854
|
+
const owner = this.coordinatorUser(id);
|
|
855
|
+
if (!owner) throw new DomainError("coordinator-without-access", `Der Koordinator ${id} gehört keinem Zugang dieses Profils.`, 409);
|
|
856
|
+
const directory = globalChat.workspaceDirectory(id);
|
|
857
|
+
await mkdir(directory, { recursive: true, mode: ROOT_ONLY_MODE });
|
|
858
|
+
const cwd = await realpath(directory);
|
|
770
859
|
await globalChat.prepareWorkspace?.(cwd);
|
|
860
|
+
const users = configuredUsers();
|
|
771
861
|
return {
|
|
772
862
|
cwd,
|
|
773
|
-
|
|
863
|
+
// Mit Benutzern enthielte der Journalordner fremde Runs; der Koordinator liest über die Methoden seines Benutzers.
|
|
864
|
+
hostSandbox: { home: cwd, readOnlyRoots: users ? [] : [{ directory: layout.runsDir, environmentVariable: "RAGENTS_JOURNAL_DIR" }] },
|
|
774
865
|
extraEnv: {
|
|
775
|
-
RAGENTS_API_BASE_URL:
|
|
776
|
-
...(
|
|
866
|
+
...(this.apiBaseUrl ? { RAGENTS_API_BASE_URL: this.apiBaseUrl } : {}),
|
|
867
|
+
...(users || configuredAnonymousUser() ? { RAGENTS_API_TOKEN: coordinatorAccessToken(owner.userId) }
|
|
777
868
|
: process.env.ACCESS_TOKEN ? { RAGENTS_API_TOKEN: process.env.ACCESS_TOKEN } : {}),
|
|
778
869
|
},
|
|
779
870
|
currentRoot: async () => cwd,
|
|
780
|
-
ensureWritable: async () => cwd,
|
|
781
871
|
runOperation: (operation) => operation(),
|
|
782
872
|
};
|
|
783
873
|
}
|
|
@@ -787,6 +877,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
787
877
|
private async archiveSession(id: string): Promise<void> {
|
|
788
878
|
const target = layout.archiveSessionDir(id);
|
|
789
879
|
await mkdir(target, { recursive: true, mode: ROOT_ONLY_MODE });
|
|
880
|
+
// Journale vor Format 7 hielten den Modellkontext unter sessions/<id>/chat; er bleibt im Archiv erhalten.
|
|
790
881
|
const moves = [
|
|
791
882
|
[path.join(layout.sessionDir(id), "chat"), "chat"],
|
|
792
883
|
[path.join(layout.runsDir, id), "run"],
|
|
@@ -810,6 +901,21 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
810
901
|
}
|
|
811
902
|
}
|
|
812
903
|
|
|
904
|
+
/** Ein gesperrter Run ohne Plugin-Metadaten und Arbeitsbereich; ohne geladenen Zustand zählt die Journaldatei. */
|
|
905
|
+
const lockedSession = (failure: JournalLoadFailure, journal: Journal): ListedSession => {
|
|
906
|
+
const state = journal.stateOf(failure.runId);
|
|
907
|
+
const updatedAt = state ? Date.parse(journal.updatedAt(failure.runId) ?? state.createdAt) : statSync(failure.path, { throwIfNoEntry: false })?.mtimeMs ?? 0;
|
|
908
|
+
return {
|
|
909
|
+
id: failure.runId,
|
|
910
|
+
title: state?.title ?? failure.runId,
|
|
911
|
+
...(state ? { createdAt: Date.parse(state.createdAt), revision: state.revision } : {}),
|
|
912
|
+
updatedAt,
|
|
913
|
+
running: false,
|
|
914
|
+
workspaceAccessible: false,
|
|
915
|
+
locked: failure.message,
|
|
916
|
+
};
|
|
917
|
+
};
|
|
918
|
+
|
|
813
919
|
const sessionTitle = (text: string | undefined): string | undefined => {
|
|
814
920
|
const lines = text?.split(/\r?\n/).map((line) => line.trim()).filter(Boolean) ?? [];
|
|
815
921
|
if (lines.length === 0) return undefined;
|