@schlenkr/ragents 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/server/package.json +1 -1
- package/apps/server/src/access-projection.ts +9 -39
- package/apps/server/src/access-service.ts +3 -3
- package/apps/server/src/access-session.ts +19 -19
- package/apps/server/src/api/contracts.ts +32 -29
- package/apps/server/src/api/core-methods.ts +21 -19
- package/apps/server/src/api/delivery.ts +2 -2
- package/apps/server/src/api/reference.ts +27 -27
- package/apps/server/src/api/rights.ts +18 -18
- package/apps/server/src/chat-handler.ts +5 -5
- package/apps/server/src/config-definition.ts +37 -10
- package/apps/server/src/config-file.ts +49 -49
- package/apps/server/src/config.ts +2 -0
- package/apps/server/src/data-directory.ts +2 -2
- package/apps/server/src/external-access.ts +1 -1
- package/apps/server/src/folder-install.ts +1 -1
- package/apps/server/src/help-files.ts +1 -1
- package/apps/server/src/host-api.json +8 -1
- package/apps/server/src/host-api.ts +3 -2
- package/apps/server/src/host-record.ts +3 -3
- package/apps/server/src/host-resolution-hooks.mjs +4 -4
- package/apps/server/src/host-version.ts +17 -17
- package/apps/server/src/host-web.ts +5 -5
- package/apps/server/src/main.ts +6 -6
- package/apps/server/src/missing-environment.ts +6 -6
- package/apps/server/src/parent-watch.ts +4 -4
- package/apps/server/src/plugin-build/build.ts +31 -31
- package/apps/server/src/plugin-build/host-api-names.ts +7 -7
- package/apps/server/src/plugin-build/plugin-description.ts +15 -15
- package/apps/server/src/plugin-build/typecheck.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/app-project.ts +19 -19
- package/apps/server/src/plugin-support/actor-programs/client-compiler.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-contracts.ts +11 -11
- package/apps/server/src/plugin-support/actor-programs/contract.ts +17 -17
- package/apps/server/src/plugin-support/actor-programs/runtime-libraries.ts +1 -1
- package/apps/server/src/plugin-support/actor-programs/workflow/index.ts +5 -5
- package/apps/server/src/plugin-support/actor-programs/workflow/prompt-reader.ts +2 -2
- package/apps/server/src/plugin-support/chat-display-policy.ts +2 -2
- package/apps/server/src/plugin-support/front-matter.ts +6 -6
- package/apps/server/src/plugin-support/http.ts +2 -2
- package/apps/server/src/plugin-support/language-server/contract.ts +8 -8
- package/apps/server/src/plugin-support/language-server/plugin.ts +2 -2
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +1 -1
- package/apps/server/src/plugin-support/language-server/tools.ts +11 -11
- package/apps/server/src/plugin-support/model-aliases.ts +30 -20
- package/apps/server/src/plugin-support/model-choice.ts +15 -15
- package/apps/server/src/plugin-support/model-completion.ts +44 -23
- package/apps/server/src/plugin-support/model-providers.ts +170 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +1 -1
- package/apps/server/src/plugin-support/native-typescript-child.ts +4 -4
- package/apps/server/src/plugin-support/native-typescript-executor.ts +12 -12
- package/apps/server/src/plugin-support/plugin-config.ts +3 -3
- package/apps/server/src/plugin-support/plugin-folder.ts +2 -2
- package/apps/server/src/plugin-support/plugins-root.ts +2 -2
- package/apps/server/src/plugin-support/process-sandbox.ts +48 -47
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +3 -3
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -10
- package/apps/server/src/plugin-support/product-relay.ts +9 -9
- package/apps/server/src/plugin-support/product-start-options.ts +4 -4
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +8 -8
- package/apps/server/src/plugin-support/run-scripts.ts +17 -17
- package/apps/server/src/plugin-support/skills.ts +18 -18
- package/apps/server/src/plugin-support/start-entries-contract.ts +17 -17
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -5
- package/apps/server/src/plugin-support/system-prompts.ts +11 -11
- package/apps/server/src/plugin-support/thinking-level.ts +2 -2
- package/apps/server/src/plugin-support/tool-availability.ts +2 -2
- package/apps/server/src/plugin-support/workspace-ownership.ts +5 -5
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +37 -37
- package/apps/server/src/plugin-support/zip.ts +7 -7
- package/apps/server/src/profile/bundle-manifest.ts +17 -17
- package/apps/server/src/profile/compose.ts +12 -7
- package/apps/server/src/profile/plugin-discovery.ts +12 -12
- package/apps/server/src/profile/provisioning.ts +5 -5
- package/apps/server/src/profile-target.ts +10 -10
- package/apps/server/src/protocol.ts +2 -2
- package/apps/server/src/provider.ts +63 -58
- package/apps/server/src/ragents/actor-chat-history.ts +8 -8
- package/apps/server/src/ragents/chat-text-positions.ts +2 -2
- package/apps/server/src/ragents/coordinator.ts +2 -2
- package/apps/server/src/ragents/engine.ts +25 -24
- package/apps/server/src/ragents/global-chat.ts +14 -8
- package/apps/server/src/ragents/host-services.ts +6 -3
- package/apps/server/src/ragents/journal-chat-events.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +2 -2
- package/apps/server/src/ragents/session.ts +49 -49
- package/apps/server/src/ragents/typescript-tools.ts +12 -12
- package/apps/server/src/ragents/workspace-runtime.ts +28 -28
- package/apps/server/src/rpc/dispatcher.ts +19 -19
- package/apps/server/src/rpc/http-transport.ts +11 -11
- package/apps/server/src/rpc/stdio-transport.ts +3 -3
- package/apps/server/src/run-preparation-input.ts +5 -5
- package/apps/server/src/run-preparation.ts +24 -24
- package/apps/server/src/run-transfer.ts +39 -39
- package/apps/server/src/server.ts +51 -49
- package/apps/server/src/settings.ts +1 -1
- package/apps/server/src/startup.ts +3 -3
- package/apps/server/src/title-compactor.ts +9 -9
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +2 -2
- package/apps/server/src/web-stylesheet.ts +2 -2
- package/apps/web/dist/assets/{highlighted-body-KPVGNVTW-xXXhTDbh.js → highlighted-body-KPVGNVTW-BfNSGxjB.js} +1 -1
- package/apps/web/dist/assets/main-D6bsKcIK.js +11 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DROEqEeg.js +608 -0
- package/apps/web/dist/assets/runPanel-Dumuuqry.js +21 -0
- package/apps/web/dist/help/guide-access.html +5 -5
- package/apps/web/dist/help/guide-access.md +2 -2
- package/apps/web/dist/help/guide-clients.html +64 -55
- package/apps/web/dist/help/guide-clients.md +62 -52
- package/apps/web/dist/help/guide-distributed.html +12 -7
- package/apps/web/dist/help/guide-distributed.md +9 -4
- package/apps/web/dist/help/guide-functions.html +3 -3
- package/apps/web/dist/help/guide-getting-started.html +24 -15
- package/apps/web/dist/help/guide-getting-started.md +22 -12
- package/apps/web/dist/help/guide-ideas.html +3 -3
- package/apps/web/dist/help/guide-plugins.html +5 -4
- package/apps/web/dist/help/guide-plugins.md +2 -1
- package/apps/web/dist/help/guide-programs.html +3 -3
- package/apps/web/dist/help/guide-runtime.html +6 -6
- package/apps/web/dist/help/guide-runtime.md +3 -3
- package/apps/web/dist/help/guide.html +3 -3
- package/apps/web/dist/help/index.html +1997 -942
- package/apps/web/dist/help/mini-app.css +30 -0
- package/apps/web/dist/help/mini-app.js +14 -14
- package/apps/web/dist/host-web.json +90 -90
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/run-panel.html +3 -3
- package/apps/web/package.json +1 -1
- package/apps/web/src/AccessContext.tsx +15 -15
- package/apps/web/src/App.tsx +13 -13
- package/apps/web/src/DiffCode.tsx +2 -2
- package/apps/web/src/HelpDialog.tsx +3 -3
- package/apps/web/src/Overview.tsx +13 -13
- package/apps/web/src/PluginActivation.ts +1 -1
- package/apps/web/src/PluginChat.tsx +15 -15
- package/apps/web/src/PluginFailureNotice.tsx +1 -1
- package/apps/web/src/PluginRegistry.tsx +44 -44
- package/apps/web/src/RunPreparationChat.tsx +11 -11
- package/apps/web/src/RunStore.ts +1 -1
- package/apps/web/src/SessionList.tsx +14 -14
- package/apps/web/src/SettingsModal.tsx +112 -112
- package/apps/web/src/StartOptions.tsx +11 -11
- package/apps/web/src/StartSelection.tsx +11 -11
- package/apps/web/src/StartTiles.tsx +8 -8
- package/apps/web/src/SurfaceShortcuts.tsx +3 -3
- package/apps/web/src/ThemeSettings.tsx +8 -8
- package/apps/web/src/TitleModelSettings.tsx +13 -13
- package/apps/web/src/WorkspacePanel.tsx +9 -9
- package/apps/web/src/access-session.ts +4 -4
- package/apps/web/src/access-token.ts +5 -5
- package/apps/web/src/actor-conversation.ts +3 -3
- package/apps/web/src/actor-programs/client-ui/DataTable.tsx +8 -8
- package/apps/web/src/actor-programs/client-ui/FilePicker.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/FlowDiagram.tsx +13 -13
- package/apps/web/src/actor-programs/client-ui/Viewers.tsx +4 -4
- package/apps/web/src/actor-programs/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/file-contracts.d.ts +4 -4
- package/apps/web/src/actor-programs/client-ui/file-selection.ts +1 -1
- package/apps/web/src/actor-programs/client-ui/viewer-contracts.d.ts +3 -3
- package/apps/web/src/api.ts +7 -7
- package/apps/web/src/chat/StoppedActorNotice.tsx +5 -5
- package/apps/web/src/chat/chat-target.ts +3 -3
- package/apps/web/src/chat/requests.ts +2 -2
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat-view-settings.tsx +5 -6
- package/apps/web/src/diff-view.css +1 -1
- package/apps/web/src/highlighting.css +1 -1
- package/apps/web/src/language-server/language-server-plugin.tsx +30 -30
- package/apps/web/src/lib/labels.ts +6 -6
- package/apps/web/src/main.tsx +4 -4
- package/apps/web/src/offered-machines.ts +2 -2
- package/apps/web/src/page-opener.tsx +1 -1
- package/apps/web/src/panel/ConnectionsPage.tsx +26 -23
- package/apps/web/src/panel/LoginForm.tsx +6 -6
- package/apps/web/src/panel/PanelDialogs.tsx +22 -22
- package/apps/web/src/panel/PanelHeader.tsx +2 -2
- package/apps/web/src/panel/PanelPage.tsx +1 -1
- package/apps/web/src/panel/RunLine.tsx +4 -4
- package/apps/web/src/panel/RunsPage.tsx +15 -15
- package/apps/web/src/panel/StartPage.tsx +29 -26
- package/apps/web/src/panel/connection-state.ts +9 -9
- package/apps/web/src/panel/contract.ts +34 -27
- package/apps/web/src/panel.tsx +1 -1
- package/apps/web/src/plugin-bootstrap.ts +5 -5
- package/apps/web/src/product/ModelControl.tsx +3 -3
- package/apps/web/src/product/ProductModelSettings.tsx +16 -16
- package/apps/web/src/product/SystemPromptControl.tsx +11 -11
- package/apps/web/src/product/model-settings.ts +2 -2
- package/apps/web/src/rpc/client.ts +16 -16
- package/apps/web/src/rpc.ts +1 -1
- package/apps/web/src/run-overview.ts +1 -1
- package/apps/web/src/run-panel/RunPanelApp.tsx +39 -39
- package/apps/web/src/run-panel/RunPanelHeader.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelMenu.tsx +6 -6
- package/apps/web/src/run-panel/RunPanelRail.tsx +4 -4
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +3 -3
- package/apps/web/src/run-panel/clipboard.ts +3 -3
- package/apps/web/src/run-panel/host-contract.ts +5 -5
- package/apps/web/src/run-panel/host.ts +15 -15
- package/apps/web/src/run-panel/input-bridge.ts +1 -1
- package/apps/web/src/run-panel/run-panel-location.ts +5 -5
- package/apps/web/src/run-panel/use-session-list.ts +1 -1
- package/apps/web/src/run-panel/workspace-state.ts +3 -3
- package/apps/web/src/run-panel.tsx +4 -4
- package/apps/web/src/run-preparation.ts +2 -2
- package/apps/web/src/run-view.ts +3 -3
- package/apps/web/src/settings-contributions.ts +32 -32
- package/apps/web/src/theme.ts +9 -9
- package/apps/web/src/title-model-settings.ts +6 -6
- package/apps/web/src/ui/ListDetail.tsx +9 -9
- package/apps/web/src/ui/dialog.tsx +2 -2
- package/apps/web/src/ui/modal-controller.ts +3 -3
- package/apps/web/src/ui/modal.tsx +2 -2
- package/apps/web/src/ui/popover.tsx +1 -1
- package/apps/web/src/ui/relative-time.ts +8 -8
- package/apps/web/src/ui/startup-notice.tsx +2 -2
- package/apps/web/src/ui/state-icon.tsx +1 -1
- package/apps/web/src/ui/state-vocabulary.ts +16 -16
- package/apps/web/src/ui/stop-button.tsx +2 -2
- package/bundles/ragents.activity/ragents-bundle.json +2 -2
- package/bundles/ragents.activity/web/classes.json +1 -1
- package/bundles/ragents.activity/web/index.js +1 -1
- package/bundles/ragents.activity/web/index.js.map +2 -2
- package/bundles/ragents.actor-programs/ragents-bundle.json +2 -2
- package/bundles/ragents.actor-programs/server/index.js +256 -228
- package/bundles/ragents.actor-programs/server/index.js.map +4 -4
- package/bundles/ragents.actor-programs/web/classes.json +1 -1
- package/bundles/ragents.actor-programs/web/index.js +1 -1
- package/bundles/ragents.actor-programs/web/index.js.map +3 -3
- package/bundles/ragents.ask/ragents-bundle.json +2 -4
- package/bundles/ragents.ask/server/chunks/{chunk-PDJO75SQ.js → chunk-YOV27MAR.js} +2 -2
- package/bundles/ragents.ask/server/chunks/chunk-YOV27MAR.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +1 -1
- package/bundles/ragents.ask/server/index.js +23 -23
- package/bundles/ragents.ask/server/index.js.map +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-WFN4374U.js → chunk-D6NNB5DS.js} +1 -1
- package/bundles/ragents.ask/web/chunks/chunk-D6NNB5DS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js → chunk-IQBHK7MV.js} +2 -2
- package/bundles/ragents.ask/web/chunks/{chunk-V7W3QDVS.js.map → chunk-IQBHK7MV.js.map} +4 -4
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-PWFIAMX4.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-QHGKEESD.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -1
- package/bundles/ragents.ask/web/exports/ask-payload.js +1 -1
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +1 -1
- package/bundles/ragents.ask/web/exports/web/api.js +1 -1
- package/bundles/ragents.ask/web/index.js +1 -1
- package/bundles/ragents.ask/web/index.js.map +4 -4
- package/bundles/ragents.browser/executor/index.mjs +35 -35
- package/bundles/ragents.browser/executor/index.mjs.map +2 -2
- package/bundles/ragents.browser/ragents-bundle.json +2 -2
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js → chunk-PYEISBNE.js} +1 -1
- package/bundles/ragents.browser/server/chunks/{chunk-CWLX4VA5.js.map → chunk-PYEISBNE.js.map} +1 -1
- package/bundles/ragents.browser/server/exports/server/contract.js +1 -1
- package/bundles/ragents.browser/server/index.js +31 -31
- package/bundles/ragents.browser/server/index.js.map +2 -2
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/bundles/ragents.documents/prompt.hbs +1 -1
- package/bundles/ragents.documents/ragents-bundle.json +2 -2
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js → chunk-KMZWOVTI.js} +3 -3
- package/bundles/ragents.documents/server/chunks/{chunk-QIECRZ7C.js.map → chunk-KMZWOVTI.js.map} +2 -2
- package/bundles/ragents.documents/server/exports/contract.js +1 -1
- package/bundles/ragents.documents/server/index.js +26 -26
- package/bundles/ragents.documents/server/index.js.map +2 -2
- package/bundles/ragents.documents/web/classes.json +1 -1
- package/bundles/ragents.documents/web/index.js +1 -1
- package/bundles/ragents.documents/web/index.js.map +3 -3
- package/bundles/ragents.lsp-fsharp/executor/index.mjs +4 -4
- package/bundles/ragents.lsp-fsharp/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-fsharp/server/index.js +5 -5
- package/bundles/ragents.lsp-fsharp/server/index.js.map +2 -2
- package/bundles/ragents.lsp-fsharp/web/index.js +1 -1
- package/bundles/ragents.lsp-fsharp/web/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/executor/index.mjs +3 -3
- package/bundles/ragents.lsp-roslyn/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-roslyn/server/index.js +17 -17
- package/bundles/ragents.lsp-roslyn/server/index.js.map +2 -2
- package/bundles/ragents.lsp-roslyn/web/index.js +1 -1
- package/bundles/ragents.lsp-roslyn/web/index.js.map +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs +2 -2
- package/bundles/ragents.lsp-typescript/executor/index.mjs.map +2 -2
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +2 -2
- package/bundles/ragents.lsp-typescript/server/index.js.map +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js +1 -1
- package/bundles/ragents.lsp-typescript/web/index.js.map +2 -2
- package/bundles/ragents.model-relay/ragents-bundle.json +7 -3
- package/bundles/ragents.model-relay/server/index.js +25 -21
- package/bundles/ragents.model-relay/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/ragents-bundle.json +2 -2
- package/bundles/ragents.orchestration/server/index.js +28 -28
- package/bundles/ragents.orchestration/server/index.js.map +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js → chunk-CFMJD5ZI.js} +2 -2
- package/bundles/ragents.orchestration/web/chunks/chunk-HOBLI364.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/{chunk-OQYCNYXN.js.map → chunk-HOBLI364.js.map} +2 -2
- package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js → chunk-UCIMT2R4.js} +2 -2
- package/bundles/ragents.orchestration/web/classes.json +1 -1
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +1 -1
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +1 -1
- package/bundles/ragents.orchestration/web/index.js +8 -8
- package/bundles/ragents.orchestration/web/index.js.map +3 -3
- package/bundles/ragents.overseer/ragents-bundle.json +2 -2
- package/bundles/ragents.overseer/server/index.js +99 -99
- package/bundles/ragents.overseer/server/index.js.map +2 -2
- package/bundles/ragents.overseer/web/classes.json +1 -1
- package/bundles/ragents.overseer/web/index.js +1 -1
- package/bundles/ragents.overseer/web/index.js.map +2 -2
- package/bundles/ragents.processes/ragents-bundle.json +2 -2
- package/bundles/ragents.processes/server/index.js +11 -11
- package/bundles/ragents.processes/server/index.js.map +2 -2
- package/bundles/ragents.processes/web/classes.json +1 -1
- package/bundles/ragents.processes/web/index.js +3 -3
- package/bundles/ragents.processes/web/index.js.map +2 -2
- package/bundles/ragents.product/ragents-bundle.json +2 -2
- package/bundles/ragents.product/server/index.js +12 -13
- package/bundles/ragents.product/server/index.js.map +2 -2
- package/bundles/ragents.product/web/classes.json +1 -1
- package/bundles/ragents.product/web/index.js +1 -1
- package/bundles/ragents.product/web/index.js.map +2 -2
- package/bundles/ragents.profile-distribution/ragents-bundle.json +2 -2
- package/bundles/ragents.profile-distribution/server/index.js +31 -31
- package/bundles/ragents.profile-distribution/server/index.js.map +2 -2
- package/bundles/ragents.reference/ragents-bundle.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/bundles/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/bundles/ragents.reference/web/classes.json +1 -1
- package/bundles/ragents.reference/web/index.js +1 -1
- package/bundles/ragents.reference/web/index.js.map +2 -2
- package/bundles/ragents.todo/ragents-bundle.json +2 -2
- package/bundles/ragents.todo/server/index.js +5 -5
- package/bundles/ragents.todo/server/index.js.map +2 -2
- package/bundles/ragents.todo/web/classes.json +1 -1
- package/bundles/ragents.todo/web/index.js +1 -1
- package/bundles/ragents.todo/web/index.js.map +2 -2
- package/bundles/ragents.transcript/ragents-bundle.json +2 -2
- package/bundles/ragents.transcript/server/index.js +11 -11
- package/bundles/ragents.transcript/server/index.js.map +2 -2
- package/bundles/ragents.watch/ragents-bundle.json +2 -2
- package/bundles/ragents.watch/server/index.js +48 -48
- package/bundles/ragents.watch/server/index.js.map +2 -2
- package/bundles/ragents.workspace/ragents-bundle.json +2 -2
- package/bundles/ragents.workspace/server/index.js +83 -81
- package/bundles/ragents.workspace/server/index.js.map +2 -2
- package/bundles/ragents.workspace/web/classes.json +1 -1
- package/bundles/ragents.workspace/web/index.js +1 -1
- package/bundles/ragents.workspace/web/index.js.map +2 -2
- package/package.json +4 -4
- package/packages/agent/dist/core/model-runtime.d.ts +7 -2
- package/packages/agent/dist/core/tools/bash.d.ts +1 -1
- package/packages/agent/dist/index.d.ts +1 -1
- package/packages/agent/dist/loop/agent-loop.d.ts +2 -2
- package/packages/agent/src/core/compaction/utils.ts +1 -1
- package/packages/agent/src/core/model-runtime.ts +45 -5
- package/packages/agent/src/core/tools/bash.ts +1 -1
- package/packages/agent/src/index.ts +1 -1
- package/packages/agent/src/loop/agent-loop.ts +2 -2
- package/packages/ai/dist/models.d.ts +1 -0
- package/packages/ai/dist/models.generated.d.ts +4544 -983
- package/packages/ai/dist/providers/openrouter.models.d.ts +4544 -983
- package/packages/ai/src/api/ai-sdk.ts +33 -7
- package/packages/ai/src/api-registry.ts +1 -1
- package/packages/ai/src/index.ts +2 -2
- package/packages/ai/src/models.generated.ts +1 -1
- package/packages/ai/src/models.ts +1 -1
- package/packages/ai/src/providers/openrouter.models.ts +3723 -550
- package/packages/ragents/src/access.ts +12 -12
- package/packages/ragents/src/agents/actor-input.ts +33 -33
- package/packages/ragents/src/agents/catalog.ts +1 -1
- package/packages/ragents/src/agents/delivery.ts +17 -17
- package/packages/ragents/src/agents/plugins.ts +1 -1
- package/packages/ragents/src/agents/scheduler.ts +7 -7
- package/packages/ragents/src/agents/schemas.ts +1 -1
- package/packages/ragents/src/agents/tool-orientation.ts +4 -4
- package/packages/ragents/src/agents/tools.ts +20 -20
- package/packages/ragents/src/agents/toolset.ts +5 -5
- package/packages/ragents/src/agents/workspaces.ts +1 -1
- package/packages/ragents/src/domain/events.ts +1 -1
- package/packages/ragents/src/domain/model.ts +5 -5
- package/packages/ragents/src/drivers/agent-runtime.ts +1 -1
- package/packages/ragents/src/drivers/agent-turn.ts +4 -4
- package/packages/ragents/src/drivers/agent.ts +2 -2
- package/packages/ragents/src/drivers/attachments.ts +4 -4
- package/packages/ragents/src/http/contracts.ts +14 -14
- package/packages/ragents/src/http/methods.ts +6 -6
- package/packages/ragents/src/index.ts +1 -0
- package/packages/ragents/src/plugin-host.ts +162 -116
- package/packages/ragents/src/plugin-types.ts +29 -10
- package/packages/ragents/src/rpc/contract.ts +5 -5
- package/packages/ragents/src/rpc/contribution.ts +2 -2
- package/packages/ragents/src/rpc/peer.ts +11 -11
- package/packages/ragents/src/rpc/protocol.ts +2 -2
- package/packages/ragents/src/runtime/decisions/turns.ts +1 -1
- package/packages/ragents/src/runtime/journal.ts +10 -10
- package/packages/ragents/src/runtime/orchestration.ts +8 -8
- package/packages/ragents/src/runtime/stop.ts +2 -2
- package/packages/ragents/src/script/mediators.ts +35 -35
- package/packages/ragents/src/typescript/async-compiler.ts +14 -14
- package/packages/ragents/src/typescript/compiler-worker.ts +2 -2
- package/packages/ragents/src/typescript/compiler.ts +7 -7
- package/packages/ragents/src/typescript/snippet.ts +5 -5
- package/packages/workspace-executor/src/bash-launch.ts +13 -13
- package/packages/workspace-executor/src/commands.ts +18 -18
- package/packages/workspace-executor/src/context.ts +15 -15
- package/packages/workspace-executor/src/contributions.ts +35 -35
- package/packages/workspace-executor/src/errors.ts +1 -1
- package/packages/workspace-executor/src/executor.ts +15 -15
- package/packages/workspace-executor/src/files.ts +30 -30
- package/packages/workspace-executor/src/language-server/contract.ts +2 -2
- package/packages/workspace-executor/src/language-server/diagnostics.ts +4 -4
- package/packages/workspace-executor/src/language-server/host.ts +35 -35
- package/packages/workspace-executor/src/language-server/json-rpc.ts +4 -4
- package/packages/workspace-executor/src/language-server/module.ts +11 -11
- package/packages/workspace-executor/src/language-server/roots.ts +3 -3
- package/packages/workspace-executor/src/language-server/session.ts +15 -15
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +2 -2
- package/packages/workspace-executor/src/managed-process.ts +35 -7
- package/packages/workspace-executor/src/module.ts +8 -8
- package/packages/workspace-executor/src/modules.ts +3 -3
- package/packages/workspace-executor/src/paths.ts +11 -11
- package/packages/workspace-executor/src/process-sandbox.ts +3 -3
- package/packages/workspace-executor/src/processes/module.ts +3 -3
- package/packages/workspace-executor/src/processes/process-table.ts +20 -20
- package/packages/workspace-executor/src/processes/scanner.ts +3 -3
- package/packages/workspace-executor/src/processes/snapshot.ts +2 -2
- package/packages/workspace-executor/src/processes/terminator.ts +13 -13
- package/packages/workspace-executor/src/run-folders.ts +3 -3
- package/packages/workspace-executor/src/safe-environment.ts +4 -4
- package/packages/workspace-executor/src/sandbox-tools.ts +37 -31
- package/packages/workspace-executor/src/session-ident.ts +2 -2
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/packages/workspace-executor/src/tools.ts +5 -5
- package/plugins/ragents.activity/web/ActivityHeader.tsx +3 -3
- package/plugins/ragents.activity/web/activity.ts +2 -2
- package/plugins/ragents.actor-programs/server/access-projections.ts +31 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +2 -2
- package/plugins/ragents.actor-programs/server/capability-resolver.ts +3 -3
- package/plugins/ragents.actor-programs/server/controls-template.ts +46 -46
- package/plugins/ragents.actor-programs/server/controls-tool.ts +4 -4
- package/plugins/ragents.actor-programs/server/index.ts +2 -0
- package/plugins/ragents.actor-programs/server/limits.ts +3 -3
- package/plugins/ragents.actor-programs/server/methods.ts +1 -1
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +8 -8
- package/plugins/ragents.actor-programs/server/routes.ts +8 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +90 -90
- package/plugins/ragents.actor-programs/server/templates.ts +59 -59
- package/plugins/ragents.actor-programs/server/test-report.ts +5 -5
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +17 -17
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +26 -26
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +2 -2
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +16 -16
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +5 -5
- package/plugins/ragents.actor-programs/web/api.ts +36 -36
- package/plugins/ragents.actor-programs/web/bridge.ts +8 -8
- package/plugins/ragents.actor-programs/web/chat-state.ts +4 -4
- package/plugins/ragents.actor-programs/web/context.ts +1 -1
- package/plugins/ragents.actor-programs/web/function-input.ts +6 -6
- package/plugins/ragents.actor-programs/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/web/program-state.ts +4 -4
- package/plugins/ragents.ask/ask-payload.ts +1 -1
- package/plugins/ragents.ask/contract.ts +5 -5
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +9 -9
- package/plugins/ragents.ask/server/ask-tool.ts +10 -10
- package/plugins/ragents.ask/server/contract.ts +5 -5
- package/plugins/ragents.ask/web/AskActionView.tsx +1 -1
- package/plugins/ragents.ask/web/QuestionCard.tsx +22 -22
- package/plugins/ragents.ask/web/index.tsx +2 -8
- package/plugins/ragents.browser/executor/contract.ts +6 -6
- package/plugins/ragents.browser/executor/index.ts +1 -1
- package/plugins/ragents.browser/executor/module.ts +6 -6
- package/plugins/ragents.browser/executor/pages.ts +32 -32
- package/plugins/ragents.browser/executor/playwright.ts +8 -8
- package/plugins/ragents.browser/provision.ts +7 -7
- package/plugins/ragents.browser/server/browser.ts +14 -14
- package/plugins/ragents.browser/server/contract.ts +1 -1
- package/plugins/ragents.browser/server/index.ts +1 -1
- package/plugins/ragents.browser/server/tools.ts +14 -14
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +30 -30
- package/plugins/ragents.documents/contract.ts +2 -2
- package/plugins/ragents.documents/prompt.hbs +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +12 -12
- package/plugins/ragents.documents/server/files-route.ts +6 -6
- package/plugins/ragents.documents/server/show-document-tool.ts +26 -26
- package/plugins/ragents.documents/server/store.ts +1 -1
- package/plugins/ragents.documents/web/DocumentViewer.tsx +37 -37
- package/plugins/ragents.documents/web/index.tsx +11 -11
- package/plugins/ragents.lsp-fsharp/executor.ts +7 -7
- package/plugins/ragents.lsp-fsharp/provision.ts +7 -7
- package/plugins/ragents.lsp-roslyn/executor.ts +5 -5
- package/plugins/ragents.lsp-roslyn/provision.ts +4 -4
- package/plugins/ragents.lsp-roslyn/server/index.ts +5 -5
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +13 -13
- package/plugins/ragents.lsp-typescript/executor.ts +3 -3
- package/plugins/ragents.model-relay/server/config.ts +6 -2
- package/plugins/ragents.model-relay/server/index.ts +2 -2
- package/plugins/ragents.model-relay/server/relay.ts +23 -22
- package/plugins/ragents.orchestration/contract.ts +8 -8
- package/plugins/ragents.orchestration/server/index.ts +4 -4
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +3 -3
- package/plugins/ragents.orchestration/server/surface-tool.ts +5 -5
- package/plugins/ragents.orchestration/tiled-layout.ts +11 -11
- package/plugins/ragents.orchestration/web/ActorChat.tsx +2 -2
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +4 -4
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +1 -1
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +6 -6
- package/plugins/ragents.orchestration/web/ActorSurfaceControls.tsx +15 -15
- package/plugins/ragents.orchestration/web/ActorTile.tsx +1 -1
- package/plugins/ragents.orchestration/web/Center.tsx +5 -5
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +2 -2
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +15 -15
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +103 -103
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +11 -11
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +2 -2
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/TiledSurface.tsx +9 -9
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +5 -5
- package/plugins/ragents.orchestration/web/constants.ts +2 -2
- package/plugins/ragents.orchestration/web/executions.ts +6 -6
- package/plugins/ragents.orchestration/web/format.ts +1 -1
- package/plugins/ragents.orchestration/web/index.tsx +2 -2
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +8 -8
- package/plugins/ragents.orchestration/web/run-panel/RunPanel.tsx +29 -28
- package/plugins/ragents.orchestration/web/run-panel/RunPanelSettings.tsx +7 -7
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +13 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-actors.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +3 -3
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +7 -7
- package/plugins/ragents.orchestration/web/run-panel/sheet-status.ts +10 -10
- package/plugins/ragents.orchestration/web/surface-startup.ts +8 -8
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +1 -1
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +1 -1
- package/plugins/ragents.overseer/contract.ts +20 -20
- package/plugins/ragents.overseer/server/api.ts +8 -8
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +10 -10
- package/plugins/ragents.overseer/server/coordinator.ts +4 -4
- package/plugins/ragents.overseer/server/index.ts +24 -24
- package/plugins/ragents.overseer/server/orientation.ts +8 -8
- package/plugins/ragents.overseer/server/quick-answer.ts +9 -9
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +16 -16
- package/plugins/ragents.overseer/web/ModelSettings.tsx +9 -9
- package/plugins/ragents.overseer/web/index.tsx +20 -20
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/server/methods.ts +4 -4
- package/plugins/ragents.processes/server/observer.ts +8 -8
- package/plugins/ragents.processes/server/run-processes.ts +2 -2
- package/plugins/ragents.processes/web/ProcessHeader.tsx +10 -10
- package/plugins/ragents.processes/web/processes.ts +10 -10
- package/plugins/ragents.product/server/config.ts +1 -1
- package/plugins/ragents.product/server/index.ts +4 -4
- package/plugins/ragents.product/server/runtime.ts +9 -10
- package/plugins/ragents.product/web/index.tsx +1 -1
- package/plugins/ragents.profile-distribution/contract.ts +10 -10
- package/plugins/ragents.profile-distribution/server/archive.ts +20 -20
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +4 -4
- package/plugins/ragents.reference/examples.ts +27 -27
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +19 -19
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +49 -49
- package/plugins/ragents.reference/run-scripts/balcony-wizard/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +9 -9
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/conversation-circle/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +13 -13
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +8 -8
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +16 -16
- package/plugins/ragents.reference/run-scripts/learning-afternoon/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +3 -3
- package/plugins/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/run-scripts/moderated-round/RUN.md +7 -7
- package/plugins/ragents.reference/run-scripts/moderated-round/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +9 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/RUN.md +12 -12
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/shared-actor-list/package.json +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +11 -11
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +13 -13
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +18 -18
- package/plugins/ragents.reference/run-scripts/word-game/package.json +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/contract.ts +2 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +16 -16
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +39 -39
- package/plugins/ragents.reference/skills/100-shared-actor-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/110-all-card-slots/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/150-editorial-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/170-photo-collection/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/180-decision-workbench/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/190-review-queue/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/20-circle-of-four/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/210-moderator-handover/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/220-actor-approval-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/230-shared-state-views/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/35-actor-input-fifo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/40-subscription-matrix/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/50-subscription-removal/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/70-headless-counter/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/75-lsp-demo/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/80-actor-text-analysis/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +5 -5
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +24 -24
- package/plugins/ragents.reference/skills/learning-sprint/SKILL.md +24 -24
- package/plugins/ragents.reference/walkthroughs.ts +128 -128
- package/plugins/ragents.reference/web/StartGuides.tsx +23 -23
- package/plugins/ragents.todo/server/todo-tool.ts +6 -6
- package/plugins/ragents.todo/web/TodoSection.tsx +1 -1
- package/plugins/ragents.transcript/server/transcript.ts +11 -11
- package/plugins/ragents.watch/server/condition.ts +4 -4
- package/plugins/ragents.watch/server/functions.ts +27 -27
- package/plugins/ragents.watch/server/observation.ts +2 -2
- package/plugins/ragents.watch/server/service.ts +14 -14
- package/plugins/ragents.workspace/client/transport.ts +1 -1
- package/plugins/ragents.workspace/client/workspace-client.ts +62 -49
- package/plugins/ragents.workspace/contract.ts +46 -46
- package/plugins/ragents.workspace/server/binding.ts +20 -20
- package/plugins/ragents.workspace/server/browse-route.ts +8 -8
- package/plugins/ragents.workspace/server/clients.ts +42 -42
- package/plugins/ragents.workspace/server/config.ts +8 -5
- package/plugins/ragents.workspace/server/index.ts +5 -4
- package/plugins/ragents.workspace/server/runtime.ts +26 -26
- package/plugins/ragents.workspace/server/shell-platform.ts +1 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +10 -10
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +24 -24
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +1 -1
- package/ragents.config.developer.ts +3 -3
- package/ragents.config.showcase.ts +2 -2
- package/scripts/agent/agent-cli.ts +96 -96
- package/scripts/agent/journal.ts +5 -5
- package/scripts/agent/turn-control.ts +4 -4
- package/scripts/package/build-package.ts +29 -29
- package/scripts/package/host-links.mjs +3 -3
- package/scripts/package/publish-package.ts +29 -29
- package/scripts/package/ragents.mjs +19 -19
- package/scripts/plugin/build-builtin-plugins.ts +5 -5
- package/scripts/plugin/plugin-cli.ts +14 -14
- package/scripts/provision/run-provision.ts +14 -15
- package/scripts/remote/connect.ts +46 -46
- package/scripts/remote/start.ts +18 -18
- package/scripts/workspace-client/run-workspace-client.ts +23 -23
- package/apps/web/dist/assets/main-C7JeZFjs.js +0 -6
- package/apps/web/dist/assets/mermaid-HWGCJPDP-DfsU5ofC.js +0 -478
- package/apps/web/dist/assets/runPanel-ZT6TPDLM.js +0 -21
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +0 -2
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +0 -7
- package/bundles/ragents.ask/web/chunks/chunk-WFN4374U.js.map +0 -7
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +0 -2
- package/plugins/ragents.ask/web/QuestionSection.tsx +0 -48
- /package/bundles/ragents.orchestration/web/chunks/{chunk-OSKPH6SZ.js.map → chunk-CFMJD5ZI.js.map} +0 -0
- /package/bundles/ragents.orchestration/web/chunks/{chunk-ODMMQGX2.js.map → chunk-UCIMT2R4.js.map} +0 -0
|
@@ -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
|
}),
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { aliasedModel, compactionProblem, type ModelAlias as RuntimeModelAlias } from "@ragents/agent";
|
|
1
|
+
import { aliasedModel, compactionProblem, thinkingLevelsProblem, type ModelAlias as RuntimeModelAlias } from "@ragents/agent";
|
|
2
2
|
import { getSupportedThinkingLevels, type Api, type Model } from "@ragents/ai";
|
|
3
3
|
import { getBuiltinModels, type BuiltinProvider } from "@ragents/ai/providers/all";
|
|
4
4
|
import { isThinkingLevel, type ThinkingLevel } from "@ragents/engine";
|
|
5
|
+
import { configuredModelProviders } from "./model-providers.js";
|
|
5
6
|
import { declaredEnvironment } from "./plugin-config.js";
|
|
6
7
|
|
|
7
|
-
/**
|
|
8
|
+
/** An alias of the profile with target and compaction values and optionally the thinking level that applies as long as nobody chooses another one. */
|
|
8
9
|
export interface ModelAlias extends RuntimeModelAlias {
|
|
9
10
|
readonly thinking?: ThinkingLevel;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
|
-
/**
|
|
13
|
+
/** The provider under which the profile's aliases are listed; it is not a real provider and appears in no display. */
|
|
13
14
|
export const ALIAS_PROVIDER = "alias";
|
|
14
15
|
|
|
15
16
|
export const modelAliasEnvDescriptors = [
|
|
@@ -17,12 +18,12 @@ export const modelAliasEnvDescriptors = [
|
|
|
17
18
|
] as const;
|
|
18
19
|
|
|
19
20
|
const ALIAS = /^[a-z0-9][a-z0-9._-]{0,63}$/;
|
|
20
|
-
const ENTRY_KEYS: readonly string[] = ["alias", "model", "thinking", "compaction"];
|
|
21
|
+
const ENTRY_KEYS: readonly string[] = ["alias", "model", "thinking", "thinkingLevels", "compaction"];
|
|
21
22
|
|
|
22
23
|
const aliasOf = (value: unknown, index: number): ModelAlias => {
|
|
23
24
|
const location = `MODEL_ALIASES[${index}]`;
|
|
24
25
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
25
|
-
throw new Error(`${location} must be an object with alias, model, compaction and optionally thinking`);
|
|
26
|
+
throw new Error(`${location} must be an object with alias, model, compaction and optionally thinking and thinkingLevels`);
|
|
26
27
|
}
|
|
27
28
|
const entry = value as Record<string, unknown>;
|
|
28
29
|
const unknown = Object.keys(entry).find((key) => !ENTRY_KEYS.includes(key));
|
|
@@ -36,18 +37,19 @@ const aliasOf = (value: unknown, index: number): ModelAlias => {
|
|
|
36
37
|
if (entry.thinking !== undefined && !isThinkingLevel(entry.thinking)) {
|
|
37
38
|
throw new Error(`${location}.thinking of ${entry.alias} names the unknown thinking level "${String(entry.thinking)}"`);
|
|
38
39
|
}
|
|
39
|
-
const problem = compactionProblem(entry.compaction);
|
|
40
|
+
const problem = thinkingLevelsProblem(entry.thinkingLevels) ?? compactionProblem(entry.compaction);
|
|
40
41
|
if (problem) throw new Error(`${location}, ${entry.alias}: ${problem}`);
|
|
41
42
|
return {
|
|
42
43
|
alias: entry.alias,
|
|
43
44
|
upstream: target.slice(0, slash),
|
|
44
45
|
model: target.slice(slash + 1),
|
|
45
46
|
...(entry.thinking === undefined ? {} : { thinking: entry.thinking }),
|
|
47
|
+
...(entry.thinkingLevels === undefined ? {} : { thinkingLevels: entry.thinkingLevels as ModelAlias["thinkingLevels"] }),
|
|
46
48
|
compaction: entry.compaction as ModelAlias["compaction"],
|
|
47
49
|
};
|
|
48
50
|
};
|
|
49
51
|
|
|
50
|
-
/** MODEL_ALIASES:
|
|
52
|
+
/** MODEL_ALIASES: a list of { alias, model: "provider/model", thinking?, thinkingLevels?, compaction }; the alias is the only name that the UI, the journal and relay clients see. */
|
|
51
53
|
export const parseModelAliases = (entries: unknown): readonly ModelAlias[] => {
|
|
52
54
|
if (!Array.isArray(entries)) throw new Error("MODEL_ALIASES must be a list of aliases");
|
|
53
55
|
const aliases = entries.map(aliasOf);
|
|
@@ -58,7 +60,7 @@ export const parseModelAliases = (entries: unknown): readonly ModelAlias[] => {
|
|
|
58
60
|
|
|
59
61
|
const env = declaredEnvironment(modelAliasEnvDescriptors);
|
|
60
62
|
|
|
61
|
-
/**
|
|
63
|
+
/** The profile's aliases; the environment holds MODEL_ALIASES as JSON of the list from the profile file. */
|
|
62
64
|
export const configuredModelAliases = (): readonly ModelAlias[] => {
|
|
63
65
|
const value = env.optional("MODEL_ALIASES");
|
|
64
66
|
if (value === undefined || value === "") return [];
|
|
@@ -71,34 +73,42 @@ export const configuredModelAliases = (): readonly ModelAlias[] => {
|
|
|
71
73
|
return parseModelAliases(parsed);
|
|
72
74
|
};
|
|
73
75
|
|
|
74
|
-
/**
|
|
76
|
+
/** The model the alias offers over its target, checked against the target's thinking levels and limits; the default thinking level must be an offered level. */
|
|
77
|
+
export const validatedAliasModel = (entry: ModelAlias, target: Model<Api>): Model<Api> => {
|
|
78
|
+
const problem = thinkingLevelsProblem(entry.thinkingLevels, target) ?? compactionProblem(entry.compaction, target);
|
|
79
|
+
if (problem) throw new Error(`MODEL_ALIASES: ${entry.alias} on ${entry.upstream}/${entry.model}: ${problem}`);
|
|
80
|
+
const offered = aliasedModel(ALIAS_PROVIDER, entry, target);
|
|
81
|
+
const levels = getSupportedThinkingLevels(offered);
|
|
82
|
+
if (entry.thinking !== undefined && !levels.includes(entry.thinking)) {
|
|
83
|
+
throw new Error(`MODEL_ALIASES: the thinking level ${entry.thinking} does not exist for ${entry.alias} (valid: ${levels.join(", ")})`);
|
|
84
|
+
}
|
|
85
|
+
return offered;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/** The catalog of the aliases from the catalogs of their providers (MODEL_PROVIDERS, otherwise built in), as the model runtime offers them. */
|
|
75
89
|
export const aliasCatalog = (aliases: readonly ModelAlias[] = configuredModelAliases()): readonly Model<Api>[] => {
|
|
76
90
|
if (aliases.length === 0) throw new Error(`The provider ${ALIAS_PROVIDER} needs MODEL_ALIASES in the host section`);
|
|
91
|
+
const providers = configuredModelProviders();
|
|
77
92
|
return aliases.map((entry) => {
|
|
78
|
-
const
|
|
93
|
+
const catalog = providers.find((provider) => provider.id === entry.upstream)?.models ?? getBuiltinModels(entry.upstream as BuiltinProvider);
|
|
94
|
+
const target = catalog.find((model) => model.id === entry.model);
|
|
79
95
|
if (!target) throw new Error(`MODEL_ALIASES: the model ${entry.model} behind ${entry.alias} is missing from the catalog of ${entry.upstream}`);
|
|
80
|
-
|
|
81
|
-
if (entry.thinking !== undefined && !supported.includes(entry.thinking)) {
|
|
82
|
-
throw new Error(`MODEL_ALIASES: the thinking level ${entry.thinking} does not exist for ${entry.alias} (valid: ${supported.join(", ")})`);
|
|
83
|
-
}
|
|
84
|
-
const problem = compactionProblem(entry.compaction, target);
|
|
85
|
-
if (problem) throw new Error(`MODEL_ALIASES: ${entry.alias} on ${entry.upstream}/${entry.model}: ${problem}`);
|
|
86
|
-
return aliasedModel(ALIAS_PROVIDER, entry, target);
|
|
96
|
+
return validatedAliasModel(entry, target);
|
|
87
97
|
});
|
|
88
98
|
};
|
|
89
99
|
|
|
90
|
-
/**
|
|
100
|
+
/** The profile's aliases, checked against the catalogs of their targets including thinking level and compaction values. */
|
|
91
101
|
export const validatedModelAliases = (): readonly ModelAlias[] => {
|
|
92
102
|
const aliases = configuredModelAliases();
|
|
93
103
|
if (aliases.length > 0) aliasCatalog(aliases);
|
|
94
104
|
return aliases;
|
|
95
105
|
};
|
|
96
106
|
|
|
97
|
-
/**
|
|
107
|
+
/** The thinking level the alias brings along; other providers and aliases without one have none. */
|
|
98
108
|
export const modelDefaultThinking = (provider: string, model: string): ThinkingLevel | undefined =>
|
|
99
109
|
provider === ALIAS_PROVIDER ? configuredModelAliases().find((entry) => entry.alias === model)?.thinking : undefined;
|
|
100
110
|
|
|
101
|
-
/**
|
|
111
|
+
/** The provider as a display names it: none for aliases. */
|
|
102
112
|
export const displayProvider = (provider: string): string => provider === ALIAS_PROVIDER ? "" : provider;
|
|
103
113
|
|
|
104
114
|
export const modelLabel = (provider: string, model: string): string => {
|