@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
|
@@ -15,16 +15,16 @@ const endOffset = (archive: Buffer): number => {
|
|
|
15
15
|
for (let offset = archive.byteLength - 22; offset >= first; offset -= 1) {
|
|
16
16
|
if (archive.readUInt32LE(offset) === END_OF_CENTRAL_DIRECTORY) return offset;
|
|
17
17
|
}
|
|
18
|
-
throw new Error("
|
|
18
|
+
throw new Error("The archive has no end of central directory; it is not a ZIP file");
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
const contentOf = (archive: Buffer, localOffset: number, compression: number, compressedSize: number): Buffer => {
|
|
22
|
-
if (archive.readUInt32LE(localOffset) !== LOCAL_FILE_HEADER) throw new Error(`
|
|
22
|
+
if (archive.readUInt32LE(localOffset) !== LOCAL_FILE_HEADER) throw new Error(`The local entry at ${localOffset} is missing from the archive`);
|
|
23
23
|
const start = localOffset + 30 + archive.readUInt16LE(localOffset + 26) + archive.readUInt16LE(localOffset + 28);
|
|
24
24
|
const raw = archive.subarray(start, start + compressedSize);
|
|
25
25
|
if (compression === 0) return Buffer.from(raw);
|
|
26
26
|
if (compression === 8) return inflateRawSync(raw);
|
|
27
|
-
throw new Error(`
|
|
27
|
+
throw new Error(`The archive uses the unknown compression ${compression}`);
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
interface DirectoryEntry {
|
|
@@ -34,20 +34,20 @@ interface DirectoryEntry {
|
|
|
34
34
|
readonly localOffset: number;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
/**
|
|
37
|
+
/** Reads the central directory; Zip64 and encryption are hard errors. */
|
|
38
38
|
const readDirectory = (archive: Buffer): readonly DirectoryEntry[] => {
|
|
39
39
|
const end = endOffset(archive);
|
|
40
40
|
const count = archive.readUInt16LE(end + 10);
|
|
41
41
|
const directory = archive.readUInt32LE(end + 16);
|
|
42
|
-
if (count === 0xffff || directory === 0xffffffff) throw new Error("
|
|
42
|
+
if (count === 0xffff || directory === 0xffffffff) throw new Error("The archive is Zip64; this form is not read");
|
|
43
43
|
const entries: DirectoryEntry[] = [];
|
|
44
44
|
let offset = directory;
|
|
45
45
|
for (let index = 0; index < count; index += 1) {
|
|
46
|
-
if (archive.readUInt32LE(offset) !== CENTRAL_FILE_HEADER) throw new Error(`
|
|
46
|
+
if (archive.readUInt32LE(offset) !== CENTRAL_FILE_HEADER) throw new Error(`The directory entry ${index} is missing from the archive`);
|
|
47
47
|
const flags = archive.readUInt16LE(offset + 8);
|
|
48
48
|
const nameLength = archive.readUInt16LE(offset + 28);
|
|
49
49
|
const name = archive.subarray(offset + 46, offset + 46 + nameLength).toString("utf8");
|
|
50
|
-
if ((flags & 0x1) !== 0) throw new Error(`
|
|
50
|
+
if ((flags & 0x1) !== 0) throw new Error(`The archive entry ${name} is encrypted`);
|
|
51
51
|
if (!name.endsWith("/")) {
|
|
52
52
|
entries.push({
|
|
53
53
|
name,
|
|
@@ -69,9 +69,9 @@ export const isFetchedBundle = (folder: string, dataRoot = ragentsDataRoot()): b
|
|
|
69
69
|
|
|
70
70
|
/** How the author, or for a fetched bundle its user, gets a bundle that fits this host again. */
|
|
71
71
|
export const rebuildHint = (folder: string): string => {
|
|
72
|
-
if (isBuiltInBundle(folder)) return "
|
|
73
|
-
if (isFetchedBundle(folder)) return "
|
|
74
|
-
return "
|
|
72
|
+
if (isBuiltInBundle(folder)) return "rebuild in the checkout with pnpm build:plugins";
|
|
73
|
+
if (isFetchedBundle(folder)) return "this state comes from a server: fetch it again with ragents connect <server-url>, connect names the matching host version";
|
|
74
|
+
return "rebuild with ragents plugin build <source-folder>";
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
const SKIPPED_SOURCE_ENTRIES = new Set(["node_modules", ".DS_Store"]);
|
|
@@ -116,7 +116,7 @@ export const bundleStand = (folder: string): string => {
|
|
|
116
116
|
/** A copy of a bundle, from a package or an archive, must carry exactly the files it was built with. */
|
|
117
117
|
export const assertBundleStand = (folder: string, manifest: Pick<BundleManifest, "id" | "stand">): void => {
|
|
118
118
|
if (bundleStand(folder) !== manifest.stand) {
|
|
119
|
-
throw new Error(`
|
|
119
|
+
throw new Error(`The bundle ${manifest.id} in ${folder} no longer has the files it was built with (stand); ${rebuildHint(folder)}`);
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
122
|
|
|
@@ -133,8 +133,8 @@ const missingHostNames = (manifest: Pick<BundleManifest, "hostNames">, record: H
|
|
|
133
133
|
export const assertHostNames = (folder: string, manifest: Pick<BundleManifest, "id" | "hostNames">, record: HostApiRecord): void => {
|
|
134
134
|
const missing = missingHostNames(manifest, record);
|
|
135
135
|
if (missing.length === 0) return;
|
|
136
|
-
throw new Error(`
|
|
137
|
-
+ `
|
|
136
|
+
throw new Error(`The bundle ${manifest.id} needs names from host API ${record.version} that this host does not offer (${missing.join("; ")}); `
|
|
137
|
+
+ `it was built against a newer host: update the host, otherwise ${rebuildHint(folder)}`);
|
|
138
138
|
};
|
|
139
139
|
|
|
140
140
|
/** Reads and checks the manifest; format and host API must match this host exactly. */
|
|
@@ -142,28 +142,28 @@ export const readBundleManifest = (folder: string): BundleManifest => {
|
|
|
142
142
|
const file = path.join(folder, BUNDLE_MANIFEST_FILE);
|
|
143
143
|
if (!statSync(file, { throwIfNoEntry: false })?.isFile()) {
|
|
144
144
|
if (SOURCE_MARKERS.some((marker) => existsSync(path.join(folder, marker)))) {
|
|
145
|
-
throw new Error(`${folder}
|
|
145
|
+
throw new Error(`${folder} is a source folder, not a bundle: build it with ragents plugin build ${folder} and name the bundle folder in the profile`);
|
|
146
146
|
}
|
|
147
|
-
throw new Error(`${folder}
|
|
147
|
+
throw new Error(`${folder} is not a bundle: ${BUNDLE_MANIFEST_FILE} is missing`);
|
|
148
148
|
}
|
|
149
149
|
const id = pluginIdOf(folder);
|
|
150
150
|
const raw = ((): unknown => {
|
|
151
151
|
try {
|
|
152
152
|
return JSON.parse(readFileSync(file, "utf8"));
|
|
153
153
|
} catch (cause) {
|
|
154
|
-
throw new Error(`${file}
|
|
154
|
+
throw new Error(`${file} is not valid JSON: ${cause instanceof Error ? cause.message : String(cause)}`);
|
|
155
155
|
}
|
|
156
156
|
})();
|
|
157
|
-
if (!isRecord(raw)) throw new Error(`${file}
|
|
157
|
+
if (!isRecord(raw)) throw new Error(`${file} must contain an object`);
|
|
158
158
|
if (raw.format !== BUNDLE_FORMAT) {
|
|
159
|
-
throw new Error(`
|
|
159
|
+
throw new Error(`The bundle ${id} has format ${String(raw.format)}, this host reads format ${BUNDLE_FORMAT}; ${rebuildHint(folder)}`);
|
|
160
160
|
}
|
|
161
|
-
if (raw.id !== id) throw new Error(`
|
|
161
|
+
if (raw.id !== id) throw new Error(`The bundle in ${folder} reports the id ${String(raw.id)}; the id is the folder name ${id}`);
|
|
162
162
|
if (raw.api !== HOST_API_VERSION) {
|
|
163
|
-
throw new Error(`
|
|
163
|
+
throw new Error(`The bundle ${id} is built for host API ${String(raw.api)}, this host offers ${HOST_API_VERSION}; ${rebuildHint(folder)}`);
|
|
164
164
|
}
|
|
165
165
|
const unknown = Object.keys(raw).filter((key) => !MANIFEST_KEYS.has(key));
|
|
166
|
-
if (unknown.length > 0) throw new Error(`${file}:
|
|
166
|
+
if (unknown.length > 0) throw new Error(`${file}: unknown fields ${unknown.join(", ")}; ${rebuildHint(folder)}`);
|
|
167
167
|
const malformed = [
|
|
168
168
|
...(isHostNames(raw.hostNames) ? [] : ["hostNames"]),
|
|
169
169
|
...(typeof raw.stand === "string" ? [] : ["stand"]),
|
|
@@ -175,13 +175,13 @@ export const readBundleManifest = (folder: string): BundleManifest => {
|
|
|
175
175
|
...(isStringList(raw.uses) ? [] : ["uses"]),
|
|
176
176
|
...(isStringList(raw.assets) ? [] : ["assets"]),
|
|
177
177
|
];
|
|
178
|
-
if (malformed.length > 0) throw new Error(`${file}: ${malformed.join(", ")}
|
|
178
|
+
if (malformed.length > 0) throw new Error(`${file}: ${malformed.join(", ")} is missing or has the wrong shape; ${rebuildHint(folder)}`);
|
|
179
179
|
const web = raw.web as BundleManifest["web"];
|
|
180
180
|
const webFiles = web === undefined ? [] : [web.entry, web.classes, ...(web.css === undefined ? [] : [web.css])];
|
|
181
181
|
const misplaced = webFiles.filter((entry) => !entry.startsWith("web/") || entry.split("/").includes(".."));
|
|
182
|
-
if (misplaced.length > 0) throw new Error(`${file}: ${misplaced.join(", ")}
|
|
182
|
+
if (misplaced.length > 0) throw new Error(`${file}: ${misplaced.join(", ")} is not under web/; ${rebuildHint(folder)}`);
|
|
183
183
|
for (const required of [raw.server as string, ...webFiles, ...(raw.executor === undefined ? [] : [EXECUTOR_CONTRIBUTION_FILE])]) {
|
|
184
|
-
if (!statSync(path.join(folder, required), { throwIfNoEntry: false })?.isFile()) throw new Error(`
|
|
184
|
+
if (!statSync(path.join(folder, required), { throwIfNoEntry: false })?.isFile()) throw new Error(`The bundle ${id} is missing ${required}; ${rebuildHint(folder)}`);
|
|
185
185
|
}
|
|
186
186
|
return raw as unknown as BundleManifest;
|
|
187
187
|
};
|
|
@@ -2,6 +2,7 @@ import { PluginHost, type PluginWebAddresses } from "@ragents/engine";
|
|
|
2
2
|
import { pluginToolsDirectory, prepareExecutorContribution, type LoadedExecutorContribution } from "@ragents/workspace-executor";
|
|
3
3
|
import { config, HOST_SECRET_ENV_NAMES } from "../config.js";
|
|
4
4
|
import { SESSION_MODE, SESSIONS_MODE } from "../layout.js";
|
|
5
|
+
import { aliasCompletionModel, aliasCompletionModelToken } from "../plugin-support/model-completion.js";
|
|
5
6
|
import { withFolderAssets } from "../plugin-support/plugin-folder.js";
|
|
6
7
|
import type { PluginModule } from "../plugin-support/plugin-module.js";
|
|
7
8
|
import { runManagementToken } from "../ragents/global-chat.js";
|
|
@@ -29,9 +30,9 @@ export interface ProfileComposition {
|
|
|
29
30
|
readonly modules: ReadonlyMap<string, PluginModule>;
|
|
30
31
|
/** The plugins with a web half and where the browser loads it; the web loads exactly these. */
|
|
31
32
|
readonly web: ReadonlyMap<string, PluginWebAddresses>;
|
|
32
|
-
/**
|
|
33
|
+
/** The bundles' contributions to the executor; the server builds them with the tool folders of its data folder. */
|
|
33
34
|
readonly executor: readonly LoadedExecutorContribution[];
|
|
34
|
-
/**
|
|
35
|
+
/** The template from defaultStartEntry of the profile file; the host rejects an unregistered one when sealing. */
|
|
35
36
|
readonly defaultStartEntry?: string;
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -50,23 +51,27 @@ export const composeProfile = (options: ProfileComposition, bridges: HostBridges
|
|
|
50
51
|
host.provideHost(executorContributionsToken, options.executor.map((loaded) =>
|
|
51
52
|
prepareExecutorContribution(loaded, pluginToolsDirectory(config.dataDir, loaded.plugin))));
|
|
52
53
|
host.provideHost(runManagementToken, () => {
|
|
53
|
-
if (!bridges.sessions) throw new Error("
|
|
54
|
+
if (!bridges.sessions) throw new Error("The host provides no session management");
|
|
54
55
|
return bridges.sessions();
|
|
55
56
|
});
|
|
57
|
+
host.provideHost(aliasCompletionModelToken, (alias) => aliasCompletionModel(() => {
|
|
58
|
+
if (!bridges.modelRuntime) throw new Error("The host provides no model runtime");
|
|
59
|
+
return bridges.modelRuntime();
|
|
60
|
+
}, alias));
|
|
56
61
|
host.provideHost(secretEnvNamesToken, () =>
|
|
57
62
|
[...new Set([...HOST_SECRET_ENV_NAMES, ...host.config.secretKeys()])]);
|
|
58
63
|
for (const id of options.pluginIds) {
|
|
59
64
|
const module = options.modules.get(id);
|
|
60
|
-
if (!module) throw new Error(`
|
|
65
|
+
if (!module) throw new Error(`The plugin ${id} was not loaded`);
|
|
61
66
|
const plugin = module.create(host);
|
|
62
67
|
if (plugin.manifest.id !== id) {
|
|
63
|
-
throw new Error(`
|
|
68
|
+
throw new Error(`The plugin folder ${id} reports the different id ${plugin.manifest.id}`);
|
|
64
69
|
}
|
|
65
70
|
if (plugin.manifest.requires !== undefined) {
|
|
66
|
-
throw new Error(`Plugin ${id}
|
|
71
|
+
throw new Error(`Plugin ${id} declares requires in the manifest; it belongs in the module contract`);
|
|
67
72
|
}
|
|
68
73
|
if (plugin.manifest.web !== undefined) {
|
|
69
|
-
throw new Error(`Plugin ${id}
|
|
74
|
+
throw new Error(`Plugin ${id} declares web in the manifest; that follows from the bundle`);
|
|
70
75
|
}
|
|
71
76
|
const web = options.web.get(id);
|
|
72
77
|
host.register(withFolderAssets({
|
|
@@ -24,7 +24,7 @@ export const discoverPluginIds = (root = bundlesRoot): readonly string[] => {
|
|
|
24
24
|
.map((entry) => entry.name)
|
|
25
25
|
.sort();
|
|
26
26
|
for (const id of folders) {
|
|
27
|
-
if (!existsSync(path.join(root, id, BUNDLE_MANIFEST_FILE))) throw new Error(`${path.join(root, id)}
|
|
27
|
+
if (!existsSync(path.join(root, id, BUNDLE_MANIFEST_FILE))) throw new Error(`${path.join(root, id)} is not a bundle: ${BUNDLE_MANIFEST_FILE} is missing`);
|
|
28
28
|
}
|
|
29
29
|
return folders;
|
|
30
30
|
};
|
|
@@ -39,9 +39,9 @@ const builtInFolder = (id: string, root: string): string => {
|
|
|
39
39
|
const folder = path.join(root, id);
|
|
40
40
|
if (statSync(folder, { throwIfNoEntry: false })?.isDirectory()) return folder;
|
|
41
41
|
if (existsSync(path.join(pluginsRoot, id, "ragents-plugin.json"))) {
|
|
42
|
-
throw new Error(`
|
|
42
|
+
throw new Error(`The built-in plugin ${id} is not built: ${folder} is missing; build it in the checkout with pnpm build:plugins`);
|
|
43
43
|
}
|
|
44
|
-
throw new Error(`
|
|
44
|
+
throw new Error(`Unknown plugin ${id}; built in are: ${discoverPluginIds(root).join(", ")}`);
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
/** Resolves the profile's entries to bundles; ids come from bundles/, paths from anywhere on disk. */
|
|
@@ -54,14 +54,14 @@ export const resolvePluginEntries = (
|
|
|
54
54
|
const resolved = entries.map((entry) => {
|
|
55
55
|
const folder = isPluginPath(entry) ? pluginFolderFor(entry, base, root) : builtInFolder(entry, root);
|
|
56
56
|
if (!statSync(folder, { throwIfNoEntry: false })?.isDirectory()) {
|
|
57
|
-
throw new Error(`
|
|
57
|
+
throw new Error(`The plugin ${entry} has no folder ${folder}`);
|
|
58
58
|
}
|
|
59
59
|
const manifest = readBundleManifest(folder);
|
|
60
60
|
assertHostNames(folder, manifest, record);
|
|
61
61
|
return { id: pluginIdOf(folder), folder, manifest };
|
|
62
62
|
});
|
|
63
63
|
const duplicate = resolved.find((plugin, index) => resolved.findIndex((other) => other.id === plugin.id) !== index);
|
|
64
|
-
if (duplicate) throw new Error(`Plugin ${duplicate.id}
|
|
64
|
+
if (duplicate) throw new Error(`Plugin ${duplicate.id} appears more than once in the plugin list`);
|
|
65
65
|
return resolved;
|
|
66
66
|
};
|
|
67
67
|
|
|
@@ -84,7 +84,7 @@ const assertUsesInProfile = (plugins: readonly ResolvedPlugin[]): void => {
|
|
|
84
84
|
const ids = new Set(plugins.map((plugin) => plugin.id));
|
|
85
85
|
for (const plugin of plugins) {
|
|
86
86
|
const missing = plugin.manifest.uses.find((used) => !ids.has(used));
|
|
87
|
-
if (missing !== undefined) throw new Error(`Plugin ${plugin.id}
|
|
87
|
+
if (missing !== undefined) throw new Error(`Plugin ${plugin.id} needs the missing plugin ${missing}; its bundle imports that plugin's exports`);
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
|
|
@@ -100,7 +100,7 @@ export const importBundles = async (plugins: readonly ResolvedPlugin[]): Promise
|
|
|
100
100
|
loaded.set(plugin.id, await import(pathToFileURL(entry).href) as Record<string, unknown>);
|
|
101
101
|
} catch (cause) {
|
|
102
102
|
const reason = cause instanceof Error ? cause.message : String(cause);
|
|
103
|
-
throw new Error(`
|
|
103
|
+
throw new Error(`The bundle ${plugin.id} does not load: ${reason}`, { cause });
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
return loaded;
|
|
@@ -111,8 +111,8 @@ const assertRequires = (ids: readonly string[], modules: ReadonlyMap<string, Plu
|
|
|
111
111
|
for (const [index, id] of ids.entries()) {
|
|
112
112
|
for (const dependency of modules.get(id)?.requires ?? []) {
|
|
113
113
|
const position = positions.get(dependency);
|
|
114
|
-
if (position === undefined) throw new Error(`Plugin ${id}
|
|
115
|
-
if (position >= index) throw new Error(`Plugin ${dependency}
|
|
114
|
+
if (position === undefined) throw new Error(`Plugin ${id} needs the missing plugin ${dependency}`);
|
|
115
|
+
if (position >= index) throw new Error(`Plugin ${dependency} must be registered before ${id}`);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
};
|
|
@@ -122,7 +122,7 @@ const assertUsesRequired = (plugins: readonly ResolvedPlugin[], modules: Readonl
|
|
|
122
122
|
const requires = modules.get(plugin.id)?.requires ?? [];
|
|
123
123
|
const undeclared = plugin.manifest.uses.filter((used) => !requires.includes(used));
|
|
124
124
|
if (undeclared.length > 0) {
|
|
125
|
-
throw new Error(`
|
|
125
|
+
throw new Error(`The bundle ${plugin.id} imports exports of ${undeclared.join(", ")}, but does not name it in requires of its module contract`);
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
};
|
|
@@ -151,8 +151,8 @@ export const loadPlugins = async (
|
|
|
151
151
|
const module = imported.get(plugin.id)?.plugin;
|
|
152
152
|
if (!isPluginModule(module)) {
|
|
153
153
|
throw new Error(
|
|
154
|
-
`
|
|
155
|
-
+ "\"export const plugin: PluginModule\"
|
|
154
|
+
`The bundle ${plugin.id} exports no valid entry point in ${plugin.manifest.server}; expected is `
|
|
155
|
+
+ "\"export const plugin: PluginModule\" with a create function");
|
|
156
156
|
}
|
|
157
157
|
return [plugin.id, module] as const;
|
|
158
158
|
}));
|
|
@@ -7,7 +7,7 @@ import { discoverPluginIds, importBundles, resolvePluginEntries, type ResolvedPl
|
|
|
7
7
|
const provisionOf = (plugin: ResolvedPlugin, exported: Readonly<Record<string, unknown>>): PluginProvision | undefined => {
|
|
8
8
|
if (exported.provision === undefined) return undefined;
|
|
9
9
|
if (!isPluginProvision(exported.provision)) {
|
|
10
|
-
throw new Error(`
|
|
10
|
+
throw new Error(`The bundle ${plugin.id} exports an invalid provisioning; expected is "export const provision: PluginProvision" with check and apply`);
|
|
11
11
|
}
|
|
12
12
|
return exported.provision;
|
|
13
13
|
};
|
|
@@ -22,7 +22,7 @@ export interface PluginProvisionReport {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export const provisionReportLine = (report: PluginProvisionReport): string =>
|
|
25
|
-
`${report.id}: ${report.outcome === "ready" ? "
|
|
25
|
+
`${report.id}: ${report.outcome === "ready" ? "ready" : report.outcome === "installed" ? "installed" : `missing: ${report.reason ?? "no reason"}`}`;
|
|
26
26
|
|
|
27
27
|
const reason = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);
|
|
28
28
|
|
|
@@ -47,7 +47,7 @@ const provisionPlugin = async (
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
/**
|
|
50
|
+
/** Provisions every plugin whose bundle exports a provisioning into its tool folder below the data folder. */
|
|
51
51
|
export const provisionPlugins = async (
|
|
52
52
|
plugins: readonly ResolvedPlugin[],
|
|
53
53
|
dataDirectory: string,
|
|
@@ -65,7 +65,7 @@ export const provisionPlugins = async (
|
|
|
65
65
|
return reports;
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
/**
|
|
68
|
+
/** The named built-in bundles plus all whose exports they import; without those, a bundle does not load. */
|
|
69
69
|
const withUsedBundles = (ids: readonly string[]): readonly ResolvedPlugin[] => {
|
|
70
70
|
const resolved = new Map<string, ResolvedPlugin>();
|
|
71
71
|
const visit = (id: string): void => {
|
|
@@ -78,7 +78,7 @@ const withUsedBundles = (ids: readonly string[]): readonly ResolvedPlugin[] => {
|
|
|
78
78
|
return [...resolved.values()];
|
|
79
79
|
};
|
|
80
80
|
|
|
81
|
-
/**
|
|
81
|
+
/** A workstation has no profile; it provisions the built-in plugins of its host that contribute to the executor, because their tools run on it. */
|
|
82
82
|
export const workspaceProvisionPlugins = (): readonly ResolvedPlugin[] => withUsedBundles(
|
|
83
83
|
resolvePluginEntries(discoverPluginIds()).filter((plugin) => plugin.manifest.executor !== undefined).map((plugin) => plugin.id));
|
|
84
84
|
|
|
@@ -21,10 +21,10 @@ export interface LocalProfile {
|
|
|
21
21
|
|
|
22
22
|
const PROFILE_FILE = /^ragents\.config\.([a-z0-9]+(?:-[a-z0-9]+)*)\.ts$/;
|
|
23
23
|
|
|
24
|
-
/** pnpm
|
|
24
|
+
/** pnpm and the bin command run the scripts with the working directory apps/server; a relative path still applies from the caller. */
|
|
25
25
|
export const callerDirectory = (): string => process.env.RAGENTS_CWD ?? process.env.INIT_CWD ?? process.cwd();
|
|
26
26
|
|
|
27
|
-
/**
|
|
27
|
+
/** A profile is a name next to the host (checkout as well as package) or a path to a ragents.config.<profile>.ts anywhere. */
|
|
28
28
|
export const localProfile = (selection: string, root = hostRoot(), caller = callerDirectory()): LocalProfile | undefined => {
|
|
29
29
|
if (!selection.includes("/") && !selection.endsWith(".ts")) {
|
|
30
30
|
const file = path.join(root, profileFileName(selection));
|
|
@@ -32,29 +32,29 @@ export const localProfile = (selection: string, root = hostRoot(), caller = call
|
|
|
32
32
|
}
|
|
33
33
|
const profileFile = path.resolve(caller, selection);
|
|
34
34
|
const match = PROFILE_FILE.exec(path.basename(profileFile));
|
|
35
|
-
if (!match) throw new Error(`
|
|
36
|
-
if (!statSync(profileFile, { throwIfNoEntry: false })?.isFile()) throw new Error(`
|
|
35
|
+
if (!match) throw new Error(`A profile file is named ragents.config.<profile>.ts, not ${path.basename(profileFile)}`);
|
|
36
|
+
if (!statSync(profileFile, { throwIfNoEntry: false })?.isFile()) throw new Error(`The profile file is missing: ${profileFile}`);
|
|
37
37
|
return { profile: match[1]!, profileFile };
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
/** Port
|
|
40
|
+
/** Port and data folder of a profile, as the server determines them itself later: environment before profile file before default. */
|
|
41
41
|
export const readProfileTarget = async (profile: string, profileFile: string, environment = process.env): Promise<ProfileTarget> => {
|
|
42
|
-
if (!statSync(profileFile, { throwIfNoEntry: false })?.isFile()) throw new Error(`
|
|
42
|
+
if (!statSync(profileFile, { throwIfNoEntry: false })?.isFile()) throw new Error(`The profile file is missing: ${profileFile}`);
|
|
43
43
|
const module = await import(pathToFileURL(profileFile).href) as { config: { host: { PORT?: number; DATA_DIR?: unknown } } };
|
|
44
44
|
const port = Number(environment.PORT || module.config.host.PORT);
|
|
45
|
-
if (!Number.isInteger(port) || port < 1 || port > 65535) throw new Error(`host.PORT
|
|
45
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) throw new Error(`host.PORT of profile ${profile} is not a valid port number.`);
|
|
46
46
|
const configured = module.config.host.DATA_DIR;
|
|
47
47
|
if (isEnvironmentReference(configured) && environment.DATA_DIR === undefined && environment[configured.name] === undefined) {
|
|
48
|
-
throw new Error(`host.DATA_DIR
|
|
48
|
+
throw new Error(`host.DATA_DIR of profile ${profile} refers to the unset environment variable ${configured.name}.`);
|
|
49
49
|
}
|
|
50
50
|
const fromFile = isEnvironmentReference(configured) ? environment[configured.name] : typeof configured === "string" ? configured : undefined;
|
|
51
51
|
const dataDirectory = path.resolve(environment.DATA_DIR ?? fromFile ?? defaultDataDirectory(profile));
|
|
52
52
|
return { profile, profileFile, port, dataDirectory, baseUrl: `http://localhost:${port}` };
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
/**
|
|
55
|
+
/** The one resolution for all commands: name or path of the profile, then port and data folder as in the server. */
|
|
56
56
|
export const selectProfileTarget = async (selection: string, root = hostRoot(), environment = process.env): Promise<ProfileTarget> => {
|
|
57
57
|
const own = localProfile(selection, root);
|
|
58
|
-
if (!own) throw new Error(`
|
|
58
|
+
if (!own) throw new Error(`The profile file is missing: ${path.join(root, profileFileName(selection))}`);
|
|
59
59
|
return readProfileTarget(own.profile, own.profileFile, environment);
|
|
60
60
|
};
|
|
@@ -61,7 +61,7 @@ export class Protocol {
|
|
|
61
61
|
this.written = statSync(this.file, { throwIfNoEntry: false })?.size ?? 0;
|
|
62
62
|
this.stream = createWriteStream(this.file, { flags: "a", mode: 0o640 });
|
|
63
63
|
this.stream.on("error", (error) => {
|
|
64
|
-
process.stderr.write(`
|
|
64
|
+
process.stderr.write(`Log ${this.file} not writable: ${error.message}\n`);
|
|
65
65
|
this.stream = undefined;
|
|
66
66
|
});
|
|
67
67
|
return this.stream;
|
|
@@ -78,7 +78,7 @@ export class Protocol {
|
|
|
78
78
|
if (statSync(from, { throwIfNoEntry: false })) renameSync(from, `${this.file}.${generation}`);
|
|
79
79
|
}
|
|
80
80
|
} catch (error) {
|
|
81
|
-
process.stderr.write(`
|
|
81
|
+
process.stderr.write(`Log ${this.file} cannot be rotated: ${(error as Error).message}\n`);
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
}
|