@schlenkr/ragents 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +4 -4
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +29 -29
- package/apps/server/src/api/core-methods.ts +17 -17
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +6 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +61 -56
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +23 -23
- package/apps/server/src/ragents/global-chat.ts +8 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +48 -48
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +53 -54
- package/apps/web/dist/help/guide-clients.md +50 -51
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +196 -144
- package/apps/web/dist/help/mini-app.css +6 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +26 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +28 -28
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +225 -225
- package/bundles/ragents.actor-programs/server/index.js.map +2 -2
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -2
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +2 -2
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +98 -98
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +81 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/plugin-host.ts +119 -119
- package/packages/ragents/src/plugin-types.ts +16 -16
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +12 -12
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -2
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +6 -6
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +7 -7
- package/plugins/ragents.workspace/server/index.ts +3 -3
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
- package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
} from "./run-transfer.js";
|
|
32
32
|
import type { StartOptionState } from "./plugin-support/start-options-contract.js";
|
|
33
33
|
import { ALIAS_PROVIDER, validatedModelAliases } from "./plugin-support/model-aliases.js";
|
|
34
|
+
import { configuredModelProviders, modelProviderRegistration } from "./plugin-support/model-providers.js";
|
|
34
35
|
import { runScriptFromDirectory } from "./plugin-support/run-scripts.js";
|
|
35
36
|
import { createEngine, SessionWorkspaces, type Engine } from "./ragents/engine.js";
|
|
36
37
|
import type { ProductProfileFactory } from "./ragents/host-services.js";
|
|
@@ -48,7 +49,7 @@ import { sandboxServicesToken } from "./plugin-support/workspace-sandbox-host.js
|
|
|
48
49
|
import { parseRunPreparationRequest, prepareRunMessage } from "./run-preparation.js";
|
|
49
50
|
import type { RunPreparationResponse } from "./run-preparation-contract.js";
|
|
50
51
|
|
|
51
|
-
/**
|
|
52
|
+
/** The commit of the running host: from the built package, otherwise from the checkout. */
|
|
52
53
|
const hostVersionOf = (): string => readHostPackage()?.hostVersion ?? readHostVersion();
|
|
53
54
|
|
|
54
55
|
/** accepted: the delete intent is durable and the run is hidden; done: the cleanup job has finished. */
|
|
@@ -56,13 +57,13 @@ interface DeleteJob { accepted: Promise<void>; done: Promise<void> }
|
|
|
56
57
|
|
|
57
58
|
type ListedSession = SessionInfo & {
|
|
58
59
|
running: boolean;
|
|
59
|
-
/**
|
|
60
|
+
/** Whether the caller reaches the run's workspace; otherwise UIs hide what needs it. */
|
|
60
61
|
workspaceAccessible: boolean;
|
|
61
62
|
metadata?: Readonly<Record<string, unknown>>;
|
|
62
63
|
metadataUnavailable?: Readonly<Record<string, string>>;
|
|
63
64
|
};
|
|
64
65
|
|
|
65
|
-
/**
|
|
66
|
+
/** The run list is queried often; this is the longest it waits for a metadata contribution. */
|
|
66
67
|
export const SESSION_METADATA_TIMEOUT_MS = 1_500;
|
|
67
68
|
|
|
68
69
|
export class RunSessionProvider implements ChatSessionProvider {
|
|
@@ -81,7 +82,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
81
82
|
sessionsDir: layout.sessionsDir,
|
|
82
83
|
modelRuntime: () => this.getModelRuntime(),
|
|
83
84
|
onTitle: () => this.notifyList(),
|
|
84
|
-
onError: (error) => console.warn("
|
|
85
|
+
onError: (error) => console.warn("Title compaction failed:", error),
|
|
85
86
|
});
|
|
86
87
|
readonly plugins: PluginHost;
|
|
87
88
|
private shutdownPromise: Promise<void> | undefined;
|
|
@@ -89,7 +90,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
89
90
|
private readonly globalResets = new Map<string, Promise<void>>();
|
|
90
91
|
private readonly globalResetsRequested = new Set<string>();
|
|
91
92
|
private transferring = false;
|
|
92
|
-
/**
|
|
93
|
+
/** The address at which this server offers its API; none without HTTP (stdio only). */
|
|
93
94
|
private readonly apiBaseUrl: string | undefined;
|
|
94
95
|
|
|
95
96
|
constructor(profileFactory: ProductProfileFactory, apiBaseUrl: string | undefined) {
|
|
@@ -103,6 +104,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
103
104
|
runtime: () => this.requireEngine().runtime,
|
|
104
105
|
sessionWorkspaceFor: (runId) => this.sessionWorkspace(runId, () => {}),
|
|
105
106
|
sessions: () => this.sessionManagement(),
|
|
107
|
+
modelRuntime: () => this.getModelRuntime(),
|
|
106
108
|
...(apiBaseUrl === undefined ? {} : { apiBaseUrl }),
|
|
107
109
|
});
|
|
108
110
|
}
|
|
@@ -110,8 +112,8 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
110
112
|
private requireContract(token: ServiceToken<unknown>): void {
|
|
111
113
|
if (this.plugins.optionalService(token) !== undefined) return;
|
|
112
114
|
throw new Error(
|
|
113
|
-
`
|
|
114
|
-
+ "
|
|
115
|
+
`The profile does not provide the required contract ${token.id}. `
|
|
116
|
+
+ "A product plugin must register it with host.provide(...).",
|
|
115
117
|
);
|
|
116
118
|
}
|
|
117
119
|
|
|
@@ -135,7 +137,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
135
137
|
for (const user of [...configuredUsers() ?? [], ...anonymousUser ? [anonymousUser] : []]) {
|
|
136
138
|
for (const id of user.startEntries ?? []) {
|
|
137
139
|
const entry = entries.find((candidate) => candidate.id === id);
|
|
138
|
-
if (!entry || entry.action !== "script") throw new Error(`
|
|
140
|
+
if (!entry || entry.action !== "script") throw new Error(`User ${user.id}: ${id} is not a registered run setup`);
|
|
139
141
|
}
|
|
140
142
|
}
|
|
141
143
|
this.requireContract(productRuntimeToken);
|
|
@@ -162,11 +164,11 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
162
164
|
for (const id of this.deleted) {
|
|
163
165
|
if (this.deleteRequested.has(id)) continue;
|
|
164
166
|
if (this.engine.journal.stateOf(id) || existsSync(layout.sessionDir(id))) {
|
|
165
|
-
throw new Error(`
|
|
167
|
+
throw new Error(`Archived run ${id} has active data again`);
|
|
166
168
|
}
|
|
167
169
|
}
|
|
168
170
|
for (const id of pendingDeletes) await this.beginDelete(id).done;
|
|
169
|
-
//
|
|
171
|
+
// A coordinator without a current access (the former shared one, a removed user) stays untouched.
|
|
170
172
|
const runIds = this.engine.journal.runIds().filter((runId) => !globalChat?.isCoordinator(runId) || this.coordinatorUser(runId) !== undefined);
|
|
171
173
|
await Promise.all(runIds.map((runId) => this.sessionWorkspace(runId, () => {})));
|
|
172
174
|
for (const runId of runIds) this.openSession(runId);
|
|
@@ -174,15 +176,18 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
174
176
|
}
|
|
175
177
|
|
|
176
178
|
private requireEngine(): Engine {
|
|
177
|
-
if (!this.engine) throw new Error("
|
|
179
|
+
if (!this.engine) throw new Error("The engine has not started yet");
|
|
178
180
|
return this.engine;
|
|
179
181
|
}
|
|
180
182
|
|
|
181
|
-
/**
|
|
183
|
+
/** The server's one model runtime; the plugins' and the profile's providers and the profile's aliases are in place before anyone looks up a model. */
|
|
182
184
|
private getModelRuntime(): Promise<ModelRuntime> {
|
|
183
185
|
return this.modelRuntime ??= this.plugins.profiles.providers().then((providers) => {
|
|
184
186
|
const runtime = ModelRuntime.create();
|
|
185
|
-
|
|
187
|
+
const profileProviders = configuredModelProviders().map(modelProviderRegistration);
|
|
188
|
+
const taken = profileProviders.find((provider) => providers.some((other) => other.id === provider.id));
|
|
189
|
+
if (taken) throw new Error(`MODEL_PROVIDERS: the provider ${taken.id} is already registered by a plugin`);
|
|
190
|
+
for (const provider of [...providers, ...profileProviders]) runtime.registerProvider(provider.id, provider.config);
|
|
186
191
|
const aliases = validatedModelAliases();
|
|
187
192
|
if (aliases.length > 0) runtime.registerAliases(ALIAS_PROVIDER, aliases);
|
|
188
193
|
return runtime;
|
|
@@ -190,7 +195,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
190
195
|
}
|
|
191
196
|
|
|
192
197
|
private requireTitleSettings(): TitleSettingsStore {
|
|
193
|
-
if (!this.titleSettings) throw new Error("
|
|
198
|
+
if (!this.titleSettings) throw new Error("The title model settings are not loaded yet.");
|
|
194
199
|
return this.titleSettings;
|
|
195
200
|
}
|
|
196
201
|
|
|
@@ -210,8 +215,8 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
210
215
|
|
|
211
216
|
private openSession(id: string, initialTitle?: string): RunChatSession {
|
|
212
217
|
this.ensureUsable(id);
|
|
213
|
-
const
|
|
214
|
-
if (
|
|
218
|
+
const existing = this.sessions.get(id);
|
|
219
|
+
if (existing) return existing;
|
|
215
220
|
const engine = this.requireEngine();
|
|
216
221
|
const productRuntime = this.plugins.service(productRuntimeToken);
|
|
217
222
|
const globalChat = this.plugins.optionalService(globalChatToken);
|
|
@@ -232,7 +237,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
232
237
|
const primary = view.actors.find((actor) => actor.id === view.primaryActorId);
|
|
233
238
|
if (primary && primary.kind !== "human" && (primary.toolNames === null
|
|
234
239
|
|| [...primary.toolNames].sort().join("\n") !== [...globalPolicy.toolNames].sort().join("\n"))) {
|
|
235
|
-
throw new DomainError("global-tools-changed", "
|
|
240
|
+
throw new DomainError("global-tools-changed", "The tools of the top-level coordinator have changed. Reset its conversation to use the current tools.", 409);
|
|
236
241
|
}
|
|
237
242
|
},
|
|
238
243
|
prepare: (runId) => this.prepareRun(runId),
|
|
@@ -261,12 +266,12 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
261
266
|
|
|
262
267
|
async prepareRunMessage(id: string, value: unknown, signal: AbortSignal, userId: string | null): Promise<RunPreparationResponse> {
|
|
263
268
|
this.ensureUsable(id);
|
|
264
|
-
if (this.runPreparations.has(id)) throw new DomainError("preparation-busy", "
|
|
269
|
+
if (this.runPreparations.has(id)) throw new DomainError("preparation-busy", "A response for this preparation is already being created.", 409);
|
|
265
270
|
const request = parseRunPreparationRequest(value);
|
|
266
271
|
const session = this.openSession(id);
|
|
267
272
|
const selection = session.preparationSelection(userId);
|
|
268
273
|
const prompt = this.plugins.optionalService(globalChatToken)?.preparationPrompt;
|
|
269
|
-
if (!prompt) throw new DomainError("preparation-unavailable", "
|
|
274
|
+
if (!prompt) throw new DomainError("preparation-unavailable", "The profile provides no preparation coordinator.", 409);
|
|
270
275
|
const controller = new AbortController();
|
|
271
276
|
const combined = AbortSignal.any([signal, controller.signal]);
|
|
272
277
|
const done = this.getModelRuntime().then(async (runtime) => {
|
|
@@ -281,7 +286,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
281
286
|
return done;
|
|
282
287
|
}
|
|
283
288
|
|
|
284
|
-
/**
|
|
289
|
+
/** Only visible runs get titles and metadata; without a scope all of them, without a workspace that only its owner operates. */
|
|
285
290
|
async list(scope?: RunListScope): Promise<SessionInfo[]> {
|
|
286
291
|
const visible = scope?.visible ?? (() => true);
|
|
287
292
|
const workspaceAccessible = scope?.workspaceAccessible ?? ((runId: string) => !this.runOwnerOnly(runId));
|
|
@@ -364,7 +369,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
364
369
|
for (const [optionId, value] of Object.entries(start.options ?? {})) await session.selectStartOption(optionId, value, start.user?.id ?? null);
|
|
365
370
|
if (start.kind === "script") await session.startAndWait(start.entryId, start.input, user);
|
|
366
371
|
else if (start.kind === "package") {
|
|
367
|
-
if (!local) throw new Error("
|
|
372
|
+
if (!local) throw new Error("The run script package was not loaded");
|
|
368
373
|
const { script, ...entry } = local;
|
|
369
374
|
await session.startPackageAndWait({ ...script, entry: { ...entry, coordinator: script.coordinator, owner: start.owner } }, start.input, user);
|
|
370
375
|
}
|
|
@@ -423,7 +428,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
423
428
|
return pathname === "/rpc" || pathname === "/rpc/stream" || pathname.startsWith("/files/") || this.plugins.isApiPath(pathname);
|
|
424
429
|
}
|
|
425
430
|
|
|
426
|
-
/**
|
|
431
|
+
/** Delivery routes name their run in the path; another user's run is as unreachable there as in a method. */
|
|
427
432
|
async pluginRoutes(req: IncomingMessage, res: ServerResponse, url: URL, access?: AccessContext): Promise<boolean> {
|
|
428
433
|
const named = runIdInPath(url.pathname);
|
|
429
434
|
if (named !== undefined && access && !runReachable(access, named, this.runAccess())) {
|
|
@@ -435,18 +440,18 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
435
440
|
}
|
|
436
441
|
|
|
437
442
|
private ensureUsable(id: string): void {
|
|
438
|
-
if (!isRunId(id)) throw new DomainError("invalid-run", `
|
|
443
|
+
if (!isRunId(id)) throw new DomainError("invalid-run", `Invalid run id: ${id}`, 400);
|
|
439
444
|
this.ensureAvailable();
|
|
440
445
|
if (this.globalResetsRequested.has(id)) {
|
|
441
|
-
throw new DomainError("conversation-resetting", "
|
|
446
|
+
throw new DomainError("conversation-resetting", "The global conversation is being reset. Please wait a moment or repeat the reset after an error.", 409);
|
|
442
447
|
}
|
|
443
|
-
if (this.deleteRequested.has(id)) throw new DomainError("run-deleting", "
|
|
444
|
-
if (this.deleted.has(id)) throw new DomainError("run-deleted", "
|
|
448
|
+
if (this.deleteRequested.has(id)) throw new DomainError("run-deleting", "The run is being deleted", 409);
|
|
449
|
+
if (this.deleted.has(id)) throw new DomainError("run-deleted", "The run was deleted", 410);
|
|
445
450
|
this.engine?.journal.assertRunAvailable(id);
|
|
446
451
|
}
|
|
447
452
|
|
|
448
453
|
private ensureAvailable(): void {
|
|
449
|
-
if (this.shutdownPromise) throw new DomainError("server-stopping", "
|
|
454
|
+
if (this.shutdownPromise) throw new DomainError("server-stopping", "The server is shutting down", 503);
|
|
450
455
|
}
|
|
451
456
|
|
|
452
457
|
private sessionWorkspace(id: string, emitSystem: (text: string) => void): Promise<SessionWorkspace> {
|
|
@@ -486,10 +491,10 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
486
491
|
|
|
487
492
|
delete(id: string): Promise<void> {
|
|
488
493
|
if (this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) {
|
|
489
|
-
return Promise.reject(new DomainError("global-chat-protected", "
|
|
494
|
+
return Promise.reject(new DomainError("global-chat-protected", "The global coordinator cannot be deleted", 409));
|
|
490
495
|
}
|
|
491
|
-
if (!isRunId(id)) return Promise.reject(new Error(`
|
|
492
|
-
if (this.shutdownPromise) return Promise.reject(new Error("
|
|
496
|
+
if (!isRunId(id)) return Promise.reject(new Error(`Invalid run id: ${id}`));
|
|
497
|
+
if (this.shutdownPromise) return Promise.reject(new Error("The server is shutting down"));
|
|
493
498
|
return this.beginDelete(id).accepted;
|
|
494
499
|
}
|
|
495
500
|
|
|
@@ -497,16 +502,16 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
497
502
|
return this.deleting.get(id)?.done;
|
|
498
503
|
}
|
|
499
504
|
|
|
500
|
-
/**
|
|
505
|
+
/** A stopped run as an archive: journal, payloads, the contents it refers to, and its plugin storage. */
|
|
501
506
|
exportRun(id: string): Promise<RunTransferExport> {
|
|
502
507
|
this.ensureUsable(id);
|
|
503
508
|
if (this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) {
|
|
504
|
-
return Promise.reject(new DomainError("global-chat-protected", "
|
|
509
|
+
return Promise.reject(new DomainError("global-chat-protected", "The global coordinator does not move", 409));
|
|
505
510
|
}
|
|
506
511
|
return this.runTransfer(async () => {
|
|
507
512
|
const engine = this.requireEngine();
|
|
508
513
|
const state = engine.journal.stateOf(id);
|
|
509
|
-
if (!state) throw new DomainError("run-not-found", `
|
|
514
|
+
if (!state) throw new DomainError("run-not-found", `The run ${id} does not exist`, 404);
|
|
510
515
|
assertRunStopped({
|
|
511
516
|
runId: id,
|
|
512
517
|
state,
|
|
@@ -535,7 +540,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
535
540
|
});
|
|
536
541
|
}
|
|
537
542
|
|
|
538
|
-
/**
|
|
543
|
+
/** Accepts an archive, replays its journal and opens the run stopped; `workspacePath` replaces a binding to a project folder. */
|
|
539
544
|
importRun(archive: Buffer, workspacePath: string | undefined): Promise<RunTransferImport> {
|
|
540
545
|
this.ensureAvailable();
|
|
541
546
|
return this.runTransfer(async () => {
|
|
@@ -582,20 +587,20 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
582
587
|
private workspaceTransfer(): WorkspaceTransfer {
|
|
583
588
|
const transfer = this.plugins.service(workspaceRuntimeToken).transfer;
|
|
584
589
|
if (!transfer) {
|
|
585
|
-
throw new DomainError("run-transfer-unsupported", "
|
|
590
|
+
throw new DomainError("run-transfer-unsupported", "This profile does not support moving runs: its workspace reports no binding.", 409);
|
|
586
591
|
}
|
|
587
592
|
return transfer;
|
|
588
593
|
}
|
|
589
594
|
|
|
590
595
|
private runTransfer<T>(work: () => Promise<T>): Promise<T> {
|
|
591
|
-
if (this.transferring) return Promise.reject(new DomainError("run-transfer-busy", "
|
|
596
|
+
if (this.transferring) return Promise.reject(new DomainError("run-transfer-busy", "Another run move is in progress on this server.", 409));
|
|
592
597
|
this.transferring = true;
|
|
593
598
|
return work().finally(() => { this.transferring = false; });
|
|
594
599
|
}
|
|
595
600
|
|
|
596
601
|
private assertRunIdAvailable(id: string): void {
|
|
597
602
|
if (this.plugins.optionalService(globalChatToken)?.isCoordinator(id)) {
|
|
598
|
-
throw new DomainError("run-transfer-exists", `
|
|
603
|
+
throw new DomainError("run-transfer-exists", `The id ${id} is reserved for the top-level coordinators of this server.`, 409);
|
|
599
604
|
}
|
|
600
605
|
const engine = this.requireEngine();
|
|
601
606
|
assertRunIdFree({
|
|
@@ -610,8 +615,8 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
610
615
|
const running = this.globalResets.get(id);
|
|
611
616
|
if (running) return running;
|
|
612
617
|
const policy = this.plugins.optionalService(globalChatToken);
|
|
613
|
-
if (!policy?.resetIntentDirectory) return Promise.reject(new DomainError("conversation-reset-unavailable", "
|
|
614
|
-
if (!policy.isCoordinator(id)) return Promise.reject(new DomainError("conversation-reset-unavailable", `${id}
|
|
618
|
+
if (!policy?.resetIntentDirectory) return Promise.reject(new DomainError("conversation-reset-unavailable", "This profile offers no conversation reset.", 404));
|
|
619
|
+
if (!policy.isCoordinator(id)) return Promise.reject(new DomainError("conversation-reset-unavailable", `${id} is not a global coordinator.`, 404));
|
|
615
620
|
const intentFile = path.join(policy.resetIntentDirectory, `${id}.json`);
|
|
616
621
|
this.globalResetsRequested.add(id);
|
|
617
622
|
const operation = this.resetGlobalInner(id, intentFile, policy).catch((error: unknown) => {
|
|
@@ -659,7 +664,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
659
664
|
private async validateGlobalResetIntent(file: string, id: string): Promise<void> {
|
|
660
665
|
const marker: unknown = JSON.parse(await readFile(file, "utf8"));
|
|
661
666
|
if (!isRunId(id) || !marker || typeof marker !== "object" || !("version" in marker) || marker.version !== 1 || !("runId" in marker) || marker.runId !== id) {
|
|
662
|
-
throw new Error("
|
|
667
|
+
throw new Error("The conversation reset marker is invalid");
|
|
663
668
|
}
|
|
664
669
|
}
|
|
665
670
|
|
|
@@ -671,7 +676,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
671
676
|
}
|
|
672
677
|
}
|
|
673
678
|
|
|
674
|
-
/**
|
|
679
|
+
/** Who owns a coordinator: the user whose id it carries, without sign-in the one access; otherwise nobody. */
|
|
675
680
|
private coordinatorUser(id: string): { userId: string | null } | undefined {
|
|
676
681
|
const policy = this.plugins.optionalService(globalChatToken);
|
|
677
682
|
if (!policy?.isCoordinator(id)) return undefined;
|
|
@@ -682,8 +687,8 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
682
687
|
}
|
|
683
688
|
|
|
684
689
|
private beginDelete(id: string): DeleteJob {
|
|
685
|
-
const
|
|
686
|
-
if (
|
|
690
|
+
const existing = this.deleting.get(id);
|
|
691
|
+
if (existing) return existing;
|
|
687
692
|
this.deleteRequested.add(id);
|
|
688
693
|
this.runPreparations.get(id)?.controller.abort();
|
|
689
694
|
const accepted = this.persistDeleteIntent(id)
|
|
@@ -700,7 +705,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
700
705
|
});
|
|
701
706
|
const job = { accepted, done };
|
|
702
707
|
this.deleting.set(id, job);
|
|
703
|
-
done.catch((error: unknown) => { if (this.deleteRequested.has(id)) console.warn(`
|
|
708
|
+
done.catch((error: unknown) => { if (this.deleteRequested.has(id)) console.warn(`Delete job for ${id} failed:`, error); });
|
|
704
709
|
return job;
|
|
705
710
|
}
|
|
706
711
|
|
|
@@ -713,7 +718,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
713
718
|
return this.shutdownPromise;
|
|
714
719
|
}
|
|
715
720
|
|
|
716
|
-
/**
|
|
721
|
+
/** Releases the journal lock synchronously; for the exit hook, when no orderly shutdown runs anymore. */
|
|
717
722
|
closeJournal(): void {
|
|
718
723
|
this.engine?.journal.close();
|
|
719
724
|
}
|
|
@@ -760,7 +765,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
760
765
|
.slice(0, 3)
|
|
761
766
|
.filter((result): result is PromiseRejectedResult => result.status === "rejected")
|
|
762
767
|
.map((result) => result.reason);
|
|
763
|
-
if (failures.length > 0) throw new AggregateError(failures, `Run ${id}
|
|
768
|
+
if (failures.length > 0) throw new AggregateError(failures, `Run ${id} could not be stopped`);
|
|
764
769
|
await this.plugins.lifecycle.deleteSession(id);
|
|
765
770
|
await this.archiveSession(id);
|
|
766
771
|
this.engine?.runtime.forgetRun(id);
|
|
@@ -780,7 +785,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
780
785
|
.map((entry) => entry.name.slice(0, -5));
|
|
781
786
|
|
|
782
787
|
for (const id of ids) {
|
|
783
|
-
if (!isRunId(id)) throw new Error(`
|
|
788
|
+
if (!isRunId(id)) throw new Error(`Invalid delete intent: ${id}`);
|
|
784
789
|
await this.validateDeleteIntent(id);
|
|
785
790
|
}
|
|
786
791
|
|
|
@@ -793,7 +798,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
793
798
|
|
|
794
799
|
for (const entry of entries) {
|
|
795
800
|
if (!entry.isDirectory() || entry.name === "ohne-session") continue;
|
|
796
|
-
if (!isRunId(entry.name)) throw new Error(`
|
|
801
|
+
if (!isRunId(entry.name)) throw new Error(`Invalid run archive: ${entry.name}`);
|
|
797
802
|
ids.push(entry.name);
|
|
798
803
|
}
|
|
799
804
|
|
|
@@ -828,14 +833,14 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
828
833
|
try {
|
|
829
834
|
marker = JSON.parse(source);
|
|
830
835
|
} catch {
|
|
831
|
-
throw new Error(`Delete
|
|
836
|
+
throw new Error(`Delete intent ${id} contains no valid JSON`);
|
|
832
837
|
}
|
|
833
838
|
if (!marker || typeof marker !== "object" || Array.isArray(marker)) {
|
|
834
|
-
throw new Error(`Delete
|
|
839
|
+
throw new Error(`Delete intent ${id} has an invalid format`);
|
|
835
840
|
}
|
|
836
841
|
const record = marker as { version?: unknown; runId?: unknown };
|
|
837
842
|
if (record.version !== 1 || record.runId !== id) {
|
|
838
|
-
throw new Error(`Delete
|
|
843
|
+
throw new Error(`Delete intent ${id} does not match its file name`);
|
|
839
844
|
}
|
|
840
845
|
}
|
|
841
846
|
|
|
@@ -852,7 +857,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
852
857
|
const globalChat = this.plugins.optionalService(globalChatToken);
|
|
853
858
|
if (globalChat?.isCoordinator(id)) {
|
|
854
859
|
const owner = this.coordinatorUser(id);
|
|
855
|
-
if (!owner) throw new DomainError("coordinator-without-access", `
|
|
860
|
+
if (!owner) throw new DomainError("coordinator-without-access", `The coordinator ${id} belongs to no access of this profile.`, 409);
|
|
856
861
|
const directory = globalChat.workspaceDirectory(id);
|
|
857
862
|
await mkdir(directory, { recursive: true, mode: ROOT_ONLY_MODE });
|
|
858
863
|
const cwd = await realpath(directory);
|
|
@@ -860,7 +865,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
860
865
|
const users = configuredUsers();
|
|
861
866
|
return {
|
|
862
867
|
cwd,
|
|
863
|
-
//
|
|
868
|
+
// With users, the journal folder would contain other users' runs; the coordinator reads through its user's methods.
|
|
864
869
|
hostSandbox: { home: cwd, readOnlyRoots: users ? [] : [{ directory: layout.runsDir, environmentVariable: "RAGENTS_JOURNAL_DIR" }] },
|
|
865
870
|
extraEnv: {
|
|
866
871
|
...(this.apiBaseUrl ? { RAGENTS_API_BASE_URL: this.apiBaseUrl } : {}),
|
|
@@ -877,7 +882,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
877
882
|
private async archiveSession(id: string): Promise<void> {
|
|
878
883
|
const target = layout.archiveSessionDir(id);
|
|
879
884
|
await mkdir(target, { recursive: true, mode: ROOT_ONLY_MODE });
|
|
880
|
-
//
|
|
885
|
+
// Journals before format 7 kept the model context under sessions/<id>/chat; it is preserved in the archive.
|
|
881
886
|
const moves = [
|
|
882
887
|
[path.join(layout.sessionDir(id), "chat"), "chat"],
|
|
883
888
|
[path.join(layout.runsDir, id), "run"],
|
|
@@ -885,7 +890,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
885
890
|
] as const;
|
|
886
891
|
for (const [from, name] of moves) {
|
|
887
892
|
if (existsSync(from) && existsSync(path.join(target, name))) {
|
|
888
|
-
throw new Error(`
|
|
893
|
+
throw new Error(`Archive ${id}/${name} already exists and is not overwritten`);
|
|
889
894
|
}
|
|
890
895
|
}
|
|
891
896
|
for (const [from, name] of moves) {
|
|
@@ -901,7 +906,7 @@ export class RunSessionProvider implements ChatSessionProvider {
|
|
|
901
906
|
}
|
|
902
907
|
}
|
|
903
908
|
|
|
904
|
-
/**
|
|
909
|
+
/** A locked run without plugin metadata and workspace; without loaded state, the journal file counts. */
|
|
905
910
|
const lockedSession = (failure: JournalLoadFailure, journal: Journal): ListedSession => {
|
|
906
911
|
const state = journal.stateOf(failure.runId);
|
|
907
912
|
const updatedAt = state ? Date.parse(journal.updatedAt(failure.runId) ?? state.createdAt) : statSync(failure.path, { throwIfNoEntry: false })?.mtimeMs ?? 0;
|
|
@@ -17,7 +17,7 @@ export function actorChatHistoryOf(view: RunView, events: readonly JournalEvent[
|
|
|
17
17
|
const positions = new ChatTextPositions();
|
|
18
18
|
const actorOf = (id: string) => {
|
|
19
19
|
const actor = view.actors.find((entry) => entry.id === id);
|
|
20
|
-
if (!actor) throw new DomainError("actor-not-found", `
|
|
20
|
+
if (!actor) throw new DomainError("actor-not-found", `The actor ${id} is missing from the run view.`, 404);
|
|
21
21
|
return actor;
|
|
22
22
|
};
|
|
23
23
|
const colorOf = (id: string) => {
|
|
@@ -29,14 +29,14 @@ export function actorChatHistoryOf(view: RunView, events: readonly JournalEvent[
|
|
|
29
29
|
view.turns.find((entry) => entry.id === turnId)?.toolCalls.filter((call) => call.status === "interrupted").map((call) => call.id) ?? [];
|
|
30
30
|
const turnActorOf = (id: string) => {
|
|
31
31
|
const turn = view.turns.find((entry) => entry.id === id);
|
|
32
|
-
if (!turn) throw new Error(`
|
|
32
|
+
if (!turn) throw new Error(`The turn ${id} is missing from the run view.`);
|
|
33
33
|
return turn.actorId;
|
|
34
34
|
};
|
|
35
35
|
const interruptingCommands = new Set(events.flatMap((event) =>
|
|
36
36
|
event.type === "turn.interrupted" ? [JSON.stringify([event.commandId, turnActorOf(event.payload.turnId)])] : []));
|
|
37
37
|
const append = (id: string, event: ChatEvent, source: JournalEvent) => {
|
|
38
38
|
const actor = actorOf(id);
|
|
39
|
-
if (actor.kind === "human") throw new DomainError("actor-not-executable", "
|
|
39
|
+
if (actor.kind === "human") throw new DomainError("actor-not-executable", "A human actor has no actor chat.", 400);
|
|
40
40
|
const previous = actors[id];
|
|
41
41
|
const next = applyEvent(previous, event);
|
|
42
42
|
if (next.length > previous.length) {
|
|
@@ -49,13 +49,13 @@ export function actorChatHistoryOf(view: RunView, events: readonly JournalEvent[
|
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
for (const event of events) {
|
|
52
|
-
if (event.runId !== view.id) throw new Error("
|
|
52
|
+
if (event.runId !== view.id) throw new Error("The actor journal belongs to a different run.");
|
|
53
53
|
const cursor = positions.observe(event);
|
|
54
54
|
const at = event.occurredAt;
|
|
55
55
|
switch (event.type) {
|
|
56
56
|
case "actor.input.enqueued": {
|
|
57
57
|
const input = view.inputs.find((entry) => entry.id === event.payload.inputId);
|
|
58
|
-
if (!input) throw new Error(`
|
|
58
|
+
if (!input) throw new Error(`The input ${event.payload.inputId} is missing from the run view.`);
|
|
59
59
|
if (input.lifecycle.kind === "discarded") break;
|
|
60
60
|
actorOf(input.actorId);
|
|
61
61
|
if (input.presentation === "background") break;
|
|
@@ -63,14 +63,14 @@ export function actorChatHistoryOf(view: RunView, events: readonly JournalEvent[
|
|
|
63
63
|
const sender = actorOf(input.enqueuedBy);
|
|
64
64
|
const attachments = input.artifactIds.map((id) => {
|
|
65
65
|
const artifact = view.artifacts.find((entry) => entry.id === id);
|
|
66
|
-
if (!artifact) throw new Error(`
|
|
66
|
+
if (!artifact) throw new Error(`The attachment ${id} is missing from the run view.`);
|
|
67
67
|
return { name: artifact.title, mediaType: artifact.mediaType, size: artifact.size,
|
|
68
68
|
url: attachmentContentPath(view.id, id) };
|
|
69
69
|
});
|
|
70
70
|
actors[input.actorId].push({ key: event.eventId, role: fromOwner ? "user" : "assistant", sender: input.enqueuedBy,
|
|
71
71
|
text: input.content, closed: true, at, inputId: input.id, ...(attachments.length ? { attachments } : {}),
|
|
72
72
|
...(fromOwner ? {} : { bubble: { color: colorOf(input.enqueuedBy),
|
|
73
|
-
label: input.subscriptionId ? "
|
|
73
|
+
label: input.subscriptionId ? "Delivered via subscription" : `Delivered by @${sender.handle}`, side: "start" } }),
|
|
74
74
|
});
|
|
75
75
|
break;
|
|
76
76
|
}
|
|
@@ -103,7 +103,7 @@ export function actorChatHistoryOf(view: RunView, events: readonly JournalEvent[
|
|
|
103
103
|
break;
|
|
104
104
|
case "action.resolved": {
|
|
105
105
|
const action = view.actions.find((entry) => entry.id === event.payload.actionId);
|
|
106
|
-
if (!action) throw new Error(`
|
|
106
|
+
if (!action) throw new Error(`The action ${event.payload.actionId} is missing from the run view.`);
|
|
107
107
|
if (actorOf(action.askedBy).kind !== "human") append(action.askedBy, actionResolvedEventOf(event), event);
|
|
108
108
|
break;
|
|
109
109
|
}
|
|
@@ -32,12 +32,12 @@ export class ChatTextPositions {
|
|
|
32
32
|
|
|
33
33
|
#turn(turnId: string) {
|
|
34
34
|
const turn = this.#turns.get(turnId);
|
|
35
|
-
if (!turn) throw new Error(`
|
|
35
|
+
if (!turn) throw new Error(`The journal start for turn ${turnId} is missing.`);
|
|
36
36
|
return turn;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
#cursor(sequence: number, offset: number): ChatTextCursor {
|
|
40
|
-
if (this.#conversationId === null) throw new Error("
|
|
40
|
+
if (this.#conversationId === null) throw new Error("The journal start of the run is missing.");
|
|
41
41
|
return { conversationId: this.#conversationId, sequence, offset };
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -13,7 +13,7 @@ export interface CoordinatorModelChoice {
|
|
|
13
13
|
|
|
14
14
|
export const storedModelChoice = (state: RunState | null): CoordinatorModelChoice => ({ model: storedModel(state), thinking: storedThinking(state) });
|
|
15
15
|
|
|
16
|
-
/**
|
|
16
|
+
/** The model of a turn of the run coordinator: the run's model choice, without one the model from creation. */
|
|
17
17
|
export const coordinatorSelection = (
|
|
18
18
|
catalog: ModelCatalog & { readonly modelList: readonly CatalogModel[] },
|
|
19
19
|
coordinator: Pick<CoordinatorDescriptor, "handle" | "profile">,
|
|
@@ -26,6 +26,6 @@ export const coordinatorSelection = (
|
|
|
26
26
|
model: choice.model,
|
|
27
27
|
...(isThinkingLevel(choice.thinking) ? { thinking: choice.thinking } : {}),
|
|
28
28
|
}, coordinator.handle, catalog.modelList);
|
|
29
|
-
if (execution.driver.kind !== "agent") throw new Error(`
|
|
29
|
+
if (execution.driver.kind !== "agent") throw new Error(`The coordinator's profile ${coordinator.profile} has no model runtime`);
|
|
30
30
|
return execution.driver.config;
|
|
31
31
|
};
|