@schlenkr/ragents 0.1.10 → 0.1.12
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/README.md +1 -1
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +6 -6
- 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 +38 -38
- 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 +27 -27
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +14 -14
- 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 +62 -57
- 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-CpPi6QLr.js} +1 -1
- package/apps/web/dist/assets/main-DJmCHGzM.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-q-mf1kLN.js +608 -0
- package/apps/web/dist/assets/runPanel-nk_aMxSn.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 +91 -91
- 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/QuasselHost.tsx +1 -1
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +8 -4
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- package/bundles/ragents.todo/server/index.js +5 -8
- 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 +3 -3
- 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 +3 -3
- 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 +3 -3
- package/bundles/ragents.workspace/server/index.js +83 -83
- 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 +3725 -552
- 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-storage.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 +44 -44
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +16 -16
- package/packages/workspace-executor/src/files.ts +31 -31
- package/packages/workspace-executor/src/index.ts +1 -1
- 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 +36 -36
- 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 +3 -3
- 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 +3 -3
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -5
- 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/contract.ts +0 -3
- 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 +63 -63
- 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 +50 -50
- 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 +31 -31
- 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 +49 -49
- 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
|
@@ -60,20 +60,20 @@ var WORKSPACE_BINDING_OPTION_ID = "ragents.workspace.binding";
|
|
|
60
60
|
var WORKSPACE_METADATA_ID = "ragents.workspace";
|
|
61
61
|
var freshServerBinding = () => ({ machine: "server", folder: "fresh" });
|
|
62
62
|
var WORKSPACE_CLIENT_ID_PATTERN = /^[A-Za-z0-9_-]{8,64}$/;
|
|
63
|
-
var clientId = Type.String({ pattern: "^[A-Za-z0-9_-]{8,64}$", description: "
|
|
64
|
-
var executorVersion = Type.String({ minLength: 1, maxLength: 64, description: "
|
|
63
|
+
var clientId = Type.String({ pattern: "^[A-Za-z0-9_-]{8,64}$", description: "Stable ID of the workstation" });
|
|
64
|
+
var executorVersion = Type.String({ minLength: 1, maxLength: 64, description: "Version of the executor that the workstation brings" });
|
|
65
65
|
var PLUGIN_ID_PATTERN = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/;
|
|
66
66
|
var executorContributions = Type.Array(Type.Object({
|
|
67
|
-
plugin: Type.String({ pattern: PLUGIN_ID_PATTERN.source, maxLength: 128, description: "
|
|
68
|
-
|
|
69
|
-
}, { additionalProperties: false }), { maxItems: 64, description: "
|
|
67
|
+
plugin: Type.String({ pattern: PLUGIN_ID_PATTERN.source, maxLength: 128, description: "ID of the plugin" }),
|
|
68
|
+
revision: Type.String({ pattern: "^[0-9a-f]{64}$", description: "SHA-256 of the contribution file" })
|
|
69
|
+
}, { additionalProperties: false }), { maxItems: 64, description: "The plugins' contributions to the executor, in the order of the server's plugin list" });
|
|
70
70
|
var clientDescription = {
|
|
71
71
|
label: Type.String({ minLength: 1, maxLength: 120 }),
|
|
72
72
|
hostname: Type.String({ minLength: 1 }),
|
|
73
73
|
platform: Type.String({ minLength: 1 }),
|
|
74
74
|
folders: Type.Array(Type.String({ minLength: 1 }), { maxItems: 32 }),
|
|
75
|
-
runsDirectory: Type.String({ minLength: 1, description: "
|
|
76
|
-
ripgrep: Type.Boolean({ description: "
|
|
75
|
+
runsDirectory: Type.String({ minLength: 1, description: "Absolute folder under which the workstation creates the new folders per run" }),
|
|
76
|
+
ripgrep: Type.Boolean({ description: "Whether the workstation's bash finds rg" })
|
|
77
77
|
};
|
|
78
78
|
var clientInfoSchema = Type.Object({
|
|
79
79
|
id: Type.String(),
|
|
@@ -86,43 +86,43 @@ var clientRegistrationSchema = Type.Object({
|
|
|
86
86
|
contributions: executorContributions
|
|
87
87
|
}, { additionalProperties: false });
|
|
88
88
|
var otherExecutorRegistration = Type.Object({ label: clientDescription.label, executor: executorVersion }, {
|
|
89
|
-
description: "
|
|
89
|
+
description: "Sign-in with a different executor version in any shape; the server rejects it with workspace-executor-version"
|
|
90
90
|
});
|
|
91
|
-
var absolutePath = Type.String({ minLength: 1, description: "
|
|
91
|
+
var absolutePath = Type.String({ minLength: 1, description: "Absolute path in the bound folder" });
|
|
92
92
|
var WORKSPACE_CLIENT_STOP_OPERATION = "stop";
|
|
93
93
|
var workspaceClientContracts = {
|
|
94
94
|
execute: defineOperation({
|
|
95
95
|
id: "ragents.workspace.client.execute",
|
|
96
|
-
description: "
|
|
96
|
+
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.",
|
|
97
97
|
implementedBy: "client",
|
|
98
98
|
input: Type.Object({
|
|
99
|
-
runId: Type.String({ minLength: 1, maxLength: 64, description: "
|
|
100
|
-
operation: Type.String({ minLength: 1, maxLength: 64, description: "Name
|
|
101
|
-
toolCallId: Type.Optional(Type.String({ minLength: 1, maxLength: 200, description: "
|
|
99
|
+
runId: Type.String({ minLength: 1, maxLength: 64, description: "ID of the run" }),
|
|
100
|
+
operation: Type.String({ minLength: 1, maxLength: 64, description: "Name of the operation, such as read, bash, roslyn_open, files.list, or stop" }),
|
|
101
|
+
toolCallId: Type.Optional(Type.String({ minLength: 1, maxLength: 200, description: "Only for a tool call of the model" })),
|
|
102
102
|
cwd: absolutePath,
|
|
103
|
-
env: Type.Record(Type.String(), Type.String(), { description: "
|
|
104
|
-
input: Type.Unknown({ description: "
|
|
103
|
+
env: Type.Record(Type.String(), Type.String(), { description: "What the server contributes: run marker and git rules of the sandbox" }),
|
|
104
|
+
input: Type.Unknown({ description: "The input of the operation" })
|
|
105
105
|
}, { additionalProperties: false }),
|
|
106
106
|
result: Type.Object({ value: Type.Unknown() }, { additionalProperties: false })
|
|
107
107
|
})
|
|
108
108
|
};
|
|
109
109
|
var browseTarget = {
|
|
110
|
-
runId: Type.String({ minLength: 1, maxLength: 64, description: "
|
|
110
|
+
runId: Type.String({ minLength: 1, maxLength: 64, description: "ID of the run" }),
|
|
111
111
|
root: Type.Union([Type.Literal("workspace"), Type.Literal("files")]),
|
|
112
|
-
path: Type.String({ description: "
|
|
112
|
+
path: Type.String({ description: "Path below the root; empty is the root itself" })
|
|
113
113
|
};
|
|
114
114
|
var workspaceContracts = {
|
|
115
115
|
browse: {
|
|
116
116
|
list: defineOperation({
|
|
117
117
|
id: "ragents.workspace.browse.list",
|
|
118
|
-
description: "
|
|
118
|
+
description: "List a directory in the workspace or in the file store of a run.",
|
|
119
119
|
rights: ["runs.read", "runs.inspect"],
|
|
120
120
|
input: Type.Object(browseTarget, { additionalProperties: false }),
|
|
121
121
|
result: openJson("BrowseListing")
|
|
122
122
|
}),
|
|
123
123
|
preview: defineOperation({
|
|
124
124
|
id: "ragents.workspace.browse.preview",
|
|
125
|
-
description: "
|
|
125
|
+
description: "Preview a file as text; files that are too large or binary state the reason instead.",
|
|
126
126
|
rights: ["runs.read", "runs.inspect"],
|
|
127
127
|
input: Type.Object(browseTarget, { additionalProperties: false }),
|
|
128
128
|
result: openJson("BrowsePreview")
|
|
@@ -131,7 +131,7 @@ var workspaceContracts = {
|
|
|
131
131
|
channels: {
|
|
132
132
|
browse: defineChannel({
|
|
133
133
|
id: "ragents.workspace.browse",
|
|
134
|
-
description: "
|
|
134
|
+
description: "Reports every change below the observed root of a run.",
|
|
135
135
|
rights: ["runs.read", "runs.inspect"],
|
|
136
136
|
params: Type.Object({ runId: browseTarget.runId, root: browseTarget.root }, { additionalProperties: false }),
|
|
137
137
|
message: Type.Object({ changed: Type.Literal(true) }, { additionalProperties: false })
|
|
@@ -140,28 +140,28 @@ var workspaceContracts = {
|
|
|
140
140
|
clients: {
|
|
141
141
|
list: defineOperation({
|
|
142
142
|
id: "ragents.workspace.clients.list",
|
|
143
|
-
description: "
|
|
143
|
+
description: "The caller's signed-in workstations; other users' workstations do not appear even with runs.read.all.",
|
|
144
144
|
rights: ["runs.read"],
|
|
145
145
|
input: Type.Object({}, { additionalProperties: false }),
|
|
146
146
|
result: Type.Array(clientInfoSchema)
|
|
147
147
|
}),
|
|
148
148
|
contributions: defineOperation({
|
|
149
149
|
id: "ragents.workspace.clients.contributions",
|
|
150
|
-
description: "
|
|
150
|
+
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.",
|
|
151
151
|
rights: ["runs.write"],
|
|
152
152
|
input: Type.Object({ label: clientDescription.label, executor: executorVersion }),
|
|
153
153
|
result: executorContributions
|
|
154
154
|
}),
|
|
155
155
|
register: defineOperation({
|
|
156
156
|
id: "ragents.workspace.clients.register",
|
|
157
|
-
description: "
|
|
157
|
+
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.",
|
|
158
158
|
rights: ["runs.write"],
|
|
159
159
|
input: Type.Union([clientRegistrationSchema, otherExecutorRegistration]),
|
|
160
160
|
result: clientInfoSchema
|
|
161
161
|
}),
|
|
162
162
|
unregister: defineOperation({
|
|
163
163
|
id: "ragents.workspace.clients.unregister",
|
|
164
|
-
description: "
|
|
164
|
+
description: "Sign out one of your own workstations; open tasks fail.",
|
|
165
165
|
rights: ["runs.write"],
|
|
166
166
|
input: Type.Object({ id: clientId }, { additionalProperties: false }),
|
|
167
167
|
result: Type.Null()
|
|
@@ -195,7 +195,7 @@ var storedWorkspaceBinding = (value) => {
|
|
|
195
195
|
const mapped = isRecord(value) && Object.hasOwn(value, "kind") ? fromKind(value) : void 0;
|
|
196
196
|
return isWorkspaceBinding(mapped) ? mapped : void 0;
|
|
197
197
|
};
|
|
198
|
-
var FRESH_WORKSPACE_LABEL = "
|
|
198
|
+
var FRESH_WORKSPACE_LABEL = "Empty folder per run";
|
|
199
199
|
var freshLabelOf = (binding, labels) => (binding.machine === "server" ? labels.server : labels.client) ?? FRESH_WORKSPACE_LABEL;
|
|
200
200
|
var workspaceBindingSummary = (binding, labels) => {
|
|
201
201
|
const { machine, folder } = binding;
|
|
@@ -234,7 +234,7 @@ var bindingOf = (state) => {
|
|
|
234
234
|
if (stored === void 0) return freshServerBinding();
|
|
235
235
|
const binding = storedWorkspaceBinding(stored);
|
|
236
236
|
if (!binding || binding.machine !== "server" && binding.folder === "fresh") {
|
|
237
|
-
throw new Error(`
|
|
237
|
+
throw new Error(`The stored workspace binding is invalid: ${JSON.stringify(stored)}`);
|
|
238
238
|
}
|
|
239
239
|
return binding;
|
|
240
240
|
};
|
|
@@ -245,10 +245,10 @@ var boundServerDirectory = (state) => {
|
|
|
245
245
|
return machine === "server" && folder !== "fresh" ? folder.path : null;
|
|
246
246
|
};
|
|
247
247
|
var serverDirectoryFolder = (directory) => {
|
|
248
|
-
if (!path.isAbsolute(directory)) throw new DomainError("workspace-path-relative", "
|
|
248
|
+
if (!path.isAbsolute(directory)) throw new DomainError("workspace-path-relative", "The folder must be an absolute path.", 400);
|
|
249
249
|
const resolved = path.resolve(directory);
|
|
250
250
|
if (!statSync(resolved, { throwIfNoEntry: false })?.isDirectory()) {
|
|
251
|
-
throw new DomainError("workspace-path-missing", `
|
|
251
|
+
throw new DomainError("workspace-path-missing", `The folder ${resolved} does not exist on the server.`, 400);
|
|
252
252
|
}
|
|
253
253
|
return { path: resolved };
|
|
254
254
|
};
|
|
@@ -260,7 +260,7 @@ var executorShellChapter = (registry, owner, binding, serverTools) => {
|
|
|
260
260
|
|
|
261
261
|
The workstation ${machine.label} that holds this project is not registered right now, so the platform of its shell is unknown; the workspace tools fail until it connects again.`;
|
|
262
262
|
};
|
|
263
|
-
var workspaceLocation = (binding, location) => binding.machine === "server" ? location : `
|
|
263
|
+
var workspaceLocation = (binding, location) => binding.machine === "server" ? location : `Workstation ${binding.machine.label}: ${location}`;
|
|
264
264
|
var freshLabels = (contribution) => ({
|
|
265
265
|
server: contribution?.kind?.label ?? FRESH_WORKSPACE_LABEL,
|
|
266
266
|
client: contribution ? contribution.workstation?.label ?? null : FRESH_WORKSPACE_LABEL
|
|
@@ -274,12 +274,12 @@ var workstationBinding = (client, folder, runId, labels) => {
|
|
|
274
274
|
const machine = { client: client.id, label: client.label };
|
|
275
275
|
if (isFreshFolder(folder)) {
|
|
276
276
|
if (labels.client === null) {
|
|
277
|
-
throw unsupported(`
|
|
277
|
+
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.`);
|
|
278
278
|
}
|
|
279
279
|
return { machine, folder: { path: workstationRunFolder(client.runsDirectory, runId), fresh: true } };
|
|
280
280
|
}
|
|
281
281
|
if (!client.folders.some((offered) => insideFolder(offered, folder.path))) {
|
|
282
|
-
throw new DomainError("workspace-client-folder", `
|
|
282
|
+
throw new DomainError("workspace-client-folder", `The workstation ${client.label} does not offer the folder ${folder.path}.`, 400);
|
|
283
283
|
}
|
|
284
284
|
return { machine, folder: { path: folder.path } };
|
|
285
285
|
};
|
|
@@ -289,19 +289,19 @@ var workspaceBindingOption = (registry, contribution) => ({
|
|
|
289
289
|
selectable: () => true,
|
|
290
290
|
defaultValue: () => freshServerBinding(),
|
|
291
291
|
accept: (value, { runId, userId }) => {
|
|
292
|
-
if (!isWorkspaceBinding(value)) throw new DomainError("workspace-binding-invalid", "
|
|
292
|
+
if (!isWorkspaceBinding(value)) throw new DomainError("workspace-binding-invalid", "The workspace binding has no valid format.", 400);
|
|
293
293
|
const labels = freshLabels(contribution());
|
|
294
294
|
const { machine, folder } = value;
|
|
295
295
|
if (machine === "server") {
|
|
296
296
|
if (folder === "fresh") return freshServerBinding();
|
|
297
|
-
if ("fresh" in folder) throw new DomainError("workspace-binding-invalid", "
|
|
297
|
+
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);
|
|
298
298
|
if (!(contribution()?.kind?.serverFolders ?? true)) {
|
|
299
|
-
throw unsupported(`
|
|
299
|
+
throw unsupported(`An existing folder on the server machine is not a binding here; choose ${labels.server} or a workstation.`);
|
|
300
300
|
}
|
|
301
301
|
return { machine, folder: serverDirectoryFolder(folder.path) };
|
|
302
302
|
}
|
|
303
303
|
const client = registry.info(userId, machine.client);
|
|
304
|
-
if (!client) throw new DomainError("workspace-client-disconnected", `
|
|
304
|
+
if (!client) throw new DomainError("workspace-client-disconnected", `The workstation ${machine.label || machine.client} is not connected.`, 409);
|
|
305
305
|
return workstationBinding(client, folder, runId, labels);
|
|
306
306
|
},
|
|
307
307
|
describe: (_value, { userId }) => {
|
|
@@ -378,7 +378,7 @@ var watchWorkspace = (options, runId, changed) => new Promise((ready, failed) =>
|
|
|
378
378
|
const ended = (error) => {
|
|
379
379
|
if (controller.signal.aborted) return;
|
|
380
380
|
if (!opened) {
|
|
381
|
-
failed(error ?? new Error("
|
|
381
|
+
failed(error ?? new Error("The workspace watch ended before it was established"));
|
|
382
382
|
return;
|
|
383
383
|
}
|
|
384
384
|
if (watching) changed();
|
|
@@ -431,12 +431,12 @@ var timeoutFor = (options) => {
|
|
|
431
431
|
if (options.whenReachable) return { timeoutMs: CLEANUP_TIMEOUT_MS };
|
|
432
432
|
return { timeoutMs: CLIENT_TIMEOUT_MS + (options.durationMs ?? 0) };
|
|
433
433
|
};
|
|
434
|
-
var disconnected = (label, detail) => new DomainError2("workspace-client-disconnected", `
|
|
434
|
+
var disconnected = (label, detail) => new DomainError2("workspace-client-disconnected", `The workstation ${label} lost the connection: ${detail}`, 409);
|
|
435
435
|
var withClientCause = (cause, label) => {
|
|
436
436
|
if (!(cause instanceof RpcError)) return cause;
|
|
437
437
|
if (cause.code === RPC_ERROR_CODES.connectionClosed) return disconnected(label, cause.message);
|
|
438
438
|
if (cause.code === RPC_ERROR_CODES.timeout) {
|
|
439
|
-
return new DomainError2("workspace-client-timeout", `
|
|
439
|
+
return new DomainError2("workspace-client-timeout", `The workstation ${label} did not respond: ${cause.message}`, 504);
|
|
440
440
|
}
|
|
441
441
|
if (cause.code === RPC_ERROR_CODES.application && cause.domainCode !== void 0 && cause.status !== void 0) {
|
|
442
442
|
return new DomainError2(cause.domainCode, cause.message, cause.status);
|
|
@@ -448,21 +448,21 @@ var messageOf = (cause) => cause instanceof Error ? cause.message : String(cause
|
|
|
448
448
|
var keyOf = (owner, id) => JSON.stringify([owner, id]);
|
|
449
449
|
var assertExecutor = (label, executor) => {
|
|
450
450
|
if (executor === WORKSPACE_EXECUTOR_VERSION) return;
|
|
451
|
-
const action = Number(executor) > Number(WORKSPACE_EXECUTOR_VERSION) ? "
|
|
451
|
+
const action = Number(executor) > Number(WORKSPACE_EXECUTOR_VERSION) ? "Update the server to the workstation's version." : "Update the RAgents extension in VS Code or the package @schlenkr/ragents on the workstation.";
|
|
452
452
|
throw new DomainError2(
|
|
453
453
|
"workspace-executor-version",
|
|
454
|
-
`
|
|
454
|
+
`The workstation ${label} brings executor ${executor}, the server requires ${WORKSPACE_EXECUTOR_VERSION}. ${action}`,
|
|
455
455
|
409
|
|
456
456
|
);
|
|
457
457
|
};
|
|
458
|
-
var described = (contributions) => contributions.map(({ plugin: plugin2,
|
|
458
|
+
var described = (contributions) => contributions.map(({ plugin: plugin2, revision }) => `${plugin2} (${revision.slice(0, 12)})`).join(", ") || "none";
|
|
459
459
|
var assertContributions = (label, expected, given) => {
|
|
460
|
-
const key = (entry) => `${entry.plugin}\0${entry.
|
|
460
|
+
const key = (entry) => `${entry.plugin}\0${entry.revision}`;
|
|
461
461
|
const same = expected.length === given.length && expected.every((entry) => given.some((other) => key(other) === key(entry)));
|
|
462
462
|
if (same) return;
|
|
463
463
|
throw new DomainError2(
|
|
464
464
|
"workspace-executor-contributions",
|
|
465
|
-
`
|
|
465
|
+
`The workstation ${label} brings the executor contributions ${described(given)}, the server requires ${described(expected)}. The workstation queries them with ragents.workspace.clients.contributions and then signs in again.`,
|
|
466
466
|
409
|
|
467
467
|
);
|
|
468
468
|
};
|
|
@@ -470,23 +470,23 @@ var assertMayRegister = (access, local) => {
|
|
|
470
470
|
if (local || access.enabled && access.user !== null) return;
|
|
471
471
|
throw new DomainError2(
|
|
472
472
|
"workspace-client-login-required",
|
|
473
|
-
"
|
|
473
|
+
"This server has no user sign-in; it therefore accepts a workstation only over a loopback connection (such as http://127.0.0.1 on its own machine). Over the network, a workstation needs a profile with users.",
|
|
474
474
|
403
|
|
475
475
|
);
|
|
476
476
|
};
|
|
477
477
|
var WorkspaceClientRegistry = class {
|
|
478
|
-
/**
|
|
478
|
+
/** What the server's plugins contribute to the executor; every workstation must carry exactly these contributions. */
|
|
479
479
|
contributions;
|
|
480
480
|
#clients = /* @__PURE__ */ new Map();
|
|
481
|
-
/**
|
|
481
|
+
/** Stops that have not reached the workstation yet, per workstation and run with the folder of the binding. */
|
|
482
482
|
#pendingStops = /* @__PURE__ */ new Map();
|
|
483
483
|
#stopRetries = /* @__PURE__ */ new Map();
|
|
484
484
|
constructor(contributions) {
|
|
485
|
-
this.contributions = contributions.map(({ plugin: plugin2,
|
|
485
|
+
this.contributions = contributions.map(({ plugin: plugin2, revision }) => ({ plugin: plugin2, revision }));
|
|
486
486
|
}
|
|
487
487
|
async register(id, description, executor, contributions, connection) {
|
|
488
488
|
if (connection.streamless) {
|
|
489
|
-
throw new DomainError2("stream-required", "
|
|
489
|
+
throw new DomainError2("stream-required", "The sign-in of a workstation needs an event stream.", 409);
|
|
490
490
|
}
|
|
491
491
|
assertExecutor(description.label, executor);
|
|
492
492
|
assertContributions(description.label, this.contributions, contributions);
|
|
@@ -509,7 +509,7 @@ var WorkspaceClientRegistry = class {
|
|
|
509
509
|
this.#deliverPendingStops(key);
|
|
510
510
|
return info;
|
|
511
511
|
}
|
|
512
|
-
/**
|
|
512
|
+
/** Only the connection that holds the entry signs it out; a sign-out without an entry is not an error after a disconnect. */
|
|
513
513
|
unregister(owner, id, connection) {
|
|
514
514
|
const key = keyOf(owner, id);
|
|
515
515
|
const entry = this.#clients.get(key);
|
|
@@ -522,15 +522,15 @@ var WorkspaceClientRegistry = class {
|
|
|
522
522
|
info(owner, id) {
|
|
523
523
|
return this.#clients.get(keyOf(owner, id))?.info;
|
|
524
524
|
}
|
|
525
|
-
/**
|
|
525
|
+
/** The runs whose stop has not reached this workstation yet. */
|
|
526
526
|
pendingStops(owner, id) {
|
|
527
527
|
return this.#pendingRuns(keyOf(owner, id));
|
|
528
528
|
}
|
|
529
|
-
/**
|
|
529
|
+
/** The executor of a bound run: the same interface as in the server, only through the connection of its owner's workstation. */
|
|
530
530
|
executorFor(owner, id, label, cwd) {
|
|
531
531
|
const key = keyOf(owner, id);
|
|
532
532
|
const call = async (runId, operation, input, options) => {
|
|
533
|
-
if (options.untilAborted && !options.signal) throw new Error(`
|
|
533
|
+
if (options.untilAborted && !options.signal) throw new Error(`The operation ${operation} runs until aborted and needs an abort signal for that`);
|
|
534
534
|
if (this.#pendingStops.get(key)?.has(runId)) {
|
|
535
535
|
if (options.whenReachable) return null;
|
|
536
536
|
if (this.#clients.has(key)) await this.#deliverStop(key, runId);
|
|
@@ -538,7 +538,7 @@ var WorkspaceClientRegistry = class {
|
|
|
538
538
|
const entry = this.#clients.get(key);
|
|
539
539
|
if (!entry) {
|
|
540
540
|
if (options.whenReachable) return null;
|
|
541
|
-
throw new DomainError2("workspace-client-disconnected", `
|
|
541
|
+
throw new DomainError2("workspace-client-disconnected", `The workstation ${label} is not connected.`, 409);
|
|
542
542
|
}
|
|
543
543
|
try {
|
|
544
544
|
return await this.#send(entry, runId, operation, input, cwd, options);
|
|
@@ -567,7 +567,7 @@ var WorkspaceClientRegistry = class {
|
|
|
567
567
|
this.#stopRetries.clear();
|
|
568
568
|
this.#pendingStops.clear();
|
|
569
569
|
}
|
|
570
|
-
/**
|
|
570
|
+
/** A disconnected workstation leaves the registry; a later sign-in over a new connection stays. */
|
|
571
571
|
#disconnected(key, connection) {
|
|
572
572
|
const entry = this.#clients.get(key);
|
|
573
573
|
if (entry?.connection !== connection) return;
|
|
@@ -578,7 +578,7 @@ var WorkspaceClientRegistry = class {
|
|
|
578
578
|
this.#clients.delete(key);
|
|
579
579
|
this.#abandon(entry);
|
|
580
580
|
}
|
|
581
|
-
/**
|
|
581
|
+
/** A connection that nobody holds anymore gets no more answers delivered; its open calls fail immediately. */
|
|
582
582
|
#abandon(entry) {
|
|
583
583
|
for (const controller of entry.calls) controller.abort();
|
|
584
584
|
entry.calls.clear();
|
|
@@ -606,7 +606,7 @@ var WorkspaceClientRegistry = class {
|
|
|
606
606
|
...options.onProgress ? { onProgress: options.onProgress } : {}
|
|
607
607
|
}
|
|
608
608
|
),
|
|
609
|
-
new Promise((_settle, fail) => abandoned.signal.addEventListener("abort", () => fail(disconnected(label, "
|
|
609
|
+
new Promise((_settle, fail) => abandoned.signal.addEventListener("abort", () => fail(disconnected(label, "a new connection replaced the sign-in")), { once: true }))
|
|
610
610
|
]);
|
|
611
611
|
return value;
|
|
612
612
|
} catch (cause) {
|
|
@@ -622,13 +622,13 @@ var WorkspaceClientRegistry = class {
|
|
|
622
622
|
this.#pendingStops.set(key, created);
|
|
623
623
|
return created;
|
|
624
624
|
}
|
|
625
|
-
/**
|
|
625
|
+
/** Delivers a pending stop; if it does not reach the workstation, it stays pending and the next sign-in catches up on it. */
|
|
626
626
|
#deliverStop(key, runId) {
|
|
627
627
|
const entry = this.#clients.get(key);
|
|
628
628
|
const cwd = this.#pendingStops.get(key)?.get(runId);
|
|
629
629
|
if (cwd === void 0) return Promise.resolve();
|
|
630
630
|
if (!entry) {
|
|
631
|
-
console.warn(`
|
|
631
|
+
console.warn(`The stop of run ${runId} reaches its workstation only at its next sign-in.`);
|
|
632
632
|
return Promise.resolve();
|
|
633
633
|
}
|
|
634
634
|
const running = entry.stops.get(runId);
|
|
@@ -638,7 +638,7 @@ var WorkspaceClientRegistry = class {
|
|
|
638
638
|
this.#stopDelivered(key, runId, cwd);
|
|
639
639
|
throw cause;
|
|
640
640
|
}
|
|
641
|
-
console.warn(`
|
|
641
|
+
console.warn(`The stop of run ${runId} did not reach the workstation ${entry.info.label} and stays pending: ${messageOf(cause)}`);
|
|
642
642
|
this.#retryStops(key);
|
|
643
643
|
}).finally(() => entry.stops.delete(runId));
|
|
644
644
|
entry.stops.set(runId, delivery);
|
|
@@ -651,13 +651,13 @@ var WorkspaceClientRegistry = class {
|
|
|
651
651
|
}
|
|
652
652
|
#deliverPendingStops(key) {
|
|
653
653
|
for (const runId of this.#pendingRuns(key)) {
|
|
654
|
-
void this.#deliverStop(key, runId).catch((cause) => console.warn(`
|
|
654
|
+
void this.#deliverStop(key, runId).catch((cause) => console.warn(`The delayed stop of run ${runId} failed: ${messageOf(cause)}`));
|
|
655
655
|
}
|
|
656
656
|
}
|
|
657
657
|
#pendingRuns(key) {
|
|
658
658
|
return [...this.#pendingStops.get(key)?.keys() ?? []];
|
|
659
659
|
}
|
|
660
|
-
/**
|
|
660
|
+
/** A workstation that stays signed in but does not respond gets its pending stops again later. */
|
|
661
661
|
#retryStops(key) {
|
|
662
662
|
if (this.#stopRetries.has(key)) return;
|
|
663
663
|
const timer = setTimeout(() => {
|
|
@@ -681,7 +681,7 @@ var clientMethods = (registry) => [
|
|
|
681
681
|
if (!Value.Check(clientRegistrationSchema, input)) {
|
|
682
682
|
throw new RpcError(
|
|
683
683
|
RPC_ERROR_CODES.invalidParams,
|
|
684
|
-
`
|
|
684
|
+
`Invalid input for ${workspaceContracts.clients.register.id}: ${schemaComplaints(clientRegistrationSchema, input, "params")}`
|
|
685
685
|
);
|
|
686
686
|
}
|
|
687
687
|
const { id, executor, contributions, ...description } = input;
|
|
@@ -704,11 +704,11 @@ var workspaceConfigDescriptors = [
|
|
|
704
704
|
{ key: "RAGENTS_BASH_TIMEOUT_SECONDS", source: "environment" }
|
|
705
705
|
];
|
|
706
706
|
var env = declaredEnvironment(workspaceConfigDescriptors);
|
|
707
|
-
var PROCESS_SANDBOX_OFF = 'PROCESS_SANDBOX: "off" in
|
|
707
|
+
var PROCESS_SANDBOX_OFF = 'PROCESS_SANDBOX: "off" in the ragents.workspace section';
|
|
708
708
|
var processSandboxSetting = () => {
|
|
709
709
|
const mode = env.optional("PROCESS_SANDBOX") ?? "on";
|
|
710
710
|
if (mode !== "on" && mode !== "off") {
|
|
711
|
-
throw new Error(`PROCESS_SANDBOX in
|
|
711
|
+
throw new Error(`PROCESS_SANDBOX in the ragents.workspace section is "on" or "off", not "${mode}"`);
|
|
712
712
|
}
|
|
713
713
|
const network = env.optional("PROCESS_SANDBOX_NETWORK") === void 0 ? PROCESS_SANDBOX_DEFAULT_NETWORK : env.list("PROCESS_SANDBOX_NETWORK");
|
|
714
714
|
return { enabled: mode === "on", network };
|
|
@@ -728,7 +728,7 @@ import { storedStartOption as storedStartOption2 } from "@ragents/host/ragents/s
|
|
|
728
728
|
import { WorkspaceSandboxHost } from "@ragents/host/plugin-support/workspace-sandbox-host.js";
|
|
729
729
|
var runNotStarted = () => new DomainError3(
|
|
730
730
|
"run-not-started",
|
|
731
|
-
"
|
|
731
|
+
"The run has not started yet; the working directory is created with the first message.",
|
|
732
732
|
409
|
|
733
733
|
);
|
|
734
734
|
var lookAround = "Look around in it before you say anything about the project.";
|
|
@@ -779,7 +779,7 @@ var RunWorkspaceRuntime = class {
|
|
|
779
779
|
transfer;
|
|
780
780
|
#options;
|
|
781
781
|
#nugetCacheDirectory;
|
|
782
|
-
/**
|
|
782
|
+
/** The new folders on workstations that have already been created or are in progress during this server run. */
|
|
783
783
|
#preparations = /* @__PURE__ */ new Map();
|
|
784
784
|
constructor(options) {
|
|
785
785
|
this.#options = options;
|
|
@@ -805,7 +805,7 @@ var RunWorkspaceRuntime = class {
|
|
|
805
805
|
...options.bashTimeoutSeconds === void 0 ? {} : { bashTimeoutSeconds: options.bashTimeoutSeconds }
|
|
806
806
|
});
|
|
807
807
|
}
|
|
808
|
-
/**
|
|
808
|
+
/** Work of a run that runs on the server while its workspace is on a workstation. */
|
|
809
809
|
async #serverDirectoryFor(runId) {
|
|
810
810
|
const directory = this.#options.sessionDirectory(runId, "server");
|
|
811
811
|
await mkdir(directory, { recursive: true });
|
|
@@ -817,7 +817,7 @@ var RunWorkspaceRuntime = class {
|
|
|
817
817
|
await mkdir(this.#nugetCacheDirectory, { recursive: true });
|
|
818
818
|
return { home, nugetPackages: this.#nugetCacheDirectory };
|
|
819
819
|
}
|
|
820
|
-
/**
|
|
820
|
+
/** On a workstation, its executor runs on behalf of the run owner, otherwise the server's executor. */
|
|
821
821
|
#executorFor(runId) {
|
|
822
822
|
const state = this.#options.runState(runId);
|
|
823
823
|
const binding = bindingOf(state);
|
|
@@ -826,7 +826,7 @@ var RunWorkspaceRuntime = class {
|
|
|
826
826
|
const executor = this.#options.clients.executorFor(workspaceOwnerOf(state), machine.client, machine.label, folder.path);
|
|
827
827
|
return "fresh" in folder ? this.#preparing(state, binding, executor) : executor;
|
|
828
828
|
}
|
|
829
|
-
/**
|
|
829
|
+
/** Before the first task of a run, the workstation creates its new folder; cleanup never creates one. */
|
|
830
830
|
#preparing(state, binding, executor) {
|
|
831
831
|
return {
|
|
832
832
|
...executor,
|
|
@@ -846,7 +846,7 @@ var RunWorkspaceRuntime = class {
|
|
|
846
846
|
this.#preparations.set(runId, preparation);
|
|
847
847
|
return preparation;
|
|
848
848
|
}
|
|
849
|
-
/**
|
|
849
|
+
/** Only a freshly created folder gets the contribution's steps; if one fails, the folder disappears again and the next task starts over. */
|
|
850
850
|
async #prepare(runId, state, binding, executor) {
|
|
851
851
|
const { created } = await executor.execute(runId, RUN_FOLDER_OPERATIONS.create, null);
|
|
852
852
|
const steps = created ? this.#contribution()?.workstation?.prepare(this.#workstationContext(runId, state, binding)) ?? [] : [];
|
|
@@ -878,7 +878,7 @@ var RunWorkspaceRuntime = class {
|
|
|
878
878
|
const workspace = onWorkstation ? this.#workstation(runId, state, binding, emitSystem) : isFreshFolder(folder) ? await this.#fresh(runId, state, emitSystem) : this.#bound(folder, emitSystem);
|
|
879
879
|
return this.#withRoots(workspace, onWorkstation);
|
|
880
880
|
}
|
|
881
|
-
/**
|
|
881
|
+
/** What the prompt says about roots depends on the run's machine: only a bash on the server knows their variables. */
|
|
882
882
|
async #withRoots(workspace, onWorkstation) {
|
|
883
883
|
const roots = await this.sandbox.serverRoots();
|
|
884
884
|
if (roots.length === 0) return workspace;
|
|
@@ -920,10 +920,10 @@ var RunWorkspaceRuntime = class {
|
|
|
920
920
|
try {
|
|
921
921
|
return await realpath(cwd);
|
|
922
922
|
} catch {
|
|
923
|
-
throw new DomainError3("workspace-path-missing", `
|
|
923
|
+
throw new DomainError3("workspace-path-missing", `The bound folder ${cwd} no longer exists on the server.`, 409);
|
|
924
924
|
}
|
|
925
925
|
};
|
|
926
|
-
emitSystem(`
|
|
926
|
+
emitSystem(`Workspace: ${cwd} (project folder on the server)`);
|
|
927
927
|
return {
|
|
928
928
|
cwd,
|
|
929
929
|
description: serverProjectDescription(cwd),
|
|
@@ -931,14 +931,14 @@ var RunWorkspaceRuntime = class {
|
|
|
931
931
|
runOperation: (operation) => operation()
|
|
932
932
|
};
|
|
933
933
|
}
|
|
934
|
-
/**
|
|
934
|
+
/** The workspace is on the workstation; the server knows only its path, and every local access to it fails loudly. */
|
|
935
935
|
#workstation(runId, state, binding, emitSystem) {
|
|
936
936
|
const { machine: { label }, folder } = binding;
|
|
937
937
|
const fresh = "fresh" in folder;
|
|
938
938
|
const workstation = this.#contribution()?.workstation;
|
|
939
|
-
emitSystem(fresh ? `
|
|
939
|
+
emitSystem(fresh ? `Workspace: ${folder.path} (${workstation?.label ?? FRESH_WORKSPACE_LABEL} on the workstation ${label})` : `Workspace: ${folder.path} (project folder on the workstation ${label})`);
|
|
940
940
|
const remote = () => Promise.reject(new Error(
|
|
941
|
-
`
|
|
941
|
+
`The workspace ${folder.path} is on the workstation ${label}, not on the server; it is reachable only through the run's executor (SandboxServices.execute).`
|
|
942
942
|
));
|
|
943
943
|
const description = !fresh ? clientProjectDescription(folder.path, label) : workstation?.description?.(this.#workstationContext(runId, state, binding)) ?? freshWorkstationDescription(folder.path, label);
|
|
944
944
|
return {
|
|
@@ -966,7 +966,7 @@ var RunWorkspaceRuntime = class {
|
|
|
966
966
|
if (resolver.optionId === void 0) return null;
|
|
967
967
|
const choice = storedStartOption2(state, resolver.optionId);
|
|
968
968
|
if (choice === void 0) {
|
|
969
|
-
throw new Error(`
|
|
969
|
+
throw new Error(`The start option ${resolver.optionId} of the workspace resolver is not stored in the run`);
|
|
970
970
|
}
|
|
971
971
|
return choice;
|
|
972
972
|
}
|
|
@@ -979,12 +979,12 @@ var RunWorkspaceRuntime = class {
|
|
|
979
979
|
#contribution() {
|
|
980
980
|
return this.#options.resolver();
|
|
981
981
|
}
|
|
982
|
-
/**
|
|
982
|
+
/** On the server, a new folder including stop and deletion belongs to the contribution; on a workstation, the host cleans it up. */
|
|
983
983
|
#serverContributionFor(runId) {
|
|
984
984
|
const { machine, folder } = bindingOf(this.#options.runState(runId));
|
|
985
985
|
return machine === "server" && isFreshFolder(folder) ? this.#contribution() : void 0;
|
|
986
986
|
}
|
|
987
|
-
/**
|
|
987
|
+
/** If the workstation is unreachable, the folder stays there with a notice; the run is deleted anyway. */
|
|
988
988
|
async #removeWorkstationFolder(runId) {
|
|
989
989
|
this.#preparations.delete(runId);
|
|
990
990
|
const state = this.#options.runState(runId);
|
|
@@ -995,7 +995,7 @@ var RunWorkspaceRuntime = class {
|
|
|
995
995
|
const steps = this.#contribution()?.workstation?.release?.(this.#workstationContext(runId, state, binding)) ?? [];
|
|
996
996
|
await this.#runSteps(runId, executor, steps, { whenReachable: true });
|
|
997
997
|
if (await executor.execute(runId, RUN_FOLDER_OPERATIONS.remove, null, { whenReachable: true }) !== null) return;
|
|
998
|
-
console.warn(`
|
|
998
|
+
console.warn(`The folder ${folder.path} of run ${runId} stays on the workstation ${machine.label} because it was unreachable.`);
|
|
999
999
|
}
|
|
1000
1000
|
async deleteSession(runId) {
|
|
1001
1001
|
const contribution = this.#serverContributionFor(runId);
|
|
@@ -1016,7 +1016,7 @@ var RunWorkspaceRuntime = class {
|
|
|
1016
1016
|
|
|
1017
1017
|
// server/index.ts
|
|
1018
1018
|
var warnWithoutSandbox = () => {
|
|
1019
|
-
console.warn(`
|
|
1019
|
+
console.warn(`Process sandbox turned off (${PROCESS_SANDBOX_OFF}): run processes run on the server without a sandbox.`);
|
|
1020
1020
|
};
|
|
1021
1021
|
var ragentsWorkspacePlugin = (skillPaths) => ({
|
|
1022
1022
|
manifest: { id: "ragents.workspace" },
|
|
@@ -1034,7 +1034,7 @@ var ragentsWorkspacePlugin = (skillPaths) => ({
|
|
|
1034
1034
|
const documentsFor = (runId) => host.optionalService(documentStoreToken)?.directoryFor(runId) ?? Promise.resolve(void 0);
|
|
1035
1035
|
const documentsRoot = async (runId) => {
|
|
1036
1036
|
const directory = await documentsFor(runId);
|
|
1037
|
-
if (!directory) throw new Error("
|
|
1037
|
+
if (!directory) throw new Error("This profile has no file store; the plugin ragents.documents is missing");
|
|
1038
1038
|
return directory;
|
|
1039
1039
|
};
|
|
1040
1040
|
const contributions = host.service(executorContributionsToken);
|
|
@@ -1084,7 +1084,7 @@ var ragentsWorkspacePlugin = (skillPaths) => ({
|
|
|
1084
1084
|
boundToTools2({
|
|
1085
1085
|
...rules,
|
|
1086
1086
|
delivery: "initial",
|
|
1087
|
-
//
|
|
1087
|
+
// The rules apply to the host's workspaces; a contributed kind describes its own.
|
|
1088
1088
|
render: (context) => contribution()?.kind ? "" : rules.render(context)
|
|
1089
1089
|
}, ...agentWorkspaceToolNames),
|
|
1090
1090
|
shellPlatformPrompt("ragents.workspace.shell.prompt", 102, serverTools, (runId) => {
|