@schlenkr/ragents 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +4 -4
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +29 -29
- package/apps/server/src/api/core-methods.ts +17 -17
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +6 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +61 -56
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +23 -23
- package/apps/server/src/ragents/global-chat.ts +8 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +48 -48
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +53 -54
- package/apps/web/dist/help/guide-clients.md +50 -51
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +196 -144
- package/apps/web/dist/help/mini-app.css +6 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +26 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +28 -28
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +225 -225
- package/bundles/ragents.actor-programs/server/index.js.map +2 -2
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -2
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +2 -2
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +98 -98
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +81 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/plugin-host.ts +119 -119
- package/packages/ragents/src/plugin-types.ts +16 -16
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +12 -12
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -2
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +6 -6
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +54 -54
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +7 -7
- package/plugins/ragents.workspace/server/index.ts +3 -3
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
- package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -26,7 +26,7 @@ const contract = {
|
|
|
26
26
|
}, { additionalProperties: false }),
|
|
27
27
|
functions: {
|
|
28
28
|
start: {
|
|
29
|
-
label: "
|
|
29
|
+
label: "Collect ideas",
|
|
30
30
|
input: Type.Object({}, { additionalProperties: false }),
|
|
31
31
|
output: Type.Object({}, { additionalProperties: false }),
|
|
32
32
|
capabilities: ["actor_input"],
|
|
@@ -61,12 +61,12 @@ export default defineActor(contract, {
|
|
|
61
61
|
onInput: async (input, context) => {
|
|
62
62
|
const state = context.state.read();
|
|
63
63
|
if (state.board && !input.event && input.content !== startMarker) {
|
|
64
|
-
throw new Error("
|
|
64
|
+
throw new Error("The learning afternoon does not understand free chat messages. Use the start button of the mini-app; new ideas need a new run.");
|
|
65
65
|
}
|
|
66
66
|
if (!state.board) {
|
|
67
67
|
const catalog = await context.functions.model_list({});
|
|
68
68
|
const profile = catalog.profiles.find((entry) => entry.driver === "agent" && entry.name === "standard");
|
|
69
|
-
if (!profile) throw new Error("
|
|
69
|
+
if (!profile) throw new Error("The role standard is missing.");
|
|
70
70
|
const prompt = await workflowInstructions(learningWorkflow, "helper", readPrompt);
|
|
71
71
|
const helpers = await Promise.all(initialState.helpers.map(async (helper) => {
|
|
72
72
|
const actor = await context.functions.agent_spawn({ handle: `learning-${helper.id}`, displayName: helper.label, profile: profile.name, prompt, tools: [] });
|
|
@@ -92,11 +92,11 @@ export default defineActor(contract, {
|
|
|
92
92
|
});
|
|
93
93
|
const results = await Promise.allSettled(state.board.helpers.map(async (helper): Promise<HelperState> => {
|
|
94
94
|
const step = helperSteps.find((entry) => entry.id === helper.id);
|
|
95
|
-
if (!step) throw new Error(`
|
|
95
|
+
if (!step) throw new Error(`Unknown helper: ${helper.id}`);
|
|
96
96
|
const content = step.goal;
|
|
97
97
|
const events = await context.functions.actor_input({ actor: `@learning-${helper.id}`, content });
|
|
98
98
|
const queued = events.find((event) => event.type === "actor.input.enqueued");
|
|
99
|
-
if (!queued || queued.type !== "actor.input.enqueued") throw new Error("
|
|
99
|
+
if (!queued || queued.type !== "actor.input.enqueued") throw new Error("The task was not confirmed.");
|
|
100
100
|
return { ...helper, inputId: queued.payload.inputId, status: "working" };
|
|
101
101
|
}));
|
|
102
102
|
const helpers = state.board.helpers.map((helper, index): HelperState => {
|
|
@@ -104,7 +104,7 @@ export default defineActor(contract, {
|
|
|
104
104
|
return result.status === "fulfilled" ? result.value : { ...helper, status: "error", error: result.reason instanceof Error ? result.reason.message : String(result.reason) };
|
|
105
105
|
});
|
|
106
106
|
const board = boardWith(helpers);
|
|
107
|
-
if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: subscription.subscriptionId, reason: "
|
|
107
|
+
if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: subscription.subscriptionId, reason: "Both tasks have ended." });
|
|
108
108
|
context.state.replace({ board, subscriptionId: subscription.subscriptionId });
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
@@ -114,7 +114,7 @@ export default defineActor(contract, {
|
|
|
114
114
|
const helper = state.board.helpers.find((entry) => entry.actorId === event.sourceActorId && entry.status === "working");
|
|
115
115
|
if (!helper) return;
|
|
116
116
|
const next = await (async (): Promise<HelperState | undefined> => {
|
|
117
|
-
if (event.type === "actor.stopped") return { ...helper, status: "error", error: "
|
|
117
|
+
if (event.type === "actor.stopped") return { ...helper, status: "error", error: "The helper was stopped." };
|
|
118
118
|
if (event.type !== "turn.finished" && event.type !== "turn.interrupted") return;
|
|
119
119
|
const payload = event.payload;
|
|
120
120
|
const turnId = payload.turnId;
|
|
@@ -126,12 +126,12 @@ export default defineActor(contract, {
|
|
|
126
126
|
const text = events.filter((entry) => entry.type === "model.output.completed" && entry.payload.turnId === turnId)
|
|
127
127
|
.map((entry) => typeof entry.payload.text === "string" ? entry.payload.text.trim() : "").filter(Boolean).join("\n\n");
|
|
128
128
|
if (event.type === "turn.finished" && payload.outcome === "completed" && text) return { ...helper, text, status: "complete" };
|
|
129
|
-
const error = typeof payload.reason === "string" && payload.reason.trim() ? payload.reason : "
|
|
129
|
+
const error = typeof payload.reason === "string" && payload.reason.trim() ? payload.reason : "The helper delivered no idea.";
|
|
130
130
|
return { ...helper, status: "error", error };
|
|
131
131
|
})();
|
|
132
132
|
if (!next) return;
|
|
133
133
|
const board = boardWith(state.board.helpers.map((entry) => entry.id === next.id ? next : entry));
|
|
134
|
-
if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: state.subscriptionId!, reason: "
|
|
134
|
+
if (board.phase !== "working") await context.functions.event_unsubscribe({ subscriptionId: state.subscriptionId!, reason: "Both tasks have ended." });
|
|
135
135
|
context.state.replace({ ...state, board });
|
|
136
136
|
},
|
|
137
137
|
});
|
|
@@ -22,7 +22,7 @@ function setup(options: { missingProfile?: boolean; failDispatch?: string; befor
|
|
|
22
22
|
"model_list", "agent_spawn", "canvas_layout_replace", "run_configure", "actor_input", "event_subscribe", "event_unsubscribe", "event_query",
|
|
23
23
|
].map((name) => [name, async (input: unknown) => {
|
|
24
24
|
calls.push({ name, input });
|
|
25
|
-
if (name === "model_list") return { profiles: options.missingProfile ? [] : [{ name: "standard", driver: "agent", description: "
|
|
25
|
+
if (name === "model_list") return { profiles: options.missingProfile ? [] : [{ name: "standard", driver: "agent", description: "Test profile", turnTimeoutMs: null, isolateWorkspace: false, provider: "test", model: "test" }], models: [] };
|
|
26
26
|
if (name === "agent_spawn") {
|
|
27
27
|
const handle = (input as { handle: string }).handle;
|
|
28
28
|
return { id: `actor-${handle}`, handle };
|
|
@@ -32,7 +32,7 @@ function setup(options: { missingProfile?: boolean; failDispatch?: string; befor
|
|
|
32
32
|
if (name === "actor_input") {
|
|
33
33
|
const actor = (input as { actor: string }).actor;
|
|
34
34
|
await options.beforeDispatch?.(actor);
|
|
35
|
-
if (actor === options.failDispatch) throw new Error("
|
|
35
|
+
if (actor === options.failDispatch) throw new Error("Task could not be sent.");
|
|
36
36
|
return [{ type: "actor.input.enqueued", payload: { actorId: `actor-${actor.slice(1)}`, inputId: `input-${actor.slice(1)}` } }];
|
|
37
37
|
}
|
|
38
38
|
return null;
|
|
@@ -56,7 +56,7 @@ async function complete(context: ReturnType<typeof setup>["context"], helper: st
|
|
|
56
56
|
await program.onInput(eventOf(helper, "turn.finished", { outcome: "completed" }), context);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
test("
|
|
59
|
+
test("start sets up only two plain helpers and its own app; only the button sends a task to the owner", async () => {
|
|
60
60
|
const { context, calls } = setup();
|
|
61
61
|
await program.onInput(setupInput, context);
|
|
62
62
|
assert.equal(context.state.read().board?.phase, "ready");
|
|
@@ -68,7 +68,7 @@ test("Start richtet nur zwei reine Helfer und die eigene App ein; erst der Butto
|
|
|
68
68
|
assert.equal(calls.some((call) => call.name === "actor_input" || call.name === "event_subscribe"), false);
|
|
69
69
|
const before = structuredClone(context.state.read());
|
|
70
70
|
const callCount = calls.length;
|
|
71
|
-
await assert.rejects(async () => program.onInput(setupInput, context), /
|
|
71
|
+
await assert.rejects(async () => program.onInput(setupInput, context), /does not understand free chat messages/);
|
|
72
72
|
assert.deepEqual(context.state.read(), before);
|
|
73
73
|
assert.equal(calls.length, callCount);
|
|
74
74
|
await program.functions.start({}, context);
|
|
@@ -76,13 +76,13 @@ test("Start richtet nur zwei reine Helfer und die eigene App ein; erst der Butto
|
|
|
76
76
|
assert.equal(context.state.read().board?.phase, "ready");
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
test("
|
|
79
|
+
test("the input handler subscribes first and sends both independent tasks in parallel exactly once", async () => {
|
|
80
80
|
const pending: (() => void)[] = [];
|
|
81
81
|
const { context, calls } = setup({ beforeDispatch: () => new Promise<void>((resolve) => pending.push(resolve)) });
|
|
82
82
|
await program.onInput(setupInput, context);
|
|
83
83
|
const starting = program.onInput(startInput, context);
|
|
84
84
|
for (let attempt = 0; attempt < 20 && pending.length < 2; attempt++) await Promise.resolve();
|
|
85
|
-
assert.equal(pending.length, 2, "
|
|
85
|
+
assert.equal(pending.length, 2, "Both inputs begin before one finishes.");
|
|
86
86
|
assert.equal(calls.filter((call) => call.name === "event_subscribe").length, 1);
|
|
87
87
|
for (const resolve of pending) resolve();
|
|
88
88
|
await starting;
|
|
@@ -93,104 +93,104 @@ test("der Input-Handler abonniert zuerst und sendet beide unabhängigen Aufträg
|
|
|
93
93
|
});
|
|
94
94
|
|
|
95
95
|
for (const phase of ["ready", "working", "complete"]) {
|
|
96
|
-
test(`
|
|
96
|
+
test(`free chat messages are rejected when ${phase} and keep the ideas`, async () => {
|
|
97
97
|
const { context, calls } = setup();
|
|
98
98
|
if (phase === "ready") {
|
|
99
99
|
await program.onInput(setupInput, context);
|
|
100
100
|
} else {
|
|
101
101
|
await begin(context);
|
|
102
|
-
await complete(context, "experiment", "
|
|
103
|
-
if (phase === "complete") await complete(context, "quiz", "
|
|
102
|
+
await complete(context, "experiment", "The experiment idea is ready.");
|
|
103
|
+
if (phase === "complete") await complete(context, "quiz", "The quiz idea is ready.");
|
|
104
104
|
}
|
|
105
105
|
assert.equal(context.state.read().board?.phase, phase);
|
|
106
106
|
const before = structuredClone(context.state.read());
|
|
107
107
|
const callCount = calls.length;
|
|
108
|
-
const content = "
|
|
109
|
-
await assert.rejects(async () => program.onInput(inputOf(content), context), /
|
|
108
|
+
const content = "Please collect new ideas for the learning afternoon again.";
|
|
109
|
+
await assert.rejects(async () => program.onInput(inputOf(content), context), /does not understand free chat messages.*start button.*new run/);
|
|
110
110
|
assert.deepEqual(context.state.read(), before);
|
|
111
111
|
assert.equal(calls.length, callCount);
|
|
112
112
|
if (phase === "ready") {
|
|
113
113
|
await program.onInput(startInput, context);
|
|
114
114
|
assert.equal(context.state.read().board?.phase, "working");
|
|
115
115
|
} else if (phase === "working") {
|
|
116
|
-
await complete(context, "quiz", "
|
|
116
|
+
await complete(context, "quiz", "The quiz idea is ready.");
|
|
117
117
|
assert.equal(context.state.read().board?.phase, "complete");
|
|
118
|
-
assert.equal(context.state.read().board?.helpers[0]?.text, "
|
|
118
|
+
assert.equal(context.state.read().board?.helpers[0]?.text, "The experiment idea is ready.");
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
for (const order of [["experiment", "quiz"], ["quiz", "experiment"]]) {
|
|
124
|
-
test(`
|
|
124
|
+
test(`collects answers in any order: ${order.join(", ")}`, async () => {
|
|
125
125
|
const { context, calls } = setup();
|
|
126
126
|
await begin(context);
|
|
127
|
-
await complete(context, order[0]!, "
|
|
127
|
+
await complete(context, order[0]!, "First real answer");
|
|
128
128
|
assert.equal(context.state.read().board?.phase, "working");
|
|
129
|
-
await complete(context, order[1]!, "
|
|
129
|
+
await complete(context, order[1]!, "Second real answer");
|
|
130
130
|
const board = context.state.read().board!;
|
|
131
131
|
assert.equal(board.phase, "complete");
|
|
132
|
-
assert.equal(board.helpers.find((helper) => helper.id === order[0])?.text, "
|
|
133
|
-
assert.equal(board.helpers.find((helper) => helper.id === order[1])?.text, "
|
|
132
|
+
assert.equal(board.helpers.find((helper) => helper.id === order[0])?.text, "First real answer");
|
|
133
|
+
assert.equal(board.helpers.find((helper) => helper.id === order[1])?.text, "Second real answer");
|
|
134
134
|
assert.equal(calls.filter((call) => call.name === "event_unsubscribe").length, 1);
|
|
135
|
-
for (let count = 0; count < 10; count++) await complete(context, order[0]!, "
|
|
135
|
+
for (let count = 0; count < 10; count++) await complete(context, order[0]!, "Late answer");
|
|
136
136
|
assert.deepEqual(context.state.read().board, board);
|
|
137
137
|
assert.equal(calls.filter((call) => call.name === "actor_input").length, 2);
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
test("
|
|
141
|
+
test("ignores wrong actors, inputs, turns, subscriptions, and duplicate answers", async () => {
|
|
142
142
|
const { context } = setup();
|
|
143
143
|
await program.onInput(setupInput, context);
|
|
144
144
|
await program.onInput(startInput, context);
|
|
145
|
-
record(context, "experiment", "turn.started", { inputId: "
|
|
146
|
-
record(context, "experiment", "model.output.completed", { text: "
|
|
145
|
+
record(context, "experiment", "turn.started", { inputId: "foreign", turnId: "foreign" });
|
|
146
|
+
record(context, "experiment", "model.output.completed", { text: "Foreign", turnId: "foreign" });
|
|
147
147
|
record(context, "experiment", "turn.started", { inputId: "input-learning-experiment" });
|
|
148
|
-
record(context, "experiment", "model.output.completed", { text: "
|
|
148
|
+
record(context, "experiment", "model.output.completed", { text: "My idea" });
|
|
149
149
|
const before = context.state.read();
|
|
150
150
|
await program.onInput(eventOf("foreign", "turn.finished", { outcome: "completed" }), context);
|
|
151
|
-
await program.onInput(eventOf("experiment", "turn.finished", { outcome: "completed", turnId: "
|
|
152
|
-
await program.onInput({ ...eventOf("experiment", "turn.finished", { outcome: "completed" }), subscriptionId: "
|
|
151
|
+
await program.onInput(eventOf("experiment", "turn.finished", { outcome: "completed", turnId: "foreign" }), context);
|
|
152
|
+
await program.onInput({ ...eventOf("experiment", "turn.finished", { outcome: "completed" }), subscriptionId: "foreign" }, context);
|
|
153
153
|
assert.deepEqual(context.state.read(), before);
|
|
154
154
|
const answer = eventOf("experiment", "turn.finished", { outcome: "completed" });
|
|
155
155
|
await program.onInput(answer, context);
|
|
156
156
|
await program.onInput(answer, context);
|
|
157
|
-
assert.equal(context.state.read().board?.helpers[0]?.text, "
|
|
157
|
+
assert.equal(context.state.read().board?.helpers[0]?.text, "My idea");
|
|
158
158
|
assert.equal(context.state.read().board?.helpers[0]?.status, "complete");
|
|
159
159
|
});
|
|
160
160
|
|
|
161
161
|
for (const ending of ["failed", "interrupted", "empty", "stopped"]) {
|
|
162
|
-
test(`
|
|
162
|
+
test(`a ${ending} result keeps the successful idea of the other helper`, async () => {
|
|
163
163
|
const { context, calls } = setup();
|
|
164
164
|
await begin(context);
|
|
165
|
-
await complete(context, "quiz", "
|
|
166
|
-
await program.onInput(eventOf("experiment", ending === "stopped" ? "actor.stopped" : ending === "interrupted" ? "turn.interrupted" : "turn.finished", { outcome: ending === "empty" ? "completed" : "failed", ...(ending === "empty" ? {} : { reason: "
|
|
165
|
+
await complete(context, "quiz", "The quiz is ready.");
|
|
166
|
+
await program.onInput(eventOf("experiment", ending === "stopped" ? "actor.stopped" : ending === "interrupted" ? "turn.interrupted" : "turn.finished", { outcome: ending === "empty" ? "completed" : "failed", ...(ending === "empty" ? {} : { reason: "Model error" }) }), context);
|
|
167
167
|
assert.equal(context.state.read().board?.phase, "error");
|
|
168
168
|
assert.equal(context.state.read().board?.helpers[0]?.status, "error");
|
|
169
169
|
assert.ok(context.state.read().board?.helpers[0]?.error);
|
|
170
|
-
assert.equal(context.state.read().board?.helpers[1]?.text, "
|
|
170
|
+
assert.equal(context.state.read().board?.helpers[1]?.text, "The quiz is ready.");
|
|
171
171
|
assert.equal(calls.filter((call) => call.name === "actor_input").length, 2);
|
|
172
172
|
assert.equal(calls.filter((call) => call.name === "event_unsubscribe").length, 1);
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
test("
|
|
176
|
+
test("a failed input does not prevent the other helper's task", async () => {
|
|
177
177
|
const { context } = setup({ failDispatch: "@learning-experiment" });
|
|
178
178
|
await begin(context);
|
|
179
179
|
assert.equal(context.state.read().board?.helpers[0]?.status, "error");
|
|
180
180
|
assert.equal(context.state.read().board?.phase, "working");
|
|
181
|
-
await complete(context, "quiz", "
|
|
181
|
+
await complete(context, "quiz", "A quiz idea.");
|
|
182
182
|
assert.equal(context.state.read().board?.phase, "error");
|
|
183
183
|
assert.equal(context.state.read().board?.helpers[1]?.status, "complete");
|
|
184
184
|
});
|
|
185
185
|
|
|
186
|
-
test("
|
|
186
|
+
test("without a standard profile no helper is created", async () => {
|
|
187
187
|
const { context, calls } = setup({ missingProfile: true });
|
|
188
|
-
await assert.rejects(async () => program.onInput(setupInput, context), /
|
|
188
|
+
await assert.rejects(async () => program.onInput(setupInput, context), /role standard is missing/);
|
|
189
189
|
assert.deepEqual(calls.map((call) => call.name), ["model_list"]);
|
|
190
190
|
assert.deepEqual(context.state.read(), {});
|
|
191
191
|
});
|
|
192
192
|
|
|
193
|
-
test("
|
|
193
|
+
test("the shared flow provides helper tasks, prompt, and parallel graph branches", async () => {
|
|
194
194
|
const { learningWorkflow, helperSteps } = await import("../src/workflow.ts");
|
|
195
195
|
const { learningWorkflowState, initialState } = await import("../src/state.ts");
|
|
196
196
|
const { workflowGraph } = await import("@ragents/workflow");
|
|
@@ -200,15 +200,15 @@ test("der gemeinsame Ablauf liefert Helferaufträge, Prompt und parallele Graphz
|
|
|
200
200
|
assert.equal(spawns.length, helperSteps.length);
|
|
201
201
|
for (const spawn of spawns) {
|
|
202
202
|
const prompt = (spawn.input as { prompt: string }).prompt;
|
|
203
|
-
assert.match(prompt, /
|
|
204
|
-
assert.match(prompt, /
|
|
205
|
-
assert.match(prompt, /
|
|
203
|
+
assert.match(prompt, /Work only on this task/);
|
|
204
|
+
assert.match(prompt, /sample question/);
|
|
205
|
+
assert.match(prompt, /dangerous substances/);
|
|
206
206
|
}
|
|
207
207
|
assert.deepEqual(calls.filter((call) => call.name === "actor_input").map((call) => (call.input as { content: string }).content), helperSteps.map((step) => step.goal));
|
|
208
208
|
const initial = workflowGraph(learningWorkflow, learningWorkflowState(initialState));
|
|
209
209
|
assert.ok(initial.nodes.every((node) => node.status === "pending"));
|
|
210
210
|
assert.deepEqual(initial.edges.map((edge) => [edge.source, edge.target]), [["experiment", "collect"], ["quiz", "collect"]]);
|
|
211
|
-
await complete(context, "quiz", "
|
|
211
|
+
await complete(context, "quiz", "A quiz idea.");
|
|
212
212
|
const partial = workflowGraph(learningWorkflow, learningWorkflowState(context.state.read().board!));
|
|
213
213
|
assert.deepEqual(partial.nodes.map((node) => [node.id, node.status]), [["experiment", "active"], ["quiz", "done"], ["collect", "active"]]);
|
|
214
214
|
await program.onInput(eventOf("experiment", "actor.stopped", {}), context);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: "
|
|
2
|
+
title: Moderated round without coordinator
|
|
3
|
+
description: "A prepared setup shows a run that works without a coordinator from the start. The moderator becomes the primary actor and your direct contact in the chat."
|
|
4
4
|
order: 130
|
|
5
5
|
coordinator: false
|
|
6
|
-
tags: Run
|
|
6
|
+
tags: Run scripts, Use case, Concept demo, Primary actor, Agent teams
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
`run_configure`
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
Reference case for `coordinator: false`: the host spawns no coordinator, the script uses
|
|
10
|
+
`run_configure` to choose the moderator as primary actor and sets the run title. The chat binds as soon as
|
|
11
|
+
the primary actor is determined. The moderator keeps its own actor prompt even as primary actor; it receives the concrete task
|
|
12
|
+
through the first ActorInput. A start value `{ "topic": "..." }` sets the topic.
|
|
@@ -10,7 +10,7 @@ const contract = {
|
|
|
10
10
|
type Start = { input: { topic?: string } | null };
|
|
11
11
|
|
|
12
12
|
const guestOf = (name: string): string =>
|
|
13
|
-
name === "kai" ? "
|
|
13
|
+
name === "kai" ? "You are Kai, pragmatic and brief." : "You are Lena, thorough and deliberate.";
|
|
14
14
|
|
|
15
15
|
export default defineActor(contract, {
|
|
16
16
|
functions: {},
|
|
@@ -18,17 +18,17 @@ export default defineActor(contract, {
|
|
|
18
18
|
const state = context.state.read();
|
|
19
19
|
if (state && state.built) return;
|
|
20
20
|
const start = JSON.parse(input.content) as Start;
|
|
21
|
-
const topic = start.input && start.input.topic ? start.input.topic : "
|
|
21
|
+
const topic = start.input && start.input.topic ? start.input.topic : "What makes a good team?";
|
|
22
22
|
|
|
23
23
|
const catalog = await context.functions.model_list({});
|
|
24
24
|
const profiles = catalog.profiles.filter((profile) => profile.driver === "agent" && profile.name !== "coordinator");
|
|
25
25
|
const first = profiles[0];
|
|
26
|
-
if (!first) throw new Error("
|
|
26
|
+
if (!first) throw new Error("No role other than coordinator; agent_spawn needs one.");
|
|
27
27
|
|
|
28
28
|
const moderator = await context.functions.agent_spawn({
|
|
29
29
|
handle: "moderator",
|
|
30
30
|
displayName: "Moderator",
|
|
31
|
-
prompt: "
|
|
31
|
+
prompt: "You moderate a conversation circle between the user and two guests.",
|
|
32
32
|
profile: first.name,
|
|
33
33
|
tools: ["actor_input", "event_subscribe", "event_unsubscribe", "event_subscription_list"],
|
|
34
34
|
});
|
|
@@ -36,7 +36,7 @@ export default defineActor(contract, {
|
|
|
36
36
|
for (const name of ["kai", "lena"]) {
|
|
37
37
|
const guest = await context.functions.agent_spawn({
|
|
38
38
|
handle: name,
|
|
39
|
-
prompt: `${guestOf(name)}
|
|
39
|
+
prompt: `${guestOf(name)} Reply with at most two sentences.`,
|
|
40
40
|
profile: first.name,
|
|
41
41
|
tools: [],
|
|
42
42
|
});
|
|
@@ -44,15 +44,15 @@ export default defineActor(contract, {
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
await context.functions.run_configure({
|
|
47
|
-
title: `
|
|
47
|
+
title: `Moderated round: ${topic}`,
|
|
48
48
|
primaryActor: `@${moderator.handle}`,
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
await context.functions.actor_input({
|
|
52
52
|
actor: `@${moderator.handle}`,
|
|
53
|
-
content: "
|
|
54
|
-
+ `
|
|
55
|
-
+ `
|
|
53
|
+
content: "You are the moderator of this run and talk directly with the user in the chat; there is no coordinator. "
|
|
54
|
+
+ `Your guests are ${guests.join(" and ")}. Gather their contributions and include them in the conversation circle. `
|
|
55
|
+
+ `Topic: "${topic}". Greet the user with two sentences, name the topic, and ask whether they want to ask the first question or whether you should begin.`,
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
context.state.replace({ built: true });
|
|
@@ -13,7 +13,7 @@ export const setupContext = (profiles = [{ name: "coordinator", driver: "agent"
|
|
|
13
13
|
return { name: value.name, actor: value.actor, views: 1, active: true };
|
|
14
14
|
}
|
|
15
15
|
return name === "model_list" ? {
|
|
16
|
-
profiles: profiles.map((profile) => ({ ...profile, description: "
|
|
16
|
+
profiles: profiles.map((profile) => ({ ...profile, description: "Test profile", turnTimeoutMs: null,
|
|
17
17
|
isolateWorkspace: false, provider: "test", model: "test" })), models: [],
|
|
18
18
|
} : name === "actor_input" ? [] : null;
|
|
19
19
|
}]));
|
|
@@ -3,22 +3,22 @@ import test from "node:test";
|
|
|
3
3
|
import program from "../src/server.ts";
|
|
4
4
|
import { setupContext, startInput } from "./helpers.ts";
|
|
5
5
|
|
|
6
|
-
test("
|
|
6
|
+
test("sets up the moderator and guests and hands the chat to the moderator", async () => {
|
|
7
7
|
const { calls, context } = setupContext();
|
|
8
|
-
await program.onInput!(startInput({ topic: "
|
|
8
|
+
await program.onInput!(startInput({ topic: "Good collaboration" }), context);
|
|
9
9
|
assert.deepEqual(calls.filter((call) => call.name === "agent_spawn").map((call) => (call.input as { handle: string }).handle), ["moderator", "kai", "lena"]);
|
|
10
10
|
assert.deepEqual(calls.filter((call) => call.name === "agent_spawn").map((call) => (call.input as { tools: string[] }).tools), [["actor_input", "event_subscribe", "event_unsubscribe", "event_subscription_list"], [], []]);
|
|
11
|
-
assert.deepEqual(calls.find((call) => call.name === "run_configure")?.input, { title: "
|
|
12
|
-
assert.match(JSON.stringify(calls.at(-1)), /
|
|
11
|
+
assert.deepEqual(calls.find((call) => call.name === "run_configure")?.input, { title: "Moderated round: Good collaboration", primaryActor: "@moderator" });
|
|
12
|
+
assert.match(JSON.stringify(calls.at(-1)), /Good collaboration/);
|
|
13
13
|
assert.deepEqual(context.state.read(), { built: true });
|
|
14
14
|
const completedCalls = calls.length;
|
|
15
15
|
await program.onInput!(startInput(null), context);
|
|
16
16
|
assert.equal(calls.length, completedCalls);
|
|
17
17
|
});
|
|
18
18
|
|
|
19
|
-
test("
|
|
19
|
+
test("without a usable role the setup stays unchanged", async () => {
|
|
20
20
|
const { calls, context } = setupContext([{ name: "coordinator", driver: "agent" }]);
|
|
21
|
-
await assert.rejects(async () => program.onInput!(startInput(null), context), /
|
|
21
|
+
await assert.rejects(async () => program.onInput!(startInput(null), context), /No role/);
|
|
22
22
|
assert.deepEqual(calls.map((call) => call.name), ["model_list"]);
|
|
23
23
|
assert.deepEqual(context.state.read(), {});
|
|
24
24
|
});
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
3
|
-
description: "
|
|
2
|
+
title: Set up collection board
|
|
3
|
+
description: "A prepared setup shows an LLM list helper with its own function, mini-app, and shared state. A start guide sets the title and the first entry."
|
|
4
4
|
order: 100
|
|
5
5
|
guide: ragents.reference.shared-actor-list
|
|
6
|
-
tags: Run
|
|
6
|
+
tags: Run scripts, Use case, Concept demo, Start guide, Actor functions, Actor state, Mini-apps, LLM actor with view
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
`actors/shared-list/`
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
The setup creates a real LLM list helper and binds the bundled program
|
|
10
|
+
`actors/shared-list/` to it. Its function `append_to_list` and the React view share the
|
|
11
|
+
intrinsic state of this actor. `actor_program_activate` checks and activates the package
|
|
12
|
+
the host has already copied. No separate app actor or second list implementation is created.
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
The guide passes `{ "title": "...", "firstEntry": "..." }`. The title has 1 to 160 characters,
|
|
15
|
+
the first entry 1 to 2000 characters. `null` starts with "Shared list" and
|
|
16
|
+
"Hello from the run script". Invalid values are rejected before the setup. After the setup,
|
|
17
|
+
the list helper receives the explicit task to create the first entry through its function.
|
|
18
|
+
The package tests check configuration, state, and the actual call order.
|
package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"private": true,
|
|
4
4
|
"type": "module",
|
|
5
5
|
"ragents": {
|
|
6
|
-
"title": "
|
|
7
|
-
"description": "
|
|
6
|
+
"title": "Shared list",
|
|
7
|
+
"description": "Collects texts from the app and from an agent tool in a shared list.",
|
|
8
8
|
"backend": "src/server.ts",
|
|
9
9
|
"views": [
|
|
10
10
|
{
|
package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts
CHANGED
|
@@ -4,9 +4,9 @@ export const contract = {
|
|
|
4
4
|
state: Type.Object({ entries: Type.Optional(Type.Array(Type.String())) }, {"additionalProperties": false}),
|
|
5
5
|
functions: {
|
|
6
6
|
append: {
|
|
7
|
-
label: "
|
|
8
|
-
description: "
|
|
9
|
-
input: Type.Object({ text: Type.String({"description": "
|
|
7
|
+
label: "Add entry",
|
|
8
|
+
description: "Appends the entered text to the shared list.",
|
|
9
|
+
input: Type.Object({ text: Type.String({"description": "The text for the new list entry."}) }, {"additionalProperties": false}),
|
|
10
10
|
output: Type.Object({ text: Type.String(), entries: Type.Array(Type.String()) }, {"additionalProperties": false}),
|
|
11
11
|
capabilities: [],
|
|
12
12
|
tool: {"name": "append_to_list", "targets": ["self"], "card": true},
|
|
@@ -5,9 +5,9 @@ import { createTestContext } from "@ragents/server/testing";
|
|
|
5
5
|
import { contract } from "../src/contract.ts";
|
|
6
6
|
import program from "../src/server.ts";
|
|
7
7
|
|
|
8
|
-
test("
|
|
8
|
+
test("adds entries without losing existing entries", async () => {
|
|
9
9
|
const context = createTestContext<Static<typeof contract.state>>({ state: {} });
|
|
10
|
-
assert.deepEqual(await program.functions.append({"text": "
|
|
11
|
-
assert.deepEqual(await program.functions.append({"text": "
|
|
12
|
-
assert.deepEqual(context.state.read(), {"entries": ["
|
|
10
|
+
assert.deepEqual(await program.functions.append({"text": " First entry "}, context), {"text": "First entry", "entries": ["First entry"]});
|
|
11
|
+
assert.deepEqual(await program.functions.append({"text": "Second entry"}, context), {"text": "Second entry", "entries": ["First entry", "Second entry"]});
|
|
12
|
+
assert.deepEqual(context.state.read(), {"entries": ["First entry", "Second entry"]});
|
|
13
13
|
});
|
|
@@ -10,15 +10,15 @@ const contract = {
|
|
|
10
10
|
type Start = { input: unknown };
|
|
11
11
|
|
|
12
12
|
const settingsFrom = (value: unknown): { title: string; firstEntry: string } => {
|
|
13
|
-
if (value === null) return { title: "
|
|
13
|
+
if (value === null) return { title: "Shared list", firstEntry: "Hello from the run script" };
|
|
14
14
|
if (typeof value !== "object" || Array.isArray(value)) {
|
|
15
|
-
throw new Error("
|
|
15
|
+
throw new Error("The start value needs title (1 to 160 characters) and firstEntry (1 to 2000 characters).");
|
|
16
16
|
}
|
|
17
17
|
const settings = value as Record<string, unknown>;
|
|
18
18
|
if (Object.keys(settings).some((key) => key !== "title" && key !== "firstEntry")
|
|
19
19
|
|| typeof settings.title !== "string" || !settings.title.trim() || settings.title.trim().length > 160
|
|
20
20
|
|| typeof settings.firstEntry !== "string" || !settings.firstEntry.trim() || settings.firstEntry.trim().length > 2000) {
|
|
21
|
-
throw new Error("
|
|
21
|
+
throw new Error("The start value needs title (1 to 160 characters) and firstEntry (1 to 2000 characters).");
|
|
22
22
|
}
|
|
23
23
|
return { title: settings.title.trim(), firstEntry: settings.firstEntry.trim() };
|
|
24
24
|
};
|
|
@@ -36,13 +36,13 @@ export default defineActor(contract, {
|
|
|
36
36
|
const catalog = await context.functions.model_list({});
|
|
37
37
|
const profiles = catalog.profiles.filter((profile) => profile.driver === "agent" && profile.name !== "coordinator");
|
|
38
38
|
const first = profiles[0];
|
|
39
|
-
if (!first) throw new Error("
|
|
39
|
+
if (!first) throw new Error("No role other than coordinator; agent_spawn needs one.");
|
|
40
40
|
|
|
41
|
-
await context.functions.run_configure({ title: `
|
|
41
|
+
await context.functions.run_configure({ title: `Collection board: ${title}` });
|
|
42
42
|
|
|
43
43
|
const helper = await context.functions.agent_spawn({
|
|
44
|
-
handle: "
|
|
45
|
-
prompt: `
|
|
44
|
+
handle: "list-helper",
|
|
45
|
+
prompt: `You keep the shared collection "${title}". You append every entry you are given with your function append_to_list and report the new state.`,
|
|
46
46
|
profile: first.name,
|
|
47
47
|
tools: null,
|
|
48
48
|
});
|
|
@@ -51,13 +51,13 @@ export default defineActor(contract, {
|
|
|
51
51
|
|
|
52
52
|
await context.functions.actor_input({
|
|
53
53
|
actor: `@${helper.handle}`,
|
|
54
|
-
content: `
|
|
54
|
+
content: `Use your function append_to_list to add the entry ${JSON.stringify(firstEntry)} to the shared collection ${JSON.stringify(title)} and report the state of the list.`,
|
|
55
55
|
});
|
|
56
56
|
await context.functions.actor_input({
|
|
57
57
|
actor: "@coordinator",
|
|
58
|
-
content: `
|
|
59
|
-
+ "
|
|
60
|
-
+ "
|
|
58
|
+
content: `The shared collection is called ${JSON.stringify(title)}. The run script has bound the program shared-list to @${helper.handle}. Its view is visible on the surface; the helper is currently adding the first entry with append_to_list. `
|
|
59
|
+
+ "Below under Actors, its name opens the inspector with chat and details. Its tile is hidden by default and can be turned on in the Actors list when needed. "
|
|
60
|
+
+ "Explain to the user in three sentences how to use the visible list, how to open the helper, and that the view and the function share the same list state.",
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
context.state.replace({ built: true });
|
|
@@ -13,7 +13,7 @@ export const setupContext = (profiles = [{ name: "coordinator", driver: "agent"
|
|
|
13
13
|
return { name: value.name, actor: value.actor, views: 1, active: true };
|
|
14
14
|
}
|
|
15
15
|
return name === "model_list" ? {
|
|
16
|
-
profiles: profiles.map((profile) => ({ ...profile, description: "
|
|
16
|
+
profiles: profiles.map((profile) => ({ ...profile, description: "Test profile", turnTimeoutMs: null,
|
|
17
17
|
isolateWorkspace: false, provider: "test", model: "test" })), models: [],
|
|
18
18
|
} : name === "actor_input" ? [] : null;
|
|
19
19
|
}]));
|