@schlenkr/ragents 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +9 -39
- 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 +32 -29
- package/apps/server/src/api/core-methods.ts +21 -19
- 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 +8 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +63 -58
- 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 +25 -24
- package/apps/server/src/ragents/global-chat.ts +14 -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 +51 -49
- 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-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +64 -55
- package/apps/web/dist/help/guide-clients.md +62 -52
- 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 +1997 -942
- package/apps/web/dist/help/mini-app.css +30 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +26 -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 +29 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +34 -27
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +256 -228
- package/bundles/ragents.actor-programs/server/index.js.map +4 -4
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -4
- 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-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
- 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 +4 -4
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +3 -3
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +99 -99
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +83 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/core/tools/bash.d.ts +1 -1
- 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/core/tools/bash.ts +1 -1
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/index.ts +1 -0
- package/packages/ragents/src/plugin-host.ts +162 -116
- package/packages/ragents/src/plugin-types.ts +29 -10
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +35 -7
- 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 +37 -31
- 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 +31 -0
- 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/index.ts +2 -0
- 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 -8
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
- 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 +29 -28
- 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 +10 -10
- 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 +8 -8
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +8 -5
- package/plugins/ragents.workspace/server/index.ts +5 -4
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
- package/apps/web/dist/assets/runPanel-ZT6TPDLM.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/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
- /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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ConnectionStateName } from "../ui/state-vocabulary";
|
|
2
2
|
import type { ConnectionView, MissingEnvironment } from "./contract";
|
|
3
3
|
|
|
4
|
-
/**
|
|
4
|
+
/** The state of a server in the vocabulary of the pages; a connected local profile is not "connected" but ready. */
|
|
5
5
|
export const connectionState = (connection: ConnectionView): ConnectionStateName => {
|
|
6
6
|
switch (connection.state.kind) {
|
|
7
7
|
case "stopped": return "stopped";
|
|
@@ -15,12 +15,12 @@ export const connectionState = (connection: ConnectionView): ConnectionStateName
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
/**
|
|
18
|
+
/** Why a missing environment variable holds up the start: which one, what the profile needs it for, and where its value belongs. */
|
|
19
19
|
const missingEnvironmentDetail = (missing: MissingEnvironment): string =>
|
|
20
|
-
`
|
|
21
|
-
+ "
|
|
20
|
+
`The environment variable ${missing.variable} is not set; the configuration requires it for ${missing.section}.${missing.key}. `
|
|
21
|
+
+ "Store its value as a secret in VS Code; it stays in the SecretStorage and goes into the host's environment on the next start.";
|
|
22
22
|
|
|
23
|
-
/**
|
|
23
|
+
/** The reason that belongs to the state; it appears below the server's row. */
|
|
24
24
|
export const stateDetail = (connection: ConnectionView): string | undefined => {
|
|
25
25
|
if (connection.missingEnvironment) return missingEnvironmentDetail(connection.missingEnvironment);
|
|
26
26
|
const state = connection.state;
|
|
@@ -28,13 +28,13 @@ export const stateDetail = (connection: ConnectionView): string | undefined => {
|
|
|
28
28
|
return undefined;
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
export const kindLabel = (connection: ConnectionView): string => connection.kind === "profile" ? "
|
|
31
|
+
export const kindLabel = (connection: ConnectionView): string => connection.kind === "profile" ? "local profile" : "server";
|
|
32
32
|
|
|
33
|
-
/**
|
|
33
|
+
/** The route line below the name: the local profile, the server's host, or the server whose profile runs locally. */
|
|
34
34
|
export const routeLabel = (connection: ConnectionView): string => {
|
|
35
35
|
const route = connection.route;
|
|
36
|
-
if (route.kind === "profile") return `
|
|
37
|
-
return route.localHost ? `${route.host} \u00b7
|
|
36
|
+
if (route.kind === "profile") return `local \u00b7 ${route.profile}`;
|
|
37
|
+
return route.localHost ? `${route.host} \u00b7 local` : route.host;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
export const busyState = (connection: ConnectionView): boolean => connection.state.kind === "starting" || connection.state.kind === "connecting";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RunPanelTheme } from "../run-panel/host-contract";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** A server of the extension: a RAgents server by address or a local profile that the extension starts itself. */
|
|
4
4
|
export type ConnectionKind = "server" | "profile";
|
|
5
5
|
|
|
6
6
|
export type ConnectionState =
|
|
@@ -13,10 +13,10 @@ export type ConnectionState =
|
|
|
13
13
|
| { readonly kind: "forbidden"; readonly message: string }
|
|
14
14
|
| { readonly kind: "failed"; readonly message: string };
|
|
15
15
|
|
|
16
|
-
/**
|
|
16
|
+
/** An environment variable that a profile's configuration requires with env("NAME") without it being set. */
|
|
17
17
|
export interface MissingEnvironment {
|
|
18
18
|
readonly variable: string;
|
|
19
|
-
/**
|
|
19
|
+
/** The configuration section that needs it, for example a plugin. */
|
|
20
20
|
readonly section: string;
|
|
21
21
|
readonly key: string;
|
|
22
22
|
}
|
|
@@ -27,9 +27,9 @@ export interface ConnectionRun {
|
|
|
27
27
|
readonly state: "running" | "waiting" | "idle" | "ended";
|
|
28
28
|
readonly pendingActions: number;
|
|
29
29
|
readonly updatedAt: number;
|
|
30
|
-
/**
|
|
30
|
+
/** The extension could not read the run view; the row names the reason. */
|
|
31
31
|
readonly problem?: string;
|
|
32
|
-
/**
|
|
32
|
+
/** Why the server locked the run; the row does not open it, deleting stays possible. */
|
|
33
33
|
readonly locked?: string;
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -38,13 +38,13 @@ export interface ConnectionEntry {
|
|
|
38
38
|
readonly title: string;
|
|
39
39
|
readonly description: string;
|
|
40
40
|
readonly kind: "skill" | "script";
|
|
41
|
-
/**
|
|
41
|
+
/** The template group on Start; a run script without its own category is listed under "Run scripts". */
|
|
42
42
|
readonly category: string;
|
|
43
|
-
/**
|
|
43
|
+
/** A guide asks questions before the start; the template is then labeled "Set up" instead of "Start". */
|
|
44
44
|
readonly guided?: boolean;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
/**
|
|
47
|
+
/** Where the server points: a local profile, an address, or an address whose distributed profile runs on a local host. */
|
|
48
48
|
export type ConnectionRoute =
|
|
49
49
|
| { readonly kind: "profile"; readonly profile: string }
|
|
50
50
|
| { readonly kind: "server"; readonly host: string; readonly localHost: boolean };
|
|
@@ -52,57 +52,64 @@ export type ConnectionRoute =
|
|
|
52
52
|
export interface ConnectionView {
|
|
53
53
|
readonly name: string;
|
|
54
54
|
readonly kind: ConnectionKind;
|
|
55
|
-
/**
|
|
55
|
+
/** Address of the server or path of the profile file. */
|
|
56
56
|
readonly address: string;
|
|
57
57
|
readonly route: ConnectionRoute;
|
|
58
58
|
readonly state: ConnectionState;
|
|
59
59
|
readonly runs: readonly ConnectionRun[];
|
|
60
60
|
readonly entries: readonly ConnectionEntry[];
|
|
61
|
-
/**
|
|
61
|
+
/** The template from entries that the plus on the chip uses and that comes first on Start; without it a new run is an empty chat. */
|
|
62
62
|
readonly defaultEntry?: string;
|
|
63
|
-
/**
|
|
63
|
+
/** New runs are allowed; without the right only the list remains. */
|
|
64
64
|
readonly canCreate: boolean;
|
|
65
|
-
/**
|
|
65
|
+
/** The signed-in user, if the server manages users. */
|
|
66
66
|
readonly user?: string;
|
|
67
|
-
/**
|
|
67
|
+
/** The most recently tried user name; the sign-in form takes it over. */
|
|
68
68
|
readonly loginUser?: string;
|
|
69
|
-
/**
|
|
69
|
+
/** Credentials are stored in the SecretStorage so the extension signs in to the server silently. */
|
|
70
70
|
readonly savedLogin?: boolean;
|
|
71
|
-
/**
|
|
71
|
+
/** Error of the last action on this server, directly in its row. */
|
|
72
72
|
readonly problem?: string;
|
|
73
|
-
/** Start
|
|
73
|
+
/** Start or takeover failed because of this environment variable; the row leads from here to the value and the retry. */
|
|
74
74
|
readonly missingEnvironment?: MissingEnvironment;
|
|
75
|
+
/** Extension and server carry a different RAgents version; an error if the workstation is not registered because of it. */
|
|
76
|
+
readonly versionNotice?: ConnectionNotice;
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
export interface ConnectionNotice {
|
|
80
|
+
readonly level: "error" | "warning";
|
|
81
|
+
readonly text: string;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** The four pages of the extension; "run" shows the run panel instead of this page. */
|
|
78
85
|
export type PanelPage = "start" | "runs" | "run" | "connections";
|
|
79
86
|
|
|
80
|
-
/**
|
|
87
|
+
/** The pages the panel may switch to itself; openRun leads to the run. */
|
|
81
88
|
export const PANEL_PAGES = ["start", "runs", "connections"] as const;
|
|
82
89
|
|
|
83
90
|
export interface PanelState {
|
|
84
91
|
readonly theme: RunPanelTheme;
|
|
85
92
|
readonly page: PanelPage;
|
|
86
93
|
readonly connections: readonly ConnectionView[];
|
|
87
|
-
/**
|
|
94
|
+
/** The profile files in the host folder; the dialog offers them, without a host the list stays empty. */
|
|
88
95
|
readonly profileSuggestions: readonly string[];
|
|
89
|
-
/**
|
|
96
|
+
/** The ragents.connections setting is invalid; the page names the reason. */
|
|
90
97
|
readonly problem?: string;
|
|
91
|
-
/**
|
|
98
|
+
/** The profile path most recently chosen in the file dialog; the dialog takes it over. */
|
|
92
99
|
readonly pickedProfileFile?: string;
|
|
93
|
-
/**
|
|
100
|
+
/** The Runs page starts with the runs of this server; the chip on Start sets it, the title bar does not. */
|
|
94
101
|
readonly runsConnection?: string;
|
|
95
|
-
/**
|
|
102
|
+
/** Names from ragents.hostEnvironment without a value in the SecretStorage; the setting applies to all servers, so the list appears once. */
|
|
96
103
|
readonly missingSecrets?: readonly string[];
|
|
97
104
|
}
|
|
98
105
|
|
|
99
|
-
/**
|
|
106
|
+
/** The state comes from the extension, first embedded in the page, then as a message. */
|
|
100
107
|
export interface PanelStateMessage {
|
|
101
108
|
readonly type: "ragents.panel.state";
|
|
102
109
|
readonly state: PanelState;
|
|
103
110
|
}
|
|
104
111
|
|
|
105
|
-
/**
|
|
112
|
+
/** What the panel page sends to the extension. */
|
|
106
113
|
export type PanelAction =
|
|
107
114
|
| { readonly action: "page"; readonly page: (typeof PANEL_PAGES)[number]; readonly connection?: string }
|
|
108
115
|
| { readonly action: "settingsFile" }
|
|
@@ -113,8 +120,8 @@ export type PanelAction =
|
|
|
113
120
|
| { readonly action: "updateServer"; readonly name: string; readonly newName: string; readonly url: string }
|
|
114
121
|
| { readonly action: "updateProfile"; readonly name: string; readonly newName: string; readonly profileFile: string }
|
|
115
122
|
| { readonly action: "remove" | "connect" | "disconnect" | "logout" | "startProfile" | "stopProfile" | "retry"; readonly name: string }
|
|
116
|
-
/**
|
|
117
|
-
*
|
|
123
|
+
/** The name of an environment variable, not of a server: the extension asks for the value and puts it into the SecretStorage.
|
|
124
|
+
* With connection the name first goes into ragents.hostEnvironment, and this server then restarts. */
|
|
118
125
|
| { readonly action: "setSecret"; readonly name: string; readonly connection?: string }
|
|
119
126
|
| { readonly action: "login"; readonly name: string; readonly user: string; readonly password: string }
|
|
120
127
|
| { readonly action: "login"; readonly name: string; readonly token: string }
|
package/apps/web/src/panel.tsx
CHANGED
|
@@ -9,7 +9,7 @@ declare function acquireVsCodeApi(): { postMessage(message: unknown): void };
|
|
|
9
9
|
|
|
10
10
|
const root = document.getElementById("root");
|
|
11
11
|
const embedded = document.getElementById("state");
|
|
12
|
-
if (!root || !embedded?.textContent) throw new Error("Root
|
|
12
|
+
if (!root || !embedded?.textContent) throw new Error("Root element or embedded state is missing");
|
|
13
13
|
|
|
14
14
|
const vscode = acquireVsCodeApi();
|
|
15
15
|
const initial = JSON.parse(embedded.textContent) as PanelState;
|
|
@@ -36,17 +36,17 @@ const isWebPlugin = (value: unknown): value is WebPlugin =>
|
|
|
36
36
|
const webPluginFrom = (id: string, module: unknown): WebPlugin => {
|
|
37
37
|
const plugin = (module as Record<string, unknown>).webPlugin;
|
|
38
38
|
if (!isWebPlugin(plugin)) {
|
|
39
|
-
throw new Error(`
|
|
39
|
+
throw new Error(`The web entry of plugin ${id} does not export a webPlugin constant with a plugin id`);
|
|
40
40
|
}
|
|
41
41
|
if (plugin.id !== id) {
|
|
42
|
-
throw new Error(`
|
|
42
|
+
throw new Error(`The bundle ${id} reports the different id ${plugin.id}`);
|
|
43
43
|
}
|
|
44
44
|
return plugin;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
const loaded = <T>(id: string, url: string, load: Promise<T>): Promise<T> =>
|
|
48
48
|
load.catch((cause: unknown) => {
|
|
49
|
-
throw new Error(`
|
|
49
|
+
throw new Error(`The web half of plugin ${id} does not load from ${url}: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
/** A plugin without a web half stays a bare descriptor; one with a web half loads its bundle and stylesheet. */
|
|
@@ -97,12 +97,12 @@ export const pluginBootstrapFrom = (value: unknown): PluginBootstrap => {
|
|
|
97
97
|
|| value.defaultStartEntry !== undefined && typeof value.defaultStartEntry !== "string"
|
|
98
98
|
|| typeof value.product.id !== "string" || !value.product.id
|
|
99
99
|
|| typeof value.product.title !== "string" || !value.product.title) {
|
|
100
|
-
throw new Error("
|
|
100
|
+
throw new Error("The plugin configuration does not match the expected format");
|
|
101
101
|
}
|
|
102
102
|
const plugins = value.plugins.map((entry): PluginDescriptor => {
|
|
103
103
|
if (!isRecord(entry) || typeof entry.id !== "string" || !entry.id || entry.web !== undefined && !isWebAddresses(entry.web)
|
|
104
104
|
|| entry.config !== undefined && !isRecord(entry.config)) {
|
|
105
|
-
throw new Error("
|
|
105
|
+
throw new Error("The plugin configuration contains an invalid plugin descriptor");
|
|
106
106
|
}
|
|
107
107
|
return {
|
|
108
108
|
id: entry.id,
|
|
@@ -21,7 +21,7 @@ const modelPresentationFrom = (presentation: unknown, optionId: string): ModelPr
|
|
|
21
21
|
const raw = presentation as Record<string, unknown> | null;
|
|
22
22
|
if (typeof raw !== "object" || raw === null || raw.kind !== "model"
|
|
23
23
|
|| typeof raw.provider !== "string" || !isStringList(raw.options) || !isStringList(raw.thinkingOptions)) {
|
|
24
|
-
throw new Error(`
|
|
24
|
+
throw new Error(`The start option ${optionId} does not provide a model presentation`);
|
|
25
25
|
}
|
|
26
26
|
return { provider: raw.provider, options: raw.options, thinkingOptions: raw.thinkingOptions };
|
|
27
27
|
};
|
|
@@ -30,7 +30,7 @@ const modelValueFrom = (value: unknown, optionId: string): ModelValue => {
|
|
|
30
30
|
const raw = value as Record<string, unknown> | null;
|
|
31
31
|
if (typeof raw !== "object" || raw === null || typeof raw.model !== "string"
|
|
32
32
|
|| (raw.thinking !== undefined && typeof raw.thinking !== "string")) {
|
|
33
|
-
throw new Error(`
|
|
33
|
+
throw new Error(`The value of start option ${optionId} is not a model choice`);
|
|
34
34
|
}
|
|
35
35
|
return { model: raw.model, ...(typeof raw.thinking === "string" ? { thinking: raw.thinking } : {}) };
|
|
36
36
|
};
|
|
@@ -66,7 +66,7 @@ export function ModelControl({ disabled, error, option, setValue }: StartOptionC
|
|
|
66
66
|
return (
|
|
67
67
|
<div className="grid flex-1 min-w-0 grid-cols-[minmax(0,1fr)_auto] items-center gap-1.5">
|
|
68
68
|
<Select disabled={disabled} items={modelOptions} value={value.model} onValueChange={(model) => { if (model !== null) chooseModel(model); }}>
|
|
69
|
-
<SelectTrigger aria-label="
|
|
69
|
+
<SelectTrigger aria-label="Model" className="min-w-0 max-w-full" size="sm"><SelectValue /></SelectTrigger>
|
|
70
70
|
<SelectContent>{modelOptions.map((option) => <SelectItem key={option.value} value={option.value}>{option.label}</SelectItem>)}</SelectContent>
|
|
71
71
|
</Select>
|
|
72
72
|
{presentation.thinkingOptions.length > 0 && (
|
|
@@ -7,10 +7,10 @@ import { modelDraftOf, requestProductModelSettings } from "./model-settings";
|
|
|
7
7
|
import { modelDefaultsChangedEvent } from "../model-settings-events";
|
|
8
8
|
|
|
9
9
|
const profileLabels: Record<string, { title: string; description: string }> = {
|
|
10
|
-
coordinator: { title: "Run
|
|
11
|
-
relay: { title: "
|
|
12
|
-
standard: { title: "
|
|
13
|
-
reviewer: { title: "
|
|
10
|
+
coordinator: { title: "Run coordinator", description: "The default when a new run starts." },
|
|
11
|
+
relay: { title: "Relay", description: "Agents that pass on messages and results." },
|
|
12
|
+
standard: { title: "Agents", description: "The default for further agents in the run." },
|
|
13
|
+
reviewer: { title: "Review", description: "The default for agents with a review task." },
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
type LoadState = { status: "loading" } | { status: "failed"; error: string }
|
|
@@ -54,9 +54,9 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
|
|
|
54
54
|
if (!readable) return null;
|
|
55
55
|
if (state.status === "failed") return <Alert variant="destructive">
|
|
56
56
|
<AlertDescription>{state.error}</AlertDescription>
|
|
57
|
-
<AlertAction><Button onClick={() => setRetry((value) => value + 1)} size="sm" variant="outline">
|
|
57
|
+
<AlertAction><Button onClick={() => setRetry((value) => value + 1)} size="sm" variant="outline">Reload</Button></AlertAction>
|
|
58
58
|
</Alert>;
|
|
59
|
-
if (state.status !== "ready" || !draft) return <p role="status">
|
|
59
|
+
if (state.status !== "ready" || !draft) return <p role="status">Loading model defaults ...</p>;
|
|
60
60
|
const { settings } = state;
|
|
61
61
|
const change = (name: string, model: string, thinking: ProductModelDraft["profiles"][number]["thinking"]) => {
|
|
62
62
|
setDraft({ profiles: draft.profiles.map((profile) => profile.name === name ? { ...profile, model, thinking } : profile) });
|
|
@@ -73,18 +73,18 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
|
|
|
73
73
|
const saved = await requestProductModelSettings(pluginId, { draft });
|
|
74
74
|
setState({ status: "ready", settings: saved });
|
|
75
75
|
setDraft(modelDraftOf(saved));
|
|
76
|
-
setNotice("
|
|
76
|
+
setNotice("Defaults saved. They apply to new actors and runs that have not started yet.");
|
|
77
77
|
window.dispatchEvent(new Event(modelDefaultsChangedEvent));
|
|
78
78
|
} catch (cause) { setError(messageOf(cause)); }
|
|
79
79
|
finally { saving.current = false; setPending(false); }
|
|
80
80
|
};
|
|
81
|
-
return <form className="grid min-w-0 gap-4.5" aria-label="
|
|
81
|
+
return <form className="grid min-w-0 gap-4.5" aria-label="Model defaults for new runs and agents" onSubmit={(event) => {
|
|
82
82
|
event.preventDefault();
|
|
83
83
|
void save();
|
|
84
84
|
}}>
|
|
85
|
-
<p className={noteClass}>
|
|
86
|
-
|
|
87
|
-
{!writable && <p className={noteClass}>
|
|
85
|
+
<p className={noteClass}>Saved for this profile. Actors that already exist keep their model.
|
|
86
|
+
A model explicitly chosen in the run takes precedence.</p>
|
|
87
|
+
{!writable && <p className={noteClass}>You have read access to these settings.</p>}
|
|
88
88
|
<div className="grid gap-4">
|
|
89
89
|
{settings.profiles.map((profile) => {
|
|
90
90
|
const value = draft.profiles.find((entry) => entry.name === profile.name)!;
|
|
@@ -102,9 +102,9 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
|
|
|
102
102
|
const next = settings.models.find((entry) => entry.id === model && entry.provider === profile.provider)!;
|
|
103
103
|
const thinking = next.thinking.includes(value.thinking) ? value.thinking : next.thinking[0]!;
|
|
104
104
|
change(profile.name, model, thinking);
|
|
105
|
-
if (thinking !== value.thinking) setNotice(`
|
|
105
|
+
if (thinking !== value.thinking) setNotice(`The available reasoning level ${thinkingLabel(thinking)} was chosen for ${label.title}. Check it before saving.`);
|
|
106
106
|
}}>
|
|
107
|
-
<SelectTrigger aria-label="
|
|
107
|
+
<SelectTrigger aria-label="Model" className={triggerClass}><SelectValue /></SelectTrigger>
|
|
108
108
|
<SelectContent>{modelOptions.map((option) => <SelectItem key={option.value} value={option.value}>{option.label}</SelectItem>)}</SelectContent>
|
|
109
109
|
</Select>
|
|
110
110
|
<Select disabled={!writable || pending || metadata.thinking.length < 2} items={thinkingOptions} value={value.thinking}
|
|
@@ -120,11 +120,11 @@ export function ProductModelSettings({ pluginId }: { pluginId: string }) {
|
|
|
120
120
|
})}
|
|
121
121
|
</div>
|
|
122
122
|
<div className="flex flex-wrap items-center gap-2.5">
|
|
123
|
-
<Button type="submit" disabled={!writable || pending || !dirty}>{pending ? "
|
|
123
|
+
<Button type="submit" disabled={!writable || pending || !dirty}>{pending ? "Saving ..." : "Save defaults"}</Button>
|
|
124
124
|
{dirty && <Button disabled={pending} variant="outline" onClick={() => {
|
|
125
125
|
setDraft(modelDraftOf(settings)); setError(undefined); setNotice(undefined);
|
|
126
|
-
}}
|
|
127
|
-
<span className={`${noteClass} basis-full`} role="status">{notice ?? (dirty ? "
|
|
126
|
+
}}>Discard changes</Button>}
|
|
127
|
+
<span className={`${noteClass} basis-full`} role="status">{notice ?? (dirty ? "Unsaved changes" : "")}</span>
|
|
128
128
|
</div>
|
|
129
129
|
{error && <Alert variant="destructive"><AlertDescription>{error}</AlertDescription></Alert>}
|
|
130
130
|
</form>;
|
|
@@ -28,7 +28,7 @@ const presentationFrom = (presentation: unknown, optionId: string): SystemPrompt
|
|
|
28
28
|
const raw = presentation as Record<string, unknown> | null;
|
|
29
29
|
if (typeof raw !== "object" || raw === null || raw.kind !== "system-prompt"
|
|
30
30
|
|| !Array.isArray(raw.options) || !raw.options.every(isPromptOption)) {
|
|
31
|
-
throw new Error(`
|
|
31
|
+
throw new Error(`The start option ${optionId} does not provide a system prompt presentation`);
|
|
32
32
|
}
|
|
33
33
|
return { options: raw.options };
|
|
34
34
|
};
|
|
@@ -38,7 +38,7 @@ const valueFrom = (value: unknown, optionId: string): SystemPromptValue => {
|
|
|
38
38
|
if (typeof raw !== "object" || raw === null
|
|
39
39
|
|| !Array.isArray(raw.promptIds) || raw.promptIds.some((id) => typeof id !== "string")
|
|
40
40
|
|| typeof raw.shareWithAgents !== "boolean") {
|
|
41
|
-
throw new Error(`
|
|
41
|
+
throw new Error(`The value of start option ${optionId} is not a system prompt selection`);
|
|
42
42
|
}
|
|
43
43
|
return { promptIds: raw.promptIds as string[], shareWithAgents: raw.shareWithAgents };
|
|
44
44
|
};
|
|
@@ -75,9 +75,9 @@ export function SystemPromptControl({ disabled, error, option, setValue }: Start
|
|
|
75
75
|
|
|
76
76
|
return (
|
|
77
77
|
<div className="flex flex-col items-start gap-2" onMouseLeave={() => setPreviewId(undefined)}>
|
|
78
|
-
<span className="text-[0.72rem] font-semibold text-muted-foreground">
|
|
78
|
+
<span className="text-[0.72rem] font-semibold text-muted-foreground">System prompts</span>
|
|
79
79
|
<div className="relative flex justify-center">
|
|
80
|
-
<div aria-label="
|
|
80
|
+
<div aria-label="System prompts" className="flex flex-wrap justify-center gap-2" role="group">
|
|
81
81
|
{presentation.options.map((entry) => (
|
|
82
82
|
<Toggle
|
|
83
83
|
disabled={disabled}
|
|
@@ -104,11 +104,11 @@ export function SystemPromptControl({ disabled, error, option, setValue }: Start
|
|
|
104
104
|
onCheckedChange={(checked) => share(checked)}
|
|
105
105
|
/>
|
|
106
106
|
<span>
|
|
107
|
-
|
|
107
|
+
Also pass on to the agents
|
|
108
108
|
<span className="block text-[0.72rem] text-muted-foreground">
|
|
109
109
|
{value.shareWithAgents
|
|
110
|
-
? "
|
|
111
|
-
: "
|
|
110
|
+
? "Spawned agents get the prompts as well. Plain LLMs with tools: [] are excluded."
|
|
111
|
+
: "The prompts apply only to the coordinator."}
|
|
112
112
|
</span>
|
|
113
113
|
</span>
|
|
114
114
|
</label>
|
|
@@ -120,17 +120,17 @@ export function SystemPromptControl({ disabled, error, option, setValue }: Start
|
|
|
120
120
|
export function SystemPromptBadge({ option }: StartOptionBadgeContext) {
|
|
121
121
|
if (!option.selectable || !option.locked) return null;
|
|
122
122
|
const parsed = parse(option);
|
|
123
|
-
if ("message" in parsed) return <ToolbarItem title={parsed.message}><ToolbarText>
|
|
123
|
+
if ("message" in parsed) return <ToolbarItem title={parsed.message}><ToolbarText>System prompts unreadable</ToolbarText></ToolbarItem>;
|
|
124
124
|
const { presentation, value } = parsed;
|
|
125
125
|
const labels = presentation.options
|
|
126
126
|
.filter((entry) => value.promptIds.includes(entry.id))
|
|
127
127
|
.map((entry) => entry.label);
|
|
128
128
|
if (labels.length === 0) return null;
|
|
129
|
-
const scopeLabel = value.shareWithAgents ? "
|
|
129
|
+
const scopeLabel = value.shareWithAgents ? "coordinator and agents" : "coordinator only";
|
|
130
130
|
const text = labels.join(" + ");
|
|
131
131
|
return (
|
|
132
|
-
<ToolbarItem title={`
|
|
133
|
-
<ToolbarCopy><ToolbarLabel>
|
|
132
|
+
<ToolbarItem title={`System prompts: ${text} (${scopeLabel})`}>
|
|
133
|
+
<ToolbarCopy><ToolbarLabel>System prompts</ToolbarLabel><ToolbarText>{value.shareWithAgents ? `${text} + agents` : text}</ToolbarText></ToolbarCopy>
|
|
134
134
|
</ToolbarItem>
|
|
135
135
|
);
|
|
136
136
|
}
|
|
@@ -13,13 +13,13 @@ export const productModelSettingsFrom = (value: unknown): ProductModelSettings =
|
|
|
13
13
|
&& text(model.label) && Array.isArray(model.thinking) && model.thinking.length > 0 && model.thinking.every(text))
|
|
14
14
|
|| !value.profiles.every((profile) => record(profile) && text(profile.name) && typeof profile.description === "string"
|
|
15
15
|
&& text(profile.provider) && text(profile.model) && text(profile.thinking))) {
|
|
16
|
-
throw new Error("
|
|
16
|
+
throw new Error("The server returned invalid model defaults.");
|
|
17
17
|
}
|
|
18
18
|
const settings = value as unknown as ProductModelSettings;
|
|
19
19
|
const names = settings.profiles.map((profile) => profile.name);
|
|
20
20
|
if (new Set(names).size !== names.length || settings.profiles.some((profile) => !settings.models.some((model) =>
|
|
21
21
|
model.id === profile.model && model.provider === profile.provider && model.thinking.includes(profile.thinking)))) {
|
|
22
|
-
throw new Error("
|
|
22
|
+
throw new Error("The model defaults do not match the available model catalog.");
|
|
23
23
|
}
|
|
24
24
|
return settings;
|
|
25
25
|
};
|
|
@@ -29,7 +29,7 @@ export interface RpcClientOptions {
|
|
|
29
29
|
baseUrl?: string;
|
|
30
30
|
fetch?: typeof fetch;
|
|
31
31
|
retryDelayMs?: number;
|
|
32
|
-
/**
|
|
32
|
+
/** How long the stream may stay silent before it counts as lost; the server pings every 15 seconds. */
|
|
33
33
|
idleTimeoutMs?: number;
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -47,7 +47,7 @@ const EARLY_EVENT_TTL_MS = 10_000;
|
|
|
47
47
|
|
|
48
48
|
const messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);
|
|
49
49
|
|
|
50
|
-
/**
|
|
50
|
+
/** Reads an SSE stream block by block; a block runs up to the blank line. */
|
|
51
51
|
async function* sseBlocks(body: ReadableStream<Uint8Array>, onChunk: () => void): AsyncGenerator<{ event: string | undefined; data: string | undefined }> {
|
|
52
52
|
const reader = body.getReader();
|
|
53
53
|
const decoder = new TextDecoder();
|
|
@@ -71,7 +71,7 @@ async function* sseBlocks(body: ReadableStream<Uint8Array>, onChunk: () => void)
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
/**
|
|
74
|
+
/** The client of the messaging layer: requests via POST, notifications and server requests over a stream. */
|
|
75
75
|
export class RpcClient {
|
|
76
76
|
readonly #baseUrl: string;
|
|
77
77
|
readonly #fetch: typeof fetch;
|
|
@@ -131,7 +131,7 @@ export class RpcClient {
|
|
|
131
131
|
};
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
/**
|
|
134
|
+
/** Answers requests from the server, for example to a workstation; keeps the stream open for that. */
|
|
135
135
|
handle<C extends OperationContract>(
|
|
136
136
|
contract: C,
|
|
137
137
|
handler: (input: OperationInput<C>, context: RpcHandlerContext) => OperationResult<C> | Promise<OperationResult<C>>,
|
|
@@ -151,7 +151,7 @@ export class RpcClient {
|
|
|
151
151
|
return () => { this.#statusListeners.delete(listener); };
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
/**
|
|
154
|
+
/** After every new connection, once the subscriptions are back in place; a workstation then registers again. */
|
|
155
155
|
onConnected(listener: () => void): () => void {
|
|
156
156
|
this.#connectedListeners.add(listener);
|
|
157
157
|
return () => { this.#connectedListeners.delete(listener); };
|
|
@@ -162,7 +162,7 @@ export class RpcClient {
|
|
|
162
162
|
this.#open();
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
/**
|
|
165
|
+
/** Ends the stream; open requests from the server are cancelled, own requests stay possible. */
|
|
166
166
|
close(): void {
|
|
167
167
|
this.#stop();
|
|
168
168
|
this.#set({ kind: "idle" });
|
|
@@ -177,7 +177,7 @@ export class RpcClient {
|
|
|
177
177
|
for (const listener of [...this.#statusListeners]) listener(status);
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
/**
|
|
180
|
+
/** Without a stream no answer reaches the server anymore; running handlers therefore end with it. */
|
|
181
181
|
#stop(): void {
|
|
182
182
|
if (this.#retry !== undefined) clearTimeout(this.#retry);
|
|
183
183
|
this.#retry = undefined;
|
|
@@ -190,12 +190,12 @@ export class RpcClient {
|
|
|
190
190
|
for (const subscription of this.#subscriptions) subscription.serverId = undefined;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
/**
|
|
193
|
+
/** A half-open stream delivers nothing anymore, not even a ping; after the idle time it counts as lost. */
|
|
194
194
|
#watchIdle(controller: AbortController): void {
|
|
195
195
|
if (this.#idle !== undefined) clearTimeout(this.#idle);
|
|
196
196
|
this.#idle = setTimeout(() => {
|
|
197
197
|
this.#idle = undefined;
|
|
198
|
-
if (this.#stream === controller) this.#scheduleRetry(`
|
|
198
|
+
if (this.#stream === controller) this.#scheduleRetry(`The event stream has been silent for ${Math.round(this.#idleTimeoutMs / 1000)} s.`);
|
|
199
199
|
}, this.#idleTimeoutMs);
|
|
200
200
|
}
|
|
201
201
|
|
|
@@ -217,7 +217,7 @@ export class RpcClient {
|
|
|
217
217
|
this.#set({ kind: "unauthorized" });
|
|
218
218
|
return;
|
|
219
219
|
}
|
|
220
|
-
if (!response.ok || !response.body) throw new Error(`
|
|
220
|
+
if (!response.ok || !response.body) throw new Error(`The event stream responded with ${response.status}.`);
|
|
221
221
|
this.#watchIdle(controller);
|
|
222
222
|
for await (const block of sseBlocks(response.body, () => this.#watchIdle(controller))) {
|
|
223
223
|
if (controller.signal.aborted) return;
|
|
@@ -232,7 +232,7 @@ export class RpcClient {
|
|
|
232
232
|
const message = JSON.parse(block.data) as unknown;
|
|
233
233
|
if (isRpcMessage(message)) this.#peer.receive(message);
|
|
234
234
|
}
|
|
235
|
-
if (!controller.signal.aborted) this.#scheduleRetry("
|
|
235
|
+
if (!controller.signal.aborted) this.#scheduleRetry("The server ended the event stream.");
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
#scheduleRetry(message: string): void {
|
|
@@ -260,7 +260,7 @@ export class RpcClient {
|
|
|
260
260
|
this.#earlyEvents.delete(serverId);
|
|
261
261
|
for (const message of early?.messages ?? []) subscription.onMessage(message);
|
|
262
262
|
} catch (cause) {
|
|
263
|
-
subscription.onError?.(`
|
|
263
|
+
subscription.onError?.(`Channel ${subscription.contract.id}: ${messageOf(cause)}`);
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
|
|
@@ -270,7 +270,7 @@ export class RpcClient {
|
|
|
270
270
|
subscription.onMessage(params.message);
|
|
271
271
|
return;
|
|
272
272
|
}
|
|
273
|
-
//
|
|
273
|
+
// The event can arrive before the answer to the subscription; keep it briefly.
|
|
274
274
|
const now = Date.now();
|
|
275
275
|
for (const [id, entry] of this.#earlyEvents) if (now - entry.at > EARLY_EVENT_TTL_MS) this.#earlyEvents.delete(id);
|
|
276
276
|
const entry = this.#earlyEvents.get(params.subscription) ?? { at: now, messages: [] };
|
|
@@ -291,7 +291,7 @@ export class RpcClient {
|
|
|
291
291
|
if (this.#connection) headers[RPC_CONNECTION_HEADER] = this.#connection;
|
|
292
292
|
if (!isRpcRequest(message)) {
|
|
293
293
|
if (!this.#connection) return;
|
|
294
|
-
//
|
|
294
|
+
// Notifications and responses go out in order so progress never overtakes its result.
|
|
295
295
|
const send = this.#outgoing.then(() => this.#fetch(`${this.#baseUrl}${RPC_PATH}`, { method: "POST", headers, body: JSON.stringify(message) }));
|
|
296
296
|
this.#outgoing = send.then(() => undefined, () => undefined);
|
|
297
297
|
await send;
|
|
@@ -308,12 +308,12 @@ export class RpcClient {
|
|
|
308
308
|
return;
|
|
309
309
|
}
|
|
310
310
|
const detail = body as { error?: unknown; code?: unknown } | undefined;
|
|
311
|
-
const text = typeof detail?.error === "string" ? detail.error : `
|
|
311
|
+
const text = typeof detail?.error === "string" ? detail.error : `The server responded with ${response.status}.`;
|
|
312
312
|
this.#peer.receive(rpcFailure(message.id, RPC_ERROR_CODES.application, text, { code: typeof detail?.code === "string" ? detail.code : "http-error", status: response.status }));
|
|
313
313
|
} catch (cause) {
|
|
314
314
|
const cancelled = controller.signal.aborted;
|
|
315
315
|
this.#peer.receive(rpcFailure(message.id, cancelled ? RPC_ERROR_CODES.cancelled : RPC_ERROR_CODES.connectionClosed,
|
|
316
|
-
cancelled ? "
|
|
316
|
+
cancelled ? "Cancelled" : `${this.#baseUrl || "The server"} is unreachable: ${messageOf(cause)}`));
|
|
317
317
|
} finally {
|
|
318
318
|
this.#inFlight.delete(id);
|
|
319
319
|
}
|
package/apps/web/src/rpc.ts
CHANGED
|
@@ -18,7 +18,7 @@ export function groupRunsByActivity(sessions: readonly SessionInfo[], now = new
|
|
|
18
18
|
const key = dayKey(date);
|
|
19
19
|
const group = groups.get(key) ?? {
|
|
20
20
|
date: key,
|
|
21
|
-
label: key === today ? "
|
|
21
|
+
label: key === today ? "Today" : key === dayKey(yesterday) ? "Yesterday" : date.toLocaleDateString("en-US", { weekday: "long", day: "numeric", month: "long", ...(date.getFullYear() === now.getFullYear() ? {} : { year: "numeric" }) }),
|
|
22
22
|
sessions: [],
|
|
23
23
|
};
|
|
24
24
|
group.sessions.push(session);
|