@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
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ npm install -g @schlenkr/ragents
|
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
- `start <profile|path>` - start a profile shipped with the package (`core`, `developer`,
|
|
27
|
-
`showcase`), your own `ragents.config.<name>.ts` anywhere on disk, or a
|
|
27
|
+
`showcase`), your own `ragents.config.<name>.ts` anywhere on disk, or a revision that `connect`
|
|
28
28
|
already fetched, without asking the server. The web interface comes finished with the package,
|
|
29
29
|
the same for every profile; the web halves of the plugins load from their bundles.
|
|
30
30
|
|
package/apps/server/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import { emptyUsage, type AccessContext, type AccessProjectionRegistry, type Run
|
|
|
2
2
|
import type { ChatEvent, Message } from "quassel/events";
|
|
3
3
|
import type { ActorConversations } from "./ragents/actor-chat-history.js";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/** Each plugin shows its own plugin states and plugin events through its access projection (docs/spec/plugins.md, registrations of the PluginHost). */
|
|
6
6
|
export const accessibleRunView = (view: RunView, access: AccessContext, projections: AccessProjectionRegistry): RunView => access.can("runs.inspect") ? view : {
|
|
7
7
|
...view,
|
|
8
8
|
actors: view.actors.map((actor) => actor.kind === "human" ? { ...actor, grants: [] } : {
|
|
@@ -17,12 +17,12 @@ export const accessibleRunView = (view: RunView, access: AccessContext, projecti
|
|
|
17
17
|
toolNames: [],
|
|
18
18
|
openedToolNames: [],
|
|
19
19
|
usage: emptyUsage(),
|
|
20
|
-
lifecycle: actor.lifecycle.kind === "stopped" ? { ...actor.lifecycle, reason: "
|
|
20
|
+
lifecycle: actor.lifecycle.kind === "stopped" ? { ...actor.lifecycle, reason: "Stopped" } : actor.lifecycle,
|
|
21
21
|
}),
|
|
22
22
|
inputs: view.inputs.map((input) => ({ ...input, content: input.enqueuedBy === view.ownerId && input.presentation !== "background" ? input.content : "",
|
|
23
|
-
lifecycle: input.lifecycle.kind === "discarded" ? { ...input.lifecycle, reason: "
|
|
23
|
+
lifecycle: input.lifecycle.kind === "discarded" ? { ...input.lifecycle, reason: "Discarded" } : input.lifecycle,
|
|
24
24
|
})),
|
|
25
|
-
turns: view.turns.map((turn) => ({ ...turn, usage: emptyUsage(), toolCalls: [], reason: turn.reason ? "
|
|
25
|
+
turns: view.turns.map((turn) => ({ ...turn, usage: emptyUsage(), toolCalls: [], reason: turn.reason ? "Processing was stopped." : null })),
|
|
26
26
|
subscriptions: [],
|
|
27
27
|
pluginStates: view.pluginStates.flatMap((entry) => {
|
|
28
28
|
const state = projections.state(entry, access);
|
|
@@ -34,13 +34,13 @@ export const accessibleChatEvent = (event: ChatEvent, access: AccessContext, pro
|
|
|
34
34
|
if (access.can("runs.inspect")) return event;
|
|
35
35
|
if (event.kind === "status" && event.startup?.status === "failed") return {
|
|
36
36
|
...event,
|
|
37
|
-
startup: { status: "failed", message: "
|
|
37
|
+
startup: { status: "failed", message: "The start could not be completed. Please contact the person responsible." },
|
|
38
38
|
};
|
|
39
39
|
const trace = access.can("runs.trace");
|
|
40
40
|
if (event.kind === "thinking") return trace ? event : { kind: "thinking", delta: "", at: event.at };
|
|
41
41
|
if (event.kind === "tool") return trace ? event : { kind: "tool", id: event.id, name: "", arguments: "", at: event.at };
|
|
42
42
|
if (event.kind === "tool-result") return trace ? event : { kind: "tool-result", id: event.id, result: "", isError: event.isError };
|
|
43
|
-
if (event.kind === "system") return { ...event, text: "
|
|
43
|
+
if (event.kind === "system") return { ...event, text: "Processing notice. If you have questions, contact the responsible agent." };
|
|
44
44
|
if (event.kind !== "plugin") return event;
|
|
45
45
|
return projections.chatEvent(event.pluginId, event, access);
|
|
46
46
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomBytes, timingSafeEqual } from "node:crypto";
|
|
2
2
|
import type { IncomingMessage } from "node:http";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** One token per coordinator for its tools; it acts as that coordinator's user, null is the one access without sign-in. */
|
|
5
5
|
const coordinatorTokens = new Map<string | null, string>();
|
|
6
6
|
|
|
7
7
|
export const coordinatorAccessToken = (userId: string | null): string => {
|
|
@@ -13,11 +13,11 @@ export const coordinatorAccessToken = (userId: string | null): string => {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
export const profileAccessCookieName = (productId: string | undefined, profile: string | undefined): string => {
|
|
16
|
-
if (!productId || !profile) throw new Error("
|
|
16
|
+
if (!productId || !profile) throw new Error("User sign-in requires PRODUCT_ID and PRODUCT_PROFILE");
|
|
17
17
|
return `${productId}-${profile}-user`;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
/**
|
|
20
|
+
/** The user for whom a coordinator calls the message layer locally; otherwise undefined. */
|
|
21
21
|
export const coordinatorRequestUser = (request: IncomingMessage, url: URL): { userId: string | null } | undefined => {
|
|
22
22
|
const address = request.socket.remoteAddress;
|
|
23
23
|
if (address !== "127.0.0.1" && address !== "::1" && address !== "::ffff:127.0.0.1") return undefined;
|
|
@@ -44,20 +44,20 @@ export const isSameOriginRequest = (request: IncomingMessage): boolean => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
47
|
-
if (!/^[A-Za-z0-9_-]+$/.test(options.cookieName)) throw new Error("
|
|
48
|
-
if (options.users?.length === 0) throw new Error("
|
|
49
|
-
if (options.users && options.anonymousUser) throw new Error("
|
|
47
|
+
if (!/^[A-Za-z0-9_-]+$/.test(options.cookieName)) throw new Error("Invalid name for the sign-in cookie");
|
|
48
|
+
if (options.users?.length === 0) throw new Error("Enabled sign-in needs at least one user");
|
|
49
|
+
if (options.users && options.anonymousUser) throw new Error("User sign-in and anonymous access exclude each other");
|
|
50
50
|
const enabled = options.users !== undefined;
|
|
51
51
|
const now = options.now ?? Date.now;
|
|
52
52
|
const sessionTtlMs = options.sessionTtlMs ?? 12 * 60 * 60 * 1000;
|
|
53
53
|
if (!Number.isSafeInteger(sessionTtlMs) || sessionTtlMs < 1 || sessionTtlMs > 2_147_483_647) {
|
|
54
|
-
throw new Error("
|
|
54
|
+
throw new Error("Invalid validity period for sign-ins");
|
|
55
55
|
}
|
|
56
56
|
const passwords = new Map<string, PasswordRecord>();
|
|
57
|
-
//
|
|
57
|
+
// Personal tokens are kept in memory only as SHA-256; the comparison runs in constant time over all entries.
|
|
58
58
|
const personalTokens: Array<{ digest: Buffer; user: AccessUser }> = [];
|
|
59
59
|
for (const entry of options.users ?? []) {
|
|
60
|
-
if (passwords.has(entry.id)) throw new Error(`
|
|
60
|
+
if (passwords.has(entry.id)) throw new Error(`Duplicate user: ${entry.id}`);
|
|
61
61
|
const salt = randomBytes(16);
|
|
62
62
|
const user = Object.freeze({ id: entry.id, label: entry.label, rights: Object.freeze([...entry.rights]),
|
|
63
63
|
...(entry.startEntries ? { startEntries: Object.freeze([...entry.startEntries]) } : {}),
|
|
@@ -65,14 +65,14 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
65
65
|
passwords.set(entry.id, { user, salt, hash: scryptSync(entry.password, salt, 32) });
|
|
66
66
|
if (entry.token === undefined) continue;
|
|
67
67
|
const digest = digestOf(entry.token);
|
|
68
|
-
if (personalTokens.some((known) => timingSafeEqual(known.digest, digest))) throw new Error(`
|
|
68
|
+
if (personalTokens.some((known) => timingSafeEqual(known.digest, digest))) throw new Error(`The token of user ${entry.id} already belongs to another user`);
|
|
69
69
|
personalTokens.push({ digest, user });
|
|
70
70
|
}
|
|
71
71
|
const dummySalt = randomBytes(16);
|
|
72
72
|
const dummyHash = randomBytes(32);
|
|
73
73
|
const sessions = new Map<string, LoginSession>();
|
|
74
74
|
const wellFormed = (token: string | undefined): string | undefined => token !== undefined && /^[A-Za-z0-9_-]{43}$/.test(token) ? token : undefined;
|
|
75
|
-
// Clients
|
|
75
|
+
// Clients without a cookie (VS Code extension, its iframes) send the token as bearer; GET requests without headers (event stream, frames) as a query parameter.
|
|
76
76
|
const tokenFor = (request: IncomingMessage): string | undefined => {
|
|
77
77
|
const authorization = request.headers.authorization;
|
|
78
78
|
if (authorization !== undefined) return wellFormed(/^Bearer (.+)$/.exec(authorization)?.[1]);
|
|
@@ -83,7 +83,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
83
83
|
if (matches.length !== 1) return undefined;
|
|
84
84
|
return wellFormed(matches[0]!.slice(options.cookieName.length + 1));
|
|
85
85
|
};
|
|
86
|
-
//
|
|
86
|
+
// A personal token is only valid as bearer or, for GET, as a query parameter; never as a cookie.
|
|
87
87
|
const offeredToken = (request: IncomingMessage): string | undefined => {
|
|
88
88
|
const authorization = request.headers.authorization;
|
|
89
89
|
if (authorization !== undefined) return /^Bearer (.+)$/.exec(authorization)?.[1];
|
|
@@ -127,7 +127,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
127
127
|
const expected = url.pathname === "/api/access" ? "GET" : "POST";
|
|
128
128
|
if (request.method !== expected) {
|
|
129
129
|
response.setHeader("Allow", expected);
|
|
130
|
-
writeJson(response, 405, { error: "
|
|
130
|
+
writeJson(response, 405, { error: "Method not allowed" });
|
|
131
131
|
return true;
|
|
132
132
|
}
|
|
133
133
|
if (expected === "GET") {
|
|
@@ -135,11 +135,11 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
135
135
|
return true;
|
|
136
136
|
}
|
|
137
137
|
if (!isSameOriginRequest(request)) {
|
|
138
|
-
writeJson(response, 403, { error: "
|
|
138
|
+
writeJson(response, 403, { error: "Sign-in and sign-out are only possible from the same website" });
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
141
|
if (!enabled) {
|
|
142
|
-
writeJson(response, 409, { error: "
|
|
142
|
+
writeJson(response, 409, { error: "Sign-in is turned off in this profile" });
|
|
143
143
|
return true;
|
|
144
144
|
}
|
|
145
145
|
if (url.pathname === "/api/access/logout") {
|
|
@@ -150,25 +150,25 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
150
150
|
return true;
|
|
151
151
|
}
|
|
152
152
|
if (request.headers["content-type"]?.split(";")[0]?.trim() !== "application/json") {
|
|
153
|
-
writeJson(response, 415, { error: "
|
|
153
|
+
writeJson(response, 415, { error: "Sign-in requires application/json" });
|
|
154
154
|
return true;
|
|
155
155
|
}
|
|
156
156
|
try {
|
|
157
157
|
const credentials = await readJsonBody(request, (body) => {
|
|
158
|
-
if (!body || typeof body !== "object" || Array.isArray(body)) throw new Error("
|
|
158
|
+
if (!body || typeof body !== "object" || Array.isArray(body)) throw new Error("User id and password are missing");
|
|
159
159
|
const value = body as Record<string, unknown>;
|
|
160
160
|
if (Object.keys(value).some((key) => key !== "id" && key !== "password")
|
|
161
161
|
|| typeof value.id !== "string" || !value.id || value.id.length > 64
|
|
162
162
|
|| typeof value.password !== "string" || !value.password || value.password.length > 2048) {
|
|
163
|
-
throw new Error("
|
|
163
|
+
throw new Error("User id and password are invalid");
|
|
164
164
|
}
|
|
165
165
|
return { id: value.id, password: value.password };
|
|
166
|
-
}, "
|
|
166
|
+
}, "The sign-in does not contain valid JSON", 4096);
|
|
167
167
|
const record = passwords.get(credentials.id);
|
|
168
168
|
const hash = await derivePassword(credentials.password, record?.salt ?? dummySalt);
|
|
169
169
|
const matches = timingSafeEqual(hash, record?.hash ?? dummyHash);
|
|
170
170
|
if (!record || !matches) {
|
|
171
|
-
writeJson(response, 401, { error: "
|
|
171
|
+
writeJson(response, 401, { error: "User id or password is incorrect" });
|
|
172
172
|
return true;
|
|
173
173
|
}
|
|
174
174
|
const previous = tokenFor(request);
|
|
@@ -182,7 +182,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
182
182
|
} catch (error) {
|
|
183
183
|
if (!request.aborted && !response.destroyed) {
|
|
184
184
|
writeJson(response, error instanceof PayloadTooLargeError ? 413 : 400, {
|
|
185
|
-
error: error instanceof PayloadTooLargeError ? "
|
|
185
|
+
error: error instanceof PayloadTooLargeError ? "The sign-in data is too large" : "The sign-in data is invalid",
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
188
|
}
|
|
@@ -200,7 +200,7 @@ export const createAccessSessionManager = (options: AccessSessionOptions) => {
|
|
|
200
200
|
response.once("close", release);
|
|
201
201
|
response.once("finish", release);
|
|
202
202
|
};
|
|
203
|
-
/**
|
|
203
|
+
/** The access with which the tools of a user's coordinator act: that user's current state, null is the one access without sign-in. */
|
|
204
204
|
const coordinatorSnapshot = (userId: string | null): AccessSnapshot => userId === null
|
|
205
205
|
? { enabled, user: enabled ? null : options.anonymousUser ?? null }
|
|
206
206
|
: { enabled: true, user: passwords.get(userId)?.user ?? null };
|
|
@@ -14,32 +14,32 @@ import type { TitleModelSettings } from "../title-settings-contract.js";
|
|
|
14
14
|
|
|
15
15
|
export { runContracts };
|
|
16
16
|
|
|
17
|
-
const runId = Type.String({ minLength: 1, maxLength: 64, description: "
|
|
17
|
+
const runId = Type.String({ minLength: 1, maxLength: 64, description: "Id of the run" });
|
|
18
18
|
|
|
19
19
|
const attachment = Type.Object({
|
|
20
20
|
name: Type.String({ minLength: 1 }),
|
|
21
21
|
mediaType: Type.String({ minLength: 1 }),
|
|
22
|
-
data: Type.String({ description: "
|
|
22
|
+
data: Type.String({ description: "Content as Base64" }),
|
|
23
23
|
}, { additionalProperties: false });
|
|
24
24
|
|
|
25
25
|
const sessionInfo = openJson<SessionInfo>("SessionInfo");
|
|
26
26
|
|
|
27
|
-
/**
|
|
28
|
-
/**
|
|
27
|
+
/** The host checks per-run rights dynamically; contracts without `rights` state their rule in the description. */
|
|
28
|
+
/** What a UI gets from the server at startup: the plugins' profile and the server's RAgents version, against which it checks its own. */
|
|
29
29
|
export type HostBootstrap = PublicPluginProfile & { readonly version: string };
|
|
30
30
|
|
|
31
31
|
export const coreContracts = {
|
|
32
32
|
runs: {
|
|
33
33
|
list: defineOperation({
|
|
34
34
|
id: "ragents.runs.list",
|
|
35
|
-
description: "
|
|
35
|
+
description: "All runs of the profile with title, times and metadata. Right: runs.read.",
|
|
36
36
|
rights: ["runs.read"],
|
|
37
37
|
input: Type.Object({}, { additionalProperties: false }),
|
|
38
38
|
result: Type.Array(sessionInfo),
|
|
39
39
|
}),
|
|
40
40
|
delete: defineOperation({
|
|
41
41
|
id: "ragents.runs.delete",
|
|
42
|
-
description: "
|
|
42
|
+
description: "Delete a run with its data. Rights: runs.read and runs.delete.",
|
|
43
43
|
rights: ["runs.read", "runs.delete"],
|
|
44
44
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
45
45
|
result: Type.Null(),
|
|
@@ -48,43 +48,43 @@ export const coreContracts = {
|
|
|
48
48
|
chat: {
|
|
49
49
|
send: defineOperation({
|
|
50
50
|
id: "ragents.chat.send",
|
|
51
|
-
description: "
|
|
51
|
+
description: "A message to the run's coordinator; starts a new run or cuts into a running one. With entry, it starts the run through this skill template and the start options it fixes. Rights: runs.read and runs.write, for a new run runs.create; for the global chat its rights.",
|
|
52
52
|
input: Type.Object({
|
|
53
53
|
runId,
|
|
54
54
|
text: Type.Optional(Type.String()),
|
|
55
55
|
attachments: Type.Optional(Type.Array(attachment)),
|
|
56
56
|
userLocation: Type.Optional(openJson<ChatUserLocation>("ChatUserLocation")),
|
|
57
|
-
entry: Type.Optional(Type.String({ minLength: 1, description: "
|
|
57
|
+
entry: Type.Optional(Type.String({ minLength: 1, description: "Id of the skill template through which this message starts the run" })),
|
|
58
58
|
}, { additionalProperties: false }),
|
|
59
59
|
result: Type.Null(),
|
|
60
60
|
}),
|
|
61
61
|
sendToActor: defineOperation({
|
|
62
62
|
id: "ragents.chat.sendToActor",
|
|
63
|
-
description: "
|
|
63
|
+
description: "A message to a specific LLM actor of the run. Rights as for ragents.chat.send.",
|
|
64
64
|
input: Type.Object({ runId, actorId: Type.String({ minLength: 1 }), text: Type.Optional(Type.String()), attachments: Type.Optional(Type.Array(attachment)) }, { additionalProperties: false }),
|
|
65
65
|
result: Type.Null(),
|
|
66
66
|
}),
|
|
67
67
|
start: defineOperation({
|
|
68
68
|
id: "ragents.chat.start",
|
|
69
|
-
description: "
|
|
69
|
+
description: "Start a run through a script template, without a message; the start options the template fixes apply. Rights: runs.read, runs.write and the template's release.",
|
|
70
70
|
input: Type.Object({ runId, entry: Type.String({ minLength: 1 }), input: Type.Optional(Type.Any()) }, { additionalProperties: false }),
|
|
71
71
|
result: Type.Null(),
|
|
72
72
|
}),
|
|
73
73
|
stop: defineOperation({
|
|
74
74
|
id: "ragents.chat.stop",
|
|
75
|
-
description: "
|
|
75
|
+
description: "Emergency stop for the whole run: aborts all turns and a running start and stops all actors. ragents.runs.interruptTurn interrupts a single turn. Rights: runs.read and runs.write.",
|
|
76
76
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
77
77
|
result: Type.Null(),
|
|
78
78
|
}),
|
|
79
79
|
capabilities: defineOperation({
|
|
80
80
|
id: "ragents.chat.capabilities",
|
|
81
|
-
description: "
|
|
81
|
+
description: "Which attachments an actor's model accepts; the model name appears only with runs.inspect. Right: runs.read.",
|
|
82
82
|
input: Type.Object({ runId, actor: Type.Optional(Type.String({ minLength: 1 })) }, { additionalProperties: false }),
|
|
83
83
|
result: openJson<ChatAttachmentCapabilities>("ChatAttachmentCapabilities"),
|
|
84
84
|
}),
|
|
85
85
|
actorHistory: defineOperation({
|
|
86
86
|
id: "ragents.chat.actorHistory",
|
|
87
|
-
description: "
|
|
87
|
+
description: "The conversation histories of all actors of the run, without runs.inspect without tool details. Right: runs.read.",
|
|
88
88
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
89
89
|
result: openJson<ActorConversations>("ActorConversations"),
|
|
90
90
|
}),
|
|
@@ -92,14 +92,14 @@ export const coreContracts = {
|
|
|
92
92
|
startOptions: {
|
|
93
93
|
list: defineOperation({
|
|
94
94
|
id: "ragents.startOptions.list",
|
|
95
|
-
description: "
|
|
95
|
+
description: "The start options of a run with value and presentation, only those whose own rights the caller has; the model choice, for example, requires runs.inspect. After the start, all except the changeable ones are locked. Rights: runs.read, runs.create.",
|
|
96
96
|
rights: ["runs.read", "runs.create"],
|
|
97
97
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
98
98
|
result: Type.Array(openJson<StartOptionState>("StartOptionState")),
|
|
99
99
|
}),
|
|
100
100
|
select: defineOperation({
|
|
101
101
|
id: "ragents.startOptions.select",
|
|
102
|
-
description: "
|
|
102
|
+
description: "Choose a start option before the start, a changeable one such as the model choice also afterwards, taking effect from the next turn; if a right of the option itself is missing, the choice fails with access-denied. Rights: runs.read, runs.write, runs.create.",
|
|
103
103
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
104
104
|
input: Type.Object({ runId, optionId: Type.String({ minLength: 1, maxLength: 128 }), value: Type.Any() }, { additionalProperties: false }),
|
|
105
105
|
result: openJson<StartOptionState>("StartOptionState"),
|
|
@@ -108,25 +108,25 @@ export const coreContracts = {
|
|
|
108
108
|
transfer: {
|
|
109
109
|
export: defineOperation({
|
|
110
110
|
id: "ragents.runs.export",
|
|
111
|
-
description: "
|
|
111
|
+
description: "Fetch a stopped run as an archive: journal, payloads, model contexts and its plugin stores. Rights: runs.read and runs.inspect.",
|
|
112
112
|
rights: ["runs.read", "runs.inspect"],
|
|
113
113
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
114
114
|
result: openJson<RunTransferExport>("RunTransferExport"),
|
|
115
115
|
}),
|
|
116
116
|
import: defineOperation({
|
|
117
117
|
id: "ragents.runs.import",
|
|
118
|
-
description: "
|
|
118
|
+
description: "Accept a run archive, replay its journal and open the run stopped. Rights: runs.read, runs.write and runs.create.",
|
|
119
119
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
120
120
|
input: Type.Object({
|
|
121
|
-
archive: Type.String({ minLength: 1, description: "
|
|
122
|
-
workspacePath: Type.Optional(Type.String({ minLength: 1, description: "
|
|
121
|
+
archive: Type.String({ minLength: 1, description: "The export's tar.gz as Base64" }),
|
|
122
|
+
workspacePath: Type.Optional(Type.String({ minLength: 1, description: "Replacement folder on this server for a run with binding path" })),
|
|
123
123
|
}, { additionalProperties: false }),
|
|
124
124
|
result: openJson<RunTransferImport>("RunTransferImport"),
|
|
125
125
|
}),
|
|
126
126
|
},
|
|
127
127
|
prepare: defineOperation({
|
|
128
128
|
id: "ragents.runs.prepare",
|
|
129
|
-
description: "
|
|
129
|
+
description: "Work out the task of a new run in a conversation with a separate coordinator instance. Rights: runs.read, runs.write, runs.create.",
|
|
130
130
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
131
131
|
input: Type.Intersect([Type.Object({ runId }), openJson<RunPreparationRequest>("RunPreparationRequest")]),
|
|
132
132
|
result: openJson<RunPreparationResponse>("RunPreparationResponse"),
|
|
@@ -134,28 +134,28 @@ export const coreContracts = {
|
|
|
134
134
|
settings: {
|
|
135
135
|
read: defineOperation({
|
|
136
136
|
id: "ragents.settings.read",
|
|
137
|
-
description: "
|
|
137
|
+
description: "Models, plugins, tools, skills and runtime information of the profile. Right: settings.read; only locally or with access.",
|
|
138
138
|
rights: ["settings.read"],
|
|
139
139
|
input: Type.Object({}, { additionalProperties: false }),
|
|
140
140
|
result: openJson<SettingsResponse>("SettingsResponse"),
|
|
141
141
|
}),
|
|
142
142
|
skill: defineOperation({
|
|
143
143
|
id: "ragents.settings.skill",
|
|
144
|
-
description: "
|
|
144
|
+
description: "Read the files of a registered skill; null if it is not registered. Right: settings.read.",
|
|
145
145
|
rights: ["settings.read"],
|
|
146
146
|
input: Type.Object({ id: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
|
|
147
147
|
result: Type.Union([openJson<SettingsSkillDetail>("SettingsSkillDetail"), Type.Null()]),
|
|
148
148
|
}),
|
|
149
149
|
titlesRead: defineOperation({
|
|
150
150
|
id: "ragents.settings.titles.read",
|
|
151
|
-
description: "
|
|
151
|
+
description: "Read the model for automatic titles and the choices. Right: settings.read.",
|
|
152
152
|
rights: ["settings.read"],
|
|
153
153
|
input: Type.Object({}, { additionalProperties: false }),
|
|
154
154
|
result: openJson<TitleModelSettings>("TitleModelSettings"),
|
|
155
155
|
}),
|
|
156
156
|
titlesSave: defineOperation({
|
|
157
157
|
id: "ragents.settings.titles.save",
|
|
158
|
-
description: "
|
|
158
|
+
description: "Set the model for automatic titles or turn their generation off. Right: settings.write.",
|
|
159
159
|
rights: ["settings.write"],
|
|
160
160
|
input: Type.Object({ value: Type.Any() }, { additionalProperties: false }),
|
|
161
161
|
result: openJson<TitleModelSettings>("TitleModelSettings"),
|
|
@@ -164,7 +164,7 @@ export const coreContracts = {
|
|
|
164
164
|
plugins: {
|
|
165
165
|
bootstrap: defineOperation({
|
|
166
166
|
id: "ragents.plugins.bootstrap",
|
|
167
|
-
description: "
|
|
167
|
+
description: "Product, active plugins with web configuration, released templates and the server's RAgents version for the UI.",
|
|
168
168
|
input: Type.Object({}, { additionalProperties: false }),
|
|
169
169
|
result: openJson<HostBootstrap>("HostBootstrap"),
|
|
170
170
|
}),
|
|
@@ -172,7 +172,7 @@ export const coreContracts = {
|
|
|
172
172
|
external: {
|
|
173
173
|
set: defineOperation({
|
|
174
174
|
id: "ragents.external.set",
|
|
175
|
-
description: "
|
|
175
|
+
description: "Turn external access on or off; only from the local machine. Right: settings.write.",
|
|
176
176
|
rights: ["settings.write"],
|
|
177
177
|
input: Type.Object({ state: Type.Union([Type.Literal("on"), Type.Literal("off")]) }, { additionalProperties: false }),
|
|
178
178
|
result: Type.Object({ external: Type.Boolean() }),
|
|
@@ -181,20 +181,20 @@ export const coreContracts = {
|
|
|
181
181
|
channels: {
|
|
182
182
|
runs: defineChannel({
|
|
183
183
|
id: "ragents.runs",
|
|
184
|
-
description: "
|
|
184
|
+
description: "Reports every change of the run list. Right: runs.read.",
|
|
185
185
|
rights: ["runs.read"],
|
|
186
186
|
params: Type.Object({}, { additionalProperties: false }),
|
|
187
187
|
message: Type.Object({ type: Type.Literal("changed") }),
|
|
188
188
|
}),
|
|
189
189
|
run: defineChannel({
|
|
190
190
|
id: "ragents.run",
|
|
191
|
-
description: "
|
|
191
|
+
description: "Reports every new journal event of a run; first ready, then run. Rights as for reading the run.",
|
|
192
192
|
params: Type.Object({ runId }, { additionalProperties: false }),
|
|
193
193
|
message: Type.Object({ kind: Type.Union([Type.Literal("ready"), Type.Literal("run")]) }),
|
|
194
194
|
}),
|
|
195
195
|
chat: defineChannel({
|
|
196
196
|
id: "ragents.chat",
|
|
197
|
-
description: "
|
|
197
|
+
description: "The coordinator's chat history: first the stored history, then live. Rights as for reading the run.",
|
|
198
198
|
params: Type.Object({ runId }, { additionalProperties: false }),
|
|
199
199
|
message: openJson<ChatEvent>("ChatEvent"),
|
|
200
200
|
}),
|
|
@@ -25,14 +25,14 @@ export interface CoreMethodSources {
|
|
|
25
25
|
saveTitleModelSettings: (value: unknown) => Promise<TitleModelSettings>;
|
|
26
26
|
};
|
|
27
27
|
plugins: PluginHost;
|
|
28
|
-
/**
|
|
28
|
+
/** The RAgents version of this server; a UI with a different version shows the difference. */
|
|
29
29
|
version: string;
|
|
30
30
|
global: GlobalRunPolicy | undefined;
|
|
31
|
-
/**
|
|
31
|
+
/** The user of a run: null without an owner, undefined for an id without a run. */
|
|
32
32
|
runOwner: (runId: string) => string | null | undefined;
|
|
33
|
-
/**
|
|
33
|
+
/** Whether only the owner operates the run. */
|
|
34
34
|
runOwnerOnly: (runId: string) => boolean;
|
|
35
|
-
/**
|
|
35
|
+
/** Without sign-in and access token, settings are readable only from the local machine. */
|
|
36
36
|
settingsGuarded: () => boolean;
|
|
37
37
|
external: { open: () => boolean; set: (value: boolean) => Promise<void> };
|
|
38
38
|
}
|
|
@@ -41,7 +41,7 @@ const userOf = (access: AccessContext): ChatUser | undefined => access.user ? {
|
|
|
41
41
|
|
|
42
42
|
const userIdOf = (access: AccessContext): string | null => access.user?.id ?? null;
|
|
43
43
|
|
|
44
|
-
/**
|
|
44
|
+
/** The UI context names the run open when sending; it too is an access to that run. */
|
|
45
45
|
const locatedRun = (userLocation: unknown): string | undefined => {
|
|
46
46
|
const named = typeof userLocation === "object" && userLocation !== null && "runId" in userLocation
|
|
47
47
|
? (userLocation as { runId: unknown }).runId : undefined;
|
|
@@ -52,7 +52,7 @@ const messageOf = (text: string | undefined, attachments: unknown) => {
|
|
|
52
52
|
try {
|
|
53
53
|
const trimmed = text?.trim() ?? "";
|
|
54
54
|
const parsed = parseChatAttachments(attachments);
|
|
55
|
-
if (!trimmed && parsed.length === 0) throw new Error("Text
|
|
55
|
+
if (!trimmed && parsed.length === 0) throw new Error("Text or attachments are missing");
|
|
56
56
|
return { text: trimmed, attachments: parsed };
|
|
57
57
|
} catch (error) {
|
|
58
58
|
throw new DomainError("invalid-message", error instanceof Error ? error.message : String(error), 400);
|
|
@@ -61,15 +61,15 @@ const messageOf = (text: string | undefined, attachments: unknown) => {
|
|
|
61
61
|
|
|
62
62
|
const TECHNICAL_ATTACHMENT_ERRORS = ["attachment-model-unsupported", "attachment-tools-required", "attachments-unsupported"];
|
|
63
63
|
|
|
64
|
-
/**
|
|
64
|
+
/** Without runs.inspect, the user gets only the general notice on technical errors, as before. */
|
|
65
65
|
const guardedForUser = async <T>(access: AccessContext, work: () => Promise<T>): Promise<T> => {
|
|
66
66
|
try {
|
|
67
67
|
return await work();
|
|
68
68
|
} catch (error) {
|
|
69
69
|
if (access.can("runs.inspect")) throw error;
|
|
70
70
|
const technical = error instanceof DomainError && TECHNICAL_ATTACHMENT_ERRORS.includes(error.code);
|
|
71
|
-
if (technical) throw new DomainError(error.code, "
|
|
72
|
-
if (!(error instanceof DomainError) || error.status >= 500) throw new DomainError("request-failed", "
|
|
71
|
+
if (technical) throw new DomainError(error.code, "This agent cannot process the attached file.", error.status);
|
|
72
|
+
if (!(error instanceof DomainError) || error.status >= 500) throw new DomainError("request-failed", "The request could not be processed.", 500);
|
|
73
73
|
throw error;
|
|
74
74
|
}
|
|
75
75
|
};
|
|
@@ -82,10 +82,10 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
82
82
|
return sessions.get(runId);
|
|
83
83
|
};
|
|
84
84
|
const assertMaySend = (access: AccessContext, runId: string) => {
|
|
85
|
-
if (!access.can("runs.create") && !sessions.hasRun?.(runId) && !global?.isCoordinator(runId)) throw new DomainError("access-denied", "
|
|
85
|
+
if (!access.can("runs.create") && !sessions.hasRun?.(runId) && !global?.isCoordinator(runId)) throw new DomainError("access-denied", "Free runs are not enabled for this access.", 403);
|
|
86
86
|
};
|
|
87
87
|
const assertSettingsReachable = (local: boolean) => {
|
|
88
|
-
if (!local && sources.settingsGuarded()) throw new DomainError("settings-local-only", "
|
|
88
|
+
if (!local && sources.settingsGuarded()) throw new DomainError("settings-local-only", "Settings are only available locally or with an access token", 403);
|
|
89
89
|
};
|
|
90
90
|
return [
|
|
91
91
|
implement(coreContracts.runs.list, (_input, { access }) => sessions.list(runListScope(access, policy))),
|
|
@@ -102,14 +102,14 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
102
102
|
implement(coreContracts.chat.sendToActor, async ({ runId, actorId, text, attachments }, { access }) => {
|
|
103
103
|
assertMaySend(access, runId);
|
|
104
104
|
const current = await session(access, runId, "write");
|
|
105
|
-
if (!current.sendToActor) throw new DomainError("actor-send-unavailable", "Actor
|
|
105
|
+
if (!current.sendToActor) throw new DomainError("actor-send-unavailable", "Actor messages are not available", 404);
|
|
106
106
|
const message = messageOf(text, attachments);
|
|
107
107
|
await guardedForUser(access, () => current.sendToActor!(actorId, message.text, message.attachments, userOf(access)));
|
|
108
108
|
return null;
|
|
109
109
|
}),
|
|
110
110
|
implement(coreContracts.chat.start, async ({ runId, entry, input }, { access }) => {
|
|
111
111
|
const trimmed = entry.trim();
|
|
112
|
-
if (!canStartEntry(access, trimmed)) throw new DomainError("access-denied", "
|
|
112
|
+
if (!canStartEntry(access, trimmed)) throw new DomainError("access-denied", "This setup is not enabled for this access.", 403);
|
|
113
113
|
const current = await session(access, runId, "write");
|
|
114
114
|
current.start(trimmed, input === undefined ? null : input, userOf(access));
|
|
115
115
|
return null;
|
|
@@ -121,13 +121,13 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
121
121
|
}),
|
|
122
122
|
implement(coreContracts.chat.capabilities, async ({ runId, actor }, { access }) => {
|
|
123
123
|
const current = await session(access, runId, "read");
|
|
124
|
-
if (!current.capabilities) throw new DomainError("capabilities-unavailable", "
|
|
124
|
+
if (!current.capabilities) throw new DomainError("capabilities-unavailable", "Model capabilities are not available", 404);
|
|
125
125
|
const capabilities = await current.capabilities(actor ?? "primary", userIdOf(access));
|
|
126
126
|
return access.can("runs.inspect") ? capabilities : { ...capabilities, model: "" };
|
|
127
127
|
}),
|
|
128
128
|
implement(coreContracts.chat.actorHistory, async ({ runId }, { access }) => {
|
|
129
129
|
const current = await session(access, runId, "read");
|
|
130
|
-
if (!current.actorConversations) throw new DomainError("actor-history-unavailable", "Actor
|
|
130
|
+
if (!current.actorConversations) throw new DomainError("actor-history-unavailable", "Actor histories are not available", 404);
|
|
131
131
|
return accessibleActorConversations(current.actorConversations(), access);
|
|
132
132
|
}),
|
|
133
133
|
implement(coreContracts.startOptions.list, ({ runId }, { access }) =>
|
|
@@ -141,7 +141,7 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
141
141
|
implement(coreContracts.transfer.export, ({ runId }) => sessions.exportRun(runId)),
|
|
142
142
|
implement(coreContracts.transfer.import, ({ archive, workspacePath }) => {
|
|
143
143
|
const decoded = Buffer.from(archive, "base64");
|
|
144
|
-
if (decoded.length === 0) throw new DomainError("run-transfer-invalid", "
|
|
144
|
+
if (decoded.length === 0) throw new DomainError("run-transfer-invalid", "The archive is empty.", 400);
|
|
145
145
|
return sessions.importRun(decoded, workspacePath);
|
|
146
146
|
}),
|
|
147
147
|
implement(coreContracts.settings.read, (_input, { local }) => { assertSettingsReachable(local); return sessions.settings(); }),
|
|
@@ -150,7 +150,7 @@ export const coreMethods = (sources: CoreMethodSources): MethodContribution[] =>
|
|
|
150
150
|
implement(coreContracts.settings.titlesSave, ({ value }, { local }) => { assertSettingsReachable(local); return sessions.saveTitleModelSettings(value); }),
|
|
151
151
|
implement(coreContracts.plugins.bootstrap, (_input, { access }) => ({ ...sources.plugins.publicProfile(access), version: sources.version })),
|
|
152
152
|
implement(coreContracts.external.set, async ({ state }, { local }) => {
|
|
153
|
-
if (!local) throw new DomainError("local-only", "
|
|
153
|
+
if (!local) throw new DomainError("local-only", "Can only be switched locally", 403);
|
|
154
154
|
await sources.external.set(state === "on");
|
|
155
155
|
return { external: sources.external.open() };
|
|
156
156
|
}),
|
|
@@ -4,7 +4,7 @@ import { writeJson } from "../plugin-support/http.js";
|
|
|
4
4
|
import { ATTACHMENT_CONTENT_PATH } from "./contracts.js";
|
|
5
5
|
import { assertRunRights, type RunAccessPolicy } from "./rights.js";
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/** Attachments are delivery: a GET with the media type, inline for images and videos. */
|
|
8
8
|
export const attachmentContentRoute = (sessions: ChatSessionProvider, policy: RunAccessPolicy): HttpRouteContribution => ({
|
|
9
9
|
id: "ragents.chat.attachment-content",
|
|
10
10
|
requiredRights: [],
|
|
@@ -17,7 +17,7 @@ export const attachmentContentRoute = (sessions: ChatSessionProvider, policy: Ru
|
|
|
17
17
|
try {
|
|
18
18
|
assertRunRights(access, runId, "read", policy);
|
|
19
19
|
const session = await sessions.get(runId);
|
|
20
|
-
if (!session.attachment) throw new DomainError("attachments-unavailable", "
|
|
20
|
+
if (!session.attachment) throw new DomainError("attachments-unavailable", "Attachments are not available", 404);
|
|
21
21
|
const { attachment, content } = session.attachment(artifactId);
|
|
22
22
|
const inline = !url.searchParams.has("download")
|
|
23
23
|
&& (attachment.mediaType.startsWith("image/") || attachment.mediaType.startsWith("video/"));
|