@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
|
@@ -30,11 +30,11 @@ export interface RpcConnectionOptions {
|
|
|
30
30
|
access: AccessContext;
|
|
31
31
|
local: boolean;
|
|
32
32
|
peer: RpcPeer;
|
|
33
|
-
/**
|
|
33
|
+
/** Without an event stream, notifications do not reach the client; subscriptions are then rejected. */
|
|
34
34
|
streamless?: boolean;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
/**
|
|
37
|
+
/** A client's connection: holds its subscriptions and is the way back for requests from the server. */
|
|
38
38
|
export class RpcConnection implements MethodConnection {
|
|
39
39
|
readonly id: string;
|
|
40
40
|
readonly access: AccessContext;
|
|
@@ -63,8 +63,8 @@ export class RpcConnection implements MethodConnection {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
call<C extends OperationContract>(contract: C, input: OperationInput<C>, options?: RpcCallOptions): Promise<OperationResult<C>> {
|
|
66
|
-
if (contract.implementedBy !== "client") return Promise.reject(new Error(`
|
|
67
|
-
if (this.streamless) return Promise.reject(new DomainError("stream-required", "
|
|
66
|
+
if (contract.implementedBy !== "client") return Promise.reject(new Error(`The operation ${contract.id} is executed by the server, not by the client`));
|
|
67
|
+
if (this.streamless) return Promise.reject(new DomainError("stream-required", "The callback to the client needs an event stream.", 409));
|
|
68
68
|
return this.peer.call(contract, input, options);
|
|
69
69
|
}
|
|
70
70
|
|
|
@@ -87,7 +87,7 @@ export class RpcConnection implements MethodConnection {
|
|
|
87
87
|
export interface RpcDispatcherOptions {
|
|
88
88
|
methods: MethodContributionRegistry;
|
|
89
89
|
channels: ChannelContributionRegistry;
|
|
90
|
-
/**
|
|
90
|
+
/** Every method and every channel with runId is additionally checked against the run's ownership; a method with runs.write operates it. */
|
|
91
91
|
assertRunReachable?: (access: AccessContext, runId: string, operates: boolean) => void;
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -97,7 +97,7 @@ const runIdOf = (input: unknown): string | undefined => {
|
|
|
97
97
|
return typeof value === "string" ? value : undefined;
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
-
/**
|
|
100
|
+
/** Executes a connection's requests against the registered contracts: rights, input, execution, response. */
|
|
101
101
|
export class RpcDispatcher {
|
|
102
102
|
readonly #options: RpcDispatcherOptions;
|
|
103
103
|
|
|
@@ -110,13 +110,13 @@ export class RpcDispatcher {
|
|
|
110
110
|
if (method === RPC_METHODS.unsubscribe) return this.#unsubscribe(connection, params);
|
|
111
111
|
const found = this.#options.methods.find(method);
|
|
112
112
|
if (!found || found.contribution.contract.implementedBy === "client") {
|
|
113
|
-
throw new RpcError(RPC_ERROR_CODES.methodNotFound, `
|
|
113
|
+
throw new RpcError(RPC_ERROR_CODES.methodNotFound, `Unknown method: ${method}`);
|
|
114
114
|
}
|
|
115
115
|
const { contract, execute } = found.contribution;
|
|
116
116
|
assertRights(connection.access, contract.rights);
|
|
117
117
|
const input = params === undefined ? {} : params;
|
|
118
118
|
if (!Value.Check(contract.input, input)) {
|
|
119
|
-
throw new RpcError(RPC_ERROR_CODES.invalidParams, `
|
|
119
|
+
throw new RpcError(RPC_ERROR_CODES.invalidParams, `Invalid input for ${method}: ${schemaComplaints(contract.input, input, "params")}`);
|
|
120
120
|
}
|
|
121
121
|
const target = runIdOf(input);
|
|
122
122
|
if (target !== undefined) this.#options.assertRunReachable?.(connection.access, target, contract.rights.includes("runs.write"));
|
|
@@ -130,27 +130,27 @@ export class RpcDispatcher {
|
|
|
130
130
|
const plain = result === undefined ? null : JSON.parse(JSON.stringify(result)) as unknown;
|
|
131
131
|
if (!Value.Check(contract.result, plain)) {
|
|
132
132
|
const complaint = schemaComplaints(contract.result, plain, "result");
|
|
133
|
-
console.error(`
|
|
134
|
-
throw new RpcError(RPC_ERROR_CODES.internal, `
|
|
133
|
+
console.error(`The response of ${method} violates its contract: ${complaint}`);
|
|
134
|
+
throw new RpcError(RPC_ERROR_CODES.internal, `The response of ${method} violates its contract: ${complaint}`);
|
|
135
135
|
}
|
|
136
136
|
return plain;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
async #subscribe(connection: RpcConnection, params: unknown): Promise<RpcSubscribeResult> {
|
|
140
140
|
const { channel, params: channelParams } = (params ?? {}) as Partial<RpcSubscribeParams>;
|
|
141
|
-
if (typeof channel !== "string") throw new RpcError(RPC_ERROR_CODES.invalidParams, "channel
|
|
142
|
-
if (connection.streamless) throw new DomainError("stream-required", "
|
|
141
|
+
if (typeof channel !== "string") throw new RpcError(RPC_ERROR_CODES.invalidParams, "channel is missing");
|
|
142
|
+
if (connection.streamless) throw new DomainError("stream-required", "Subscriptions need an event stream.", 409);
|
|
143
143
|
const found = this.#options.channels.find(channel);
|
|
144
|
-
if (!found) throw new DomainError("unknown-channel", `
|
|
144
|
+
if (!found) throw new DomainError("unknown-channel", `Unknown event channel: ${channel}`, 400);
|
|
145
145
|
const { contract, open } = found.contribution;
|
|
146
146
|
assertRights(connection.access, contract.rights);
|
|
147
147
|
const input = channelParams === undefined ? {} : channelParams;
|
|
148
148
|
if (!Value.Check(contract.params, input)) {
|
|
149
|
-
throw new RpcError(RPC_ERROR_CODES.invalidParams, `
|
|
149
|
+
throw new RpcError(RPC_ERROR_CODES.invalidParams, `Invalid parameters for ${channel}: ${schemaComplaints(contract.params, input, "params")}`);
|
|
150
150
|
}
|
|
151
151
|
const target = runIdOf(input);
|
|
152
152
|
if (target !== undefined) this.#options.assertRunReachable?.(connection.access, target, false);
|
|
153
|
-
if (connection.subscriptions.size >= MAX_SUBSCRIPTIONS) throw new DomainError("too-many-channels", "
|
|
153
|
+
if (connection.subscriptions.size >= MAX_SUBSCRIPTIONS) throw new DomainError("too-many-channels", "Too many event channels on one connection.", 429);
|
|
154
154
|
const subscription = randomUUID();
|
|
155
155
|
const buffered: unknown[] = [];
|
|
156
156
|
let opening = true;
|
|
@@ -163,17 +163,17 @@ export class RpcDispatcher {
|
|
|
163
163
|
opening = false;
|
|
164
164
|
if (connection.closed) {
|
|
165
165
|
stop();
|
|
166
|
-
throw new DomainError("connection-closed", "
|
|
166
|
+
throw new DomainError("connection-closed", "The event connection was closed.", 410);
|
|
167
167
|
}
|
|
168
168
|
connection.subscriptions.set(subscription, stop);
|
|
169
|
-
//
|
|
169
|
+
// First the response to the subscription, then the messages created while opening.
|
|
170
170
|
setTimeout(() => { if (connection.subscriptions.has(subscription)) for (const message of buffered) send(message); }, 0);
|
|
171
171
|
return { subscription };
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
#unsubscribe(connection: RpcConnection, params: unknown): null {
|
|
175
175
|
const { subscription } = (params ?? {}) as Partial<RpcUnsubscribeParams>;
|
|
176
|
-
if (typeof subscription !== "string") throw new RpcError(RPC_ERROR_CODES.invalidParams, "subscription
|
|
176
|
+
if (typeof subscription !== "string") throw new RpcError(RPC_ERROR_CODES.invalidParams, "subscription is missing");
|
|
177
177
|
const stop = connection.subscriptions.get(subscription);
|
|
178
178
|
connection.subscriptions.delete(subscription);
|
|
179
179
|
stop?.();
|
|
@@ -183,5 +183,5 @@ export class RpcDispatcher {
|
|
|
183
183
|
|
|
184
184
|
export const assertRights = (access: AccessContext, rights: readonly string[]): void => {
|
|
185
185
|
const missing = rights.find((right) => !access.can(right));
|
|
186
|
-
if (missing) throw new DomainError("access-denied", `
|
|
186
|
+
if (missing) throw new DomainError("access-denied", `The right ${missing} is missing.`, 403);
|
|
187
187
|
};
|
|
@@ -32,7 +32,7 @@ export interface RpcHttpTransportOptions {
|
|
|
32
32
|
maxBodyBytes?: number;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
/** JSON-RPC
|
|
35
|
+
/** JSON-RPC over HTTP: requests via POST, notifications and server requests over one SSE stream per connection. */
|
|
36
36
|
export class RpcHttpTransport {
|
|
37
37
|
readonly #dispatcher: RpcDispatcher;
|
|
38
38
|
readonly #maxBodyBytes: number;
|
|
@@ -51,7 +51,7 @@ export class RpcHttpTransport {
|
|
|
51
51
|
if (url.pathname === RPC_STREAM_PATH) {
|
|
52
52
|
if (request.method !== "GET") {
|
|
53
53
|
response.setHeader("Allow", "GET");
|
|
54
|
-
writeJson(response, 405, { error: "
|
|
54
|
+
writeJson(response, 405, { error: "Method not allowed" });
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
57
|
this.#openStream(request, response, access, local);
|
|
@@ -60,7 +60,7 @@ export class RpcHttpTransport {
|
|
|
60
60
|
if (url.pathname !== RPC_PATH) return false;
|
|
61
61
|
if (request.method !== "POST") {
|
|
62
62
|
response.setHeader("Allow", "POST");
|
|
63
|
-
writeJson(response, 405, { error: "
|
|
63
|
+
writeJson(response, 405, { error: "Method not allowed" });
|
|
64
64
|
return true;
|
|
65
65
|
}
|
|
66
66
|
await this.#post(request, response, access, local);
|
|
@@ -68,7 +68,7 @@ export class RpcHttpTransport {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
close(): void {
|
|
71
|
-
for (const stream of [...this.#streams.values()]) this.#end(stream, "
|
|
71
|
+
for (const stream of [...this.#streams.values()]) this.#end(stream, "The server is shutting down");
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
#openStream(request: IncomingMessage, response: ServerResponse, access: AccessContext, local: boolean): void {
|
|
@@ -82,7 +82,7 @@ export class RpcHttpTransport {
|
|
|
82
82
|
this.#streams.set(id, stream);
|
|
83
83
|
response.writeHead(200, { "Content-Type": "text/event-stream", "Cache-Control": "no-cache", Connection: "keep-alive" });
|
|
84
84
|
write(`event: hello\ndata: ${JSON.stringify({ connection: id })}\n\n`);
|
|
85
|
-
request.on("close", () => this.#end(stream, "
|
|
85
|
+
request.on("close", () => this.#end(stream, "The event stream was closed"));
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
#end(stream: StreamConnection, reason: string): void {
|
|
@@ -97,8 +97,8 @@ export class RpcHttpTransport {
|
|
|
97
97
|
const id = Array.isArray(header) ? header[0] : header;
|
|
98
98
|
if (!id) return undefined;
|
|
99
99
|
const stream = this.#streams.get(id);
|
|
100
|
-
if (!stream) throw new DomainRejection(404, "unknown-connection", "
|
|
101
|
-
if (stream.connection.userId !== (access.user?.id ?? null)) throw new DomainRejection(403, "foreign-connection", "
|
|
100
|
+
if (!stream) throw new DomainRejection(404, "unknown-connection", "The event connection is unknown or closed.");
|
|
101
|
+
if (stream.connection.userId !== (access.user?.id ?? null)) throw new DomainRejection(403, "foreign-connection", "The event connection belongs to another user.");
|
|
102
102
|
return stream;
|
|
103
103
|
}
|
|
104
104
|
|
|
@@ -111,11 +111,11 @@ export class RpcHttpTransport {
|
|
|
111
111
|
writeJson(response, 413, rpcFailure(null, RPC_ERROR_CODES.invalidRequest, error.message));
|
|
112
112
|
return;
|
|
113
113
|
}
|
|
114
|
-
writeJson(response, 400, rpcFailure(null, RPC_ERROR_CODES.parse, "
|
|
114
|
+
writeJson(response, 400, rpcFailure(null, RPC_ERROR_CODES.parse, "The request does not contain valid JSON"));
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
if (!isRpcMessage(message)) {
|
|
118
|
-
writeJson(response, 400, rpcFailure(null, RPC_ERROR_CODES.invalidRequest, "
|
|
118
|
+
writeJson(response, 400, rpcFailure(null, RPC_ERROR_CODES.invalidRequest, "The message is not valid JSON-RPC"));
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
121
121
|
let stream: StreamConnection | undefined;
|
|
@@ -130,7 +130,7 @@ export class RpcHttpTransport {
|
|
|
130
130
|
}
|
|
131
131
|
if (!isRpcRequest(message)) {
|
|
132
132
|
if (!stream) {
|
|
133
|
-
writeJson(response, 409, rpcFailure(null, RPC_ERROR_CODES.invalidRequest, "
|
|
133
|
+
writeJson(response, 409, rpcFailure(null, RPC_ERROR_CODES.invalidRequest, "Notifications and responses need an event stream."));
|
|
134
134
|
return;
|
|
135
135
|
}
|
|
136
136
|
stream.connection.peer.receive(message);
|
|
@@ -141,7 +141,7 @@ export class RpcHttpTransport {
|
|
|
141
141
|
await this.#answer(request, response, message, stream, access, local);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
/**
|
|
144
|
+
/** A request gets its own peer, whose response is the HTTP response; subscriptions land on the stream. */
|
|
145
145
|
#answer(request: IncomingMessage, response: ServerResponse, message: RpcMessage, stream: StreamConnection | undefined, access: AccessContext, local: boolean): Promise<void> {
|
|
146
146
|
return new Promise<void>((resolve) => {
|
|
147
147
|
let answered = false;
|
|
@@ -16,7 +16,7 @@ export interface StdioTransport {
|
|
|
16
16
|
close: (reason: string) => void;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
/** JSON-RPC
|
|
19
|
+
/** JSON-RPC over stdin and stdout, one message per line; the caller counts as trusted. */
|
|
20
20
|
export const startStdioTransport = (options: StdioTransportOptions): StdioTransport => {
|
|
21
21
|
const write = (message: unknown) => new Promise<void>((resolve, reject) => {
|
|
22
22
|
options.output.write(`${JSON.stringify(message)}\n`, (error) => error ? reject(error) : resolve());
|
|
@@ -36,9 +36,9 @@ export const startStdioTransport = (options: StdioTransportOptions): StdioTransp
|
|
|
36
36
|
try {
|
|
37
37
|
peer.receive(JSON.parse(line));
|
|
38
38
|
} catch {
|
|
39
|
-
void write(rpcFailure(null, RPC_ERROR_CODES.parse, "
|
|
39
|
+
void write(rpcFailure(null, RPC_ERROR_CODES.parse, "The line does not contain valid JSON")).catch(() => undefined);
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
lines.on("close", () => close("
|
|
42
|
+
lines.on("close", () => close("The input was closed"));
|
|
43
43
|
return { connection, closed, close };
|
|
44
44
|
};
|
|
@@ -5,12 +5,12 @@ export function preparedRunInput(history: readonly RunPreparationMessage[], text
|
|
|
5
5
|
const current = text.trim();
|
|
6
6
|
const messages = [...history, ...(current || attachments?.length ? [{ role: "user" as const, text: current, attachments }] : [])];
|
|
7
7
|
const files = messages.flatMap((message) => message.role === "user" ? message.attachments ?? [] : []);
|
|
8
|
-
if (!messages.length) throw new Error("
|
|
9
|
-
const prepared = history.length === 0 ? current : "
|
|
10
|
-
+ "
|
|
11
|
-
+ messages.map((message) => `${message.role === "user" ? "
|
|
8
|
+
if (!messages.length) throw new Error("The task is empty.");
|
|
9
|
+
const prepared = history.length === 0 ? current : "Carry out the task worked out in the following preparation conversation now. "
|
|
10
|
+
+ "The user's latest statements apply. Assistant responses are suggestions, not work already done.\n\n"
|
|
11
|
+
+ messages.map((message) => `${message.role === "user" ? "User" : "Assistant"}:\n${message.text}`).join("\n\n");
|
|
12
12
|
return {
|
|
13
|
-
text: skillName ? `
|
|
13
|
+
text: skillName ? `Use the skill ${skillName} for this task.\n\n${prepared}` : prepared,
|
|
14
14
|
attachments: files.length ? files : undefined,
|
|
15
15
|
};
|
|
16
16
|
}
|
|
@@ -15,26 +15,26 @@ const PREPARATION_TIMEOUT_MS = 120_000;
|
|
|
15
15
|
const invalid = (message: string): never => { throw new DomainError("invalid-preparation", message, 400); };
|
|
16
16
|
|
|
17
17
|
export const parseRunPreparationRequest = (value: unknown): RunPreparationRequest => {
|
|
18
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return invalid("
|
|
18
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return invalid("Preparation requires a message history.");
|
|
19
19
|
const { messages: input, skillName } = value as Record<string, unknown>;
|
|
20
20
|
if (skillName !== undefined && (typeof skillName !== "string" || !/^[a-z0-9][a-z0-9-]*$/.test(skillName))) {
|
|
21
|
-
return invalid("
|
|
21
|
+
return invalid("The selected skill name is invalid.");
|
|
22
22
|
}
|
|
23
23
|
if (!Array.isArray(input) || input.length === 0 || input.length > MAX_RUN_PREPARATION_MESSAGES || input.length % 2 === 0) {
|
|
24
|
-
return invalid(`
|
|
24
|
+
return invalid(`The history needs at most ${MAX_RUN_PREPARATION_MESSAGES} alternating messages and must start and end with a user message.`);
|
|
25
25
|
}
|
|
26
26
|
let totalText = 0;
|
|
27
27
|
const messages = input.map((value, index): RunPreparationMessage => {
|
|
28
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return invalid(`
|
|
28
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return invalid(`Message ${index + 1} is invalid.`);
|
|
29
29
|
const { role, text, attachments: supplied } = value as Record<string, unknown>;
|
|
30
|
-
if ((role !== "user" && role !== "assistant") || role !== (index % 2 === 0 ? "user" : "assistant")) return invalid("
|
|
31
|
-
if (typeof text !== "string" || text.length > MAX_RUN_PREPARATION_TEXT_CHARS) return invalid(`
|
|
30
|
+
if ((role !== "user" && role !== "assistant") || role !== (index % 2 === 0 ? "user" : "assistant")) return invalid("User and model messages must alternate.");
|
|
31
|
+
if (typeof text !== "string" || text.length > MAX_RUN_PREPARATION_TEXT_CHARS) return invalid(`A message may contain at most ${MAX_RUN_PREPARATION_TEXT_CHARS} characters.`);
|
|
32
32
|
totalText += text.length;
|
|
33
|
-
if (totalText > MAX_RUN_PREPARATION_TOTAL_TEXT_CHARS) return invalid(`
|
|
34
|
-
if (role === "assistant" && supplied !== undefined) return invalid("
|
|
33
|
+
if (totalText > MAX_RUN_PREPARATION_TOTAL_TEXT_CHARS) return invalid(`The history may contain at most ${MAX_RUN_PREPARATION_TOTAL_TEXT_CHARS} text characters in total.`);
|
|
34
|
+
if (role === "assistant" && supplied !== undefined) return invalid("Only user messages may contain attachments.");
|
|
35
35
|
try {
|
|
36
36
|
const attachments = parseChatAttachments(supplied);
|
|
37
|
-
if (!text.trim() && attachments.length === 0) return invalid("
|
|
37
|
+
if (!text.trim() && attachments.length === 0) return invalid("A message requires text or attachments.");
|
|
38
38
|
return { role, text, ...(attachments.length ? { attachments } : {}) };
|
|
39
39
|
} catch (error) {
|
|
40
40
|
if (error instanceof DomainError) throw error;
|
|
@@ -43,7 +43,7 @@ export const parseRunPreparationRequest = (value: unknown): RunPreparationReques
|
|
|
43
43
|
});
|
|
44
44
|
try { parseChatAttachments(messages.flatMap((message) => message.attachments ?? [])); }
|
|
45
45
|
catch (error) { return invalid(error instanceof Error ? error.message : String(error)); }
|
|
46
|
-
if (Buffer.byteLength(JSON.stringify({ messages }), "utf8") > MAX_CHAT_REQUEST_BYTES) return invalid("
|
|
46
|
+
if (Buffer.byteLength(JSON.stringify({ messages }), "utf8") > MAX_CHAT_REQUEST_BYTES) return invalid("The message history is too large.");
|
|
47
47
|
return { messages, ...(typeof skillName === "string" ? { skillName } : {}) };
|
|
48
48
|
};
|
|
49
49
|
|
|
@@ -59,7 +59,7 @@ export const prepareRunMessage = async (options: {
|
|
|
59
59
|
signal.throwIfAborted();
|
|
60
60
|
const { runtime, selection } = options;
|
|
61
61
|
const model = runtime.getModel(selection.provider, selection.model);
|
|
62
|
-
if (!model) throw new DomainError("preparation-model-unavailable", `
|
|
62
|
+
if (!model) throw new DomainError("preparation-model-unavailable", `The model ${selection.provider}/${selection.model} is not configured.`, 400);
|
|
63
63
|
const messages: Message[] = [];
|
|
64
64
|
for (const message of options.request.messages) {
|
|
65
65
|
signal.throwIfAborted();
|
|
@@ -73,7 +73,7 @@ export const prepareRunMessage = async (options: {
|
|
|
73
73
|
}
|
|
74
74
|
try {
|
|
75
75
|
const prepared = await prepareInputAttachments({ prompt: message.text, tools: [],
|
|
76
|
-
storeAttachment: () => Promise.reject(new Error("
|
|
76
|
+
storeAttachment: () => Promise.reject(new Error("The preparation chat has no workspace.")),
|
|
77
77
|
attachments: message.attachments?.map((attachment) => ({ name: attachment.name, mediaType: attachment.mediaType,
|
|
78
78
|
content: Buffer.from(attachment.data, "base64") })),
|
|
79
79
|
}, model.input);
|
|
@@ -81,20 +81,20 @@ export const prepareRunMessage = async (options: {
|
|
|
81
81
|
? [...(prepared.prompt ? [{ type: "text" as const, text: prepared.prompt }] : []), ...prepared.attachments]
|
|
82
82
|
: prepared.prompt });
|
|
83
83
|
} catch (error) {
|
|
84
|
-
throw new DomainError("preparation-attachment-unsupported", `
|
|
84
|
+
throw new DomainError("preparation-attachment-unsupported", `The attachment cannot be used in the preparation chat: ${error instanceof Error ? error.message : String(error)}`, 400);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
signal.throwIfAborted();
|
|
88
|
-
const systemPrompt = [options.prompt, options.request.skillName ? `
|
|
88
|
+
const systemPrompt = [options.prompt, options.request.skillName ? `Selected skill: ${options.request.skillName}` : ""].filter(Boolean).join("\n\n");
|
|
89
89
|
let startRequested = false;
|
|
90
90
|
const startRun: AgentTool = {
|
|
91
|
-
name: "start_run", label: "
|
|
92
|
-
description: "
|
|
91
|
+
name: "start_run", label: "Start run",
|
|
92
|
+
description: "Start the discussed run, exclusively after the user's explicit go-ahead to execute, in whatever words. No fixed wording is needed. A confirmation of a detail, a quotation, or a question about capabilities is not enough. The host takes the task, skill, and attachments from the conversation as well as the start options.",
|
|
93
93
|
parameters: Type.Object({}),
|
|
94
94
|
execute: async () => {
|
|
95
95
|
signal.throwIfAborted();
|
|
96
96
|
startRequested = true;
|
|
97
|
-
return { content: [{ type: "text", text: "Start
|
|
97
|
+
return { content: [{ type: "text", text: "Start marked for handover. Once this response is complete, the UI takes over the task." }], details: {} };
|
|
98
98
|
},
|
|
99
99
|
};
|
|
100
100
|
if (!(await runtime.checkAuth(model.provider))) throw new Error(`No key is configured for the provider ${model.provider}.`);
|
|
@@ -108,7 +108,7 @@ export const prepareRunMessage = async (options: {
|
|
|
108
108
|
try {
|
|
109
109
|
signal.throwIfAborted();
|
|
110
110
|
const latest = messages.at(-1)!;
|
|
111
|
-
if (latest.role !== "user") throw new Error("
|
|
111
|
+
if (latest.role !== "user") throw new Error("The last message must come from the user.");
|
|
112
112
|
const content = latest.content;
|
|
113
113
|
await agent.prompt({ role: "user", timestamp: Date.now(), content: typeof content === "string"
|
|
114
114
|
? [{ type: "text", text: content }]
|
|
@@ -117,20 +117,20 @@ export const prepareRunMessage = async (options: {
|
|
|
117
117
|
const completed = agent.state.messages.at(-1);
|
|
118
118
|
if (!completed || completed.role !== "assistant" || completed.stopReason !== "stop") {
|
|
119
119
|
throw new DomainError("preparation-model-failed", completed?.role === "assistant"
|
|
120
|
-
? completed.errorMessage ?? `
|
|
121
|
-
: "
|
|
120
|
+
? completed.errorMessage ?? `The preparation was not answered completely (${completed.stopReason}).`
|
|
121
|
+
: "The preparation was not answered completely.", 502);
|
|
122
122
|
}
|
|
123
123
|
if (startRequested) return { kind: "start", input: preparedRunInput(options.request.messages, "", undefined, options.request.skillName) };
|
|
124
124
|
const text = completed.content.flatMap((part) => part.type === "text" ? [part.text] : []).join("\n").trim();
|
|
125
|
-
if (text.length > MAX_RUN_PREPARATION_TEXT_CHARS) throw new DomainError("preparation-response-too-large", "
|
|
125
|
+
if (text.length > MAX_RUN_PREPARATION_TEXT_CHARS) throw new DomainError("preparation-response-too-large", "The model response is too long for the preparation. Please narrow down the task.", 502);
|
|
126
126
|
return { kind: "reply", text };
|
|
127
127
|
} finally {
|
|
128
128
|
signal.removeEventListener("abort", abort);
|
|
129
129
|
}
|
|
130
130
|
} catch (error) {
|
|
131
|
-
if (options.signal.aborted) throw new DomainError("preparation-aborted", "
|
|
132
|
-
if (signal.aborted) throw new DomainError("preparation-timeout", "
|
|
131
|
+
if (options.signal.aborted) throw new DomainError("preparation-aborted", "The preparation was cancelled.", 499);
|
|
132
|
+
if (signal.aborted) throw new DomainError("preparation-timeout", "The preparation took too long. Please try again.", 504);
|
|
133
133
|
if (error instanceof DomainError) throw error;
|
|
134
|
-
throw new DomainError("preparation-model-failed", `
|
|
134
|
+
throw new DomainError("preparation-model-failed", `The preparation failed: ${error instanceof Error ? error.message : String(error)}`, 502);
|
|
135
135
|
}
|
|
136
136
|
};
|