@schlenkr/ragents 0.1.10 → 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 +4 -4
- 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 +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 +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 +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 +61 -56
- 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-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 +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 +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 +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 +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 +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 +2 -2
- 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 +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 +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- 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 +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 +81 -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/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 +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/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.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 +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 +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/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/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 +54 -54
- 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 +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 +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-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
|
@@ -51,7 +51,7 @@ export function Overview({ onBusy, onClose, onOpen, open, panels, registry, runs
|
|
|
51
51
|
|
|
52
52
|
return (
|
|
53
53
|
<Modal className="pointer-events-none flex h-[min(900px,100%)] w-[min(1440px,100%)] flex-col rounded-none bg-transparent p-0 ring-0" keepMounted onClose={onClose} open={open} scope="workspace" size="full">
|
|
54
|
-
<DialogTitle className="sr-only"
|
|
54
|
+
<DialogTitle className="sr-only">Overview</DialogTitle>
|
|
55
55
|
<div className="flex min-h-0 min-w-0 flex-1 gap-4 max-[900px]:flex-col" id="app-overview" ref={overviewRef}>
|
|
56
56
|
{panels.map(({ id, Panel }) => (
|
|
57
57
|
<OverviewPanelHost id={id} key={id} onBusy={onBusy} onClose={onClose} onOpen={onOpen} open={open} Panel={Panel} registry={registry} />
|
|
@@ -125,17 +125,17 @@ function RunsSection({ activeId, canCreate, canDelete, onCreate, onDelete, onOpe
|
|
|
125
125
|
<h2 className="text-[0.95rem] font-semibold" id="overview-runs-title">
|
|
126
126
|
Runs <span className="ml-1 text-[0.8rem] font-medium tabular-nums text-muted-foreground">{sessions.length}</span>
|
|
127
127
|
</h2>
|
|
128
|
-
{unreachable && <span className="text-[0.72rem] font-medium text-destructive" role="alert">Server
|
|
128
|
+
{unreachable && <span className="text-[0.72rem] font-medium text-destructive" role="alert">Server unreachable</span>}
|
|
129
129
|
{canDelete && sessions.length > 0 && (
|
|
130
130
|
<div className="ml-auto flex flex-wrap items-center gap-1">
|
|
131
131
|
{selectMode
|
|
132
132
|
? (
|
|
133
133
|
<>
|
|
134
134
|
<Button onClick={() => setSelectedIds(new Set(sessions.map((session) => session.id)))} size="sm" variant="ghost">
|
|
135
|
-
|
|
135
|
+
All
|
|
136
136
|
</Button>
|
|
137
137
|
<Button onClick={() => setSelectedIds(new Set())} size="sm" variant="ghost">
|
|
138
|
-
|
|
138
|
+
None
|
|
139
139
|
</Button>
|
|
140
140
|
<Button
|
|
141
141
|
className="ml-auto"
|
|
@@ -144,23 +144,23 @@ function RunsSection({ activeId, canCreate, canDelete, onCreate, onDelete, onOpe
|
|
|
144
144
|
size="sm"
|
|
145
145
|
variant="destructive"
|
|
146
146
|
>
|
|
147
|
-
|
|
147
|
+
Delete ({selectedIds.size})
|
|
148
148
|
</Button>
|
|
149
149
|
<Button onClick={exitSelectMode} size="sm" variant="ghost">
|
|
150
|
-
|
|
150
|
+
Done
|
|
151
151
|
</Button>
|
|
152
152
|
</>
|
|
153
153
|
)
|
|
154
154
|
: (
|
|
155
155
|
<Button onClick={() => setSelectMode(true)} size="sm" variant="ghost">
|
|
156
|
-
|
|
156
|
+
Select
|
|
157
157
|
</Button>
|
|
158
158
|
)}
|
|
159
159
|
</div>
|
|
160
160
|
)}
|
|
161
161
|
</header>
|
|
162
162
|
{error && <p className="text-[0.72rem] font-medium text-destructive" role="alert">{error}</p>}
|
|
163
|
-
<p className="mb-5.5 text-[0.75rem] text-muted-foreground">
|
|
163
|
+
<p className="mb-5.5 text-[0.75rem] text-muted-foreground">By last activity in the run. New activity has come in since you last viewed it.</p>
|
|
164
164
|
<SessionList
|
|
165
165
|
seenRevisions={seenRevisions}
|
|
166
166
|
activeId={activeId}
|
|
@@ -177,19 +177,19 @@ function RunsSection({ activeId, canCreate, canDelete, onCreate, onDelete, onOpe
|
|
|
177
177
|
<Dialog open onOpenChange={(open) => { if (!open && !deleting) setConfirmBulkDelete(false); }}>
|
|
178
178
|
<DialogContent scope="page" showCloseButton={false} size="small">
|
|
179
179
|
<DialogHeader>
|
|
180
|
-
<DialogTitle>
|
|
180
|
+
<DialogTitle>Delete runs</DialogTitle>
|
|
181
181
|
<DialogDescription>
|
|
182
182
|
{selectedIds.size === 1
|
|
183
|
-
? "
|
|
184
|
-
: `${selectedIds.size}
|
|
183
|
+
? "One run will be permanently deleted."
|
|
184
|
+
: `${selectedIds.size} runs will be permanently deleted.`}
|
|
185
185
|
</DialogDescription>
|
|
186
186
|
</DialogHeader>
|
|
187
187
|
<DialogFooter>
|
|
188
188
|
<Button disabled={deleting} onClick={() => setConfirmBulkDelete(false)} variant="outline">
|
|
189
|
-
|
|
189
|
+
Cancel
|
|
190
190
|
</Button>
|
|
191
191
|
<Button disabled={deleting} onClick={() => void removeSelected()}>
|
|
192
|
-
{deleting ? "
|
|
192
|
+
{deleting ? "Deleting ..." : `Delete (${selectedIds.size})`}
|
|
193
193
|
</Button>
|
|
194
194
|
</DialogFooter>
|
|
195
195
|
</DialogContent>
|
|
@@ -38,7 +38,7 @@ const linkStylesheet = (url: string): Promise<void> => new Promise((resolve, rej
|
|
|
38
38
|
link.rel = "stylesheet";
|
|
39
39
|
link.href = url;
|
|
40
40
|
link.onload = () => resolve();
|
|
41
|
-
link.onerror = () => reject(new Error(`
|
|
41
|
+
link.onerror = () => reject(new Error(`the stylesheet ${url} is missing`));
|
|
42
42
|
document.head.append(link);
|
|
43
43
|
});
|
|
44
44
|
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
|
|
52
52
|
const chatElementClass = "flex h-full min-h-0 w-full min-w-0 flex-1 flex-col overflow-hidden rounded-lg border border-border-soft/60 bg-card/55";
|
|
53
53
|
|
|
54
|
-
/** workspace:
|
|
54
|
+
/** workspace: surface and workshop; panel: the run panel; element: exactly one surface element at full size. */
|
|
55
55
|
export type ChatLayout = "workspace" | "panel" | { element: string };
|
|
56
56
|
|
|
57
57
|
interface PluginChatProps {
|
|
@@ -160,7 +160,7 @@ export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "wo
|
|
|
160
160
|
|
|
161
161
|
const openTab = useCallback((tabId: string, selection?: unknown) => {
|
|
162
162
|
if (!registeredTabs.some((tab) => tab.id === tabId)) {
|
|
163
|
-
throw new Error("
|
|
163
|
+
throw new Error("Sidebar tab is not registered: " + tabId);
|
|
164
164
|
}
|
|
165
165
|
if (selection !== undefined) {
|
|
166
166
|
setTabSelections((current) => ({ ...current, [tabId]: selection }));
|
|
@@ -249,7 +249,7 @@ export function PluginChat({ autoFocusChat, onAutoFocusChatSettled, layout = "wo
|
|
|
249
249
|
);
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
/**
|
|
252
|
+
/** The tab state per layout: on the web a transient tab and the stored expand state, in the run panel the open sidebar tab stored per run. */
|
|
253
253
|
function useWorkspaceTabs(runId: string, layout: ChatLayout, availableTabs: readonly WorkspaceTabContribution[]) {
|
|
254
254
|
const [requestedTabId, setRequestedTabId] = useState<string>();
|
|
255
255
|
const [workspaceState, updateWorkspaceState] = useWorkspacePanelState(runId);
|
|
@@ -367,25 +367,25 @@ function ChatWorkspace({
|
|
|
367
367
|
|
|
368
368
|
if (startDialog) return (
|
|
369
369
|
<Modal className="gap-0 p-0 [&_[data-slot=dialog-body]:has([data-preparation])]:overflow-hidden" nextBehavior="push" onClose={startDialog.onClose} scope="page" showCloseButton size="full">
|
|
370
|
-
<DialogTitle className="sr-only">
|
|
370
|
+
<DialogTitle className="sr-only">New run</DialogTitle>
|
|
371
371
|
<StartSelection registry={registry} session={startSession} initialEntryId={startDialog.initialEntryId} onOpen={onStarted} />
|
|
372
372
|
</Modal>
|
|
373
373
|
);
|
|
374
374
|
|
|
375
|
-
const status = registry.sessionStatus.filter((entry) => !entry.readRight || access.can(entry.readRight)).map(({ id, order, Status }) => <StatusGroup container={statusContainer} key={id} label="Run
|
|
375
|
+
const status = registry.sessionStatus.filter((entry) => !entry.readRight || access.can(entry.readRight)).map(({ id, order, Status }) => <StatusGroup container={statusContainer} key={id} label="Run actions" order={order}>
|
|
376
376
|
<Status navigation={navigation} session={session} />
|
|
377
377
|
</StatusGroup>);
|
|
378
378
|
const header = headerContainer && createPortal(layout === "panel"
|
|
379
379
|
? <RunPanelHeader attention={attention} contributions={headerContributions} navigation={navigation} registry={registry} runError={runError} session={session} working={session.running} />
|
|
380
380
|
: <div className="flex min-w-0 flex-[1_0_auto] items-stretch">
|
|
381
381
|
<div className="flex min-w-0 flex-none items-stretch text-[0.82rem] font-semibold text-foreground">
|
|
382
|
-
<ToolbarItem className="min-w-[140px] max-w-[260px] justify-start font-semibold max-md:min-w-[120px] max-md:max-w-[180px]" title={session.session.title}><ToolbarText>{session.session.title || "
|
|
382
|
+
<ToolbarItem className="min-w-[140px] max-w-[260px] justify-start font-semibold max-md:min-w-[120px] max-md:max-w-[180px]" title={session.session.title}><ToolbarText>{session.session.title || "New run"}</ToolbarText></ToolbarItem>
|
|
383
383
|
{registry.sessionMetadata.map(({ id, Metadata }) => (
|
|
384
384
|
<Metadata key={id} placement="header" session={session.session} />
|
|
385
385
|
))}
|
|
386
386
|
<StartOptionBadges registry={registry} session={session} />
|
|
387
|
-
{session.running && <ToolbarItem className="text-[0.72rem] font-normal text-muted-foreground"><Spinner aria-hidden className="size-2.5" /><ToolbarText>
|
|
388
|
-
{runError && <ToolbarItem className="text-[0.72rem] font-medium text-destructive" title={runError}><ToolbarText>Run
|
|
387
|
+
{session.running && <ToolbarItem className="text-[0.72rem] font-normal text-muted-foreground"><Spinner aria-hidden className="size-2.5" /><ToolbarText>Processing</ToolbarText></ToolbarItem>}
|
|
388
|
+
{runError && <ToolbarItem className="text-[0.72rem] font-medium text-destructive" title={runError}><ToolbarText>Run unreachable</ToolbarText></ToolbarItem>}
|
|
389
389
|
</div>
|
|
390
390
|
{headerContributions.length > 0 && (
|
|
391
391
|
<div className="flex min-w-0 flex-none items-stretch overflow-visible">
|
|
@@ -436,7 +436,7 @@ function ChatWorkspace({
|
|
|
436
436
|
ref={onModalContainer}
|
|
437
437
|
>
|
|
438
438
|
<div className="flex min-h-0 min-w-0 flex-1 flex-col">
|
|
439
|
-
{(SurfaceCenter || surfaceContributions.length > 0) && <div aria-label="Apps
|
|
439
|
+
{(SurfaceCenter || surfaceContributions.length > 0) && <div aria-label="Apps and actors" className="flex min-h-[52px] min-w-0 flex-none items-stretch border-b border-border bg-[color-mix(in_srgb,var(--surface)_55%,var(--card))]" role="region">
|
|
440
440
|
<div className="flex flex-none items-stretch empty:hidden" ref={setRunToolbarContainer} />
|
|
441
441
|
<SurfaceShortcuts key={session.session.id}>
|
|
442
442
|
{surfaceContributions.map(({ id, Header }) => <Header key={id} navigation={navigation} session={session} />)}
|
|
@@ -488,7 +488,7 @@ function DefaultCenter({ renderChat }: {
|
|
|
488
488
|
);
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
-
/**
|
|
491
|
+
/** A surface element at full size, for example a mini-app in the VS Code editor area. */
|
|
492
492
|
function SurfaceElementView({ elementId, navigation, registry, session }: {
|
|
493
493
|
elementId: string;
|
|
494
494
|
navigation: SessionNavigation;
|
|
@@ -499,7 +499,7 @@ function SurfaceElementView({ elementId, navigation, registry, session }: {
|
|
|
499
499
|
.filter((definition) => definition.id === elementId && definition.visible !== false)
|
|
500
500
|
.map((definition) => ({ Element: contribution.Element, definition })))[0];
|
|
501
501
|
if (!match) return <div className="m-auto max-w-[420px] p-6 text-center text-muted-foreground" role="status">
|
|
502
|
-
{session.runView === undefined ? "
|
|
502
|
+
{session.runView === undefined ? "Loading run ..." : "This mini-app no longer exists in the run."}
|
|
503
503
|
</div>;
|
|
504
504
|
return <div className="flex min-h-0 min-w-0 flex-1 flex-col" data-view="element">
|
|
505
505
|
<match.Element definition={match.definition} navigation={navigation} session={session} />
|
|
@@ -537,9 +537,9 @@ function ChatSurface({
|
|
|
537
537
|
composer={
|
|
538
538
|
primaryIsProgram(session.runView, session.session.id) ? <div className="flex min-w-0 flex-col gap-1.5">
|
|
539
539
|
<p className="text-muted-foreground">{programChatNotice}</p>
|
|
540
|
-
<div className="flex min-w-0 flex-wrap items-center gap-2">{options.toolbarLeft}<ChatViewSwitches
|
|
540
|
+
<div className="flex min-w-0 flex-wrap items-center gap-2">{options.toolbarLeft}<ChatViewSwitches settings={chatView} /></div>
|
|
541
541
|
</div>
|
|
542
|
-
: partner.kind === "stopped" ? <div className="[--qsl-input-card-radius:var(--radius-lg)]"><StoppedActorNotice actor={partner.actor} runId={session.session.id} toolbar={<>{options.toolbarLeft}<ChatViewSwitches
|
|
542
|
+
: partner.kind === "stopped" ? <div className="[--qsl-input-card-radius:var(--radius-lg)]"><StoppedActorNotice actor={partner.actor} runId={session.session.id} toolbar={<>{options.toolbarLeft}<ChatViewSwitches settings={chatView} /></>} /></div>
|
|
543
543
|
: <div className="[--qsl-input-card-radius:var(--radius-lg)]">
|
|
544
544
|
{sendError && <p className="text-[0.8rem] text-destructive" role="alert">{sendError}</p>}
|
|
545
545
|
<ChatInputToolbar
|
|
@@ -548,7 +548,7 @@ function ChatSurface({
|
|
|
548
548
|
onAutoFocusSettled={onAutoFocusSettled}
|
|
549
549
|
disabled={!session.connected || !writable}
|
|
550
550
|
maxRows={4}
|
|
551
|
-
texts={writable ? undefined : { placeholder: "
|
|
551
|
+
texts={writable ? undefined : { placeholder: "Read access to this run" }}
|
|
552
552
|
onSend={(text, attachments) => {
|
|
553
553
|
setSendError(undefined);
|
|
554
554
|
return session.send(text, attachments);
|
|
@@ -562,7 +562,7 @@ function ChatSurface({
|
|
|
562
562
|
toolbarLeft={
|
|
563
563
|
<>
|
|
564
564
|
{options.toolbarLeft}
|
|
565
|
-
<ChatViewSwitches
|
|
565
|
+
<ChatViewSwitches settings={chatView} />
|
|
566
566
|
</>
|
|
567
567
|
}
|
|
568
568
|
toolbarRight={<StartOptionControls disabled={!session.connected || !writable} placement="composer" registry={registry} />}
|
|
@@ -6,7 +6,7 @@ export function PluginFailureNotice({ failures }: { failures: readonly PluginFai
|
|
|
6
6
|
if (failures.length === 0) return null;
|
|
7
7
|
return (
|
|
8
8
|
<Alert className="flex-none rounded-none border-x-0 border-t-0" data-slot="plugin-failures" variant="destructive">
|
|
9
|
-
<AlertTitle>{failures.length === 1 ? `
|
|
9
|
+
<AlertTitle>{failures.length === 1 ? `The plugin ${failures[0]!.id} failed to load` : `${failures.length} plugins failed to load`}</AlertTitle>
|
|
10
10
|
<AlertDescription>
|
|
11
11
|
{failures.map((failure) => <p key={failure.id}>{failure.message}</p>)}
|
|
12
12
|
</AlertDescription>
|
|
@@ -50,7 +50,7 @@ export interface StartOptionControlContext {
|
|
|
50
50
|
disabled: boolean;
|
|
51
51
|
error: string | undefined;
|
|
52
52
|
setValue: (value: unknown) => Promise<void>;
|
|
53
|
-
/**
|
|
53
|
+
/** Which machines the host offers for new runs; an option with a machine choice shows only these. */
|
|
54
54
|
machines: OfferedMachines;
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -97,7 +97,7 @@ export interface SessionContext {
|
|
|
97
97
|
runView: unknown;
|
|
98
98
|
running: boolean;
|
|
99
99
|
startup?: ChatStartupStatus;
|
|
100
|
-
/**
|
|
100
|
+
/** With entryId the message starts the run through this skill template and the start options it fixes. */
|
|
101
101
|
send: (text: string, attachments?: ChatAttachmentInput[], entryId?: string) => Promise<void>;
|
|
102
102
|
session: SessionInfo;
|
|
103
103
|
/** Starts the run through a run script entry, without a message; the value becomes the script's start input. */
|
|
@@ -109,7 +109,7 @@ export interface EntityReference {
|
|
|
109
109
|
id: string;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
/**
|
|
112
|
+
/** The selection on the surface: tiles, actor entry points and pop-outs report it, the surface shows it, the chat reports it as the location. */
|
|
113
113
|
export interface SurfaceController {
|
|
114
114
|
acceptSelection: (selection: EntityReference | undefined) => void;
|
|
115
115
|
selection: EntityReference | undefined;
|
|
@@ -119,7 +119,7 @@ export interface ChatDisplayOptions {
|
|
|
119
119
|
chatElementClassName?: string;
|
|
120
120
|
chatScrollerRef?: (element: HTMLDivElement | null) => void;
|
|
121
121
|
toolbarLeft?: ReactNode;
|
|
122
|
-
/**
|
|
122
|
+
/** Shown instead of the history while set; the input stays usable. */
|
|
123
123
|
notice?: ReactNode;
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -137,7 +137,7 @@ export interface SurfaceCenterContext {
|
|
|
137
137
|
|
|
138
138
|
export interface SurfaceContribution {
|
|
139
139
|
Center: ComponentType<SurfaceCenterContext>;
|
|
140
|
-
/**
|
|
140
|
+
/** The run panel (run-panel.html) with the same context; without a contribution it shows only the chat. */
|
|
141
141
|
RunPanel?: ComponentType<SurfaceCenterContext>;
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -203,7 +203,7 @@ export interface WorkspaceTabContribution {
|
|
|
203
203
|
Panel: ComponentType<WorkspaceTabContext>;
|
|
204
204
|
Badge?: ComponentType<WorkspaceTabContext>;
|
|
205
205
|
available?: (session: SessionContext) => boolean;
|
|
206
|
-
/**
|
|
206
|
+
/** The tab needs the run's workspace and is missing where the viewer cannot reach it. */
|
|
207
207
|
requiresWorkspace?: boolean;
|
|
208
208
|
keepMounted?: boolean;
|
|
209
209
|
}
|
|
@@ -215,7 +215,7 @@ export interface SessionHeaderContext {
|
|
|
215
215
|
|
|
216
216
|
export interface SessionHeaderContribution {
|
|
217
217
|
readRight?: string;
|
|
218
|
-
/**
|
|
218
|
+
/** The contribution needs the run's workspace and is missing where the viewer cannot reach it. */
|
|
219
219
|
requiresWorkspace?: boolean;
|
|
220
220
|
placement?: "header" | "surface";
|
|
221
221
|
id: string;
|
|
@@ -287,7 +287,7 @@ export interface SessionMetadataContribution {
|
|
|
287
287
|
Metadata: ComponentType<SessionMetadataContext>;
|
|
288
288
|
}
|
|
289
289
|
|
|
290
|
-
/**
|
|
290
|
+
/** How a waiting action is shown by the plugin that owns it. */
|
|
291
291
|
export interface ActionViewContext {
|
|
292
292
|
action: PendingAction;
|
|
293
293
|
text: string;
|
|
@@ -358,11 +358,11 @@ export interface ProductProfile {
|
|
|
358
358
|
plugins: WebPlugin[];
|
|
359
359
|
product: ProductDescriptor;
|
|
360
360
|
startEntries: readonly StartEntry[];
|
|
361
|
-
/**
|
|
361
|
+
/** The template the start selection shows first instead of New chat; the server names it only if it also delivers it. */
|
|
362
362
|
defaultStartEntry?: string;
|
|
363
363
|
}
|
|
364
364
|
|
|
365
|
-
/**
|
|
365
|
+
/** The interface shows a run the server has not listed yet as reachable; the server checks every access itself. */
|
|
366
366
|
export const workspaceAccessible = (session: SessionInfo): boolean => session.workspaceAccessible !== false;
|
|
367
367
|
|
|
368
368
|
export class PluginRegistry {
|
|
@@ -405,88 +405,88 @@ export class PluginRegistry {
|
|
|
405
405
|
const brands = [profile.brand, ...this.activePlugins.map((plugin) => plugin.brand)]
|
|
406
406
|
.filter((brand): brand is ProductBrand => brand !== undefined);
|
|
407
407
|
if (brands.length === 0) {
|
|
408
|
-
throw new Error("
|
|
408
|
+
throw new Error("No active plugin provides branding; the plugin list contains no product plugin");
|
|
409
409
|
}
|
|
410
|
-
if (brands.length > 1) throw new Error(`
|
|
410
|
+
if (brands.length > 1) throw new Error(`The profile needs exactly one branding, found: ${brands.length}`);
|
|
411
411
|
this.brand = brands[0];
|
|
412
412
|
this.workspaceTabs = this.activePlugins
|
|
413
413
|
.flatMap((plugin) => plugin.workspaceTabs ?? [])
|
|
414
414
|
.sort(byTabOrder);
|
|
415
|
-
assertUnique(this.workspaceTabs, (tab) => tab.id, "
|
|
415
|
+
assertUnique(this.workspaceTabs, (tab) => tab.id, "Sidebar tab");
|
|
416
416
|
this.workspaceTabFactories = this.activePlugins
|
|
417
417
|
.flatMap((plugin) => plugin.workspaceTabsFor ? [plugin.workspaceTabsFor] : []);
|
|
418
418
|
const surfaces = this.activePlugins.flatMap((plugin) => plugin.surface ? [plugin.surface] : []);
|
|
419
|
-
if (surfaces.length > 1) throw new Error(`
|
|
419
|
+
if (surfaces.length > 1) throw new Error(`Multiple surface contributions registered: ${surfaces.length}`);
|
|
420
420
|
this.surface = surfaces[0];
|
|
421
421
|
this.surfaceElements = this.activePlugins
|
|
422
422
|
.flatMap((plugin) => plugin.surfaceElements ?? [])
|
|
423
423
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
424
|
-
assertUnique(this.surfaceElements, (element) => element.id, "
|
|
424
|
+
assertUnique(this.surfaceElements, (element) => element.id, "Surface element contribution");
|
|
425
425
|
this.cardSections = this.activePlugins
|
|
426
426
|
.flatMap((plugin) => plugin.cardSections ?? [])
|
|
427
427
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
428
|
-
assertUnique(this.cardSections, (section) => section.id, "
|
|
428
|
+
assertUnique(this.cardSections, (section) => section.id, "Card section");
|
|
429
429
|
this.needsRunView = this.activePlugins.some((plugin) => plugin.needsRunView);
|
|
430
430
|
const chatPolicies = this.activePlugins.flatMap((plugin) => plugin.chatDisplayPolicy ? [plugin.chatDisplayPolicy] : []);
|
|
431
|
-
if (chatPolicies.length > 1) throw new Error(`
|
|
431
|
+
if (chatPolicies.length > 1) throw new Error(`Multiple chat display policies registered: ${chatPolicies.length}`);
|
|
432
432
|
this.chatDisplayPolicy = chatPolicies[0] ?? defaultChatDisplayPolicy;
|
|
433
433
|
const startOptions = this.activePlugins.flatMap((plugin) => plugin.startOptions ?? []);
|
|
434
|
-
assertUnique(startOptions, (option) => option.id, "
|
|
434
|
+
assertUnique(startOptions, (option) => option.id, "Start option");
|
|
435
435
|
this.startOptions = new Map(startOptions.map((option) => [option.id, option]));
|
|
436
436
|
|
|
437
437
|
const toolPresenters = this.activePlugins.flatMap((plugin) => plugin.toolPresenters ?? []);
|
|
438
|
-
assertUnique(toolPresenters, (presenter) => presenter.toolName, "Tool
|
|
438
|
+
assertUnique(toolPresenters, (presenter) => presenter.toolName, "Tool presenter");
|
|
439
439
|
this.toolPresenters = new Map(toolPresenters.map((presenter) => [presenter.toolName, presenter]));
|
|
440
440
|
this.entityPresenters = this.activePlugins.flatMap((plugin) => plugin.entityPresenters ?? []);
|
|
441
441
|
const active = new Set(this.activePlugins.map((plugin) => plugin.id));
|
|
442
442
|
this.startEntries = profile.startEntries.filter((entry) => active.has(entry.owner));
|
|
443
|
-
assertUnique(this.startEntries, (entry) => entry.id, "
|
|
443
|
+
assertUnique(this.startEntries, (entry) => entry.id, "Template");
|
|
444
444
|
if (profile.defaultStartEntry !== undefined && !this.startEntries.some((entry) => entry.id === profile.defaultStartEntry)) {
|
|
445
|
-
throw new Error(`
|
|
445
|
+
throw new Error(`The default template ${profile.defaultStartEntry} is not a template of an active plugin`);
|
|
446
446
|
}
|
|
447
447
|
this.defaultStartEntry = profile.defaultStartEntry;
|
|
448
448
|
this.skillEntries = this.startEntries.filter((entry): entry is SkillStartEntry => entry.action === "skill");
|
|
449
449
|
this.scriptEntries = this.startEntries.filter((entry): entry is ScriptStartEntry => entry.action === "script");
|
|
450
450
|
const guides = this.activePlugins.flatMap((plugin) => plugin.guides ?? []);
|
|
451
|
-
assertUnique(guides, (guide) => guide.id, "
|
|
451
|
+
assertUnique(guides, (guide) => guide.id, "Guide");
|
|
452
452
|
this.guides = new Map(guides.map((guide) => [guide.id, guide]));
|
|
453
453
|
for (const entry of this.startEntries) {
|
|
454
454
|
if (entry.guide !== undefined && !this.guides.has(entry.guide)) {
|
|
455
|
-
throw new Error(`
|
|
455
|
+
throw new Error(`Template ${entry.id} requires the guide ${entry.guide}, which no active plugin provides`);
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
this.sessionHeaders = this.activePlugins
|
|
459
459
|
.flatMap((plugin) => plugin.sessionHeaders ?? [])
|
|
460
460
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
461
|
-
assertUnique(this.sessionHeaders, (header) => header.id, "Session
|
|
461
|
+
assertUnique(this.sessionHeaders, (header) => header.id, "Session header contribution");
|
|
462
462
|
this.sessionStatus = this.activePlugins
|
|
463
463
|
.flatMap((plugin) => plugin.sessionStatus ?? [])
|
|
464
464
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
465
|
-
assertUnique(this.sessionStatus, (status) => status.id, "Session
|
|
465
|
+
assertUnique(this.sessionStatus, (status) => status.id, "Session status contribution");
|
|
466
466
|
this.overviewPanels = this.activePlugins
|
|
467
467
|
.flatMap((plugin) => plugin.overviewPanels ?? [])
|
|
468
468
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
469
|
-
assertUnique(this.overviewPanels, (panel) => panel.id, "
|
|
469
|
+
assertUnique(this.overviewPanels, (panel) => panel.id, "Overview contribution");
|
|
470
470
|
this.settings = this.activePlugins
|
|
471
471
|
.flatMap((plugin) => (plugin.settings ?? []).map((contribution) => ({ ...contribution, owner: plugin.id })))
|
|
472
472
|
.sort((left, right) => (left.order ?? 0) - (right.order ?? 0) || left.id.localeCompare(right.id));
|
|
473
|
-
assertUnique(this.settings, (contribution) => contribution.id, "
|
|
473
|
+
assertUnique(this.settings, (contribution) => contribution.id, "Settings contribution");
|
|
474
474
|
this.sessionMetadata = this.activePlugins
|
|
475
475
|
.flatMap((plugin) => plugin.sessionMetadata ?? [])
|
|
476
476
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
477
|
-
assertUnique(this.sessionMetadata, (metadata) => metadata.id, "Session
|
|
477
|
+
assertUnique(this.sessionMetadata, (metadata) => metadata.id, "Session metadata");
|
|
478
478
|
const actionViews = this.activePlugins.flatMap((plugin) => plugin.actionViews ?? []);
|
|
479
|
-
assertUnique(actionViews, (view) => view.owner, "
|
|
479
|
+
assertUnique(actionViews, (view) => view.owner, "Action view");
|
|
480
480
|
this.actionViews = new Map(actionViews.map((view) => [view.owner, view]));
|
|
481
481
|
this.attention = this.activePlugins.flatMap((plugin) => plugin.attention ?? []);
|
|
482
|
-
assertUnique(this.attention, (contribution) => contribution.id, "Attention
|
|
482
|
+
assertUnique(this.attention, (contribution) => contribution.id, "Attention contribution");
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
registeredTabs(session: SessionContext, access: AccessContext = unrestrictedAccess): readonly WorkspaceTabContribution[] {
|
|
486
486
|
if (this.workspaceTabFactories.length === 0) return this.workspaceTabs.filter((tab) => !tab.readRight || access.can(tab.readRight));
|
|
487
487
|
const contributed = this.workspaceTabFactories.flatMap((factory) => factory(session));
|
|
488
488
|
const tabs = [...this.workspaceTabs, ...contributed].sort(byTabOrder);
|
|
489
|
-
assertUnique(tabs, (tab) => tab.id, "
|
|
489
|
+
assertUnique(tabs, (tab) => tab.id, "Sidebar tab");
|
|
490
490
|
return tabs.filter((tab) => !tab.readRight || access.can(tab.readRight));
|
|
491
491
|
}
|
|
492
492
|
|
|
@@ -526,12 +526,12 @@ export const pluginRoutePrefixFrom = (
|
|
|
526
526
|
): string => {
|
|
527
527
|
const expected = `/api/plugins/${pluginId}`;
|
|
528
528
|
if (config.routePrefix === undefined) {
|
|
529
|
-
throw new Error(`Plugin
|
|
529
|
+
throw new Error(`Plugin configuration for ${pluginId} has no routePrefix`);
|
|
530
530
|
}
|
|
531
531
|
if (config.routePrefix !== expected) {
|
|
532
532
|
throw new Error(
|
|
533
|
-
`Plugin
|
|
534
|
-
+ `${String(config.routePrefix)}
|
|
533
|
+
`Plugin configuration for ${pluginId} has a wrong routePrefix: `
|
|
534
|
+
+ `${String(config.routePrefix)} instead of ${expected}`,
|
|
535
535
|
);
|
|
536
536
|
}
|
|
537
537
|
return config.routePrefix;
|
|
@@ -543,23 +543,23 @@ export const chatDisplayPolicyFrom = (
|
|
|
543
543
|
): ChatDisplayPolicy => {
|
|
544
544
|
const raw = config.chatSteps;
|
|
545
545
|
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
546
|
-
throw new Error(`Plugin
|
|
546
|
+
throw new Error(`Plugin configuration for ${pluginId} has no chatSteps object`);
|
|
547
547
|
}
|
|
548
548
|
const { modes, stepsVisible, stepsExpandable, selectable } = raw as Record<string, unknown>;
|
|
549
549
|
if (typeof stepsVisible !== "boolean" || typeof stepsExpandable !== "boolean" || typeof selectable !== "boolean") {
|
|
550
550
|
throw new Error(
|
|
551
|
-
`chatSteps
|
|
551
|
+
`chatSteps of ${pluginId} needs the boolean fields stepsVisible, stepsExpandable and selectable`,
|
|
552
552
|
);
|
|
553
553
|
}
|
|
554
554
|
if (typeof modes !== "object" || modes === null || Array.isArray(modes)) {
|
|
555
|
-
throw new Error(`chatSteps
|
|
555
|
+
throw new Error(`chatSteps of ${pluginId} has no modes object`);
|
|
556
556
|
}
|
|
557
557
|
const entries = CHAT_STEP_SCOPES.map((scope) => {
|
|
558
558
|
const mode = (modes as Record<string, unknown>)[scope];
|
|
559
559
|
if (!DETAIL_MODES.includes(mode as DetailMode)) {
|
|
560
560
|
throw new Error(
|
|
561
|
-
`chatSteps.modes.${scope}
|
|
562
|
-
+ `
|
|
561
|
+
`chatSteps.modes.${scope} of ${pluginId} must be one of the values ${DETAIL_MODES.join(", ")}, `
|
|
562
|
+
+ `not ${String(mode)}`,
|
|
563
563
|
);
|
|
564
564
|
}
|
|
565
565
|
return [scope, mode as DetailMode] as const;
|
|
@@ -630,7 +630,7 @@ export function primaryChatActor(view: unknown): string {
|
|
|
630
630
|
return view !== null && typeof view === "object" && "primaryActorId" in view && typeof view.primaryActorId === "string" ? view.primaryActorId : "primary";
|
|
631
631
|
}
|
|
632
632
|
|
|
633
|
-
/** display
|
|
633
|
+
/** display distinguishes places that show the same chat (surface, inspector, pop-out); each remembers its detail level. */
|
|
634
634
|
export function useChatSteps(runId?: string, actorId = "primary", display?: string): ChatStepsControl {
|
|
635
635
|
const control = useContext(ChatStepsContext);
|
|
636
636
|
const identity = runId === undefined ? undefined : JSON.stringify(display === undefined ? [runId, actorId] : [runId, actorId, display]);
|
|
@@ -694,8 +694,8 @@ const assertUnique = <T,>(values: readonly T[], keyOf: (value: T) => string, lab
|
|
|
694
694
|
const keys = new Set<string>();
|
|
695
695
|
for (const value of values) {
|
|
696
696
|
const key = keyOf(value);
|
|
697
|
-
if (!key) throw new Error(`${label}
|
|
698
|
-
if (keys.has(key)) throw new Error(`${label}
|
|
697
|
+
if (!key) throw new Error(`${label} without ID`);
|
|
698
|
+
if (keys.has(key)) throw new Error(`${label} registered twice: ${key}`);
|
|
699
699
|
keys.add(key);
|
|
700
700
|
}
|
|
701
701
|
};
|
|
@@ -706,10 +706,10 @@ const activatePlugin = (plugin: WebPlugin, config: Readonly<Record<string, unkno
|
|
|
706
706
|
activated = plugin.activate?.(config) ?? plugin;
|
|
707
707
|
} catch (caught) {
|
|
708
708
|
const message = caught instanceof Error ? caught.message : String(caught);
|
|
709
|
-
throw new Error(`Plugin
|
|
709
|
+
throw new Error(`Plugin activation failed: ${plugin.id}: ${message}`);
|
|
710
710
|
}
|
|
711
711
|
if (activated.id !== plugin.id) {
|
|
712
|
-
throw new Error(`Plugin
|
|
712
|
+
throw new Error(`Plugin activation changed the descriptor: ${plugin.id}`);
|
|
713
713
|
}
|
|
714
714
|
return activated;
|
|
715
715
|
};
|
|
@@ -17,7 +17,7 @@ type PreparationEntry = { message: RunPreparationMessage; at: string };
|
|
|
17
17
|
|
|
18
18
|
const entryNow = (message: RunPreparationMessage): PreparationEntry => ({ message, at: new Date().toISOString() });
|
|
19
19
|
|
|
20
|
-
/**
|
|
20
|
+
/** The task of a skill template is shaped here; the run starts through the template and with what it fixes. */
|
|
21
21
|
export function RunPreparationChat({ initialPrompt, entry, registry, sessionRef }: {
|
|
22
22
|
initialPrompt: string;
|
|
23
23
|
entry: SkillStartEntry;
|
|
@@ -46,7 +46,7 @@ export function RunPreparationChat({ initialPrompt, entry, registry, sessionRef
|
|
|
46
46
|
}, []);
|
|
47
47
|
|
|
48
48
|
const discuss = async (text: string, files?: ChatAttachmentInput[]) => {
|
|
49
|
-
if (submitting.current) throw new Error("
|
|
49
|
+
if (submitting.current) throw new Error("The previous request is still running.");
|
|
50
50
|
submitting.current = true;
|
|
51
51
|
const controller = new AbortController();
|
|
52
52
|
active.current = controller;
|
|
@@ -64,7 +64,7 @@ export function RunPreparationChat({ initialPrompt, entry, registry, sessionRef
|
|
|
64
64
|
setHistory([...next, entryNow({ role: "assistant", text: answer.text })]);
|
|
65
65
|
}
|
|
66
66
|
} catch (cause) {
|
|
67
|
-
if (controller.signal.aborted) throw new Error("
|
|
67
|
+
if (controller.signal.aborted) throw new Error("Discussion stopped. Your input is kept.");
|
|
68
68
|
throw cause;
|
|
69
69
|
} finally {
|
|
70
70
|
active.current = null;
|
|
@@ -73,7 +73,7 @@ export function RunPreparationChat({ initialPrompt, entry, registry, sessionRef
|
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
75
|
const createRun = async (text: string, files?: ChatAttachmentInput[]) => {
|
|
76
|
-
if (submitting.current) throw new Error("
|
|
76
|
+
if (submitting.current) throw new Error("The previous request is still running.");
|
|
77
77
|
submitting.current = true;
|
|
78
78
|
setOperation("starting");
|
|
79
79
|
try {
|
|
@@ -96,26 +96,26 @@ export function RunPreparationChat({ initialPrompt, entry, registry, sessionRef
|
|
|
96
96
|
for (const option of conflicts) await options.set(option.id, fixed?.[option.id]);
|
|
97
97
|
};
|
|
98
98
|
|
|
99
|
-
return <section aria-label="
|
|
99
|
+
return <section aria-label="Discuss task" className={cn(composerPlacement, messages.length === 0 && emptyComposerPlacement)} data-preparation={messages.length === 0 ? "empty" : "active"}>
|
|
100
100
|
<ChatPanel composer={<div>
|
|
101
101
|
<ChatInputToolbar {...attachments} disabled={operation === "starting"} sendDisabled={busy}
|
|
102
102
|
initialValue={initialPrompt} onDraftChange={setDraft} onAttachmentsChange={setHasAttachments} handleRef={composer}
|
|
103
103
|
rows={3} maxRows={8} running={operation === "preparing"} onStop={() => active.current?.abort()} onSend={discuss}
|
|
104
|
-
texts={{ placeholder: "
|
|
104
|
+
texts={{ placeholder: "Additions or questions about the task ...", send: "Discuss task", stop: "Stop discussion" }}
|
|
105
105
|
toolbarLeft={<ChatViewSwitches settings={chatView} />}
|
|
106
106
|
toolbarRight={<StartOptionControls disabled={busy} fixed={fixed} placement="composer" registry={registry} />} />
|
|
107
107
|
{conflicts.length > 0 && <div className="mt-3 flex flex-wrap items-center justify-between gap-2.5" data-start-option-conflicts="" role="alert">
|
|
108
|
-
<span className="text-[0.75rem] text-destructive">
|
|
109
|
-
<Button disabled={busy} size="sm" variant="outline" onClick={() => { void adoptTemplate(); }}>
|
|
108
|
+
<span className="text-[0.75rem] text-destructive">Before the template was opened, {conflicts.length === 1 ? "one start option was" : `${conflicts.length} start options were`} set differently than the template requires. The run cannot be created like this.</span>
|
|
109
|
+
<Button disabled={busy} size="sm" variant="outline" onClick={() => { void adoptTemplate(); }}>Apply template values</Button>
|
|
110
110
|
</div>}
|
|
111
111
|
<div className="my-3 flex flex-wrap items-center justify-between gap-2.5">
|
|
112
|
-
<span className="text-[0.75rem] text-muted-foreground">
|
|
112
|
+
<span className="text-[0.75rem] text-muted-foreground">Give your go in the chat to start, or choose "Create run".</span>
|
|
113
113
|
<Button disabled={busy || conflicts.length > 0 || (!history.length && !draft.trim() && !hasAttachments)}
|
|
114
114
|
onClick={() => { void composer.current?.submit(createRun, { allowEmpty: history.length > 0 }); }}>
|
|
115
|
-
{operation === "starting" ? "
|
|
115
|
+
{operation === "starting" ? "Creating run ..." : "Create run"}
|
|
116
116
|
</Button>
|
|
117
117
|
</div>
|
|
118
|
-
<div aria-label="
|
|
118
|
+
<div aria-label="Start options" className="flex flex-wrap items-center gap-x-3 gap-y-2 empty:hidden"><StartOptionControls disabled={busy} fixed={fixed} registry={registry} /></div>
|
|
119
119
|
</div>}>
|
|
120
120
|
{messages.length > 0 && <ChatMessages detailMode={chatView.detailMode} messages={messages} running={operation === "preparing"} showTimestamps={chatView.showTimestamps} stepsExpandable={chatView.stepsExpandable} />}
|
|
121
121
|
</ChatPanel>
|
package/apps/web/src/RunStore.ts
CHANGED
|
@@ -75,7 +75,7 @@ export function subscribeRunView(
|
|
|
75
75
|
if (message.kind === "ready") setError(undefined);
|
|
76
76
|
nudge();
|
|
77
77
|
}, () => {
|
|
78
|
-
if (!disposed) setError("
|
|
78
|
+
if (!disposed) setError("The run's live stream is unreachable");
|
|
79
79
|
});
|
|
80
80
|
return () => {
|
|
81
81
|
if (disposed) return;
|