@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
|
@@ -70,14 +70,14 @@ const messageOf = (error: unknown): string => error instanceof Error ? error.mes
|
|
|
70
70
|
|
|
71
71
|
const userIdOf = (user: ChatUser | undefined): string | null => user?.id ?? null;
|
|
72
72
|
|
|
73
|
-
/**
|
|
73
|
+
/** Who starts a run, through which template, and which start options it fixes. */
|
|
74
74
|
interface StartChoice {
|
|
75
75
|
readonly userId: string | null;
|
|
76
76
|
readonly entry: SessionStartedContext["startEntry"];
|
|
77
77
|
readonly fixed: ReadonlyMap<string, JsonValue>;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
/**
|
|
80
|
+
/** A start without a template fixes nothing. */
|
|
81
81
|
const freeChoice = (userId: string | null): StartChoice => ({ userId, entry: null, fixed: new Map() });
|
|
82
82
|
|
|
83
83
|
/** A script template together with the package the host installs when it is clicked. */
|
|
@@ -95,7 +95,7 @@ export interface RunChatSessionOptions {
|
|
|
95
95
|
assertUsable: (id: string) => void;
|
|
96
96
|
prepare: (id: string, emitSystem: (text: string) => void) => Promise<void>;
|
|
97
97
|
prepareWorkspace: (id: string, emitSystem: (text: string) => void) => Promise<void>;
|
|
98
|
-
/**
|
|
98
|
+
/** After the first actor is set up in the prepared workspace, before any actor gets input. */
|
|
99
99
|
started: (id: string, startEntry: SessionStartedContext["startEntry"]) => Promise<void>;
|
|
100
100
|
scriptEntryFor: (entryId: string) => RunScriptStart | undefined;
|
|
101
101
|
startEntryFor: (entryId: string) => PublicStartEntry | undefined;
|
|
@@ -170,15 +170,15 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
170
170
|
return this.#engine.startOptions.entries().map((entry) => this.#startOptionState(entry, userId));
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
/**
|
|
173
|
+
/** Before the start the run remembers the choice; afterwards it writes a changeable option to the journal. */
|
|
174
174
|
async selectStartOption(optionId: string, value: unknown, userId: string | null): Promise<StartOptionState> {
|
|
175
175
|
const entry = this.#engine.startOptions.entry(optionId);
|
|
176
|
-
if (!entry) throw new DomainError("option-unknown", `
|
|
176
|
+
if (!entry) throw new DomainError("option-unknown", `The start option ${optionId} is not registered.`, 404);
|
|
177
177
|
if (!entry.option.selectable()) {
|
|
178
|
-
throw new DomainError("option-not-selectable", `
|
|
178
|
+
throw new DomainError("option-not-selectable", `The start option ${optionId} is fixed by configuration.`, 409);
|
|
179
179
|
}
|
|
180
180
|
if (this.startLocked && !entry.option.changeable) {
|
|
181
|
-
throw new DomainError("option-locked", "
|
|
181
|
+
throw new DomainError("option-locked", "The run is already running, the start options are fixed.", 409);
|
|
182
182
|
}
|
|
183
183
|
const accepted = this.#engine.startOptions.accept(optionId, value, this.#startContext(userId));
|
|
184
184
|
if (!this.startLocked) {
|
|
@@ -197,7 +197,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
197
197
|
return this.#startOptionState(entry, userId);
|
|
198
198
|
}
|
|
199
199
|
|
|
200
|
-
/**
|
|
200
|
+
/** Another model must be able to read the attachments the coordinator's conversation already contains. */
|
|
201
201
|
async #assertCoordinatorCanRead(choice: { model?: string; thinking?: string }): Promise<void> {
|
|
202
202
|
const view = this.#engine.runtime.view(this.id);
|
|
203
203
|
const primary = primaryActorOf(view);
|
|
@@ -209,7 +209,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
209
209
|
const supported = await this.#engine.inputCapabilities(provider, model);
|
|
210
210
|
const missing = [...kinds].filter((kind) => (kind === "image" || kind === "video" || kind === "file") && !supported.includes(kind));
|
|
211
211
|
if (missing.length > 0) {
|
|
212
|
-
throw new DomainError("model-history-unsupported", `
|
|
212
|
+
throw new DomainError("model-history-unsupported", `The conversation already contains ${missing.join(", ")} attachments that ${modelLabel(provider, model)} cannot process; choose a suitable model.`, 400);
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
|
|
@@ -224,7 +224,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
224
224
|
return chosen ?? this.#engine.startOptions.defaultValue(entry.option.id, this.#startContext(choice.userId));
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
/**
|
|
227
|
+
/** The one place where a template fixes start options: accepted with the acting user; a different earlier value is an error. */
|
|
228
228
|
#startChoice(entry: PublicStartEntry, userId: string | null): StartChoice {
|
|
229
229
|
const state = this.#engine.journal.stateOf(this.id);
|
|
230
230
|
const fixed = new Map(Object.entries(entry.fixedStartOptions ?? {}).map(([optionId, value]) => {
|
|
@@ -232,8 +232,8 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
232
232
|
const chosen = this.startLocked ? storedStartOption(state, optionId) : this.#startValues.get(optionId);
|
|
233
233
|
if (chosen !== undefined && !isDeepStrictEqual(chosen, accepted)) {
|
|
234
234
|
throw new DomainError("start-option-fixed", this.startLocked
|
|
235
|
-
? `
|
|
236
|
-
: `
|
|
235
|
+
? `The template "${entry.title}" fixes the start option ${optionId}, but this run already has a different value there.`
|
|
236
|
+
: `The template "${entry.title}" fixes the start option ${optionId}, but a different value is chosen. Undo the choice or start without this template.`, 409);
|
|
237
237
|
}
|
|
238
238
|
return [optionId, accepted] as const;
|
|
239
239
|
}));
|
|
@@ -242,7 +242,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
242
242
|
|
|
243
243
|
#skillEntry(entryId: string): PublicStartEntry {
|
|
244
244
|
const entry = this.#startEntryFor(entryId);
|
|
245
|
-
if (!entry || entry.action !== "skill") throw new DomainError("entry-unknown", `
|
|
245
|
+
if (!entry || entry.action !== "skill") throw new DomainError("entry-unknown", `The template ${entryId} is not a skill template of this profile.`, 404);
|
|
246
246
|
return entry;
|
|
247
247
|
}
|
|
248
248
|
|
|
@@ -281,7 +281,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
281
281
|
return () => this.#listeners.delete(listener);
|
|
282
282
|
}
|
|
283
283
|
|
|
284
|
-
/**
|
|
284
|
+
/** With a skill template, the message starts a new run through it, with the start options it fixes. */
|
|
285
285
|
send(text: string, attachments?: ChatAttachmentInput[], userLocation?: unknown, user?: ChatUser, entryId?: string): Promise<void> {
|
|
286
286
|
return this.#track(() => this.#send(text, attachments, undefined, userLocation, user, entryId), false);
|
|
287
287
|
}
|
|
@@ -296,7 +296,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
296
296
|
|
|
297
297
|
actorConversations(): ActorConversations {
|
|
298
298
|
this.#assertUsable(this.id);
|
|
299
|
-
if (!this.#engine.journal.stateOf(this.id)) throw new DomainError("run-not-found", "
|
|
299
|
+
if (!this.#engine.journal.stateOf(this.id)) throw new DomainError("run-not-found", "The run does not exist.", 404);
|
|
300
300
|
return actorChatHistoryOf(this.#engine.runtime.view(this.id), this.#engine.runtime.events(this.id));
|
|
301
301
|
}
|
|
302
302
|
|
|
@@ -333,11 +333,11 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
#track(work: () => Promise<void>, reportError = true): Promise<void> {
|
|
336
|
-
if (this.#disposed) throw new Error("
|
|
336
|
+
if (this.#disposed) throw new Error("The run was deleted");
|
|
337
337
|
this.#assertUsable(this.id);
|
|
338
338
|
const operation = work();
|
|
339
339
|
const tracked = operation.catch((error: unknown) => {
|
|
340
|
-
if (reportError && !this.#disposed) this.#emit({ kind: "system", text: `
|
|
340
|
+
if (reportError && !this.#disposed) this.#emit({ kind: "system", text: `Error: ${messageOf(error)}` });
|
|
341
341
|
});
|
|
342
342
|
this.#pendingSends.add(tracked);
|
|
343
343
|
void tracked.then(
|
|
@@ -354,7 +354,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
354
354
|
|
|
355
355
|
async #stop(): Promise<void> {
|
|
356
356
|
if (this.#startCancellation && !this.#startCancellation.signal.aborted) {
|
|
357
|
-
const message = "
|
|
357
|
+
const message = "The start was cancelled by the operator.";
|
|
358
358
|
this.#startCancellation.abort(new DomainError("run-start-aborted", message, 409));
|
|
359
359
|
this.#setStartup({ status: "failed", message });
|
|
360
360
|
}
|
|
@@ -362,7 +362,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
362
362
|
if (this.#engine.journal.stateOf(this.id)) {
|
|
363
363
|
await this.#engine.stopRun(this.id, {
|
|
364
364
|
commandId: `chat-stop:${randomUUID()}`,
|
|
365
|
-
reason: "
|
|
365
|
+
reason: "Emergency stop by the operator",
|
|
366
366
|
});
|
|
367
367
|
}
|
|
368
368
|
} finally {
|
|
@@ -378,13 +378,13 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
378
378
|
}
|
|
379
379
|
|
|
380
380
|
postExtension(event: { pluginId: string; type: string; payload?: unknown }): void {
|
|
381
|
-
if (this.#disposed) throw new Error("
|
|
381
|
+
if (this.#disposed) throw new Error("The run was deleted");
|
|
382
382
|
this.#emit({ kind: "plugin", ...event });
|
|
383
383
|
}
|
|
384
384
|
|
|
385
385
|
resetHistory(): void {
|
|
386
|
-
if (this.#engine.journal.stateOf(this.id)) throw new Error("
|
|
387
|
-
this.#startCancellation?.abort(new Error("
|
|
386
|
+
if (this.#engine.journal.stateOf(this.id)) throw new Error("The old journal must be removed before the conversation reset");
|
|
387
|
+
this.#startCancellation?.abort(new Error("The start preparation was reset."));
|
|
388
388
|
this.#startCancellation = undefined;
|
|
389
389
|
this.#startup = undefined;
|
|
390
390
|
this.#unsubscribeJournal?.();
|
|
@@ -407,7 +407,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
407
407
|
|
|
408
408
|
dispose(): void {
|
|
409
409
|
this.#disposed = true;
|
|
410
|
-
this.#startCancellation?.abort(new Error("
|
|
410
|
+
this.#startCancellation?.abort(new Error("The run was deleted"));
|
|
411
411
|
this.#startCancellation = undefined;
|
|
412
412
|
this.#startup = undefined;
|
|
413
413
|
this.#unsubscribeJournal?.();
|
|
@@ -432,10 +432,10 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
432
432
|
}
|
|
433
433
|
|
|
434
434
|
async #send(text: string, supplied?: ChatAttachmentInput[], target?: string, userLocation?: unknown, user?: ChatUser, entryId?: string): Promise<void> {
|
|
435
|
-
if (userLocation !== undefined && !this.#inputContext) throw new DomainError("chat-context-unavailable", "
|
|
435
|
+
if (userLocation !== undefined && !this.#inputContext) throw new DomainError("chat-context-unavailable", "This run does not accept UI context.", 400);
|
|
436
436
|
const choice = entryId === undefined ? freeChoice(userIdOf(user)) : this.#startChoice(this.#skillEntry(entryId), userIdOf(user));
|
|
437
437
|
const attachments = this.#checkedAttachments(supplied);
|
|
438
|
-
if (!text.trim() && attachments.length === 0) throw new DomainError("empty-message", "Text
|
|
438
|
+
if (!text.trim() && attachments.length === 0) throw new DomainError("empty-message", "Text or attachments are missing", 400);
|
|
439
439
|
const existingTarget = target ?? this.#engine.journal.stateOf(this.id)?.primaryActorId;
|
|
440
440
|
if (existingTarget) this.#assertChatTarget(existingTarget);
|
|
441
441
|
if (attachments.length > 0) await this.#checkAttachmentCapabilities(target ?? "primary", attachments, choice);
|
|
@@ -458,7 +458,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
458
458
|
content: Buffer.from(attachment.data, "base64"), previousVersionId: null,
|
|
459
459
|
});
|
|
460
460
|
const event = this.#engine.runtime.events(this.id).find((entry) => entry.commandId === commandId && entry.type === "artifact.published");
|
|
461
|
-
if (!event || event.type !== "artifact.published") throw new Error("
|
|
461
|
+
if (!event || event.type !== "artifact.published") throw new Error("The attachment was not stored");
|
|
462
462
|
return event.payload.artifact.id;
|
|
463
463
|
});
|
|
464
464
|
this.#engine.runtime.enqueueInput(
|
|
@@ -478,21 +478,21 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
478
478
|
}
|
|
479
479
|
return attachments;
|
|
480
480
|
} catch (error) {
|
|
481
|
-
throw new DomainError("invalid-attachment", `
|
|
481
|
+
throw new DomainError("invalid-attachment", `Invalid attachment: ${messageOf(error)}`, 400);
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
#assertChatTarget(reference: string): void {
|
|
486
486
|
const actor = this.#targetActor(reference);
|
|
487
487
|
if (actor.kind !== "agent") {
|
|
488
|
-
throw new DomainError("actor-chat-unsupported", `@${actor.handle}
|
|
488
|
+
throw new DomainError("actor-chat-unsupported", `@${actor.handle} is a TypeScript actor, not a chat partner. Use its mini-app or its documented functions. The message was not queued.`, 400);
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
491
|
|
|
492
492
|
#targetActor(reference: string) {
|
|
493
493
|
const actor = this.#engine.runtime.view(this.id).actors.find((entry) => entry.id === reference || `@${entry.handle}` === reference);
|
|
494
494
|
if (!actor || actor.kind === "human" || actor.lifecycle.kind === "stopped") {
|
|
495
|
-
throw new DomainError("actor-unavailable", `
|
|
495
|
+
throw new DomainError("actor-unavailable", `The actor ${reference} is not available`, 404);
|
|
496
496
|
}
|
|
497
497
|
return actor;
|
|
498
498
|
}
|
|
@@ -508,7 +508,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
508
508
|
? { ...execution, driver: { kind: "agent", config: coordinatorSelection(this.#engine.catalog, this.#coordinator, storedModelChoice(state), execution.driver.config) } }
|
|
509
509
|
: execution;
|
|
510
510
|
}
|
|
511
|
-
if (reference !== "primary") throw new DomainError("actor-unavailable", "
|
|
511
|
+
if (reference !== "primary") throw new DomainError("actor-unavailable", "The actor is not available", 404);
|
|
512
512
|
return this.#coordinatorExecution(choice);
|
|
513
513
|
}
|
|
514
514
|
|
|
@@ -530,17 +530,17 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
530
530
|
preparationSelection(userId: string | null): ModelSelection {
|
|
531
531
|
this.#assertUsable(this.id);
|
|
532
532
|
if (this.#disposed || this.started || this.startLocked) {
|
|
533
|
-
throw new DomainError("preparation-unavailable", "
|
|
533
|
+
throw new DomainError("preparation-unavailable", "Preparation is only possible before the run starts.", 409);
|
|
534
534
|
}
|
|
535
535
|
const execution = this.#coordinatorExecution(freeChoice(userId));
|
|
536
|
-
if (execution.driver.kind !== "agent") throw new DomainError("preparation-model-required", "
|
|
536
|
+
if (execution.driver.kind !== "agent") throw new DomainError("preparation-model-required", "Preparation requires a coordinator with a model runtime.", 400);
|
|
537
537
|
return { ...execution.driver.config };
|
|
538
538
|
}
|
|
539
539
|
|
|
540
540
|
async #checkAttachmentCapabilities(reference: string, attachments: readonly ChatAttachmentInput[], choice: StartChoice): Promise<void> {
|
|
541
541
|
const execution = this.#executionFor(reference, choice);
|
|
542
542
|
if (execution.driver.kind === "script") return;
|
|
543
|
-
if (execution.driver.kind !== "agent") throw new DomainError("attachments-unsupported", "
|
|
543
|
+
if (execution.driver.kind !== "agent") throw new DomainError("attachments-unsupported", "Attachments require an actor with a model runtime", 400);
|
|
544
544
|
const { input, model } = await this.#capabilitiesFor(reference, choice);
|
|
545
545
|
const state = this.#engine.journal.stateOf(this.id);
|
|
546
546
|
const id = reference === "primary" ? state?.primaryActorId : reference;
|
|
@@ -548,10 +548,10 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
548
548
|
for (const attachment of attachments) {
|
|
549
549
|
const kind = attachmentInputKind(attachment.mediaType);
|
|
550
550
|
if ((kind === "image" || kind === "video" || kind === "file") && !input.includes(kind)) {
|
|
551
|
-
throw new DomainError("attachment-model-unsupported", `
|
|
551
|
+
throw new DomainError("attachment-model-unsupported", `The model ${model} does not support ${kind} (${attachment.name}). Inputs: ${input.join(", ")}.`, 400);
|
|
552
552
|
}
|
|
553
553
|
if (kind === "binary" && toolNames !== null && !toolNames.some((name) => name === "read" || name === "bash")) {
|
|
554
|
-
throw new DomainError("attachment-tools-required", `${attachment.name}
|
|
554
|
+
throw new DomainError("attachment-tools-required", `${attachment.name} requires file access, but this actor has neither read nor bash.`, 400);
|
|
555
555
|
}
|
|
556
556
|
}
|
|
557
557
|
}
|
|
@@ -570,7 +570,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
570
570
|
if (afterStart) return afterStart;
|
|
571
571
|
await this.#exclusiveStart(() => this.#startRun(user, choice));
|
|
572
572
|
const primaryActorId = this.#syncPrimaryActor();
|
|
573
|
-
if (!primaryActorId) throw new Error("
|
|
573
|
+
if (!primaryActorId) throw new Error("The run has no primary actor after the start");
|
|
574
574
|
return primaryActorId;
|
|
575
575
|
}
|
|
576
576
|
|
|
@@ -584,15 +584,15 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
584
584
|
async #start(entryId: string, input: unknown, user?: ChatUser): Promise<void> {
|
|
585
585
|
await this.#startPackage(() => {
|
|
586
586
|
const found = this.#scriptEntryFor(entryId);
|
|
587
|
-
if (!found) throw new DomainError("entry-unknown", `
|
|
587
|
+
if (!found) throw new DomainError("entry-unknown", `The template ${entryId} is not a script template of this profile.`, 404);
|
|
588
588
|
return found;
|
|
589
589
|
}, input, user);
|
|
590
590
|
}
|
|
591
591
|
|
|
592
592
|
async #startPackage(resolve: () => RunScriptStart, input: unknown, user?: ChatUser): Promise<void> {
|
|
593
|
-
if (this.#starting) throw new DomainError("run-starting", "
|
|
593
|
+
if (this.#starting) throw new DomainError("run-starting", "The run is being started.", 409);
|
|
594
594
|
if (this.startLocked && this.#engine.runtime.view(this.id).actors.some((actor) => actor.kind !== "human")) {
|
|
595
|
-
throw new DomainError("run-started", "
|
|
595
|
+
throw new DomainError("run-started", "The run is already running; a run script only starts a new run.", 409);
|
|
596
596
|
}
|
|
597
597
|
const cancellation = new AbortController();
|
|
598
598
|
this.#startCancellation = cancellation;
|
|
@@ -602,7 +602,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
602
602
|
signal.throwIfAborted();
|
|
603
603
|
const found = resolve();
|
|
604
604
|
const choice = this.#startChoice(found.entry, userIdOf(user));
|
|
605
|
-
const startValue: JsonValue | null = input === undefined || input === null ? null : (assertJsonValue(input, "
|
|
605
|
+
const startValue: JsonValue | null = input === undefined || input === null ? null : (assertJsonValue(input, "Start value of the run script"), input);
|
|
606
606
|
await this.#prepare(this.id, this.#emitSystem());
|
|
607
607
|
signal.throwIfAborted();
|
|
608
608
|
this.#assertUsable(this.id);
|
|
@@ -618,7 +618,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
618
618
|
if (this.#startCancellation === cancellation) this.#startCancellation = undefined;
|
|
619
619
|
}
|
|
620
620
|
});
|
|
621
|
-
this.#setStartup({ status: "preparing", message: "
|
|
621
|
+
this.#setStartup({ status: "preparing", message: "Preparing run." });
|
|
622
622
|
await operation;
|
|
623
623
|
}
|
|
624
624
|
|
|
@@ -636,12 +636,12 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
636
636
|
const { entry, ...script } = found;
|
|
637
637
|
this.#createRunIfNeeded(this.#initialTitle ?? entry.title, user, choice);
|
|
638
638
|
this.#assertUsable(this.id);
|
|
639
|
-
this.#setStartup({ status: "preparing", message: "
|
|
639
|
+
this.#setStartup({ status: "preparing", message: "Preparing working directory." });
|
|
640
640
|
signal.throwIfAborted();
|
|
641
641
|
await this.#prepareWorkspace(this.id, this.#emitSystem());
|
|
642
642
|
signal.throwIfAborted();
|
|
643
643
|
this.#assertUsable(this.id);
|
|
644
|
-
this.#setStartup({ status: "preparing", message: "
|
|
644
|
+
this.#setStartup({ status: "preparing", message: "Preparing UI." });
|
|
645
645
|
signal.throwIfAborted();
|
|
646
646
|
await this.#copyPrograms(script.programs, signal);
|
|
647
647
|
signal.throwIfAborted();
|
|
@@ -668,7 +668,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
668
668
|
{ actorId: installed.actorId, content: JSON.stringify({ input, options }) },
|
|
669
669
|
);
|
|
670
670
|
if (script.coordinator) {
|
|
671
|
-
this.#emit({ kind: "system", text: `
|
|
671
|
+
this.#emit({ kind: "system", text: `The run script "${entry.title}" runs as @${installed.actorHandle} and sets up the run.` });
|
|
672
672
|
return;
|
|
673
673
|
}
|
|
674
674
|
}
|
|
@@ -737,14 +737,14 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
737
737
|
const spawned = [...this.#engine.runtime.events(this.id)].reverse().find((event) =>
|
|
738
738
|
event.commandId === spawnCommandId && event.type === "agent.spawned");
|
|
739
739
|
if (!spawned || spawned.type !== "agent.spawned")
|
|
740
|
-
throw new Error("
|
|
740
|
+
throw new Error("The primary actor could not be resolved after spawning");
|
|
741
741
|
|
|
742
742
|
coordinator = this.#engine.runtime.view(this.id).actors.find((actor) =>
|
|
743
743
|
actor.id === spawned.payload.agentId && actor.kind === "agent");
|
|
744
744
|
}
|
|
745
745
|
|
|
746
746
|
if (!coordinator)
|
|
747
|
-
throw new Error("
|
|
747
|
+
throw new Error("The coordinator could not be resolved");
|
|
748
748
|
|
|
749
749
|
const revision = this.#engine.runtime.view(this.id).revision;
|
|
750
750
|
this.#engine.runtime.selectPrimaryActor(
|
|
@@ -755,7 +755,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
755
755
|
primaryActor = primaryActorOf(this.#engine.runtime.view(this.id));
|
|
756
756
|
}
|
|
757
757
|
|
|
758
|
-
if (!primaryActor) throw new Error("
|
|
758
|
+
if (!primaryActor) throw new Error("The primary actor could not be created");
|
|
759
759
|
this.#bind(primaryActor.id);
|
|
760
760
|
}
|
|
761
761
|
|
|
@@ -906,7 +906,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
906
906
|
labelOf: (actorId) => this.#engine.runtime.state(this.id).actors.get(actorId)?.displayName,
|
|
907
907
|
turnOf: (turnId) => {
|
|
908
908
|
const turn = this.#engine.runtime.state(this.id).turns.get(turnId);
|
|
909
|
-
if (!turn) throw new Error(`
|
|
909
|
+
if (!turn) throw new Error(`The turn ${turnId} is missing from run ${this.id}`);
|
|
910
910
|
return turn;
|
|
911
911
|
},
|
|
912
912
|
interruptedByCommand: (commandId, actorId) => {
|
|
@@ -916,7 +916,7 @@ export class RunChatSession implements ChatSessionLike {
|
|
|
916
916
|
},
|
|
917
917
|
attachmentOf: (artifactId) => {
|
|
918
918
|
const artifact = this.#engine.runtime.state(this.id).artifacts.get(artifactId);
|
|
919
|
-
if (!artifact) throw new Error(`
|
|
919
|
+
if (!artifact) throw new Error(`The attachment ${artifactId} is missing`);
|
|
920
920
|
return this.#attachmentInfo(artifact);
|
|
921
921
|
},
|
|
922
922
|
};
|
|
@@ -30,13 +30,13 @@ const metadata = [
|
|
|
30
30
|
|
|
31
31
|
const available = defineToolAvailability({
|
|
32
32
|
availability: "conditional",
|
|
33
|
-
availabilityDetail: "
|
|
33
|
+
availabilityDetail: "For active executable actors with a function selection.",
|
|
34
34
|
}, (actor) => actor.kind !== "human" && actor.lifecycle.kind !== "stopped");
|
|
35
35
|
|
|
36
36
|
export interface TypeScriptToolOptions {
|
|
37
|
-
/**
|
|
37
|
+
/** The snippet runs on the server, even if the workspace lies on a workstation. */
|
|
38
38
|
readonly serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;
|
|
39
|
-
/**
|
|
39
|
+
/** A source file comes through the run's executor, wherever the workspace lies. */
|
|
40
40
|
readonly execute: SandboxServices["execute"];
|
|
41
41
|
}
|
|
42
42
|
|
|
@@ -69,7 +69,7 @@ const schemaJson = (schema: RunFunction["schema"]) => {
|
|
|
69
69
|
return value;
|
|
70
70
|
};
|
|
71
71
|
|
|
72
|
-
/**
|
|
72
|
+
/** An alias like `@actors` names an additional root of the executor; otherwise the path is relative to the run's root. */
|
|
73
73
|
const sourceRequest = (requested: string): { path: string; alias?: string } => {
|
|
74
74
|
if (!requested.startsWith("@")) return { path: requested };
|
|
75
75
|
const separator = requested.indexOf("/");
|
|
@@ -102,14 +102,14 @@ export const createTypeScriptToolContributor = (options: TypeScriptToolOptions):
|
|
|
102
102
|
guidance: Type.Optional(Type.String()),
|
|
103
103
|
}, { additionalProperties: false }),
|
|
104
104
|
run: async (scope, _id, input) => {
|
|
105
|
-
if (input.context && (input.names || input.query !== undefined || input.schemas)) throw new Error("typescript_api
|
|
105
|
+
if (input.context && (input.names || input.query !== undefined || input.schemas)) throw new Error("typescript_api expects context alone, without names, query or schemas.");
|
|
106
106
|
if (input.context) return { declarations: typeScriptSnippetContextDeclarations, guidance: contextGuidance };
|
|
107
|
-
if (input.names && input.query !== undefined) throw new Error("typescript_api
|
|
108
|
-
if (input.schemas && !input.names) throw new Error("typescript_api
|
|
107
|
+
if (input.names && input.query !== undefined) throw new Error("typescript_api expects names or query, not both.");
|
|
108
|
+
if (input.schemas && !input.names) throw new Error("typescript_api returns JSON schemas only for selected names.");
|
|
109
109
|
const functions = functionsOf(scope);
|
|
110
110
|
if (input.names) {
|
|
111
111
|
const unknown = input.names.filter((name) => !functions.some((entry) => entry.name === name));
|
|
112
|
-
if (unknown.length > 0) throw new Error(`
|
|
112
|
+
if (unknown.length > 0) throw new Error(`Unavailable TypeScript functions: ${unknown.join(", ")}. Look up available functions with typescript_api without names.`);
|
|
113
113
|
}
|
|
114
114
|
const query = input.query?.toLocaleLowerCase();
|
|
115
115
|
const selected = input.names ? functions.filter((entry) => input.names!.includes(entry.name))
|
|
@@ -137,13 +137,13 @@ export const createTypeScriptToolContributor = (options: TypeScriptToolOptions):
|
|
|
137
137
|
}, { additionalProperties: false }),
|
|
138
138
|
resultSchema: Type.Object({ result: Type.Unknown(), logs: Type.Array(Type.String()) }, { additionalProperties: false }),
|
|
139
139
|
run: async (scope, id, input) => {
|
|
140
|
-
if ((input.code === undefined) === (input.path === undefined)) throw new Error("typescript_eval
|
|
140
|
+
if ((input.code === undefined) === (input.path === undefined)) throw new Error("typescript_eval needs exactly one of code or path.");
|
|
141
141
|
scope.signal?.throwIfAborted();
|
|
142
142
|
const actor = scope.runtime.view(scope.caller.runId).actors.find((candidate) => candidate.id === scope.caller.actorId);
|
|
143
|
-
if (!actor || actor.kind === "human" || actor.lifecycle.kind === "stopped") throw new Error("
|
|
143
|
+
if (!actor || actor.kind === "human" || actor.lifecycle.kind === "stopped") throw new Error("The TypeScript snippet needs an active executable actor.");
|
|
144
144
|
const code = await sourceOf(options, scope.caller.runId, id, input);
|
|
145
145
|
const processContext = await options.serverProcessContextFor(scope.caller.runId);
|
|
146
|
-
if (!scope.caller.turnId) throw new Error("
|
|
146
|
+
if (!scope.caller.turnId) throw new Error("The TypeScript snippet needs a running turn.");
|
|
147
147
|
scope.runtime.recordToolCallSource(scope.context(id, "source"), scope.caller.runId, actor.id, {
|
|
148
148
|
turnId: scope.caller.turnId, toolCallId: id, code, path: input.path ?? null,
|
|
149
149
|
});
|
|
@@ -175,7 +175,7 @@ export const createTypeScriptToolContributor = (options: TypeScriptToolOptions):
|
|
|
175
175
|
nativeTool: true,
|
|
176
176
|
scope: "per-turn",
|
|
177
177
|
availability: "conditional",
|
|
178
|
-
availabilityDetail: "
|
|
178
|
+
availabilityDetail: "For active executable actors with a function selection.",
|
|
179
179
|
})),
|
|
180
180
|
tools: () => tools,
|
|
181
181
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { serviceToken, type JsonValue, type WorkspaceToolNaming } from "@ragents/engine";
|
|
2
2
|
import type { ResolvedWorkspaceRoot, SessionIdent } from "@ragents/workspace-executor";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** A folder outside the workspace that a run's process sandbox permits; absolute, for reading or for reading and writing. */
|
|
5
5
|
export interface SandboxFolder {
|
|
6
6
|
directory: string;
|
|
7
7
|
access: "read" | "write";
|
|
@@ -9,11 +9,11 @@ export interface SandboxFolder {
|
|
|
9
9
|
|
|
10
10
|
export interface SessionWorkspace {
|
|
11
11
|
cwd: string;
|
|
12
|
-
/**
|
|
12
|
+
/** Describes the resolved workspace in words; becomes a chapter in the system prompt of every actor with workspace tools. */
|
|
13
13
|
description?: string;
|
|
14
|
-
/**
|
|
14
|
+
/** Home folder, read-only roots and account of the sandbox, if the workspace determines them itself. */
|
|
15
15
|
hostSandbox?: { home: string; readOnlyRoots: readonly ResolvedWorkspaceRoot[]; ident?: SessionIdent };
|
|
16
|
-
/**
|
|
16
|
+
/** What the run's processes on the server need outside the workspace, e.g. the shared repository of a Git worktree. */
|
|
17
17
|
sandboxFolders?: readonly SandboxFolder[];
|
|
18
18
|
gitEnv?: NodeJS.ProcessEnv;
|
|
19
19
|
gitConfig?: ReadonlyArray<readonly [string, string]>;
|
|
@@ -27,28 +27,28 @@ export interface WorkspaceRuntimeDescription {
|
|
|
27
27
|
directoryPattern: string;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
/**
|
|
30
|
+
/** Moving a run to another server: what its binding means there and how the target replaces it. */
|
|
31
31
|
export interface WorkspaceTransfer {
|
|
32
|
-
/**
|
|
32
|
+
/** The existing folder on this server machine to which the run is bound; null for a new folder per run or a workstation. */
|
|
33
33
|
boundDirectory: (runId: string) => string | null;
|
|
34
|
-
/**
|
|
34
|
+
/** Checks a replacement folder before the import creates anything. */
|
|
35
35
|
assertDirectory: (directory: string) => void;
|
|
36
|
-
/**
|
|
36
|
+
/** Binds the run on the target to an existing replacement folder. */
|
|
37
37
|
rebind: (runId: string, directory: string) => void;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
/**
|
|
40
|
+
/** Where and in which folder a run works, answered separately; a flow asks for both, never for a mixed value. */
|
|
41
41
|
export interface WorkspacePlacement {
|
|
42
42
|
machine: "server" | "client";
|
|
43
43
|
folder: "fresh" | "existing";
|
|
44
|
-
/**
|
|
44
|
+
/** The id of the kind (`WorkspaceKind.id`), if a contribution provided the new folder. */
|
|
45
45
|
kind?: string;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export interface WorkspaceRuntime {
|
|
49
49
|
resolve: (runId: string, emitSystem: (text: string) => void) => Promise<SessionWorkspace>;
|
|
50
50
|
describe: () => WorkspaceRuntimeDescription;
|
|
51
|
-
/**
|
|
51
|
+
/** The one central place where a flow asks where and in which folder a run works. */
|
|
52
52
|
placementOf: (runId: string) => WorkspacePlacement;
|
|
53
53
|
toolNaming?: WorkspaceToolNaming;
|
|
54
54
|
transfer?: WorkspaceTransfer;
|
|
@@ -63,24 +63,24 @@ export interface WorkspaceResolverContext {
|
|
|
63
63
|
emitSystem: (text: string) => void;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
/**
|
|
66
|
+
/** What a contribution delivers for a run's workspace; what it leaves out, the workspace plugin fills in. */
|
|
67
67
|
export interface WorkspaceResolution extends Partial<Omit<SessionWorkspace, "cwd">> {
|
|
68
68
|
cwd: string;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
/**
|
|
71
|
+
/** The kind of workspace that a plugin contributes per run on the server in place of the empty folder. */
|
|
72
72
|
export interface WorkspaceKind {
|
|
73
|
-
/**
|
|
73
|
+
/** Id by which a flow recognizes a run's workspace. */
|
|
74
74
|
id: string;
|
|
75
|
-
/**
|
|
75
|
+
/** Short form for the start option and session data, e.g. "Worktree per run". */
|
|
76
76
|
label: string;
|
|
77
|
-
/**
|
|
77
|
+
/** Whether a folder of the server machine may be bound alongside it; a workspace with its own rights excludes it. */
|
|
78
78
|
serverFolders: boolean;
|
|
79
|
-
/**
|
|
79
|
+
/** Where the folders per run lie, if not in the workspace plugin's storage; for display only. */
|
|
80
80
|
directoryPattern?: string;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
/**
|
|
83
|
+
/** A step when creating or removing the new folder on a workstation: an operation of the executor there, in the run's folder. */
|
|
84
84
|
export interface WorkspaceFolderStep {
|
|
85
85
|
operation: string;
|
|
86
86
|
input: JsonValue;
|
|
@@ -88,33 +88,33 @@ export interface WorkspaceFolderStep {
|
|
|
88
88
|
|
|
89
89
|
export interface WorkstationFolderContext {
|
|
90
90
|
runId: string;
|
|
91
|
-
/**
|
|
91
|
+
/** The run's folder on the workstation. */
|
|
92
92
|
path: string;
|
|
93
93
|
label: string;
|
|
94
94
|
choice: JsonValue | null;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
/**
|
|
97
|
+
/** How a contribution provides the new folder per run on a workstation; the executor there creates it empty, the steps fill it. */
|
|
98
98
|
export interface WorkstationFolder {
|
|
99
|
-
/**
|
|
99
|
+
/** Short form for the start option and session data, e.g. "Git worktree per run". */
|
|
100
100
|
label: string;
|
|
101
|
-
/**
|
|
101
|
+
/** Run in order, once after creation; if one fails, the host removes the folder again. */
|
|
102
102
|
prepare: (context: WorkstationFolderContext) => readonly WorkspaceFolderStep[];
|
|
103
|
-
/**
|
|
103
|
+
/** Run before the folder is removed, e.g. to unregister a worktree from its repository. */
|
|
104
104
|
release?: (context: WorkstationFolderContext) => readonly WorkspaceFolderStep[];
|
|
105
|
-
/**
|
|
105
|
+
/** Describes the folder in the system prompt; if omitted, the new, initially empty folder. */
|
|
106
106
|
description?: (context: WorkstationFolderContext) => string;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
export interface WorkspaceResolver {
|
|
110
110
|
optionId?: string;
|
|
111
111
|
kind?: WorkspaceKind;
|
|
112
|
-
/**
|
|
112
|
+
/** With a contribution, the new folder per run exists on a workstation only if the contribution provides it there. */
|
|
113
113
|
workstation?: WorkstationFolder;
|
|
114
114
|
resolve: (context: WorkspaceResolverContext) => Promise<WorkspaceResolution>;
|
|
115
|
-
/**
|
|
115
|
+
/** Stopping a run in the contributed workspace on the server; `sandbox` stops the host's tools in the process. */
|
|
116
116
|
stopSession?: (runId: string, sandbox: () => Promise<void>) => Promise<void>;
|
|
117
|
-
/**
|
|
117
|
+
/** Deleting a run in the contributed workspace on the server, after stopping. */
|
|
118
118
|
deleteSession?: (runId: string) => Promise<void>;
|
|
119
119
|
}
|
|
120
120
|
|
|
@@ -123,7 +123,7 @@ export const workspaceResolverToken = serviceToken<WorkspaceResolver>("ragents.w
|
|
|
123
123
|
export interface GitWorkspaceView {
|
|
124
124
|
branch: (runId: string) => Promise<string | undefined>;
|
|
125
125
|
changes: (runId: string) => Promise<unknown>;
|
|
126
|
-
/** previousPath
|
|
126
|
+
/** previousPath names the source of a rename from the change list; only this way does Git pair them without the whole list. */
|
|
127
127
|
file: (runId: string, filePath: string, view: "diff" | "current", previousPath?: string) => Promise<unknown>;
|
|
128
128
|
}
|
|
129
129
|
|