@schlenkr/ragents 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +6 -6
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +29 -29
- package/apps/server/src/api/core-methods.ts +17 -17
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +6 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +38 -38
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +27 -27
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +14 -14
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +62 -57
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +23 -23
- package/apps/server/src/ragents/global-chat.ts +8 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +48 -48
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-CpPi6QLr.js} +1 -1
- package/apps/web/dist/assets/main-DJmCHGzM.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-q-mf1kLN.js +608 -0
- package/apps/web/dist/assets/runPanel-nk_aMxSn.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +53 -54
- package/apps/web/dist/help/guide-clients.md +50 -51
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +196 -144
- package/apps/web/dist/help/mini-app.css +6 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +91 -91
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/QuasselHost.tsx +1 -1
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +26 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +28 -28
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +3 -3
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +3 -3
- package/bundles/ragents.actor-programs/server/index.js +225 -225
- package/bundles/ragents.actor-programs/server/index.js.map +2 -2
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +3 -3
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +2 -2
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +3 -3
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +3 -3
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +3 -3
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +3 -3
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +8 -4
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +3 -3
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +3 -3
- package/bundles/ragents.overseer/server/index.js +98 -98
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +3 -3
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +3 -3
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +3 -3
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +3 -3
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +3 -3
- package/bundles/ragents.todo/server/index.js +5 -8
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +3 -3
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +3 -3
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +3 -3
- package/bundles/ragents.workspace/server/index.js +83 -83
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3725 -552
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/plugin-host.ts +119 -119
- package/packages/ragents/src/plugin-types.ts +16 -16
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal-storage.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +44 -44
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +16 -16
- package/packages/workspace-executor/src/files.ts +31 -31
- package/packages/workspace-executor/src/index.ts +1 -1
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +36 -36
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +3 -3
- package/packages/workspace-executor/src/managed-process.ts +12 -12
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -2
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +3 -3
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -5
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +6 -6
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/contract.ts +0 -3
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +63 -63
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +50 -50
- package/plugins/ragents.workspace/server/config.ts +7 -7
- package/plugins/ragents.workspace/server/index.ts +3 -3
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +31 -31
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +49 -49
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
- package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -22,7 +22,7 @@ interface SavedCapture {
|
|
|
22
22
|
path: string;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
/**
|
|
25
|
+
/** What the server knows about a run's page: the last reported state and the time of the last passed check. */
|
|
26
26
|
interface ObservedPage {
|
|
27
27
|
url: string;
|
|
28
28
|
checkedAt?: string;
|
|
@@ -37,7 +37,7 @@ export interface BrowserOptions {
|
|
|
37
37
|
|
|
38
38
|
const capturePath = (id: string): string => `browser/${id}.png`;
|
|
39
39
|
|
|
40
|
-
/**
|
|
40
|
+
/** A run's browser testing: the page lives in the run's executor, the server holds evidence, screenshots and viewport. */
|
|
41
41
|
export class RunBrowser implements BrowserRuntime {
|
|
42
42
|
readonly #options: BrowserOptions;
|
|
43
43
|
readonly #pages = new Map<string, ObservedPage>();
|
|
@@ -67,7 +67,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
67
67
|
await this.restore(runId);
|
|
68
68
|
options.signal?.throwIfAborted();
|
|
69
69
|
this.#assertRunning();
|
|
70
|
-
if (generation !== this.#generation(runId)) throw new Error("
|
|
70
|
+
if (generation !== this.#generation(runId)) throw new Error("The browser was closed.");
|
|
71
71
|
return this.#run(runId, BROWSER_OPERATIONS.open, { url, viewport: this.#viewports.get(runId) ?? DEFAULT_VIEWPORT }, options);
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -75,7 +75,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
75
75
|
return this.#run(runId, BROWSER_OPERATIONS.snapshot, null, options);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
/**
|
|
78
|
+
/** The chosen viewport applies to the run, including a browser restarted later. */
|
|
79
79
|
async viewport(runId: string, viewport: BrowserViewport, options: BrowserCallOptions = {}): Promise<BrowserSnapshot> {
|
|
80
80
|
const snapshot = await this.#run<BrowserSnapshot>(runId, BROWSER_OPERATIONS.viewport, viewport, options);
|
|
81
81
|
this.#viewports.set(runId, viewport);
|
|
@@ -98,7 +98,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
98
98
|
return this.#run(runId, BROWSER_OPERATIONS.press, { target, key }, options);
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
/**
|
|
101
|
+
/** The time of a passed check is the server's, so it compares with its other times. */
|
|
102
102
|
async check(runId: string, input: BrowserCheck, options: BrowserCallOptions = {}): Promise<{ checkedAt: string; url: string; assertions: string[] }> {
|
|
103
103
|
const generation = this.#generation(runId);
|
|
104
104
|
const { result, page } = await this.#execute<BrowserCheckResult>(runId, generation, BROWSER_OPERATIONS.check, input, options);
|
|
@@ -117,7 +117,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
117
117
|
await this.restore(runId);
|
|
118
118
|
const id = randomUUID();
|
|
119
119
|
const image = await this.#run<string>(runId, BROWSER_OPERATIONS.screenshot, { id, fullPage: input.fullPage ?? false }, options);
|
|
120
|
-
const capture = { name: input.label?.trim() || "
|
|
120
|
+
const capture = { name: input.label?.trim() || "Browser screenshot", path: capturePath(id) };
|
|
121
121
|
await this.#store(runId, capture, Buffer.from(image, "base64"));
|
|
122
122
|
const url = this.#captureUrl(runId, capture.path);
|
|
123
123
|
return {
|
|
@@ -130,7 +130,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
130
130
|
|
|
131
131
|
async image(runId: string): Promise<Buffer> {
|
|
132
132
|
const latest = this.#captures.get(runId)?.at(-1);
|
|
133
|
-
if (!latest) throw new Error("
|
|
133
|
+
if (!latest) throw new Error("There is no browser screenshot for this run yet. Call browser_screenshot first.");
|
|
134
134
|
return readFile(path.join(await this.#options.filesFor(runId), latest.path));
|
|
135
135
|
}
|
|
136
136
|
|
|
@@ -152,7 +152,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
/**
|
|
155
|
+
/** Closes the browser in the run's executor; a disconnected workspace holds nothing that could be closed now. */
|
|
156
156
|
async close(runId: string): Promise<void> {
|
|
157
157
|
this.#forget(runId);
|
|
158
158
|
await this.#options.sandbox.execute(runId, BROWSER_OPERATIONS.close, null, { whenReachable: true });
|
|
@@ -178,14 +178,14 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
#assertRunning(): void {
|
|
181
|
-
if (this.#shutdown) throw new Error("
|
|
181
|
+
if (this.#shutdown) throw new Error("The browser service has ended.");
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
#generation(runId: string): number {
|
|
185
185
|
return this.#generations.get(runId) ?? 0;
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
/**
|
|
188
|
+
/** A closed browser has no page anymore; results that started before no longer count afterwards. */
|
|
189
189
|
#forget(runId: string): void {
|
|
190
190
|
this.#generations.set(runId, this.#generation(runId) + 1);
|
|
191
191
|
this.#pages.delete(runId);
|
|
@@ -207,14 +207,14 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
/**
|
|
210
|
+
/** After a failed call the server asks for the page state; whoever cannot report it has no page. */
|
|
211
211
|
async #resync(runId: string, generation: number): Promise<void> {
|
|
212
212
|
const page = await this.#options.sandbox.execute(runId, BROWSER_OPERATIONS.state, null, { whenReachable: true })
|
|
213
213
|
.then((value) => value as BrowserPageState | null, () => null);
|
|
214
214
|
this.#observe(runId, generation, page);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
|
-
/**
|
|
217
|
+
/** Only a passed check sets the time; every other state keeps it as long as the page stays checked. */
|
|
218
218
|
#observe(runId: string, generation: number, page: BrowserPageState | null, checkedAt?: string): void {
|
|
219
219
|
if (generation !== this.#generation(runId)) return;
|
|
220
220
|
if (!page) {
|
|
@@ -230,7 +230,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
230
230
|
});
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
-
/**
|
|
233
|
+
/** Puts a screenshot into the run's file storage and writes the screenshot list atomically; a run's screenshots one after another. */
|
|
234
234
|
#store(runId: string, capture: SavedCapture, image: Buffer): Promise<void> {
|
|
235
235
|
const previous = this.#captureWrites.get(runId) ?? Promise.resolve();
|
|
236
236
|
const pending = previous.then(async () => {
|
|
@@ -265,7 +265,7 @@ export class RunBrowser implements BrowserRuntime {
|
|
|
265
265
|
const captures: unknown = JSON.parse(content);
|
|
266
266
|
if (!Array.isArray(captures) || captures.some((entry) => !entry || typeof entry.name !== "string"
|
|
267
267
|
|| typeof entry.path !== "string" || !/^browser\/[a-f0-9-]{36}\.png$/.test(entry.path))) {
|
|
268
|
-
throw new Error("
|
|
268
|
+
throw new Error("The stored browser screenshot list of this run is corrupt.");
|
|
269
269
|
}
|
|
270
270
|
this.#captures.set(runId, captures);
|
|
271
271
|
}
|
|
@@ -11,7 +11,7 @@ export interface BrowserEvidence {
|
|
|
11
11
|
errors: string[];
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
/**
|
|
14
|
+
/** Who triggers an operation on the page: for a tool call its id, plus the abort signal. */
|
|
15
15
|
export interface BrowserCallOptions {
|
|
16
16
|
signal?: AbortSignal;
|
|
17
17
|
toolCallId?: string;
|
|
@@ -7,7 +7,7 @@ import { RunBrowser } from "./browser.js";
|
|
|
7
7
|
import { browserRuntimeToken } from "./contract.js";
|
|
8
8
|
import { createBrowserFunctions, createBrowserImageContribution } from "./tools.js";
|
|
9
9
|
|
|
10
|
-
/**
|
|
10
|
+
/** The server's executor reads the value from its environment; a workspace from its own, never from the profile. */
|
|
11
11
|
export const browserConfigDescriptors = [{ key: BROWSER_EXECUTABLE_VARIABLE, source: "environment" }] as const;
|
|
12
12
|
|
|
13
13
|
const browserPlugin: RAgentsPlugin = {
|
|
@@ -30,7 +30,7 @@ const screenshotDescription = "Capture the real browser page into this run's doc
|
|
|
30
30
|
export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
31
31
|
defineRunFunction({
|
|
32
32
|
name: "browser_open",
|
|
33
|
-
label: "
|
|
33
|
+
label: "Open browser",
|
|
34
34
|
description: "Open an HTTP(S) page in this run's isolated headless browser. Returns its accessible structure and browser errors. Reuses the current run browser; other runs have separate cookies and processes.",
|
|
35
35
|
schema: Type.Object({ url: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
|
|
36
36
|
resultSchema: snapshotSchema,
|
|
@@ -41,7 +41,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
41
41
|
}),
|
|
42
42
|
defineRunFunction({
|
|
43
43
|
name: "browser_snapshot",
|
|
44
|
-
label: "
|
|
44
|
+
label: "Read browser",
|
|
45
45
|
description: "Read the current real page's accessible structure, title, URL and errors. Use role/name or labels for subsequent actions; snapshot reference IDs never need to be copied.",
|
|
46
46
|
schema: emptySchema,
|
|
47
47
|
resultSchema: snapshotSchema,
|
|
@@ -52,7 +52,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
52
52
|
}),
|
|
53
53
|
defineRunFunction({
|
|
54
54
|
name: "browser_click",
|
|
55
|
-
label: "
|
|
55
|
+
label: "Click in browser",
|
|
56
56
|
description: "Click a uniquely identified visible element with Playwright auto-waiting. Returns the actual resulting page. Ambiguous or absent targets are errors.",
|
|
57
57
|
schema: targetInputSchema,
|
|
58
58
|
resultSchema: snapshotSchema,
|
|
@@ -63,7 +63,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
63
63
|
}),
|
|
64
64
|
defineRunFunction({
|
|
65
65
|
name: "browser_fill",
|
|
66
|
-
label: "
|
|
66
|
+
label: "Fill browser field",
|
|
67
67
|
description: "Fill an input or textarea by accessible label or another semantic target, firing the normal input events. Returns the resulting page.",
|
|
68
68
|
schema: Type.Object({ target: targetSchema, value: Type.String() }, { additionalProperties: false }),
|
|
69
69
|
resultSchema: snapshotSchema,
|
|
@@ -74,7 +74,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
74
74
|
}),
|
|
75
75
|
defineRunFunction({
|
|
76
76
|
name: "browser_select",
|
|
77
|
-
label: "
|
|
77
|
+
label: "Select in browser",
|
|
78
78
|
description: "Choose an option by its visible label in a native select element. For custom dropdowns use browser_click on the trigger and the visible option.",
|
|
79
79
|
schema: Type.Object({ target: targetSchema, label: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
|
|
80
80
|
resultSchema: snapshotSchema,
|
|
@@ -85,7 +85,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
85
85
|
}),
|
|
86
86
|
defineRunFunction({
|
|
87
87
|
name: "browser_press",
|
|
88
|
-
label: "
|
|
88
|
+
label: "Press browser key",
|
|
89
89
|
description: "Focus a target and press a Playwright key or chord such as Enter, Escape, Tab or ControlOrMeta+A. Returns the resulting page.",
|
|
90
90
|
schema: Type.Object({ target: targetSchema, key: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
|
|
91
91
|
resultSchema: snapshotSchema,
|
|
@@ -96,7 +96,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
96
96
|
}),
|
|
97
97
|
defineRunFunction({
|
|
98
98
|
name: "browser_check",
|
|
99
|
-
label: "
|
|
99
|
+
label: "Check browser result",
|
|
100
100
|
description: "Assert visible target/text, resulting URL and absence of browser errors. Fails on mismatch; records successful evidence for this page until the next action/navigation/error. Supply at least one assertion. Browser errors are checked by default. Visibility assertions wait at most 5 seconds, shorter than actions.",
|
|
101
101
|
schema: Type.Object({
|
|
102
102
|
target: Type.Optional(targetSchema),
|
|
@@ -113,7 +113,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
113
113
|
}),
|
|
114
114
|
defineRunFunction({
|
|
115
115
|
name: "browser_viewport",
|
|
116
|
-
label: "
|
|
116
|
+
label: "Set browser size",
|
|
117
117
|
description: "Resize the page viewport in CSS pixels, for example to check a narrow layout. The default is 1920 x 1080 (16:9) and screenshots use the viewport size at scale 1; the chosen size stays for the run until changed again. Returns the resulting page.",
|
|
118
118
|
schema: Type.Object({
|
|
119
119
|
width: Type.Integer({ minimum: 320, maximum: 3840 }),
|
|
@@ -126,7 +126,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
126
126
|
}),
|
|
127
127
|
defineRunFunction({
|
|
128
128
|
name: "browser_screenshot",
|
|
129
|
-
label: "
|
|
129
|
+
label: "Capture browser",
|
|
130
130
|
description: screenshotDescription,
|
|
131
131
|
schema: Type.Object({ label: Type.Optional(Type.String({ maxLength: 200 })), fullPage: Type.Optional(Type.Boolean()) }, { additionalProperties: false }),
|
|
132
132
|
resultSchema: Type.Object({
|
|
@@ -143,7 +143,7 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
143
143
|
}),
|
|
144
144
|
defineRunFunction({
|
|
145
145
|
name: "browser_view_screenshot",
|
|
146
|
-
label: "
|
|
146
|
+
label: "View browser screenshot",
|
|
147
147
|
description: "View this run's latest screenshot as native image input without a path. Invoke this native tool directly to receive pixels; calling it through TypeScript only verifies image availability. Requires an image-capable model for native image input.",
|
|
148
148
|
nativeTool: true,
|
|
149
149
|
schema: emptySchema,
|
|
@@ -153,12 +153,12 @@ export const createBrowserFunctions = (browser: RunBrowser): RunFunction[] => [
|
|
|
153
153
|
run: async ({ caller, signal }) => {
|
|
154
154
|
signal?.throwIfAborted();
|
|
155
155
|
await browser.image(caller.runId);
|
|
156
|
-
return "
|
|
156
|
+
return "The latest browser screenshot of this run is available.";
|
|
157
157
|
},
|
|
158
158
|
}),
|
|
159
159
|
defineRunFunction({
|
|
160
160
|
name: "browser_close",
|
|
161
|
-
label: "
|
|
161
|
+
label: "Close browser",
|
|
162
162
|
description: "Close this run's browser and discard its cookies. Saved screenshots remain in the document library.",
|
|
163
163
|
schema: emptySchema,
|
|
164
164
|
resultSchema: Type.Object({ closed: Type.Boolean() }, { additionalProperties: false }),
|
|
@@ -175,11 +175,11 @@ export const createBrowserImageContribution = (browser: RunBrowser): AgentContri
|
|
|
175
175
|
if (outcome.toolName !== "browser_view_screenshot" || outcome.isError) return undefined;
|
|
176
176
|
try {
|
|
177
177
|
call.signal?.throwIfAborted();
|
|
178
|
-
if (!call.modelReadsImages) throw new Error("
|
|
178
|
+
if (!call.modelReadsImages) throw new Error("The selected model does not support images. View the screenshot in the documents or choose an image-capable model.");
|
|
179
179
|
const data = (await browser.image(runId)).toString("base64");
|
|
180
180
|
call.signal?.throwIfAborted();
|
|
181
181
|
return { content: [
|
|
182
|
-
{ type: "text", text: "
|
|
182
|
+
{ type: "text", text: "Latest browser screenshot of this run." },
|
|
183
183
|
{ type: "image", data, mimeType: "image/png" },
|
|
184
184
|
] };
|
|
185
185
|
} catch (error) {
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-testing
|
|
3
|
-
description:
|
|
3
|
+
description: Test a running web application with real browser actions, visible results, and screenshots.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Testing a web application
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Use the TypeScript functions `browser_open`, `browser_snapshot`, `browser_click`,
|
|
9
9
|
`browser_fill`, `browser_select`, `browser_press`, `browser_check`, `browser_viewport`,
|
|
10
|
-
`browser_screenshot`
|
|
10
|
+
`browser_screenshot` and `browser_close`. Load their exact contracts with `typescript_api`.
|
|
11
11
|
|
|
12
|
-
1.
|
|
13
|
-
2.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
3.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
4.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
5.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
1920 x 1080 (16:9);
|
|
28
|
-
`browser_viewport`
|
|
29
|
-
6.
|
|
30
|
-
|
|
12
|
+
1. Start the application with its actual services and wait until they are ready.
|
|
13
|
+
2. Open its HTTP address with `browser_open`. Every run has its own browser without an
|
|
14
|
+
inherited sign-in. It runs on the machine of your workspace; you reach an application
|
|
15
|
+
started there via `localhost`. Report missing services and browser prerequisites
|
|
16
|
+
explicitly.
|
|
17
|
+
3. Read the snapshot and follow the actual user path. Choose targets by visible
|
|
18
|
+
roles/names or field labels, for example `{ role: "button", name: "Save" }`.
|
|
19
|
+
Resolution happens in the browser. Snapshot IDs are not copied.
|
|
20
|
+
4. Check success and relevant error cases with `browser_check`: visible result, target address
|
|
21
|
+
and browser errors. A typecheck or screenshot alone does not prove a successful user path.
|
|
22
|
+
Every action needs a new check. Do not invent results when the network is missing.
|
|
23
|
+
5. Create real screenshots with `browser_screenshot`. Put `url` or `markdown`
|
|
24
|
+
programmatically into the result report or the mini-app. The image lives in the file storage
|
|
25
|
+
of this run. The native tool `browser_view_screenshot` shows you the latest screenshot
|
|
26
|
+
without a path; for that your model needs image support. The viewport defaults to
|
|
27
|
+
1920 x 1080 (16:9); for narrow layouts or small screens you change it with
|
|
28
|
+
`browser_viewport` and check again afterwards.
|
|
29
|
+
6. Name the checked steps and remaining limits. Close the browser when you are done;
|
|
30
|
+
screenshots are kept. Stopping the run and shutting down the server close it as well.
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
The browser actions use Playwright locators with automatic waiting. Ambiguous targets
|
|
33
|
+
are errors that name the candidates; then pick one match with `nth` (0-based) or `first: true` in
|
|
34
|
+
the target, or check the number of visible matches with `count` in `browser_check`.
|
|
35
|
+
Visibility checks wait at most 5 seconds, actions longer; a missing element
|
|
36
|
+
therefore costs no long wait. Native selects use `browser_select`; custom dropdown menus are clicked.
|
|
37
|
+
With `target.frame` you choose an iframe by CSS. New windows are reported explicitly;
|
|
38
|
+
this flow operates one page. Hidden elements are not clicked via JavaScript.
|
|
@@ -25,10 +25,10 @@ export type RunFilesListing = Static<typeof filesListing>;
|
|
|
25
25
|
export const documentsContracts = {
|
|
26
26
|
files: defineOperation({
|
|
27
27
|
id: "ragents.documents.files",
|
|
28
|
-
description: "
|
|
28
|
+
description: "A run's file store as groups and loose files. Right: runs.read.",
|
|
29
29
|
rights: ["runs.read"],
|
|
30
30
|
input: Type.Object({
|
|
31
|
-
runId: Type.String({ minLength: 1, maxLength: 64, description: "
|
|
31
|
+
runId: Type.String({ minLength: 1, maxLength: 64, description: "Run id" }),
|
|
32
32
|
}, { additionalProperties: false }),
|
|
33
33
|
result: filesListing,
|
|
34
34
|
}),
|
|
@@ -8,7 +8,7 @@ to put something there is the tool `document_write`.
|
|
|
8
8
|
they are part of the actual assignment.
|
|
9
9
|
- `document_write` takes the full `content` of the file. For a file of the working directory,
|
|
10
10
|
`read` it first and pass the content here.
|
|
11
|
-
- The user sees these files in the "
|
|
11
|
+
- The user sees these files in the "Documents" area of the interface, grouped by subdirectory.
|
|
12
12
|
- When you spawn agents, name in their assignment the store path they are supposed to write to.
|
|
13
13
|
|
|
14
14
|
If the user wants to see the content of a file or a document, show it COMPLETELY via
|
|
@@ -6,21 +6,21 @@ import { alwaysAvailable } from "@ragents/host/plugin-support/tool-availability.
|
|
|
6
6
|
|
|
7
7
|
export const documentWriteToolMetadata = {
|
|
8
8
|
name: "document_write",
|
|
9
|
-
label: "
|
|
9
|
+
label: "Store document",
|
|
10
10
|
nativeTool: true,
|
|
11
|
-
description: "
|
|
12
|
-
longDescription: "
|
|
13
|
-
+ "
|
|
14
|
-
+ "
|
|
15
|
-
+ "
|
|
16
|
-
+ "
|
|
17
|
-
+ "
|
|
11
|
+
description: "Stores a file with the given content in this run's file store.",
|
|
12
|
+
longDescription: "Documents, reports and intermediate products belong in the file store, not in the "
|
|
13
|
+
+ "working directory - that only holds what belongs to the task itself. The user sees the "
|
|
14
|
+
+ "store in the \"Documents\" area, grouped by subdirectory. To put a file from the "
|
|
15
|
+
+ "workspace into the store, read it first with read and pass the content here as content. "
|
|
16
|
+
+ "The store is not a bash path: it does not live in the workspace and can only be written "
|
|
17
|
+
+ "through this tool.",
|
|
18
18
|
} as const;
|
|
19
19
|
|
|
20
20
|
const relativeStorePath = (value: string): string => {
|
|
21
21
|
const normalized = value.replace(/^\.\//, "");
|
|
22
22
|
if (path.isAbsolute(normalized) || normalized.split("/").includes("..") || normalized.trim() === "") {
|
|
23
|
-
throw new Error("path
|
|
23
|
+
throw new Error("path must be relative to the file store, without a leading / and without ..");
|
|
24
24
|
}
|
|
25
25
|
return normalized;
|
|
26
26
|
};
|
|
@@ -29,8 +29,8 @@ export const createDocumentWriteTool = (filesFor: (runId: string) => Promise<str
|
|
|
29
29
|
defineRunFunction({
|
|
30
30
|
...documentWriteToolMetadata,
|
|
31
31
|
schema: Type.Object({
|
|
32
|
-
path: Type.String({ minLength: 1, description: "
|
|
33
|
-
content: Type.String({ description: "
|
|
32
|
+
path: Type.String({ minLength: 1, description: "Path in the file store, e.g. topic/report.md" }),
|
|
33
|
+
content: Type.String({ description: "The complete content of the file" }),
|
|
34
34
|
}, { additionalProperties: false }),
|
|
35
35
|
resultSchema: Type.String(),
|
|
36
36
|
available: alwaysAvailable,
|
|
@@ -40,6 +40,6 @@ export const createDocumentWriteTool = (filesFor: (runId: string) => Promise<str
|
|
|
40
40
|
const target = path.join(await filesFor(scope.caller.runId), relative);
|
|
41
41
|
await mkdir(path.dirname(target), { recursive: true });
|
|
42
42
|
await writeFile(target, input.content, "utf8");
|
|
43
|
-
return `
|
|
43
|
+
return `Stored in the file store: ${relative} (${Buffer.byteLength(input.content, "utf8")} bytes)`;
|
|
44
44
|
},
|
|
45
45
|
});
|
|
@@ -31,7 +31,7 @@ const visibleEntries = async (directory: string) => {
|
|
|
31
31
|
const entries = await readdir(directory, { withFileTypes: true });
|
|
32
32
|
return entries
|
|
33
33
|
.filter((entry) => !entry.name.startsWith(".") && !entry.isSymbolicLink())
|
|
34
|
-
.sort((left, right) => left.name.localeCompare(right.name, "
|
|
34
|
+
.sort((left, right) => left.name.localeCompare(right.name, "en-US"));
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
const collectFiles = async (
|
|
@@ -77,11 +77,11 @@ const listingOf = async (root: string): Promise<RunFilesListing> => {
|
|
|
77
77
|
const resolveInside = async (root: string, relative: string): Promise<string> => {
|
|
78
78
|
if (!relative || relative.includes("\0") || relative.includes("\\") || path.isAbsolute(relative)
|
|
79
79
|
|| relative.split("/").some((segment) => segment === "" || segment === "." || segment === "..")) {
|
|
80
|
-
throw new Error("
|
|
80
|
+
throw new Error("Invalid file path");
|
|
81
81
|
}
|
|
82
82
|
const rootReal = await realpath(root);
|
|
83
83
|
const real = await realpath(path.join(rootReal, relative));
|
|
84
|
-
if (real !== rootReal && !real.startsWith(rootReal + path.sep)) throw new Error("
|
|
84
|
+
if (real !== rootReal && !real.startsWith(rootReal + path.sep)) throw new Error("Invalid file path");
|
|
85
85
|
return real;
|
|
86
86
|
};
|
|
87
87
|
|
|
@@ -104,14 +104,14 @@ export const createFilesMethod = (options: FilesRouteOptions): MethodContributio
|
|
|
104
104
|
return listingOf(await options.filesFor(runId));
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
-
/**
|
|
107
|
+
/** Content stays plain delivery: a GET with the file's media type. */
|
|
108
108
|
export const createFileContentRoute = (options: FilesRouteOptions): HttpRouteContribution => ({
|
|
109
109
|
id: "ragents.documents.files-content",
|
|
110
110
|
isApiPath: (pathname) => contentPattern.test(pathname),
|
|
111
111
|
matches: (request, url) => request.method === "GET" && contentPattern.test(url.pathname),
|
|
112
112
|
handle: async ({ response, request, url }) => {
|
|
113
113
|
const match = url.pathname.match(contentPattern);
|
|
114
|
-
if (!match) throw new Error("
|
|
114
|
+
if (!match) throw new Error("Invalid documents route");
|
|
115
115
|
const [, runId] = match;
|
|
116
116
|
await guardedJsonRoute({
|
|
117
117
|
response,
|
|
@@ -122,7 +122,7 @@ export const createFileContentRoute = (options: FilesRouteOptions): HttpRouteCon
|
|
|
122
122
|
const relative = url.searchParams.get("path") ?? "";
|
|
123
123
|
const file = await resolveInside(await options.filesFor(runId), relative);
|
|
124
124
|
const info = await lstat(file);
|
|
125
|
-
if (!info.isFile()) throw new Error("
|
|
125
|
+
if (!info.isFile()) throw new Error("Invalid file path");
|
|
126
126
|
const content = await readFile(file);
|
|
127
127
|
response.writeHead(200, {
|
|
128
128
|
"Cache-Control": "no-store",
|
|
@@ -5,26 +5,26 @@ import { facesOperator } from "@ragents/host/plugin-support/tool-availability.js
|
|
|
5
5
|
|
|
6
6
|
export const showDocumentToolMetadata = {
|
|
7
7
|
name: "show_document",
|
|
8
|
-
label: "
|
|
8
|
+
label: "Show document",
|
|
9
9
|
nativeTool: true,
|
|
10
|
-
description: "
|
|
11
|
-
longDescription: "
|
|
12
|
-
+ "
|
|
13
|
-
+ "
|
|
14
|
-
+ "
|
|
15
|
-
+ "
|
|
16
|
-
+ "content;
|
|
17
|
-
+ "read
|
|
10
|
+
description: "Shows documents completely in the interface; file paths only apply to this run's file store.",
|
|
11
|
+
longDescription: "ALWAYS use this tool when the user wants to see the "
|
|
12
|
+
+ "content of a file or a longer document - instead of copying or paraphrasing the content in the "
|
|
13
|
+
+ "chat answer. path only shows a file from "
|
|
14
|
+
+ "this run's file store, NOT from your working directory. "
|
|
15
|
+
+ "Everything else - files of the working directory and content you produced yourself - goes through "
|
|
16
|
+
+ "content; if the content comes from a file, take it VERBATIM from the last "
|
|
17
|
+
+ "read or write result, never retyped from memory.",
|
|
18
18
|
} as const;
|
|
19
19
|
|
|
20
|
-
const sourceRule = "content
|
|
21
|
-
+ "
|
|
22
|
-
+ "
|
|
20
|
+
const sourceRule = "content and path exclude each other: valid are { title, content, format } for "
|
|
21
|
+
+ "self-produced content and files of the working directory, and { title, path, format } for files "
|
|
22
|
+
+ "of the file store - exactly one of the two must be set.";
|
|
23
23
|
|
|
24
|
-
const titleSchema = Type.String({ description: "
|
|
24
|
+
const titleSchema = Type.String({ description: "Title of the display, e.g. the file name" });
|
|
25
25
|
const formatSchema = Type.Optional(Type.Union(
|
|
26
26
|
[Type.Literal("markdown"), Type.Literal("text"), Type.Literal("html")],
|
|
27
|
-
{ description: "
|
|
27
|
+
{ description: "Rendering, default markdown" }));
|
|
28
28
|
|
|
29
29
|
const documentSource = (input: { content?: string; path?: string }):
|
|
30
30
|
| { kind: "content" }
|
|
@@ -40,14 +40,14 @@ export const createShowDocumentTool = (filesFor: (runId: string) => Promise<stri
|
|
|
40
40
|
schema: Type.Object({
|
|
41
41
|
title: titleSchema,
|
|
42
42
|
content: Type.Optional(Type.String({
|
|
43
|
-
description: "
|
|
44
|
-
+ "
|
|
43
|
+
description: "The complete content - for files from the working directory and for "
|
|
44
|
+
+ "self-produced content, i.e. everything that is not in the file store. " + sourceRule,
|
|
45
45
|
})),
|
|
46
46
|
path: Type.Optional(Type.String({
|
|
47
|
-
description: "
|
|
48
|
-
+ "
|
|
49
|
-
+ "content
|
|
50
|
-
+ "
|
|
47
|
+
description: "File from this run's file store, relative to the store (e.g. topic/file.md). "
|
|
48
|
+
+ "Only files stored there can be shown this way - for paths of the working directory "
|
|
49
|
+
+ "use content. The content is shown directly from the file and never has to be "
|
|
50
|
+
+ "retyped. " + sourceRule,
|
|
51
51
|
})),
|
|
52
52
|
format: formatSchema,
|
|
53
53
|
}, { additionalProperties: false }),
|
|
@@ -57,17 +57,17 @@ export const createShowDocumentTool = (filesFor: (runId: string) => Promise<stri
|
|
|
57
57
|
const source = documentSource(input);
|
|
58
58
|
|
|
59
59
|
if (source.kind === "content")
|
|
60
|
-
return `
|
|
60
|
+
return `Shown to the user: ${input.title}`;
|
|
61
61
|
|
|
62
62
|
const path = source.path;
|
|
63
63
|
if (path.startsWith("/") || path.split("/").includes(".."))
|
|
64
|
-
throw new Error("path
|
|
64
|
+
throw new Error("path must be relative to the file store, without a leading / and without ..");
|
|
65
65
|
if (!await runFileExists(await filesFor(caller.runId), path))
|
|
66
66
|
throw new Error(
|
|
67
|
-
`${source.path}
|
|
68
|
-
+ "
|
|
69
|
-
+ "
|
|
67
|
+
`${source.path} is not in this run's file store. Only files of the `
|
|
68
|
+
+ "file store can be shown via path - for files from the working directory and for self-produced "
|
|
69
|
+
+ "content, pass the content via content.",
|
|
70
70
|
);
|
|
71
|
-
return `
|
|
71
|
+
return `Shown to the user: ${input.title} (file ${path} from the file store)`;
|
|
72
72
|
},
|
|
73
73
|
});
|
|
@@ -17,7 +17,7 @@ export class RunDocumentStore implements DocumentStore {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
async directoryFor(runId: string): Promise<string> {
|
|
20
|
-
if (!isRunId(runId)) throw new Error(`
|
|
20
|
+
if (!isRunId(runId)) throw new Error(`Invalid run id: ${runId}`);
|
|
21
21
|
const directory = this.#options.externalRoot
|
|
22
22
|
? path.join(this.#options.externalRoot, runId)
|
|
23
23
|
: this.#options.sessionDirectory(runId);
|