@schlenkr/ragents 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +9 -39
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +32 -29
- package/apps/server/src/api/core-methods.ts +21 -19
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +8 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +63 -58
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +25 -24
- package/apps/server/src/ragents/global-chat.ts +14 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +51 -49
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +64 -55
- package/apps/web/dist/help/guide-clients.md +62 -52
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +1997 -942
- package/apps/web/dist/help/mini-app.css +30 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +26 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +29 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +34 -27
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +256 -228
- package/bundles/ragents.actor-programs/server/index.js.map +4 -4
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -4
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +4 -4
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +3 -3
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +99 -99
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +83 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/core/tools/bash.d.ts +1 -1
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/core/tools/bash.ts +1 -1
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/index.ts +1 -0
- package/packages/ragents/src/plugin-host.ts +162 -116
- package/packages/ragents/src/plugin-types.ts +29 -10
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +35 -7
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +37 -31
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/index.ts +2 -0
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -8
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +29 -28
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +10 -10
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +8 -8
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +8 -5
- package/plugins/ragents.workspace/server/index.ts +5 -4
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
- package/apps/web/dist/assets/runPanel-ZT6TPDLM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -17,21 +17,21 @@ export type AddresseeNode = AddresseeActorNode | AddresseeGroupNode;
|
|
|
17
17
|
|
|
18
18
|
export type AddresseeStatus = "running" | "input" | "waiting" | "stopped";
|
|
19
19
|
|
|
20
|
-
/**
|
|
20
|
+
/** From this many similar siblings on, the tree combines them into a group. */
|
|
21
21
|
export const ADDRESSEE_GROUP_MIN = 4;
|
|
22
|
-
/**
|
|
22
|
+
/** The search appears only with more entries than this. */
|
|
23
23
|
export const ADDRESSEE_SEARCH_ABOVE = 12;
|
|
24
24
|
const SUMMARY_LENGTH = 90;
|
|
25
25
|
|
|
26
26
|
const STATUS_WORDS: Readonly<Record<AddresseeStatus, readonly [one: string, many: string]>> = {
|
|
27
|
-
running: ["
|
|
28
|
-
input: ["
|
|
29
|
-
waiting: ["
|
|
30
|
-
stopped: ["
|
|
27
|
+
running: ["working", "working"],
|
|
28
|
+
input: ["waiting for input", "waiting for input"],
|
|
29
|
+
waiting: ["waiting", "waiting"],
|
|
30
|
+
stopped: ["stopped", "stopped"],
|
|
31
31
|
};
|
|
32
32
|
const STATUS_ORDER: readonly AddresseeStatus[] = ["running", "input", "waiting", "stopped"];
|
|
33
33
|
|
|
34
|
-
const lower = (text: string) => text.toLocaleLowerCase("
|
|
34
|
+
const lower = (text: string) => text.toLocaleLowerCase("en-US");
|
|
35
35
|
|
|
36
36
|
const shortened = (text: string): string => {
|
|
37
37
|
const line = text.split("\n").map((entry) => entry.replace(/\s+/g, " ").trim()).find((entry) => entry !== "") ?? "";
|
|
@@ -48,7 +48,7 @@ export const addresseeStatus = (view: RunView, actor: RunActor): AddresseeStatus
|
|
|
48
48
|
|
|
49
49
|
export const addresseeStatusWord = (status: AddresseeStatus, count = 1): string => STATUS_WORDS[status][count === 1 ? 0 : 1];
|
|
50
50
|
|
|
51
|
-
/**
|
|
51
|
+
/** Counts the states of a group in a fixed order, e.g. "3 working, 34 waiting". */
|
|
52
52
|
export const addresseeStatusCounts = (view: RunView, actors: readonly RunActor[]): string => {
|
|
53
53
|
const counts = new Map<AddresseeStatus, number>();
|
|
54
54
|
for (const status of actors.map((actor) => addresseeStatus(view, actor))) counts.set(status, (counts.get(status) ?? 0) + 1);
|
|
@@ -58,7 +58,7 @@ export const addresseeStatusCounts = (view: RunView, actors: readonly RunActor[]
|
|
|
58
58
|
}).join(", ");
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
/**
|
|
61
|
+
/** The short description per actor: the one set on creation, otherwise the shortened first task, otherwise a differing display name. */
|
|
62
62
|
export const addresseeSummaries = (view: RunView): ((actor: RunActor) => string | undefined) => {
|
|
63
63
|
const firstInputs = new Map<string, { sequence: number; content: string }>();
|
|
64
64
|
for (const input of view.inputs) {
|
|
@@ -76,7 +76,7 @@ export const addresseeSummaries = (view: RunView): ((actor: RunActor) => string
|
|
|
76
76
|
};
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
/**
|
|
79
|
+
/** The nearest creator along `createdBy` that is itself in the tree; a human or an unknown creator makes the actor a root. */
|
|
80
80
|
export const addresseeParentId = (byId: ReadonlyMap<string, RunActor>, included: ReadonlySet<string>, actor: RunActor): string | null => {
|
|
81
81
|
const visited = new Set([actor.id]);
|
|
82
82
|
let current = actor.createdBy;
|
|
@@ -105,7 +105,7 @@ const groupLabel = (handles: readonly string[]): string => {
|
|
|
105
105
|
return `@${stem}*`;
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
-
/**
|
|
108
|
+
/** Who created whom: coordinator on top, subagents below, similar siblings (kind and handle stem) as a group. */
|
|
109
109
|
export const addresseeTree = (view: RunView, actors: readonly RunActor[]): AddresseeNode[] => {
|
|
110
110
|
const byId = new Map(view.actors.map((actor) => [actor.id, actor]));
|
|
111
111
|
const included = new Set(actors.map((actor) => actor.id));
|
|
@@ -138,7 +138,7 @@ export const addresseeTree = (view: RunView, actors: readonly RunActor[]): Addre
|
|
|
138
138
|
return level(null);
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
-
/**
|
|
141
|
+
/** The actors matching the search, together with their creators in the tree, so every match stands in its place. */
|
|
142
142
|
export const addresseeMatches = (view: RunView, actors: readonly RunActor[], query: string, summary: (actor: RunActor) => string | undefined): RunActor[] => {
|
|
143
143
|
const words = lower(query).trim().split(/\s+/).filter(Boolean);
|
|
144
144
|
if (words.length === 0) return [...actors];
|
|
@@ -158,7 +158,7 @@ export const addresseeMatches = (view: RunView, actors: readonly RunActor[], que
|
|
|
158
158
|
return actors.filter((actor) => kept.has(actor.id));
|
|
159
159
|
};
|
|
160
160
|
|
|
161
|
-
/**
|
|
161
|
+
/** Whether an actor is in a branch, e.g. so a group containing the selected actor starts open. */
|
|
162
162
|
export const addresseeNodeContains = (node: AddresseeNode, actorId: string): boolean =>
|
|
163
163
|
node.kind === "actor"
|
|
164
164
|
? node.actor.id === actorId || node.children.some((child) => addresseeNodeContains(child, actorId))
|
|
@@ -2,7 +2,7 @@ import type { SurfaceElementDefinition } from "@ragents/web/PluginRegistry";
|
|
|
2
2
|
import { actorVisibleInHeader, type ActorHeaderMode } from "../actor-header-settings";
|
|
3
3
|
import { chatPrimaryId, type RunActor, type RunView } from "@ragents/web/run-view";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/** The actors of the chip row: coordinator first, then in creation order; without the inspect right only LLM agents. */
|
|
6
6
|
export const runPanelActors = (view: RunView, inspect: boolean): RunActor[] => {
|
|
7
7
|
const candidates = view.actors.filter((actor) => actor.kind !== "human" && (inspect || actor.kind === "agent"));
|
|
8
8
|
const primaryId = chatPrimaryId(view);
|
|
@@ -17,7 +17,7 @@ export interface RunPanelActorFilter {
|
|
|
17
17
|
selectedId: string | undefined;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
/**
|
|
20
|
+
/** Visible according to the surface's actor display; the coordinator and the selected actor always stay as a chip. */
|
|
21
21
|
export const partitionRunPanelActors = (actors: readonly RunActor[], filter: RunPanelActorFilter): { shown: RunActor[]; hidden: RunActor[] } => {
|
|
22
22
|
const shown: RunActor[] = [];
|
|
23
23
|
const hidden: RunActor[] = [];
|
|
@@ -34,6 +34,6 @@ export const pendingInputCount = (view: RunView, actorId: string): number =>
|
|
|
34
34
|
export const pendingActionCount = (view: RunView, askedBy: string): number =>
|
|
35
35
|
view.actions.filter((action) => action.status === "pending" && action.askedBy === askedBy).length;
|
|
36
36
|
|
|
37
|
-
/**
|
|
37
|
+
/** A chip carries an exclamation mark when a host confirmation or an action of the actor waits for input. */
|
|
38
38
|
export const elementNeedsAttention = (view: RunView | undefined, definition: SurfaceElementDefinition, confirmationPending: boolean): boolean =>
|
|
39
39
|
confirmationPending || (view !== undefined && definition.anchorActorId !== undefined && pendingActionCount(view, definition.anchorActorId) > 0);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLocalStorageSetting } from "@ragents/web/lib/local-storage-setting";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** Behavior of the run panel: from which width the chat sits next to the mini-app and how the sheet reacts to the mouse. */
|
|
4
4
|
export interface RunPanelSettings {
|
|
5
5
|
sideWidth: number;
|
|
6
6
|
openDelay: number;
|
|
@@ -26,7 +26,7 @@ export function parseRunPanelSettings(raw: string | null): RunPanelSettings {
|
|
|
26
26
|
|| !("sideWidth" in value) || !inRange(value.sideWidth, RUN_PANEL_SETTINGS_LIMITS.sideWidth)
|
|
27
27
|
|| !("openDelay" in value) || !inRange(value.openDelay, RUN_PANEL_SETTINGS_LIMITS.openDelay)
|
|
28
28
|
|| !("closeDelay" in value) || !inRange(value.closeDelay, RUN_PANEL_SETTINGS_LIMITS.closeDelay)) {
|
|
29
|
-
throw new Error("
|
|
29
|
+
throw new Error("The run panel settings are invalid: width 400 to 4000 pixels, delays 0 to 5000 and 10000 milliseconds respectively, integers.");
|
|
30
30
|
}
|
|
31
31
|
return value as RunPanelSettings;
|
|
32
32
|
}
|
|
@@ -2,15 +2,15 @@ import { useEffect, useState } from "react";
|
|
|
2
2
|
import type { Message } from "quassel/events";
|
|
3
3
|
import type { SurfaceStartupState } from "../surface-startup";
|
|
4
4
|
|
|
5
|
-
/**
|
|
5
|
+
/** How long the loading state bridges finished work until the run view has caught up with the start status. */
|
|
6
6
|
export const STARTUP_SETTLE_MS = 1500;
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/** Conversation messages and questions end the setup; system lines and work steps still belong to it. */
|
|
9
9
|
export const chatShowsContent = (messages: readonly Message[]): boolean => messages.some((message) =>
|
|
10
10
|
message.role === "user" || message.role === "action"
|
|
11
11
|
|| (message.role === "assistant" && (message.text.trim() !== "" || (message.attachments?.length ?? 0) > 0)));
|
|
12
12
|
|
|
13
|
-
/**
|
|
13
|
+
/** The run panel's loading state until the first content; afterwards it does not return for this run. */
|
|
14
14
|
export function useRunPanelStartup(state: SurfaceStartupState | undefined, connected: boolean, content: boolean): SurfaceStartupState | undefined {
|
|
15
15
|
const [contentSeen, setContentSeen] = useState(content);
|
|
16
16
|
const [held, setHeld] = useState<SurfaceStartupState>();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createLocalStorageSetting } from "@ragents/web/lib/local-storage-setting";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** The chosen view of the run panel: chat only, chat at the bottom as a sheet, or chat on the right if the run panel is wide enough. */
|
|
4
4
|
export type RunPanelChatMode = "chat" | "bottom" | "side";
|
|
5
5
|
|
|
6
|
-
/**
|
|
6
|
+
/** How the chat relates to the mini-app: alone, next to it, or as a sheet above it. */
|
|
7
7
|
export type ChatLayout = "full" | "side" | "floating";
|
|
8
8
|
|
|
9
|
-
/**
|
|
9
|
+
/** Personal state per run: mini-app, actor, chat position, side width and expanded sheet height. */
|
|
10
10
|
export interface RunPanelState {
|
|
11
11
|
element: string | null;
|
|
12
12
|
actor: string | null;
|
|
@@ -17,7 +17,7 @@ export interface RunPanelState {
|
|
|
17
17
|
|
|
18
18
|
export const CHAT_MIN_WIDTH = 280;
|
|
19
19
|
export const CHAT_DEFAULT_WIDTH = 380;
|
|
20
|
-
/**
|
|
20
|
+
/** Next to the chat there is always room for a piece of mini-app. */
|
|
21
21
|
export const STAGE_MIN_WIDTH = 300;
|
|
22
22
|
|
|
23
23
|
export const DEFAULT_RUN_PANEL_STATE: RunPanelState = Object.freeze({ element: null, actor: null, chat: "side", chatWidth: CHAT_DEFAULT_WIDTH, sheetExpandedHeight: null });
|
|
@@ -25,7 +25,7 @@ export const DEFAULT_RUN_PANEL_STATE: RunPanelState = Object.freeze({ element: n
|
|
|
25
25
|
export const runPanelStorageKey = (runId: string) => `ragents.orchestration.run-panel:${runId}`;
|
|
26
26
|
|
|
27
27
|
const isTextOrNull = (value: unknown): value is string | null => value === null || typeof value === "string";
|
|
28
|
-
/**
|
|
28
|
+
/** Earlier states knew `auto`, `floating` and `docked` as well as a stage height; they are mapped to today's positions. */
|
|
29
29
|
const chatModeOf = (value: unknown): RunPanelChatMode | undefined =>
|
|
30
30
|
value === undefined || value === "side" || value === "auto" ? "side"
|
|
31
31
|
: value === "chat" ? "chat"
|
|
@@ -42,13 +42,13 @@ export function parseRunPanelState(raw: string | null): RunPanelState {
|
|
|
42
42
|
|| ("chatWidth" in value && (typeof value.chatWidth !== "number" || !Number.isFinite(value.chatWidth) || value.chatWidth < CHAT_MIN_WIDTH))
|
|
43
43
|
|| ("sheetExpandedHeight" in value && value.sheetExpandedHeight !== null && (typeof value.sheetExpandedHeight !== "number" || !Number.isFinite(value.sheetExpandedHeight) || value.sheetExpandedHeight <= 0))
|
|
44
44
|
|| ("sheetPeekExtra" in value && (typeof value.sheetPeekExtra !== "number" || !Number.isFinite(value.sheetPeekExtra) || value.sheetPeekExtra < 0))) {
|
|
45
|
-
throw new Error("
|
|
45
|
+
throw new Error("The stored panel state is invalid.");
|
|
46
46
|
}
|
|
47
47
|
const stored = value as { element: string | null; actor: string | null; chat?: unknown; chatWidth?: number; sheetExpandedHeight?: number | null };
|
|
48
48
|
return { element: stored.element, actor: stored.actor, chat: chatModeOf(stored.chat) ?? "side", chatWidth: stored.chatWidth ?? CHAT_DEFAULT_WIDTH, sheetExpandedHeight: stored.sheetExpandedHeight ?? null };
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
/**
|
|
51
|
+
/** Without a mini-app and in the "Chat only" view the chat fills the run panel; otherwise it sits on the right if there is room, and at the bottom if not. */
|
|
52
52
|
export const chatLayoutFor = ({ chat, hasElement, narrow }: { chat: RunPanelChatMode; hasElement: boolean; narrow: boolean }): ChatLayout =>
|
|
53
53
|
!hasElement || chat === "chat" ? "full" : !narrow && chat === "side" ? "side" : "floating";
|
|
54
54
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Message } from "quassel/events";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** The single line of the collapsed sheet: what the chat is doing right now or said last; open actions themselves are in the dock below. */
|
|
4
4
|
export interface SheetStatus {
|
|
5
5
|
text: string;
|
|
6
6
|
kind: "idle" | "working" | "waiting";
|
|
@@ -8,23 +8,23 @@ export interface SheetStatus {
|
|
|
8
8
|
|
|
9
9
|
const firstLine = (text: string, limit = 160): string => {
|
|
10
10
|
const line = text.trim().split(/\r?\n/).find((entry) => entry.trim() !== "") ?? "";
|
|
11
|
-
return line.length > limit ? `${line.slice(0, limit -
|
|
11
|
+
return line.length > limit ? `${line.slice(0, limit - 3)}...` : line;
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
const senderOf = (message: Message, handle: string): string =>
|
|
15
|
-
message.role === "user" ? "
|
|
15
|
+
message.role === "user" ? "You" : message.sender ?? `@${handle}`;
|
|
16
16
|
|
|
17
17
|
export function sheetStatus(messages: readonly Message[], working: boolean, handle: string): SheetStatus {
|
|
18
18
|
const last = messages[messages.length - 1];
|
|
19
|
-
const waiting =
|
|
20
|
-
if (waiting) return { kind: "waiting", text:
|
|
19
|
+
const waiting = messages.filter((message) => message.role === "action" && message.action?.status === undefined).length;
|
|
20
|
+
if (waiting > 0) return { kind: "waiting", text: waiting === 1 ? "Waiting for input" : `Waiting for ${waiting} inputs` };
|
|
21
21
|
if (working) {
|
|
22
|
-
if (last?.role === "thinking" && !last.closed) return { kind: "working", text: `@${handle}
|
|
23
|
-
if (last?.role === "tool" && last.tool && last.tool.result === undefined) return { kind: "working", text: `@${handle}
|
|
24
|
-
if (last?.role === "assistant" && !last.closed && last.text.trim() !== "") return { kind: "working", text: `${senderOf(last, handle)}
|
|
25
|
-
return { kind: "working", text: `@${handle}
|
|
22
|
+
if (last?.role === "thinking" && !last.closed) return { kind: "working", text: `@${handle} is thinking ...` };
|
|
23
|
+
if (last?.role === "tool" && last.tool && last.tool.result === undefined) return { kind: "working", text: `@${handle} is using ${last.tool.name} ...` };
|
|
24
|
+
if (last?.role === "assistant" && !last.closed && last.text.trim() !== "") return { kind: "working", text: `${senderOf(last, handle)} is answering: ${firstLine(last.text)}` };
|
|
25
|
+
return { kind: "working", text: `@${handle} is working ...` };
|
|
26
26
|
}
|
|
27
27
|
const spoken = [...messages].reverse().find((message) => (message.role === "user" || message.role === "assistant") && message.text.trim() !== "");
|
|
28
|
-
if (!spoken) return { kind: "idle", text: "
|
|
28
|
+
if (!spoken) return { kind: "idle", text: "No messages yet." };
|
|
29
29
|
return { kind: "idle", text: `${senderOf(spoken, handle)}: ${firstLine(spoken.text)}` };
|
|
30
30
|
}
|
|
@@ -11,23 +11,23 @@ export function surfaceStartupState({ view, startup, connected, running, error }
|
|
|
11
11
|
running: boolean;
|
|
12
12
|
error: string | undefined;
|
|
13
13
|
}): SurfaceStartupState | undefined {
|
|
14
|
-
if (startup?.status === "failed") return { kind: "error", title: "
|
|
15
|
-
if (error) return { kind: "error", title: "
|
|
16
|
-
if (startup?.status === "preparing") return { kind: "working", title: "
|
|
14
|
+
if (startup?.status === "failed") return { kind: "error", title: "The run could not be prepared", detail: startup.message };
|
|
15
|
+
if (error) return { kind: "error", title: "The run status is unreachable", detail: error };
|
|
16
|
+
if (startup?.status === "preparing") return { kind: "working", title: "Preparing run", detail: startup.message };
|
|
17
17
|
const actors = view?.actors.filter((actor) => actor.kind !== "human") ?? [];
|
|
18
18
|
const activeActors = actors.filter((actor) => actor.lifecycle?.kind !== "stopped");
|
|
19
|
-
if (actors.length && !activeActors.length) return { kind: "stopped", title: "
|
|
19
|
+
if (actors.length && !activeActors.length) return { kind: "stopped", title: "The run was stopped", detail: "No further work is performed." };
|
|
20
20
|
if (view?.actions.some((action) => action.status === "pending")) return {
|
|
21
|
-
kind: "waiting", title: "
|
|
21
|
+
kind: "waiting", title: "Your input is needed", detail: "An action in the chat is waiting for your input.",
|
|
22
22
|
};
|
|
23
23
|
const activeIds = new Set(activeActors.map((actor) => actor.id));
|
|
24
24
|
const working = running || activeActors.some((actor) => actor.lifecycle?.kind === "running")
|
|
25
25
|
|| view?.turns.some((turn) => activeIds.has(turn.actorId) && turn.status === "running")
|
|
26
26
|
|| view?.inputs.some((input) => activeIds.has(input.actorId) && isPendingRunActorInput(input));
|
|
27
|
-
if (working) return { kind: "working", title: "
|
|
27
|
+
if (working) return { kind: "working", title: "Setting up the run", detail: "The interface is being built. The elements appear automatically." };
|
|
28
28
|
const failed = activeActors.map((actor) => view?.turns.filter((turn) => turn.actorId === actor.id).at(-1))
|
|
29
29
|
.find((turn) => turn?.status === "failed" || turn?.status === "interrupted");
|
|
30
|
-
if (failed) return { kind: "error", title: "
|
|
31
|
-
if (!connected) return { kind: "working", title: "
|
|
30
|
+
if (failed) return { kind: "error", title: "The setup was halted", detail: failed.reason || "The last work step could not be completed." };
|
|
31
|
+
if (!connected) return { kind: "working", title: "Loading run", detail: "Connecting to the run." };
|
|
32
32
|
return undefined;
|
|
33
33
|
}
|
|
@@ -15,7 +15,7 @@ export function parseSurfaceViewPreferences(raw: string | null): SurfaceViewPref
|
|
|
15
15
|
|| Object.keys(value).some((key) => key !== "actorVisibility")
|
|
16
16
|
|| !("actorVisibility" in value) || !value.actorVisibility || typeof value.actorVisibility !== "object"
|
|
17
17
|
|| Array.isArray(value.actorVisibility) || Object.values(value.actorVisibility).some((visible) => typeof visible !== "boolean")) {
|
|
18
|
-
throw new Error("
|
|
18
|
+
throw new Error("The stored actor visibility is invalid.");
|
|
19
19
|
}
|
|
20
20
|
return value as SurfaceViewPreferences;
|
|
21
21
|
}
|
|
@@ -17,7 +17,7 @@ export function parseSurfacePresentation(raw: string | null): SurfacePresentatio
|
|
|
17
17
|
if (!value || typeof value !== "object" || Array.isArray(value)
|
|
18
18
|
|| !("root" in value) || Object.keys(value).some((key) => !["root", "programBasis"].includes(key))
|
|
19
19
|
|| ("programBasis" in value && typeof value.programBasis !== "string")) {
|
|
20
|
-
throw new Error("
|
|
20
|
+
throw new Error("The stored tile view is invalid.");
|
|
21
21
|
}
|
|
22
22
|
return { root: value.root === null ? null : surfaceTileNodeOf(value.root),
|
|
23
23
|
...("programBasis" in value ? { programBasis: value.programBasis as string } : {}),
|
|
@@ -12,8 +12,8 @@ export interface QuickAnswerState {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export const overseerPermissions = [
|
|
15
|
-
{ id: "ragents.overseer.read", description: "
|
|
16
|
-
{ id: "ragents.overseer.write", description: "
|
|
15
|
+
{ id: "ragents.overseer.read", description: "View the global coordinator and its model selection." },
|
|
16
|
+
{ id: "ragents.overseer.write", description: "Give tasks to the global coordinator and reset its conversation." },
|
|
17
17
|
] as const;
|
|
18
18
|
|
|
19
19
|
export interface OverseerModelSelection {
|
|
@@ -31,7 +31,7 @@ const text = () => Type.String({ minLength: 1, pattern: "\\S" });
|
|
|
31
31
|
const empty = object({});
|
|
32
32
|
const jsonObject = Type.Record(Type.String(), Type.Any());
|
|
33
33
|
const eventType = Type.Unsafe<EventType>(Type.Union(Object.keys(eventTypeMap).map((name) => Type.Literal(name))));
|
|
34
|
-
const run = Type.String({ minLength: 1, maxLength: 512, description: "Run
|
|
34
|
+
const run = Type.String({ minLength: 1, maxLength: 512, description: "Run ID, unique title or stable reference such as Run 1." });
|
|
35
35
|
const identityFields = { runId: Type.String(), title: Type.String(), reference: Type.String() };
|
|
36
36
|
const runSummary = object({ ...identityFields, createdAt: Type.Optional(Type.Number()), updatedAt: Type.Number(), running: Type.Optional(Type.Boolean()), metadata: Type.Optional(jsonObject) });
|
|
37
37
|
const accepted = object({ ...identityFields, accepted: Type.Literal(true) });
|
|
@@ -39,11 +39,11 @@ const commonStart = { title: text(), options: Type.Optional(jsonObject) };
|
|
|
39
39
|
const createInput = Type.Union([
|
|
40
40
|
object({ ...commonStart, message: text() }),
|
|
41
41
|
object({ ...commonStart, script: text(), input: Type.Optional(Type.Any()) }),
|
|
42
|
-
object({ ...commonStart, packageDirectory: Type.String({ minLength: 1, description: "
|
|
42
|
+
object({ ...commonStart, packageDirectory: Type.String({ minLength: 1, description: "Absolute path of a RUN.md/setup.ts/tests.json package on the server. A local shell client inserts its actually existing package path; this is not an upload." }), input: Type.Optional(Type.Any()) }),
|
|
43
43
|
]);
|
|
44
44
|
const domainObject = (name: string, source = "packages/ragents/src/domain/model.ts") => Type.Object({}, {
|
|
45
45
|
additionalProperties: true, "x-typescript-type": name, "x-source": source,
|
|
46
|
-
description: `
|
|
46
|
+
description: `Unabridged domain value ${name}; nested fields are deliberately an open JSON schema here.`,
|
|
47
47
|
});
|
|
48
48
|
const eventSchema = object({
|
|
49
49
|
eventId: Type.String(), runId: Type.String(), sequence: Type.Integer({ minimum: 1 }), schemaVersion: Type.Literal(3),
|
|
@@ -65,32 +65,32 @@ const settingsResult = object({
|
|
|
65
65
|
models: Type.Array(object({ id: Type.String(), provider: Type.String(), label: Type.String(), thinking: Type.Array(Type.String()) })),
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
/**
|
|
68
|
+
/** Run management, model selection and conversation reset of the global coordinator. */
|
|
69
69
|
export const overseerContracts = {
|
|
70
70
|
listRuns: defineOperation({
|
|
71
71
|
id: "ragents.overseer.listRuns",
|
|
72
|
-
description: "
|
|
72
|
+
description: "List the runs the caller sees, with stable references; the global coordinators are not part of this list.",
|
|
73
73
|
rights: ["runs.read"],
|
|
74
74
|
input: empty,
|
|
75
75
|
result: Type.Array(runSummary),
|
|
76
76
|
}),
|
|
77
77
|
createRun: defineOperation({
|
|
78
78
|
id: "ragents.overseer.createRun",
|
|
79
|
-
description: "
|
|
79
|
+
description: "Create a run with a server-side ID and title. Exactly one start form: message, installed script (id or unique title), or packageDirectory (existing local run script package). input is only allowed with script/packageDirectory. options selects start options such as ragents.startOptions.select, each only with its own rights. The result waits for preparation, check, test and installation; accepted does not yet confirm a finished model result.",
|
|
80
80
|
rights: ["runs.read", "runs.write", "runs.create"],
|
|
81
81
|
input: createInput,
|
|
82
82
|
result: accepted,
|
|
83
83
|
}),
|
|
84
84
|
readRun: defineOperation({
|
|
85
85
|
id: "ragents.overseer.readRun",
|
|
86
|
-
description: "
|
|
86
|
+
description: "Read the current unabridged RunView; nested domain values are documented as open JSON objects.",
|
|
87
87
|
rights: ["runs.read", "runs.inspect"],
|
|
88
88
|
input: object({ run }),
|
|
89
89
|
result: viewSchema,
|
|
90
90
|
}),
|
|
91
91
|
readEvents: defineOperation({
|
|
92
92
|
id: "ragents.overseer.readEvents",
|
|
93
|
-
description: "
|
|
93
|
+
description: "Read the complete journal page by page in sequence order. As long as hasMore is true, use nextAfter as after of the next request. type filters an exact event type.",
|
|
94
94
|
rights: ["runs.read", "runs.inspect"],
|
|
95
95
|
input: object({
|
|
96
96
|
run,
|
|
@@ -102,21 +102,21 @@ export const overseerContracts = {
|
|
|
102
102
|
}),
|
|
103
103
|
sendMessage: defineOperation({
|
|
104
104
|
id: "ragents.overseer.sendMessage",
|
|
105
|
-
description: "
|
|
105
|
+
description: "Enqueue a chat message for the primary LLM actor; TypeScript as primary is rejected with actor-chat-unsupported. The result only confirms the enqueueing, neither processing nor completion. A running turn is not replaced by it.",
|
|
106
106
|
rights: ["runs.read", "runs.write"],
|
|
107
107
|
input: object({ run, message: text() }),
|
|
108
108
|
result: accepted,
|
|
109
109
|
}),
|
|
110
110
|
stopRun: defineOperation({
|
|
111
111
|
id: "ragents.overseer.stopRun",
|
|
112
|
-
description: "
|
|
112
|
+
description: "Stop the run through its normal stop boundary and wait for the cleanup; the conversation is kept.",
|
|
113
113
|
rights: ["runs.read", "runs.write"],
|
|
114
114
|
input: object({ run }),
|
|
115
115
|
result: object({ ...identityFields, stopped: Type.Literal(true) }),
|
|
116
116
|
}),
|
|
117
117
|
readCatalog: defineOperation({
|
|
118
118
|
id: "ragents.overseer.readCatalog",
|
|
119
|
-
description: "
|
|
119
|
+
description: "Read installed templates and start options with input schemas, default values and selectability. createRun starts messages, installed scripts or local packages via packageDirectory. Skills provide editable tasks for message; name the skill as the work instruction.",
|
|
120
120
|
rights: ["runs.read", "runs.inspect"],
|
|
121
121
|
input: empty,
|
|
122
122
|
result: object({
|
|
@@ -126,14 +126,14 @@ export const overseerContracts = {
|
|
|
126
126
|
}),
|
|
127
127
|
readReference: defineOperation({
|
|
128
128
|
id: "ragents.overseer.readReference",
|
|
129
|
-
description: "
|
|
129
|
+
description: "Read a readable reference of all registered methods and channels directly from their contracts.",
|
|
130
130
|
rights: ["runs.read", "runs.inspect"],
|
|
131
131
|
input: empty,
|
|
132
132
|
result: Type.String(),
|
|
133
133
|
}),
|
|
134
134
|
readOpenRpc: defineOperation({
|
|
135
135
|
id: "ragents.overseer.readOpenRpc",
|
|
136
|
-
description: "OpenRPC 1.3
|
|
136
|
+
description: "Read OpenRPC 1.3 directly from the same contracts.",
|
|
137
137
|
rights: ["runs.read", "runs.inspect"],
|
|
138
138
|
input: empty,
|
|
139
139
|
result: jsonObject,
|
|
@@ -141,14 +141,14 @@ export const overseerContracts = {
|
|
|
141
141
|
settings: {
|
|
142
142
|
read: defineOperation({
|
|
143
143
|
id: "ragents.overseer.settings.read",
|
|
144
|
-
description: "
|
|
144
|
+
description: "Read the global coordinator's model selection with the available model catalog.",
|
|
145
145
|
rights: ["ragents.overseer.read"],
|
|
146
146
|
input: empty,
|
|
147
147
|
result: settingsResult,
|
|
148
148
|
}),
|
|
149
149
|
save: defineOperation({
|
|
150
150
|
id: "ragents.overseer.settings.save",
|
|
151
|
-
description: "
|
|
151
|
+
description: "Set the global coordinator's model selection; it applies from the next answer on.",
|
|
152
152
|
rights: ["ragents.overseer.read", "ragents.overseer.write", "settings.write"],
|
|
153
153
|
input: modelSelection,
|
|
154
154
|
result: settingsResult,
|
|
@@ -156,16 +156,16 @@ export const overseerContracts = {
|
|
|
156
156
|
},
|
|
157
157
|
coordinator: defineOperation({
|
|
158
158
|
id: "ragents.overseer.coordinator",
|
|
159
|
-
description: "
|
|
159
|
+
description: "Read the run ID of your own global coordinator: one per signed-in user, exactly one without sign-in.",
|
|
160
160
|
rights: ["ragents.overseer.read"],
|
|
161
161
|
input: empty,
|
|
162
162
|
result: object({ runId: Type.String() }),
|
|
163
163
|
}),
|
|
164
164
|
reset: defineOperation({
|
|
165
165
|
id: "ragents.overseer.reset",
|
|
166
|
-
description: "
|
|
166
|
+
description: "Reset the conversation of your own global coordinator including its model context; the model selection, other users' coordinators and all runs are kept.",
|
|
167
167
|
rights: ["ragents.overseer.read", "ragents.overseer.write"],
|
|
168
|
-
input: object({ confirm: Type.Literal(true, { description: "
|
|
168
|
+
input: object({ confirm: Type.Literal(true, { description: "The conversation reset must be confirmed explicitly." }) }),
|
|
169
169
|
result: Type.Null(),
|
|
170
170
|
}),
|
|
171
171
|
} as const;
|
|
@@ -3,7 +3,7 @@ import type { Static } from "typebox";
|
|
|
3
3
|
import { DomainError, implement, type AccessContext, type JsonValue, type MethodContribution, type PluginHost } from "@ragents/engine";
|
|
4
4
|
import { methodReference, openRpcDocument, type ApiAuthentication } from "@ragents/host/api/reference.js";
|
|
5
5
|
import type { RunManagement } from "@ragents/host/ragents/global-chat.js";
|
|
6
|
-
import { overseerContracts } from "../contract.js";
|
|
6
|
+
import { OVERSEER_PLUGIN_ID, overseerContracts } from "../contract.js";
|
|
7
7
|
import { coordinatorRunIdOf } from "./coordinator.js";
|
|
8
8
|
import type { RunDirectory } from "./run-directory.js";
|
|
9
9
|
|
|
@@ -18,7 +18,7 @@ type CreateInput = Static<typeof overseerContracts.createRun.input>;
|
|
|
18
18
|
|
|
19
19
|
const identity = (found: { id: string; title: string; reference: string }) => ({ runId: found.id, title: found.title, reference: found.reference });
|
|
20
20
|
|
|
21
|
-
/**
|
|
21
|
+
/** Resolution only covers the caller's runs; someone else's run is as unknown here as a nonexistent one. */
|
|
22
22
|
const resolve = async (context: ManagementContext, access: AccessContext, reference: string) => {
|
|
23
23
|
const runs = await context.management().list(access);
|
|
24
24
|
const exact = runs.find((entry) => entry.id === reference);
|
|
@@ -35,21 +35,21 @@ const create = async (context: ManagementContext, body: CreateInput, access: Acc
|
|
|
35
35
|
};
|
|
36
36
|
const runId = await (async () => {
|
|
37
37
|
if ("packageDirectory" in body) {
|
|
38
|
-
if (!path.isAbsolute(body.packageDirectory)) throw new DomainError("invalid-package-directory", "packageDirectory
|
|
39
|
-
return context.management().create({ ...common, kind: "package", directory: body.packageDirectory, input: (body.input ?? null) as JsonValue });
|
|
38
|
+
if (!path.isAbsolute(body.packageDirectory)) throw new DomainError("invalid-package-directory", "packageDirectory must be an absolute server path", 400);
|
|
39
|
+
return context.management().create({ ...common, kind: "package", directory: body.packageDirectory, input: (body.input ?? null) as JsonValue, owner: OVERSEER_PLUGIN_ID });
|
|
40
40
|
}
|
|
41
41
|
if ("script" in body) {
|
|
42
42
|
const entries = context.root.startEntries.describe().filter((entry) => entry.action === "script");
|
|
43
|
-
const wanted = body.script.trim().toLocaleLowerCase("
|
|
43
|
+
const wanted = body.script.trim().toLocaleLowerCase("en-US");
|
|
44
44
|
const direct = entries.find((entry) => entry.id === body.script.trim());
|
|
45
|
-
const matching = direct ? [direct] : entries.filter((entry) => entry.title.toLocaleLowerCase("
|
|
46
|
-
if (matching.length !== 1) throw new DomainError("invalid-script", `
|
|
45
|
+
const matching = direct ? [direct] : entries.filter((entry) => entry.title.toLocaleLowerCase("en-US") === wanted);
|
|
46
|
+
if (matching.length !== 1) throw new DomainError("invalid-script", `The run script is unknown or ambiguous. Valid titles and ids: ${entries.map((entry) => `${entry.title} (${entry.id})`).join(", ") || "none"}`, 400);
|
|
47
47
|
return context.management().create({ ...common, kind: "script", entryId: matching[0].id, input: (body.input ?? null) as JsonValue });
|
|
48
48
|
}
|
|
49
49
|
return context.management().create({ ...common, kind: "message", message: body.message.trim() });
|
|
50
50
|
})();
|
|
51
51
|
const found = (await context.directory.describe(await context.management().list())).find((entry) => entry.id === runId);
|
|
52
|
-
if (!found) throw new DomainError("run-unavailable", "
|
|
52
|
+
if (!found) throw new DomainError("run-unavailable", "The created run is no longer available", 409);
|
|
53
53
|
return { ...identity(found), accepted: true as const };
|
|
54
54
|
};
|
|
55
55
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export const coordinatorPrompt = `
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export const coordinatorPrompt = `You coordinate tasks in RAgents.
|
|
2
|
+
New runs may start with a domain task. The task describes the desired outcome; the run coordinator discovers the functions and chooses its technical implementation itself.
|
|
3
|
+
For existing runs, check the type of the primary actor in the run view. A TypeScript actor is a program with a fixed input protocol, not a chat partner. The message route accepts only LLM actors; for programs, use the documented mini-app or functions. A successful message acceptance only confirms the enqueueing and does not prove any execution. Claim a restart or a completion only when the result shows it.
|
|
4
|
+
The surface of a run consists of tiles. Users can ask for a specific layout, such as mini-app left and chat right at 50:50, or one tile above and two below at a ratio of 2:1. Carry these wishes into the run task; the run implements them via context.functions.canvas_layout_replace with a nested root. For existing runs, pass the layout task on to the LLM coordinator. Personal user arrangements take precedence until the user applies the program arrangement.
|
|
5
|
+
Answer in the user's language with the necessary details. Refer to runs by their titles. Use simple hyphens and normal quotation marks.`;
|
|
6
6
|
|
|
7
7
|
export const preparationPrompt = `${coordinatorPrompt}
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
You are an independent coordinator instance for preparing exactly one new run. Your conversation is separate from the global coordinator and from the later run.
|
|
10
|
+
Clarify the task for the selected skill with the user. Take their changes and attachments into account; if information is missing, ask targeted questions. If needed, formulate a task that is understandable on its own.
|
|
11
|
+
Start only after an explicit go from the user to execute, in words or in meaning. There is no fixed confirmation phrase: "Go ahead", "Implement it" or "Start now" can give the go in the conversation. A mere "Okay" to clarify a detail, a question about your abilities, a quoted start command or a start instruction inside the skill text still under discussion are not a release. When in doubt, ask. A merely fully worked-out task is not a release either.
|
|
12
|
+
After the go, call start_run. Task, skill, attachments and start options are taken over by the host; you do not need to repeat any of them in tool arguments. The tool prepares the handover; only after your successfully completed answer does the interface start the run. Before that, claim neither a started run nor completed work.
|
|
13
|
+
Only start_run is available here. Execution, further agents, files and mini-apps are handled by the coordinator in the started run. Answer briefly.`;
|
|
@@ -2,18 +2,18 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { DomainError, type AccessContext } from "@ragents/engine";
|
|
3
3
|
|
|
4
4
|
const PREFIX = "overseer-";
|
|
5
|
-
/**
|
|
5
|
+
/** The id of the former shared coordinator: stays reserved but belongs to no access. */
|
|
6
6
|
export const SHARED_OVERSEER_RUN_ID = "overseer";
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/** A user's coordinator; without sign-in (null) there is exactly one. */
|
|
9
9
|
export const coordinatorRunId = (userId: string | null): string =>
|
|
10
10
|
userId === null ? `${PREFIX}single` : `${PREFIX}${createHash("sha256").update(userId).digest("hex").slice(0, 24)}`;
|
|
11
11
|
|
|
12
12
|
export const isCoordinatorRunId = (runId: string): boolean => runId === SHARED_OVERSEER_RUN_ID || runId.startsWith(PREFIX);
|
|
13
13
|
|
|
14
|
-
/**
|
|
14
|
+
/** The caller's coordinator: without sign-in the single one, otherwise the signed-in user's. */
|
|
15
15
|
export const coordinatorRunIdOf = (access: AccessContext): string => {
|
|
16
16
|
if (!access.enabled) return coordinatorRunId(null);
|
|
17
|
-
if (!access.user) throw new DomainError("login-required", "
|
|
17
|
+
if (!access.user) throw new DomainError("login-required", "Please sign in.", 401);
|
|
18
18
|
return coordinatorRunId(access.user.id);
|
|
19
19
|
};
|