@schlenkr/ragents 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +9 -39
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +32 -29
- package/apps/server/src/api/core-methods.ts +21 -19
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +8 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +63 -58
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +25 -24
- package/apps/server/src/ragents/global-chat.ts +14 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +51 -49
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +64 -55
- package/apps/web/dist/help/guide-clients.md +62 -52
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +1997 -942
- package/apps/web/dist/help/mini-app.css +30 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +26 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +29 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +34 -27
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +256 -228
- package/bundles/ragents.actor-programs/server/index.js.map +4 -4
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -4
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +4 -4
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +3 -3
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +99 -99
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +83 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/core/tools/bash.d.ts +1 -1
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/core/tools/bash.ts +1 -1
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/index.ts +1 -0
- package/packages/ragents/src/plugin-host.ts +162 -116
- package/packages/ragents/src/plugin-types.ts +29 -10
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +35 -7
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +37 -31
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/index.ts +2 -0
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -8
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +29 -28
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +10 -10
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +8 -8
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +8 -5
- package/plugins/ragents.workspace/server/index.ts +5 -4
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
- package/apps/web/dist/assets/runPanel-ZT6TPDLM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
package/apps/server/package.json
CHANGED
|
@@ -1,37 +1,9 @@
|
|
|
1
|
-
import { emptyUsage, type AccessContext, type
|
|
1
|
+
import { emptyUsage, type AccessContext, type AccessProjectionRegistry, type RunView } from "@ragents/engine";
|
|
2
2
|
import type { ChatEvent, Message } from "quassel/events";
|
|
3
3
|
import type { ActorConversations } from "./ragents/actor-chat-history.js";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const hiddenStates = new Set(["ragents.system-prompt", "ragents.model", "ragents.start-options"]);
|
|
9
|
-
|
|
10
|
-
const visibleState = (entry: PluginState): PluginState | undefined => {
|
|
11
|
-
if (hiddenStates.has(entry.pluginId)) return undefined;
|
|
12
|
-
if (entry.pluginId === "ragents.actor-programs.invocations") return { ...entry, state: { version: 1, revision: entry.updatedAt } };
|
|
13
|
-
if (entry.pluginId !== "ragents.actor-programs") return entry;
|
|
14
|
-
const state = record(entry.state);
|
|
15
|
-
const program = state?.program ? record(state.program) : undefined;
|
|
16
|
-
if (!program) return entry;
|
|
17
|
-
const views = Array.isArray(program.views) ? program.views.map((value) => {
|
|
18
|
-
const view = record(value);
|
|
19
|
-
return view ? { id: view.id, key: view.key, title: view.title, visible: view.visible, placements: view.placements } : value;
|
|
20
|
-
}) : [];
|
|
21
|
-
return { ...entry, state: {
|
|
22
|
-
version: 1,
|
|
23
|
-
program: {
|
|
24
|
-
name: program.name,
|
|
25
|
-
title: program.title,
|
|
26
|
-
actorId: program.actorId,
|
|
27
|
-
actorHandle: program.actorHandle,
|
|
28
|
-
revision: program.revision,
|
|
29
|
-
views,
|
|
30
|
-
},
|
|
31
|
-
} };
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export const accessibleRunView = (view: RunView, access: AccessContext): RunView => access.can("runs.inspect") ? view : {
|
|
5
|
+
/** Each plugin shows its own plugin states and plugin events through its access projection (docs/spec/plugins.md, registrations of the PluginHost). */
|
|
6
|
+
export const accessibleRunView = (view: RunView, access: AccessContext, projections: AccessProjectionRegistry): RunView => access.can("runs.inspect") ? view : {
|
|
35
7
|
...view,
|
|
36
8
|
actors: view.actors.map((actor) => actor.kind === "human" ? { ...actor, grants: [] } : {
|
|
37
9
|
...actor,
|
|
@@ -50,29 +22,27 @@ export const accessibleRunView = (view: RunView, access: AccessContext): RunView
|
|
|
50
22
|
inputs: view.inputs.map((input) => ({ ...input, content: input.enqueuedBy === view.ownerId && input.presentation !== "background" ? input.content : "",
|
|
51
23
|
lifecycle: input.lifecycle.kind === "discarded" ? { ...input.lifecycle, reason: "Verworfen" } : input.lifecycle,
|
|
52
24
|
})),
|
|
53
|
-
turns: view.turns.map((turn) => ({ ...turn, usage: emptyUsage(), toolCalls: [], reason: turn.reason ? "
|
|
25
|
+
turns: view.turns.map((turn) => ({ ...turn, usage: emptyUsage(), toolCalls: [], reason: turn.reason ? "Processing was stopped." : null })),
|
|
54
26
|
subscriptions: [],
|
|
55
27
|
pluginStates: view.pluginStates.flatMap((entry) => {
|
|
56
|
-
const state =
|
|
28
|
+
const state = projections.state(entry, access);
|
|
57
29
|
return state ? [state] : [];
|
|
58
30
|
}),
|
|
59
31
|
};
|
|
60
32
|
|
|
61
|
-
export const accessibleChatEvent = (event: ChatEvent, access: AccessContext): ChatEvent | undefined => {
|
|
33
|
+
export const accessibleChatEvent = (event: ChatEvent, access: AccessContext, projections: AccessProjectionRegistry): ChatEvent | undefined => {
|
|
62
34
|
if (access.can("runs.inspect")) return event;
|
|
63
35
|
if (event.kind === "status" && event.startup?.status === "failed") return {
|
|
64
36
|
...event,
|
|
65
|
-
startup: { status: "failed", message: "
|
|
37
|
+
startup: { status: "failed", message: "The start could not be completed. Please contact the person responsible." },
|
|
66
38
|
};
|
|
67
39
|
const trace = access.can("runs.trace");
|
|
68
40
|
if (event.kind === "thinking") return trace ? event : { kind: "thinking", delta: "", at: event.at };
|
|
69
41
|
if (event.kind === "tool") return trace ? event : { kind: "tool", id: event.id, name: "", arguments: "", at: event.at };
|
|
70
42
|
if (event.kind === "tool-result") return trace ? event : { kind: "tool-result", id: event.id, result: "", isError: event.isError };
|
|
71
|
-
if (event.kind === "system") return { ...event, text: "
|
|
43
|
+
if (event.kind === "system") return { ...event, text: "Processing notice. If you have questions, contact the responsible agent." };
|
|
72
44
|
if (event.kind !== "plugin") return event;
|
|
73
|
-
|
|
74
|
-
if (event.pluginId === "ragents.actor-programs" || event.pluginId === "ragents.actor-programs.invocations") return undefined;
|
|
75
|
-
return event;
|
|
45
|
+
return projections.chatEvent(event.pluginId, event, access);
|
|
76
46
|
};
|
|
77
47
|
|
|
78
48
|
const visibleMessage = (message: Message, actorId: string, trace: boolean): Message[] => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomBytes, timingSafeEqual } from "node:crypto";
|
|
2
2
|
import type { IncomingMessage } from "node:http";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** One token per coordinator for its tools; it acts as that coordinator's user, null is the one access without sign-in. */
|
|
5
5
|
const coordinatorTokens = new Map<string | null, string>();
|
|
6
6
|
|
|
7
7
|
export const coordinatorAccessToken = (userId: string | null): string => {
|
|
@@ -13,11 +13,11 @@ export const coordinatorAccessToken = (userId: string | null): string => {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export const profileAccessCookieName = (productId: string | undefined, profile: string | undefined): string => {
|
|
16
|
-
if (!productId || !profile) throw new Error("
|
|
16
|
+
if (!productId || !profile) throw new Error("User sign-in requires PRODUCT_ID and PRODUCT_PROFILE");
|
|
17
17
|
return `${productId}-${profile}-user`;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
/**
|
|
20
|
+
/** The user for whom a coordinator calls the message layer locally; otherwise undefined. */
|
|
21
21
|
export const coordinatorRequestUser = (request: IncomingMessage, url: URL): { userId: string | null } | undefined => {
|
|
22
22
|
const address = request.socket.remoteAddress;
|
|
23
23
|
if (address !== "127.0.0.1" && address !== "::1" && address !== "::ffff:127.0.0.1") return undefined;
|
|
@@ -44,20 +44,20 @@ export const isSameOriginRequest = (request: IncomingMessage): boolean => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
47
|
-
if (!/^[A-Za-z0-9_-]+$/.test(options.cookieName)) throw new Error("
|
|
48
|
-
if (options.users?.length === 0) throw new Error("
|
|
49
|
-
if (options.users && options.anonymousUser) throw new Error("
|
|
47
|
+
if (!/^[A-Za-z0-9_-]+$/.test(options.cookieName)) throw new Error("Invalid name for the sign-in cookie");
|
|
48
|
+
if (options.users?.length === 0) throw new Error("Enabled sign-in needs at least one user");
|
|
49
|
+
if (options.users && options.anonymousUser) throw new Error("User sign-in and anonymous access exclude each other");
|
|
50
50
|
const enabled = options.users !== undefined;
|
|
51
51
|
const now = options.now ?? Date.now;
|
|
52
52
|
const sessionTtlMs = options.sessionTtlMs ?? 12 * 60 * 60 * 1000;
|
|
53
53
|
if (!Number.isSafeInteger(sessionTtlMs) || sessionTtlMs < 1 || sessionTtlMs > 2_147_483_647) {
|
|
54
|
-
throw new Error("
|
|
54
|
+
throw new Error("Invalid validity period for sign-ins");
|
|
55
55
|
}
|
|
56
56
|
const passwords = new Map<string, PasswordRecord>();
|
|
57
|
-
//
|
|
57
|
+
// Personal tokens are kept in memory only as SHA-256; the comparison runs in constant time over all entries.
|
|
58
58
|
const personalTokens: Array<{ digest: Buffer; user: AccessUser }> = [];
|
|
59
59
|
for (const entry of options.users ?? []) {
|
|
60
|
-
if (passwords.has(entry.id)) throw new Error(`
|
|
60
|
+
if (passwords.has(entry.id)) throw new Error(`Duplicate user: ${entry.id}`);
|
|
61
61
|
const salt = randomBytes(16);
|
|
62
62
|
const user = Object.freeze({ id: entry.id, label: entry.label, rights: Object.freeze([...entry.rights]),
|
|
63
63
|
...(entry.startEntries ? { startEntries: Object.freeze([...entry.startEntries]) } : {}),
|
|
@@ -65,14 +65,14 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
65
65
|
passwords.set(entry.id, { user, salt, hash: scryptSync(entry.password, salt, 32) });
|
|
66
66
|
if (entry.token === undefined) continue;
|
|
67
67
|
const digest = digestOf(entry.token);
|
|
68
|
-
if (personalTokens.some((known) => timingSafeEqual(known.digest, digest))) throw new Error(`
|
|
68
|
+
if (personalTokens.some((known) => timingSafeEqual(known.digest, digest))) throw new Error(`The token of user ${entry.id} already belongs to another user`);
|
|
69
69
|
personalTokens.push({ digest, user });
|
|
70
70
|
}
|
|
71
71
|
const dummySalt = randomBytes(16);
|
|
72
72
|
const dummyHash = randomBytes(32);
|
|
73
73
|
const sessions = new Map<string, LoginSession>();
|
|
74
74
|
const wellFormed = (token: string | undefined): string | undefined => token !== undefined && /^[A-Za-z0-9_-]{43}$/.test(token) ? token : undefined;
|
|
75
|
-
// Clients
|
|
75
|
+
// Clients without a cookie (VS Code extension, its iframes) send the token as bearer; GET requests without headers (event stream, frames) as a query parameter.
|
|
76
76
|
const tokenFor = (request: IncomingMessage): string | undefined => {
|
|
77
77
|
const authorization = request.headers.authorization;
|
|
78
78
|
if (authorization !== undefined) return wellFormed(/^Bearer (.+)$/.exec(authorization)?.[1]);
|
|
@@ -83,7 +83,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
83
83
|
if (matches.length !== 1) return undefined;
|
|
84
84
|
return wellFormed(matches[0]!.slice(options.cookieName.length + 1));
|
|
85
85
|
};
|
|
86
|
-
//
|
|
86
|
+
// A personal token is only valid as bearer or, for GET, as a query parameter; never as a cookie.
|
|
87
87
|
const offeredToken = (request: IncomingMessage): string | undefined => {
|
|
88
88
|
const authorization = request.headers.authorization;
|
|
89
89
|
if (authorization !== undefined) return /^Bearer (.+)$/.exec(authorization)?.[1];
|
|
@@ -127,7 +127,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
127
127
|
const expected = url.pathname === "/api/access" ? "GET" : "POST";
|
|
128
128
|
if (request.method !== expected) {
|
|
129
129
|
response.setHeader("Allow", expected);
|
|
130
|
-
writeJson(response, 405, { error: "
|
|
130
|
+
writeJson(response, 405, { error: "Method not allowed" });
|
|
131
131
|
return true;
|
|
132
132
|
}
|
|
133
133
|
if (expected === "GET") {
|
|
@@ -135,11 +135,11 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
135
135
|
return true;
|
|
136
136
|
}
|
|
137
137
|
if (!isSameOriginRequest(request)) {
|
|
138
|
-
writeJson(response, 403, { error: "
|
|
138
|
+
writeJson(response, 403, { error: "Sign-in and sign-out are only possible from the same website" });
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
141
|
if (!enabled) {
|
|
142
|
-
writeJson(response, 409, { error: "
|
|
142
|
+
writeJson(response, 409, { error: "Sign-in is turned off in this profile" });
|
|
143
143
|
return true;
|
|
144
144
|
}
|
|
145
145
|
if (url.pathname === "/api/access/logout") {
|
|
@@ -150,25 +150,25 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
150
150
|
return true;
|
|
151
151
|
}
|
|
152
152
|
if (request.headers["content-type"]?.split(";")[0]?.trim() !== "application/json") {
|
|
153
|
-
writeJson(response, 415, { error: "
|
|
153
|
+
writeJson(response, 415, { error: "Sign-in requires application/json" });
|
|
154
154
|
return true;
|
|
155
155
|
}
|
|
156
156
|
try {
|
|
157
157
|
const credentials = await readJsonBody(request, (body) => {
|
|
158
|
-
if (!body || typeof body !== "object" || Array.isArray(body)) throw new Error("
|
|
158
|
+
if (!body || typeof body !== "object" || Array.isArray(body)) throw new Error("User id and password are missing");
|
|
159
159
|
const value = body as Record<string, unknown>;
|
|
160
160
|
if (Object.keys(value).some((key) => key !== "id" && key !== "password")
|
|
161
161
|
|| typeof value.id !== "string" || !value.id || value.id.length > 64
|
|
162
162
|
|| typeof value.password !== "string" || !value.password || value.password.length > 2048) {
|
|
163
|
-
throw new Error("
|
|
163
|
+
throw new Error("User id and password are invalid");
|
|
164
164
|
}
|
|
165
165
|
return { id: value.id, password: value.password };
|
|
166
|
-
}, "
|
|
166
|
+
}, "The sign-in does not contain valid JSON", 4096);
|
|
167
167
|
const record = passwords.get(credentials.id);
|
|
168
168
|
const hash = await derivePassword(credentials.password, record?.salt ?? dummySalt);
|
|
169
169
|
const matches = timingSafeEqual(hash, record?.hash ?? dummyHash);
|
|
170
170
|
if (!record || !matches) {
|
|
171
|
-
writeJson(response, 401, { error: "
|
|
171
|
+
writeJson(response, 401, { error: "User id or password is incorrect" });
|
|
172
172
|
return true;
|
|
173
173
|
}
|
|
174
174
|
const previous = tokenFor(request);
|
|
@@ -182,7 +182,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
182
182
|
} catch (error) {
|
|
183
183
|
if (!request.aborted && !response.destroyed) {
|
|
184
184
|
writeJson(response, error instanceof PayloadTooLargeError ? 413 : 400, {
|
|
185
|
-
error: error instanceof PayloadTooLargeError ? "
|
|
185
|
+
error: error instanceof PayloadTooLargeError ? "The sign-in data is too large" : "The sign-in data is invalid",
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
188
|
}
|
|
@@ -200,7 +200,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
200
200
|
response.once("close", release);
|
|
201
201
|
response.once("finish", release);
|
|
202
202
|
};
|
|
203
|
-
/**
|
|
203
|
+
/** The access with which the tools of a user's coordinator act: that user's current state, null is the one access without sign-in. */
|
|
204
204
|
const coordinatorSnapshot = (userId: string | null): AccessSnapshot => userId === null
|
|
205
205
|
? { enabled, user: enabled ? null : options.anonymousUser ?? null }
|
|
206
206
|
: { enabled: true, user: passwords.get(userId)?.user ?? null };
|
|
@@ -14,29 +14,32 @@ import type { TitleModelSettings } from "../title-settings-contract.js";
|
|
|
14
14
|
|
|
15
15
|
export { runContracts };
|
|
16
16
|
|
|
17
|
-
const runId = Type.String({ minLength: 1, maxLength: 64, description: "
|
|
17
|
+
const runId = Type.String({ minLength: 1, maxLength: 64, description: "Id of the run" });
|
|
18
18
|
|
|
19
19
|
const attachment = Type.Object({
|
|
20
20
|
name: Type.String({ minLength: 1 }),
|
|
21
21
|
mediaType: Type.String({ minLength: 1 }),
|
|
22
|
-
data: Type.String({ description: "
|
|
22
|
+
data: Type.String({ description: "Content as Base64" }),
|
|
23
23
|
}, { additionalProperties: false });
|
|
24
24
|
|
|
25
25
|
const sessionInfo = openJson<SessionInfo>("SessionInfo");
|
|
26
26
|
|
|
27
|
-
/**
|
|
27
|
+
/** The host checks per-run rights dynamically; contracts without `rights` state their rule in the description. */
|
|
28
|
+
/** What a UI gets from the server at startup: the plugins' profile and the server's RAgents version, against which it checks its own. */
|
|
29
|
+
export type HostBootstrap = PublicPluginProfile & { readonly version: string };
|
|
30
|
+
|
|
28
31
|
export const coreContracts = {
|
|
29
32
|
runs: {
|
|
30
33
|
list: defineOperation({
|
|
31
34
|
id: "ragents.runs.list",
|
|
32
|
-
description: "
|
|
35
|
+
description: "All runs of the profile with title, times and metadata. Right: runs.read.",
|
|
33
36
|
rights: ["runs.read"],
|
|
34
37
|
input: Type.Object({}, { additionalProperties: false }),
|
|
35
38
|
result: Type.Array(sessionInfo),
|
|
36
39
|
}),
|
|
37
40
|
delete: defineOperation({
|
|
38
41
|
id: "ragents.runs.delete",
|
|
39
|
-
description: "
|
|
42
|
+
description: "Delete a run with its data. Rights: runs.read and runs.delete.",
|
|
40
43
|
rights: ["runs.read", "runs.delete"],
|
|
41
44
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
42
45
|
result: Type.Null(),
|
|
@@ -45,43 +48,43 @@ export const coreContracts = {
|
|
|
45
48
|
chat: {
|
|
46
49
|
send: defineOperation({
|
|
47
50
|
id: "ragents.chat.send",
|
|
48
|
-
description: "
|
|
51
|
+
description: "A message to the run's coordinator; starts a new run or cuts into a running one. With entry, it starts the run through this skill template and the start options it fixes. Rights: runs.read and runs.write, for a new run runs.create; for the global chat its rights.",
|
|
49
52
|
input: Type.Object({
|
|
50
53
|
runId,
|
|
51
54
|
text: Type.Optional(Type.String()),
|
|
52
55
|
attachments: Type.Optional(Type.Array(attachment)),
|
|
53
56
|
userLocation: Type.Optional(openJson<ChatUserLocation>("ChatUserLocation")),
|
|
54
|
-
entry: Type.Optional(Type.String({ minLength: 1, description: "
|
|
57
|
+
entry: Type.Optional(Type.String({ minLength: 1, description: "Id of the skill template through which this message starts the run" })),
|
|
55
58
|
}, { additionalProperties: false }),
|
|
56
59
|
result: Type.Null(),
|
|
57
60
|
}),
|
|
58
61
|
sendToActor: defineOperation({
|
|
59
62
|
id: "ragents.chat.sendToActor",
|
|
60
|
-
description: "
|
|
63
|
+
description: "A message to a specific LLM actor of the run. Rights as for ragents.chat.send.",
|
|
61
64
|
input: Type.Object({ runId, actorId: Type.String({ minLength: 1 }), text: Type.Optional(Type.String()), attachments: Type.Optional(Type.Array(attachment)) }, { additionalProperties: false }),
|
|
62
65
|
result: Type.Null(),
|
|
63
66
|
}),
|
|
64
67
|
start: defineOperation({
|
|
65
68
|
id: "ragents.chat.start",
|
|
66
|
-
description: "
|
|
69
|
+
description: "Start a run through a script template, without a message; the start options the template fixes apply. Rights: runs.read, runs.write and the template's release.",
|
|
67
70
|
input: Type.Object({ runId, entry: Type.String({ minLength: 1 }), input: Type.Optional(Type.Any()) }, { additionalProperties: false }),
|
|
68
71
|
result: Type.Null(),
|
|
69
72
|
}),
|
|
70
73
|
stop: defineOperation({
|
|
71
74
|
id: "ragents.chat.stop",
|
|
72
|
-
description: "
|
|
75
|
+
description: "Emergency stop for the whole run: aborts all turns and a running start and stops all actors. ragents.runs.interruptTurn interrupts a single turn. Rights: runs.read and runs.write.",
|
|
73
76
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
74
77
|
result: Type.Null(),
|
|
75
78
|
}),
|
|
76
79
|
capabilities: defineOperation({
|
|
77
80
|
id: "ragents.chat.capabilities",
|
|
78
|
-
description: "
|
|
81
|
+
description: "Which attachments an actor's model accepts; the model name appears only with runs.inspect. Right: runs.read.",
|
|
79
82
|
input: Type.Object({ runId, actor: Type.Optional(Type.String({ minLength: 1 })) }, { additionalProperties: false }),
|
|
80
83
|
result: openJson<ChatAttachmentCapabilities>("ChatAttachmentCapabilities"),
|
|
81
84
|
}),
|
|
82
85
|
actorHistory: defineOperation({
|
|
83
86
|
id: "ragents.chat.actorHistory",
|
|
84
|
-
description: "
|
|
87
|
+
description: "The conversation histories of all actors of the run, without runs.inspect without tool details. Right: runs.read.",
|
|
85
88
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
86
89
|
result: openJson<ActorConversations>("ActorConversations"),
|
|
87
90
|
}),
|
|
@@ -89,14 +92,14 @@ export const coreContracts = {
|
|
|
89
92
|
startOptions: {
|
|
90
93
|
list: defineOperation({
|
|
91
94
|
id: "ragents.startOptions.list",
|
|
92
|
-
description: "
|
|
95
|
+
description: "The start options of a run with value and presentation, only those whose own rights the caller has; the model choice, for example, requires runs.inspect. After the start, all except the changeable ones are locked. Rights: runs.read, runs.create.",
|
|
93
96
|
rights: ["runs.read", "runs.create"],
|
|
94
97
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
95
98
|
result: Type.Array(openJson<StartOptionState>("StartOptionState")),
|
|
96
99
|
}),
|
|
97
100
|
select: defineOperation({
|
|
98
101
|
id: "ragents.startOptions.select",
|
|
99
|
-
description: "
|
|
102
|
+
description: "Choose a start option before the start, a changeable one such as the model choice also afterwards, taking effect from the next turn; if a right of the option itself is missing, the choice fails with access-denied. Rights: runs.read, runs.write, runs.create.",
|
|
100
103
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
101
104
|
input: Type.Object({ runId, optionId: Type.String({ minLength: 1, maxLength: 128 }), value: Type.Any() }, { additionalProperties: false }),
|
|
102
105
|
result: openJson<StartOptionState>("StartOptionState"),
|
|
@@ -105,25 +108,25 @@ export const coreContracts = {
|
|
|
105
108
|
transfer: {
|
|
106
109
|
export: defineOperation({
|
|
107
110
|
id: "ragents.runs.export",
|
|
108
|
-
description: "
|
|
111
|
+
description: "Fetch a stopped run as an archive: journal, payloads, model contexts and its plugin stores. Rights: runs.read and runs.inspect.",
|
|
109
112
|
rights: ["runs.read", "runs.inspect"],
|
|
110
113
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
111
114
|
result: openJson<RunTransferExport>("RunTransferExport"),
|
|
112
115
|
}),
|
|
113
116
|
import: defineOperation({
|
|
114
117
|
id: "ragents.runs.import",
|
|
115
|
-
description: "
|
|
118
|
+
description: "Accept a run archive, replay its journal and open the run stopped. Rights: runs.read, runs.write and runs.create.",
|
|
116
119
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
117
120
|
input: Type.Object({
|
|
118
|
-
archive: Type.String({ minLength: 1, description: "
|
|
119
|
-
workspacePath: Type.Optional(Type.String({ minLength: 1, description: "
|
|
121
|
+
archive: Type.String({ minLength: 1, description: "The export's tar.gz as Base64" }),
|
|
122
|
+
workspacePath: Type.Optional(Type.String({ minLength: 1, description: "Replacement folder on this server for a run with binding path" })),
|
|
120
123
|
}, { additionalProperties: false }),
|
|
121
124
|
result: openJson<RunTransferImport>("RunTransferImport"),
|
|
122
125
|
}),
|
|
123
126
|
},
|
|
124
127
|
prepare: defineOperation({
|
|
125
128
|
id: "ragents.runs.prepare",
|
|
126
|
-
description: "
|
|
129
|
+
description: "Work out the task of a new run in a conversation with a separate coordinator instance. Rights: runs.read, runs.write, runs.create.",
|
|
127
130
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
128
131
|
input: Type.Intersect([Type.Object({ runId }), openJson<RunPreparationRequest>("RunPreparationRequest")]),
|
|
129
132
|
result: openJson<RunPreparationResponse>("RunPreparationResponse"),
|
|
@@ -131,28 +134,28 @@ export const coreContracts = {
|
|
|
131
134
|
settings: {
|
|
132
135
|
read: defineOperation({
|
|
133
136
|
id: "ragents.settings.read",
|
|
134
|
-
description: "
|
|
137
|
+
description: "Models, plugins, tools, skills and runtime information of the profile. Right: settings.read; only locally or with access.",
|
|
135
138
|
rights: ["settings.read"],
|
|
136
139
|
input: Type.Object({}, { additionalProperties: false }),
|
|
137
140
|
result: openJson<SettingsResponse>("SettingsResponse"),
|
|
138
141
|
}),
|
|
139
142
|
skill: defineOperation({
|
|
140
143
|
id: "ragents.settings.skill",
|
|
141
|
-
description: "
|
|
144
|
+
description: "Read the files of a registered skill; null if it is not registered. Right: settings.read.",
|
|
142
145
|
rights: ["settings.read"],
|
|
143
146
|
input: Type.Object({ id: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
|
|
144
147
|
result: Type.Union([openJson<SettingsSkillDetail>("SettingsSkillDetail"), Type.Null()]),
|
|
145
148
|
}),
|
|
146
149
|
titlesRead: defineOperation({
|
|
147
150
|
id: "ragents.settings.titles.read",
|
|
148
|
-
description: "
|
|
151
|
+
description: "Read the model for automatic titles and the choices. Right: settings.read.",
|
|
149
152
|
rights: ["settings.read"],
|
|
150
153
|
input: Type.Object({}, { additionalProperties: false }),
|
|
151
154
|
result: openJson<TitleModelSettings>("TitleModelSettings"),
|
|
152
155
|
}),
|
|
153
156
|
titlesSave: defineOperation({
|
|
154
157
|
id: "ragents.settings.titles.save",
|
|
155
|
-
description: "
|
|
158
|
+
description: "Set the model for automatic titles or turn their generation off. Right: settings.write.",
|
|
156
159
|
rights: ["settings.write"],
|
|
157
160
|
input: Type.Object({ value: Type.Any() }, { additionalProperties: false }),
|
|
158
161
|
result: openJson<TitleModelSettings>("TitleModelSettings"),
|
|
@@ -161,15 +164,15 @@ export const coreContracts = {
|
|
|
161
164
|
plugins: {
|
|
162
165
|
bootstrap: defineOperation({
|
|
163
166
|
id: "ragents.plugins.bootstrap",
|
|
164
|
-
description: "
|
|
167
|
+
description: "Product, active plugins with web configuration, released templates and the server's RAgents version for the UI.",
|
|
165
168
|
input: Type.Object({}, { additionalProperties: false }),
|
|
166
|
-
result: openJson<
|
|
169
|
+
result: openJson<HostBootstrap>("HostBootstrap"),
|
|
167
170
|
}),
|
|
168
171
|
},
|
|
169
172
|
external: {
|
|
170
173
|
set: defineOperation({
|
|
171
174
|
id: "ragents.external.set",
|
|
172
|
-
description: "
|
|
175
|
+
description: "Turn external access on or off; only from the local machine. Right: settings.write.",
|
|
173
176
|
rights: ["settings.write"],
|
|
174
177
|
input: Type.Object({ state: Type.Union([Type.Literal("on"), Type.Literal("off")]) }, { additionalProperties: false }),
|
|
175
178
|
result: Type.Object({ external: Type.Boolean() }),
|
|
@@ -178,20 +181,20 @@ export const coreContracts = {
|
|
|
178
181
|
channels: {
|
|
179
182
|
runs: defineChannel({
|
|
180
183
|
id: "ragents.runs",
|
|
181
|
-
description: "
|
|
184
|
+
description: "Reports every change of the run list. Right: runs.read.",
|
|
182
185
|
rights: ["runs.read"],
|
|
183
186
|
params: Type.Object({}, { additionalProperties: false }),
|
|
184
187
|
message: Type.Object({ type: Type.Literal("changed") }),
|
|
185
188
|
}),
|
|
186
189
|
run: defineChannel({
|
|
187
190
|
id: "ragents.run",
|
|
188
|
-
description: "
|
|
191
|
+
description: "Reports every new journal event of a run; first ready, then run. Rights as for reading the run.",
|
|
189
192
|
params: Type.Object({ runId }, { additionalProperties: false }),
|
|
190
193
|
message: Type.Object({ kind: Type.Union([Type.Literal("ready"), Type.Literal("run")]) }),
|
|
191
194
|
}),
|
|
192
195
|
chat: defineChannel({
|
|
193
196
|
id: "ragents.chat",
|
|
194
|
-
description: "
|
|
197
|
+
description: "The coordinator's chat history: first the stored history, then live. Rights as for reading the run.",
|
|
195
198
|
params: Type.Object({ runId }, { additionalProperties: false }),
|
|
196
199
|
message: openJson<ChatEvent>("ChatEvent"),
|
|
197
200
|
}),
|
|
@@ -25,12 +25,14 @@ export interface CoreMethodSources {
|
|
|
25
25
|
saveTitleModelSettings: (value: unknown) => Promise<TitleModelSettings>;
|
|
26
26
|
};
|
|
27
27
|
plugins: PluginHost;
|
|
28
|
+
/** The RAgents version of this server; a UI with a different version shows the difference. */
|
|
29
|
+
version: string;
|
|
28
30
|
global: GlobalRunPolicy | undefined;
|
|
29
|
-
/**
|
|
31
|
+
/** The user of a run: null without an owner, undefined for an id without a run. */
|
|
30
32
|
runOwner: (runId: string) => string | null | undefined;
|
|
31
|
-
/**
|
|
33
|
+
/** Whether only the owner operates the run. */
|
|
32
34
|
runOwnerOnly: (runId: string) => boolean;
|
|
33
|
-
/**
|
|
35
|
+
/** Without sign-in and access token, settings are readable only from the local machine. */
|
|
34
36
|
settingsGuarded: () => boolean;
|
|
35
37
|
external: { open: () => boolean; set: (value: boolean) => Promise<void> };
|
|
36
38
|
}
|
|
@@ -39,7 +41,7 @@ const userOf = (access: AccessContext): ChatUser | undefined => access.user ? {
|
|
|
39
41
|
|
|
40
42
|
const userIdOf = (access: AccessContext): string | null => access.user?.id ?? null;
|
|
41
43
|
|
|
42
|
-
/**
|
|
44
|
+
/** The UI context names the run open when sending; it too is an access to that run. */
|
|
43
45
|
const locatedRun = (userLocation: unknown): string | undefined => {
|
|
44
46
|
const named = typeof userLocation === "object" && userLocation !== null && "runId" in userLocation
|
|
45
47
|
? (userLocation as { runId: unknown }).runId : undefined;
|
|
@@ -50,7 +52,7 @@ const messageOf = (text: string | undefined, attachments: unknown) => {
|
|
|
50
52
|
try {
|
|
51
53
|
const trimmed = text?.trim() ?? "";
|
|
52
54
|
const parsed = parseChatAttachments(attachments);
|
|
53
|
-
if (!trimmed && parsed.length === 0) throw new Error("Text
|
|
55
|
+
if (!trimmed && parsed.length === 0) throw new Error("Text or attachments are missing");
|
|
54
56
|
return { text: trimmed, attachments: parsed };
|
|
55
57
|
} catch (error) {
|
|
56
58
|
throw new DomainError("invalid-message", error instanceof Error ? error.message : String(error), 400);
|
|
@@ -59,15 +61,15 @@ const messageOf = (text: string | undefined, attachments: unknown) => {
|
|
|
59
61
|
|
|
60
62
|
const TECHNICAL_ATTACHMENT_ERRORS = ["attachment-model-unsupported", "attachment-tools-required", "attachments-unsupported"];
|
|
61
63
|
|
|
62
|
-
/**
|
|
64
|
+
/** Without runs.inspect, the user gets only the general notice on technical errors, as before. */
|
|
63
65
|
const guardedForUser = async <T>(access: AccessContext, work: () => Promise<T>): Promise<T> => {
|
|
64
66
|
try {
|
|
65
67
|
return await work();
|
|
66
68
|
} catch (error) {
|
|
67
69
|
if (access.can("runs.inspect")) throw error;
|
|
68
70
|
const technical = error instanceof DomainError && TECHNICAL_ATTACHMENT_ERRORS.includes(error.code);
|
|
69
|
-
if (technical) throw new DomainError(error.code, "
|
|
70
|
-
if (!(error instanceof DomainError) || error.status >= 500) throw new DomainError("request-failed", "
|
|
71
|
+
if (technical) throw new DomainError(error.code, "This agent cannot process the attached file.", error.status);
|
|
72
|
+
if (!(error instanceof DomainError) || error.status >= 500) throw new DomainError("request-failed", "The request could not be processed.", 500);
|
|
71
73
|
throw error;
|
|
72
74
|
}
|
|
73
75
|
};
|
|
@@ -80,10 +82,10 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
80
82
|
return sessions.get(runId);
|
|
81
83
|
};
|
|
82
84
|
const assertMaySend = (access: AccessContext, runId: string) => {
|
|
83
|
-
if (!access.can("runs.create") && !sessions.hasRun?.(runId) && !global?.isCoordinator(runId)) throw new DomainError("access-denied", "
|
|
85
|
+
if (!access.can("runs.create") && !sessions.hasRun?.(runId) && !global?.isCoordinator(runId)) throw new DomainError("access-denied", "Free runs are not enabled for this access.", 403);
|
|
84
86
|
};
|
|
85
87
|
const assertSettingsReachable = (local: boolean) => {
|
|
86
|
-
if (!local && sources.settingsGuarded()) throw new DomainError("settings-local-only", "
|
|
88
|
+
if (!local && sources.settingsGuarded()) throw new DomainError("settings-local-only", "Settings are only available locally or with an access token", 403);
|
|
87
89
|
};
|
|
88
90
|
return [
|
|
89
91
|
implement(coreContracts.runs.list, (_input, { access }) => sessions.list(runListScope(access, policy))),
|
|
@@ -100,14 +102,14 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
100
102
|
implement(coreContracts.chat.sendToActor, async ({ runId, actorId, text, attachments }, { access }) => {
|
|
101
103
|
assertMaySend(access, runId);
|
|
102
104
|
const current = await session(access, runId, "write");
|
|
103
|
-
if (!current.sendToActor) throw new DomainError("actor-send-unavailable", "Actor
|
|
105
|
+
if (!current.sendToActor) throw new DomainError("actor-send-unavailable", "Actor messages are not available", 404);
|
|
104
106
|
const message = messageOf(text, attachments);
|
|
105
107
|
await guardedForUser(access, () => current.sendToActor!(actorId, message.text, message.attachments, userOf(access)));
|
|
106
108
|
return null;
|
|
107
109
|
}),
|
|
108
110
|
implement(coreContracts.chat.start, async ({ runId, entry, input }, { access }) => {
|
|
109
111
|
const trimmed = entry.trim();
|
|
110
|
-
if (!canStartEntry(access, trimmed)) throw new DomainError("access-denied", "
|
|
112
|
+
if (!canStartEntry(access, trimmed)) throw new DomainError("access-denied", "This setup is not enabled for this access.", 403);
|
|
111
113
|
const current = await session(access, runId, "write");
|
|
112
114
|
current.start(trimmed, input === undefined ? null : input, userOf(access));
|
|
113
115
|
return null;
|
|
@@ -119,13 +121,13 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
119
121
|
}),
|
|
120
122
|
implement(coreContracts.chat.capabilities, async ({ runId, actor }, { access }) => {
|
|
121
123
|
const current = await session(access, runId, "read");
|
|
122
|
-
if (!current.capabilities) throw new DomainError("capabilities-unavailable", "
|
|
124
|
+
if (!current.capabilities) throw new DomainError("capabilities-unavailable", "Model capabilities are not available", 404);
|
|
123
125
|
const capabilities = await current.capabilities(actor ?? "primary", userIdOf(access));
|
|
124
126
|
return access.can("runs.inspect") ? capabilities : { ...capabilities, model: "" };
|
|
125
127
|
}),
|
|
126
128
|
implement(coreContracts.chat.actorHistory, async ({ runId }, { access }) => {
|
|
127
129
|
const current = await session(access, runId, "read");
|
|
128
|
-
if (!current.actorConversations) throw new DomainError("actor-history-unavailable", "Actor
|
|
130
|
+
if (!current.actorConversations) throw new DomainError("actor-history-unavailable", "Actor histories are not available", 404);
|
|
129
131
|
return accessibleActorConversations(current.actorConversations(), access);
|
|
130
132
|
}),
|
|
131
133
|
implement(coreContracts.startOptions.list, ({ runId }, { access }) =>
|
|
@@ -139,23 +141,23 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
139
141
|
implement(coreContracts.transfer.export, ({ runId }) => sessions.exportRun(runId)),
|
|
140
142
|
implement(coreContracts.transfer.import, ({ archive, workspacePath }) => {
|
|
141
143
|
const decoded = Buffer.from(archive, "base64");
|
|
142
|
-
if (decoded.length === 0) throw new DomainError("run-transfer-invalid", "
|
|
144
|
+
if (decoded.length === 0) throw new DomainError("run-transfer-invalid", "The archive is empty.", 400);
|
|
143
145
|
return sessions.importRun(decoded, workspacePath);
|
|
144
146
|
}),
|
|
145
147
|
implement(coreContracts.settings.read, (_input, { local }) => { assertSettingsReachable(local); return sessions.settings(); }),
|
|
146
148
|
implement(coreContracts.settings.skill, ({ id }, { local }) => { assertSettingsReachable(local); return sessions.skill(id); }),
|
|
147
149
|
implement(coreContracts.settings.titlesRead, (_input, { local }) => { assertSettingsReachable(local); return sessions.titleModelSettings(); }),
|
|
148
150
|
implement(coreContracts.settings.titlesSave, ({ value }, { local }) => { assertSettingsReachable(local); return sessions.saveTitleModelSettings(value); }),
|
|
149
|
-
implement(coreContracts.plugins.bootstrap, (_input, { access }) => sources.plugins.publicProfile(access)),
|
|
151
|
+
implement(coreContracts.plugins.bootstrap, (_input, { access }) => ({ ...sources.plugins.publicProfile(access), version: sources.version })),
|
|
150
152
|
implement(coreContracts.external.set, async ({ state }, { local }) => {
|
|
151
|
-
if (!local) throw new DomainError("local-only", "
|
|
153
|
+
if (!local) throw new DomainError("local-only", "Can only be switched locally", 403);
|
|
152
154
|
await sources.external.set(state === "on");
|
|
153
155
|
return { external: sources.external.open() };
|
|
154
156
|
}),
|
|
155
157
|
];
|
|
156
158
|
};
|
|
157
159
|
|
|
158
|
-
export const coreChannels = (sources: Pick<CoreMethodSources, "sessions" | "global" | "runOwner" | "runOwnerOnly">): ChannelContribution[] => {
|
|
160
|
+
export const coreChannels = (sources: Pick<CoreMethodSources, "sessions" | "plugins" | "global" | "runOwner" | "runOwnerOnly">): ChannelContribution[] => {
|
|
159
161
|
const { sessions, global } = sources;
|
|
160
162
|
const policy: RunAccessPolicy = { global, ownerOf: sources.runOwner, ownerOnly: sources.runOwnerOnly };
|
|
161
163
|
return [
|
|
@@ -174,7 +176,7 @@ export const coreChannels = (sources: Pick<CoreMethodSources, "sessions" | "glob
|
|
|
174
176
|
assertRunRights(access, runId, "read", policy);
|
|
175
177
|
const current = await sessions.get(runId);
|
|
176
178
|
return current.subscribe((event) => {
|
|
177
|
-
const visible = accessibleChatEvent(event, access);
|
|
179
|
+
const visible = accessibleChatEvent(event, access, sources.plugins.accessProjections);
|
|
178
180
|
if (visible) emit(visible);
|
|
179
181
|
});
|
|
180
182
|
}),
|