@schlenkr/ragents 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +9 -39
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +32 -29
- package/apps/server/src/api/core-methods.ts +21 -19
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +8 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +63 -58
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +25 -24
- package/apps/server/src/ragents/global-chat.ts +14 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +51 -49
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +64 -55
- package/apps/web/dist/help/guide-clients.md +62 -52
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +1997 -942
- package/apps/web/dist/help/mini-app.css +30 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +26 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +29 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +34 -27
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +256 -228
- package/bundles/ragents.actor-programs/server/index.js.map +4 -4
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -4
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +4 -4
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +3 -3
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +99 -99
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +83 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/core/tools/bash.d.ts +1 -1
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/core/tools/bash.ts +1 -1
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/index.ts +1 -0
- package/packages/ragents/src/plugin-host.ts +162 -116
- package/packages/ragents/src/plugin-types.ts +29 -10
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +35 -7
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +37 -31
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/index.ts +2 -0
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -8
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +29 -28
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +10 -10
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +8 -8
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +8 -5
- package/plugins/ragents.workspace/server/index.ts +5 -4
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
- package/apps/web/dist/assets/runPanel-ZT6TPDLM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -10,14 +10,14 @@ const modelRelayPlugin: RAgentsPlugin = {
|
|
|
10
10
|
register: (host) => {
|
|
11
11
|
const upstreams = host.service(modelUpstreamsToken);
|
|
12
12
|
let resolved: readonly ResolvedAlias[] | undefined;
|
|
13
|
-
const aliases = (): readonly ResolvedAlias[] => resolved ??= resolveAliases(modelRelayConfig.aliases(), upstreams());
|
|
13
|
+
const aliases = (): readonly ResolvedAlias[] => resolved ??= resolveAliases(modelRelayConfig.aliases(), modelRelayConfig.upstreams(upstreams()));
|
|
14
14
|
const log = new Protocol(host.storage.root("relay.log"));
|
|
15
15
|
host.lifecycle({
|
|
16
16
|
id: "ragents.model-relay",
|
|
17
17
|
initialize: () => {
|
|
18
18
|
const list = aliases();
|
|
19
19
|
log.write(`=== Start: ${list.map((entry) => `${entry.alias}=${entry.upstream.id}/${entry.model.id}`).join(", ")} ===`);
|
|
20
|
-
console.log(`
|
|
20
|
+
console.log(`Model relay: ${list.length} aliases under /relay/v1 (${list.map((entry) => entry.alias).join(", ")})`);
|
|
21
21
|
},
|
|
22
22
|
shutdown: () => log.close(),
|
|
23
23
|
});
|
|
@@ -4,7 +4,7 @@ import { pipeline } from "node:stream/promises";
|
|
|
4
4
|
import type { ReadableStream } from "node:stream/web";
|
|
5
5
|
import type { HttpRouteContribution } from "@ragents/engine";
|
|
6
6
|
import { PayloadTooLargeError, readBody, writeJson } from "@ragents/host/plugin-support/http.js";
|
|
7
|
-
import type
|
|
7
|
+
import { validatedAliasModel, type ModelAlias } from "@ragents/host/plugin-support/model-aliases.js";
|
|
8
8
|
import type { ModelUpstream } from "@ragents/host/plugin-support/model-upstreams.js";
|
|
9
9
|
|
|
10
10
|
export const RELAY_PATH_PREFIX = "/relay/v1";
|
|
@@ -18,35 +18,36 @@ export interface ResolvedAlias {
|
|
|
18
18
|
readonly alias: string;
|
|
19
19
|
readonly upstream: ModelUpstream;
|
|
20
20
|
readonly model: ModelUpstream["models"][number];
|
|
21
|
-
|
|
21
|
+
/** The model as the alias offers it: with its thinking levels and compaction values. */
|
|
22
|
+
readonly offered: ModelUpstream["models"][number];
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
/**
|
|
25
|
+
/** Every alias must point to a configured provider and a model from its catalog that its thinking levels and compaction values fit. */
|
|
25
26
|
export const resolveAliases = (aliases: readonly ModelAlias[], upstreams: readonly ModelUpstream[]): readonly ResolvedAlias[] =>
|
|
26
27
|
aliases.map((entry) => {
|
|
27
28
|
const upstream = upstreams.find((candidate) => candidate.id === entry.upstream);
|
|
28
29
|
if (!upstream) {
|
|
29
|
-
const available = upstreams.map((candidate) => candidate.id).join(", ") || "
|
|
30
|
-
throw new Error(`MODEL_ALIASES:
|
|
30
|
+
const available = upstreams.map((candidate) => candidate.id).join(", ") || "none";
|
|
31
|
+
throw new Error(`MODEL_ALIASES: the provider ${entry.upstream} behind ${entry.alias} is not configured on this server (available: ${available})`);
|
|
31
32
|
}
|
|
32
33
|
const model = upstream.models.find((candidate) => candidate.id === entry.model);
|
|
33
|
-
if (!model) throw new Error(`MODEL_ALIASES:
|
|
34
|
-
return { alias: entry.alias, upstream, model,
|
|
34
|
+
if (!model) throw new Error(`MODEL_ALIASES: the model ${entry.model} behind ${entry.alias} is missing from the catalog of ${entry.upstream}`);
|
|
35
|
+
return { alias: entry.alias, upstream, model, offered: validatedAliasModel(entry, model) };
|
|
35
36
|
});
|
|
36
37
|
|
|
37
|
-
/**
|
|
38
|
+
/** The catalog entry names only what the consumer needs for the wire and compaction; name, provider and costs stay with the server. */
|
|
38
39
|
export const catalogEntryOf = (resolved: ResolvedAlias) => ({
|
|
39
40
|
id: resolved.alias,
|
|
40
41
|
object: "model" as const,
|
|
41
42
|
owned_by: "relay",
|
|
42
43
|
catalog: {
|
|
43
|
-
reasoning: resolved.
|
|
44
|
-
...(resolved.
|
|
45
|
-
input: [...resolved.
|
|
46
|
-
contextWindow: resolved.
|
|
47
|
-
maxTokens: resolved.
|
|
48
|
-
compaction: resolved.compaction,
|
|
49
|
-
...(resolved.
|
|
44
|
+
reasoning: resolved.offered.reasoning,
|
|
45
|
+
...(resolved.offered.thinkingLevelMap ? { thinkingLevelMap: resolved.offered.thinkingLevelMap } : {}),
|
|
46
|
+
input: [...resolved.offered.input],
|
|
47
|
+
contextWindow: resolved.offered.contextWindow,
|
|
48
|
+
maxTokens: resolved.offered.maxTokens,
|
|
49
|
+
compaction: resolved.offered.compaction,
|
|
50
|
+
...(resolved.offered.compat ? { compat: resolved.offered.compat } : {}),
|
|
50
51
|
},
|
|
51
52
|
});
|
|
52
53
|
|
|
@@ -55,7 +56,7 @@ interface Usage {
|
|
|
55
56
|
readonly completion: number | undefined;
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
/**
|
|
59
|
+
/** Replaces the real model name with the alias in the forwarded stream, removes the provider and remembers the last usage block. */
|
|
59
60
|
const responseRewriter = (alias: string) => {
|
|
60
61
|
const decoder = new TextDecoder();
|
|
61
62
|
let pending = "";
|
|
@@ -139,7 +140,7 @@ export const createRelayRoutes = (options: RelayRouteOptions): HttpRouteContribu
|
|
|
139
140
|
matches: (request, url) => request.method === "POST" && url.pathname === completionsPath,
|
|
140
141
|
requiredRights: [RELAY_RIGHT],
|
|
141
142
|
handle: async ({ request, response, access }) => {
|
|
142
|
-
const user = access.user?.id ?? "
|
|
143
|
+
const user = access.user?.id ?? "anonymous";
|
|
143
144
|
let text: string;
|
|
144
145
|
try {
|
|
145
146
|
text = await readBody(request, MAX_REQUEST_BYTES);
|
|
@@ -152,17 +153,17 @@ export const createRelayRoutes = (options: RelayRouteOptions): HttpRouteContribu
|
|
|
152
153
|
try { parsed = JSON.parse(text); }
|
|
153
154
|
catch { parsed = undefined; }
|
|
154
155
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
155
|
-
writeJson(response, 400, openAiError("
|
|
156
|
+
writeJson(response, 400, openAiError("The request body is not a JSON object", "invalid_request_error"));
|
|
156
157
|
return;
|
|
157
158
|
}
|
|
158
159
|
const alias = (parsed as { model?: unknown }).model;
|
|
159
160
|
if (typeof alias !== "string" || !alias) {
|
|
160
|
-
writeJson(response, 400, openAiError("
|
|
161
|
+
writeJson(response, 400, openAiError("The request names no model", "invalid_request_error"));
|
|
161
162
|
return;
|
|
162
163
|
}
|
|
163
164
|
const resolved = options.aliases().find((candidate) => candidate.alias === alias);
|
|
164
165
|
if (!resolved) {
|
|
165
|
-
writeJson(response, 404, openAiError(`
|
|
166
|
+
writeJson(response, 404, openAiError(`The model ${alias} is unknown on this relay`, "invalid_request_error"));
|
|
166
167
|
return;
|
|
167
168
|
}
|
|
168
169
|
const controller = new AbortController();
|
|
@@ -179,8 +180,8 @@ export const createRelayRoutes = (options: RelayRouteOptions): HttpRouteContribu
|
|
|
179
180
|
} catch (error) {
|
|
180
181
|
if (controller.signal.aborted) return;
|
|
181
182
|
const reason = error instanceof Error ? error.message : String(error);
|
|
182
|
-
options.log(`${user} ${alias} -> ${resolved.upstream.id}/${resolved.model.id}:
|
|
183
|
-
writeJson(response, 502, openAiError(`
|
|
183
|
+
options.log(`${user} ${alias} -> ${resolved.upstream.id}/${resolved.model.id}: unreachable (${reason})`);
|
|
184
|
+
writeJson(response, 502, openAiError(`The provider behind ${alias} is unreachable`, "server_error"));
|
|
184
185
|
return;
|
|
185
186
|
}
|
|
186
187
|
response.writeHead(upstream.status, {
|
|
@@ -21,15 +21,15 @@ export const surfaceEntityOf = (text: string): SurfaceEntity => {
|
|
|
21
21
|
const trimmed = text.trim();
|
|
22
22
|
if (trimmed.startsWith("@")) {
|
|
23
23
|
const handle = handleKey(trimmed);
|
|
24
|
-
if (!handle || /\s/.test(handle)) throw new Error(`
|
|
24
|
+
if (!handle || /\s/.test(handle)) throw new Error(`Entity ${JSON.stringify(text)}: a handle is missing after the @`);
|
|
25
25
|
return { kind: "actor", handle };
|
|
26
26
|
}
|
|
27
27
|
const match = /^app:(.+)$/s.exec(trimmed);
|
|
28
28
|
if (!match) {
|
|
29
|
-
throw new Error(`
|
|
29
|
+
throw new Error(`Entity ${JSON.stringify(text)}: expected @handle or app:<id>`);
|
|
30
30
|
}
|
|
31
31
|
const id = match[1].trim();
|
|
32
|
-
if (!id) throw new Error(`
|
|
32
|
+
if (!id) throw new Error(`Entity ${JSON.stringify(text)}: the ID after the colon is empty`);
|
|
33
33
|
return { kind: "app", id };
|
|
34
34
|
};
|
|
35
35
|
|
|
@@ -38,14 +38,14 @@ export const surfaceEntityKey = (entity: SurfaceEntity): string =>
|
|
|
38
38
|
|
|
39
39
|
const LEGACY_KEYS = ["nodes", "shapes", "lines", "mode"] as const;
|
|
40
40
|
|
|
41
|
-
/** Parses and validates a tile layout; throws
|
|
41
|
+
/** Parses and validates a tile layout; throws an error naming the first violation. */
|
|
42
42
|
export const surfaceLayoutOf = (value: unknown): SurfaceLayout => {
|
|
43
|
-
if (!isRecord(value)) throw new Error("
|
|
43
|
+
if (!isRecord(value)) throw new Error("The arrangement must be an object with root");
|
|
44
44
|
const legacy = LEGACY_KEYS.filter((key) => key in value);
|
|
45
45
|
if (legacy.length > 0) {
|
|
46
|
-
throw new Error(`
|
|
47
|
-
+ "canvas_layout_replace
|
|
46
|
+
throw new Error(`The program arrangement comes from the removed free surface (${legacy.join(", ")}); `
|
|
47
|
+
+ "canvas_layout_replace with root sets it anew as a tile layout");
|
|
48
48
|
}
|
|
49
|
-
if (!("root" in value)) throw new Error("root
|
|
49
|
+
if (!("root" in value)) throw new Error("root is missing; expected a tile, a split or null");
|
|
50
50
|
return { root: value.root === null ? null : surfaceTileNodeOf(value.root) };
|
|
51
51
|
};
|
|
@@ -21,13 +21,13 @@ const orchestrationPlugin: RAgentsPlugin = {
|
|
|
21
21
|
host.functions(createSurfaceToolContributor());
|
|
22
22
|
host.functions(createRunStopContributor(
|
|
23
23
|
(runId) => host.service(runManagementToken)().stop(runId),
|
|
24
|
-
(error) => console.error("Run
|
|
24
|
+
(error) => console.error("Run stop by the coordinator failed", error),
|
|
25
25
|
));
|
|
26
26
|
host.operations({
|
|
27
27
|
id: "actor_input",
|
|
28
|
-
label: "
|
|
29
|
-
description: "
|
|
30
|
-
+ "
|
|
28
|
+
label: "Enqueue actor input",
|
|
29
|
+
description: "Enqueues a normal text input for an actor under the bound identity - "
|
|
30
|
+
+ "as an agent or, from an app action, as the owner of the run. Only confirms the enqueueing. TypeScript actors understand only their programmed input protocol, no free-form tasks.",
|
|
31
31
|
schema: actorInputSchema,
|
|
32
32
|
resultSchema: eventResultSchemaOf("actor.input.enqueued"),
|
|
33
33
|
operator: "direct",
|
|
@@ -4,15 +4,15 @@ import { toolDescriptorFrom } from "@ragents/host/plugin-support/agent-tool.js";
|
|
|
4
4
|
|
|
5
5
|
const available = defineToolAvailability({
|
|
6
6
|
availability: "conditional",
|
|
7
|
-
availabilityDetail: "
|
|
7
|
+
availabilityDetail: "For the primary actor with execution.stopOwned in its own run.",
|
|
8
8
|
requiredCapabilities: ["execution.stopOwned"],
|
|
9
9
|
}, (actor, view) => actor.kind !== "human" && actor.id === view.primaryActorId && holdsUsable(actor, "execution.stopOwned"));
|
|
10
10
|
|
|
11
11
|
export const createRunStopContributor = (stop: (runId: string) => Promise<void>, onError: (error: unknown) => void): ToolContributor => {
|
|
12
12
|
const definition = defineRunFunction({
|
|
13
13
|
name: "run_stop",
|
|
14
|
-
label: "
|
|
15
|
-
description: "
|
|
14
|
+
label: "Stop run",
|
|
15
|
+
description: "Initiates the complete stop of your own run: running turns, tools, subagents and plugin services. Conversation and files are kept. Also cancels your own turn; acceptance is not a confirmation of completed cleanup. Use immediately when the user wants a complete cancellation; do not send a cancel message to busy agents.",
|
|
16
16
|
schema: Type.Object({}, { additionalProperties: false }),
|
|
17
17
|
resultSchema: Type.Object({ requested: Type.Literal(true) }, { additionalProperties: false }),
|
|
18
18
|
available,
|
|
@@ -36,7 +36,7 @@ export const surfaceToolMetadata = {
|
|
|
36
36
|
|
|
37
37
|
export const canDesignSurface = defineToolAvailability({
|
|
38
38
|
availability: "conditional",
|
|
39
|
-
availabilityDetail: "
|
|
39
|
+
availabilityDetail: "Only for agents and TypeScript actors with the capability plugin.state.write.",
|
|
40
40
|
requiredCapabilities: ["plugin.state.write"],
|
|
41
41
|
}, (actor) => actor.kind !== "human" && holdsUsable(actor, "plugin.state.write"));
|
|
42
42
|
|
|
@@ -72,15 +72,15 @@ const isStopped = (actor: RunView["actors"][number]) => actor.kind !== "human" &
|
|
|
72
72
|
|
|
73
73
|
const surfaceActorOf = (view: RunView, reference: string, where: string) => {
|
|
74
74
|
const entity = surfaceEntityOf(reference);
|
|
75
|
-
if (entity.kind !== "actor") throw invalid(`${where}: ${reference}
|
|
75
|
+
if (entity.kind !== "actor") throw invalid(`${where}: ${reference} is not an actor`);
|
|
76
76
|
const handle = entity.handle;
|
|
77
77
|
const found = actorByHandle(view.actors, handle);
|
|
78
78
|
if (!found) {
|
|
79
79
|
const known = view.actors.filter((actor) => actor.kind !== "human").map((actor) => `@${actor.handle}`);
|
|
80
|
-
throw invalid(`${where}: @${handle}
|
|
80
|
+
throw invalid(`${where}: @${handle} is not an actor of this run. Present: ${known.join(", ") || "none"}`);
|
|
81
81
|
}
|
|
82
82
|
if (found.kind === "human") {
|
|
83
|
-
throw invalid(`${where}: @${handle}
|
|
83
|
+
throw invalid(`${where}: @${handle} is the human in the chat; the chat is fixed to the left of the surface`);
|
|
84
84
|
}
|
|
85
85
|
return found;
|
|
86
86
|
};
|
|
@@ -102,7 +102,7 @@ const resolveAppReferences = (view: RunView, layout: SurfaceLayout): SurfaceLayo
|
|
|
102
102
|
try {
|
|
103
103
|
return `app:${resolveActorView(programs, entity.id).view.id}`;
|
|
104
104
|
} catch (error) {
|
|
105
|
-
throw invalid(`${where}: ${reference}: ${error instanceof Error ? error.message : String(error)}
|
|
105
|
+
throw invalid(`${where}: ${reference}: ${error instanceof Error ? error.message : String(error)} Surface entities get the prefix app:.`);
|
|
106
106
|
}
|
|
107
107
|
};
|
|
108
108
|
return parsedLayout({ root: layout.root ? mapSurfaceTileEntities(layout.root, (entity) => resolve(entity, "root")) : null });
|
|
@@ -8,28 +8,28 @@ export const MAX_SURFACE_TILES = 64;
|
|
|
8
8
|
export const surfaceTileNodeOf = (input: unknown): SurfaceTileNode => {
|
|
9
9
|
const entities = new Set<string>();
|
|
10
10
|
const parse = (value: unknown, where: string, depth: number): SurfaceTileNode => {
|
|
11
|
-
if (depth > MAX_SURFACE_TILE_DEPTH) throw new Error(`${where}:
|
|
12
|
-
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`${where}
|
|
11
|
+
if (depth > MAX_SURFACE_TILE_DEPTH) throw new Error(`${where}: at most ${MAX_SURFACE_TILE_DEPTH} nested splits are allowed`);
|
|
12
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`${where} must be a tile or a split`);
|
|
13
13
|
const node = value as Record<string, unknown>;
|
|
14
14
|
if (Object.hasOwn(node, "entity")) {
|
|
15
|
-
if (Object.keys(node).some((key) => key !== "entity" && key !== "chatInput")) throw new Error(`${where}:
|
|
16
|
-
if (typeof node.entity !== "string") throw new Error(`${where}.entity
|
|
15
|
+
if (Object.keys(node).some((key) => key !== "entity" && key !== "chatInput")) throw new Error(`${where}: a tile carries only entity and chatInput; a split direction, weights and children`);
|
|
16
|
+
if (typeof node.entity !== "string") throw new Error(`${where}.entity must be @handle or app:<name>/<view>`);
|
|
17
17
|
const entity = surfaceEntityOf(node.entity);
|
|
18
18
|
const key = surfaceEntityKey(entity);
|
|
19
19
|
if (node.chatInput !== undefined && (entity.kind !== "actor" || typeof node.chatInput !== "boolean")) {
|
|
20
|
-
throw new Error(`${where}.chatInput
|
|
20
|
+
throw new Error(`${where}.chatInput is only allowed for actors, as a boolean`);
|
|
21
21
|
}
|
|
22
|
-
if (entities.has(key)) throw new Error(`${where}: ${key}
|
|
22
|
+
if (entities.has(key)) throw new Error(`${where}: ${key} is placed as a tile more than once`);
|
|
23
23
|
entities.add(key);
|
|
24
|
-
if (entities.size > MAX_SURFACE_TILES) throw new Error(`
|
|
24
|
+
if (entities.size > MAX_SURFACE_TILES) throw new Error(`At most ${MAX_SURFACE_TILES} tiles are allowed`);
|
|
25
25
|
return node.chatInput === undefined ? { entity: key } : { entity: key, chatInput: node.chatInput as boolean };
|
|
26
26
|
}
|
|
27
|
-
if (Object.keys(node).some((key) => !["direction", "weights", "children"].includes(key))) throw new Error(`${where}:
|
|
28
|
-
if (node.direction !== "horizontal" && node.direction !== "vertical") throw new Error(`${where}.direction
|
|
27
|
+
if (Object.keys(node).some((key) => !["direction", "weights", "children"].includes(key))) throw new Error(`${where}: a split carries only direction, weights and children`);
|
|
28
|
+
if (node.direction !== "horizontal" && node.direction !== "vertical") throw new Error(`${where}.direction must be horizontal or vertical`);
|
|
29
29
|
if (!Array.isArray(node.weights) || node.weights.length !== 2 || node.weights.some((weight) => typeof weight !== "number" || !Number.isFinite(weight) || weight <= 0)) {
|
|
30
|
-
throw new Error(`${where}.weights
|
|
30
|
+
throw new Error(`${where}.weights must contain exactly two finite positive numbers`);
|
|
31
31
|
}
|
|
32
|
-
if (!Array.isArray(node.children) || node.children.length !== 2) throw new Error(`${where}.children
|
|
32
|
+
if (!Array.isArray(node.children) || node.children.length !== 2) throw new Error(`${where}.children must contain exactly two tiles or splits`);
|
|
33
33
|
return {
|
|
34
34
|
direction: node.direction,
|
|
35
35
|
weights: [node.weights[0], node.weights[1]],
|
|
@@ -14,7 +14,7 @@ export function ActorChat({ actor, view, presentation, display = presentation, p
|
|
|
14
14
|
actor: RunActor;
|
|
15
15
|
view: RunView;
|
|
16
16
|
presentation: "surface" | "inspector";
|
|
17
|
-
/**
|
|
17
|
+
/** Key of the display surface for the remembered detail level; defaults to the presentation. */
|
|
18
18
|
display?: string;
|
|
19
19
|
primaryMessages?: readonly Message[];
|
|
20
20
|
conversation?: readonly Message[];
|
|
@@ -43,7 +43,7 @@ export function ActorChat({ actor, view, presentation, display = presentation, p
|
|
|
43
43
|
<ChatMessages
|
|
44
44
|
className={className}
|
|
45
45
|
detailMode={detailMode}
|
|
46
|
-
emptyState={<Empty><EmptyHeader><EmptyTitle>{actor.kind === "script" ? "
|
|
46
|
+
emptyState={<Empty><EmptyHeader><EmptyTitle>{actor.kind === "script" ? "No history yet" : "No conversation yet"}</EmptyTitle><EmptyDescription>{actor.kind === "script" ? "Program inputs and their processing appear here." : "Write a message to start the conversation."}</EmptyDescription></EmptyHeader></Empty>}
|
|
47
47
|
messages={messages}
|
|
48
48
|
renderAction={renderAction}
|
|
49
49
|
renderTool={renderTool}
|
|
@@ -26,8 +26,8 @@ export function ActorChatControls({ actor, view, composerVisible = true, present
|
|
|
26
26
|
const [stopError, setStopError] = useState<string>();
|
|
27
27
|
const chatView = useChatViewSettings(view.id, actor.id, "agents", display);
|
|
28
28
|
const attachments = useAttachmentCapabilities(view.id, actor.id, JSON.stringify(actor.execution?.driver.config));
|
|
29
|
-
const disabledReason = !writable ? "
|
|
30
|
-
const switches = <ChatViewSwitches
|
|
29
|
+
const disabledReason = !writable ? "You have read access to this run." : undefined;
|
|
30
|
+
const switches = <ChatViewSwitches settings={chatView} />;
|
|
31
31
|
if (!composerVisible || actor.kind === "human") return <div className={controlsClass}>{toolbarLeft}{switches}</div>;
|
|
32
32
|
if (actor.kind === "script") return <div className={controlsClass}><p className={noteClass}>{programChatNotice}</p>{toolbarLeft}{switches}</div>;
|
|
33
33
|
if (actor.lifecycle?.kind === "stopped") return <div className={presentation === "inspector" ? "flex-shrink-0 px-5 pt-2.5 pb-3.5" : undefined}>
|
|
@@ -47,11 +47,11 @@ export function ActorChatControls({ actor, view, composerVisible = true, present
|
|
|
47
47
|
} : undefined}
|
|
48
48
|
rows={1}
|
|
49
49
|
running={running}
|
|
50
|
-
texts={{ placeholder: disabledReason ?? `
|
|
50
|
+
texts={{ placeholder: disabledReason ?? `Message to @${actor.handle} ...` }}
|
|
51
51
|
toolbarLeft={<>
|
|
52
52
|
{toolbarLeft}
|
|
53
53
|
{switches}
|
|
54
|
-
{presentation === "inspector" && <span className="truncate text-[0.7rem] text-muted-foreground">
|
|
54
|
+
{presentation === "inspector" && <span className="truncate text-[0.7rem] text-muted-foreground">to @{actor.handle}</span>}
|
|
55
55
|
</>}
|
|
56
56
|
toolbarRight={toolbarRight}
|
|
57
57
|
/>
|
|
@@ -19,7 +19,7 @@ export const ActorChatPreview = memo(function ActorChatPreview({ actor, view, pr
|
|
|
19
19
|
if (!element) return;
|
|
20
20
|
element.tabIndex = 0;
|
|
21
21
|
element.setAttribute("role", "region");
|
|
22
|
-
element.setAttribute("aria-label", `
|
|
22
|
+
element.setAttribute("aria-label", `Chat history of @${actor.handle}`);
|
|
23
23
|
}, [actor.handle]);
|
|
24
24
|
return <div className="flex min-h-[106px] w-full min-w-0 flex-1 flex-col overflow-hidden rounded-b-[16px] text-left" data-surface-scroll="true">
|
|
25
25
|
<ChatPanel className="flex-1" composer={<ActorChatControls actor={actor} view={view} composerVisible={chatInput} presentation="surface" running={running} />}>
|
|
@@ -9,7 +9,7 @@ export function ActorPopout({ open, id, label, closeLabel, buttonRef, onClose, w
|
|
|
9
9
|
closeLabel: string;
|
|
10
10
|
buttonRef: RefObject<HTMLButtonElement | null>;
|
|
11
11
|
onClose: (restoreFocus?: boolean) => void;
|
|
12
|
-
/**
|
|
12
|
+
/** Pixels or the whole available width next to the anchor. */
|
|
13
13
|
width: number | "available";
|
|
14
14
|
height: number;
|
|
15
15
|
placement?: "bottom" | "top";
|
|
@@ -40,17 +40,17 @@ export function ActorShortcut({ actor, view, session, open, onToggle, onClose, v
|
|
|
40
40
|
}, [onClose]);
|
|
41
41
|
|
|
42
42
|
const inspect = (selection: FlowSelection) => {
|
|
43
|
-
if (!surface) throw new Error("
|
|
43
|
+
if (!surface) throw new Error("The actor shortcut needs the surface controller.");
|
|
44
44
|
surface.acceptSelection(selection);
|
|
45
45
|
close();
|
|
46
46
|
};
|
|
47
47
|
const tone = actorTone(view, actor);
|
|
48
|
-
const label = actor.kind === "agent" ? `Chat
|
|
49
|
-
const type = !technical ? "Agent" : actor.kind === "agent" ? "LLM
|
|
48
|
+
const label = actor.kind === "agent" ? `Chat with @${actor.handle}` : `Actor view of @${actor.handle}`;
|
|
49
|
+
const type = !technical ? "Agent" : actor.kind === "agent" ? "LLM agent" : "TypeScript actor";
|
|
50
50
|
|
|
51
51
|
return <div className="flex items-stretch [&[hidden]]:hidden" hidden={!visible}>
|
|
52
52
|
<ToolbarItem as="button" aria-controls={visited ? panelId : undefined} aria-expanded={open} aria-haspopup="dialog"
|
|
53
|
-
aria-label={`${actor.displayName || actor.handle}. ${type}: ${label}
|
|
53
|
+
aria-label={`${actor.displayName || actor.handle}. ${type}: open ${label}`} className="font-bold"
|
|
54
54
|
data-tone={tone} data-staged={staged || undefined} onClick={() => { setVisited(true); onToggle(); }}
|
|
55
55
|
draggable={technical} onDragStart={(event) => {
|
|
56
56
|
if (!technical) { event.preventDefault(); return; }
|
|
@@ -58,11 +58,11 @@ export function ActorShortcut({ actor, view, session, open, onToggle, onClose, v
|
|
|
58
58
|
event.dataTransfer.effectAllowed = "move";
|
|
59
59
|
close();
|
|
60
60
|
}}
|
|
61
|
-
ref={buttonRef} title={`${type}: ${label}
|
|
61
|
+
ref={buttonRef} title={`${type}: open ${label}${technical ? ". Drag onto a tile to dock." : ""}`} type="button">
|
|
62
62
|
<span className={cn(shortcutIconClass, staged && shortcutFillClass[tone])}>{actor.kind === "agent" ? <UsersIcon size={20} /> : <CodeIcon size={20} />}</span>
|
|
63
63
|
<ToolbarCopy><ToolbarLabel>@{actor.handle}</ToolbarLabel><ToolbarText>{actor.displayName && actor.displayName !== actor.handle ? actor.displayName : type}</ToolbarText></ToolbarCopy>
|
|
64
64
|
</ToolbarItem>
|
|
65
|
-
{visited && <ActorPopout open={open} id={panelId} label={label} closeLabel={
|
|
65
|
+
{visited && <ActorPopout open={open} id={panelId} label={label} closeLabel={`Close ${label}`}
|
|
66
66
|
buttonRef={buttonRef} keepMounted onClose={close} width={actor.kind === "agent" ? 784 : 560} height={640} role="dialog">
|
|
67
67
|
<div className="min-h-0 min-w-0 flex-1 overflow-auto overscroll-contain">
|
|
68
68
|
<FlowInspector actorConversations={session.actorConversations} canGoBack={false} chatDisplay="popout" composerVisible
|
|
@@ -20,13 +20,13 @@ export interface ActorSurfaceControlsProps {
|
|
|
20
20
|
|
|
21
21
|
const nameClass = "min-w-0 max-w-full text-left font-semibold [overflow-wrap:anywhere]";
|
|
22
22
|
|
|
23
|
-
const actorType = (actor: RunActor) => actor.kind === "human" ? "
|
|
24
|
-
const actorStatus = (actor: RunActor) => actor.lifecycle?.kind === "running" ? "
|
|
23
|
+
const actorType = (actor: RunActor) => actor.kind === "human" ? "User" : actor.kind === "agent" ? "LLM agent" : "TypeScript actor";
|
|
24
|
+
const actorStatus = (actor: RunActor) => actor.lifecycle?.kind === "running" ? "Working" : actor.lifecycle?.kind === "stopped" ? "Stopped" : actor.lifecycle?.kind === "idle" ? "Ready" : "";
|
|
25
25
|
|
|
26
26
|
export function filterSurfaceActors(actors: readonly RunActor[], appActorIds: ReadonlySet<string>, query: string): readonly RunActor[] {
|
|
27
|
-
const words = query.trim().toLocaleLowerCase("
|
|
27
|
+
const words = query.trim().toLocaleLowerCase("en-US").split(/\s+/).filter(Boolean);
|
|
28
28
|
return actors.filter((actor) => {
|
|
29
|
-
const text = [`@${actor.handle}`, actor.displayName, actor.kind, actorType(actor), actor.lifecycle?.kind, actorStatus(actor), appActorIds.has(actor.id) ? "Mini-
|
|
29
|
+
const text = [`@${actor.handle}`, actor.displayName, actor.kind, actorType(actor), actor.lifecycle?.kind, actorStatus(actor), appActorIds.has(actor.id) ? "Mini-app" : ""].join(" ").toLocaleLowerCase("en-US");
|
|
30
30
|
return words.every((word) => text.includes(word));
|
|
31
31
|
});
|
|
32
32
|
}
|
|
@@ -46,7 +46,7 @@ export function ActorShortcuts({ session }: SessionHeaderContext) {
|
|
|
46
46
|
}, [actors, close, openKey, session.session.id, shown]);
|
|
47
47
|
if (!view || actors.length === 0) return null;
|
|
48
48
|
|
|
49
|
-
return <nav aria-label="Actors
|
|
49
|
+
return <nav aria-label="Actors of the run" className="flex min-w-0 flex-none items-stretch">
|
|
50
50
|
{actors.map((actor) => {
|
|
51
51
|
const key = `${session.session.id}:${actor.id}`;
|
|
52
52
|
return <ActorShortcut actor={actor} key={key} onClose={close}
|
|
@@ -63,9 +63,9 @@ export function ActorHeaderModeControl({ runId }: { runId: string }) {
|
|
|
63
63
|
const mode = useActorHeaderMode(runId);
|
|
64
64
|
const modes = inspect ? ACTOR_HEADER_MODES : PUBLIC_ACTOR_HEADER_MODES;
|
|
65
65
|
const next = modes[(modes.indexOf(mode) + 1) % modes.length];
|
|
66
|
-
const label = `Actor
|
|
66
|
+
const label = `Actor display: ${ACTOR_HEADER_MODE_LABELS[mode]}. Switch to ${ACTOR_HEADER_MODE_LABELS[next]}`;
|
|
67
67
|
return <ToolbarItem as="button" aria-label={label} className="w-[120px] max-w-[120px] min-w-[120px] flex-[0_0_120px]" onClick={() => saveActorHeaderMode(runId, next)} title={label} type="button">
|
|
68
|
-
<ToolbarCopy><ToolbarLabel>
|
|
68
|
+
<ToolbarCopy><ToolbarLabel>Display</ToolbarLabel><ToolbarText>{ACTOR_HEADER_MODE_LABELS[mode]}</ToolbarText></ToolbarCopy>
|
|
69
69
|
</ToolbarItem>;
|
|
70
70
|
}
|
|
71
71
|
|
|
@@ -90,15 +90,15 @@ export function ActorSurfaceControls({ session, appActorIds, preferences, onPref
|
|
|
90
90
|
aria-label={label} title={label} onClick={() => setOpen((value) => !value)} type="button">
|
|
91
91
|
<UsersIcon size={20} /><ToolbarText>Actors</ToolbarText>
|
|
92
92
|
</ToolbarItem>
|
|
93
|
-
{open && <ActorPopout open id={panelId} label="Actors
|
|
93
|
+
{open && <ActorPopout open id={panelId} label="Actors of the run" closeLabel="Close actor list"
|
|
94
94
|
buttonRef={buttonRef} onClose={close} width={460} height={460}
|
|
95
95
|
placement="bottom" focusInput role="region">
|
|
96
96
|
<div className="flex flex-none items-center gap-2.5 p-2.5">
|
|
97
|
-
<Input className="flex-1" aria-label="
|
|
98
|
-
<span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{filtered.length}
|
|
97
|
+
<Input className="flex-1" aria-label="Search actors" onChange={(event) => setQuery(event.target.value)} placeholder="Search handle, type or status ..." type="search" value={query} />
|
|
98
|
+
<span className="flex-none whitespace-nowrap text-[0.68rem] text-muted-foreground" role="status">{filtered.length} of {actors?.length ?? 0}</span>
|
|
99
99
|
</div>
|
|
100
100
|
<ActorSurfaceList actors={filtered} appActorIds={appActorIds} primaryActorId={runView?.primaryActorId} onPreferencesChange={onPreferencesChange} preferences={preferences} />
|
|
101
|
-
<p className="flex-none border-t border-border-soft px-2.5 py-2.5 text-[0.68rem] text-muted-foreground">
|
|
101
|
+
<p className="flex-none border-t border-border-soft px-2.5 py-2.5 text-[0.68rem] text-muted-foreground">Personal view of this run</p>
|
|
102
102
|
</ActorPopout>}
|
|
103
103
|
</div>;
|
|
104
104
|
}
|
|
@@ -111,19 +111,19 @@ export function ActorSurfaceList({ actors, appActorIds, primaryActorId, onPrefer
|
|
|
111
111
|
preferences: SurfaceViewPreferences;
|
|
112
112
|
}) {
|
|
113
113
|
return <div className="min-h-0 flex-1 overflow-auto overscroll-contain px-2.5">
|
|
114
|
-
{actors.length === 0 ? <p className="text-muted-foreground">
|
|
114
|
+
{actors.length === 0 ? <p className="text-muted-foreground">No matching actors.</p> : <ul className="list-none">{actors.map((actor) => <li className="grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2.5 border-b border-border-soft py-1.5" key={actor.id}>
|
|
115
115
|
<div className="grid min-w-0 gap-0.5 leading-[1.3]">
|
|
116
116
|
<div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-0.5">
|
|
117
117
|
<span className={nameClass}>@{actor.handle}</span>
|
|
118
118
|
{actor.displayName !== actor.handle && <span className="min-w-0 max-w-full text-[0.7rem] [overflow-wrap:anywhere]">{actor.displayName}</span>}
|
|
119
119
|
</div>
|
|
120
120
|
<span className="flex flex-wrap items-center gap-x-2 gap-y-0.5 text-[0.66rem] text-muted-foreground">
|
|
121
|
-
<span>{actorType(actor)}</span>{actorStatus(actor) && <span>{actorStatus(actor)}</span>}{appActorIds.has(actor.id) && <span className="text-primary">Mini-
|
|
121
|
+
<span>{actorType(actor)}</span>{actorStatus(actor) && <span>{actorStatus(actor)}</span>}{appActorIds.has(actor.id) && <span className="text-primary">Mini-app</span>}
|
|
122
122
|
</span>
|
|
123
123
|
</div>
|
|
124
124
|
{actor.kind !== "human" && <label className="flex cursor-pointer items-center gap-[5px] whitespace-nowrap text-[0.68rem]">
|
|
125
|
-
<input aria-label={
|
|
126
|
-
<span>
|
|
125
|
+
<input aria-label={`Show @${actor.handle} on the surface`} checked={actorVisibleOnSurface(actor, appActorIds, preferences, primaryActorId)} onChange={(event) => onPreferencesChange({ ...preferences, actorVisibility: { ...preferences.actorVisibility, [actor.id]: event.target.checked } })} type="checkbox" />
|
|
126
|
+
<span>Surface</span>
|
|
127
127
|
</label>}
|
|
128
128
|
</li>)}</ul>}
|
|
129
129
|
</div>;
|
|
@@ -12,7 +12,7 @@ export function ActorTile({ actor, view, cardSections, chatInput, session, navig
|
|
|
12
12
|
navigation: SessionNavigation;
|
|
13
13
|
onSelect: (selection: EntityReference) => void;
|
|
14
14
|
}) {
|
|
15
|
-
return <div className="flex flex-col overflow-hidden has-[>[data-slot=card-sections]:not(:empty)]:min-h-[260px]">
|
|
15
|
+
return <div className="flex flex-col overflow-hidden has-[>[data-slot=card-sections]:not(:empty)]:min-h-[260px] has-[[data-chat=actions]:not(:empty)]:min-h-[260px]">
|
|
16
16
|
<ActorChatPreview actor={actor} view={view} chatInput={chatInput} running={actor.lifecycle?.kind === "running"}
|
|
17
17
|
conversation={session.actorConversations?.[actor.id]} historyError={session.conversationError}
|
|
18
18
|
onNavigate={onSelect} primaryMessages={actor.id === view.primaryActorId ? session.messages : undefined} />
|
|
@@ -29,7 +29,7 @@ function RunOrchestrationCenter({
|
|
|
29
29
|
}: SurfaceCenterContext) {
|
|
30
30
|
const inspect = useAccess().can("runs.inspect");
|
|
31
31
|
const surface = useSurfaceController();
|
|
32
|
-
if (!surface) throw new Error("
|
|
32
|
+
if (!surface) throw new Error("The surface needs the surface controller of the orchestration plugin.");
|
|
33
33
|
const lastRunView = useRef<ReturnType<typeof runViewFrom>>(undefined);
|
|
34
34
|
const parsedRunView = runViewFrom(session.runView);
|
|
35
35
|
if (parsedRunView !== undefined) lastRunView.current = parsedRunView;
|
|
@@ -103,14 +103,14 @@ function RunOrchestrationCenter({
|
|
|
103
103
|
|
|
104
104
|
return (
|
|
105
105
|
<div className="relative flex h-full min-h-0 min-w-0 flex-1 overflow-clip" data-view="tiled">
|
|
106
|
-
{personalLayout && <StatusGroup container={statusContainer} label="
|
|
106
|
+
{personalLayout && <StatusGroup container={statusContainer} label="Surface" order={20}>
|
|
107
107
|
<button className={statusControlClass} onClick={() => saveSurfacePresentation(session.session.id, null)}
|
|
108
|
-
title="
|
|
108
|
+
title="Reset your own arrangement and follow the program arrangement" type="button">Apply program default</button>
|
|
109
109
|
</StatusGroup>}
|
|
110
110
|
{runToolbarContainer && createPortal(<><ActorHeaderModeControl runId={session.session.id} />{inspect && <ActorSurfaceControls session={session}
|
|
111
111
|
appActorIds={appActorIds} preferences={preferences}
|
|
112
112
|
onPreferencesChange={(next) => saveSurfaceViewPreferences(session.session.id, next)} />}</>, runToolbarContainer)}
|
|
113
|
-
<div aria-label="
|
|
113
|
+
<div aria-label="Surface" className="relative min-h-0 min-w-0 flex-[1_1_360px] overflow-clip bg-[image:var(--surface-backdrop)]" ref={stageRef}>
|
|
114
114
|
<SurfaceGrain />
|
|
115
115
|
{(programLayout.error || presentationError) && <p className="absolute inset-x-2 top-2 z-10 bg-secondary p-3 text-destructive" role="alert">{programLayout.error || presentationError}</p>}
|
|
116
116
|
{runView && !showStartup && <div className="absolute inset-y-0 left-0 w-[var(--surface-visible-width,100%)] overflow-hidden">
|
|
@@ -124,7 +124,7 @@ function RunOrchestrationCenter({
|
|
|
124
124
|
);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
/**
|
|
127
|
+
/** Fine noise over the surface so the material does not look smooth. */
|
|
128
128
|
function SurfaceGrain() {
|
|
129
129
|
return <svg aria-hidden="true" className="pointer-events-none absolute inset-0 size-full opacity-10" preserveAspectRatio="none" viewBox="0 0 180 180">
|
|
130
130
|
<filter id="surface-grain"><feTurbulence baseFrequency=".76" numOctaves="3" stitchTiles="stitch" type="fractalNoise" /></filter>
|
|
@@ -5,7 +5,7 @@ import { SectionLabel } from "@ragents/web/ui";
|
|
|
5
5
|
|
|
6
6
|
const openDocument = (navigation: SessionNavigation, artifact: RunArtifact) => {
|
|
7
7
|
if (navigation.revealEntity({ type: "artifact", id: artifact.id })) return;
|
|
8
|
-
throw new Error(`
|
|
8
|
+
throw new Error(`No plugin can show the document ${artifact.title}`);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
export function DocumentsSection({ actor, navigation, session }: CardSectionContext) {
|
|
@@ -18,7 +18,7 @@ export function DocumentsSection({ actor, navigation, session }: CardSectionCont
|
|
|
18
18
|
return (
|
|
19
19
|
<section className="grid gap-1.5">
|
|
20
20
|
<SectionLabel>
|
|
21
|
-
<span>
|
|
21
|
+
<span>Documents</span>
|
|
22
22
|
<small>{documents.length}</small>
|
|
23
23
|
</SectionLabel>
|
|
24
24
|
<ul className="grid list-none gap-1">
|