@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
|
@@ -30,24 +30,24 @@ interface ClientEntry {
|
|
|
30
30
|
readonly owner: string | null;
|
|
31
31
|
readonly connection: MethodConnection;
|
|
32
32
|
readonly release: () => void;
|
|
33
|
-
/**
|
|
33
|
+
/** The open calls through this sign-in; if a new connection replaces it, they fail immediately. */
|
|
34
34
|
readonly calls: Set<AbortController>;
|
|
35
|
-
/**
|
|
35
|
+
/** The stops currently being delivered through this sign-in, per run. */
|
|
36
36
|
readonly stops: Map<string, Promise<void>>;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
/**
|
|
39
|
+
/** The only limit against a hanging workstation; the executor has its own timeouts. */
|
|
40
40
|
const CLIENT_TIMEOUT_MS = 15 * 60 * 1000;
|
|
41
41
|
|
|
42
|
-
/**
|
|
42
|
+
/** This is how long cleanup (stop, `whenReachable`) waits for the workstation; it stays below the plugins' stop limit. */
|
|
43
43
|
const CLEANUP_TIMEOUT_MS = 10_000;
|
|
44
44
|
|
|
45
|
-
/**
|
|
45
|
+
/** After this long, the server retries a pending stop as long as the workstation is signed in. */
|
|
46
46
|
const STOP_RETRY_MS = 30_000;
|
|
47
47
|
|
|
48
48
|
export const ownerOf = (access: AccessContext): string | null => access.user?.id ?? null;
|
|
49
49
|
|
|
50
|
-
/**
|
|
50
|
+
/** A watch runs until aborted, cleanup briefly; everything else waits for the safety limit plus the duration the call itself requests. */
|
|
51
51
|
const timeoutFor = (options: WorkspaceExecuteOptions): { timeoutMs?: number } => {
|
|
52
52
|
if (options.untilAborted) return {};
|
|
53
53
|
if (options.whenReachable) return { timeoutMs: CLEANUP_TIMEOUT_MS };
|
|
@@ -55,14 +55,14 @@ const timeoutFor = (options: WorkspaceExecuteOptions): { timeoutMs?: number } =>
|
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
const disconnected = (label: string, detail: string): DomainError =>
|
|
58
|
-
new DomainError("workspace-client-disconnected", `
|
|
58
|
+
new DomainError("workspace-client-disconnected", `The workstation ${label} lost the connection: ${detail}`, 409);
|
|
59
59
|
|
|
60
|
-
/**
|
|
60
|
+
/** If the connection breaks in the middle of a call, the cause must name the workstation, not the server; a domain error stays one. */
|
|
61
61
|
const withClientCause = (cause: unknown, label: string): unknown => {
|
|
62
62
|
if (!(cause instanceof RpcError)) return cause;
|
|
63
63
|
if (cause.code === RPC_ERROR_CODES.connectionClosed) return disconnected(label, cause.message);
|
|
64
64
|
if (cause.code === RPC_ERROR_CODES.timeout) {
|
|
65
|
-
return new DomainError("workspace-client-timeout", `
|
|
65
|
+
return new DomainError("workspace-client-timeout", `The workstation ${label} did not respond: ${cause.message}`, 504);
|
|
66
66
|
}
|
|
67
67
|
if (cause.code === RPC_ERROR_CODES.application && cause.domainCode !== undefined && cause.status !== undefined) {
|
|
68
68
|
return new DomainError(cause.domainCode, cause.message, cause.status);
|
|
@@ -70,61 +70,61 @@ const withClientCause = (cause: unknown, label: string): unknown => {
|
|
|
70
70
|
return cause;
|
|
71
71
|
};
|
|
72
72
|
|
|
73
|
-
/**
|
|
73
|
+
/** The workstation was not there or did not respond in time; a domain error does not count. */
|
|
74
74
|
const unreached = (cause: unknown): boolean =>
|
|
75
75
|
cause instanceof DomainError && (cause.code === "workspace-client-disconnected" || cause.code === "workspace-client-timeout");
|
|
76
76
|
|
|
77
77
|
const messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);
|
|
78
78
|
|
|
79
|
-
/**
|
|
79
|
+
/** A workstation is identified only by owner and ID; two users with the same ID share nothing. */
|
|
80
80
|
const keyOf = (owner: string | null, id: string): string => JSON.stringify([owner, id]);
|
|
81
81
|
|
|
82
|
-
/** Server
|
|
82
|
+
/** Server and workstation need the same executor; the message says which of the two is too old. */
|
|
83
83
|
const assertExecutor = (label: string, executor: string): void => {
|
|
84
84
|
if (executor === WORKSPACE_EXECUTOR_VERSION) return;
|
|
85
85
|
const action = Number(executor) > Number(WORKSPACE_EXECUTOR_VERSION)
|
|
86
|
-
? "
|
|
87
|
-
: "
|
|
86
|
+
? "Update the server to the workstation's version."
|
|
87
|
+
: "Update the RAgents extension in VS Code or the package @schlenkr/ragents on the workstation.";
|
|
88
88
|
throw new DomainError(
|
|
89
89
|
"workspace-executor-version",
|
|
90
|
-
`
|
|
90
|
+
`The workstation ${label} brings executor ${executor}, the server requires ${WORKSPACE_EXECUTOR_VERSION}. ${action}`,
|
|
91
91
|
409,
|
|
92
92
|
);
|
|
93
93
|
};
|
|
94
94
|
|
|
95
95
|
const described = (contributions: readonly ExecutorContributionStand[]): string =>
|
|
96
|
-
contributions.map(({ plugin, stand }) => `${plugin} (${stand.slice(0, 12)})`).join(", ") || "
|
|
96
|
+
contributions.map(({ plugin, stand }) => `${plugin} (${stand.slice(0, 12)})`).join(", ") || "none";
|
|
97
97
|
|
|
98
|
-
/**
|
|
98
|
+
/** A workstation runs what the server's plugins contribute; with other contributions the same tools would behave differently there than on the server. */
|
|
99
99
|
const assertContributions = (label: string, expected: readonly ExecutorContributionStand[], given: readonly ExecutorContributionStand[]): void => {
|
|
100
100
|
const key = (entry: ExecutorContributionStand): string => `${entry.plugin}\0${entry.stand}`;
|
|
101
101
|
const same = expected.length === given.length && expected.every((entry) => given.some((other) => key(other) === key(entry)));
|
|
102
102
|
if (same) return;
|
|
103
103
|
throw new DomainError(
|
|
104
104
|
"workspace-executor-contributions",
|
|
105
|
-
`
|
|
106
|
-
+ "
|
|
105
|
+
`The workstation ${label} brings the executor contributions ${described(given)}, the server requires ${described(expected)}. `
|
|
106
|
+
+ "The workstation queries them with ragents.workspace.clients.contributions and then signs in again.",
|
|
107
107
|
409,
|
|
108
108
|
);
|
|
109
109
|
};
|
|
110
110
|
|
|
111
|
-
/**
|
|
111
|
+
/** Over the network, the server accepts workstations only from signed-in users; without users there would be only one owner for all access. */
|
|
112
112
|
export const assertMayRegister = (access: AccessContext, local: boolean): void => {
|
|
113
113
|
if (local || (access.enabled && access.user !== null)) return;
|
|
114
114
|
throw new DomainError(
|
|
115
115
|
"workspace-client-login-required",
|
|
116
|
-
"
|
|
117
|
-
+ "(
|
|
116
|
+
"This server has no user sign-in; it therefore accepts a workstation only over a loopback connection "
|
|
117
|
+
+ "(such as http://127.0.0.1 on its own machine). Over the network, a workstation needs a profile with users.",
|
|
118
118
|
403,
|
|
119
119
|
);
|
|
120
120
|
};
|
|
121
121
|
|
|
122
|
-
/**
|
|
122
|
+
/** Knows the signed-in workstations per owner, holds per client the connection through which the server calls it back, and the stops that have not reached it. */
|
|
123
123
|
export class WorkspaceClientRegistry {
|
|
124
|
-
/**
|
|
124
|
+
/** What the server's plugins contribute to the executor; every workstation must carry exactly these contributions. */
|
|
125
125
|
readonly contributions: readonly ExecutorContributionStand[];
|
|
126
126
|
readonly #clients = new Map<string, ClientEntry>();
|
|
127
|
-
/**
|
|
127
|
+
/** Stops that have not reached the workstation yet, per workstation and run with the folder of the binding. */
|
|
128
128
|
readonly #pendingStops = new Map<string, Map<string, string>>();
|
|
129
129
|
readonly #stopRetries = new Map<string, NodeJS.Timeout>();
|
|
130
130
|
|
|
@@ -140,7 +140,7 @@ export class WorkspaceClientRegistry {
|
|
|
140
140
|
connection: MethodConnection,
|
|
141
141
|
): Promise<WorkspaceClientInfo> {
|
|
142
142
|
if (connection.streamless) {
|
|
143
|
-
throw new DomainError("stream-required", "
|
|
143
|
+
throw new DomainError("stream-required", "The sign-in of a workstation needs an event stream.", 409);
|
|
144
144
|
}
|
|
145
145
|
assertExecutor(description.label, executor);
|
|
146
146
|
assertContributions(description.label, this.contributions, contributions);
|
|
@@ -164,7 +164,7 @@ export class WorkspaceClientRegistry {
|
|
|
164
164
|
return info;
|
|
165
165
|
}
|
|
166
166
|
|
|
167
|
-
/**
|
|
167
|
+
/** Only the connection that holds the entry signs it out; a sign-out without an entry is not an error after a disconnect. */
|
|
168
168
|
unregister(owner: string | null, id: string, connection: MethodConnection): void {
|
|
169
169
|
const key = keyOf(owner, id);
|
|
170
170
|
const entry = this.#clients.get(key);
|
|
@@ -180,25 +180,25 @@ export class WorkspaceClientRegistry {
|
|
|
180
180
|
return this.#clients.get(keyOf(owner, id))?.info;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
/**
|
|
183
|
+
/** The runs whose stop has not reached this workstation yet. */
|
|
184
184
|
pendingStops(owner: string | null, id: string): readonly string[] {
|
|
185
185
|
return this.#pendingRuns(keyOf(owner, id));
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
/**
|
|
188
|
+
/** The executor of a bound run: the same interface as in the server, only through the connection of its owner's workstation. */
|
|
189
189
|
executorFor(owner: string | null, id: string, label: string, cwd: string): WorkspaceExecutor {
|
|
190
190
|
const key = keyOf(owner, id);
|
|
191
191
|
const call = async (runId: string, operation: string, input: unknown, options: WorkspaceExecuteOptions): Promise<unknown> => {
|
|
192
|
-
if (options.untilAborted && !options.signal) throw new Error(`
|
|
192
|
+
if (options.untilAborted && !options.signal) throw new Error(`The operation ${operation} runs until aborted and needs an abort signal for that`);
|
|
193
193
|
if (this.#pendingStops.get(key)?.has(runId)) {
|
|
194
|
-
//
|
|
194
|
+
// Cleanup alongside a pending stop is done by that stop; everything else waits until it is delivered.
|
|
195
195
|
if (options.whenReachable) return null;
|
|
196
196
|
if (this.#clients.has(key)) await this.#deliverStop(key, runId);
|
|
197
197
|
}
|
|
198
198
|
const entry = this.#clients.get(key);
|
|
199
199
|
if (!entry) {
|
|
200
200
|
if (options.whenReachable) return null;
|
|
201
|
-
throw new DomainError("workspace-client-disconnected", `
|
|
201
|
+
throw new DomainError("workspace-client-disconnected", `The workstation ${label} is not connected.`, 409);
|
|
202
202
|
}
|
|
203
203
|
try {
|
|
204
204
|
return await this.#send(entry, runId, operation, input, cwd, options);
|
|
@@ -229,7 +229,7 @@ export class WorkspaceClientRegistry {
|
|
|
229
229
|
this.#pendingStops.clear();
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
/**
|
|
232
|
+
/** A disconnected workstation leaves the registry; a later sign-in over a new connection stays. */
|
|
233
233
|
#disconnected(key: string, connection: MethodConnection): void {
|
|
234
234
|
const entry = this.#clients.get(key);
|
|
235
235
|
if (entry?.connection !== connection) return;
|
|
@@ -242,7 +242,7 @@ export class WorkspaceClientRegistry {
|
|
|
242
242
|
this.#abandon(entry);
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
/**
|
|
245
|
+
/** A connection that nobody holds anymore gets no more answers delivered; its open calls fail immediately. */
|
|
246
246
|
#abandon(entry: ClientEntry): void {
|
|
247
247
|
for (const controller of entry.calls) controller.abort();
|
|
248
248
|
entry.calls.clear();
|
|
@@ -279,7 +279,7 @@ export class WorkspaceClientRegistry {
|
|
|
279
279
|
},
|
|
280
280
|
),
|
|
281
281
|
new Promise<never>((_settle, fail) => abandoned.signal.addEventListener("abort", () =>
|
|
282
|
-
fail(disconnected(label, "
|
|
282
|
+
fail(disconnected(label, "a new connection replaced the sign-in")), { once: true })),
|
|
283
283
|
]);
|
|
284
284
|
return value;
|
|
285
285
|
} catch (cause) {
|
|
@@ -297,13 +297,13 @@ export class WorkspaceClientRegistry {
|
|
|
297
297
|
return created;
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
-
/**
|
|
300
|
+
/** Delivers a pending stop; if it does not reach the workstation, it stays pending and the next sign-in catches up on it. */
|
|
301
301
|
#deliverStop(key: string, runId: string): Promise<void> {
|
|
302
302
|
const entry = this.#clients.get(key);
|
|
303
303
|
const cwd = this.#pendingStops.get(key)?.get(runId);
|
|
304
304
|
if (cwd === undefined) return Promise.resolve();
|
|
305
305
|
if (!entry) {
|
|
306
|
-
console.warn(`
|
|
306
|
+
console.warn(`The stop of run ${runId} reaches its workstation only at its next sign-in.`);
|
|
307
307
|
return Promise.resolve();
|
|
308
308
|
}
|
|
309
309
|
const running = entry.stops.get(runId);
|
|
@@ -314,7 +314,7 @@ export class WorkspaceClientRegistry {
|
|
|
314
314
|
this.#stopDelivered(key, runId, cwd);
|
|
315
315
|
throw cause;
|
|
316
316
|
}
|
|
317
|
-
console.warn(`
|
|
317
|
+
console.warn(`The stop of run ${runId} did not reach the workstation ${entry.info.label} and stays pending: ${messageOf(cause)}`);
|
|
318
318
|
this.#retryStops(key);
|
|
319
319
|
})
|
|
320
320
|
.finally(() => entry.stops.delete(runId));
|
|
@@ -331,7 +331,7 @@ export class WorkspaceClientRegistry {
|
|
|
331
331
|
#deliverPendingStops(key: string): void {
|
|
332
332
|
for (const runId of this.#pendingRuns(key)) {
|
|
333
333
|
void this.#deliverStop(key, runId).catch((cause: unknown) =>
|
|
334
|
-
console.warn(`
|
|
334
|
+
console.warn(`The delayed stop of run ${runId} failed: ${messageOf(cause)}`));
|
|
335
335
|
}
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -339,7 +339,7 @@ export class WorkspaceClientRegistry {
|
|
|
339
339
|
return [...this.#pendingStops.get(key)?.keys() ?? []];
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
/**
|
|
342
|
+
/** A workstation that stays signed in but does not respond gets its pending stops again later. */
|
|
343
343
|
#retryStops(key: string): void {
|
|
344
344
|
if (this.#stopRetries.has(key)) return;
|
|
345
345
|
const timer = setTimeout(() => {
|
|
@@ -360,11 +360,11 @@ export const clientMethods = (registry: WorkspaceClientRegistry): MethodContribu
|
|
|
360
360
|
}),
|
|
361
361
|
implement(workspaceContracts.clients.register, (input, { access, connection, local }) => {
|
|
362
362
|
assertMayRegister(access, local);
|
|
363
|
-
//
|
|
363
|
+
// Version first: a workstation with a different one does not know the shape of this version; with this one, the shape applies fully.
|
|
364
364
|
assertExecutor(input.label, input.executor);
|
|
365
365
|
if (!Value.Check(clientRegistrationSchema, input)) {
|
|
366
366
|
throw new RpcError(RPC_ERROR_CODES.invalidParams,
|
|
367
|
-
`
|
|
367
|
+
`Invalid input for ${workspaceContracts.clients.register.id}: ${schemaComplaints(clientRegistrationSchema, input, "params")}`);
|
|
368
368
|
}
|
|
369
369
|
const { id, executor, contributions, ...description } = input;
|
|
370
370
|
return registry.register(id, description, executor, contributions, connection);
|
|
@@ -16,14 +16,14 @@ export interface ProcessSandboxSetting {
|
|
|
16
16
|
readonly network: readonly string[];
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
export const PROCESS_SANDBOX_OFF = 'PROCESS_SANDBOX: "off" in
|
|
19
|
+
/** This is how the operator turns off the process sandbox in the profile file. */
|
|
20
|
+
export const PROCESS_SANDBOX_OFF = 'PROCESS_SANDBOX: "off" in the ragents.workspace section';
|
|
21
21
|
|
|
22
|
-
/**
|
|
22
|
+
/** Without a value the sandbox is on; it can only be turned off explicitly with "off". */
|
|
23
23
|
export const processSandboxSetting = (): ProcessSandboxSetting => {
|
|
24
24
|
const mode = env.optional("PROCESS_SANDBOX") ?? "on";
|
|
25
25
|
if (mode !== "on" && mode !== "off") {
|
|
26
|
-
throw new Error(`PROCESS_SANDBOX in
|
|
26
|
+
throw new Error(`PROCESS_SANDBOX in the ragents.workspace section is "on" or "off", not "${mode}"`);
|
|
27
27
|
}
|
|
28
28
|
const network = env.optional("PROCESS_SANDBOX_NETWORK") === undefined
|
|
29
29
|
? PROCESS_SANDBOX_DEFAULT_NETWORK
|
|
@@ -31,12 +31,12 @@ export const processSandboxSetting = (): ProcessSandboxSetting => {
|
|
|
31
31
|
return { enabled: mode === "on", network };
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
/**
|
|
34
|
+
/** The bash with which the executor of this server starts the bash tool; on Windows the VS Code extension sets it for its local host. */
|
|
35
35
|
export const bashSetting = (): string | undefined => env.optional("RAGENTS_BASH") || undefined;
|
|
36
36
|
|
|
37
|
-
/**
|
|
37
|
+
/** The rg that the executor of this server puts at the front of the bash PATH; the VS Code extension sets it for its local host. */
|
|
38
38
|
export const rgSetting = (): string | undefined => env.optional("RAGENTS_RG") || undefined;
|
|
39
39
|
|
|
40
|
-
/**
|
|
40
|
+
/** The bash timeout in seconds for calls without their own; the tool rejects more than the largest a call may name at startup. */
|
|
41
41
|
export const bashTimeoutSetting = (): number | undefined =>
|
|
42
42
|
env.optional("RAGENTS_BASH_TIMEOUT_SECONDS") ? env.positiveNumber("RAGENTS_BASH_TIMEOUT_SECONDS", "") : undefined;
|
|
@@ -27,7 +27,7 @@ import { bashSetting, bashTimeoutSetting, PROCESS_SANDBOX_OFF, processSandboxSet
|
|
|
27
27
|
import { RunWorkspaceRuntime } from "./runtime.js";
|
|
28
28
|
|
|
29
29
|
const warnWithoutSandbox = (): void => {
|
|
30
|
-
console.warn(`
|
|
30
|
+
console.warn(`Process sandbox turned off (${PROCESS_SANDBOX_OFF}): run processes run on the server without a sandbox.`);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
const ragentsWorkspacePlugin = (skillPaths: () => Promise<readonly string[]>): RAgentsPlugin => ({
|
|
@@ -47,7 +47,7 @@ const ragentsWorkspacePlugin = (skillPaths: () => Promise<readonly string[]>): R
|
|
|
47
47
|
host.optionalService(documentStoreToken)?.directoryFor(runId) ?? Promise.resolve(undefined);
|
|
48
48
|
const documentsRoot = async (runId: string): Promise<string> => {
|
|
49
49
|
const directory = await documentsFor(runId);
|
|
50
|
-
if (!directory) throw new Error("
|
|
50
|
+
if (!directory) throw new Error("This profile has no file store; the plugin ragents.documents is missing");
|
|
51
51
|
return directory;
|
|
52
52
|
};
|
|
53
53
|
const contributions = host.service(executorContributionsToken);
|
|
@@ -99,7 +99,7 @@ const ragentsWorkspacePlugin = (skillPaths: () => Promise<readonly string[]>): R
|
|
|
99
99
|
boundToTools({
|
|
100
100
|
...rules,
|
|
101
101
|
delivery: "initial",
|
|
102
|
-
//
|
|
102
|
+
// The rules apply to the host's workspaces; a contributed kind describes its own.
|
|
103
103
|
render: (context) => contribution()?.kind ? "" : rules.render(context),
|
|
104
104
|
}, ...agentWorkspaceToolNames),
|
|
105
105
|
shellPlatformPrompt("ragents.workspace.shell.prompt", 102, serverTools, (runId) => {
|
|
@@ -38,7 +38,7 @@ import type { WorkspaceClientRegistry } from "./clients.js";
|
|
|
38
38
|
export interface RunWorkspaceRuntimeOptions {
|
|
39
39
|
globalDirectory: string;
|
|
40
40
|
sessionDirectory: (runId: string, ...segments: string[]) => string;
|
|
41
|
-
/**
|
|
41
|
+
/** The storage boundary of a run; within it, private work files belong to its account. */
|
|
42
42
|
storageRootFor: (runId: string) => string;
|
|
43
43
|
sessionsDirectoryPattern: string;
|
|
44
44
|
sessionWorkspaceFor: (runId: string) => Promise<SessionWorkspace>;
|
|
@@ -47,21 +47,21 @@ export interface RunWorkspaceRuntimeOptions {
|
|
|
47
47
|
runState: (runId: string) => RunState | null;
|
|
48
48
|
storeBinding: (runId: string, binding: WorkspaceBinding) => void;
|
|
49
49
|
clients: WorkspaceClientRegistry;
|
|
50
|
-
/**
|
|
50
|
+
/** What the profile's plugins contribute to the server's executor; the workstations load the same contributions themselves. */
|
|
51
51
|
contributions: readonly WorkspaceExecutorParts[];
|
|
52
|
-
/**
|
|
52
|
+
/** The server's process sandbox; without it, the server's processes run without one. */
|
|
53
53
|
processSandbox?: RunProcessSandboxes;
|
|
54
|
-
/**
|
|
54
|
+
/** The server's bash from RAGENTS_BASH; required on Windows for the bash tool. */
|
|
55
55
|
bash?: string;
|
|
56
|
-
/**
|
|
56
|
+
/** The server's rg from RAGENTS_RG; without a value, one in the PATH applies. */
|
|
57
57
|
rg?: string;
|
|
58
|
-
/**
|
|
58
|
+
/** The bash timeout from RAGENTS_BASH_TIMEOUT_SECONDS; without a value, that of the tool. */
|
|
59
59
|
bashTimeoutSeconds?: number;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
const runNotStarted = (): DomainError => new DomainError(
|
|
63
63
|
"run-not-started",
|
|
64
|
-
"
|
|
64
|
+
"The run has not started yet; the working directory is created with the first message.",
|
|
65
65
|
409,
|
|
66
66
|
);
|
|
67
67
|
|
|
@@ -109,7 +109,7 @@ const variableList = (roots: readonly ServerRootDescription[]): string => listed
|
|
|
109
109
|
|
|
110
110
|
const hasVariables = (roots: readonly ServerRootDescription[]): boolean => roots.some((root) => root.environmentVariable !== undefined);
|
|
111
111
|
|
|
112
|
-
/**
|
|
112
|
+
/** On the server, workspace and roots are on one machine; every bash sees both. */
|
|
113
113
|
const serverRootsDescription = (roots: readonly ServerRootDescription[]): string => [
|
|
114
114
|
"## Roots besides the working directory",
|
|
115
115
|
"",
|
|
@@ -118,7 +118,7 @@ const serverRootsDescription = (roots: readonly ServerRootDescription[]): string
|
|
|
118
118
|
+ (hasVariables(roots) ? ` \`bash\` also has ${variableList(roots)}.` : ""),
|
|
119
119
|
].join("\n");
|
|
120
120
|
|
|
121
|
-
/**
|
|
121
|
+
/** The roots are on the server, the workspace on the workstation; a bash always sees only one of the two machines. */
|
|
122
122
|
const workstationRootsDescription = (roots: readonly ServerRootDescription[]): string => [
|
|
123
123
|
"## Roots on the server",
|
|
124
124
|
"",
|
|
@@ -135,7 +135,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
135
135
|
readonly transfer: WorkspaceTransfer;
|
|
136
136
|
readonly #options: RunWorkspaceRuntimeOptions;
|
|
137
137
|
readonly #nugetCacheDirectory: string;
|
|
138
|
-
/**
|
|
138
|
+
/** The new folders on workstations that have already been created or are in progress during this server run. */
|
|
139
139
|
readonly #preparations = new Map<string, Promise<void>>();
|
|
140
140
|
|
|
141
141
|
constructor(options: RunWorkspaceRuntimeOptions) {
|
|
@@ -163,7 +163,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
/**
|
|
166
|
+
/** Work of a run that runs on the server while its workspace is on a workstation. */
|
|
167
167
|
async #serverDirectoryFor(runId: string): Promise<string> {
|
|
168
168
|
const directory = this.#options.sessionDirectory(runId, "server");
|
|
169
169
|
await mkdir(directory, { recursive: true });
|
|
@@ -177,7 +177,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
177
177
|
return { home, nugetPackages: this.#nugetCacheDirectory };
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
/**
|
|
180
|
+
/** On a workstation, its executor runs on behalf of the run owner, otherwise the server's executor. */
|
|
181
181
|
#executorFor(runId: string): WorkspaceExecutor | undefined {
|
|
182
182
|
const state = this.#options.runState(runId);
|
|
183
183
|
const binding = bindingOf(state);
|
|
@@ -187,7 +187,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
187
187
|
return "fresh" in folder ? this.#preparing(state, binding, executor) : executor;
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
/**
|
|
190
|
+
/** Before the first task of a run, the workstation creates its new folder; cleanup never creates one. */
|
|
191
191
|
#preparing(state: RunState | null, binding: WorkstationBinding, executor: WorkspaceExecutor): WorkspaceExecutor {
|
|
192
192
|
return {
|
|
193
193
|
...executor,
|
|
@@ -209,7 +209,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
209
209
|
return preparation;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
/**
|
|
212
|
+
/** Only a freshly created folder gets the contribution's steps; if one fails, the folder disappears again and the next task starts over. */
|
|
213
213
|
async #prepare(runId: string, state: RunState | null, binding: WorkstationBinding, executor: WorkspaceExecutor): Promise<void> {
|
|
214
214
|
const { created } = await executor.execute(runId, RUN_FOLDER_OPERATIONS.create, null) as RunFolderCreated;
|
|
215
215
|
const steps = created ? this.#contribution()?.workstation?.prepare(this.#workstationContext(runId, state, binding)) ?? [] : [];
|
|
@@ -246,7 +246,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
246
246
|
return this.#withRoots(workspace, onWorkstation);
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
-
/**
|
|
249
|
+
/** What the prompt says about roots depends on the run's machine: only a bash on the server knows their variables. */
|
|
250
250
|
async #withRoots(workspace: SessionWorkspace, onWorkstation: boolean): Promise<SessionWorkspace> {
|
|
251
251
|
const roots = await this.sandbox.serverRoots();
|
|
252
252
|
if (roots.length === 0) return workspace;
|
|
@@ -293,10 +293,10 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
293
293
|
try {
|
|
294
294
|
return await realpath(cwd);
|
|
295
295
|
} catch {
|
|
296
|
-
throw new DomainError("workspace-path-missing", `
|
|
296
|
+
throw new DomainError("workspace-path-missing", `The bound folder ${cwd} no longer exists on the server.`, 409);
|
|
297
297
|
}
|
|
298
298
|
};
|
|
299
|
-
emitSystem(`
|
|
299
|
+
emitSystem(`Workspace: ${cwd} (project folder on the server)`);
|
|
300
300
|
return {
|
|
301
301
|
cwd,
|
|
302
302
|
description: serverProjectDescription(cwd),
|
|
@@ -305,17 +305,17 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
305
305
|
};
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
-
/**
|
|
308
|
+
/** The workspace is on the workstation; the server knows only its path, and every local access to it fails loudly. */
|
|
309
309
|
#workstation(runId: string, state: RunState, binding: WorkstationBinding, emitSystem: (text: string) => void): SessionWorkspace {
|
|
310
310
|
const { machine: { label }, folder } = binding;
|
|
311
311
|
const fresh = "fresh" in folder;
|
|
312
312
|
const workstation = this.#contribution()?.workstation;
|
|
313
313
|
emitSystem(fresh
|
|
314
|
-
? `
|
|
315
|
-
: `
|
|
314
|
+
? `Workspace: ${folder.path} (${workstation?.label ?? FRESH_WORKSPACE_LABEL} on the workstation ${label})`
|
|
315
|
+
: `Workspace: ${folder.path} (project folder on the workstation ${label})`);
|
|
316
316
|
const remote = (): Promise<string> => Promise.reject(new Error(
|
|
317
|
-
`
|
|
318
|
-
+ "
|
|
317
|
+
`The workspace ${folder.path} is on the workstation ${label}, not on the server; `
|
|
318
|
+
+ "it is reachable only through the run's executor (SandboxServices.execute).",
|
|
319
319
|
));
|
|
320
320
|
const description = !fresh
|
|
321
321
|
? clientProjectDescription(folder.path, label)
|
|
@@ -348,7 +348,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
348
348
|
if (resolver.optionId === undefined) return null;
|
|
349
349
|
const choice = storedStartOption(state, resolver.optionId);
|
|
350
350
|
if (choice === undefined) {
|
|
351
|
-
throw new Error(`
|
|
351
|
+
throw new Error(`The start option ${resolver.optionId} of the workspace resolver is not stored in the run`);
|
|
352
352
|
}
|
|
353
353
|
return choice;
|
|
354
354
|
}
|
|
@@ -365,13 +365,13 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
365
365
|
return this.#options.resolver();
|
|
366
366
|
}
|
|
367
367
|
|
|
368
|
-
/**
|
|
368
|
+
/** On the server, a new folder including stop and deletion belongs to the contribution; on a workstation, the host cleans it up. */
|
|
369
369
|
#serverContributionFor(runId: string): WorkspaceResolver | undefined {
|
|
370
370
|
const { machine, folder } = bindingOf(this.#options.runState(runId));
|
|
371
371
|
return machine === "server" && isFreshFolder(folder) ? this.#contribution() : undefined;
|
|
372
372
|
}
|
|
373
373
|
|
|
374
|
-
/**
|
|
374
|
+
/** If the workstation is unreachable, the folder stays there with a notice; the run is deleted anyway. */
|
|
375
375
|
async #removeWorkstationFolder(runId: string): Promise<void> {
|
|
376
376
|
this.#preparations.delete(runId);
|
|
377
377
|
const state = this.#options.runState(runId);
|
|
@@ -382,7 +382,7 @@ export class RunWorkspaceRuntime implements WorkspaceRuntime {
|
|
|
382
382
|
const steps = this.#contribution()?.workstation?.release?.(this.#workstationContext(runId, state, binding)) ?? [];
|
|
383
383
|
await this.#runSteps(runId, executor, steps, { whenReachable: true });
|
|
384
384
|
if (await executor.execute(runId, RUN_FOLDER_OPERATIONS.remove, null, { whenReachable: true }) !== null) return;
|
|
385
|
-
console.warn(`
|
|
385
|
+
console.warn(`The folder ${folder.path} of run ${runId} stays on the workstation ${machine.label} because it was unreachable.`);
|
|
386
386
|
}
|
|
387
387
|
|
|
388
388
|
async deleteSession(runId: string): Promise<void> {
|
|
@@ -5,7 +5,7 @@ import { boundToTools } from "@ragents/host/plugin-support/prompt.js";
|
|
|
5
5
|
export const shellPlatformChapter = (platform: NodeJS.Platform, tools: ShellTools): string =>
|
|
6
6
|
`## Shell platform\n\n${shellPlatformText(platform, tools)}`;
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/** Without a value, the platform and tools of the server apply; `chapterFor` names those of the executor that runs the run. */
|
|
9
9
|
export const shellPlatformPrompt = (
|
|
10
10
|
id: string,
|
|
11
11
|
order: number,
|
|
@@ -22,13 +22,13 @@ const previewSourceClass = "min-w-0 px-2.5 pt-0 pb-2.5 text-xs leading-[1.45] wh
|
|
|
22
22
|
const indent = (depth: number) => ({ "--row-indent": `${8 + depth * 12}px` }) as CSSProperties;
|
|
23
23
|
|
|
24
24
|
const rootLabels: Readonly<Record<BrowseRoot, string>> = {
|
|
25
|
-
workspace: "
|
|
26
|
-
files: "
|
|
25
|
+
workspace: "Working directory",
|
|
26
|
+
files: "File storage",
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
const emptyHints: Readonly<Record<BrowseRoot, string>> = {
|
|
30
|
-
workspace: "
|
|
31
|
-
files: "
|
|
30
|
+
workspace: "There is nothing in the run's working directory yet.",
|
|
31
|
+
files: "There is nothing in the run's file storage yet.",
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);
|
|
@@ -41,7 +41,7 @@ const sizeLabel = (bytes: number): string => {
|
|
|
41
41
|
|
|
42
42
|
const timeLabel = (value: string): string => {
|
|
43
43
|
const at = new Date(value);
|
|
44
|
-
return Number.isNaN(at.getTime()) ? value : at.toLocaleString("
|
|
44
|
+
return Number.isNaN(at.getTime()) ? value : at.toLocaleString("en-US");
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
interface BrowserMemory {
|
|
@@ -208,7 +208,7 @@ export function FileBrowserPanel({ active, session }: WorkspaceTabContext) {
|
|
|
208
208
|
})}
|
|
209
209
|
{listing.truncated && (
|
|
210
210
|
<div className="py-1 pr-2.5 pl-(--row-indent) text-[0.64rem] text-muted-foreground" style={indent(depth)}>
|
|
211
|
-
|
|
211
|
+
Further entries are not listed.
|
|
212
212
|
</div>
|
|
213
213
|
)}
|
|
214
214
|
</>
|
|
@@ -229,15 +229,15 @@ export function FileBrowserPanel({ active, session }: WorkspaceTabContext) {
|
|
|
229
229
|
</div>
|
|
230
230
|
<div className="flex items-center gap-1">
|
|
231
231
|
<Toggle
|
|
232
|
-
aria-label={showHidden ? "
|
|
232
|
+
aria-label={showHidden ? "Hide hidden entries" : "Show hidden entries"}
|
|
233
233
|
onPressedChange={setShowHidden}
|
|
234
234
|
pressed={showHidden}
|
|
235
235
|
size="sm"
|
|
236
|
-
title={showHidden ? "
|
|
236
|
+
title={showHidden ? "Hide hidden entries" : "Show hidden entries"}
|
|
237
237
|
>
|
|
238
238
|
{showHidden ? <Eye size={15} strokeWidth={1.8} /> : <EyeOff size={15} strokeWidth={1.8} />}
|
|
239
239
|
</Toggle>
|
|
240
|
-
<Button aria-label="
|
|
240
|
+
<Button aria-label="Refresh files" onClick={() => setReload((value) => value + 1)} size="icon" title="Refresh" variant="ghost">
|
|
241
241
|
<RefreshCw className={pending ? "animate-spin" : undefined} size={15} strokeWidth={1.8} />
|
|
242
242
|
</Button>
|
|
243
243
|
</div>
|
|
@@ -252,7 +252,7 @@ export function FileBrowserPanel({ active, session }: WorkspaceTabContext) {
|
|
|
252
252
|
<Empty className="min-h-30 flex-none gap-2 p-7">
|
|
253
253
|
<EmptyHeader>
|
|
254
254
|
<EmptyMedia><FolderOpen size={15} strokeWidth={1.7} /></EmptyMedia>
|
|
255
|
-
<EmptyTitle>
|
|
255
|
+
<EmptyTitle>No files</EmptyTitle>
|
|
256
256
|
<EmptyDescription>{emptyHints[root]}</EmptyDescription>
|
|
257
257
|
</EmptyHeader>
|
|
258
258
|
</Empty>
|