@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
|
@@ -16,7 +16,7 @@ export interface BrowseEntry {
|
|
|
16
16
|
|
|
17
17
|
export interface BrowseListing {
|
|
18
18
|
root: BrowseRoot;
|
|
19
|
-
/**
|
|
19
|
+
/** Where the root is; on a workstation with its label. */
|
|
20
20
|
location: string;
|
|
21
21
|
path: string;
|
|
22
22
|
entries: BrowseEntry[];
|
|
@@ -31,24 +31,24 @@ export const WORKSPACE_BINDING_OPTION_ID = "ragents.workspace.binding";
|
|
|
31
31
|
|
|
32
32
|
export const WORKSPACE_METADATA_ID = "ragents.workspace";
|
|
33
33
|
|
|
34
|
-
/**
|
|
34
|
+
/** On which machine the workspace of a run is: the server or a workstation whose label the binding records. */
|
|
35
35
|
export type WorkspaceMachine = "server" | { client: string; label: string };
|
|
36
36
|
|
|
37
|
-
/**
|
|
37
|
+
/** An existing folder that the run neither creates nor deletes. */
|
|
38
38
|
export type ExistingWorkspaceFolder = {
|
|
39
39
|
path: string;
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
/**
|
|
42
|
+
/** The new folder per run on a workstation; the binding records its path there from the moment it is chosen. */
|
|
43
43
|
export type FreshWorkstationFolder = {
|
|
44
44
|
path: string;
|
|
45
45
|
fresh: true;
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
/**
|
|
48
|
+
/** Which folder: a new one per run or an existing one; for `fresh` on the server, the host creates one per run in its storage. */
|
|
49
49
|
export type WorkspaceFolder = "fresh" | ExistingWorkspaceFolder | FreshWorkstationFolder;
|
|
50
50
|
|
|
51
|
-
/**
|
|
51
|
+
/** Where and in which folder a run works; frozen into the journal as a start option at the start. */
|
|
52
52
|
export type WorkspaceBinding = {
|
|
53
53
|
machine: WorkspaceMachine;
|
|
54
54
|
folder: WorkspaceFolder;
|
|
@@ -58,15 +58,15 @@ export const freshServerBinding = (): WorkspaceBinding => ({ machine: "server",
|
|
|
58
58
|
|
|
59
59
|
export const WORKSPACE_CLIENT_ID_PATTERN = /^[A-Za-z0-9_-]{8,64}$/;
|
|
60
60
|
|
|
61
|
-
/**
|
|
61
|
+
/** What a workstation says about itself at sign-in. */
|
|
62
62
|
export interface WorkspaceClientDescription {
|
|
63
63
|
label: string;
|
|
64
64
|
hostname: string;
|
|
65
65
|
platform: string;
|
|
66
66
|
folders: string[];
|
|
67
|
-
/**
|
|
67
|
+
/** Where the workstation creates the new folders per run, one subfolder per run named with its ID. */
|
|
68
68
|
runsDirectory: string;
|
|
69
|
-
/**
|
|
69
|
+
/** Whether the workstation's bash finds rg; the prompt adjusts the search accordingly. */
|
|
70
70
|
ripgrep: boolean;
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -74,7 +74,7 @@ export interface WorkspaceClientInfo extends WorkspaceClientDescription {
|
|
|
74
74
|
id: string;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
/**
|
|
77
|
+
/** What the new folder per run is called on each machine: the empty folder or a plugin's contribution; null where there is none. */
|
|
78
78
|
export interface FreshWorkspaceLabels {
|
|
79
79
|
server: string;
|
|
80
80
|
client: string | null;
|
|
@@ -84,7 +84,7 @@ export interface WorkspaceBindingPresentation {
|
|
|
84
84
|
kind: "workspace-binding";
|
|
85
85
|
clients: WorkspaceClientInfo[];
|
|
86
86
|
fresh: FreshWorkspaceLabels;
|
|
87
|
-
/**
|
|
87
|
+
/** Whether an existing folder of the server machine may be bound. */
|
|
88
88
|
serverFolders: boolean;
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -93,25 +93,25 @@ export interface WorkspaceSessionMetadata {
|
|
|
93
93
|
summary: string;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
const clientId = Type.String({ pattern: "^[A-Za-z0-9_-]{8,64}$", description: "
|
|
96
|
+
const clientId = Type.String({ pattern: "^[A-Za-z0-9_-]{8,64}$", description: "Stable ID of the workstation" });
|
|
97
97
|
|
|
98
|
-
const executorVersion = Type.String({ minLength: 1, maxLength: 64, description: "
|
|
98
|
+
const executorVersion = Type.String({ minLength: 1, maxLength: 64, description: "Version of the executor that the workstation brings" });
|
|
99
99
|
|
|
100
|
-
/**
|
|
100
|
+
/** The ID of a plugin; a workstation looks for its bundle under exactly this name, so it cannot contain a path. */
|
|
101
101
|
export const PLUGIN_ID_PATTERN = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/;
|
|
102
102
|
|
|
103
103
|
const executorContributions = Type.Array(Type.Object({
|
|
104
|
-
plugin: Type.String({ pattern: PLUGIN_ID_PATTERN.source, maxLength: 128, description: "
|
|
105
|
-
stand: Type.String({ pattern: "^[0-9a-f]{64}$", description: "SHA-256
|
|
106
|
-
}, { additionalProperties: false }), { maxItems: 64, description: "
|
|
104
|
+
plugin: Type.String({ pattern: PLUGIN_ID_PATTERN.source, maxLength: 128, description: "ID of the plugin" }),
|
|
105
|
+
stand: Type.String({ pattern: "^[0-9a-f]{64}$", description: "SHA-256 of the contribution file" }),
|
|
106
|
+
}, { additionalProperties: false }), { maxItems: 64, description: "The plugins' contributions to the executor, in the order of the server's plugin list" });
|
|
107
107
|
|
|
108
108
|
const clientDescription = {
|
|
109
109
|
label: Type.String({ minLength: 1, maxLength: 120 }),
|
|
110
110
|
hostname: Type.String({ minLength: 1 }),
|
|
111
111
|
platform: Type.String({ minLength: 1 }),
|
|
112
112
|
folders: Type.Array(Type.String({ minLength: 1 }), { maxItems: 32 }),
|
|
113
|
-
runsDirectory: Type.String({ minLength: 1, description: "
|
|
114
|
-
ripgrep: Type.Boolean({ description: "
|
|
113
|
+
runsDirectory: Type.String({ minLength: 1, description: "Absolute folder under which the workstation creates the new folders per run" }),
|
|
114
|
+
ripgrep: Type.Boolean({ description: "Whether the workstation's bash finds rg" }),
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
export const clientInfoSchema = Type.Object({
|
|
@@ -119,7 +119,7 @@ export const clientInfoSchema = Type.Object({
|
|
|
119
119
|
...clientDescription,
|
|
120
120
|
}, { additionalProperties: false });
|
|
121
121
|
|
|
122
|
-
/**
|
|
122
|
+
/** The sign-in as a workstation with the server's executor sends it. */
|
|
123
123
|
export const clientRegistrationSchema = Type.Object({
|
|
124
124
|
id: clientId,
|
|
125
125
|
...clientDescription,
|
|
@@ -127,53 +127,53 @@ export const clientRegistrationSchema = Type.Object({
|
|
|
127
127
|
contributions: executorContributions,
|
|
128
128
|
}, { additionalProperties: false });
|
|
129
129
|
|
|
130
|
-
/**
|
|
130
|
+
/** A workstation with a different executor does not know the shape of this version; the server rejects it by its version, not by its shape. */
|
|
131
131
|
const otherExecutorRegistration = Type.Object({ label: clientDescription.label, executor: executorVersion }, {
|
|
132
|
-
description: "
|
|
132
|
+
description: "Sign-in with a different executor version in any shape; the server rejects it with workspace-executor-version",
|
|
133
133
|
});
|
|
134
134
|
|
|
135
|
-
const absolutePath = Type.String({ minLength: 1, description: "
|
|
135
|
+
const absolutePath = Type.String({ minLength: 1, description: "Absolute path in the bound folder" });
|
|
136
136
|
|
|
137
|
-
/**
|
|
137
|
+
/** Not an operation of a module: releases what the workstation's executor holds for the run. */
|
|
138
138
|
export const WORKSPACE_CLIENT_STOP_OPERATION = "stop";
|
|
139
139
|
|
|
140
|
-
/**
|
|
140
|
+
/** The one operation the server calls on the workstation; progress is the JSON value of the operation, for bash { text }. */
|
|
141
141
|
export const workspaceClientContracts = {
|
|
142
142
|
execute: defineOperation({
|
|
143
143
|
id: "ragents.workspace.client.execute",
|
|
144
|
-
description: "
|
|
144
|
+
description: "Run an operation of the executor on the workstation, such as a tool, a file query, or the process display; the result is its value, progress its JSON value. stop releases what the workstation holds for the run.",
|
|
145
145
|
implementedBy: "client",
|
|
146
146
|
input: Type.Object({
|
|
147
|
-
runId: Type.String({ minLength: 1, maxLength: 64, description: "
|
|
148
|
-
operation: Type.String({ minLength: 1, maxLength: 64, description: "Name
|
|
149
|
-
toolCallId: Type.Optional(Type.String({ minLength: 1, maxLength: 200, description: "
|
|
147
|
+
runId: Type.String({ minLength: 1, maxLength: 64, description: "ID of the run" }),
|
|
148
|
+
operation: Type.String({ minLength: 1, maxLength: 64, description: "Name of the operation, such as read, bash, roslyn_open, files.list, or stop" }),
|
|
149
|
+
toolCallId: Type.Optional(Type.String({ minLength: 1, maxLength: 200, description: "Only for a tool call of the model" })),
|
|
150
150
|
cwd: absolutePath,
|
|
151
|
-
env: Type.Record(Type.String(), Type.String(), { description: "
|
|
152
|
-
input: Type.Unknown({ description: "
|
|
151
|
+
env: Type.Record(Type.String(), Type.String(), { description: "What the server contributes: run marker and git rules of the sandbox" }),
|
|
152
|
+
input: Type.Unknown({ description: "The input of the operation" }),
|
|
153
153
|
}, { additionalProperties: false }),
|
|
154
154
|
result: Type.Object({ value: Type.Unknown() }, { additionalProperties: false }),
|
|
155
155
|
}),
|
|
156
156
|
} as const;
|
|
157
157
|
|
|
158
158
|
const browseTarget = {
|
|
159
|
-
runId: Type.String({ minLength: 1, maxLength: 64, description: "
|
|
159
|
+
runId: Type.String({ minLength: 1, maxLength: 64, description: "ID of the run" }),
|
|
160
160
|
root: Type.Union([Type.Literal("workspace"), Type.Literal("files")]),
|
|
161
|
-
path: Type.String({ description: "
|
|
161
|
+
path: Type.String({ description: "Path below the root; empty is the root itself" }),
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
-
/**
|
|
164
|
+
/** The sign-in of a workstation binds the calling connection; the server calls back through it. */
|
|
165
165
|
export const workspaceContracts = {
|
|
166
166
|
browse: {
|
|
167
167
|
list: defineOperation({
|
|
168
168
|
id: "ragents.workspace.browse.list",
|
|
169
|
-
description: "
|
|
169
|
+
description: "List a directory in the workspace or in the file store of a run.",
|
|
170
170
|
rights: ["runs.read", "runs.inspect"],
|
|
171
171
|
input: Type.Object(browseTarget, { additionalProperties: false }),
|
|
172
172
|
result: openJson<BrowseListing>("BrowseListing"),
|
|
173
173
|
}),
|
|
174
174
|
preview: defineOperation({
|
|
175
175
|
id: "ragents.workspace.browse.preview",
|
|
176
|
-
description: "
|
|
176
|
+
description: "Preview a file as text; files that are too large or binary state the reason instead.",
|
|
177
177
|
rights: ["runs.read", "runs.inspect"],
|
|
178
178
|
input: Type.Object(browseTarget, { additionalProperties: false }),
|
|
179
179
|
result: openJson<BrowsePreview>("BrowsePreview"),
|
|
@@ -182,7 +182,7 @@ export const workspaceContracts = {
|
|
|
182
182
|
channels: {
|
|
183
183
|
browse: defineChannel({
|
|
184
184
|
id: "ragents.workspace.browse",
|
|
185
|
-
description: "
|
|
185
|
+
description: "Reports every change below the observed root of a run.",
|
|
186
186
|
rights: ["runs.read", "runs.inspect"],
|
|
187
187
|
params: Type.Object({ runId: browseTarget.runId, root: browseTarget.root }, { additionalProperties: false }),
|
|
188
188
|
message: Type.Object({ changed: Type.Literal(true) }, { additionalProperties: false }),
|
|
@@ -191,28 +191,28 @@ export const workspaceContracts = {
|
|
|
191
191
|
clients: {
|
|
192
192
|
list: defineOperation({
|
|
193
193
|
id: "ragents.workspace.clients.list",
|
|
194
|
-
description: "
|
|
194
|
+
description: "The caller's signed-in workstations; other users' workstations do not appear even with runs.read.all.",
|
|
195
195
|
rights: ["runs.read"],
|
|
196
196
|
input: Type.Object({}, { additionalProperties: false }),
|
|
197
197
|
result: Type.Array(clientInfoSchema),
|
|
198
198
|
}),
|
|
199
199
|
contributions: defineOperation({
|
|
200
200
|
id: "ragents.workspace.clients.contributions",
|
|
201
|
-
description: "
|
|
201
|
+
description: "The plugins' contributions to the executor that a workstation loads before sign-in and reports back with it. A workstation with a different executor version fails on its version; other fields do not matter.",
|
|
202
202
|
rights: ["runs.write"],
|
|
203
203
|
input: Type.Object({ label: clientDescription.label, executor: executorVersion }),
|
|
204
204
|
result: executorContributions,
|
|
205
205
|
}),
|
|
206
206
|
register: defineOperation({
|
|
207
207
|
id: "ragents.workspace.clients.register",
|
|
208
|
-
description: "
|
|
208
|
+
description: "Sign in a workstation or renew its folders; the connection of this request becomes its return path and needs an event stream. A workstation with a different executor version fails on its version before the rest of the shape matters.",
|
|
209
209
|
rights: ["runs.write"],
|
|
210
210
|
input: Type.Union([clientRegistrationSchema, otherExecutorRegistration]),
|
|
211
211
|
result: clientInfoSchema,
|
|
212
212
|
}),
|
|
213
213
|
unregister: defineOperation({
|
|
214
214
|
id: "ragents.workspace.clients.unregister",
|
|
215
|
-
description: "
|
|
215
|
+
description: "Sign out one of your own workstations; open tasks fail.",
|
|
216
216
|
rights: ["runs.write"],
|
|
217
217
|
input: Type.Object({ id: clientId }, { additionalProperties: false }),
|
|
218
218
|
result: Type.Null(),
|
|
@@ -235,7 +235,7 @@ const isFolder = (value: unknown): value is WorkspaceFolder => {
|
|
|
235
235
|
return hasExactly(value, ["path"]) || (hasExactly(value, ["path", "fresh"]) && value.fresh === true);
|
|
236
236
|
};
|
|
237
237
|
|
|
238
|
-
/**
|
|
238
|
+
/** A new folder with a path exists only on a workstation; on the server the host creates it itself. */
|
|
239
239
|
export const isWorkspaceBinding = (value: unknown): value is WorkspaceBinding =>
|
|
240
240
|
isRecord(value) && hasExactly(value, ["machine", "folder"]) && isMachine(value.machine) && isFolder(value.folder)
|
|
241
241
|
&& !(value.machine === "server" && typeof value.folder === "object" && "fresh" in value.folder);
|
|
@@ -243,7 +243,7 @@ export const isWorkspaceBinding = (value: unknown): value is WorkspaceBinding =>
|
|
|
243
243
|
export const isFreshFolder = (folder: WorkspaceFolder): folder is "fresh" | FreshWorkstationFolder =>
|
|
244
244
|
folder === "fresh" || "fresh" in folder;
|
|
245
245
|
|
|
246
|
-
/**
|
|
246
|
+
/** The shape before machine and folder were separated, `{ kind: "fresh" | "path" | "client" }`, mapped unambiguously to the current one. */
|
|
247
247
|
const fromKind = (value: Record<string, unknown>): unknown => {
|
|
248
248
|
switch (value.kind) {
|
|
249
249
|
case "fresh": return hasExactly(value, ["kind"]) ? freshServerBinding() : undefined;
|
|
@@ -255,16 +255,16 @@ const fromKind = (value: Record<string, unknown>): unknown => {
|
|
|
255
255
|
}
|
|
256
256
|
};
|
|
257
257
|
|
|
258
|
-
/**
|
|
258
|
+
/** The stored binding; older, immutable journals carry the shape with `kind`, and only here is it mapped. */
|
|
259
259
|
export const storedWorkspaceBinding = (value: unknown): WorkspaceBinding | undefined => {
|
|
260
260
|
if (isWorkspaceBinding(value)) return value;
|
|
261
261
|
const mapped = isRecord(value) && Object.hasOwn(value, "kind") ? fromKind(value) : undefined;
|
|
262
262
|
return isWorkspaceBinding(mapped) ? mapped : undefined;
|
|
263
263
|
};
|
|
264
264
|
|
|
265
|
-
export const FRESH_WORKSPACE_LABEL = "
|
|
265
|
+
export const FRESH_WORKSPACE_LABEL = "Empty folder per run";
|
|
266
266
|
|
|
267
|
-
/**
|
|
267
|
+
/** What the new folder per run is called on the binding's machine; without a contribution there, the empty folder. */
|
|
268
268
|
const freshLabelOf = (binding: WorkspaceBinding, labels: FreshWorkspaceLabels): string =>
|
|
269
269
|
(binding.machine === "server" ? labels.server : labels.client) ?? FRESH_WORKSPACE_LABEL;
|
|
270
270
|
|
|
@@ -36,7 +36,7 @@ const folderSchema = Type.Union([
|
|
|
36
36
|
|
|
37
37
|
const bindingSchema = Type.Object({ machine: machineSchema, folder: folderSchema }, { additionalProperties: false });
|
|
38
38
|
|
|
39
|
-
/**
|
|
39
|
+
/** A run on a workstation with its ID, label, and the folder there; `fresh` then already carries its path. */
|
|
40
40
|
export type WorkstationBinding = {
|
|
41
41
|
machine: { client: string; label: string };
|
|
42
42
|
folder: ExistingWorkspaceFolder | FreshWorkstationFolder;
|
|
@@ -48,20 +48,20 @@ const insideFolder = (folder: string, candidate: string): boolean => {
|
|
|
48
48
|
return candidate === root || candidate.startsWith(root + separator);
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
/**
|
|
51
|
+
/** The folder of a run below the folder in which a workstation creates the new folders per run; with its separator. */
|
|
52
52
|
export const workstationRunFolder = (runsDirectory: string, runId: string): string => {
|
|
53
53
|
const separator = runsDirectory.includes("\\") ? "\\" : "/";
|
|
54
54
|
const root = runsDirectory.endsWith(separator) ? runsDirectory.slice(0, -separator.length) : runsDirectory;
|
|
55
55
|
return `${root}${separator}${runId}`;
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
/**
|
|
58
|
+
/** The binding of a run; without a stored choice the new folder on the server, an unreadable one blocks the run with a cause. */
|
|
59
59
|
export const bindingOf = (state: RunState | null): WorkspaceBinding => {
|
|
60
60
|
const stored = storedStartOption(state, WORKSPACE_BINDING_OPTION_ID);
|
|
61
61
|
if (stored === undefined) return freshServerBinding();
|
|
62
62
|
const binding = storedWorkspaceBinding(stored);
|
|
63
63
|
if (!binding || (binding.machine !== "server" && binding.folder === "fresh")) {
|
|
64
|
-
throw new Error(`
|
|
64
|
+
throw new Error(`The stored workspace binding is invalid: ${JSON.stringify(stored)}`);
|
|
65
65
|
}
|
|
66
66
|
return binding;
|
|
67
67
|
};
|
|
@@ -69,26 +69,26 @@ export const bindingOf = (state: RunState | null): WorkspaceBinding => {
|
|
|
69
69
|
export const isWorkstationBinding = (binding: WorkspaceBinding): binding is WorkstationBinding =>
|
|
70
70
|
binding.machine !== "server" && binding.folder !== "fresh";
|
|
71
71
|
|
|
72
|
-
/**
|
|
72
|
+
/** A run uses only workstations of its owner, a run without an owner only those signed in without a user. */
|
|
73
73
|
export const workspaceOwnerOf = (state: RunState | null): string | null => state?.ownerUserId ?? null;
|
|
74
74
|
|
|
75
|
-
/**
|
|
75
|
+
/** The existing folder on the server machine that the run is bound to; a new folder and a workstation are not there. */
|
|
76
76
|
export const boundServerDirectory = (state: RunState | null): string | null => {
|
|
77
77
|
const { machine, folder } = bindingOf(state);
|
|
78
78
|
return machine === "server" && folder !== "fresh" ? folder.path : null;
|
|
79
79
|
};
|
|
80
80
|
|
|
81
|
-
/**
|
|
81
|
+
/** An existing folder of this server; the same check as when choosing the start option. */
|
|
82
82
|
export const serverDirectoryFolder = (directory: string): ExistingWorkspaceFolder => {
|
|
83
|
-
if (!path.isAbsolute(directory)) throw new DomainError("workspace-path-relative", "
|
|
83
|
+
if (!path.isAbsolute(directory)) throw new DomainError("workspace-path-relative", "The folder must be an absolute path.", 400);
|
|
84
84
|
const resolved = path.resolve(directory);
|
|
85
85
|
if (!statSync(resolved, { throwIfNoEntry: false })?.isDirectory()) {
|
|
86
|
-
throw new DomainError("workspace-path-missing", `
|
|
86
|
+
throw new DomainError("workspace-path-missing", `The folder ${resolved} does not exist on the server.`, 400);
|
|
87
87
|
}
|
|
88
88
|
return { path: resolved };
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
-
/**
|
|
91
|
+
/** The bash of a run runs on the executor of its binding; the prompt therefore names its platform and tools, not those of the server. */
|
|
92
92
|
export const executorShellChapter = (
|
|
93
93
|
registry: WorkspaceClientRegistry,
|
|
94
94
|
owner: string | null,
|
|
@@ -104,11 +104,11 @@ export const executorShellChapter = (
|
|
|
104
104
|
+ "so the platform of its shell is unknown; the workspace tools fail until it connects again.";
|
|
105
105
|
};
|
|
106
106
|
|
|
107
|
-
/**
|
|
107
|
+
/** Where the root of a run is, in words: on a workstation with its label, otherwise the path itself. */
|
|
108
108
|
export const workspaceLocation = (binding: WorkspaceBinding, location: string): string =>
|
|
109
|
-
binding.machine === "server" ? location : `
|
|
109
|
+
binding.machine === "server" ? location : `Workstation ${binding.machine.label}: ${location}`;
|
|
110
110
|
|
|
111
|
-
/**
|
|
111
|
+
/** The contribution provides the new folder per run as soon as there is one; on a workstation only if it explicitly can there. */
|
|
112
112
|
export const freshLabels = (contribution: WorkspaceResolver | undefined): FreshWorkspaceLabels => ({
|
|
113
113
|
server: contribution?.kind?.label ?? FRESH_WORKSPACE_LABEL,
|
|
114
114
|
client: contribution ? contribution.workstation?.label ?? null : FRESH_WORKSPACE_LABEL,
|
|
@@ -121,7 +121,7 @@ export const sessionMetadataOf = (state: RunState | null, contribution: Workspac
|
|
|
121
121
|
|
|
122
122
|
const unsupported = (message: string): DomainError => new DomainError("workspace-binding-unsupported", message, 400);
|
|
123
123
|
|
|
124
|
-
/**
|
|
124
|
+
/** A workstation of the acting user that offers the folder; a new folder per run gets its path there below its folder for runs. */
|
|
125
125
|
const workstationBinding = (
|
|
126
126
|
client: WorkspaceClientInfo,
|
|
127
127
|
folder: WorkspaceBinding["folder"],
|
|
@@ -131,12 +131,12 @@ const workstationBinding = (
|
|
|
131
131
|
const machine = { client: client.id, label: client.label };
|
|
132
132
|
if (isFreshFolder(folder)) {
|
|
133
133
|
if (labels.client === null) {
|
|
134
|
-
throw unsupported(`
|
|
134
|
+
throw unsupported(`A new folder per run exists here only on the server (${labels.server}); choose one there or an existing folder of the workstation.`);
|
|
135
135
|
}
|
|
136
136
|
return { machine, folder: { path: workstationRunFolder(client.runsDirectory, runId), fresh: true } };
|
|
137
137
|
}
|
|
138
138
|
if (!client.folders.some((offered) => insideFolder(offered, folder.path))) {
|
|
139
|
-
throw new DomainError("workspace-client-folder", `
|
|
139
|
+
throw new DomainError("workspace-client-folder", `The workstation ${client.label} does not offer the folder ${folder.path}.`, 400);
|
|
140
140
|
}
|
|
141
141
|
return { machine, folder: { path: folder.path } };
|
|
142
142
|
};
|
|
@@ -150,19 +150,19 @@ export const workspaceBindingOption = (
|
|
|
150
150
|
selectable: () => true,
|
|
151
151
|
defaultValue: () => freshServerBinding(),
|
|
152
152
|
accept: (value, { runId, userId }) => {
|
|
153
|
-
if (!isWorkspaceBinding(value)) throw new DomainError("workspace-binding-invalid", "
|
|
153
|
+
if (!isWorkspaceBinding(value)) throw new DomainError("workspace-binding-invalid", "The workspace binding has no valid format.", 400);
|
|
154
154
|
const labels = freshLabels(contribution());
|
|
155
155
|
const { machine, folder } = value;
|
|
156
156
|
if (machine === "server") {
|
|
157
157
|
if (folder === "fresh") return freshServerBinding();
|
|
158
|
-
if ("fresh" in folder) throw new DomainError("workspace-binding-invalid", "
|
|
158
|
+
if ("fresh" in folder) throw new DomainError("workspace-binding-invalid", "On the server, the host creates the new folder per run; it has no chosen path.", 400);
|
|
159
159
|
if (!(contribution()?.kind?.serverFolders ?? true)) {
|
|
160
|
-
throw unsupported(`
|
|
160
|
+
throw unsupported(`An existing folder on the server machine is not a binding here; choose ${labels.server} or a workstation.`);
|
|
161
161
|
}
|
|
162
162
|
return { machine, folder: serverDirectoryFolder(folder.path) };
|
|
163
163
|
}
|
|
164
164
|
const client = registry.info(userId, machine.client);
|
|
165
|
-
if (!client) throw new DomainError("workspace-client-disconnected", `
|
|
165
|
+
if (!client) throw new DomainError("workspace-client-disconnected", `The workstation ${machine.label || machine.client} is not connected.`, 409);
|
|
166
166
|
return workstationBinding(client, folder, runId, labels);
|
|
167
167
|
},
|
|
168
168
|
describe: (_value, { userId }) => {
|
|
@@ -24,13 +24,13 @@ import {
|
|
|
24
24
|
|
|
25
25
|
export interface BrowseOptions {
|
|
26
26
|
ensureSession: (runId: string) => void;
|
|
27
|
-
/**
|
|
27
|
+
/** The workspace of a run that only its owner operates is with the owner; the server's file store is not. */
|
|
28
28
|
ensureWorkspaceAccess: (access: AccessContext, runId: string) => void;
|
|
29
|
-
/**
|
|
29
|
+
/** The workspace is reachable only through the run's executor, wherever it is. */
|
|
30
30
|
execute: SandboxServices["execute"];
|
|
31
|
-
/**
|
|
31
|
+
/** The file store is on the server and does not belong to the workspace. */
|
|
32
32
|
documentsFor: (runId: string) => Promise<string>;
|
|
33
|
-
/**
|
|
33
|
+
/** What the root of a run is called, for example with the label of its workstation. */
|
|
34
34
|
locationOf: (runId: string, location: string) => string;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -74,10 +74,10 @@ export const createBrowseMethods = (options: BrowseOptions): MethodContribution[
|
|
|
74
74
|
}),
|
|
75
75
|
];
|
|
76
76
|
|
|
77
|
-
/**
|
|
77
|
+
/** After a running watch ends, for example because the workstation was gone, the channel retries at this interval. */
|
|
78
78
|
const WATCH_RETRY_MS = 5_000;
|
|
79
79
|
|
|
80
|
-
/**
|
|
80
|
+
/** Watches the workspace at the run's executor until aborted; once the watch is established the channel is open, and when it ends, it starts a new one. */
|
|
81
81
|
const watchWorkspace = (options: BrowseOptions, runId: string, changed: () => void): Promise<() => void> =>
|
|
82
82
|
new Promise((ready, failed) => {
|
|
83
83
|
const controller = new AbortController();
|
|
@@ -92,10 +92,10 @@ const watchWorkspace = (options: BrowseOptions, runId: string, changed: () => vo
|
|
|
92
92
|
const ended = (error?: unknown): void => {
|
|
93
93
|
if (controller.signal.aborted) return;
|
|
94
94
|
if (!opened) {
|
|
95
|
-
failed(error ?? new Error("
|
|
95
|
+
failed(error ?? new Error("The workspace watch ended before it was established"));
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
|
-
//
|
|
98
|
+
// When a running watch ends, the view reloads and shows the cause; once the next one is established, it reloads again.
|
|
99
99
|
if (watching) changed();
|
|
100
100
|
retry = setTimeout(start, WATCH_RETRY_MS);
|
|
101
101
|
};
|