@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
|
@@ -31,16 +31,16 @@ const checkFailure = (title: string, lines: readonly string[], fallback: string)
|
|
|
31
31
|
const shown = all.slice(0, maxShownComplaints).map((line) => line.length > maxComplaintLength ? `${line.slice(0, maxComplaintLength - 3)}...` : line);
|
|
32
32
|
const omitted = all.length - shown.length;
|
|
33
33
|
return Object.assign(new Error([
|
|
34
|
-
`${title}: ${all.length}
|
|
34
|
+
`${title}: ${all.length} errors.`,
|
|
35
35
|
...shown,
|
|
36
|
-
...(omitted > 0 ? [`...
|
|
36
|
+
...(omitted > 0 ? [`... and ${omitted} more; all with actor_program_diagnostics.`] : []),
|
|
37
37
|
].join("\n")), { lines: all });
|
|
38
38
|
};
|
|
39
39
|
const actorDescriptionOf = (text: string | undefined): string | undefined => {
|
|
40
40
|
const line = (text ?? "").replace(/\s+/g, " ").trim();
|
|
41
41
|
return line.length <= actorDescriptionMaxLength ? line || undefined : `${line.slice(0, actorDescriptionMaxLength - 3).trimEnd()}...`;
|
|
42
42
|
};
|
|
43
|
-
const exposed = defineToolAvailability({ availability: "conditional", availabilityDetail: "
|
|
43
|
+
const exposed = defineToolAvailability({ availability: "conditional", availabilityDetail: "Published function of an active actor in the run." }, () => true);
|
|
44
44
|
const objectSchema = { type: "object", additionalProperties: true };
|
|
45
45
|
const checked = (schema: object, value: unknown, label: string): JsonValue => {
|
|
46
46
|
const result = jsonValue(value, label);
|
|
@@ -50,17 +50,17 @@ const checked = (schema: object, value: unknown, label: string): JsonValue => {
|
|
|
50
50
|
};
|
|
51
51
|
const safePath = (name: string): string => {
|
|
52
52
|
if (!name || path.isAbsolute(name) || name.includes("\\") || name.includes("\0") || name.split("/").some((part) => !part || part === "." || part === ".."))
|
|
53
|
-
throw new Error(`
|
|
53
|
+
throw new Error(`Invalid package path ${name}.`);
|
|
54
54
|
return name;
|
|
55
55
|
};
|
|
56
56
|
const inside = async (directory: string, relative: string): Promise<string> => {
|
|
57
57
|
const root = await realpath(directory);
|
|
58
58
|
const file = await realpath(path.join(root, safePath(relative)));
|
|
59
59
|
if (!file.startsWith(`${root}${path.sep}`))
|
|
60
|
-
throw new Error(`
|
|
60
|
+
throw new Error(`Package path ${relative} is outside the package.`);
|
|
61
61
|
const stat = await lstat(file);
|
|
62
62
|
if (!stat.isFile() || stat.size > 2000000)
|
|
63
|
-
throw new Error(`
|
|
63
|
+
throw new Error(`Invalid or too large package file ${relative}.`);
|
|
64
64
|
return readFile(file, "utf8");
|
|
65
65
|
};
|
|
66
66
|
const occupied = (file: string): boolean => {
|
|
@@ -74,8 +74,8 @@ const occupied = (file: string): boolean => {
|
|
|
74
74
|
throw error;
|
|
75
75
|
}
|
|
76
76
|
};
|
|
77
|
-
const packageExists = (name: string): Error => new Error(`
|
|
78
|
-
//
|
|
77
|
+
const packageExists = (name: string): Error => new Error(`The package ${name} already exists.`);
|
|
78
|
+
// Check and rename synchronously one after the other, because rename silently replaces an empty target folder.
|
|
79
79
|
const commitPackage = (staged: string, directory: string, name: string): void => {
|
|
80
80
|
if (occupied(directory))
|
|
81
81
|
throw packageExists(name);
|
|
@@ -126,7 +126,7 @@ export interface ActorProgramRuntimeOptions {
|
|
|
126
126
|
agentToolsFor: (runId: string, actorId: string, provisional?: ExecutableActor) => Promise<readonly RunFunction[]>;
|
|
127
127
|
askService: () => AskService;
|
|
128
128
|
reservedToolNames: () => readonly string[];
|
|
129
|
-
/**
|
|
129
|
+
/** Programs, tests, and builds run on the server, even with a workspace on a workstation. */
|
|
130
130
|
serverProcessContextFor: (runId: string) => Promise<WorkspaceProcessContext>;
|
|
131
131
|
operations: ActorOperationPort;
|
|
132
132
|
directoryFor: (runId: string) => string;
|
|
@@ -168,16 +168,16 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
168
168
|
actor(runId: string, actorId: string): ExecutableActor {
|
|
169
169
|
const actor = this.view(runId).actors.find((candidate) => candidate.id === actorId);
|
|
170
170
|
if (!actor || actor.kind === "human" || actor.lifecycle.kind === "stopped")
|
|
171
|
-
throw new Error("
|
|
171
|
+
throw new Error("The actor is not active.");
|
|
172
172
|
if (this.#removing.has(`${runId}\0${actorId}`))
|
|
173
|
-
throw new Error("
|
|
173
|
+
throw new Error("The actor package is being removed.");
|
|
174
174
|
return actor;
|
|
175
175
|
}
|
|
176
176
|
resolveActor(runId: string, callerId: string, reference: string): ExecutableActor {
|
|
177
177
|
const actors = this.view(runId).actors;
|
|
178
178
|
const found = reference === "self" ? actors.find((candidate) => candidate.id === callerId) : actorByHandle(actors, reference);
|
|
179
179
|
if (!found)
|
|
180
|
-
throw new Error(`Actor ${reference}
|
|
180
|
+
throw new Error(`Actor ${reference} is unknown.`);
|
|
181
181
|
return this.actor(runId, found.id);
|
|
182
182
|
}
|
|
183
183
|
data(runId: string, actorId: string): ActorDataState {
|
|
@@ -187,7 +187,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
187
187
|
return { version: 1, revision, values: (entry?.state ?? {}) as Record<string, unknown> };
|
|
188
188
|
}
|
|
189
189
|
#writeProgram(context: CommandContext, runId: string, actorId: string, program: ActorProgramDefinition | null): void {
|
|
190
|
-
this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_PROGRAMS_STATE_ID, scope: { kind: "actor", actorId }, state: jsonValue({ version: 1, program }, "Actor
|
|
190
|
+
this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_PROGRAMS_STATE_ID, scope: { kind: "actor", actorId }, state: jsonValue({ version: 1, program }, "Actor program") });
|
|
191
191
|
}
|
|
192
192
|
#script(runId: string): ActorScriptState | undefined {
|
|
193
193
|
return this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_SCRIPT_STATE_ID && entry.scope.kind === "run")?.state as unknown as ActorScriptState | undefined;
|
|
@@ -196,7 +196,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
196
196
|
for (const source of files) {
|
|
197
197
|
const file = path.join(directory, safePath(source.path));
|
|
198
198
|
if (source.path.split("/").includes("node_modules"))
|
|
199
|
-
throw new Error("
|
|
199
|
+
throw new Error("Package sources must not overwrite dependencies.");
|
|
200
200
|
await mkdir(path.dirname(file), { recursive: true });
|
|
201
201
|
await writeFile(file, source.content, { flag: "wx" });
|
|
202
202
|
}
|
|
@@ -215,14 +215,14 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
215
215
|
await this.#activate(this.operatorContext(runId, "refresh"), runId, program.name, false, signal);
|
|
216
216
|
}
|
|
217
217
|
catch (error) {
|
|
218
|
-
throw new Error(`
|
|
218
|
+
throw new Error(`The capability contract of ${program.name} has changed and the reactivation failed: ${errorText(error)}`);
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
async #bound<T extends CapabilityContract>(runId: string, actorId: string, revision: string | undefined, signal: AbortSignal, contractOf: (program: ActorProgramDefinition) => T, descriptorsFor: BackendBinding["descriptorsFor"]): Promise<{ program: ActorProgramDefinition; contract: T; descriptors: readonly RunCapabilityDescriptor[] }> {
|
|
222
222
|
const current = () => {
|
|
223
223
|
const program = this.programs(runId).find((entry) => entry.actorId === actorId);
|
|
224
224
|
if (!program)
|
|
225
|
-
throw new Error("
|
|
225
|
+
throw new Error("The actor has no active program.");
|
|
226
226
|
return program;
|
|
227
227
|
};
|
|
228
228
|
const bind = (program: ActorProgramDefinition) => {
|
|
@@ -232,14 +232,14 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
232
232
|
};
|
|
233
233
|
const program = current();
|
|
234
234
|
if (revision !== undefined && program.revision !== revision)
|
|
235
|
-
throw new Error("
|
|
235
|
+
throw new Error("The actor package was replaced.");
|
|
236
236
|
const bound = bind(program);
|
|
237
237
|
if (!bound.drifted)
|
|
238
238
|
return bound;
|
|
239
239
|
await this.#refresh(runId, program, signal);
|
|
240
240
|
const refreshed = bind(current());
|
|
241
241
|
if (refreshed.drifted)
|
|
242
|
-
throw new Error(`
|
|
242
|
+
throw new Error(`The capability contract of ${program.name} still differs after the reactivation.`);
|
|
243
243
|
return refreshed;
|
|
244
244
|
}
|
|
245
245
|
async workspaceDirectory(runId: string): Promise<string> { this.#knownRuns.add(runId); return prepareAppWorkspace(path.join(this.#options.directoryFor(runId), "actor-workspace")); }
|
|
@@ -250,7 +250,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
250
250
|
const directory = path.join(actors, name);
|
|
251
251
|
const key = `${runId}\0${name}`;
|
|
252
252
|
if (this.#creating.has(key))
|
|
253
|
-
throw new Error(`
|
|
253
|
+
throw new Error(`The package ${name} is being created.`);
|
|
254
254
|
if (occupied(directory))
|
|
255
255
|
throw packageExists(name);
|
|
256
256
|
this.#creating.add(key);
|
|
@@ -303,16 +303,16 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
303
303
|
this.#assertName(name);
|
|
304
304
|
const directory = path.join(await this.workspaceDirectory(runId), name);
|
|
305
305
|
if ((await lstat(directory)).isSymbolicLink())
|
|
306
|
-
throw new Error("Actor
|
|
306
|
+
throw new Error("Actor packages must not be symlinks.");
|
|
307
307
|
await prepareAppProject(directory);
|
|
308
308
|
const pkg = await readAppPackage(directory);
|
|
309
309
|
const previous = this.programs(runId).find((program) => program.name === name);
|
|
310
310
|
const owner = reference ? this.resolveActor(runId, callerId, reference) : previous ? this.actor(runId, previous.actorId) : !pkg.backend ? this.actor(runId, callerId) : undefined;
|
|
311
311
|
if (previous && owner?.id !== previous.actorId)
|
|
312
|
-
throw new Error("
|
|
312
|
+
throw new Error("An activated package cannot move to another actor.");
|
|
313
313
|
const caller = this.view(runId).actors.find((candidate) => candidate.id === callerId);
|
|
314
314
|
if (!caller)
|
|
315
|
-
throw new Error("
|
|
315
|
+
throw new Error("Calling actor is missing.");
|
|
316
316
|
const provisional: ExecutableActor = owner ?? {
|
|
317
317
|
id: "pending", handle: name, displayName: pkg.title, kind: "script", grants: caller.grants.filter((grant) => grant.delegable),
|
|
318
318
|
createdAt: new Date().toISOString(), createdBy: callerId, description: actorDescriptionOf(pkg.description) ?? null, execution: { driver: { kind: "script", config: {} }, workspacePath: null, turnTimeoutMs: null }, lifecycle: { kind: "idle", since: new Date().toISOString() }, usage: emptyUsage(), toolNames: null, openedToolNames: [],
|
|
@@ -325,23 +325,23 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
325
325
|
const backend = pkg.backend ? await compileAppBackend({ directory, backend: pkg.backend, runId, executor: this.runtime().nativeTypeScriptExecutor, signal }) : undefined;
|
|
326
326
|
const contract: AppContract = backend?.contract ?? { state: objectSchema, functions: {} };
|
|
327
327
|
if (contract.input && owner?.kind === "agent")
|
|
328
|
-
throw new Error("
|
|
328
|
+
throw new Error("An LLM actor processes inputs with its agent driver; onInput is only allowed for TypeScript actors.");
|
|
329
329
|
if (contract.state.type !== "object")
|
|
330
|
-
throw new Error("Actor
|
|
330
|
+
throw new Error("Actor state must be an object schema.");
|
|
331
331
|
const state = owner ? this.data(runId, owner.id).values : {};
|
|
332
|
-
checked(contract.state, state, "Actor
|
|
332
|
+
checked(contract.state, state, "Actor state");
|
|
333
333
|
const actorId = owner?.id ?? "pending";
|
|
334
334
|
const actorHandle = owner?.handle ?? name;
|
|
335
335
|
const functions: ActorFunctionDefinition[] = Object.entries(contract.functions).map(([id, fn]) => {
|
|
336
336
|
if (!/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/.test(id))
|
|
337
|
-
throw new Error(`
|
|
337
|
+
throw new Error(`Invalid function name ${id}.`);
|
|
338
338
|
if (fn.tool && !/^[a-z][a-z0-9_]{0,63}$/.test(fn.tool.name))
|
|
339
|
-
throw new Error(`
|
|
339
|
+
throw new Error(`Invalid tool name ${fn.tool.name}.`);
|
|
340
340
|
const capabilities = fn.capabilities ?? [];
|
|
341
341
|
const selected = capabilities.map((name) => {
|
|
342
342
|
const entry = available.find((item) => item.id === name);
|
|
343
343
|
if (!entry)
|
|
344
|
-
throw new Error(`Capability ${name}
|
|
344
|
+
throw new Error(`Capability ${name} is not available.`);
|
|
345
345
|
return entry;
|
|
346
346
|
});
|
|
347
347
|
return { id, label: fn.label, description: fn.description ?? fn.label, inputSchema: fn.input, resultSchema: fn.output, capabilityIds: capabilities, capabilityContractHash: runCapabilityContractHash(selected), confirmation: fn.confirmation ?? null,
|
|
@@ -351,26 +351,26 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
351
351
|
const inputDescriptors = inputCapabilities.map((id) => {
|
|
352
352
|
const found = available.find((entry) => entry.id === id);
|
|
353
353
|
if (!found)
|
|
354
|
-
throw new Error(`
|
|
354
|
+
throw new Error(`Input capability ${id} is not available.`);
|
|
355
355
|
return found;
|
|
356
356
|
});
|
|
357
357
|
await installClientSdk(directory, { stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });
|
|
358
358
|
const hasServerFiles = pkg.backend || (await projectSourceFiles(directory)).some((file) => /^tests\/.*\.tsx?$/.test(file.path));
|
|
359
359
|
const serverErrors = hasServerFiles ? typecheckServerProject(directory, pkg.backend) : [];
|
|
360
360
|
if (serverErrors.length)
|
|
361
|
-
throw checkFailure(`
|
|
361
|
+
throw checkFailure(`Typecheck of ${name}`, serverErrors, `The typecheck of ${name} failed without a message.`);
|
|
362
362
|
const clients: CompiledProgram["clients"] = [];
|
|
363
363
|
const views: ActorProgramDefinition["views"] = [];
|
|
364
364
|
for (const view of pkg.views ?? []) {
|
|
365
365
|
const client = await compileClientProject({ directory, entryPoint: view.client, stateSchema: contract.state, actions: functions.map((fn) => ({ id: fn.id, inputSchema: fn.inputSchema, resultSchema: fn.resultSchema })) });
|
|
366
366
|
if (!client.valid)
|
|
367
|
-
throw checkFailure(`Client
|
|
367
|
+
throw checkFailure(`Client build of ${view.client}`,
|
|
368
368
|
client.diagnostics.filter((item) => item.category === "error").map((item) =>
|
|
369
369
|
`${item.fileName ?? view.client}${item.start ? `:${item.start.line}:${item.start.column}` : ""} ${item.message.replace(/\s*\n\s*/g, " ")}`),
|
|
370
|
-
`
|
|
370
|
+
`The client build of ${view.client} failed without a message.`);
|
|
371
371
|
const styles = view.styles ? await inside(directory, view.styles) : "";
|
|
372
372
|
if (/@import\b|url\s*\(\s*["']?\s*(?:https?:|\/\/)/i.test(styles))
|
|
373
|
-
throw new Error("
|
|
373
|
+
throw new Error("View CSS must not load external resources.");
|
|
374
374
|
const clientFile = `view-${view.id}.mjs`;
|
|
375
375
|
clients.push({ file: clientFile, javaScript: client.javaScript });
|
|
376
376
|
views.push({ id: `${name}--${view.id}`, key: view.id, title: view.title ?? pkg.title, visible: previous?.views.find((item) => item.key === view.id)?.visible ?? true,
|
|
@@ -392,7 +392,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
392
392
|
async #activate(context: CommandContext, runId: string, name: string, idle: boolean, signal?: AbortSignal, reference?: string) {
|
|
393
393
|
const key = `${runId}\0${name}`;
|
|
394
394
|
if (this.#installing.has(key))
|
|
395
|
-
throw new Error(`
|
|
395
|
+
throw new Error(`Package ${name} is already being activated.`);
|
|
396
396
|
const epoch = this.invocationPermit(runId);
|
|
397
397
|
this.#installing.add(key);
|
|
398
398
|
const original = this.programs(runId).find((item) => item.name === name);
|
|
@@ -414,23 +414,23 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
414
414
|
throw new Error(report.report(name, { code: result.code, timedOut: result.timedOut, stderr }));
|
|
415
415
|
}
|
|
416
416
|
if (canonicalHash(compiled.files) !== canonicalHash(await projectSourceFiles(compiled.directory)))
|
|
417
|
-
throw new Error("
|
|
417
|
+
throw new Error("Package files were changed during the check; activate again.");
|
|
418
418
|
if (epoch !== this.invocationPermit(runId))
|
|
419
|
-
throw new Error("
|
|
419
|
+
throw new Error("The run was stopped during the activation.");
|
|
420
420
|
if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)
|
|
421
|
-
throw new Error("
|
|
421
|
+
throw new Error("The package was changed in the meantime.");
|
|
422
422
|
if (idle)
|
|
423
423
|
this.#assertIdle(runId, definition.actorId);
|
|
424
424
|
const names = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);
|
|
425
425
|
for (const fn of definition.functions)
|
|
426
426
|
if (fn.tool) {
|
|
427
427
|
if (names.has(fn.tool.name))
|
|
428
|
-
throw new Error(`
|
|
428
|
+
throw new Error(`Tool name ${fn.tool.name} is already taken.`);
|
|
429
429
|
names.add(fn.tool.name);
|
|
430
430
|
}
|
|
431
431
|
const occupied = this.programs(runId).find((program) => program.actorId === definition.actorId && program.name !== name);
|
|
432
432
|
if (occupied)
|
|
433
|
-
throw new Error(`Actor @${definition.actorHandle}
|
|
433
|
+
throw new Error(`Actor @${definition.actorHandle} already owns the package ${occupied.name}. Add functions or views there.`);
|
|
434
434
|
await mkdir(definition.directory, { recursive: true });
|
|
435
435
|
for (const source of compiled.files) {
|
|
436
436
|
const file = path.join(definition.directory, safePath(source.path));
|
|
@@ -447,35 +447,35 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
447
447
|
await syncWorkspaceOwnership(definition.directory, await this.#options.serverProcessContextFor(runId));
|
|
448
448
|
signal?.throwIfAborted();
|
|
449
449
|
if (epoch !== this.invocationPermit(runId))
|
|
450
|
-
throw new Error("
|
|
450
|
+
throw new Error("The run was stopped during the activation.");
|
|
451
451
|
if (this.programs(runId).find((item) => item.name === name)?.revision !== original?.revision)
|
|
452
|
-
throw new Error("
|
|
452
|
+
throw new Error("The package was changed in the meantime.");
|
|
453
453
|
if (!compiled.createActor) {
|
|
454
454
|
this.actor(runId, definition.actorId);
|
|
455
455
|
if (idle)
|
|
456
456
|
this.#assertIdle(runId, definition.actorId);
|
|
457
|
-
checked(definition.stateSchema, this.data(runId, definition.actorId).values, "Actor
|
|
457
|
+
checked(definition.stateSchema, this.data(runId, definition.actorId).values, "Actor state");
|
|
458
458
|
if (this.programs(runId).some((item) => item.actorId === definition.actorId && item.name !== name))
|
|
459
|
-
throw new Error("
|
|
459
|
+
throw new Error("The actor now owns another package.");
|
|
460
460
|
}
|
|
461
461
|
const currentNames = new Set([...agentTools.map((tool) => tool.name), ...this.#options.reservedToolNames(), ...this.programs(runId).filter((program) => program.name !== name).flatMap((program) => program.functions.flatMap((fn) => fn.tool ? [fn.tool.name] : []))]);
|
|
462
462
|
for (const fn of definition.functions)
|
|
463
463
|
if (fn.tool) {
|
|
464
464
|
if (currentNames.has(fn.tool.name))
|
|
465
|
-
throw new Error(`
|
|
465
|
+
throw new Error(`Tool name ${fn.tool.name} has been taken in the meantime.`);
|
|
466
466
|
currentNames.add(fn.tool.name);
|
|
467
467
|
}
|
|
468
|
-
jsonValue({ version: 1, program: definition }, "Actor
|
|
468
|
+
jsonValue({ version: 1, program: definition }, "Actor program");
|
|
469
469
|
if (compiled.createActor) {
|
|
470
470
|
const actors = this.view(runId).actors;
|
|
471
471
|
const caller = actors.find((actor) => actor.id === context.actorId)!;
|
|
472
472
|
const holder = actors.find((actor) => actor.handle === name);
|
|
473
473
|
if (holder?.kind === "script" && holder.lifecycle.kind === "stopped") {
|
|
474
|
-
checked(definition.stateSchema, this.data(runId, holder.id).values, "Actor
|
|
475
|
-
this.runtime().restartActor(context, runId, holder.id, "Actor
|
|
474
|
+
checked(definition.stateSchema, this.data(runId, holder.id).values, "Actor state");
|
|
475
|
+
this.runtime().restartActor(context, runId, holder.id, "Actor package activated again");
|
|
476
476
|
}
|
|
477
477
|
else if (holder)
|
|
478
|
-
throw new Error(`Handle @${name}
|
|
478
|
+
throw new Error(`Handle @${name} already belongs to the ${holder.kind !== "human" && holder.lifecycle.kind === "stopped" ? "stopped" : "active"} actor ${holder.displayName}; only a stopped TypeScript actor is restarted on activation. Choose another package name.`);
|
|
479
479
|
else
|
|
480
480
|
this.runtime().createScriptActor(context, runId, { handle: name, displayName: definition.title, description: actorDescriptionOf(definition.description), grants: caller.grants.filter((grant) => grant.delegable), toolNames: null });
|
|
481
481
|
const actor = this.resolveActor(runId, context.actorId, `@${name}`);
|
|
@@ -506,7 +506,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
506
506
|
const program = this.#program(runId, name);
|
|
507
507
|
this.#assertIdle(runId, program.actorId);
|
|
508
508
|
if (this.#installing.has(`${runId}\0${name}`))
|
|
509
|
-
throw new Error("
|
|
509
|
+
throw new Error("The package is being activated.");
|
|
510
510
|
const actor = this.actor(runId, program.actorId);
|
|
511
511
|
const key = `${runId}\0${program.actorId}`;
|
|
512
512
|
this.#removing.add(key);
|
|
@@ -514,7 +514,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
514
514
|
await this.stopActor(runId, program.actorId);
|
|
515
515
|
this.#writeProgram(context, runId, program.actorId, null);
|
|
516
516
|
if (actor.kind === "script")
|
|
517
|
-
this.runtime().stopActor(context, runId, program.actorId, "Actor
|
|
517
|
+
this.runtime().stopActor(context, runId, program.actorId, "Actor package removed");
|
|
518
518
|
await rm(program.directory, { recursive: true, force: true });
|
|
519
519
|
}
|
|
520
520
|
finally {
|
|
@@ -551,9 +551,9 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
551
551
|
const program = this.#program(runId, viewId);
|
|
552
552
|
const view = program.views.find((item) => item.id === viewId);
|
|
553
553
|
if (!view || program.revision !== revision)
|
|
554
|
-
throw new Error("
|
|
554
|
+
throw new Error("The view was replaced or removed.");
|
|
555
555
|
if (!program.stylesFile)
|
|
556
|
-
throw new Error("
|
|
556
|
+
throw new Error("The program comes from an older activation without a stylesheet file. Please activate again.");
|
|
557
557
|
const frameStyles = readFileSync(path.join(program.directory, program.stylesFile), "utf8");
|
|
558
558
|
return { ...view, styles: `${frameStyles}\n${view.styles}`, platformVersion: 2 as const, clientJavaScript: readFileSync(path.join(program.directory, view.clientFile), "utf8") };
|
|
559
559
|
}
|
|
@@ -571,7 +571,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
571
571
|
const key = `${runId}\0${actorId}`;
|
|
572
572
|
const previous = this.#queues.get(key) ?? Promise.resolve();
|
|
573
573
|
const operation = previous.then(() => { signal.throwIfAborted(); if (permit !== this.invocationPermit(runId))
|
|
574
|
-
throw new Error("
|
|
574
|
+
throw new Error("The run was stopped before the function started."); this.actor(runId, actorId); return execute(); });
|
|
575
575
|
const queued = operation.then(() => undefined, () => undefined);
|
|
576
576
|
this.#queues.set(key, queued);
|
|
577
577
|
try {
|
|
@@ -589,10 +589,10 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
589
589
|
initial: ActorDataState;
|
|
590
590
|
}> {
|
|
591
591
|
if (!program.backendFile)
|
|
592
|
-
throw new Error("
|
|
592
|
+
throw new Error("The actor has no TypeScript backend.");
|
|
593
593
|
const current = this.#program(runId, program.name);
|
|
594
594
|
if (current.revision !== program.revision)
|
|
595
|
-
throw new Error("
|
|
595
|
+
throw new Error("The actor package was replaced.");
|
|
596
596
|
const logs: string[] = [];
|
|
597
597
|
let calls = 0;
|
|
598
598
|
const initial = this.data(runId, program.actorId);
|
|
@@ -604,39 +604,39 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
604
604
|
logs.push((typeof value === "string" ? value : JSON.stringify(value)).slice(0, 2000)); }, call: async (name, value) => {
|
|
605
605
|
const capability = descriptors.find((entry) => entry.id === name);
|
|
606
606
|
if (!capability)
|
|
607
|
-
throw new Error(`Capability ${name}
|
|
607
|
+
throw new Error(`Capability ${name} is not declared.`);
|
|
608
608
|
if (++calls > 64)
|
|
609
|
-
throw new Error("
|
|
609
|
+
throw new Error("A call may run at most 64 capabilities.");
|
|
610
610
|
if (program.functions.some((fn) => fn.tool?.name === name))
|
|
611
|
-
throw new Error("
|
|
612
|
-
checked(capability.schema, value, `
|
|
611
|
+
throw new Error("An actor function must not call itself through a tool; use a shared TypeScript function.");
|
|
612
|
+
checked(capability.schema, value, `Input ${name}`);
|
|
613
613
|
const output = await binding.call(name, value, calls);
|
|
614
|
-
return checked(capability.resultSchema, output, `
|
|
614
|
+
return checked(capability.resultSchema, output, `Result ${name}`);
|
|
615
615
|
} });
|
|
616
616
|
signal.throwIfAborted();
|
|
617
617
|
this.actor(runId, program.actorId);
|
|
618
|
-
const state = checked(program.stateSchema, result.state, "Actor
|
|
618
|
+
const state = checked(program.stateSchema, result.state, "Actor state");
|
|
619
619
|
return { result: result.result, logs, state, initial };
|
|
620
620
|
}
|
|
621
621
|
#commitState(runId: string, actorId: string, state: JsonValue, initial: ActorDataState): void {
|
|
622
622
|
if (canonicalHash(state) === canonicalHash(initial.values))
|
|
623
623
|
return;
|
|
624
624
|
if (this.data(runId, actorId).revision !== initial.revision)
|
|
625
|
-
throw new Error("
|
|
625
|
+
throw new Error("The actor state was changed during the call. Call again.");
|
|
626
626
|
this.runtime().replaceActorState(this.operatorContext(runId), runId, actorId, state);
|
|
627
627
|
}
|
|
628
628
|
#executeFunction(runId: string, bound: ActorProgramDefinition, declared: ActorFunctionDefinition, input: unknown, binding: BackendBinding, signal: AbortSignal): Promise<JsonValue> {
|
|
629
629
|
const functionOf = (program: ActorProgramDefinition): ActorFunctionDefinition => {
|
|
630
630
|
const fn = program.functions.find((entry) => entry.id === declared.id);
|
|
631
631
|
if (!fn)
|
|
632
|
-
throw new Error("
|
|
632
|
+
throw new Error("The function is not declared.");
|
|
633
633
|
return fn;
|
|
634
634
|
};
|
|
635
635
|
return this.#serial(runId, bound.actorId, signal, async () => {
|
|
636
636
|
const { program, contract: fn, descriptors } = await this.#bound(runId, bound.actorId, bound.revision, signal, functionOf, binding.descriptorsFor);
|
|
637
|
-
const value = checked(fn.inputSchema, input, `
|
|
637
|
+
const value = checked(fn.inputSchema, input, `Input ${fn.id}`);
|
|
638
638
|
const result = await this.#backend(runId, program, { kind: "function", functionId: fn.id, input: value }, binding, descriptors, signal);
|
|
639
|
-
const output = checked(fn.resultSchema, result.result, `
|
|
639
|
+
const output = checked(fn.resultSchema, result.result, `Result ${fn.id}`);
|
|
640
640
|
this.#commitState(runId, program.actorId, result.state, result.initial);
|
|
641
641
|
binding.output?.push(...result.logs);
|
|
642
642
|
return output;
|
|
@@ -647,7 +647,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
647
647
|
try {
|
|
648
648
|
const inputOf = (program: ActorProgramDefinition) => {
|
|
649
649
|
if (!program.input)
|
|
650
|
-
throw new Error("
|
|
650
|
+
throw new Error("This TypeScript actor has no onInput handler.");
|
|
651
651
|
return program.input;
|
|
652
652
|
};
|
|
653
653
|
const descriptorsFor = (capabilityIds: readonly string[]) => agentCapabilityBinding(this.actor(request.runId, request.agentId), request.tools, capabilityIds, new Set()).descriptors;
|
|
@@ -666,42 +666,42 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
666
666
|
}
|
|
667
667
|
}
|
|
668
668
|
invocationPermit(runId: string): number { if (this.#shuttingDown || this.#stopping.has(runId))
|
|
669
|
-
throw new Error("
|
|
669
|
+
throw new Error("The run is being stopped."); return this.#epochs.get(runId) ?? 0; }
|
|
670
670
|
startInvocation(runId: string, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {
|
|
671
671
|
const program = this.#program(runId, viewId);
|
|
672
672
|
if (!program.views.some((view) => view.id === viewId))
|
|
673
|
-
throw new Error("
|
|
673
|
+
throw new Error("The view is unknown.");
|
|
674
674
|
return this.#start(runId, program, viewId, revision, functionId, requestId, input, permit);
|
|
675
675
|
}
|
|
676
676
|
startFunctionInvocation(runId: string, actorHandle: string, revision: string, functionId: string, requestId: string, input: unknown, permit = this.invocationPermit(runId)) {
|
|
677
677
|
const program = this.programs(runId).find((entry) => entry.actorHandle === handleKey(actorHandle));
|
|
678
678
|
if (!program)
|
|
679
|
-
throw new Error("
|
|
679
|
+
throw new Error("The actor publishes no program.");
|
|
680
680
|
return this.#start(runId, program, program.name, revision, functionId, requestId, input, permit);
|
|
681
681
|
}
|
|
682
682
|
#start(runId: string, program: ActorProgramDefinition, viewId: string, revision: string, functionId: string, requestId: string, input: unknown, permit: number): ActorFunctionInvocation {
|
|
683
683
|
this.#knownRuns.add(runId);
|
|
684
684
|
if (permit !== this.invocationPermit(runId))
|
|
685
|
-
throw new Error("
|
|
685
|
+
throw new Error("The run has been stopped in the meantime.");
|
|
686
686
|
if (program.revision !== revision)
|
|
687
|
-
throw new Error("
|
|
687
|
+
throw new Error("The actor package was replaced. Refresh the view.");
|
|
688
688
|
const fn = program.functions.find((entry) => entry.id === functionId);
|
|
689
689
|
if (!fn)
|
|
690
|
-
throw new Error("
|
|
690
|
+
throw new Error("The function is not declared.");
|
|
691
691
|
const state = this.#invocations(runId);
|
|
692
692
|
const prior = state.invocations.find((entry) => entry.requestId === requestId);
|
|
693
693
|
if (prior) {
|
|
694
694
|
if (prior.actorId !== program.actorId || prior.actionId !== functionId || prior.revision !== revision || canonicalHash(prior.input) !== canonicalHash(input))
|
|
695
|
-
throw new Error("
|
|
695
|
+
throw new Error("The request ID was already used for another call.");
|
|
696
696
|
return prior;
|
|
697
697
|
}
|
|
698
698
|
if (!requestId || requestId.length > 200 || state.requestIds.includes(requestId))
|
|
699
|
-
throw new Error("
|
|
699
|
+
throw new Error("Invalid or already processed request ID.");
|
|
700
700
|
if (state.requestIds.length >= 10000)
|
|
701
|
-
throw new Error("
|
|
701
|
+
throw new Error("The run has reached its call limit.");
|
|
702
702
|
if ([...this.#active.values()].filter((entry) => entry.runId === runId).length >= 8)
|
|
703
|
-
throw new Error("
|
|
704
|
-
checked(fn.inputSchema, input, "
|
|
703
|
+
throw new Error("Eight actor functions are already running.");
|
|
704
|
+
checked(fn.inputSchema, input, "Function input");
|
|
705
705
|
const invocation: ActorFunctionInvocation = { id: randomUUID(), requestId, actorId: program.actorId, actorHandle: program.actorHandle, appId: viewId, revision, actionId: functionId, input, output: [], createdAt: new Date().toISOString(), status: "queued" };
|
|
706
706
|
this.#replaceInvocation(runId, invocation, true);
|
|
707
707
|
const controller = new AbortController();
|
|
@@ -710,15 +710,15 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
710
710
|
this.#replaceInvocation(runId, started);
|
|
711
711
|
try {
|
|
712
712
|
if (fn.confirmation && !await this.#confirm(runId, invocation, fn.confirmation, controller.signal))
|
|
713
|
-
throw new Error("
|
|
713
|
+
throw new Error("The function was not confirmed.");
|
|
714
714
|
const descriptorsFor = (capabilityIds: readonly string[]) => operatorCapabilityBinding(this.ownerId(runId), this.#options.operations.list(), capabilityIds).descriptors;
|
|
715
715
|
const output: string[] = [];
|
|
716
716
|
const result = await this.#executeFunction(runId, program, fn, input, { output, id: invocation.id, kind: "app-action", principal: { id: this.ownerId(runId), kind: "operator" }, descriptorsFor, call: async (name, value, index) => {
|
|
717
717
|
const operation = this.#options.operations.operation(name)!;
|
|
718
718
|
const id = `${invocation.id}:capability:${index}`;
|
|
719
|
-
const confirmation = operation.operator === "confirm" ? await this.#confirm(runId, invocation,
|
|
719
|
+
const confirmation = operation.operator === "confirm" ? await this.#confirm(runId, invocation, `Run ${operation.label}?`, controller.signal, value) : true;
|
|
720
720
|
if (!confirmation)
|
|
721
|
-
throw new Error("
|
|
721
|
+
throw new Error("The action was not confirmed.");
|
|
722
722
|
return this.#options.operations.invoke(name, { runId, invocationId: id, principal: { kind: "operator", actorId: this.ownerId(runId) }, signal: controller.signal, ...(operation.operator === "confirm" ? { operatorConfirmation: { operationId: name, invocationId: id, inputHash: canonicalHash(value) } } : {}) }, value);
|
|
723
723
|
} }, controller.signal);
|
|
724
724
|
this.#replaceInvocation(runId, { ...started, status: "succeeded", result, output, finishedAt: new Date().toISOString() });
|
|
@@ -733,7 +733,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
733
733
|
invocation(runId: string, reference: string, id: string): ActorFunctionInvocation {
|
|
734
734
|
const invocation = this.#invocations(runId).invocations.find((entry) => entry.id === id && (entry.appId === reference || entry.actorHandle === reference));
|
|
735
735
|
if (!invocation)
|
|
736
|
-
throw new Error("
|
|
736
|
+
throw new Error("The function call is unknown.");
|
|
737
737
|
return invocation;
|
|
738
738
|
}
|
|
739
739
|
#invocations(runId: string): InvocationState { return (this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_INVOCATIONS_STATE_ID && entry.scope.kind === "run")?.state as unknown as InvocationState) ?? { version: 1, invocations: [], requestIds: [] }; }
|
|
@@ -747,27 +747,27 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
747
747
|
finished.shift();
|
|
748
748
|
state.invocations = [...active, ...finished];
|
|
749
749
|
}
|
|
750
|
-
assertJsonValue(state, "Actor
|
|
750
|
+
assertJsonValue(state, "Actor calls");
|
|
751
751
|
this.runtime().replacePluginState(this.operatorContext(runId), runId, { pluginId: ACTOR_INVOCATIONS_STATE_ID, scope: { kind: "run" }, state });
|
|
752
752
|
}
|
|
753
753
|
async #confirm(runId: string, invocation: ActorFunctionInvocation, question: string, signal: AbortSignal, input = invocation.input): Promise<boolean> {
|
|
754
|
-
const answer = await this.#options.askService().ask({ runId, agentId: this.ownerId(runId), turnId: null, commandId: `actor-confirm:${randomUUID()}` }, { question: `${question}\
|
|
755
|
-
return answer === "
|
|
754
|
+
const answer = await this.#options.askService().ask({ runId, agentId: this.ownerId(runId), turnId: null, commandId: `actor-confirm:${randomUUID()}` }, { question: `${question}\nInput: ${JSON.stringify(input).slice(0, 500)}`, options: ["Run", "Cancel"], multi: false, description: `Function ${invocation.actionId} of @${invocation.actorHandle}`, parameters: { source: ACTOR_PROGRAMS_STATE_ID, invocationId: invocation.id } }, signal);
|
|
755
|
+
return answer === "Run";
|
|
756
756
|
}
|
|
757
757
|
#program(runId: string, reference: string): ActorProgramDefinition {
|
|
758
758
|
const program = this.programs(runId).find((entry) => entry.name === reference || entry.views.some((view) => view.id === reference));
|
|
759
759
|
if (!program)
|
|
760
|
-
throw new Error(`Actor
|
|
760
|
+
throw new Error(`Actor package ${reference} is not active.`);
|
|
761
761
|
return program;
|
|
762
762
|
}
|
|
763
763
|
#instance(program: ActorProgramDefinition): string { return `actor:${program.actorId}:${program.revision}`; }
|
|
764
764
|
#assertName(name: string): void { if (!NAME.test(name))
|
|
765
|
-
throw new Error("
|
|
765
|
+
throw new Error("Package names begin with a lowercase letter and contain at most 64 lowercase letters, digits, or hyphens."); }
|
|
766
766
|
#assertIdle(runId: string, actorId: string): void { if (this.#queues.has(`${runId}\0${actorId}`) || [...this.#active.values()].some((entry) => entry.runId === runId && entry.actorId === actorId))
|
|
767
|
-
throw new Error("
|
|
767
|
+
throw new Error("The actor still has running functions or inputs."); }
|
|
768
768
|
async stopActor(runId: string, actorId: string): Promise<void> {
|
|
769
769
|
const active = [...this.#active.values()].filter((entry) => entry.runId === runId && entry.actorId === actorId);
|
|
770
|
-
active.forEach((entry) => entry.controller.abort(new Error("Actor
|
|
770
|
+
active.forEach((entry) => entry.controller.abort(new Error("Actor stopped.")));
|
|
771
771
|
const state = this.view(runId).pluginStates.find((entry) => entry.pluginId === ACTOR_PROGRAMS_STATE_ID && entry.scope.kind === "actor" && entry.scope.actorId === actorId)?.state as unknown as ActorProgramState | undefined;
|
|
772
772
|
if (state?.program)
|
|
773
773
|
await this.runtime().nativeTypeScriptExecutor.stopInstance(runId, this.#instance(state.program));
|
|
@@ -778,7 +778,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
778
778
|
this.#stopping.add(runId);
|
|
779
779
|
try {
|
|
780
780
|
const active = [...this.#active.values()].filter((entry) => entry.runId === runId);
|
|
781
|
-
active.forEach((entry) => entry.controller.abort(new Error("Run
|
|
781
|
+
active.forEach((entry) => entry.controller.abort(new Error("Run stopped.")));
|
|
782
782
|
await this.runtime().nativeTypeScriptExecutor.stopRun(runId);
|
|
783
783
|
await Promise.allSettled([...active.map((entry) => entry.completed), ...[...this.#queues].filter(([key]) => key.startsWith(`${runId}\0`)).map(([, queue]) => queue)]);
|
|
784
784
|
}
|
|
@@ -790,7 +790,7 @@ export class ActorProgramRuntime implements ActorProgramsService, ActorProgramEx
|
|
|
790
790
|
async prepareSession(runId: string): Promise<void> { this.#knownRuns.add(runId); if (!this.runtime().listRuns().some(run => run.id === runId))
|
|
791
791
|
return; for (const invocation of this.#invocations(runId).invocations)
|
|
792
792
|
if (invocation.status === "queued" || invocation.status === "running")
|
|
793
|
-
this.#replaceInvocation(runId, { ...invocation, status: "cancelled", error: "
|
|
793
|
+
this.#replaceInvocation(runId, { ...invocation, status: "cancelled", error: "The server was stopped during the call.", finishedAt: new Date().toISOString() }); }
|
|
794
794
|
async stopSession(runId: string, _signal?: AbortSignal): Promise<void> { await this.stopRun(runId); }
|
|
795
795
|
async disposeRun(runId: string): Promise<void> { await this.stopRun(runId); }
|
|
796
796
|
async deleteSession(runId: string): Promise<void> { await this.stopRun(runId); await rm(this.#options.directoryFor(runId), { recursive: true, force: true }); }
|