@schlenkr/ragents 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +6 -6
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +29 -29
- package/apps/server/src/api/core-methods.ts +17 -17
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +6 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +38 -38
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +39 -39
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +27 -27
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +14 -14
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +62 -57
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +23 -23
- package/apps/server/src/ragents/global-chat.ts +8 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +48 -48
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-BO4wLQtE.js → highlighted-body-KPVGNVTW-CpPi6QLr.js} +1 -1
- package/apps/web/dist/assets/main-DJmCHGzM.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-q-mf1kLN.js +608 -0
- package/apps/web/dist/assets/runPanel-nk_aMxSn.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +53 -54
- package/apps/web/dist/help/guide-clients.md +50 -51
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +196 -144
- package/apps/web/dist/help/mini-app.css +6 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +91 -91
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/QuasselHost.tsx +1 -1
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +23 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +26 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +28 -28
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +3 -3
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +3 -3
- package/bundles/ragents.actor-programs/server/index.js +225 -225
- package/bundles/ragents.actor-programs/server/index.js.map +2 -2
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +3 -3
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-MBRPS477.js.map → chunk-IQBHK7MV.js.map} +3 -3
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +2 -2
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +3 -3
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +3 -3
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +3 -3
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +3 -3
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +8 -4
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +3 -3
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +2 -2
- package/bundles/ragents.overseer/ragents-bundle.json +3 -3
- package/bundles/ragents.overseer/server/index.js +98 -98
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +3 -3
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +3 -3
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +3 -3
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +3 -3
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +3 -3
- package/bundles/ragents.todo/server/index.js +5 -8
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +3 -3
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +3 -3
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +3 -3
- package/bundles/ragents.workspace/server/index.js +83 -83
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3725 -552
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/plugin-host.ts +119 -119
- package/packages/ragents/src/plugin-types.ts +16 -16
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal-storage.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +44 -44
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +16 -16
- package/packages/workspace-executor/src/files.ts +31 -31
- package/packages/workspace-executor/src/index.ts +1 -1
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +36 -36
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +3 -3
- package/packages/workspace-executor/src/managed-process.ts +12 -12
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +28 -28
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +1 -1
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -2
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +3 -3
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -5
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +22 -22
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +9 -9
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +6 -6
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/contract.ts +0 -3
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +63 -63
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +50 -50
- package/plugins/ragents.workspace/server/config.ts +7 -7
- package/plugins/ragents.workspace/server/index.ts +3 -3
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +31 -31
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +49 -49
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-DnnqWHkH.js +0 -11
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BLLeth5_.js +0 -568
- package/apps/web/dist/assets/runPanel-DPm7s3KM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -26,7 +26,7 @@ const libraryDirectory = (name: string): string => {
|
|
|
26
26
|
if (existsSync(file) && (JSON.parse(readFileSync(file, "utf8")) as { name?: string }).name === name) return directory;
|
|
27
27
|
directory = path.dirname(directory);
|
|
28
28
|
}
|
|
29
|
-
throw new Error(`
|
|
29
|
+
throw new Error(`The installed package ${name} has no package metadata.`);
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
const json = (value: unknown): string => `${JSON.stringify(value, null, 2)}\n`;
|
|
@@ -34,7 +34,7 @@ const link = async (source: string, target: string): Promise<void> => {
|
|
|
34
34
|
await mkdir(path.dirname(target), { recursive: true });
|
|
35
35
|
await symlink(source, target).catch(async (error: NodeJS.ErrnoException) => {
|
|
36
36
|
if (error.code !== "EEXIST") throw error;
|
|
37
|
-
if (await realpath(target) !== await realpath(source)) throw new Error(`
|
|
37
|
+
if (await realpath(target) !== await realpath(source)) throw new Error(`The prepared library ${target} has a different origin.`);
|
|
38
38
|
});
|
|
39
39
|
};
|
|
40
40
|
export const prepareAppDependencies = async (directory: string): Promise<void> => {
|
|
@@ -96,15 +96,15 @@ export function createTestContextWithContracts(options, contracts) {
|
|
|
96
96
|
const controller = new AbortController();
|
|
97
97
|
const statePort = {read:()=>structuredClone(state),replace:value=>{state=structuredClone(value);}};
|
|
98
98
|
const declared = new Map(contracts.map(contract=>[contract.id,contract]));
|
|
99
|
-
for (const name of Object.keys(options.functions ?? {})) if (!declared.has(name)) throw new Error("
|
|
99
|
+
for (const name of Object.keys(options.functions ?? {})) if (!declared.has(name)) throw new Error("Unknown test function "+name);
|
|
100
100
|
const capabilities = {descriptors:()=>contracts,call:async(name,input)=>{
|
|
101
101
|
const contract=declared.get(name);
|
|
102
102
|
const call=options.functions?.[name];
|
|
103
|
-
if(!call)throw new Error("
|
|
104
|
-
if(!Value.Check(contract.schema,input))throw new Error("
|
|
103
|
+
if(!call)throw new Error("The test is missing the function "+name);
|
|
104
|
+
if(!Value.Check(contract.schema,input))throw new Error("Test input violates the contract of "+name+": "+schemaComplaints(contract.schema,input));
|
|
105
105
|
const result=await call(input);
|
|
106
|
-
assertJsonValue(result,"
|
|
107
|
-
if(!Value.Check(contract.resultSchema,result))throw new Error("
|
|
106
|
+
assertJsonValue(result,"Test response of "+name);
|
|
107
|
+
if(!Value.Check(contract.resultSchema,result))throw new Error("Test response violates the contract of "+name+": "+schemaComplaints(contract.resultSchema,result,"result"));
|
|
108
108
|
return result;
|
|
109
109
|
}};
|
|
110
110
|
return {...createRunContext({runId:"test",invocationId:"test",invocationKind:"tool",principal:{id:"test",kind:"service"},state:statePort,capabilities,log:()=>{},signal:controller.signal}),
|
|
@@ -163,7 +163,7 @@ const workflowSdkFiles = () => workflowSdk ??= (async () => {
|
|
|
163
163
|
const diagnostics = ts.getPreEmitDiagnostics(program);
|
|
164
164
|
if (diagnostics.length) throw new Error(diagnostics.map(diagnostic => ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")).join("\n"));
|
|
165
165
|
const emitted = program.emit(undefined, (name, content) => { if (name.endsWith("index.d.ts")) declarations = content; if (name.endsWith("prompt-reader.d.ts")) promptDeclarations = content; });
|
|
166
|
-
if (emitted.emitSkipped || !declarations) throw new Error("Workflow
|
|
166
|
+
if (emitted.emitSkipped || !declarations) throw new Error("Workflow SDK declarations could not be generated.");
|
|
167
167
|
const runtime = await build({ entryPoints: [workflowSource], bundle: true, write: false, platform: "neutral", format: "esm", target: "es2022", logLevel: "silent" });
|
|
168
168
|
const promptRuntime = await build({ entryPoints: [promptSource], bundle: true, write: false, platform: "node", format: "esm", target: "es2022", logLevel: "silent" });
|
|
169
169
|
return { javaScript: runtime.outputFiles[0]!.text, declarations, promptReader: promptRuntime.outputFiles[0]!.text, promptDeclarations };
|
|
@@ -215,10 +215,10 @@ export const prepareAppProject = async (directory: string): Promise<void> => {
|
|
|
215
215
|
|
|
216
216
|
export const readAppPackage = async (directory: string): Promise<AppPackage> => {
|
|
217
217
|
const pkg = JSON.parse(await readFile(path.join(directory, "package.json"), "utf8")) as Record<string, unknown>;
|
|
218
|
-
if (!Value.Check(appPackageSchema, pkg.ragents)) throw new Error(`package.json.ragents
|
|
219
|
-
if (!pkg.ragents.backend && !pkg.ragents.views?.length) throw new Error("
|
|
218
|
+
if (!Value.Check(appPackageSchema, pkg.ragents)) throw new Error(`package.json.ragents is invalid: ${schemaComplaints(appPackageSchema, pkg.ragents, "ragents")}`);
|
|
219
|
+
if (!pkg.ragents.backend && !pkg.ragents.views?.length) throw new Error("An actor package needs a backend or at least one view.");
|
|
220
220
|
const views = pkg.ragents.views ?? [];
|
|
221
|
-
if (new Set(views.map((view) => view.id)).size !== views.length) throw new Error("
|
|
221
|
+
if (new Set(views.map((view) => view.id)).size !== views.length) throw new Error("View names must be unique.");
|
|
222
222
|
return pkg.ragents;
|
|
223
223
|
};
|
|
224
224
|
|
|
@@ -228,7 +228,7 @@ export const projectSourceFiles = async (directory: string): Promise<{ path: str
|
|
|
228
228
|
for (const entry of await readdir(path.join(directory, relative), { withFileTypes: true })) {
|
|
229
229
|
if (["node_modules", ".build", "dist", ".git"].includes(entry.name)) continue;
|
|
230
230
|
const name = path.join(relative, entry.name);
|
|
231
|
-
if (entry.isSymbolicLink()) throw new Error(`App
|
|
231
|
+
if (entry.isSymbolicLink()) throw new Error(`App source files must not contain symlinks: ${name}`);
|
|
232
232
|
if (entry.isDirectory()) await walk(name);
|
|
233
233
|
else if (entry.isFile()) files.push({ path: name, content: await readFile(path.join(directory, name), "utf8") });
|
|
234
234
|
}
|
|
@@ -255,18 +255,18 @@ export const compileAppBackend = async (options: {
|
|
|
255
255
|
}): Promise<{ contract: AppContract; javaScript: string; hash: string }> => {
|
|
256
256
|
const signal = AbortSignal.any([...(options.signal ? [options.signal] : []), AbortSignal.timeout(15_000)]);
|
|
257
257
|
const entry = path.resolve(options.directory, options.backend);
|
|
258
|
-
if (!entry.startsWith(`${options.directory}${path.sep}`)) throw new Error("
|
|
258
|
+
if (!entry.startsWith(`${options.directory}${path.sep}`)) throw new Error("The backend entry lies outside the app.");
|
|
259
259
|
const result = await build({
|
|
260
260
|
stdin: { contents: `import actor from ${JSON.stringify(`./${options.backend}`)};
|
|
261
261
|
export const describe = () => {
|
|
262
|
-
for (const name of Object.keys(actor.contract.functions ?? {})) if (typeof actor.functions?.[name] !== 'function') throw new Error('
|
|
263
|
-
if (Boolean(actor.contract.input) !== (typeof actor.onInput === 'function')) throw new Error('input
|
|
262
|
+
for (const name of Object.keys(actor.contract.functions ?? {})) if (typeof actor.functions?.[name] !== 'function') throw new Error('Missing function ' + name);
|
|
263
|
+
if (Boolean(actor.contract.input) !== (typeof actor.onInput === 'function')) throw new Error('input and onInput must be present together.');
|
|
264
264
|
return JSON.parse(JSON.stringify(actor.contract));
|
|
265
265
|
};
|
|
266
266
|
export const handle = (request, context) => {
|
|
267
|
-
if (request.kind === 'input') { if (!actor.onInput) throw new Error('
|
|
267
|
+
if (request.kind === 'input') { if (!actor.onInput) throw new Error('This actor does not process input.'); return actor.onInput(request.input, context); }
|
|
268
268
|
const handler = actor.functions[request.functionId];
|
|
269
|
-
if (typeof handler !== 'function') throw new Error('
|
|
269
|
+
if (typeof handler !== 'function') throw new Error('Unknown actor function ' + request.functionId);
|
|
270
270
|
return handler(request.input, context);
|
|
271
271
|
};`, resolveDir: options.directory, sourcefile: "actor-entry.ts", loader: "ts" },
|
|
272
272
|
absWorkingDir: options.directory, platform: "node", format: "esm", target: "node22", bundle: true, packages: "external", write: false,
|
|
@@ -277,7 +277,7 @@ export const handle = (request, context) => {
|
|
|
277
277
|
program: { entry: "server.mjs", files: [{ fileName: "server.mjs", text: javaScript }], exportName: "describe" },
|
|
278
278
|
input: {}, state: {}, cwd: options.directory,
|
|
279
279
|
context: { runId: options.runId, invocationId: "app-contract", invocationKind: "tool", principal: { id: "app-build", kind: "service" }, capabilities: [] },
|
|
280
|
-
}, { signal, call: async () => { throw new Error("
|
|
281
|
-
if (!Value.Check(appContractSchema, described.result)) throw new Error(`
|
|
280
|
+
}, { signal, call: async () => { throw new Error("Run calls are not available while loading the app contract."); }, log: () => undefined });
|
|
281
|
+
if (!Value.Check(appContractSchema, described.result)) throw new Error(`The backend export needs defineActor({state, functions, input?}, {functions, onInput?}) with valid action contracts: ${schemaComplaints(appContractSchema, described.result, "contract")}`);
|
|
282
282
|
return { contract: described.result, javaScript, hash: canonicalHash({ javaScript }) };
|
|
283
283
|
};
|
|
@@ -34,7 +34,7 @@ const actionMap = (actions: readonly ClientActionContract[]): string => {
|
|
|
34
34
|
const fields = [...actions]
|
|
35
35
|
.sort((left, right) => left.id.localeCompare(right.id))
|
|
36
36
|
.map((action) => {
|
|
37
|
-
if (seen.has(action.id)) throw new Error(`App
|
|
37
|
+
if (seen.has(action.id)) throw new Error(`App action ${action.id} is declared twice.`);
|
|
38
38
|
seen.add(action.id);
|
|
39
39
|
return [
|
|
40
40
|
` readonly ${JSON.stringify(action.id)}: {`,
|
|
@@ -81,7 +81,7 @@ export const clientApiDeclarations = (): string => clientTypeDeclarations("Recor
|
|
|
81
81
|
|
|
82
82
|
export const clientSdkSource = `import { useSyncExternalStore } from "react";
|
|
83
83
|
export const context = globalThis.__ragentsAppContext;
|
|
84
|
-
if (!context) throw new Error("
|
|
84
|
+
if (!context) throw new Error("The host bridge of the actor view is missing.");
|
|
85
85
|
export const useAppState = () => useSyncExternalStore(context.state.subscribe, context.state.read, context.state.read);
|
|
86
86
|
`;
|
|
87
87
|
|
|
@@ -136,7 +136,7 @@ export const compileClientProject = async (request: ClientProjectRequest, signal
|
|
|
136
136
|
const directory = await realpath(request.directory);
|
|
137
137
|
const declarations = clientDeclarations(request);
|
|
138
138
|
const installed = await readFile(path.join(directory, "node_modules/@ragents/client/index.d.ts"), "utf8");
|
|
139
|
-
if (installed !== declarations) throw new Error("
|
|
139
|
+
if (installed !== declarations) throw new Error("The client SDK types are out of date. The actor project must be prepared again.");
|
|
140
140
|
const configPath = path.join(directory, "tsconfig.client.json");
|
|
141
141
|
const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
142
142
|
if (configFile.error) throw new Error(ts.flattenDiagnosticMessageText(configFile.error.messageText, "\n"));
|
|
@@ -156,7 +156,7 @@ export const compileClientProject = async (request: ClientProjectRequest, signal
|
|
|
156
156
|
minify: true,
|
|
157
157
|
});
|
|
158
158
|
const output = result.outputFiles.find((file) => file.path.endsWith(".js") || file.path === "<stdout>");
|
|
159
|
-
if (!output) throw new Error("
|
|
159
|
+
if (!output) throw new Error("The client build produced no JavaScript.");
|
|
160
160
|
javaScript = output.text;
|
|
161
161
|
} catch (cause) {
|
|
162
162
|
if (cause && typeof cause === "object" && "errors" in cause && Array.isArray(cause.errors)) {
|
|
@@ -12,15 +12,15 @@ function readContracts(repoRoot: string): { names: string[]; files: Record<strin
|
|
|
12
12
|
};
|
|
13
13
|
const program = ts.createProgram([filename], options);
|
|
14
14
|
const source = program.getSourceFile(filename);
|
|
15
|
-
if (!source) throw new Error("
|
|
15
|
+
if (!source) throw new Error("The public UI contract is missing.");
|
|
16
16
|
const checker = program.getTypeChecker();
|
|
17
17
|
const module = checker.getSymbolAtLocation(source);
|
|
18
|
-
if (!module) throw new Error("
|
|
18
|
+
if (!module) throw new Error("The public UI contract is not a module.");
|
|
19
19
|
const names = checker.getExportsOfModule(module).filter((entry) => {
|
|
20
20
|
const symbol = entry.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(entry) : entry;
|
|
21
21
|
return /^[A-Z]/.test(entry.name) && (symbol.flags & ts.SymbolFlags.Value) && checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration ?? source).getCallSignatures().length > 0;
|
|
22
22
|
}).map((entry) => entry.name).sort((a, b) => a.localeCompare(b, "en"));
|
|
23
|
-
if (!names.length) throw new Error("
|
|
23
|
+
if (!names.length) throw new Error("The public UI contract exports no components.");
|
|
24
24
|
const files: Record<string, string> = {};
|
|
25
25
|
const visited = new Set<string>();
|
|
26
26
|
const diagnostics: ts.Diagnostic[] = [...program.getOptionsDiagnostics()];
|
|
@@ -28,13 +28,13 @@ function readContracts(repoRoot: string): { names: string[]; files: Record<strin
|
|
|
28
28
|
if (visited.has(file.fileName)) return;
|
|
29
29
|
visited.add(file.fileName);
|
|
30
30
|
const relative = path.relative(repoRoot, file.fileName).replaceAll(path.sep, "/");
|
|
31
|
-
if (relative.startsWith("../") || relative.includes("node_modules/")) throw new Error("
|
|
31
|
+
if (relative.startsWith("../") || relative.includes("node_modules/")) throw new Error("A local UI type reference leaves the public repository sources.");
|
|
32
32
|
diagnostics.push(...program.getSyntacticDiagnostics(file), ...program.getSemanticDiagnostics(file));
|
|
33
33
|
let text = file.isDeclarationFile ? file.text : "";
|
|
34
34
|
if (!file.isDeclarationFile) {
|
|
35
35
|
const emitted = program.emit(file, (filename, content) => { if (filename.endsWith(".d.ts")) text = content; }, undefined, true);
|
|
36
36
|
diagnostics.push(...emitted.diagnostics);
|
|
37
|
-
if (!text) throw new Error(`UI
|
|
37
|
+
if (!text) throw new Error(`UI type declarations are missing: ${relative}`);
|
|
38
38
|
}
|
|
39
39
|
files[relative.replace(/(?<!\.d)\.tsx?$/, ".d.ts")] = text;
|
|
40
40
|
const declaration = ts.createSourceFile(file.fileName, text, ts.ScriptTarget.Latest, true);
|
|
@@ -43,17 +43,17 @@ function readContracts(repoRoot: string): { names: string[]; files: Record<strin
|
|
|
43
43
|
if (!reference.fileName.startsWith(".")) continue;
|
|
44
44
|
const resolved = ts.resolveModuleName(reference.fileName, file.fileName, options, ts.sys).resolvedModule;
|
|
45
45
|
const dependency = resolved && program.getSourceFile(resolved.resolvedFileName);
|
|
46
|
-
if (!dependency) throw new Error(`
|
|
46
|
+
if (!dependency) throw new Error(`Unresolvable local UI type reference: ${relative}: ${reference.fileName}`);
|
|
47
47
|
collect(dependency);
|
|
48
48
|
}
|
|
49
49
|
for (const reference of declaration.referencedFiles) {
|
|
50
50
|
const dependency = program.getSourceFile(path.resolve(path.dirname(file.fileName), reference.fileName));
|
|
51
|
-
if (!dependency) throw new Error(`
|
|
51
|
+
if (!dependency) throw new Error(`Unresolvable UI type file reference: ${relative}: ${reference.fileName}`);
|
|
52
52
|
collect(dependency);
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
collect(source);
|
|
56
|
-
if (diagnostics.length) throw new Error(`
|
|
56
|
+
if (diagnostics.length) throw new Error(`The public UI contract cannot be checked: ${diagnostics.map((diagnostic) => ts.flattenDiagnosticMessageText(diagnostic.messageText, " ")).join("; ")}`);
|
|
57
57
|
return { names, files: Object.fromEntries(Object.entries(files).sort(([a], [b]) => a.localeCompare(b, "en"))) };
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -71,7 +71,7 @@ export function readClientUiComponentNames(repoRoot?: string): string[] {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
export function readClientUiComponentContracts(component: string, repoRoot?: string): Record<string, string> {
|
|
74
|
-
if (!contracts(repoRoot).names.includes(component)) throw new Error(`
|
|
74
|
+
if (!contracts(repoRoot).names.includes(component)) throw new Error(`Unknown control ${component}. Valid: ${contracts(repoRoot).names.join(", ")}`);
|
|
75
75
|
return readClientUiExportContracts(component, repoRoot);
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -109,7 +109,7 @@ export function readClientUiExportContracts(component: string, repoRoot?: string
|
|
|
109
109
|
visitedExports.add(key);
|
|
110
110
|
const module = checker.getSymbolAtLocation(file);
|
|
111
111
|
const symbol = module && checker.getExportsOfModule(module).find((item) => item.name === name);
|
|
112
|
-
if (!symbol) throw new Error(`UI
|
|
112
|
+
if (!symbol) throw new Error(`UI type reference is missing: ${file.fileName}: ${name}`);
|
|
113
113
|
const target = resolve(symbol);
|
|
114
114
|
const declaration = target.declarations?.find((item) => local(item.getSourceFile()));
|
|
115
115
|
if (!declaration) return;
|
|
@@ -153,7 +153,7 @@ export function readClientUiExportContracts(component: string, repoRoot?: string
|
|
|
153
153
|
}
|
|
154
154
|
};
|
|
155
155
|
const source = program.getSourceFile(entry);
|
|
156
|
-
if (!source) throw new Error("
|
|
156
|
+
if (!source) throw new Error("The public UI contract is missing.");
|
|
157
157
|
exportFrom(source, component);
|
|
158
158
|
const printer = ts.createPrinter();
|
|
159
159
|
const result: Record<string, string> = {};
|
|
@@ -55,11 +55,11 @@ export const resolveActorView = (programs: readonly ActorProgramDefinition[], re
|
|
|
55
55
|
const named = views.filter(({ program, view }) => [view.id, `${program.name}/${view.key}`, `@${program.actorHandle}/${view.key}`]
|
|
56
56
|
.some((name) => name.toLowerCase() === normalized));
|
|
57
57
|
const matches = named.length > 0 ? named : views.filter(({ view }) => view.title.toLowerCase() === normalized);
|
|
58
|
-
const names = (entries: typeof views) => entries.map(({ program, view }) => `${program.name}/${view.key} (@${program.actorHandle}/${view.key})`).join(", ") || "
|
|
58
|
+
const names = (entries: typeof views) => entries.map(({ program, view }) => `${program.name}/${view.key} (@${program.actorHandle}/${view.key})`).join(", ") || "none";
|
|
59
59
|
if (matches.length === 0) {
|
|
60
|
-
throw new Error(`${reference}
|
|
60
|
+
throw new Error(`${reference} is not an active actor view of this run. Activate the program first. Available: ${names(views)}`);
|
|
61
61
|
}
|
|
62
|
-
if (matches.length > 1) throw new Error(`${reference}
|
|
62
|
+
if (matches.length > 1) throw new Error(`${reference} is ambiguous. Use a unique name: ${names(matches)}`);
|
|
63
63
|
return matches[0]!;
|
|
64
64
|
};
|
|
65
65
|
|
|
@@ -118,21 +118,21 @@ export interface ActorLocalTool {
|
|
|
118
118
|
targets: { actorId: string; handle: string | null }[];
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
const runId = Type.String({ pattern: "^[A-Za-z0-9_-]{1,64}$", description: "
|
|
122
|
-
const viewId = Type.String({ pattern: "^[a-z][a-z0-9_-]{0,129}$", description: "
|
|
123
|
-
const actorHandle = Type.String({ pattern: "^[a-z][a-z0-9-]{0,63}$", description: "Handle
|
|
124
|
-
const functionId = Type.String({ pattern: "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$", description: "
|
|
125
|
-
const invocationId = Type.String({ pattern: "^[A-Za-z0-9_-]{1,100}$", description: "
|
|
126
|
-
const revision = Type.String({ pattern: "^[a-f0-9]{64}$", description: "Revision
|
|
127
|
-
const requestId = Type.String({ minLength: 1, maxLength: 200, description: "
|
|
128
|
-
const functionInput = Type.Unknown({ description: "
|
|
121
|
+
const runId = Type.String({ pattern: "^[A-Za-z0-9_-]{1,64}$", description: "Identifier of the run" });
|
|
122
|
+
const viewId = Type.String({ pattern: "^[a-z][a-z0-9_-]{0,129}$", description: "Identifier of the actor view or the program" });
|
|
123
|
+
const actorHandle = Type.String({ pattern: "^[a-z][a-z0-9-]{0,63}$", description: "Handle of the actor without @" });
|
|
124
|
+
const functionId = Type.String({ pattern: "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$", description: "Identifier of the function" });
|
|
125
|
+
const invocationId = Type.String({ pattern: "^[A-Za-z0-9_-]{1,100}$", description: "Identifier of the function call" });
|
|
126
|
+
const revision = Type.String({ pattern: "^[a-f0-9]{64}$", description: "Revision of the active actor package" });
|
|
127
|
+
const requestId = Type.String({ minLength: 1, maxLength: 200, description: "The caller's own identifier; repeated calls return the same call" });
|
|
128
|
+
const functionInput = Type.Unknown({ description: "Input of the function according to its own schema" });
|
|
129
129
|
|
|
130
130
|
const invocationSchema = openJson<ActorFunctionInvocation>("ActorFunctionInvocation");
|
|
131
131
|
|
|
132
132
|
export const actorProgramContracts = {
|
|
133
133
|
apps: defineOperation({
|
|
134
134
|
id: "ragents.actor-programs.apps",
|
|
135
|
-
description: "
|
|
135
|
+
description: "The actor views of a run with state and calls; the tool list stays empty without runs.inspect.",
|
|
136
136
|
rights: ["runs.read"],
|
|
137
137
|
input: Type.Object({ runId }, { additionalProperties: false }),
|
|
138
138
|
result: Type.Object({
|
|
@@ -142,7 +142,7 @@ export const actorProgramContracts = {
|
|
|
142
142
|
}),
|
|
143
143
|
source: defineOperation({
|
|
144
144
|
id: "ragents.actor-programs.source",
|
|
145
|
-
description: "
|
|
145
|
+
description: "Read the source code of an actor program.",
|
|
146
146
|
rights: ["runs.read", "runs.inspect"],
|
|
147
147
|
input: Type.Object({ runId, moduleId: viewId }, { additionalProperties: false }),
|
|
148
148
|
result: Type.Object({
|
|
@@ -151,28 +151,28 @@ export const actorProgramContracts = {
|
|
|
151
151
|
}),
|
|
152
152
|
action: defineOperation({
|
|
153
153
|
id: "ragents.actor-programs.action",
|
|
154
|
-
description: "
|
|
154
|
+
description: "Start a function of an actor view; the response is the queued call.",
|
|
155
155
|
rights: ["runs.read", "runs.write"],
|
|
156
156
|
input: Type.Object({ runId, appId: viewId, revision, actionId: functionId, requestId, input: functionInput }, { additionalProperties: false }),
|
|
157
157
|
result: invocationSchema,
|
|
158
158
|
}),
|
|
159
159
|
invocation: defineOperation({
|
|
160
160
|
id: "ragents.actor-programs.invocation",
|
|
161
|
-
description: "
|
|
161
|
+
description: "Read the state of a call of an actor view.",
|
|
162
162
|
rights: ["runs.read"],
|
|
163
163
|
input: Type.Object({ runId, appId: viewId, invocationId }, { additionalProperties: false }),
|
|
164
164
|
result: invocationSchema,
|
|
165
165
|
}),
|
|
166
166
|
function: defineOperation({
|
|
167
167
|
id: "ragents.actor-programs.function",
|
|
168
|
-
description: "
|
|
168
|
+
description: "Start a function of an actor independently of its views.",
|
|
169
169
|
rights: ["runs.read", "runs.write", "runs.inspect"],
|
|
170
170
|
input: Type.Object({ runId, actorHandle, revision, functionId, requestId, input: functionInput }, { additionalProperties: false }),
|
|
171
171
|
result: invocationSchema,
|
|
172
172
|
}),
|
|
173
173
|
functionInvocation: defineOperation({
|
|
174
174
|
id: "ragents.actor-programs.function-invocation",
|
|
175
|
-
description: "
|
|
175
|
+
description: "Read the state of a call of an actor function.",
|
|
176
176
|
rights: ["runs.read", "runs.inspect"],
|
|
177
177
|
input: Type.Object({ runId, actorHandle, invocationId }, { additionalProperties: false }),
|
|
178
178
|
result: invocationSchema,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** The actor workspace links these libraries at runtime; they are not imported but resolved by their name. */
|
|
2
2
|
export const webRuntimeLibraries = ["react", "react-dom", "@types/react", "@types/react-dom", "@base-ui/react", "class-variance-authority", "cn", "lucide-react"] as const;
|
|
3
3
|
|
|
4
4
|
export const runtimeLibraries = [...webRuntimeLibraries, "@types/node", "typescript", "tsx", "typebox", "esbuild"] as const;
|
|
@@ -41,16 +41,16 @@ export interface WorkflowGraph {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
function text(value: unknown, name: string): asserts value is string {
|
|
44
|
-
if (typeof value !== "string" || !value.trim()) throw new Error(`${name}
|
|
44
|
+
if (typeof value !== "string" || !value.trim()) throw new Error(`${name} must be a non-empty text.`);
|
|
45
45
|
}
|
|
46
46
|
function object(value: unknown, name: string): asserts value is Record<string, unknown> {
|
|
47
|
-
if (value === null || typeof value !== "object" || Array.isArray(value)) throw new Error(`${name}
|
|
47
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) throw new Error(`${name} must be an object.`);
|
|
48
48
|
}
|
|
49
49
|
function positiveInteger(value: unknown, name: string) {
|
|
50
|
-
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1) throw new Error(`${name}
|
|
50
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1) throw new Error(`${name} must be a positive integer.`);
|
|
51
51
|
}
|
|
52
52
|
function optionalText(value: unknown, name: string) {
|
|
53
|
-
if (value !== undefined && typeof value !== "string") throw new Error(`${name}
|
|
53
|
+
if (value !== undefined && typeof value !== "string") throw new Error(`${name} must be text.`);
|
|
54
54
|
}
|
|
55
55
|
export function validatePromptReference(value: unknown) {
|
|
56
56
|
text(value, "Prompt reference");
|
|
@@ -62,7 +62,7 @@ function has(object: object, key: string) { return Object.prototype.hasOwnProper
|
|
|
62
62
|
|
|
63
63
|
export function defineWorkflow<const Definition extends WorkflowDefinition>(definition: Definition): Definition {
|
|
64
64
|
object(definition, "Workflow");
|
|
65
|
-
text(definition.id, "Workflow
|
|
65
|
+
text(definition.id, "Workflow ID");
|
|
66
66
|
text(definition.title, "Workflow title");
|
|
67
67
|
object(definition.roles, "Roles");
|
|
68
68
|
if (Object.keys(definition.roles).length === 0) throw new Error("A workflow requires roles.");
|
|
@@ -7,9 +7,9 @@ export function createPromptReader(directory: string): (reference: string) => Pr
|
|
|
7
7
|
validatePromptReference(reference);
|
|
8
8
|
const root = await realpath(directory);
|
|
9
9
|
const filename = await realpath(path.join(root, reference));
|
|
10
|
-
if (!filename.startsWith(`${root}${path.sep}`)) throw new Error(`
|
|
10
|
+
if (!filename.startsWith(`${root}${path.sep}`)) throw new Error(`Prompt file lies outside the actor package: ${reference}`);
|
|
11
11
|
const content = await readFile(filename, "utf8");
|
|
12
|
-
if (!content.trim()) throw new Error(`
|
|
12
|
+
if (!content.trim()) throw new Error(`Prompt file is empty: ${reference}`);
|
|
13
13
|
return content;
|
|
14
14
|
};
|
|
15
15
|
}
|
|
@@ -28,14 +28,14 @@ const flag = (env: ChatDisplayEnvironment, key: ChatDisplayKey, fallback: boolea
|
|
|
28
28
|
if (value === undefined || value === "") return fallback;
|
|
29
29
|
if (value === "1") return true;
|
|
30
30
|
if (value === "0") return false;
|
|
31
|
-
throw new Error(`${key}
|
|
31
|
+
throw new Error(`${key} must be "0" or "1", not "${value}"`);
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const mode = (env: ChatDisplayEnvironment, key: ChatDisplayKey, fallback: ChatDetailMode): ChatDetailMode => {
|
|
35
35
|
const value = env.optional(key);
|
|
36
36
|
if (value === undefined || value === "") return fallback;
|
|
37
37
|
if (!CHAT_DETAIL_MODES.includes(value as ChatDetailMode)) {
|
|
38
|
-
throw new Error(`${key}
|
|
38
|
+
throw new Error(`${key} must be one of ${CHAT_DETAIL_MODES.join(", ")}, not "${value}"`);
|
|
39
39
|
}
|
|
40
40
|
return value as ChatDetailMode;
|
|
41
41
|
};
|
|
@@ -5,9 +5,9 @@ export const fieldsOf = (file: string, block: string): Map<string, string> => {
|
|
|
5
5
|
for (const line of block.split("\n")) {
|
|
6
6
|
if (!line.trim()) continue;
|
|
7
7
|
const separator = line.indexOf(":");
|
|
8
|
-
if (separator < 0) throw new Error(`${file}: "${line.trim()}"
|
|
8
|
+
if (separator < 0) throw new Error(`${file}: "${line.trim()}" is not a key-value pair`);
|
|
9
9
|
const key = line.slice(0, separator).trim();
|
|
10
|
-
if (fields.has(key)) throw new Error(`${file}: ${key}
|
|
10
|
+
if (fields.has(key)) throw new Error(`${file}: ${key} appears more than once in the header`);
|
|
11
11
|
fields.set(key, line.slice(separator + 1).trim().replace(/^"(.*)"$/, "$1"));
|
|
12
12
|
}
|
|
13
13
|
return fields;
|
|
@@ -17,13 +17,13 @@ export const flag = (file: string, key: string, value: string | undefined, fallb
|
|
|
17
17
|
if (value === undefined || value === "") return fallback;
|
|
18
18
|
if (value === "true" || value === "1") return true;
|
|
19
19
|
if (value === "false" || value === "0") return false;
|
|
20
|
-
throw new Error(`${file}: ${key}
|
|
20
|
+
throw new Error(`${file}: ${key} must be true or false, not "${value}"`);
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
export const numberOf = (file: string, key: string, value: string | undefined): number | undefined => {
|
|
24
24
|
if (value === undefined || value === "") return undefined;
|
|
25
25
|
const parsed = Number(value);
|
|
26
|
-
if (!Number.isFinite(parsed)) throw new Error(`${file}: ${key}
|
|
26
|
+
if (!Number.isFinite(parsed)) throw new Error(`${file}: ${key} must be a number, not "${value}"`);
|
|
27
27
|
return parsed;
|
|
28
28
|
};
|
|
29
29
|
|
|
@@ -31,7 +31,7 @@ export const tagsOf = (file: string, value: string | undefined): readonly string
|
|
|
31
31
|
if (value === undefined) return undefined;
|
|
32
32
|
const tags = value.split(",").map((tag) => tag.trim());
|
|
33
33
|
if (tags.some((tag) => !tag) || new Set(tags).size !== tags.length) {
|
|
34
|
-
throw new Error(`${file}: tags
|
|
34
|
+
throw new Error(`${file}: tags must be unique, non-empty keywords`);
|
|
35
35
|
}
|
|
36
36
|
return tags;
|
|
37
37
|
};
|
|
@@ -39,6 +39,6 @@ export const tagsOf = (file: string, value: string | undefined): readonly string
|
|
|
39
39
|
/** Splits a markdown file into its front matter fields and the body after the closing marker. */
|
|
40
40
|
export const frontMatterOf = (file: string, raw: string, required: string): { fields: Map<string, string>; body: string } => {
|
|
41
41
|
const head = FRONT_MATTER.exec(raw);
|
|
42
|
-
if (!head) throw new Error(`${file}:
|
|
42
|
+
if (!head) throw new Error(`${file}: the --- header with ${required} is missing`);
|
|
43
43
|
return { fields: fieldsOf(file, head[1]), body: raw.slice(head[0].length) };
|
|
44
44
|
};
|
|
@@ -5,7 +5,7 @@ export const DEFAULT_MAX_BODY_BYTES = 1024 * 1024;
|
|
|
5
5
|
|
|
6
6
|
export class PayloadTooLargeError extends DomainError {
|
|
7
7
|
constructor(maxBytes: number) {
|
|
8
|
-
super("payload_too_large", `
|
|
8
|
+
super("payload_too_large", `The request is larger than ${maxBytes} bytes`, 413);
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -32,7 +32,7 @@ export const readBody = async (
|
|
|
32
32
|
export const readJsonBody = async <T>(
|
|
33
33
|
request: IncomingMessage,
|
|
34
34
|
validate: (body: unknown) => T,
|
|
35
|
-
invalidJsonMessage = "
|
|
35
|
+
invalidJsonMessage = "The request does not contain valid JSON",
|
|
36
36
|
maxBytes = DEFAULT_MAX_BODY_BYTES,
|
|
37
37
|
): Promise<T> => {
|
|
38
38
|
const text = await readBody(request, maxBytes);
|
|
@@ -12,13 +12,13 @@ export type {
|
|
|
12
12
|
LanguageServerState,
|
|
13
13
|
} from "@ragents/workspace-executor";
|
|
14
14
|
|
|
15
|
-
const runIdSchema = Type.String({ minLength: 1, maxLength: 64, description: "
|
|
15
|
+
const runIdSchema = Type.String({ minLength: 1, maxLength: 64, description: "Identifier of the run" });
|
|
16
16
|
|
|
17
|
-
/**
|
|
17
|
+
/** One method per language server plugin; the rights carry its identifier. */
|
|
18
18
|
export const languageServerSnapshotContract = (pluginId: string) =>
|
|
19
19
|
defineOperation({
|
|
20
20
|
id: `${pluginId}.snapshot`,
|
|
21
|
-
description: `
|
|
21
|
+
description: `State and diagnostics of the language server ${pluginId} in a run. Rights: runs.read and ${pluginId}.read.`,
|
|
22
22
|
rights: ["runs.read", `${pluginId}.read`],
|
|
23
23
|
input: Type.Object({
|
|
24
24
|
runId: runIdSchema,
|
|
@@ -29,7 +29,7 @@ export const languageServerSnapshotContract = (pluginId: string) =>
|
|
|
29
29
|
export const languageServerSolutionsContract = (pluginId: string) =>
|
|
30
30
|
defineOperation({
|
|
31
31
|
id: `${pluginId}.solutions`,
|
|
32
|
-
description: `
|
|
32
|
+
description: `The solutions in the workspace of a run and which of them ${pluginId} has opened. Rights: runs.read and ${pluginId}.read.`,
|
|
33
33
|
rights: ["runs.read", `${pluginId}.read`],
|
|
34
34
|
input: Type.Object({
|
|
35
35
|
runId: runIdSchema,
|
|
@@ -40,15 +40,15 @@ export const languageServerSolutionsContract = (pluginId: string) =>
|
|
|
40
40
|
export const languageServerSwitchContract = (pluginId: string) =>
|
|
41
41
|
defineOperation({
|
|
42
42
|
id: `${pluginId}.switch`,
|
|
43
|
-
description: `
|
|
44
|
-
+ `
|
|
43
|
+
description: `Loads a solution in ${pluginId} and ends all other instances of the run; null ends all of them. `
|
|
44
|
+
+ `Does not wait for the load. Rights: runs.read, runs.write, ${pluginId}.read and ${pluginId}.write.`,
|
|
45
45
|
rights: ["runs.read", "runs.write", `${pluginId}.read`, `${pluginId}.write`],
|
|
46
46
|
input: Type.Object({
|
|
47
47
|
runId: runIdSchema,
|
|
48
48
|
root: Type.Union([
|
|
49
|
-
Type.String({ minLength: 1, maxLength: 1024, description: "
|
|
49
|
+
Type.String({ minLength: 1, maxLength: 1024, description: "The solution relative to the workspace root" }),
|
|
50
50
|
Type.Null(),
|
|
51
|
-
], { description: "null
|
|
51
|
+
], { description: "null ends all instances" }),
|
|
52
52
|
}, { additionalProperties: false }),
|
|
53
53
|
result: openJson<LanguageServerSolutions>("LanguageServerSolutions"),
|
|
54
54
|
});
|
|
@@ -7,11 +7,11 @@ import { createLanguageServerToolContributor } from "./tools.js";
|
|
|
7
7
|
|
|
8
8
|
export interface LanguageServerPluginOptions {
|
|
9
9
|
id: string;
|
|
10
|
-
/**
|
|
10
|
+
/** Describes the language server for tools and tabs; the executor starts it from the plugin's contribution. */
|
|
11
11
|
languageServer: LanguageServerDescription;
|
|
12
12
|
tabLabel?: string;
|
|
13
13
|
configDescriptors?: readonly PluginConfigDescriptor[];
|
|
14
|
-
/**
|
|
14
|
+
/** After every successful open via tool or switch, with the run. */
|
|
15
15
|
onOpened?: (runId: string) => void;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -13,7 +13,7 @@ export interface LanguageServerMethodOptions {
|
|
|
13
13
|
pluginId: string;
|
|
14
14
|
adapterId: string;
|
|
15
15
|
sandbox: SandboxServices;
|
|
16
|
-
/**
|
|
16
|
+
/** The language servers work in the run's workspace; whoever may not see it does not see their state either. */
|
|
17
17
|
ensureWorkspaceAccess: (access: AccessContext, runId: string) => void;
|
|
18
18
|
opened: (runId: string) => void;
|
|
19
19
|
}
|
|
@@ -14,21 +14,21 @@ import { alwaysAvailable } from "../tool-availability.js";
|
|
|
14
14
|
import type { SandboxServices } from "../workspace-sandbox-host.js";
|
|
15
15
|
|
|
16
16
|
const stateLabels: Readonly<Record<LanguageServerState, string>> = {
|
|
17
|
-
opening: "
|
|
18
|
-
ready: "
|
|
19
|
-
failed: "
|
|
20
|
-
suspended: "
|
|
17
|
+
opening: "loading",
|
|
18
|
+
ready: "ready",
|
|
19
|
+
failed: "failed",
|
|
20
|
+
suspended: "ended after idle",
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
export const formatSolutions = (label: string, listing: LanguageServerSolutions): string => {
|
|
24
|
-
const source = listing.source === "git" ? "
|
|
25
|
-
if (listing.solutions.length === 0) return `
|
|
24
|
+
const source = listing.source === "git" ? "from git ls-files" : "from the directory search, not a git working directory";
|
|
25
|
+
if (listing.solutions.length === 0) return `No solution in the workspace (${source})`;
|
|
26
26
|
const lines = listing.solutions.map((solution) =>
|
|
27
27
|
`- ${solution.path}${solution.state === null ? "" : ` (${label}: ${stateLabels[solution.state]})`}`);
|
|
28
|
-
return [`${listing.solutions.length} Solution${listing.solutions.length === 1 ? "" : "s"}
|
|
28
|
+
return [`${listing.solutions.length} Solution${listing.solutions.length === 1 ? "" : "s"} in the workspace (${source}):`, ...lines].join("\n");
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
/**
|
|
31
|
+
/** Description and forwarding: the language server runs in the run's executor, not in this plugin. */
|
|
32
32
|
export const createLanguageServerToolContributor = (
|
|
33
33
|
pluginId: string,
|
|
34
34
|
languageServer: LanguageServerDescription,
|
|
@@ -59,7 +59,7 @@ export const createLanguageServerToolContributor = (
|
|
|
59
59
|
} as const;
|
|
60
60
|
const openTool = defineRunFunction({
|
|
61
61
|
...openMetadata,
|
|
62
|
-
label:
|
|
62
|
+
label: `Open ${label}`,
|
|
63
63
|
schema: Type.Object({
|
|
64
64
|
root: Type.String({ description: `${rootDescription}, relative to the workspace root` }),
|
|
65
65
|
}),
|
|
@@ -77,7 +77,7 @@ export const createLanguageServerToolContributor = (
|
|
|
77
77
|
});
|
|
78
78
|
const diagnosticsTool = defineRunFunction({
|
|
79
79
|
...diagnosticsMetadata,
|
|
80
|
-
label: `${label}
|
|
80
|
+
label: `${label} diagnostics`,
|
|
81
81
|
schema: Type.Object({
|
|
82
82
|
paths: Type.Optional(Type.Array(Type.String(), {
|
|
83
83
|
description: "Files relative to the workspace root; omit for all changed files",
|
|
@@ -116,7 +116,7 @@ export const createLanguageServerToolContributor = (
|
|
|
116
116
|
});
|
|
117
117
|
const closeTool = defineRunFunction({
|
|
118
118
|
...closeMetadata,
|
|
119
|
-
label:
|
|
119
|
+
label: `Close ${label}`,
|
|
120
120
|
schema: Type.Object({
|
|
121
121
|
root: Type.Optional(Type.String({ description: "The open root to stop; omit for every instance of this run" })),
|
|
122
122
|
}),
|