@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
|
@@ -2,7 +2,7 @@ import { cn } from "@ragents/web/ui";
|
|
|
2
2
|
|
|
3
3
|
export type MaterialTone = "agent" | "primary" | "script" | "app";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/** Layered material: matte front with straight edges. */
|
|
6
6
|
const materialBaseClass = "relative isolate rounded-panel border-[1.5px] border-(--material-edge) bg-(--material-face) [--material-edge:#514657] dark:[--material-edge:#b7a8bd]";
|
|
7
7
|
|
|
8
8
|
const materialToneClass: Readonly<Record<MaterialTone, string>> = {
|
|
@@ -15,7 +15,7 @@ const materialToneClass: Readonly<Record<MaterialTone, string>> = {
|
|
|
15
15
|
export const materialCardClass = (tone: MaterialTone, className?: string) =>
|
|
16
16
|
cn(materialBaseClass, materialToneClass[tone], className);
|
|
17
17
|
|
|
18
|
-
/**
|
|
18
|
+
/** Header of a material card: the same front, a touch darker, rounded at the top. */
|
|
19
19
|
export const materialHeadClass = "relative flex items-center gap-2 rounded-t-[15.5px] bg-[color-mix(in_srgb,var(--material-face)_96%,black)] px-3 py-2";
|
|
20
20
|
|
|
21
21
|
export const materialTitleClass = "min-w-0 truncate p-0 text-[17px] font-[730] leading-[1.3] tracking-[-.5px]";
|
|
@@ -5,7 +5,7 @@ import { Button, StopGlyph } from "@ragents/web/ui";
|
|
|
5
5
|
import { ToolbarItem } from "@ragents/web/Toolbar";
|
|
6
6
|
import { stopRun } from "./api";
|
|
7
7
|
|
|
8
|
-
const STOP_RUN_REASON = "
|
|
8
|
+
const STOP_RUN_REASON = "Emergency stop by the operator";
|
|
9
9
|
|
|
10
10
|
export function StopRunHeader({ session }: SessionHeaderContext) {
|
|
11
11
|
return <ToolbarItem className="max-w-none"><StopRunButton key={session.session.id} runId={session.session.id} /></ToolbarItem>;
|
|
@@ -33,18 +33,18 @@ function StopRunButton({ runId }: { runId: string }) {
|
|
|
33
33
|
if (!writable) return null;
|
|
34
34
|
if (!armed) {
|
|
35
35
|
return (
|
|
36
|
-
<Button onClick={() => setArmed(true)} size="sm" title="
|
|
37
|
-
<StopGlyph data-icon="inline-start" />
|
|
36
|
+
<Button onClick={() => setArmed(true)} size="sm" title="Ends the whole run: turns, agents and flows" variant="destructive">
|
|
37
|
+
<StopGlyph data-icon="inline-start" />Stop run
|
|
38
38
|
</Button>
|
|
39
39
|
);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
return (
|
|
43
43
|
<span className="inline-flex items-center gap-1.5 whitespace-nowrap">
|
|
44
|
-
<span className="text-[0.72rem] font-semibold text-destructive">
|
|
45
|
-
<Button disabled={busy} onClick={() => void stop()} size="sm" variant="destructive">
|
|
44
|
+
<span className="text-[0.72rem] font-semibold text-destructive">Really stop everything?</span>
|
|
45
|
+
<Button disabled={busy} onClick={() => void stop()} size="sm" variant="destructive">Yes</Button>
|
|
46
46
|
<Button disabled={busy} onClick={() => setArmed(false)} size="sm" variant="outline">
|
|
47
|
-
|
|
47
|
+
Cancel
|
|
48
48
|
</Button>
|
|
49
49
|
{error && <span className="max-w-[260px] truncate text-[0.7rem] text-destructive" title={error}>{error}</span>}
|
|
50
50
|
</span>
|
|
@@ -15,7 +15,7 @@ interface TiledSurfaceProps {
|
|
|
15
15
|
}
|
|
16
16
|
interface DockTarget { entity: string | null; side: TileDockSide }
|
|
17
17
|
const sides: readonly TileDockSide[] = ["left", "right", "top", "bottom"];
|
|
18
|
-
const sideNames = { left: "
|
|
18
|
+
const sideNames = { left: "Dock left", right: "Dock right", top: "Dock top", bottom: "Dock bottom" };
|
|
19
19
|
const sideIcons = { left: ArrowLeft, right: ArrowRight, top: ArrowUp, bottom: ArrowDown };
|
|
20
20
|
const materialFaceRect = (slot: TileRect): TileRect => ({
|
|
21
21
|
left: slot.left + 2,
|
|
@@ -164,11 +164,11 @@ export function TiledSurface({ root, onChange, items, canArrange, selectedEntity
|
|
|
164
164
|
|
|
165
165
|
return <div className="flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden p-2 data-[dragging]:[&_iframe]:pointer-events-none data-[resizing]:[&_iframe]:pointer-events-none"
|
|
166
166
|
data-dragging={canArrange && dragEntity !== null || undefined} data-resizing={resizing || undefined}>
|
|
167
|
-
{compact && entities.length > 1 && <label className="flex items-center gap-2 pb-2 text-[0.8rem]">
|
|
168
|
-
<select className="max-w-[60%] min-w-0" aria-label="
|
|
167
|
+
{compact && entities.length > 1 && <label className="flex items-center gap-2 pb-2 text-[0.8rem]">Tile
|
|
168
|
+
<select className="max-w-[60%] min-w-0" aria-label="Visible tile" value={active} onChange={(event) => select(event.target.value)}>
|
|
169
169
|
{entities.map((entity) => <option key={entity} value={entity}>{itemMap.get(entity)?.title ?? entity}</option>)}
|
|
170
170
|
</select>
|
|
171
|
-
<span className="truncate text-muted-foreground">
|
|
171
|
+
<span className="truncate text-muted-foreground">More space needed for the split view</span>
|
|
172
172
|
</label>}
|
|
173
173
|
<div ref={stageRef} className="relative min-h-0 min-w-0 flex-1 overflow-hidden"
|
|
174
174
|
onDragOver={(event) => {
|
|
@@ -202,8 +202,8 @@ export function TiledSurface({ root, onChange, items, canArrange, selectedEntity
|
|
|
202
202
|
setTarget(null);
|
|
203
203
|
}
|
|
204
204
|
}}>
|
|
205
|
-
{error && <div className="absolute inset-x-2 bottom-2 z-7 flex items-center gap-2 rounded-lg border border-primary bg-surface p-3 text-foreground shadow-[0_2px_8px_#0002]" role="alert"><span className="flex-1">{error}</span><button className="grid cursor-pointer place-items-center bg-transparent p-1" type="button" aria-label="
|
|
206
|
-
{!root && <div className="grid h-full place-items-center rounded-lg border border-dashed border-border-strong p-6 text-center text-muted-foreground">{canArrange ? "
|
|
205
|
+
{error && <div className="absolute inset-x-2 bottom-2 z-7 flex items-center gap-2 rounded-lg border border-primary bg-surface p-3 text-foreground shadow-[0_2px_8px_#0002]" role="alert"><span className="flex-1">{error}</span><button className="grid cursor-pointer place-items-center bg-transparent p-1" type="button" aria-label="Close message" onClick={() => setError(null)}><X size={16} /></button></div>}
|
|
206
|
+
{!root && <div className="grid h-full place-items-center rounded-lg border border-dashed border-border-strong p-6 text-center text-muted-foreground">{canArrange ? "Drag an actor or a mini-app from the header here." : "No content has been arranged for this tile view yet."}</div>}
|
|
207
207
|
{mountedEntities.map((entity) => {
|
|
208
208
|
const item = itemMap.get(entity);
|
|
209
209
|
const bounds = materialFaceRect(compact ? rect : geometry.leaves.get(entity)!);
|
|
@@ -222,16 +222,16 @@ export function TiledSurface({ root, onChange, items, canArrange, selectedEntity
|
|
|
222
222
|
<span className={materialIconClass}>{item?.tone === "app" || entity.startsWith("app:") ? <LayoutGrid size={20} aria-hidden="true" /> : item?.tone === "script" ? <CodeXml size={20} aria-hidden="true" /> : <Sparkles size={20} aria-hidden="true" />}</span>
|
|
223
223
|
<span className={`${materialTitleClass} flex-1`} title={item?.title ?? entity}>{item?.title ?? entity}</span>
|
|
224
224
|
{canArrange && <button className="grid size-[26px] cursor-pointer place-items-center rounded-[4px] bg-transparent p-0 text-muted-foreground hover:bg-glass-group hover:text-foreground"
|
|
225
|
-
type="button" draggable={false} aria-label={`
|
|
225
|
+
type="button" draggable={false} aria-label={`Remove tile ${item?.title ?? entity}`}
|
|
226
226
|
onClick={() => onChange(removeTile(root, entity))}><X size={16} /></button>}
|
|
227
227
|
</header>
|
|
228
|
-
<div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-auto [&>*]:min-h-0 [&>*]:min-w-0 [&>*]:flex-1">{item?.content ?? <div className="p-4.5 text-muted-foreground">{canArrange ? "
|
|
228
|
+
<div className="flex min-h-0 min-w-0 flex-1 flex-col overflow-auto [&>*]:min-h-0 [&>*]:min-w-0 [&>*]:flex-1">{item?.content ?? <div className="p-4.5 text-muted-foreground">{canArrange ? "This content is no longer available. You can remove the tile or dock other content here." : "This content is no longer available."}</div>}</div>
|
|
229
229
|
</div>
|
|
230
230
|
{canArrange && dragEntity !== null && dragEntity !== entity && <div className="absolute inset-0 z-4"><div className="pointer-events-none absolute top-1/2 left-1/2 size-[116px] -translate-x-1/2 -translate-y-1/2">{targets(entity)}</div></div>}
|
|
231
231
|
</section>;
|
|
232
232
|
})}
|
|
233
233
|
{!compact && geometry.dividers.map((divider) => <div key={divider.path.join(".")} className={dividerClass}
|
|
234
|
-
role="separator" tabIndex={0} aria-label="
|
|
234
|
+
role="separator" tabIndex={0} aria-label="Resize tile"
|
|
235
235
|
aria-orientation={divider.direction === "horizontal" ? "vertical" : "horizontal"}
|
|
236
236
|
aria-valuemin={Math.round(divider.minimum * 100)} aria-valuemax={Math.round(divider.maximum * 100)} aria-valuenow={Math.round(divider.ratio * 100)}
|
|
237
237
|
data-direction={divider.direction} style={positioned(divider)}
|
|
@@ -4,10 +4,10 @@ import type { RunActor } from "@ragents/web/run-view";
|
|
|
4
4
|
export const ACTOR_HEADER_MODES = ["all", "active", "visible", "agent", "script"] as const;
|
|
5
5
|
export type ActorHeaderMode = typeof ACTOR_HEADER_MODES[number];
|
|
6
6
|
export const ACTOR_HEADER_MODE_LABELS: Record<ActorHeaderMode, string> = {
|
|
7
|
-
all: "
|
|
8
|
-
active: "
|
|
9
|
-
visible: "
|
|
10
|
-
agent: "LLM
|
|
7
|
+
all: "All",
|
|
8
|
+
active: "Active",
|
|
9
|
+
visible: "Visible",
|
|
10
|
+
agent: "LLM agents",
|
|
11
11
|
script: "TypeScript",
|
|
12
12
|
};
|
|
13
13
|
|
|
@@ -16,7 +16,7 @@ export const actorHeaderStorageKey = (runId: string) => `ragents.orchestration.a
|
|
|
16
16
|
export function parseActorHeaderMode(raw: string | null): ActorHeaderMode {
|
|
17
17
|
if (raw === null) return "visible";
|
|
18
18
|
if (ACTOR_HEADER_MODES.some((mode) => mode === raw)) return raw as ActorHeaderMode;
|
|
19
|
-
throw new Error("
|
|
19
|
+
throw new Error("The stored actor display is invalid. Allowed are all, active, visible, agent and script.");
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export const actorOnStage = (actor: RunActor, primaryActorId: string | null | undefined, stage: ReadonlySet<string>) =>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const ORCHESTRATION_PLUGIN_ID = "ragents.orchestration";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** Button in the status bar: full bar height, no rounding, calm surface. */
|
|
4
4
|
export const statusControlClass = "flex h-full min-w-statusbar items-center justify-center self-stretch whitespace-nowrap px-2.5 text-[0.7rem] text-foreground hover:bg-primary/12 aria-expanded:bg-primary/12 focus-visible:outline-2 focus-visible:outline-primary focus-visible:-outline-offset-2 disabled:opacity-50 disabled:cursor-not-allowed";
|
|
5
5
|
|
|
6
|
-
/**
|
|
6
|
+
/** Frame for the plugin contributions of an actor card; a contribution brings no spacing of its own. */
|
|
7
7
|
export const cardSectionsClass = "grid gap-2.5 border-t border-border-soft px-3 pt-2.5 pb-2.5 empty:hidden";
|
|
@@ -39,7 +39,7 @@ export const executionEventsFrom = (value: unknown, runId: string): readonly Jou
|
|
|
39
39
|
if (entry.type === "turn.finished") return typeof payload.turnId !== "string" || !["completed", "failed"].includes(String(payload.outcome));
|
|
40
40
|
if (entry.type === "turn.interrupted") return typeof payload.turnId !== "string" || typeof payload.reason !== "string";
|
|
41
41
|
return false;
|
|
42
|
-
})) throw new Error("
|
|
42
|
+
})) throw new Error("The server did not deliver a valid journal for this run.");
|
|
43
43
|
return value as JournalEvent[];
|
|
44
44
|
};
|
|
45
45
|
|
|
@@ -100,24 +100,24 @@ export const projectExecutions = (events: readonly JournalEvent[], view?: Pick<R
|
|
|
100
100
|
execution.status = "interrupted";
|
|
101
101
|
execution.finishedAt = ended?.at ?? turn?.finishedAt ?? null;
|
|
102
102
|
}
|
|
103
|
-
if (execution.status === "interrupted") execution.error = ended?.reason ?? turn?.reason ?? "
|
|
103
|
+
if (execution.status === "interrupted") execution.error = ended?.reason ?? turn?.reason ?? "The call was interrupted.";
|
|
104
104
|
}
|
|
105
105
|
return [...executions.values()].sort((left, right) => right.sequence - left.sequence);
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
-
export const executionStatusLabel = (status: ExecutionStatus): string => ({ running: "
|
|
108
|
+
export const executionStatusLabel = (status: ExecutionStatus): string => ({ running: "Running", completed: "Completed", failed: "Failed", interrupted: "Interrupted" })[status];
|
|
109
109
|
|
|
110
110
|
export const filterExecutions = (executions: readonly TypeScriptExecution[], query: string, status: ExecutionStatus | "all"): TypeScriptExecution[] => {
|
|
111
|
-
const search = query.trim().toLocaleLowerCase("
|
|
111
|
+
const search = query.trim().toLocaleLowerCase("en-US");
|
|
112
112
|
return executions.filter((execution) => (status === "all" || execution.status === status) && (!search || [
|
|
113
113
|
execution.actorId, execution.actorHandle, execution.actorName, execution.code, execution.path,
|
|
114
114
|
JSON.stringify(execution.result), ...execution.logs, execution.error, executionStatusLabel(execution.status),
|
|
115
|
-
].join("\n").toLocaleLowerCase("
|
|
115
|
+
].join("\n").toLocaleLowerCase("en-US").includes(search)));
|
|
116
116
|
};
|
|
117
117
|
|
|
118
118
|
export const executionDuration = (execution: Pick<TypeScriptExecution, "startedAt" | "finishedAt">, now: number): string => {
|
|
119
119
|
const milliseconds = Math.max(0, (execution.finishedAt ? Date.parse(execution.finishedAt) : now) - Date.parse(execution.startedAt));
|
|
120
|
-
if (!Number.isFinite(milliseconds)) return "
|
|
120
|
+
if (!Number.isFinite(milliseconds)) return "Duration unknown";
|
|
121
121
|
if (milliseconds < 1_000) return `${milliseconds} ms`;
|
|
122
122
|
const seconds = Math.floor(milliseconds / 1_000);
|
|
123
123
|
return seconds < 60 ? `${seconds} s` : `${Math.floor(seconds / 60)} min ${seconds % 60} s`;
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
|
|
19
19
|
export { ORCHESTRATION_PLUGIN_ID } from "./constants";
|
|
20
20
|
|
|
21
|
-
/**
|
|
21
|
+
/** The selection on the surface: an artifact opens the documents, every other entity becomes the selected tile and the reported location. */
|
|
22
22
|
function OrchestrationSessionProvider({ children, navigation, session }: SessionProviderProps) {
|
|
23
23
|
const runView = runViewFrom(session.runView);
|
|
24
24
|
const [selection, setSelection] = useState<EntityReference>();
|
|
@@ -49,7 +49,7 @@ export const webPlugin: WebPlugin = {
|
|
|
49
49
|
{ id: "ragents.orchestration.actors", order: 300, placement: "surface", Header: ActorShortcuts },
|
|
50
50
|
],
|
|
51
51
|
settings: [
|
|
52
|
-
{ id: "ragents.orchestration.runPanel", category: "appearance", label: "Run
|
|
52
|
+
{ id: "ragents.orchestration.runPanel", category: "appearance", label: "Run panel", Settings: RunPanelSettings },
|
|
53
53
|
],
|
|
54
54
|
surface: { Center: OrchestrationCenter, RunPanel: OrchestrationRunPanel },
|
|
55
55
|
cardSections: [{
|
|
@@ -11,7 +11,7 @@ import { ActorIcon, AddresseeTree } from "./AddresseeTree";
|
|
|
11
11
|
const chipClass = "flex h-7 min-w-[70px] max-w-[220px] flex-[0_1_auto] cursor-pointer items-center gap-1.5 rounded-full border border-border bg-background pr-2 pl-1 text-[0.72rem] font-semibold text-foreground hover:bg-accent aria-expanded:border-primary focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:outline-offset-1";
|
|
12
12
|
const busyClass = "flex h-7 min-w-0 flex-[0_1_auto] cursor-pointer items-center gap-1.5 rounded-md px-1.5 text-[0.7rem] text-muted-foreground hover:bg-accent hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:outline-offset-1";
|
|
13
13
|
|
|
14
|
-
/**
|
|
14
|
+
/** The chat's addressee as a chip in the input bar; the pop-out shows the actors as a tree by creator, the hidden ones behind their count. */
|
|
15
15
|
export function AddresseeControl({ hidden, onOpenChange, onReveal, onSelect, runId, selected, shown, technical, view }: {
|
|
16
16
|
hidden: readonly RunActor[];
|
|
17
17
|
onOpenChange: (open: boolean) => void;
|
|
@@ -57,13 +57,13 @@ export function AddresseeControl({ hidden, onOpenChange, onReveal, onSelect, run
|
|
|
57
57
|
(reveal ? onReveal : onSelect)(actor);
|
|
58
58
|
close(true);
|
|
59
59
|
};
|
|
60
|
-
const busyTitle = working.map((actor) => `@${actor.handle}
|
|
60
|
+
const busyTitle = working.map((actor) => `@${actor.handle} is working`).join(", ");
|
|
61
61
|
const busyPending = working.length > 0 ? pendingInputCount(view, working[0].id) : 0;
|
|
62
62
|
const treeProps = { onToggle: toggle, openByDefault: searching, selectedId: selected.id, summary, technical, toggled, view };
|
|
63
63
|
const listClass = "px-1.5 py-1";
|
|
64
64
|
|
|
65
65
|
return <>
|
|
66
|
-
<button aria-controls={open ? panelId : undefined} aria-expanded={open} aria-haspopup="dialog" className={chipClass} onClick={() => change(!open)} ref={buttonRef} title={`
|
|
66
|
+
<button aria-controls={open ? panelId : undefined} aria-expanded={open} aria-haspopup="dialog" className={chipClass} onClick={() => change(!open)} ref={buttonRef} title={`Addressee: @${selected.handle}. Click to choose another actor`} type="button">
|
|
67
67
|
<ActorIcon actor={selected} className="size-5" view={view} />
|
|
68
68
|
<span className="truncate">@{selected.handle}</span>
|
|
69
69
|
<ChevronDownIcon aria-hidden className="size-3 flex-none text-muted-foreground" />
|
|
@@ -74,16 +74,16 @@ export function AddresseeControl({ hidden, onOpenChange, onReveal, onSelect, run
|
|
|
74
74
|
{busyPending > 0 && <Badge className="h-4 min-w-4 px-1 text-[0.6rem]" variant="secondary">{busyPending}</Badge>}
|
|
75
75
|
{working.length > 1 && <span className="flex-none">+{working.length - 1}</span>}
|
|
76
76
|
</button>}
|
|
77
|
-
{open && <ActorPopout buttonRef={buttonRef} closeLabel="
|
|
77
|
+
{open && <ActorPopout buttonRef={buttonRef} closeLabel="Close addressee" height={460} id={panelId} label="Addressee" onClose={close} open placement="top" role="dialog" width="available">
|
|
78
78
|
{shown.length + hidden.length > ADDRESSEE_SEARCH_ABOVE && <div className="flex-none border-b border-border-soft px-2.5 py-1.5">
|
|
79
|
-
<Input aria-label="
|
|
79
|
+
<Input aria-label="Search actors" className="h-7" onChange={(event) => setQuery(event.target.value)} placeholder="Search handle or task ..." type="search" value={query} />
|
|
80
80
|
</div>}
|
|
81
81
|
<div className="min-h-0 flex-1 overflow-auto overscroll-contain" ref={revealSelected}>
|
|
82
82
|
<AddresseeTree className={listClass} nodes={shownTree} onPick={(actor) => pick(actor, false)} {...treeProps} />
|
|
83
|
-
{searching && shownTree.length === 0 && hiddenMatches.length === 0 && <p className="px-3.5 py-2 text-muted-foreground">
|
|
83
|
+
{searching && shownTree.length === 0 && hiddenMatches.length === 0 && <p className="px-3.5 py-2 text-muted-foreground">No actor matches the search.</p>}
|
|
84
84
|
{hidden.length > 0 && (!searching || hiddenMatches.length > 0) && <div className="border-t border-border-soft">
|
|
85
85
|
<button aria-expanded={hiddenOpen} className="flex w-full cursor-pointer items-center justify-between gap-2 px-3.5 py-2 text-left text-muted-foreground hover:text-foreground focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:-outline-offset-2" onClick={() => setHiddenListed(!hiddenOpen)} type="button">
|
|
86
|
-
<span>{hidden.length}
|
|
86
|
+
<span>{hidden.length} hidden actors</span>
|
|
87
87
|
<ChevronDownIcon aria-hidden className={cn("size-3.5 flex-none transition-transform", hiddenOpen && "rotate-180")} />
|
|
88
88
|
</button>
|
|
89
89
|
{hiddenOpen && <AddresseeTree className={listClass} nodes={hiddenTree} onPick={(actor) => pick(actor, true)} {...treeProps} />}
|
|
@@ -19,7 +19,7 @@ const statusClass: Readonly<Record<AddresseeStatus, string>> = {
|
|
|
19
19
|
stopped: "text-muted-foreground/70",
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
const actorType = (actor: RunActor, technical: boolean) => !technical ? "Agent" : actor.kind === "agent" ? "LLM
|
|
22
|
+
const actorType = (actor: RunActor, technical: boolean) => !technical ? "Agent" : actor.kind === "agent" ? "LLM agent" : "TypeScript actor";
|
|
23
23
|
|
|
24
24
|
export function ActorIcon({ actor, className, view }: { actor: RunActor; className?: string; view: RunView }) {
|
|
25
25
|
const tone = actorTone(view, actor);
|
|
@@ -33,15 +33,15 @@ export interface AddresseeTreeProps {
|
|
|
33
33
|
selectedId: string;
|
|
34
34
|
technical: boolean;
|
|
35
35
|
summary: (actor: RunActor) => string | undefined;
|
|
36
|
-
/**
|
|
36
|
+
/** Groups whose expanded state the user toggled relative to the default. */
|
|
37
37
|
toggled: ReadonlySet<string>;
|
|
38
|
-
/**
|
|
38
|
+
/** Open without an own choice, e.g. during a search. */
|
|
39
39
|
openByDefault: boolean;
|
|
40
40
|
onToggle: (key: string) => void;
|
|
41
41
|
onPick: (actor: RunActor) => void;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
/**
|
|
44
|
+
/** The addressee tree: per actor handle, short description and state, similar siblings as an expandable group. */
|
|
45
45
|
export function AddresseeTree({ className, nodes, ...props }: AddresseeTreeProps & { className?: string; nodes: readonly AddresseeNode[] }) {
|
|
46
46
|
return <ul className={cn("list-none", className)}>
|
|
47
47
|
{nodes.map((node) => node.kind === "actor"
|
|
@@ -62,10 +62,10 @@ function ActorEntry({ actor, onPick, selectedId, summary, technical, view }: Add
|
|
|
62
62
|
const status = addresseeStatus(view, actor);
|
|
63
63
|
const description = summary(actor);
|
|
64
64
|
const name = actor.displayName.trim();
|
|
65
|
-
const showName = name !== "" && name.toLocaleLowerCase("
|
|
65
|
+
const showName = name !== "" && name.toLocaleLowerCase("en-US") !== actor.handle.toLocaleLowerCase("en-US") && name !== description;
|
|
66
66
|
const current = actor.id === selectedId;
|
|
67
67
|
return <button aria-current={current || undefined} className={entryClass} data-actor-handle={actor.handle} onClick={() => onPick(actor)}
|
|
68
|
-
title={`@${actor.handle}, ${actorType(actor, technical)}, ${addresseeStatusWord(status)}.
|
|
68
|
+
title={`@${actor.handle}, ${actorType(actor, technical)}, ${addresseeStatusWord(status)}. Address messages to @${actor.handle}`} type="button">
|
|
69
69
|
<ActorIcon actor={actor} className="size-5" view={view} />
|
|
70
70
|
<span className="grid min-w-0 flex-1">
|
|
71
71
|
<span className="flex min-w-0 items-baseline gap-1.5">
|
|
@@ -88,14 +88,14 @@ function GroupBranch({ node, ...props }: AddresseeTreeProps & { node: AddresseeG
|
|
|
88
88
|
const pending = actors.reduce((sum, actor) => sum + pendingInputCount(view, actor.id), 0);
|
|
89
89
|
return <li>
|
|
90
90
|
<button aria-expanded={open} className={entryClass} data-addressee-group={node.label} onClick={() => onToggle(node.key)}
|
|
91
|
-
title={`${node.label}: ${actors.length}
|
|
91
|
+
title={`${node.label}: ${actors.length} similar actors, ${counts}. Click ${open ? "collapses the group" : "shows all"}`} type="button">
|
|
92
92
|
<span className="grid size-5 flex-none place-items-center text-muted-foreground">
|
|
93
93
|
<ChevronRightIcon aria-hidden className={cn("size-3.5 transition-transform", open && "rotate-90")} />
|
|
94
94
|
</span>
|
|
95
95
|
<span className="grid min-w-0 flex-1">
|
|
96
96
|
<span className="flex min-w-0 items-baseline gap-1.5">
|
|
97
97
|
<span className="truncate font-semibold">{node.label}</span>
|
|
98
|
-
<span className="flex-none text-[0.66rem] text-muted-foreground">{actors.length}
|
|
98
|
+
<span className="flex-none text-[0.66rem] text-muted-foreground">{actors.length} actors</span>
|
|
99
99
|
</span>
|
|
100
100
|
<span className="truncate text-[0.66rem] text-muted-foreground">{counts}</span>
|
|
101
101
|
</span>
|
|
@@ -35,9 +35,9 @@ const chatLayoutClass: Readonly<Record<ChatLayout, string>> = {
|
|
|
35
35
|
const chatSurfaceClass = "rounded-none border-0 bg-transparent";
|
|
36
36
|
const chatModeButtonClass = "aria-pressed:bg-accent aria-pressed:text-primary";
|
|
37
37
|
const chatModes: readonly { Icon: typeof MessageSquareIcon; label: string; mode: RunPanelChatMode; title: string }[] = [
|
|
38
|
-
{ Icon: MessageSquareIcon, label: "
|
|
39
|
-
{ Icon: PanelBottomIcon, label: "Chat
|
|
40
|
-
{ Icon: PanelRightIcon, label: "Chat
|
|
38
|
+
{ Icon: MessageSquareIcon, label: "Chat only", mode: "chat", title: "Chat only: the chat fills the run panel, the mini-app steps back" },
|
|
39
|
+
{ Icon: PanelBottomIcon, label: "Chat at bottom", mode: "bottom", title: "Chat at bottom: the sheet over the mini-app" },
|
|
40
|
+
{ Icon: PanelRightIcon, label: "Chat on right", mode: "side", title: "Chat on right: next to the mini-app" },
|
|
41
41
|
];
|
|
42
42
|
|
|
43
43
|
interface RunPanelElement {
|
|
@@ -153,7 +153,7 @@ function RunPanel({ surfaceElements, cardSections, navigation, renderChat, sessi
|
|
|
153
153
|
|
|
154
154
|
return <div className="flex min-h-0 min-w-0 flex-1 flex-col bg-app" data-run-panel="run" ref={rootRef}>
|
|
155
155
|
{chatModeSwitch}
|
|
156
|
-
{layout !== "full" && elements.length > 1 && <nav aria-label="Mini-
|
|
156
|
+
{layout !== "full" && elements.length > 1 && <nav aria-label="Mini-apps of the run" className={chipRowClass}>
|
|
157
157
|
{elements.map(({ definition }) => <ElementChip
|
|
158
158
|
centered={centered.has(definition.id)}
|
|
159
159
|
definition={definition}
|
|
@@ -194,7 +194,7 @@ function RunPanel({ surfaceElements, cardSections, navigation, renderChat, sessi
|
|
|
194
194
|
>
|
|
195
195
|
{layout === "floating" && <button
|
|
196
196
|
aria-expanded={sheet.expanded}
|
|
197
|
-
aria-label="
|
|
197
|
+
aria-label="Height of the expanded chat"
|
|
198
198
|
aria-orientation="horizontal"
|
|
199
199
|
aria-valuemin={geometry.minimum}
|
|
200
200
|
aria-valuemax={geometry.maximum}
|
|
@@ -210,7 +210,7 @@ function RunPanel({ surfaceElements, cardSections, navigation, renderChat, sessi
|
|
|
210
210
|
onLostPointerCapture={resize.onPointerCancel}
|
|
211
211
|
ref={grabRef}
|
|
212
212
|
role="separator"
|
|
213
|
-
title={`
|
|
213
|
+
title={`Drag: set the expanded height. Click: ${sheet.expanded ? "lower chat" : "raise chat"}.`}
|
|
214
214
|
type="button"
|
|
215
215
|
><span aria-hidden className="h-1 w-9 rounded-full bg-border-strong transition-colors" /></button>}
|
|
216
216
|
{status && <button
|
|
@@ -229,14 +229,14 @@ function RunPanel({ surfaceElements, cardSections, navigation, renderChat, sessi
|
|
|
229
229
|
</div>;
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
/**
|
|
232
|
+
/** The three views of the run panel in the header; "Chat on right" stays disabled while the run panel is too narrow. */
|
|
233
233
|
function ChatModeSwitch({ narrow, onChange, selected, sideWidth }: {
|
|
234
234
|
narrow: boolean;
|
|
235
235
|
onChange: (mode: RunPanelChatMode) => void;
|
|
236
236
|
selected: RunPanelChatMode;
|
|
237
237
|
sideWidth: number;
|
|
238
238
|
}) {
|
|
239
|
-
return <div aria-label="
|
|
239
|
+
return <div aria-label="Run panel view" className="flex flex-none items-center gap-0.5 self-center rounded-lg border border-border bg-card p-0.5" role="group">
|
|
240
240
|
{chatModes.map(({ Icon, label, mode, title }) => {
|
|
241
241
|
const blocked = mode === "side" && narrow;
|
|
242
242
|
return <Button
|
|
@@ -247,14 +247,14 @@ function ChatModeSwitch({ narrow, onChange, selected, sideWidth }: {
|
|
|
247
247
|
key={mode}
|
|
248
248
|
onClick={() => onChange(mode)}
|
|
249
249
|
size="icon-sm"
|
|
250
|
-
title={blocked ? `Chat
|
|
250
|
+
title={blocked ? `Chat stays at the bottom while the panel is narrower than ${sideWidth} pixels` : title}
|
|
251
251
|
variant="ghost"
|
|
252
252
|
><Icon /></Button>;
|
|
253
253
|
})}
|
|
254
254
|
</div>;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
/**
|
|
257
|
+
/** The sheet: mouse, focus or the grip raise it; Escape, the stage or the grip lower it. An open pop-out keeps it up. */
|
|
258
258
|
function useSheet(active: boolean, sheetRef: RefObject<HTMLElement | null>, grabRef: RefObject<HTMLButtonElement | null>, blocked: boolean, openDelay: number) {
|
|
259
259
|
const [expanded, setExpanded] = useState(false);
|
|
260
260
|
const [held, setHeld] = useState(false);
|
|
@@ -307,7 +307,7 @@ function useSheet(active: boolean, sheetRef: RefObject<HTMLElement | null>, grab
|
|
|
307
307
|
return { expanded, held, open, openLater, closeLater, close, toggle, pauseResize, finishResize };
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
-
/**
|
|
310
|
+
/** The height of the collapsed sheet: grip, status line and input including open actions above it, measured on the input of the chat frame. */
|
|
311
311
|
function useSheetPeek(active: boolean, sheetRef: RefObject<HTMLElement | null>, grabRef: RefObject<HTMLButtonElement | null>, statusRef: RefObject<HTMLButtonElement | null>, actorId: string | undefined) {
|
|
312
312
|
const [geometry, setGeometry] = useState({ minimum: 0, maximum: 0, available: 0, scale: 1 });
|
|
313
313
|
useLayoutEffect(() => {
|
|
@@ -317,7 +317,7 @@ function useSheetPeek(active: boolean, sheetRef: RefObject<HTMLElement | null>,
|
|
|
317
317
|
const status = statusRef.current;
|
|
318
318
|
const composer = sheet?.querySelector<HTMLElement>('[data-chat="composer"]');
|
|
319
319
|
const container = sheet?.parentElement;
|
|
320
|
-
if (!sheet || !grab || !composer || !container) throw new Error("
|
|
320
|
+
if (!sheet || !grab || !composer || !container) throw new Error("The panel sheet cannot find the grip, input or frame.");
|
|
321
321
|
const measure = () => {
|
|
322
322
|
const style = getComputedStyle(sheet);
|
|
323
323
|
const width = sheet.getBoundingClientRect().width;
|
|
@@ -422,10 +422,10 @@ function ElementChip({ centered, definition, onSelect, selected, session, view }
|
|
|
422
422
|
const programs = useProgramSlot();
|
|
423
423
|
const title = definition.title ?? definition.id;
|
|
424
424
|
const attention = elementNeedsAttention(view, definition, programs?.needsAnswer(session, definition.id) ?? false);
|
|
425
|
-
return <button aria-pressed={selected && !centered} className={chipClass} data-tone="app" onClick={onSelect} title={centered ? `${title}
|
|
425
|
+
return <button aria-pressed={selected && !centered} className={chipClass} data-tone="app" onClick={onSelect} title={centered ? `${title} is in the center. Click brings the window to the front.` : `Show mini-app ${title}`} type="button">
|
|
426
426
|
<span className="grid size-5 flex-none place-items-center rounded-full bg-glass-app text-foreground [&>svg]:size-3"><LayoutGridIcon /></span>
|
|
427
427
|
<span className="truncate">{title}</span>
|
|
428
|
-
{attention && <span aria-label="
|
|
428
|
+
{attention && <span aria-label="Answer expected" className="grid size-4 flex-none place-items-center rounded-full bg-warning text-[0.62rem] font-bold text-background" role="img">!</span>}
|
|
429
429
|
{centered && <ArrowUpRightIcon aria-hidden className="size-3 flex-none text-muted-foreground" />}
|
|
430
430
|
</button>;
|
|
431
431
|
}
|
|
@@ -442,24 +442,24 @@ function RunPanelStage({ centered, element, navigation, peek, runId, session }:
|
|
|
442
442
|
const programs = useProgramSlot();
|
|
443
443
|
const { Element, definition } = element;
|
|
444
444
|
const title = definition.title ?? definition.id;
|
|
445
|
-
return <section aria-label={`Mini-
|
|
445
|
+
return <section aria-label={`Mini-app ${title}`} className="group/stage relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-app" style={peek > 0 ? { paddingBottom: peek } : undefined}>
|
|
446
446
|
<div className="absolute top-1.5 right-2 z-[5] flex gap-0.5 rounded-lg border border-border bg-card p-0.5 opacity-0 transition-opacity group-hover/stage:opacity-100 group-focus-within/stage:opacity-100 motion-reduce:transition-none">
|
|
447
447
|
{host.kind === "vscode"
|
|
448
|
-
? <Button aria-label={
|
|
449
|
-
: programs && <Button aria-label={
|
|
448
|
+
? <Button aria-label={`Move ${title} to the center`} onClick={() => host.openInCenter(runId, definition.id, title)} size="icon-sm" title="Move to the center" variant="ghost"><ArrowUpRightIcon /></Button>
|
|
449
|
+
: programs && <Button aria-label={`Open ${title} in full view`} onClick={() => programs.openFullscreen(definition.id)} size="icon-sm" title="Full view" variant="ghost"><Maximize2Icon /></Button>}
|
|
450
450
|
</div>
|
|
451
451
|
<div className="relative flex min-h-0 flex-1 flex-col" data-run-panel="stage">
|
|
452
452
|
{centered
|
|
453
453
|
? <div className="m-auto grid gap-3 p-4 text-center text-[0.76rem] text-muted-foreground" role="status">
|
|
454
|
-
<span>{title}
|
|
455
|
-
<Button onClick={() => host.returnToRunPanel(runId, definition.id)} size="sm" variant="outline">
|
|
454
|
+
<span>{title} is in the center.</span>
|
|
455
|
+
<Button onClick={() => host.returnToRunPanel(runId, definition.id)} size="sm" variant="outline">Back to panel</Button>
|
|
456
456
|
</div>
|
|
457
457
|
: <Element definition={definition} navigation={navigation} session={session} />}
|
|
458
458
|
</div>
|
|
459
459
|
</section>;
|
|
460
460
|
}
|
|
461
461
|
|
|
462
|
-
/**
|
|
462
|
+
/** The vertical grip between stage and the chat next to it; dragging left makes the chat wider. */
|
|
463
463
|
function Sash({ onChange, onCommit, value }: { onChange: (next: number) => void; onCommit: (next: number) => void; value: number }) {
|
|
464
464
|
const drag = useRef<{ startX: number; startWidth: number }>(undefined);
|
|
465
465
|
const finish = (event: PointerEvent<HTMLDivElement>) => {
|
|
@@ -469,7 +469,7 @@ function Sash({ onChange, onCommit, value }: { onChange: (next: number) => void;
|
|
|
469
469
|
onCommit(value);
|
|
470
470
|
};
|
|
471
471
|
return <div
|
|
472
|
-
aria-label="
|
|
472
|
+
aria-label="Chat width"
|
|
473
473
|
aria-orientation="vertical"
|
|
474
474
|
aria-valuenow={value}
|
|
475
475
|
className="flex w-2.5 flex-none cursor-col-resize touch-none items-center justify-center border-r border-l border-border bg-shell select-none hover:bg-accent focus-visible:outline-2 focus-visible:outline-ring/60 focus-visible:-outline-offset-2"
|
|
@@ -516,7 +516,7 @@ function ActorRunPanelChat({ actor, cardSections, navigation, notice, onNavigate
|
|
|
516
516
|
</div>;
|
|
517
517
|
}
|
|
518
518
|
|
|
519
|
-
/**
|
|
519
|
+
/** The loading state centered in the chat; it only moves up where it would otherwise end up under the input. */
|
|
520
520
|
function RunPanelStartup({ state }: { state: SurfaceStartupState }) {
|
|
521
521
|
return <div className="grid min-h-0 flex-1 grid-rows-[minmax(0,1fr)_auto_minmax(var(--qsl-composer-height,0px),1fr)] justify-items-center overflow-hidden p-6">
|
|
522
522
|
<StartupNotice className="row-start-2" state={state} />
|
|
@@ -8,9 +8,9 @@ type Draft = Record<keyof RunPanelSettingsValue, string>;
|
|
|
8
8
|
const toDraft = (value: RunPanelSettingsValue): Draft => ({ sideWidth: String(value.sideWidth), openDelay: String(value.openDelay), closeDelay: String(value.closeDelay) });
|
|
9
9
|
|
|
10
10
|
const fields: readonly { key: keyof RunPanelSettingsValue; label: string; unit: string }[] = [
|
|
11
|
-
{ key: "sideWidth", label: "Chat
|
|
12
|
-
{ key: "openDelay", label: "
|
|
13
|
-
{ key: "closeDelay", label: "
|
|
11
|
+
{ key: "sideWidth", label: "Chat next to the mini-app from", unit: "px" },
|
|
12
|
+
{ key: "openDelay", label: "Slide up after", unit: "ms" },
|
|
13
|
+
{ key: "closeDelay", label: "Slide back after leaving after", unit: "ms" },
|
|
14
14
|
];
|
|
15
15
|
|
|
16
16
|
export function RunPanelSettings() {
|
|
@@ -27,7 +27,7 @@ export function RunPanelSettings() {
|
|
|
27
27
|
setMessage(undefined);
|
|
28
28
|
try {
|
|
29
29
|
saveRunPanelSettings(next);
|
|
30
|
-
setMessage("
|
|
30
|
+
setMessage("Run panel settings saved.");
|
|
31
31
|
} catch (cause) {
|
|
32
32
|
setError(cause instanceof Error ? cause.message : String(cause));
|
|
33
33
|
}
|
|
@@ -36,14 +36,14 @@ export function RunPanelSettings() {
|
|
|
36
36
|
event.preventDefault();
|
|
37
37
|
save({ sideWidth: Number(draft.sideWidth), openDelay: Number(draft.openDelay), closeDelay: Number(draft.closeDelay) });
|
|
38
38
|
}}>
|
|
39
|
-
<p className="text-muted-foreground">
|
|
39
|
+
<p className="text-muted-foreground">From this panel width on, the chat sits to the right of the mini-app instead of as a sheet below it. The delays determine how long the mouse must rest over the sheet until it slides up, and how long it stays up after leaving. Applies immediately to all runs in this browser.</p>
|
|
40
40
|
<div className="flex flex-wrap items-end gap-3">
|
|
41
41
|
{fields.map(({ key, label, unit }) => <label className="grid gap-1.5" key={key}>
|
|
42
42
|
<span>{label} ({unit})</span>
|
|
43
43
|
<Input className="w-[130px]" disabled={!writable} max={RUN_PANEL_SETTINGS_LIMITS[key].max} min={RUN_PANEL_SETTINGS_LIMITS[key].min} onChange={(event) => { setDraft({ ...draft, [key]: event.target.value }); setMessage(undefined); }} required step="1" type="number" value={draft[key]} />
|
|
44
44
|
</label>)}
|
|
45
|
-
<Button disabled={!writable} type="submit">
|
|
46
|
-
<Button disabled={!writable} onClick={() => save(DEFAULT_RUN_PANEL_SETTINGS)} variant="outline">
|
|
45
|
+
<Button disabled={!writable} type="submit">Save</Button>
|
|
46
|
+
<Button disabled={!writable} onClick={() => save(DEFAULT_RUN_PANEL_SETTINGS)} variant="outline">Reset</Button>
|
|
47
47
|
</div>
|
|
48
48
|
{error ? <p className="text-muted-foreground" role="alert">{error}</p> : message && <p className="text-muted-foreground" role="status">{message}</p>}
|
|
49
49
|
</form>;
|