@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
|
@@ -10,22 +10,22 @@ export const COMMAND_OPERATIONS = {
|
|
|
10
10
|
run: "commands.run",
|
|
11
11
|
} as const;
|
|
12
12
|
|
|
13
|
-
/**
|
|
13
|
+
/** The largest output per stream that a call returns; whatever goes beyond it is discarded and the truncation is reported. */
|
|
14
14
|
export const COMMAND_OUTPUT_LIMIT = 2 * 1024 * 1024;
|
|
15
15
|
|
|
16
16
|
export interface CommandRunInput {
|
|
17
|
-
/**
|
|
17
|
+
/** A name from the PATH of the executor or the path of a program; it runs without a shell. */
|
|
18
18
|
program: string;
|
|
19
19
|
args?: readonly string[];
|
|
20
|
-
/**
|
|
20
|
+
/** The working folder relative to the root of the run; without a value the root itself. */
|
|
21
21
|
cwd?: string;
|
|
22
22
|
timeoutMs: number;
|
|
23
|
-
/**
|
|
23
|
+
/** At most this many bytes per stream; without a value `COMMAND_OUTPUT_LIMIT`. */
|
|
24
24
|
maxOutputBytes?: number;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export interface CommandResult {
|
|
28
|
-
/** `null
|
|
28
|
+
/** `null` if the process ended through a signal. */
|
|
29
29
|
exitCode: number | null;
|
|
30
30
|
stdout: string;
|
|
31
31
|
stderr: string;
|
|
@@ -53,20 +53,20 @@ const textWithoutNul = (value: unknown): value is string => typeof value === "st
|
|
|
53
53
|
const checkedCommand = (input: unknown, platform: NodeJS.Platform): CheckedCommand => {
|
|
54
54
|
const value = (input ?? {}) as Partial<Record<keyof CommandRunInput, unknown>>;
|
|
55
55
|
const { program, args = [], cwd = "", timeoutMs, maxOutputBytes = COMMAND_OUTPUT_LIMIT } = value;
|
|
56
|
-
if (!textWithoutNul(program) || program === "") throw invalid("
|
|
57
|
-
if (platform === "win32" && /\.(cmd|bat)$/i.test(program)) throw invalid(`${program}
|
|
58
|
-
if (!Array.isArray(args) || !args.every(textWithoutNul)) throw invalid("
|
|
59
|
-
if (typeof cwd !== "string") throw invalid("
|
|
56
|
+
if (!textWithoutNul(program) || program === "") throw invalid("The command needs a program as text");
|
|
57
|
+
if (platform === "win32" && /\.(cmd|bat)$/i.test(program)) throw invalid(`${program} needs a shell on Windows; a command runs without one`);
|
|
58
|
+
if (!Array.isArray(args) || !args.every(textWithoutNul)) throw invalid("The arguments must be texts without null characters");
|
|
59
|
+
if (typeof cwd !== "string") throw invalid("The working folder must be a text");
|
|
60
60
|
if (typeof timeoutMs !== "number" || !Number.isSafeInteger(timeoutMs) || timeoutMs < 1) {
|
|
61
|
-
throw invalid("
|
|
61
|
+
throw invalid("The timeout must be a positive integer in milliseconds");
|
|
62
62
|
}
|
|
63
63
|
if (typeof maxOutputBytes !== "number" || !Number.isSafeInteger(maxOutputBytes) || maxOutputBytes < 0 || maxOutputBytes > COMMAND_OUTPUT_LIMIT) {
|
|
64
|
-
throw invalid(`
|
|
64
|
+
throw invalid(`The output limit is between 0 and ${COMMAND_OUTPUT_LIMIT} bytes`);
|
|
65
65
|
}
|
|
66
66
|
return { program, args, cwd, timeoutMs, maxOutputBytes };
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
/**
|
|
69
|
+
/** Collects a stream up to the limit; the rest is discarded, the process keeps running. */
|
|
70
70
|
const boundedOutput = (limit: number) => {
|
|
71
71
|
const chunks: Buffer[] = [];
|
|
72
72
|
let size = 0;
|
|
@@ -86,8 +86,8 @@ const boundedOutput = (limit: number) => {
|
|
|
86
86
|
|
|
87
87
|
const unavailable = (program: string, error: unknown): WorkspaceOperationError | undefined => {
|
|
88
88
|
const code = (error as NodeJS.ErrnoException).code;
|
|
89
|
-
if (code === "ENOENT") return new WorkspaceOperationError("command-unavailable", `
|
|
90
|
-
if (code === "EACCES") return new WorkspaceOperationError("command-unavailable", `
|
|
89
|
+
if (code === "ENOENT") return new WorkspaceOperationError("command-unavailable", `The program ${program} does not exist on this machine`, 409);
|
|
90
|
+
if (code === "EACCES") return new WorkspaceOperationError("command-unavailable", `The program ${program} is not executable on this machine`, 409);
|
|
91
91
|
return undefined;
|
|
92
92
|
};
|
|
93
93
|
|
|
@@ -113,7 +113,7 @@ const runCommand = async (context: WorkspaceProcessContext, command: CheckedComm
|
|
|
113
113
|
throw unavailable(command.program, error) ?? error;
|
|
114
114
|
});
|
|
115
115
|
if (result.timedOut) {
|
|
116
|
-
throw new WorkspaceOperationError("command-timeout", `${command.program}
|
|
116
|
+
throw new WorkspaceOperationError("command-timeout", `${command.program} exceeded the timeout of ${command.timeoutMs} ms`, 504);
|
|
117
117
|
}
|
|
118
118
|
return {
|
|
119
119
|
exitCode: result.code,
|
|
@@ -124,17 +124,17 @@ const runCommand = async (context: WorkspaceProcessContext, command: CheckedComm
|
|
|
124
124
|
};
|
|
125
125
|
};
|
|
126
126
|
|
|
127
|
-
/**
|
|
127
|
+
/** A command runs in the root of the run, an alias does not apply there; its timeout extends how long a remote executor may wait for it. */
|
|
128
128
|
const commandFootprint = (input: unknown): OperationFootprint => {
|
|
129
129
|
const timeoutMs = typeof input === "object" && input !== null ? (input as { timeoutMs?: unknown }).timeoutMs : undefined;
|
|
130
130
|
return { roots: { aliases: [], runRoot: true }, ...(typeof timeoutMs === "number" && timeoutMs > 0 ? { durationMs: timeoutMs } : {}) };
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
-
/**
|
|
133
|
+
/** Commands in the workspace of the run: a program with arguments, without a shell, in a folder under the root, with the environment of this executor. */
|
|
134
134
|
export const commandModule = (platform: NodeJS.Platform = process.platform): WorkspaceModuleFactory => (host) => {
|
|
135
135
|
const running = new Map<string, Set<RunningCommand>>();
|
|
136
136
|
const stopAll = async (commands: readonly RunningCommand[]): Promise<void> => {
|
|
137
|
-
for (const command of commands) command.controller.abort(new Error("
|
|
137
|
+
for (const command of commands) command.controller.abort(new Error("The command was ended with its run"));
|
|
138
138
|
await Promise.allSettled(commands.map((command) => command.finished));
|
|
139
139
|
};
|
|
140
140
|
const run: WorkspaceOperation = async ({ runId, input, signal }) => {
|
|
@@ -5,15 +5,15 @@ import { inheritedProcessEnvironment, safeProcessEnvironment } from "./safe-envi
|
|
|
5
5
|
import type { SessionIdent } from "./session-ident.js";
|
|
6
6
|
import type { ResolvedWorkspaceRoot } from "./paths.js";
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/** What an executor knows about a run: its folders, its environment and its id. */
|
|
9
9
|
export interface WorkspaceProcessContext {
|
|
10
10
|
runId: string;
|
|
11
11
|
cwd: string;
|
|
12
12
|
root: string;
|
|
13
13
|
home: string;
|
|
14
|
-
/**
|
|
14
|
+
/** Where a language server may put logs and intermediate state; never the home of a developer. */
|
|
15
15
|
logDirectory: string;
|
|
16
|
-
/**
|
|
16
|
+
/** The root of the host on this machine from which an adapter resolves its language server; without a host it stays open. */
|
|
17
17
|
hostRoot: string | undefined;
|
|
18
18
|
env: NodeJS.ProcessEnv;
|
|
19
19
|
uid?: number;
|
|
@@ -23,11 +23,11 @@ export interface WorkspaceProcessContext {
|
|
|
23
23
|
workspaceAliases?: Readonly<Record<string, string>>;
|
|
24
24
|
pathVariables?: Readonly<Record<string, string>>;
|
|
25
25
|
runOperation?: <T>(operation: () => Promise<T>) => Promise<T>;
|
|
26
|
-
/**
|
|
26
|
+
/** The process sandbox of this run; if it is missing, processes start without one. */
|
|
27
27
|
sandbox?: ProcessSandbox;
|
|
28
|
-
/**
|
|
28
|
+
/** The bash the bash tool starts with; required on Windows, otherwise the system's one applies without a value. */
|
|
29
29
|
bash?: string;
|
|
30
|
-
/**
|
|
30
|
+
/** The rg whose folder the bash tool has at the front of PATH; without a value one in PATH applies, if there is one. */
|
|
31
31
|
rg?: string;
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -36,11 +36,11 @@ export interface SandboxHomeEnvironment {
|
|
|
36
36
|
nugetPackages?: string;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
/**
|
|
39
|
+
/** What the environment of a process is built from: "safe" takes only the safe selection (server), "inherited" everything except editor variables and bash startup files (own machine). */
|
|
40
40
|
export type BaseEnvironment = "safe" | "inherited";
|
|
41
41
|
|
|
42
42
|
export interface SandboxEnvironmentOptions {
|
|
43
|
-
/**
|
|
43
|
+
/** Defaults to "safe": whoever chooses nothing passes on only the safe selection. */
|
|
44
44
|
base?: BaseEnvironment;
|
|
45
45
|
home: SandboxHomeEnvironment;
|
|
46
46
|
ident?: { name: string };
|
|
@@ -48,7 +48,7 @@ export interface SandboxEnvironmentOptions {
|
|
|
48
48
|
additions?: Readonly<Record<string, string>>;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/**
|
|
51
|
+
/** The Git rules that apply in every sandbox, no matter which machine it runs on. */
|
|
52
52
|
export const SANDBOX_GIT_CONFIG: GitConfigPairs = [
|
|
53
53
|
["branch.autoSetupMerge", "false"],
|
|
54
54
|
["core.hooksPath", "/dev/null"],
|
|
@@ -58,7 +58,7 @@ export const SANDBOX_GIT_CONFIG: GitConfigPairs = [
|
|
|
58
58
|
const onlyStrings = (env: NodeJS.ProcessEnv): Record<string, string> =>
|
|
59
59
|
Object.fromEntries(Object.entries(env).filter((entry): entry is [string, string] => typeof entry[1] === "string"));
|
|
60
60
|
|
|
61
|
-
/**
|
|
61
|
+
/** What the server contributes to the environment per run: run marker, Git rules and the additions of its workspace. */
|
|
62
62
|
export const sandboxRunEnvironment = (runId: string, workspace: {
|
|
63
63
|
gitConfig?: GitConfigPairs;
|
|
64
64
|
extraEnv?: NodeJS.ProcessEnv;
|
|
@@ -71,11 +71,11 @@ export const sandboxRunEnvironment = (runId: string, workspace: {
|
|
|
71
71
|
...workspace.gitEnv,
|
|
72
72
|
});
|
|
73
73
|
|
|
74
|
-
/**
|
|
74
|
+
/** Without its own account the process runs as the user of this machine and carries that user's name. */
|
|
75
75
|
const accountEnvironment = (source: NodeJS.ProcessEnv, ident: { name: string } | undefined): Record<string, string> =>
|
|
76
76
|
ident ? { USER: ident.name, LOGNAME: ident.name } : onlyStrings({ USER: source.USER, LOGNAME: source.LOGNAME });
|
|
77
77
|
|
|
78
|
-
/**
|
|
78
|
+
/** The environment of a sandbox process: the chosen base of this machine plus the contributions of the run. */
|
|
79
79
|
export const sandboxEnvironment = (
|
|
80
80
|
source: NodeJS.ProcessEnv,
|
|
81
81
|
{ base = "safe", home, ident, pathVariables, additions }: SandboxEnvironmentOptions,
|
|
@@ -117,15 +117,15 @@ const namedEntries = (
|
|
|
117
117
|
return name ? [[name, root.directory]] : [];
|
|
118
118
|
}));
|
|
119
119
|
|
|
120
|
-
/**
|
|
120
|
+
/** An alias names exactly one folder and does not lie under another, otherwise it would be open which root a path means. */
|
|
121
121
|
const assertDistinctAliases = (roots: readonly ResolvedWorkspaceRoot[]): void => {
|
|
122
122
|
const aliases = roots.flatMap((root) => root.alias === undefined ? [] : [root.alias]);
|
|
123
123
|
const clash = aliases.find((alias, index) => aliases.some((other, position) =>
|
|
124
124
|
position !== index && (other === alias || other.startsWith(`${alias}/`))));
|
|
125
|
-
if (clash !== undefined) throw new Error(`
|
|
125
|
+
if (clash !== undefined) throw new Error(`The working directory alias ${clash} names more than one root`);
|
|
126
126
|
};
|
|
127
127
|
|
|
128
|
-
/**
|
|
128
|
+
/** Builds the context of a run from the folders of this machine; every executor calls the same function. */
|
|
129
129
|
export const workspaceProcessContext = (options: WorkspaceContextOptions): WorkspaceProcessContext => {
|
|
130
130
|
const additionalRoots = options.additionalRoots ?? [];
|
|
131
131
|
const readOnlyRoots = options.readOnlyRoots ?? [];
|
|
@@ -11,48 +11,48 @@ import type { WorkspaceModuleFactory } from "./module.js";
|
|
|
11
11
|
import { RUN_MARKER_ENV } from "./run-marker.js";
|
|
12
12
|
import { safeProcessEnvironment } from "./safe-environment.js";
|
|
13
13
|
|
|
14
|
-
/**
|
|
14
|
+
/** Where a bundle carries its contribution to the executor: a self-contained file that every Node process loads without host resolution. */
|
|
15
15
|
export const EXECUTOR_CONTRIBUTION_FILE = "executor/index.mjs";
|
|
16
16
|
|
|
17
|
-
/**
|
|
17
|
+
/** What the executor of a machine tells a contribution about it; a contribution imports only types from the host, everything else comes through here. */
|
|
18
18
|
export interface WorkspaceExecutorMachine {
|
|
19
|
-
/**
|
|
19
|
+
/** The tools folder of the plugin on this machine, where its provisioning downloads to. */
|
|
20
20
|
readonly toolsDirectory: string;
|
|
21
|
-
/**
|
|
21
|
+
/** A file from a package in the node_modules of the host of this machine; without a host or package the call fails with a cause. */
|
|
22
22
|
readonly hostPackageFile: (hostRoot: string | undefined, specifier: string) => string;
|
|
23
|
-
/**
|
|
23
|
+
/** A file with one of the extensions in the workspace, resolved and checked. */
|
|
24
24
|
readonly resolveRootFile: (workspaceRoot: string, requested: string, extensions: readonly string[]) => Promise<string>;
|
|
25
|
-
/**
|
|
25
|
+
/** A folder in the workspace, resolved and checked. */
|
|
26
26
|
readonly resolveRootDirectory: (workspaceRoot: string, requested: string) => Promise<string>;
|
|
27
|
-
/**
|
|
27
|
+
/** A domain error of an operation with code and status; it reaches the caller as the same error as one of the executor. */
|
|
28
28
|
readonly operationError: (code: string, message: string, status: number) => Error;
|
|
29
|
-
/**
|
|
29
|
+
/** The environment of a process that a contribution starts itself: the safe selection of this machine, its HOME and the marker of the run for the process view. */
|
|
30
30
|
readonly processEnvironment: (runId: string) => NodeJS.ProcessEnv;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
/**
|
|
33
|
+
/** What a contribution adds to the executor of a machine. */
|
|
34
34
|
export interface WorkspaceExecutorParts {
|
|
35
35
|
readonly languageServers?: readonly LanguageServerAdapter[];
|
|
36
|
-
/**
|
|
36
|
+
/** Modules with their own operations; every operation belongs to exactly one module. */
|
|
37
37
|
readonly modules?: readonly WorkspaceModuleFactory[];
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
/**
|
|
40
|
+
/** What a plugin bundle exports as `executor`; it runs in every executor, in the server as on every workspace, and touches neither disk nor network while building. */
|
|
41
41
|
export type WorkspaceExecutorContribution = (machine: WorkspaceExecutorMachine) => WorkspaceExecutorParts;
|
|
42
42
|
|
|
43
|
-
/**
|
|
44
|
-
export interface
|
|
43
|
+
/** Whose contribution in which version; server and workspace require the same ones. */
|
|
44
|
+
export interface ExecutorContributionRevision {
|
|
45
45
|
readonly plugin: string;
|
|
46
|
-
/** SHA-256
|
|
47
|
-
readonly
|
|
46
|
+
/** SHA-256 of the file of the contribution. */
|
|
47
|
+
readonly revision: string;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
export interface LoadedExecutorContribution extends
|
|
50
|
+
export interface LoadedExecutorContribution extends ExecutorContributionRevision {
|
|
51
51
|
readonly contribution: WorkspaceExecutorContribution;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/**
|
|
55
|
-
export interface PreparedExecutorContribution extends
|
|
54
|
+
/** A contribution built for this machine. */
|
|
55
|
+
export interface PreparedExecutorContribution extends ExecutorContributionRevision {
|
|
56
56
|
readonly parts: WorkspaceExecutorParts;
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -61,19 +61,19 @@ const PART_KEYS = new Set(["languageServers", "modules"]);
|
|
|
61
61
|
|
|
62
62
|
const messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);
|
|
63
63
|
|
|
64
|
-
/**
|
|
64
|
+
/** The package name of a specifier like acme-server/lib/cli.mjs or @scope/name/file. */
|
|
65
65
|
const packageOf = (specifier: string): string =>
|
|
66
66
|
specifier.split("/").slice(0, specifier.startsWith("@") ? 2 : 1).join("/");
|
|
67
67
|
|
|
68
68
|
const hostPackageFile = (hostRoot: string | undefined, specifier: string): string => {
|
|
69
69
|
if (!hostRoot) {
|
|
70
|
-
throw new Error(`
|
|
71
|
-
+ "
|
|
70
|
+
throw new Error(`No host is known on this machine from which ${packageOf(specifier)} could be resolved. A workspace `
|
|
71
|
+
+ "gets it with the first connection to a distributing server or through the setting ragents.hostPath");
|
|
72
72
|
}
|
|
73
73
|
try {
|
|
74
74
|
return createRequire(path.join(hostRoot, "package.json")).resolve(specifier);
|
|
75
75
|
} catch (cause) {
|
|
76
|
-
throw new Error(`${packageOf(specifier)}
|
|
76
|
+
throw new Error(`${packageOf(specifier)} is not in the host ${hostRoot}: ${messageOf(cause)}`);
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
|
|
@@ -86,24 +86,24 @@ export const executorMachine = (toolsDirectory: string): WorkspaceExecutorMachin
|
|
|
86
86
|
processEnvironment: (runId) => ({ ...safeProcessEnvironment(process.env), HOME: homedir(), [RUN_MARKER_ENV]: runId }),
|
|
87
87
|
});
|
|
88
88
|
|
|
89
|
-
/**
|
|
89
|
+
/** Loads the file of a contribution, with `expected` only in that version; the version is part of its address so that a newly built contribution never comes from the module cache. */
|
|
90
90
|
export const loadExecutorContribution = async (plugin: string, file: string, expected?: string): Promise<LoadedExecutorContribution> => {
|
|
91
91
|
const content = await readFile(file).catch((cause: unknown) => {
|
|
92
|
-
throw new Error(`
|
|
92
|
+
throw new Error(`The executor contribution of ${plugin} is missing at ${file}: ${messageOf(cause)}`);
|
|
93
93
|
});
|
|
94
|
-
const
|
|
95
|
-
if (expected !== undefined &&
|
|
96
|
-
throw new Error(`
|
|
94
|
+
const revision = createHash("sha256").update(content).digest("hex");
|
|
95
|
+
if (expected !== undefined && revision !== expected) {
|
|
96
|
+
throw new Error(`The executor contribution of ${plugin} at ${file} has the version ${revision.slice(0, 12)}, required is ${expected.slice(0, 12)}`);
|
|
97
97
|
}
|
|
98
|
-
const exported = await import(`${pathToFileURL(file).href}?
|
|
99
|
-
throw new Error(`
|
|
98
|
+
const exported = await import(`${pathToFileURL(file).href}?revision=${revision}`).catch((cause: unknown) => {
|
|
99
|
+
throw new Error(`The executor contribution of ${plugin} (${file}) does not load: ${messageOf(cause)}`, { cause });
|
|
100
100
|
}) as Readonly<Record<string, unknown>>;
|
|
101
101
|
const contribution = exported.executor;
|
|
102
102
|
if (typeof contribution !== "function") {
|
|
103
|
-
throw new Error(`
|
|
104
|
-
+ "\"export const executor: WorkspaceExecutorContribution\"
|
|
103
|
+
throw new Error(`The bundle ${plugin} exports no valid executor contribution in ${file}; expected is `
|
|
104
|
+
+ "\"export const executor: WorkspaceExecutorContribution\" as a function of the machine");
|
|
105
105
|
}
|
|
106
|
-
return { plugin,
|
|
106
|
+
return { plugin, revision, contribution: contribution as WorkspaceExecutorContribution };
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
const isRecord = (value: unknown): value is Readonly<Record<string, unknown>> =>
|
|
@@ -112,9 +112,9 @@ const isRecord = (value: unknown): value is Readonly<Record<string, unknown>> =>
|
|
|
112
112
|
const isStringList = (value: unknown): value is readonly string[] =>
|
|
113
113
|
Array.isArray(value) && value.every((entry) => typeof entry === "string");
|
|
114
114
|
|
|
115
|
-
/**
|
|
115
|
+
/** What is missing from a language server or has the wrong shape; empty if it is usable. */
|
|
116
116
|
const adapterProblems = (value: Readonly<Record<string, unknown>>): readonly string[] => [
|
|
117
|
-
...typeof value.id === "string" && LANGUAGE_SERVER_ID.test(value.id) ? [] : ["id
|
|
117
|
+
...typeof value.id === "string" && LANGUAGE_SERVER_ID.test(value.id) ? [] : ["id of lowercase letters and digits"],
|
|
118
118
|
...typeof value.label === "string" ? [] : ["label"],
|
|
119
119
|
...isRecord(value.languages) && Object.values(value.languages).every((entry) => typeof entry === "string") ? [] : ["languages"],
|
|
120
120
|
...typeof value.rootDescription === "string" ? [] : ["rootDescription"],
|
|
@@ -122,29 +122,29 @@ const adapterProblems = (value: Readonly<Record<string, unknown>>): readonly str
|
|
|
122
122
|
...(["resolveRoot", "rootDirectory", "launch", "open"] as const).filter((name) => typeof value[name] !== "function"),
|
|
123
123
|
];
|
|
124
124
|
|
|
125
|
-
/**
|
|
125
|
+
/** Builds a loaded contribution for this machine and checks what it returns; a wrong shape is an error with a cause. */
|
|
126
126
|
export const prepareExecutorContribution = (loaded: LoadedExecutorContribution, toolsDirectory: string): PreparedExecutorContribution => {
|
|
127
|
-
const invalid = (detail: string): Error => new Error(`
|
|
127
|
+
const invalid = (detail: string): Error => new Error(`The executor contribution of ${loaded.plugin} is invalid: ${detail}`);
|
|
128
128
|
const parts = ((): unknown => {
|
|
129
129
|
try {
|
|
130
130
|
return loaded.contribution(executorMachine(toolsDirectory));
|
|
131
131
|
} catch (cause) {
|
|
132
|
-
throw invalid(`
|
|
132
|
+
throw invalid(`the function throws: ${messageOf(cause)}`);
|
|
133
133
|
}
|
|
134
134
|
})();
|
|
135
|
-
if (!isRecord(parts)) throw invalid("
|
|
135
|
+
if (!isRecord(parts)) throw invalid("the function returns no object");
|
|
136
136
|
const unknown = Object.keys(parts).filter((key) => !PART_KEYS.has(key));
|
|
137
|
-
if (unknown.length > 0) throw invalid(`
|
|
137
|
+
if (unknown.length > 0) throw invalid(`unknown parts ${unknown.join(", ")}; allowed are ${[...PART_KEYS].join(", ")}`);
|
|
138
138
|
const modules = parts.modules;
|
|
139
139
|
if (modules !== undefined && (!Array.isArray(modules) || !modules.every((module) => typeof module === "function"))) {
|
|
140
|
-
throw invalid("modules
|
|
140
|
+
throw invalid("modules is not a list of module factories");
|
|
141
141
|
}
|
|
142
142
|
const servers = parts.languageServers;
|
|
143
|
-
if (servers !== undefined && !Array.isArray(servers)) throw invalid("languageServers
|
|
143
|
+
if (servers !== undefined && !Array.isArray(servers)) throw invalid("languageServers is not a list");
|
|
144
144
|
for (const [index, server] of (servers ?? []).entries()) {
|
|
145
|
-
if (!isRecord(server)) throw invalid(`
|
|
145
|
+
if (!isRecord(server)) throw invalid(`the language server ${index + 1} is not an object`);
|
|
146
146
|
const problems = adapterProblems(server);
|
|
147
|
-
if (problems.length > 0) throw invalid(`
|
|
147
|
+
if (problems.length > 0) throw invalid(`the language server ${index + 1} needs ${problems.join(", ")}`);
|
|
148
148
|
}
|
|
149
|
-
return { plugin: loaded.plugin,
|
|
149
|
+
return { plugin: loaded.plugin, revision: loaded.revision, parts: parts as WorkspaceExecutorParts };
|
|
150
150
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** A domain error of an operation with code and status; the caller turns it into its own error type. */
|
|
2
2
|
export class WorkspaceOperationError extends Error {
|
|
3
3
|
readonly code: string;
|
|
4
4
|
readonly status: number;
|
|
@@ -3,29 +3,29 @@ import { WorkspaceOperationError } from "./errors.js";
|
|
|
3
3
|
import type { WorkspaceExecutorModule, WorkspaceModuleFactory, WorkspaceOperation } from "./module.js";
|
|
4
4
|
import { NO_ROOTS, type OperationFootprint } from "./paths.js";
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
export const WORKSPACE_EXECUTOR_VERSION = "
|
|
6
|
+
/** The version of the executor; server and workspace must carry the same one. */
|
|
7
|
+
export const WORKSPACE_EXECUTOR_VERSION = "8";
|
|
8
8
|
|
|
9
9
|
export interface WorkspaceExecuteOptions {
|
|
10
10
|
toolCallId?: string;
|
|
11
11
|
signal?: AbortSignal;
|
|
12
|
-
/**
|
|
12
|
+
/** Receives the progress of the operation as a JSON value. */
|
|
13
13
|
onProgress?: (value: unknown) => void;
|
|
14
|
-
/**
|
|
14
|
+
/** How long the operation itself may run; a remote executor waits this long in addition to its safety margin. */
|
|
15
15
|
durationMs?: number;
|
|
16
|
-
/**
|
|
16
|
+
/** The operation runs until it is aborted through `signal`, such as a watch; no timeout applies. */
|
|
17
17
|
untilAborted?: boolean;
|
|
18
|
-
/**
|
|
18
|
+
/** Execute only if the executor is reachable and answers in time; otherwise the result is `null`. For cleanup that `stopRun` catches up on. */
|
|
19
19
|
whenReachable?: boolean;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
/**
|
|
22
|
+
/** Executes the operations of a run on a machine; knows neither engine nor run contract nor plugins. */
|
|
23
23
|
export interface WorkspaceExecutor {
|
|
24
24
|
readonly version: string;
|
|
25
25
|
execute: (runId: string, operation: string, input: unknown, options?: WorkspaceExecuteOptions) => Promise<unknown>;
|
|
26
|
-
/**
|
|
26
|
+
/** Releases what the executor holds for the run; a remote executor catches up on this if it is currently unreachable. */
|
|
27
27
|
stopRun: (runId: string) => Promise<void>;
|
|
28
|
-
/**
|
|
28
|
+
/** Ends the executor for good; whoever needs one again afterwards builds a new one. */
|
|
29
29
|
shutdown: () => Promise<void>;
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -42,7 +42,7 @@ const settledAll = async (operations: readonly Promise<void>[]): Promise<void> =
|
|
|
42
42
|
if (failed) throw failed.reason;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
/**
|
|
45
|
+
/** An executor made of modules: every operation belongs to exactly one module, the executor itself knows none. */
|
|
46
46
|
export class WorkspaceOperationExecutor implements WorkspaceExecutor {
|
|
47
47
|
readonly version = WORKSPACE_EXECUTOR_VERSION;
|
|
48
48
|
readonly #modules: readonly WorkspaceExecutorModule[];
|
|
@@ -58,26 +58,26 @@ export class WorkspaceOperationExecutor implements WorkspaceExecutor {
|
|
|
58
58
|
const operations = new Map<string, WorkspaceOperation>();
|
|
59
59
|
for (const module of this.#modules) {
|
|
60
60
|
for (const [name, operation] of Object.entries(module.operations)) {
|
|
61
|
-
if (operations.has(name)) throw new Error(`
|
|
61
|
+
if (operations.has(name)) throw new Error(`The operation ${name} is registered twice in the executor`);
|
|
62
62
|
operations.set(name, operation);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
this.#operations = operations;
|
|
66
66
|
this.#footprints = new Map(this.#modules.flatMap((module) => Object.entries(module.footprints ?? {}).map(([name, footprint]) => {
|
|
67
|
-
if (!Object.hasOwn(module.operations, name)) throw new Error(`
|
|
67
|
+
if (!Object.hasOwn(module.operations, name)) throw new Error(`A module declares a footprint for ${name}, an operation it does not have`);
|
|
68
68
|
return [name, footprint] as const;
|
|
69
69
|
})));
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
/**
|
|
72
|
+
/** The footprint of an input according to the declaration of the module the operation belongs to; this tells a caller which machine it belongs on. */
|
|
73
73
|
footprintOf(operation: string, input: unknown): OperationFootprint {
|
|
74
74
|
return this.#footprints.get(operation)?.(input) ?? { roots: NO_ROOTS };
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
async execute(runId: string, operation: string, input: unknown, options: WorkspaceExecuteOptions = {}): Promise<unknown> {
|
|
78
78
|
const run = this.#operations.get(operation);
|
|
79
|
-
if (!run) throw new WorkspaceOperationError("workspace-operation-unknown", `
|
|
80
|
-
if (options.untilAborted && !options.signal) throw new Error(`
|
|
79
|
+
if (!run) throw new WorkspaceOperationError("workspace-operation-unknown", `The executor does not know the operation ${operation}`, 400);
|
|
80
|
+
if (options.untilAborted && !options.signal) throw new Error(`The operation ${operation} runs until it is aborted and needs an abort signal for that`);
|
|
81
81
|
return run({ runId, input, toolCallId: options.toolCallId, signal: options.signal, progress: options.onProgress });
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -91,7 +91,7 @@ export class WorkspaceOperationExecutor implements WorkspaceExecutor {
|
|
|
91
91
|
|
|
92
92
|
async #annotate(runId: string, absolutePath: string): Promise<string | undefined> {
|
|
93
93
|
const notes = await Promise.all(this.#modules.flatMap((module) => module.annotate
|
|
94
|
-
? [module.annotate(runId, absolutePath).catch((error: unknown) => `
|
|
94
|
+
? [module.annotate(runId, absolutePath).catch((error: unknown) => `Annotation failed: ${messageOf(error)}`)]
|
|
95
95
|
: []));
|
|
96
96
|
const text = notes.filter((note): note is string => Boolean(note)).join("\n");
|
|
97
97
|
return text || undefined;
|