@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
|
@@ -10,18 +10,18 @@ const RUN_FIELDS = ["title", "description", "order", "guide", "tags", "coordinat
|
|
|
10
10
|
|
|
11
11
|
const requiredFile = (directory: string, name: string): string => {
|
|
12
12
|
const file = path.join(directory, name);
|
|
13
|
-
if (!statSync(file, { throwIfNoEntry: false })?.isFile()) throw new Error(`
|
|
13
|
+
if (!statSync(file, { throwIfNoEntry: false })?.isFile()) throw new Error(`The run script ${directory} is missing the file ${name}`);
|
|
14
14
|
return file;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
/**
|
|
17
|
+
/** The header line fixed-start-options is a JSON object on one line: start option id to fixed value. */
|
|
18
18
|
const fixedStartOptionsOf = (file: string, value: string | undefined): Readonly<Record<string, JsonValue>> | undefined => {
|
|
19
19
|
if (value === undefined) return undefined;
|
|
20
20
|
let parsed: unknown;
|
|
21
21
|
try { parsed = JSON.parse(value); }
|
|
22
|
-
catch (error) { throw new Error(`${file}: fixed-start-options
|
|
22
|
+
catch (error) { throw new Error(`${file}: fixed-start-options is not JSON (${error instanceof Error ? error.message : String(error)})`); }
|
|
23
23
|
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
24
|
-
throw new Error(`${file}: fixed-start-options
|
|
24
|
+
throw new Error(`${file}: fixed-start-options must be a JSON object of start option id and value`);
|
|
25
25
|
}
|
|
26
26
|
return parsed as Record<string, JsonValue>;
|
|
27
27
|
};
|
|
@@ -34,7 +34,7 @@ const packageFiles = (directory: string, relative = ""): ActorProgramFile[] =>
|
|
|
34
34
|
if (!relative && ["actors", "RUN.md"].includes(entry.name)) return [];
|
|
35
35
|
const filePath = path.posix.join(relative, entry.name);
|
|
36
36
|
if (entry.isDirectory()) return packageFiles(directory, filePath);
|
|
37
|
-
if (!entry.isFile()) throw new Error(`${directory}: ${filePath}
|
|
37
|
+
if (!entry.isFile()) throw new Error(`${directory}: ${filePath} is not a regular package file`);
|
|
38
38
|
return [{path: filePath, content: readFileSync(path.join(directory, filePath), "utf8")}];
|
|
39
39
|
});
|
|
40
40
|
|
|
@@ -45,29 +45,29 @@ const filesOf = (directory: string): ActorProgramFile[] => {
|
|
|
45
45
|
|
|
46
46
|
const runScriptFrom = (directory: string, name: string, id: string): ScriptStartEntry => {
|
|
47
47
|
if (!PACKAGE_NAME.test(name))
|
|
48
|
-
throw new Error(`${directory}:
|
|
48
|
+
throw new Error(`${directory}: the folder name ${name} is not a handle (lowercase letters, digits, hyphen)`);
|
|
49
49
|
const runFile = requiredFile(directory, "RUN.md");
|
|
50
|
-
const {fields} = frontMatterOf(runFile, readFileSync(runFile, "utf8"), "title
|
|
50
|
+
const {fields} = frontMatterOf(runFile, readFileSync(runFile, "utf8"), "title and description");
|
|
51
51
|
const unknown = [...fields.keys()].filter((key) => !RUN_FIELDS.includes(key));
|
|
52
|
-
if (unknown.length > 0) throw new Error(`${runFile}:
|
|
52
|
+
if (unknown.length > 0) throw new Error(`${runFile}: unknown header lines ${unknown.join(", ")}`);
|
|
53
53
|
const title = fields.get("title");
|
|
54
54
|
const description = fields.get("description");
|
|
55
|
-
if (!title) throw new Error(`${runFile}: title
|
|
56
|
-
if (!description) throw new Error(`${runFile}: description
|
|
55
|
+
if (!title) throw new Error(`${runFile}: title is missing`);
|
|
56
|
+
if (!description) throw new Error(`${runFile}: description is missing`);
|
|
57
57
|
const order = numberOf(runFile, "order", fields.get("order"));
|
|
58
58
|
const guide = fields.get("guide");
|
|
59
59
|
const tags = tagsOf(runFile, fields.get("tags"));
|
|
60
60
|
const category = fields.get("category");
|
|
61
|
-
if (category !== undefined && !category.trim()) throw new Error(`${runFile}: category
|
|
61
|
+
if (category !== undefined && !category.trim()) throw new Error(`${runFile}: category is empty`);
|
|
62
62
|
const fixedStartOptions = fixedStartOptionsOf(runFile, fields.get("fixed-start-options"));
|
|
63
63
|
const programsDirectory = path.join(directory, "actors");
|
|
64
64
|
const programsStats = statSync(programsDirectory, {throwIfNoEntry: false});
|
|
65
|
-
if (programsStats && !programsStats.isDirectory()) throw new Error(`${programsDirectory}
|
|
65
|
+
if (programsStats && !programsStats.isDirectory()) throw new Error(`${programsDirectory} must be a directory`);
|
|
66
66
|
const programs = programsStats ? readdirSync(programsDirectory, {withFileTypes: true})
|
|
67
67
|
.sort((left, right) => left.name.localeCompare(right.name))
|
|
68
68
|
.map((entry) => {
|
|
69
69
|
if (!entry.isDirectory() || !PACKAGE_NAME.test(entry.name))
|
|
70
|
-
throw new Error(`${programsDirectory}: ${entry.name}
|
|
70
|
+
throw new Error(`${programsDirectory}: ${entry.name} is not an actor program folder`);
|
|
71
71
|
return {name: entry.name, files: filesOf(path.join(programsDirectory, entry.name))};
|
|
72
72
|
}) : [];
|
|
73
73
|
return {
|
|
@@ -90,16 +90,16 @@ export const runScriptsFromDirectory = (directory: string, idPrefix: string): re
|
|
|
90
90
|
const resolved = path.resolve(directory);
|
|
91
91
|
let entries;
|
|
92
92
|
try { entries = readdirSync(resolved, {withFileTypes: true}); }
|
|
93
|
-
catch (error) { throw new Error(`
|
|
93
|
+
catch (error) { throw new Error(`The run script directory ${resolved} is not readable (${error instanceof Error ? error.message : String(error)})`); }
|
|
94
94
|
const packages = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort();
|
|
95
95
|
const stray = entries.filter((entry) => !entry.isDirectory()).map((entry) => entry.name);
|
|
96
|
-
if (stray.length > 0) throw new Error(`${resolved}
|
|
97
|
-
if (packages.length === 0) throw new Error(`${resolved}
|
|
96
|
+
if (stray.length > 0) throw new Error(`${resolved} contains files instead of run script folders: ${stray.join(", ")}`);
|
|
97
|
+
if (packages.length === 0) throw new Error(`${resolved} contains no run script folder`);
|
|
98
98
|
return packages.map((name) => runScriptFrom(path.join(resolved, name), name, `${idPrefix}.${name}`));
|
|
99
99
|
};
|
|
100
100
|
|
|
101
101
|
export const runScriptFromDirectory = (directory: string): ScriptStartEntry => {
|
|
102
|
-
if (!path.isAbsolute(directory)) throw new Error("
|
|
102
|
+
if (!path.isAbsolute(directory)) throw new Error("The run script package needs an absolute server file path");
|
|
103
103
|
const resolved = path.resolve(directory);
|
|
104
104
|
return runScriptFrom(resolved, path.basename(resolved), `local.${path.basename(resolved)}`);
|
|
105
105
|
};
|
|
@@ -27,31 +27,31 @@ type SkillEnvironment = DeclaredEnvironment<(typeof skillEnvDescriptors)[number]
|
|
|
27
27
|
/** Reads and checks the SKILL.md of a skill folder; the one parser for templates and the skills of agents. */
|
|
28
28
|
const readSkill = (directory: string): { skill: Skill; start: (idPrefix: string) => SkillStartEntry | undefined } => {
|
|
29
29
|
const file = path.join(directory, "SKILL.md");
|
|
30
|
-
if (!statSync(file, { throwIfNoEntry: false })?.isFile()) throw new Error(`
|
|
30
|
+
if (!statSync(file, { throwIfNoEntry: false })?.isFile()) throw new Error(`The skill ${directory} is missing its SKILL.md`);
|
|
31
31
|
const raw = readFileSync(file, "utf8");
|
|
32
|
-
if (!FRONT_MATTER.test(raw)) throw new Error(`${file}:
|
|
32
|
+
if (!FRONT_MATTER.test(raw)) throw new Error(`${file}: the --- header with name and description is missing`);
|
|
33
33
|
const { frontmatter, body } = parseFrontmatter(raw);
|
|
34
|
-
if (!frontmatter || typeof frontmatter !== "object" || Array.isArray(frontmatter)) throw new Error(`${file}:
|
|
34
|
+
if (!frontmatter || typeof frontmatter !== "object" || Array.isArray(frontmatter)) throw new Error(`${file}: header must be an object`);
|
|
35
35
|
const metadata = ["license", "compatibility", "metadata", "allowed-tools"];
|
|
36
36
|
const fields = new Map(Object.entries(frontmatter).filter(([key]) => !metadata.includes(key)).map(([key, value]) => {
|
|
37
37
|
const flagField = ["start", "disable-model-invocation", "user-invokable"].includes(key);
|
|
38
|
-
if (flagField && typeof value !== "boolean") throw new Error(`${file}: ${key}
|
|
38
|
+
if (flagField && typeof value !== "boolean") throw new Error(`${file}: ${key} must be true or false`);
|
|
39
39
|
if (value === null) return [key, ""];
|
|
40
40
|
if (typeof value !== "string" && !(flagField && typeof value === "boolean") && !(key === "order" && typeof value === "number")) {
|
|
41
|
-
throw new Error(`${file}: ${key}
|
|
41
|
+
throw new Error(`${file}: ${key} has an invalid value`);
|
|
42
42
|
}
|
|
43
43
|
return [key, String(value)];
|
|
44
44
|
}));
|
|
45
45
|
const allowed = ["name", "description", "start", "title", "category", "order", "tags", "guide", "prompt", "disable-model-invocation", "user-invokable"];
|
|
46
46
|
const unknown = [...fields.keys()].filter((key) => !allowed.includes(key));
|
|
47
|
-
if (unknown.length > 0) throw new Error(`${file}:
|
|
47
|
+
if (unknown.length > 0) throw new Error(`${file}: unknown header lines ${unknown.join(", ")}`);
|
|
48
48
|
const name = fields.get("name");
|
|
49
|
-
if (!name) throw new Error(`${file}: name
|
|
50
|
-
if (name.length > 64 || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name)) throw new Error(`${file}: name
|
|
51
|
-
if (name !== path.basename(directory)) throw new Error(`${file}: name
|
|
49
|
+
if (!name) throw new Error(`${file}: name is missing`);
|
|
50
|
+
if (name.length > 64 || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name)) throw new Error(`${file}: name is not a valid skill name`);
|
|
51
|
+
if (name !== path.basename(directory)) throw new Error(`${file}: name must match the skill folder`);
|
|
52
52
|
const description = fields.get("description");
|
|
53
|
-
if (!description) throw new Error(`${file}: description
|
|
54
|
-
if (!body.trim()) throw new Error(`${file}:
|
|
53
|
+
if (!description) throw new Error(`${file}: description is missing`);
|
|
54
|
+
if (!body.trim()) throw new Error(`${file}: skill instructions are empty`);
|
|
55
55
|
const disableModelInvocation = flag(file, "disable-model-invocation", fields.get("disable-model-invocation"));
|
|
56
56
|
flag(file, "user-invokable", fields.get("user-invokable"));
|
|
57
57
|
const order = numberOf(file, "order", fields.get("order"));
|
|
@@ -61,13 +61,13 @@ const readSkill = (directory: string): { skill: Skill; start: (idPrefix: string)
|
|
|
61
61
|
};
|
|
62
62
|
if (!flag(file, "start", fields.get("start"))) return { skill, start: () => undefined };
|
|
63
63
|
const title = fields.get("title");
|
|
64
|
-
if (!title) throw new Error(`${file}: title
|
|
64
|
+
if (!title) throw new Error(`${file}: title is missing`);
|
|
65
65
|
const category = fields.get("category");
|
|
66
|
-
if (!category) throw new Error(`${file}: category
|
|
66
|
+
if (!category) throw new Error(`${file}: category is missing`);
|
|
67
67
|
const prompt = fields.get("prompt") ?? body.trim();
|
|
68
|
-
if (!prompt.trim()) throw new Error(`${file}: prompt
|
|
68
|
+
if (!prompt.trim()) throw new Error(`${file}: prompt is empty`);
|
|
69
69
|
const guide = fields.get("guide");
|
|
70
|
-
if (guide !== undefined && !guide) throw new Error(`${file}: guide
|
|
70
|
+
if (guide !== undefined && !guide) throw new Error(`${file}: guide is empty`);
|
|
71
71
|
return {
|
|
72
72
|
skill,
|
|
73
73
|
start: (idPrefix) => ({
|
|
@@ -94,12 +94,12 @@ export const skillsFromDirectory = (directory: string, idPrefix: string): Folder
|
|
|
94
94
|
try {
|
|
95
95
|
entries = readdirSync(resolved, { withFileTypes: true });
|
|
96
96
|
} catch (error) {
|
|
97
|
-
throw new Error(`
|
|
97
|
+
throw new Error(`The skill directory ${resolved} is not readable (${error instanceof Error ? error.message : String(error)})`);
|
|
98
98
|
}
|
|
99
99
|
const stray = entries.filter((entry) => !entry.isDirectory()).map((entry) => entry.name);
|
|
100
|
-
if (stray.length > 0) throw new Error(`${resolved}
|
|
100
|
+
if (stray.length > 0) throw new Error(`${resolved} contains files instead of skill folders: ${stray.join(", ")}`);
|
|
101
101
|
const paths = entries.map((entry) => path.join(resolved, entry.name)).sort();
|
|
102
|
-
if (paths.length === 0) throw new Error(`${resolved}
|
|
102
|
+
if (paths.length === 0) throw new Error(`${resolved} contains no skill folder`);
|
|
103
103
|
const startEntries = paths.flatMap((skillPath) => {
|
|
104
104
|
const entry = readSkill(skillPath).start(idPrefix);
|
|
105
105
|
return entry ? [entry] : [];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type StartEntryAction = "skill" | "script";
|
|
2
2
|
|
|
3
|
-
/**
|
|
3
|
+
/** The same JSON shape as in the core; the contract stays free of imports. */
|
|
4
4
|
export type JsonValue = null | string | number | boolean | JsonValue[] | { [key: string]: JsonValue | undefined };
|
|
5
5
|
|
|
6
6
|
export interface StartEntryBase {
|
|
@@ -11,7 +11,7 @@ export interface StartEntryBase {
|
|
|
11
11
|
order?: number;
|
|
12
12
|
guide?: string;
|
|
13
13
|
tags?: readonly string[];
|
|
14
|
-
/**
|
|
14
|
+
/** Start options the template fixes: a run started from it runs with exactly these values. */
|
|
15
15
|
fixedStartOptions?: Readonly<Record<string, JsonValue>>;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -31,22 +31,22 @@ const text = (value: unknown): value is string => typeof value === "string" && v
|
|
|
31
31
|
|
|
32
32
|
const BASE_FIELDS = ["id", "owner", "title", "description", "order", "guide", "tags", "fixedStartOptions", "action"];
|
|
33
33
|
|
|
34
|
-
const invalid = (detail: string): Error => new Error(`
|
|
34
|
+
const invalid = (detail: string): Error => new Error(`The plugin configuration contains an invalid template: ${detail}`);
|
|
35
35
|
|
|
36
36
|
export const startEntryFrom = (value: unknown): StartEntry => {
|
|
37
|
-
if (!isRecord(value)) throw invalid("
|
|
38
|
-
if (!text(value.id)) throw invalid("id
|
|
37
|
+
if (!isRecord(value)) throw invalid("not an object");
|
|
38
|
+
if (!text(value.id)) throw invalid("id is missing");
|
|
39
39
|
const id = value.id;
|
|
40
|
-
if (!text(value.owner) || !text(value.title) || !text(value.description)) throw invalid(`${id}: owner, title
|
|
41
|
-
if (value.order !== undefined && typeof value.order !== "number") throw invalid(`${id}: order
|
|
42
|
-
if (value.guide !== undefined && !text(value.guide)) throw invalid(`${id}: guide
|
|
40
|
+
if (!text(value.owner) || !text(value.title) || !text(value.description)) throw invalid(`${id}: owner, title and description are required`);
|
|
41
|
+
if (value.order !== undefined && typeof value.order !== "number") throw invalid(`${id}: order is not a number`);
|
|
42
|
+
if (value.guide !== undefined && !text(value.guide)) throw invalid(`${id}: guide is empty`);
|
|
43
43
|
if (value.tags !== undefined && (!Array.isArray(value.tags)
|
|
44
44
|
|| value.tags.some((tag) => !text(tag) || tag !== tag.trim())
|
|
45
45
|
|| new Set(value.tags).size !== value.tags.length)) {
|
|
46
|
-
throw invalid(`${id}: tags
|
|
46
|
+
throw invalid(`${id}: tags must be unique, non-empty keywords`);
|
|
47
47
|
}
|
|
48
48
|
if (value.fixedStartOptions !== undefined && (!isRecord(value.fixedStartOptions) || Object.keys(value.fixedStartOptions).length === 0)) {
|
|
49
|
-
throw invalid(`${id}: fixedStartOptions
|
|
49
|
+
throw invalid(`${id}: fixedStartOptions must fix at least one start option`);
|
|
50
50
|
}
|
|
51
51
|
const base: StartEntryBase = {
|
|
52
52
|
id,
|
|
@@ -60,22 +60,22 @@ export const startEntryFrom = (value: unknown): StartEntry => {
|
|
|
60
60
|
};
|
|
61
61
|
const allowed = (extra: readonly string[]) => {
|
|
62
62
|
const unknown = Object.keys(value).filter((field) => !BASE_FIELDS.includes(field) && !extra.includes(field));
|
|
63
|
-
if (unknown.length > 0) throw invalid(`${id}:
|
|
63
|
+
if (unknown.length > 0) throw invalid(`${id}: unknown fields ${unknown.join(", ")}`);
|
|
64
64
|
};
|
|
65
65
|
switch (value.action) {
|
|
66
66
|
case "skill": {
|
|
67
67
|
allowed(["skill", "prompt", "category"]);
|
|
68
|
-
if (!text(value.skill)) throw invalid(`${id}: skill
|
|
69
|
-
if (!text(value.category) || !value.category.trim() || value.category !== value.category.trim()) throw invalid(`${id}: category
|
|
70
|
-
if (!text(value.prompt) || !value.prompt.trim()) throw invalid(`${id}: prompt
|
|
68
|
+
if (!text(value.skill)) throw invalid(`${id}: skill is missing`);
|
|
69
|
+
if (!text(value.category) || !value.category.trim() || value.category !== value.category.trim()) throw invalid(`${id}: category must be a single non-empty text`);
|
|
70
|
+
if (!text(value.prompt) || !value.prompt.trim()) throw invalid(`${id}: prompt is missing or empty`);
|
|
71
71
|
return { ...base, action: "skill", skill: value.skill, category: value.category, prompt: value.prompt };
|
|
72
72
|
}
|
|
73
73
|
case "script":
|
|
74
74
|
allowed(["coordinator", "category"]);
|
|
75
|
-
if (typeof value.coordinator !== "boolean") throw invalid(`${id}: coordinator
|
|
76
|
-
if (value.category !== undefined && (!text(value.category) || value.category !== value.category.trim())) throw invalid(`${id}: category
|
|
75
|
+
if (typeof value.coordinator !== "boolean") throw invalid(`${id}: coordinator must be true or false`);
|
|
76
|
+
if (value.category !== undefined && (!text(value.category) || value.category !== value.category.trim())) throw invalid(`${id}: category must be a single non-empty text`);
|
|
77
77
|
return { ...base, action: "script", coordinator: value.coordinator, ...(value.category !== undefined ? { category: value.category } : {}) };
|
|
78
78
|
default:
|
|
79
|
-
throw invalid(`${id}:
|
|
79
|
+
throw invalid(`${id}: unknown action ${String(value.action)}; valid are skill and script`);
|
|
80
80
|
}
|
|
81
81
|
};
|
|
@@ -9,7 +9,7 @@ export interface StartOptionState {
|
|
|
9
9
|
presentation: unknown;
|
|
10
10
|
selectable: boolean;
|
|
11
11
|
locked: boolean;
|
|
12
|
-
/**
|
|
12
|
+
/** Whether someone chose the value before the start; a template that sets something else then rejects the start. */
|
|
13
13
|
chosen: boolean;
|
|
14
14
|
}
|
|
15
15
|
|
|
@@ -35,13 +35,13 @@ const isChoiceOption = (value: unknown): value is ChoicePresentationOption =>
|
|
|
35
35
|
&& (value.hint === undefined || typeof value.hint === "string");
|
|
36
36
|
|
|
37
37
|
export const choicePresentationFrom = (presentation: unknown, optionId: string): ChoicePresentation | undefined => {
|
|
38
|
-
if (!isRecord(presentation)) throw new Error(`
|
|
38
|
+
if (!isRecord(presentation)) throw new Error(`The start option ${optionId} provides no presentation`);
|
|
39
39
|
if (presentation.kind !== "choice") return undefined;
|
|
40
40
|
if (typeof presentation.label !== "string" || !presentation.label) {
|
|
41
|
-
throw new Error(`
|
|
41
|
+
throw new Error(`The choice presentation of the start option ${optionId} has no label`);
|
|
42
42
|
}
|
|
43
43
|
if (!Array.isArray(presentation.options) || !presentation.options.every(isChoiceOption)) {
|
|
44
|
-
throw new Error(`
|
|
44
|
+
throw new Error(`The choice presentation of the start option ${optionId} needs options made of value and label`);
|
|
45
45
|
}
|
|
46
46
|
return { kind: "choice", label: presentation.label, options: presentation.options };
|
|
47
47
|
};
|
|
@@ -55,7 +55,7 @@ export const startOptionStateFrom = (value: unknown): StartOptionState => {
|
|
|
55
55
|
|| typeof value.selectable !== "boolean"
|
|
56
56
|
|| typeof value.locked !== "boolean"
|
|
57
57
|
|| typeof value.chosen !== "boolean") {
|
|
58
|
-
throw new Error("
|
|
58
|
+
throw new Error("The start option does not match the expected format");
|
|
59
59
|
}
|
|
60
60
|
return {
|
|
61
61
|
id: value.id,
|
|
@@ -38,7 +38,7 @@ const flag = (value: string | undefined, key: string): boolean => {
|
|
|
38
38
|
if (value === undefined || value === "") return false;
|
|
39
39
|
if (value === "1") return true;
|
|
40
40
|
if (value === "0") return false;
|
|
41
|
-
throw new Error(`${key}
|
|
41
|
+
throw new Error(`${key} must be "0" or "1", not "${value}"`);
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
const labelOf = (text: string, id: string): string => {
|
|
@@ -52,7 +52,7 @@ export const systemPromptOptionsFromDirectory = (directory: string): readonly Sy
|
|
|
52
52
|
entries = readdirSync(directory, { withFileTypes: true });
|
|
53
53
|
} catch (error) {
|
|
54
54
|
throw new Error(
|
|
55
|
-
`
|
|
55
|
+
`The prompt directory ${directory} is not readable (${error instanceof Error ? error.message : String(error)})`);
|
|
56
56
|
}
|
|
57
57
|
const files = entries
|
|
58
58
|
.filter((entry) => entry.isFile() && PROMPT_EXTENSIONS.includes(path.extname(entry.name)))
|
|
@@ -65,9 +65,9 @@ export const systemPromptOptionsFromDirectory = (directory: string): readonly Sy
|
|
|
65
65
|
return { id, label: labelOf(text, id), file, text };
|
|
66
66
|
});
|
|
67
67
|
const duplicate = options.find((option, index) => options.findIndex((other) => other.id === option.id) !== index);
|
|
68
|
-
if (duplicate) throw new Error(`
|
|
68
|
+
if (duplicate) throw new Error(`The prompt directory ${directory} contains the identifier ${duplicate.id} more than once`);
|
|
69
69
|
if (options.length === 0) {
|
|
70
|
-
throw new Error(`
|
|
70
|
+
throw new Error(`The prompt directory ${directory} contains no ${PROMPT_EXTENSIONS.join(" or ")} file`);
|
|
71
71
|
}
|
|
72
72
|
return options;
|
|
73
73
|
};
|
|
@@ -94,28 +94,28 @@ export const systemPromptCatalogFromEnvironment = (
|
|
|
94
94
|
];
|
|
95
95
|
const collision = options.find((option, index) => options.findIndex((other) => other.id === option.id) !== index);
|
|
96
96
|
if (collision) {
|
|
97
|
-
throw new Error(`
|
|
97
|
+
throw new Error(`The system prompt ${collision.id} comes from the plugin folder and from SYSTEM_PROMPTS_DIR`);
|
|
98
98
|
}
|
|
99
99
|
if (options.length === 0) {
|
|
100
100
|
return Object.freeze({ mode: "fixed" as const, options: [], defaultIds: [], shareDefault: false });
|
|
101
101
|
}
|
|
102
102
|
if (mode !== undefined && !SYSTEM_PROMPT_MODES.includes(mode as SystemPromptMode)) {
|
|
103
|
-
throw new Error(`SYSTEM_PROMPT_MODE
|
|
103
|
+
throw new Error(`SYSTEM_PROMPT_MODE must be one of ${SYSTEM_PROMPT_MODES.join(", ")}, not "${mode}"`);
|
|
104
104
|
}
|
|
105
105
|
const effectiveMode = (mode ?? "selectable") as SystemPromptMode;
|
|
106
106
|
const wanted = (defaultId ?? "").split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
107
107
|
if (effectiveMode === "fixed" && wanted.length === 0) {
|
|
108
|
-
throw new Error("SYSTEM_PROMPT_MODE
|
|
108
|
+
throw new Error("SYSTEM_PROMPT_MODE is fixed, so SYSTEM_PROMPT_DEFAULT names the valid prompts");
|
|
109
109
|
}
|
|
110
110
|
for (const id of wanted) {
|
|
111
111
|
if (!options.some((option) => option.id === id)) {
|
|
112
112
|
throw new Error(
|
|
113
|
-
`SYSTEM_PROMPT_DEFAULT ${id}
|
|
114
|
-
+ `
|
|
113
|
+
`SYSTEM_PROMPT_DEFAULT ${id} is not a selectable system prompt; `
|
|
114
|
+
+ `available are ${options.map((option) => option.id).join(", ")}`);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
const duplicate = wanted.find((id, index) => wanted.indexOf(id) !== index);
|
|
118
|
-
if (duplicate) throw new Error(`SYSTEM_PROMPT_DEFAULT
|
|
118
|
+
if (duplicate) throw new Error(`SYSTEM_PROMPT_DEFAULT names ${duplicate} more than once`);
|
|
119
119
|
return Object.freeze({
|
|
120
120
|
mode: effectiveMode,
|
|
121
121
|
options,
|
|
@@ -132,7 +132,7 @@ export const selectedSystemPrompts = (
|
|
|
132
132
|
const wanted = catalog.mode === "fixed" ? catalog.defaultIds : selection ?? catalog.defaultIds;
|
|
133
133
|
return wanted.map((id) => {
|
|
134
134
|
const option = catalog.options.find((entry) => entry.id === id);
|
|
135
|
-
if (!option) throw new Error(`
|
|
135
|
+
if (!option) throw new Error(`The system prompt ${id} is no longer configured`);
|
|
136
136
|
return option;
|
|
137
137
|
});
|
|
138
138
|
};
|
|
@@ -3,11 +3,11 @@ import { modelDefaultThinking } from "./model-aliases.js";
|
|
|
3
3
|
|
|
4
4
|
export const checkedThinkingLevel = (value: string, label: string): ThinkingLevel => {
|
|
5
5
|
if (!isThinkingLevel(value)) {
|
|
6
|
-
throw new Error(`${label}
|
|
6
|
+
throw new Error(`${label} has the unknown thinking level "${value}"; allowed are ${thinkingLevels.join(", ")}.`);
|
|
7
7
|
}
|
|
8
8
|
return value;
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
/**
|
|
11
|
+
/** The thinking level of a role: its key, otherwise the thinking level the alias of its model brings along, otherwise high. */
|
|
12
12
|
export const roleThinkingLevel = (configured: string | undefined, label: string, provider: string, model: string): ThinkingLevel =>
|
|
13
13
|
checkedThinkingLevel(configured || modelDefaultThinking(provider, model) || "high", label);
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
|
|
6
6
|
export const alwaysAvailable = defineToolAvailability({
|
|
7
7
|
availability: "always",
|
|
8
|
-
availabilityDetail: "
|
|
8
|
+
availabilityDetail: "Available in every model turn.",
|
|
9
9
|
}, () => true);
|
|
10
10
|
|
|
11
11
|
export const facesOperator: ToolAvailability = defineToolAvailability({
|
|
12
12
|
availability: "always",
|
|
13
|
-
availabilityDetail: "
|
|
13
|
+
availabilityDetail: "Available in every turn; the question always goes to the user of the run.",
|
|
14
14
|
}, () => true);
|
|
@@ -8,7 +8,7 @@ export interface WorkspaceIdentity {
|
|
|
8
8
|
storageRoot?: string;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
/**
|
|
11
|
+
/** Whatever vanishes during the sync, such as a renamed package from staging, no longer needs rights. */
|
|
12
12
|
const unlessVanished = (error: NodeJS.ErrnoException): undefined => {
|
|
13
13
|
if (error.code === "ENOENT") return undefined;
|
|
14
14
|
throw error;
|
|
@@ -17,11 +17,11 @@ const unlessVanished = (error: NodeJS.ErrnoException): undefined => {
|
|
|
17
17
|
export const syncWorkspaceOwnership = async (directory: string, identity: WorkspaceIdentity): Promise<void> => {
|
|
18
18
|
if (identity.uid === undefined && identity.gid === undefined) return;
|
|
19
19
|
if (identity.uid === undefined || identity.gid === undefined || !identity.storageRoot) {
|
|
20
|
-
throw new Error("
|
|
20
|
+
throw new Error("Private working files are missing a UID, GID or the run storage boundary.");
|
|
21
21
|
}
|
|
22
|
-
if ((await lstat(directory)).isSymbolicLink()) throw new Error("
|
|
22
|
+
if ((await lstat(directory)).isSymbolicLink()) throw new Error("The private working directory must not be a symlink.");
|
|
23
23
|
const [root, target] = await Promise.all([realpath(identity.storageRoot), realpath(directory)]);
|
|
24
|
-
if (!containsWorkspacePath(root, target) || target === root) throw new Error("
|
|
24
|
+
if (!containsWorkspacePath(root, target) || target === root) throw new Error("The private working directory lies outside its run storage boundary.");
|
|
25
25
|
const { uid, gid } = identity;
|
|
26
26
|
const visit = async (file: string): Promise<void> => {
|
|
27
27
|
const info = await lstat(file).catch(unlessVanished);
|
|
@@ -34,7 +34,7 @@ export const syncWorkspaceOwnership = async (directory: string, identity: Worksp
|
|
|
34
34
|
await visit(target);
|
|
35
35
|
for (let ancestor = path.dirname(target); containsWorkspacePath(root, ancestor); ancestor = path.dirname(ancestor)) {
|
|
36
36
|
const info = await lstat(ancestor);
|
|
37
|
-
if (!info.isDirectory()) throw new Error("
|
|
37
|
+
if (!info.isDirectory()) throw new Error("An ancestor of the working directory is not a directory.");
|
|
38
38
|
const mode = (info.mode & 0o7777) | 0o111;
|
|
39
39
|
if ((info.mode & 0o7777) !== mode) await chmod(ancestor, mode);
|
|
40
40
|
if (ancestor === root) break;
|