@schlenkr/ragents 0.1.5 → 0.1.7
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 +18 -11
- package/apps/server/package.json +8 -6
- package/apps/server/src/access-projection.ts +3 -3
- package/apps/server/src/access-service.ts +19 -8
- package/apps/server/src/access-session.ts +6 -2
- package/apps/server/src/api/contracts.ts +19 -18
- package/apps/server/src/api/core-methods.ts +45 -26
- package/apps/server/src/api/delivery.ts +4 -4
- package/apps/server/src/api/reference.ts +1 -1
- package/apps/server/src/api/rights.ts +86 -7
- package/apps/server/src/chat-context.ts +1 -1
- package/apps/server/src/chat-handler.ts +16 -7
- package/apps/server/src/config-file.ts +25 -6
- package/apps/server/src/config.ts +10 -4
- package/apps/server/src/data-directory.ts +1 -1
- package/apps/server/src/folder-install.ts +115 -0
- package/apps/server/src/host-api.json +1257 -0
- package/apps/server/src/host-api.ts +190 -0
- package/apps/server/src/host-resolution-hooks.mjs +50 -1
- package/apps/server/src/host-resolution.ts +26 -1
- package/apps/server/src/host-version.ts +41 -0
- package/apps/server/src/host-web.ts +59 -0
- package/apps/server/src/layout.ts +0 -15
- package/apps/server/src/main.ts +3 -2
- package/apps/server/src/missing-environment.ts +47 -0
- package/apps/server/src/parent-watch.ts +37 -0
- package/apps/server/src/plugin-build/build.ts +650 -0
- package/apps/server/src/plugin-build/host-api-names.ts +185 -0
- package/apps/server/src/plugin-build/plugin-description.ts +118 -0
- package/apps/server/src/plugin-build/typecheck.ts +66 -0
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/app-project.ts +16 -15
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-compiler.ts +4 -4
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-contracts.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-runtime.ts +27 -0
- package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/contract.ts +3 -3
- package/apps/server/src/plugin-support/actor-programs/service.ts +1 -1
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/tailwind.ts +2 -3
- package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/index.ts +48 -48
- package/apps/server/src/plugin-support/agent-tool.ts +12 -8
- package/apps/server/src/plugin-support/http.ts +1 -1
- package/apps/server/src/plugin-support/language-server/contract.ts +37 -6
- package/apps/server/src/plugin-support/language-server/plugin.ts +18 -8
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +32 -7
- package/apps/server/src/plugin-support/language-server/tools.ts +59 -15
- package/apps/server/src/plugin-support/model-aliases.ts +77 -0
- package/apps/server/src/plugin-support/model-choice.ts +17 -7
- package/apps/server/src/plugin-support/model-completion.ts +58 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +2 -2
- package/apps/server/src/plugin-support/native-typescript-executor.ts +10 -7
- package/apps/server/src/plugin-support/plugin-config.ts +1 -1
- package/apps/server/src/plugin-support/plugin-folder.ts +4 -1
- package/apps/server/src/plugin-support/plugin-module.ts +1 -1
- package/apps/server/src/plugin-support/plugins-root.ts +6 -10
- package/apps/server/src/plugin-support/process-sandbox.ts +312 -0
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +14 -5
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -9
- package/{plugins/ragents.product/server/relay.ts → apps/server/src/plugin-support/product-relay.ts} +2 -2
- package/apps/server/src/plugin-support/product-start-options.ts +8 -3
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +6 -0
- package/apps/server/src/plugin-support/run-scripts.ts +16 -2
- package/apps/server/src/plugin-support/skills.ts +32 -16
- package/apps/server/src/plugin-support/start-entries-contract.ts +12 -3
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -1
- package/apps/server/src/plugin-support/thinking-level.ts +6 -1
- package/apps/server/src/plugin-support/tool-availability.ts +1 -7
- package/apps/server/src/plugin-support/workspace-ownership.ts +12 -6
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +184 -37
- package/apps/server/src/profile/bundle-manifest.ts +183 -0
- package/apps/server/src/profile/compose.ts +19 -10
- package/apps/server/src/profile/plugin-discovery.ts +98 -46
- package/apps/server/src/profile/provisioning.ts +30 -26
- package/apps/server/src/profile-target.ts +3 -0
- package/apps/server/src/provider.ts +212 -106
- package/apps/server/src/ragents/actor-chat-history.ts +24 -22
- package/apps/server/src/ragents/chat-projection.ts +25 -14
- package/apps/server/src/ragents/chat-text-positions.ts +4 -4
- package/apps/server/src/ragents/coordinator.ts +27 -1
- package/apps/server/src/ragents/document-store.ts +1 -1
- package/apps/server/src/ragents/engine.ts +68 -43
- package/apps/server/src/ragents/global-chat.ts +26 -13
- package/apps/server/src/ragents/host-services.ts +15 -6
- package/apps/server/src/ragents/journal-chat-events.ts +33 -15
- package/apps/server/src/ragents/product-runtime.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +18 -0
- package/apps/server/src/ragents/runtime-bridge.ts +1 -1
- package/apps/server/src/ragents/session.ts +184 -85
- package/apps/server/src/ragents/start-option-state.ts +1 -1
- package/apps/server/src/ragents/typescript-tools.ts +35 -27
- package/apps/server/src/ragents/workspace-runtime.ts +74 -8
- package/apps/server/src/rpc/dispatcher.ts +17 -8
- package/apps/server/src/rpc/http-transport.ts +1 -3
- package/apps/server/src/rpc/stdio-transport.ts +1 -1
- package/apps/server/src/run-preparation-contract.ts +1 -1
- package/apps/server/src/run-preparation-input.ts +1 -1
- package/apps/server/src/run-preparation.ts +18 -29
- package/apps/server/src/run-transfer.ts +66 -5
- package/apps/server/src/server.ts +112 -33
- package/apps/server/src/settings.ts +9 -12
- package/apps/server/src/title-compactor.ts +5 -8
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +79 -0
- package/apps/server/src/web-stylesheet.ts +85 -0
- package/apps/server/tsconfig.json +4 -4
- package/apps/server/tsconfig.plugin.json +58 -0
- package/apps/web/dist/assets/highlighted-body-KPVGNVTW-CFhTJEmH.js +1 -0
- package/apps/web/dist/assets/main-DlzW4t4c.js +6 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BPn4aV2r.css +1 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-kxkB991i.js +478 -0
- package/apps/web/dist/assets/runPanel-BJEFQ__w.js +21 -0
- package/apps/web/dist/help/guide-access.html +199 -0
- package/apps/web/dist/help/guide-access.md +84 -0
- package/apps/web/dist/help/guide-clients.html +430 -0
- package/apps/web/dist/help/guide-clients.md +346 -0
- package/apps/web/dist/help/guide-distributed.html +325 -0
- package/apps/web/dist/help/guide-distributed.md +230 -0
- package/apps/web/dist/help/guide-functions.html +231 -0
- package/apps/web/dist/help/guide-functions.md +127 -0
- package/apps/web/dist/help/guide-getting-started.html +230 -0
- package/apps/web/dist/help/guide-getting-started.md +123 -0
- package/apps/web/dist/help/guide-ideas.html +183 -0
- package/apps/web/dist/help/guide-ideas.md +71 -0
- package/apps/web/dist/help/guide-plugins.html +450 -0
- package/apps/web/dist/help/guide-plugins.md +341 -0
- package/apps/web/dist/help/guide-programs.html +359 -0
- package/apps/web/dist/help/guide-programs.md +271 -0
- package/apps/web/dist/help/guide-runtime.html +344 -0
- package/apps/web/dist/help/guide-runtime.md +232 -0
- package/apps/web/dist/help/guide.html +133 -0
- package/apps/web/dist/help/guide.md +13 -0
- package/apps/web/dist/help/homepage-bullets.js +12 -0
- package/apps/web/dist/help/homepage-distributed.js +261 -0
- package/apps/web/dist/help/homepage-plugins.js +30 -0
- package/apps/web/dist/help/homepage-scenes.js +368 -0
- package/apps/web/dist/help/homepage-stickers.js +69 -0
- package/apps/web/dist/help/homepage-story-nav.js +11 -0
- package/apps/web/dist/help/homepage-subnav.js +61 -0
- package/apps/web/dist/help/homepage.css +833 -0
- package/apps/web/dist/help/index.html +1167 -0
- package/apps/web/dist/help/mini-app.css +7076 -0
- package/apps/web/dist/help/mini-app.html +15 -0
- package/apps/web/dist/help/mini-app.js +131 -0
- package/apps/web/dist/help/screenshots/release-checklist-vscode.png +0 -0
- package/apps/web/dist/help/screenshots/release-checklist-web.png +0 -0
- package/apps/web/dist/help/scroll-vendor.js +73 -0
- package/apps/web/dist/help/site.css +63 -0
- package/apps/web/dist/help/site.js +103 -0
- package/apps/web/dist/host-web.json +143 -0
- package/apps/web/dist/index.html +15 -0
- package/apps/web/dist/run-panel.html +15 -0
- package/apps/web/package.json +2 -2
- package/apps/web/src/App.tsx +8 -6
- package/apps/web/src/Overview.tsx +5 -5
- package/apps/web/src/PluginActivation.ts +25 -5
- package/apps/web/src/PluginChat.tsx +163 -129
- package/apps/web/src/PluginFailureNotice.tsx +15 -0
- package/apps/web/src/PluginRegistry.tsx +106 -68
- package/apps/web/src/RunPreparationChat.tsx +40 -28
- package/apps/web/src/RunStore.ts +2 -2
- package/apps/web/src/SessionList.tsx +16 -8
- package/apps/web/src/SettingsModal.tsx +37 -37
- package/apps/web/src/StartOptions.tsx +81 -26
- package/apps/web/src/StartSelection.tsx +111 -0
- package/apps/web/src/StartTiles.tsx +73 -0
- package/apps/web/src/{CanvasShortcuts.tsx → SurfaceShortcuts.tsx} +2 -2
- package/apps/web/src/ThemeSettings.tsx +1 -1
- package/apps/web/src/WorkspacePanel.tsx +4 -4
- package/apps/web/src/access-session.ts +4 -1
- package/{plugins/ragents.orchestration/web → apps/web/src}/actor-conversation.ts +3 -3
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/DataTable.tsx +9 -9
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FilePicker.tsx +4 -4
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagram.tsx +16 -14
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagramRenderer.tsx +3 -3
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Form.tsx +12 -12
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Layout.tsx +1 -1
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/MessageList.tsx +5 -5
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Viewers.tsx +8 -7
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/chat-contracts.d.ts +64 -0
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/contracts.d.ts +2 -2
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-selection.ts +5 -5
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/index.tsx +22 -16
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/layout-contracts.d.ts +1 -1
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/message-list-contracts.d.ts +2 -2
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/workflow-diagram-contracts.d.ts +1 -1
- package/apps/web/src/api.ts +45 -22
- package/apps/web/src/chat/QuasselHost.tsx +12 -0
- package/apps/web/src/chat/StoppedActorNotice.tsx +39 -0
- package/apps/web/src/chat/chat-target.ts +14 -5
- package/apps/web/src/chat/requests.ts +13 -5
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat/useChat.ts +8 -7
- package/apps/web/src/chat/user-location.ts +1 -1
- package/apps/web/src/chat-view-settings.tsx +49 -0
- package/apps/web/src/host-modules.ts +90 -0
- package/apps/web/src/language-server/api.ts +24 -0
- package/{plugins/ragents.lsp-roslyn/web → apps/web/src/language-server}/language-server-plugin.tsx +133 -6
- package/apps/web/src/main.tsx +4 -2
- package/apps/web/src/offered-machines.ts +11 -0
- package/apps/web/src/panel/ConnectionsPage.tsx +117 -0
- package/apps/web/src/panel/LoginForm.tsx +9 -9
- package/apps/web/src/panel/PanelDialogs.tsx +44 -27
- package/apps/web/src/panel/PanelHeader.tsx +11 -0
- package/apps/web/src/panel/PanelPage.tsx +8 -5
- package/apps/web/src/panel/RunLine.tsx +50 -0
- package/apps/web/src/panel/RunsPage.tsx +84 -0
- package/apps/web/src/panel/StartPage.tsx +163 -0
- package/apps/web/src/panel/connection-state.ts +40 -0
- package/apps/web/src/panel/contract.ts +66 -21
- package/apps/web/src/panel/page-props.ts +6 -0
- package/apps/web/src/plugin-bootstrap.ts +60 -31
- package/{plugins/ragents.product/web → apps/web/src/product}/ModelControl.tsx +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/ProductModelSettings.tsx +7 -7
- package/{plugins/ragents.product/web → apps/web/src/product}/SystemPromptControl.tsx +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/model-settings.ts +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/start-options.tsx +2 -2
- package/apps/web/src/rpc/client.ts +28 -6
- package/apps/web/src/run-panel/RunPanelApp.tsx +334 -0
- package/apps/web/src/{column/ColumnRunHeader.tsx → run-panel/RunPanelHeader.tsx} +2 -2
- package/apps/web/src/{column/ColumnMenu.tsx → run-panel/RunPanelMenu.tsx} +4 -4
- package/apps/web/src/run-panel/RunPanelRail.tsx +38 -0
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +55 -0
- package/apps/web/src/{column → run-panel}/clipboard.ts +21 -10
- package/apps/web/src/run-panel/host-contract.ts +123 -0
- package/apps/web/src/{column → run-panel}/host.ts +31 -23
- package/apps/web/src/run-panel/input-bridge.ts +75 -0
- package/apps/web/src/run-panel/keyboard.ts +53 -0
- package/apps/web/src/run-panel/run-panel-location.ts +35 -0
- package/apps/web/src/{column → run-panel}/use-session-list.ts +3 -3
- package/apps/web/src/run-panel/workspace-state.ts +43 -0
- package/apps/web/src/{column.tsx → run-panel.tsx} +20 -13
- package/apps/web/src/run-preparation.ts +1 -1
- package/{plugins/ragents.orchestration/web → apps/web/src}/run-view.ts +25 -7
- package/apps/web/src/settings-contributions.ts +16 -18
- package/apps/web/src/title-model-settings.ts +1 -1
- package/apps/web/src/toolLine.ts +1 -1
- package/apps/web/src/ui/ListDetail.tsx +1 -1
- package/apps/web/src/ui/dialog.tsx +5 -5
- package/apps/web/src/ui/frame.css +1 -0
- package/apps/web/src/ui/index.ts +5 -0
- package/apps/web/src/ui/popover.tsx +2 -2
- package/apps/web/src/ui/quassel.css +41 -0
- package/apps/web/src/ui/relative-time.ts +36 -0
- package/apps/web/src/ui/startup-notice.tsx +22 -0
- package/apps/web/src/ui/state-icon.tsx +60 -0
- package/apps/web/src/ui/state-vocabulary.ts +31 -0
- package/apps/web/src/ui/stop-button.tsx +22 -0
- package/apps/web/src/ui/tailwind.css +2 -3
- package/apps/web/src/ui/theme.css +19 -19
- package/apps/web/tsconfig.json +4 -5
- package/apps/web/tsconfig.plugin.json +44 -0
- package/bundles/ragents.activity/ragents-bundle.json +38 -0
- package/bundles/ragents.activity/server/index.js +14 -0
- package/bundles/ragents.activity/server/index.js.map +7 -0
- package/bundles/ragents.activity/web/classes.json +1 -0
- package/bundles/ragents.activity/web/index.js +2 -0
- package/bundles/ragents.activity/web/index.js.map +7 -0
- package/bundles/ragents.actor-programs/prompt.hbs +80 -0
- package/bundles/ragents.actor-programs/ragents-bundle.json +214 -0
- package/bundles/ragents.actor-programs/server/index.js +2071 -0
- package/bundles/ragents.actor-programs/server/index.js.map +7 -0
- package/bundles/ragents.actor-programs/summary.hbs +17 -0
- package/bundles/ragents.actor-programs/web/classes.json +1 -0
- package/bundles/ragents.actor-programs/web/index.js +27 -0
- package/bundles/ragents.actor-programs/web/index.js.map +7 -0
- package/bundles/ragents.ask/ask.hbs +4 -0
- package/bundles/ragents.ask/ragents-bundle.json +97 -0
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js +13 -0
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +11 -0
- package/bundles/ragents.ask/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.ask/server/index.js +279 -0
- package/bundles/ragents.ask/server/index.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js +25 -0
- package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -0
- package/bundles/ragents.ask/web/exports/ask-payload.js +2 -0
- package/bundles/ragents.ask/web/exports/ask-payload.js.map +7 -0
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +2 -0
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js.map +7 -0
- package/bundles/ragents.ask/web/exports/web/api.js +2 -0
- package/bundles/ragents.ask/web/exports/web/api.js.map +7 -0
- package/bundles/ragents.ask/web/index.js +2 -0
- package/bundles/ragents.ask/web/index.js.map +7 -0
- package/bundles/ragents.browser/ragents-bundle.json +53 -0
- package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js +11 -0
- package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +7 -0
- package/bundles/ragents.browser/server/exports/server/contract.js +9 -0
- package/bundles/ragents.browser/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.browser/server/index.js +479 -0
- package/bundles/ragents.browser/server/index.js.map +7 -0
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +38 -0
- package/bundles/ragents.documents/prompt.hbs +18 -0
- package/bundles/ragents.documents/ragents-bundle.json +120 -0
- package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js +37 -0
- package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js.map +7 -0
- package/bundles/ragents.documents/server/exports/contract.js +11 -0
- package/bundles/ragents.documents/server/exports/contract.js.map +7 -0
- package/bundles/ragents.documents/server/index.js +290 -0
- package/bundles/ragents.documents/server/index.js.map +7 -0
- package/bundles/ragents.documents/web/classes.json +1 -0
- package/bundles/ragents.documents/web/index.js +26 -0
- package/bundles/ragents.documents/web/index.js.map +7 -0
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +49 -0
- package/bundles/ragents.lsp-fsharp/server/index.js +82 -0
- package/bundles/ragents.lsp-fsharp/server/index.js.map +7 -0
- package/bundles/ragents.lsp-fsharp/web/classes.json +1 -0
- package/bundles/ragents.lsp-fsharp/web/index.js +2 -0
- package/bundles/ragents.lsp-fsharp/web/index.js.map +7 -0
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +61 -0
- package/bundles/ragents.lsp-roslyn/server/index.js +208 -0
- package/bundles/ragents.lsp-roslyn/server/index.js.map +7 -0
- package/bundles/ragents.lsp-roslyn/web/classes.json +1 -0
- package/bundles/ragents.lsp-roslyn/web/index.js +2 -0
- package/bundles/ragents.lsp-roslyn/web/index.js.map +7 -0
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +36 -0
- package/bundles/ragents.lsp-typescript/server/index.js +13 -0
- package/bundles/ragents.lsp-typescript/server/index.js.map +7 -0
- package/bundles/ragents.lsp-typescript/web/classes.json +1 -0
- package/bundles/ragents.lsp-typescript/web/index.js +2 -0
- package/bundles/ragents.lsp-typescript/web/index.js.map +7 -0
- package/bundles/ragents.model-relay/ragents-bundle.json +33 -0
- package/bundles/ragents.model-relay/server/index.js +230 -0
- package/bundles/ragents.model-relay/server/index.js.map +7 -0
- package/bundles/ragents.orchestration/orchestration.hbs +106 -0
- package/bundles/ragents.orchestration/ragents-bundle.json +194 -0
- package/bundles/ragents.orchestration/server/index.js +277 -0
- package/bundles/ragents.orchestration/server/index.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +7 -0
- package/bundles/ragents.orchestration/web/classes.json +1 -0
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js.map +7 -0
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +7 -0
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +7 -0
- package/bundles/ragents.orchestration/web/index.js +51 -0
- package/bundles/ragents.orchestration/web/index.js.map +7 -0
- package/bundles/ragents.overseer/ragents-bundle.json +144 -0
- package/bundles/ragents.overseer/server/index.js +652 -0
- package/bundles/ragents.overseer/server/index.js.map +7 -0
- package/bundles/ragents.overseer/web/classes.json +1 -0
- package/bundles/ragents.overseer/web/index.js +25 -0
- package/bundles/ragents.overseer/web/index.js.map +7 -0
- package/bundles/ragents.processes/ragents-bundle.json +93 -0
- package/bundles/ragents.processes/server/index.js +204 -0
- package/bundles/ragents.processes/server/index.js.map +7 -0
- package/bundles/ragents.processes/web/classes.json +1 -0
- package/bundles/ragents.processes/web/index.js +4 -0
- package/bundles/ragents.processes/web/index.js.map +7 -0
- package/bundles/ragents.product/preamble.hbs +9 -0
- package/bundles/ragents.product/ragents-bundle.json +93 -0
- package/bundles/ragents.product/server/index.js +208 -0
- package/bundles/ragents.product/server/index.js.map +7 -0
- package/bundles/ragents.product/web/classes.json +1 -0
- package/bundles/ragents.product/web/index.js +2 -0
- package/bundles/ragents.product/web/index.js.map +7 -0
- package/bundles/ragents.profile-distribution/ragents-bundle.json +64 -0
- package/bundles/ragents.profile-distribution/server/index.js +241 -0
- package/bundles/ragents.profile-distribution/server/index.js.map +7 -0
- package/bundles/ragents.reference/ragents-bundle.json +39 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +27 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +10 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +80 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +82 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +154 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +32 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +59 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +13 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +81 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +34 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +24 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +10 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +5 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +27 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +137 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/state.ts +38 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +42 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +38 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +218 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +12 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +60 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +24 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +18 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +16 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +39 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +15 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/server.ts +14 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +13 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +65 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +42 -0
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +25 -0
- package/bundles/ragents.reference/run-scripts/word-game/package.json +11 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +27 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +23 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +105 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/state.ts +22 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/view.tsx +54 -0
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +252 -0
- package/bundles/ragents.reference/server/index.js +16 -0
- package/bundles/ragents.reference/server/index.js.map +7 -0
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +33 -0
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +33 -0
- package/bundles/ragents.reference/web/classes.json +1 -0
- package/bundles/ragents.reference/web/index.js +2 -0
- package/bundles/ragents.reference/web/index.js.map +7 -0
- package/bundles/ragents.todo/ragents-bundle.json +48 -0
- package/bundles/ragents.todo/server/index.js +108 -0
- package/bundles/ragents.todo/server/index.js.map +7 -0
- package/bundles/ragents.todo/web/classes.json +1 -0
- package/bundles/ragents.todo/web/index.js +2 -0
- package/bundles/ragents.todo/web/index.js.map +7 -0
- package/bundles/ragents.transcript/ragents-bundle.json +34 -0
- package/bundles/ragents.transcript/server/index.js +102 -0
- package/bundles/ragents.transcript/server/index.js.map +7 -0
- package/bundles/ragents.watch/ragents-bundle.json +39 -0
- package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js +11 -0
- package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js.map +7 -0
- package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js +10 -0
- package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js.map +7 -0
- package/bundles/ragents.watch/server/exports/contract.js +9 -0
- package/bundles/ragents.watch/server/exports/contract.js.map +7 -0
- package/bundles/ragents.watch/server/exports/server/contract.js +9 -0
- package/bundles/ragents.watch/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.watch/server/index.js +482 -0
- package/bundles/ragents.watch/server/index.js.map +7 -0
- package/bundles/ragents.workspace/prompt.hbs +7 -0
- package/bundles/ragents.workspace/ragents-bundle.json +148 -0
- package/bundles/ragents.workspace/server/index.js +1049 -0
- package/bundles/ragents.workspace/server/index.js.map +7 -0
- package/bundles/ragents.workspace/web/classes.json +1 -0
- package/bundles/ragents.workspace/web/index.js +39 -0
- package/bundles/ragents.workspace/web/index.js.map +7 -0
- package/package.json +4 -15
- package/packages/agent/dist/core/agent-settings.d.ts +27 -0
- package/packages/agent/dist/core/compaction/compaction.d.ts +82 -0
- package/packages/agent/dist/core/compaction/index.d.ts +6 -0
- package/packages/agent/dist/core/compaction/utils.d.ts +39 -0
- package/packages/agent/dist/core/context-log.d.ts +25 -0
- package/packages/agent/dist/core/messages.d.ts +30 -0
- package/packages/agent/dist/core/model-runtime.d.ts +32 -0
- package/packages/agent/dist/core/provider-composer.d.ts +25 -0
- package/packages/agent/dist/core/skills.d.ts +20 -0
- package/packages/agent/dist/core/tool-definition.d.ts +17 -0
- package/packages/agent/dist/core/tools/bash.d.ts +58 -0
- package/packages/agent/dist/core/tools/edit-diff.d.ts +98 -0
- package/packages/agent/dist/core/tools/edit.d.ts +41 -0
- package/packages/agent/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/packages/agent/dist/core/tools/index.d.ts +5 -0
- package/packages/agent/dist/core/tools/output-accumulator.d.ts +58 -0
- package/packages/agent/dist/core/tools/path-utils.d.ts +8 -0
- package/packages/agent/dist/core/tools/read.d.ts +33 -0
- package/packages/agent/dist/core/tools/truncate.d.ts +61 -0
- package/packages/agent/dist/core/tools/write.d.ts +23 -0
- package/packages/agent/dist/index.d.ts +12 -0
- package/packages/agent/dist/loop/agent-loop.d.ts +13 -0
- package/packages/agent/dist/loop/agent.d.ts +99 -0
- package/packages/agent/dist/loop/index.d.ts +5 -0
- package/packages/agent/dist/loop/types.d.ts +333 -0
- package/packages/agent/dist/loop/uuid.d.ts +2 -0
- package/packages/agent/dist/utils/child-process.d.ts +17 -0
- package/packages/agent/dist/utils/exif-orientation.d.ts +5 -0
- package/packages/agent/dist/utils/frontmatter.d.ts +8 -0
- package/packages/agent/dist/utils/image-convert.d.ts +2 -0
- package/packages/agent/dist/utils/image-process.d.ts +18 -0
- package/packages/agent/dist/utils/image-resize-core.d.ts +30 -0
- package/packages/agent/dist/utils/image-resize-worker.d.ts +2 -0
- package/packages/agent/dist/utils/image-resize.d.ts +16 -0
- package/packages/agent/dist/utils/mime.d.ts +3 -0
- package/packages/agent/dist/utils/paths.d.ts +15 -0
- package/packages/agent/dist/utils/photon.d.ts +21 -0
- package/packages/agent/dist/utils/shell.d.ts +17 -0
- package/packages/agent/dist/utils/sleep.d.ts +5 -0
- package/packages/agent/package.json +3 -32
- package/packages/agent/src/core/agent-settings.ts +20 -0
- package/packages/agent/src/core/compaction/compaction.ts +53 -208
- package/packages/agent/src/core/compaction/index.ts +0 -1
- package/packages/agent/src/core/compaction/utils.ts +2 -2
- package/packages/agent/src/core/context-log.ts +49 -0
- package/packages/agent/src/core/messages.ts +9 -119
- package/packages/agent/src/core/model-runtime.ts +109 -467
- package/packages/agent/src/core/provider-composer.ts +21 -451
- package/packages/agent/src/core/skills.ts +8 -440
- package/packages/agent/src/core/tool-definition.ts +29 -0
- package/packages/agent/src/core/tools/bash.ts +22 -41
- package/packages/agent/src/core/tools/edit-diff.ts +0 -60
- package/packages/agent/src/core/tools/edit.ts +4 -29
- package/packages/agent/src/core/tools/index.ts +4 -130
- package/packages/agent/src/core/tools/output-accumulator.ts +33 -5
- package/packages/agent/src/core/tools/path-utils.ts +2 -49
- package/packages/agent/src/core/tools/read.ts +6 -29
- package/packages/agent/src/core/tools/truncate.ts +0 -15
- package/packages/agent/src/core/tools/write.ts +2 -13
- package/packages/agent/src/index.ts +23 -270
- package/packages/{agent-core/src → agent/src/loop}/agent-loop.ts +128 -275
- package/packages/{agent-core/src → agent/src/loop}/agent.ts +20 -166
- package/packages/{agent-core/src → agent/src/loop}/types.ts +6 -105
- package/packages/agent/src/utils/child-process.ts +0 -13
- package/packages/agent/src/utils/image-convert.ts +0 -25
- package/packages/agent/src/utils/paths.ts +1 -71
- package/packages/agent/src/utils/shell.ts +13 -156
- package/packages/ai/dist/api/ai-sdk-messages.d.ts +9 -0
- package/packages/ai/dist/api/ai-sdk-transport.d.ts +13 -0
- package/packages/ai/dist/api/ai-sdk.d.ts +15 -0
- package/packages/ai/dist/api/ai-sdk.lazy.d.ts +3 -0
- package/packages/ai/dist/api/lazy.d.ts +15 -0
- package/packages/ai/dist/api/simple-options.d.ts +4 -0
- package/packages/ai/dist/api/transform-messages.d.ts +8 -0
- package/packages/ai/dist/api-registry.d.ts +25 -0
- package/packages/ai/dist/auth/context.d.ts +4 -0
- package/packages/ai/dist/auth/helpers.d.ts +4 -0
- package/packages/ai/dist/auth/resolve.d.ts +19 -0
- package/packages/ai/dist/auth/types.d.ts +51 -0
- package/packages/ai/dist/env-api-keys.d.ts +8 -0
- package/packages/ai/dist/index.d.ts +19 -0
- package/packages/ai/dist/models.d.ts +71 -0
- package/packages/ai/dist/models.generated.d.ts +8021 -0
- package/packages/ai/dist/providers/all.d.ts +15 -0
- package/packages/ai/dist/providers/faux.d.ts +97 -0
- package/packages/ai/dist/providers/openrouter.d.ts +3 -0
- package/packages/ai/dist/providers/openrouter.models.d.ts +8019 -0
- package/packages/ai/dist/types.d.ts +543 -0
- package/packages/ai/dist/utils/diagnostics.d.ts +13 -0
- package/packages/ai/dist/utils/error-body.d.ts +25 -0
- package/packages/ai/dist/utils/estimate.d.ts +17 -0
- package/packages/ai/dist/utils/event-stream.d.ts +21 -0
- package/packages/ai/dist/utils/headers.d.ts +2 -0
- package/packages/ai/dist/utils/json-parse.d.ts +16 -0
- package/packages/ai/dist/utils/overflow.d.ts +54 -0
- package/packages/ai/dist/utils/provider-env.d.ts +7 -0
- package/packages/ai/dist/utils/retry.d.ts +12 -0
- package/packages/ai/dist/utils/sanitize-unicode.d.ts +22 -0
- package/packages/ai/dist/utils/typebox-helpers.d.ts +17 -0
- package/packages/ai/dist/utils/validation.d.ts +10 -0
- package/packages/ai/package.json +2 -6
- package/packages/ai/src/api/ai-sdk-messages.ts +15 -10
- package/packages/ai/src/api/ai-sdk-transport.ts +2 -2
- package/packages/ai/src/api/ai-sdk.ts +11 -0
- package/packages/ai/src/api/simple-options.ts +0 -34
- package/packages/ai/src/api/transform-messages.ts +1 -1
- package/packages/ai/src/api-registry.ts +1 -12
- package/packages/ai/src/auth/context.ts +1 -30
- package/packages/ai/src/auth/helpers.ts +3 -34
- package/packages/ai/src/auth/resolve.ts +10 -108
- package/packages/ai/src/auth/types.ts +9 -176
- package/packages/ai/src/index.ts +1 -13
- package/packages/ai/src/models.ts +41 -407
- package/packages/ai/src/providers/all.ts +3 -31
- package/packages/ai/src/providers/openrouter.models.ts +14 -0
- package/packages/ai/src/types.ts +2 -104
- package/packages/ai/src/utils/diagnostics.ts +0 -32
- package/packages/ai/src/utils/headers.ts +0 -11
- package/packages/ai/src/utils/overflow.ts +0 -7
- package/packages/ai/src/utils/retry.ts +14 -0
- package/packages/ai/src/utils/validation.ts +0 -15
- package/packages/ragents/package.json +3 -6
- package/packages/ragents/src/access.ts +2 -1
- package/packages/ragents/src/agents/actor-input.ts +29 -18
- package/packages/ragents/src/agents/catalog.ts +3 -3
- package/packages/ragents/src/agents/model-context.ts +360 -0
- package/packages/ragents/src/agents/plugins.ts +0 -4
- package/packages/ragents/src/agents/scheduler.ts +233 -83
- package/packages/ragents/src/agents/schemas.ts +1 -36
- package/packages/ragents/src/agents/tool-orientation.ts +1 -1
- package/packages/ragents/src/agents/tools.ts +74 -75
- package/packages/ragents/src/agents/toolset.ts +51 -24
- package/packages/ragents/src/agents/turn.ts +2 -14
- package/packages/ragents/src/agents/workspaces.ts +12 -0
- package/packages/ragents/src/domain/actor-reference.ts +22 -0
- package/packages/ragents/src/domain/driver.ts +0 -9
- package/packages/ragents/src/domain/event-semantics.ts +111 -72
- package/packages/ragents/src/domain/event-validation.ts +188 -21
- package/packages/ragents/src/domain/events.ts +91 -7
- package/packages/ragents/src/domain/json.ts +2 -0
- package/packages/ragents/src/domain/model.ts +42 -18
- package/packages/ragents/src/domain/projection.ts +52 -15
- package/packages/ragents/src/domain/schema-errors.ts +3 -3
- package/packages/ragents/src/domain/tool-result-text.ts +9 -0
- package/packages/ragents/src/drivers/agent-hooks.ts +27 -0
- package/packages/ragents/src/drivers/agent-runtime.ts +137 -1020
- package/packages/ragents/src/drivers/agent-turn.ts +735 -0
- package/packages/ragents/src/drivers/agent.ts +13 -26
- package/packages/ragents/src/drivers/attachments.ts +4 -24
- package/packages/ragents/src/drivers/skill-preload.ts +56 -78
- package/packages/ragents/src/drivers/types.ts +39 -6
- package/packages/ragents/src/http/contracts.ts +16 -3
- package/packages/ragents/src/http/methods.ts +32 -33
- package/packages/ragents/src/index.ts +12 -21
- package/packages/ragents/src/plugin-host.ts +150 -105
- package/packages/ragents/src/plugin-types.ts +86 -23
- package/packages/ragents/src/rpc/peer.ts +6 -0
- package/packages/ragents/src/runtime/decisions/actions.ts +40 -37
- package/packages/ragents/src/runtime/decisions/actors.ts +100 -51
- package/packages/ragents/src/runtime/decisions/artifacts.ts +2 -2
- package/packages/ragents/src/runtime/decisions/inputs.ts +3 -3
- package/packages/ragents/src/runtime/decisions/subscriptions.ts +9 -7
- package/packages/ragents/src/runtime/decisions/turns.ts +101 -9
- package/packages/ragents/src/runtime/guards.ts +12 -21
- package/packages/ragents/src/runtime/journal-storage.ts +8 -3
- package/packages/ragents/src/runtime/journal.ts +36 -1
- package/packages/ragents/src/runtime/orchestration.ts +167 -19
- package/packages/ragents/src/runtime/serial-queue.ts +24 -0
- package/packages/ragents/src/runtime/stop.ts +19 -44
- package/packages/ragents/src/script/mediators.ts +4 -5
- package/packages/ragents/src/typescript/index.ts +2 -0
- package/packages/ragents/src/typescript/run-context.ts +10 -8
- package/packages/ragents/src/typescript/snippet.ts +7 -6
- package/packages/workspace-executor/package.json +2 -2
- package/packages/workspace-executor/src/bash-launch.ts +45 -0
- package/packages/workspace-executor/src/browser/contract.ts +71 -0
- package/packages/workspace-executor/src/browser/module.ts +74 -0
- package/packages/workspace-executor/src/browser/pages.ts +298 -0
- package/packages/workspace-executor/src/browser/playwright.ts +52 -0
- package/packages/workspace-executor/src/commands.ts +170 -0
- package/packages/workspace-executor/src/context.ts +34 -6
- package/packages/workspace-executor/src/errors.ts +12 -0
- package/packages/workspace-executor/src/executor.ts +62 -104
- package/packages/workspace-executor/src/files.ts +287 -0
- package/packages/workspace-executor/src/index.ts +82 -18
- package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +1 -0
- package/packages/workspace-executor/src/language-server/contract.ts +14 -0
- package/packages/workspace-executor/src/language-server/host.ts +82 -26
- package/packages/workspace-executor/src/language-server/module.ts +107 -0
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +90 -0
- package/packages/workspace-executor/src/managed-process.ts +1 -1
- package/packages/workspace-executor/src/module.ts +35 -0
- package/packages/workspace-executor/src/modules.ts +25 -0
- package/packages/workspace-executor/src/paths.ts +57 -5
- package/packages/workspace-executor/src/process-sandbox.ts +16 -0
- package/packages/workspace-executor/src/processes/module.ts +48 -0
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/process-table.ts +80 -57
- package/packages/workspace-executor/src/processes/scanner.ts +106 -0
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/snapshot.ts +23 -11
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/terminator.ts +19 -20
- package/packages/workspace-executor/src/run-folders.ts +33 -0
- package/packages/workspace-executor/src/safe-environment.ts +14 -0
- package/packages/workspace-executor/src/sandbox-tools.ts +212 -43
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/plugins/package.json +1 -1
- package/plugins/ragents.activity/ragents-plugin.json +3 -0
- package/plugins/ragents.activity/server/index.ts +2 -2
- package/plugins/ragents.activity/web/ActivityHeader.tsx +2 -2
- package/plugins/ragents.activity/web/activity.ts +1 -1
- package/plugins/ragents.activity/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/prompt.hbs +8 -7
- package/plugins/ragents.actor-programs/ragents-plugin.json +3 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +3 -3
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/capability-resolver.ts +1 -16
- package/plugins/ragents.actor-programs/server/controls-template.ts +5 -18
- package/plugins/ragents.actor-programs/server/controls-tool.ts +8 -11
- package/plugins/ragents.actor-programs/server/index.ts +10 -10
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/limits.ts +4 -4
- package/plugins/ragents.actor-programs/server/methods.ts +2 -2
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/operations.ts +2 -4
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +65 -70
- package/plugins/ragents.actor-programs/server/prompts.ts +4 -4
- package/plugins/ragents.actor-programs/server/routes.ts +14 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +132 -55
- package/plugins/ragents.actor-programs/server/templates.ts +35 -80
- package/plugins/ragents.actor-programs/server/test-report.ts +106 -0
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +4 -4
- package/plugins/ragents.actor-programs/summary.hbs +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +15 -10
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +47 -30
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +15 -17
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +3 -3
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +12 -3
- package/plugins/ragents.actor-programs/web/api.ts +5 -5
- package/plugins/ragents.actor-programs/web/bridge.ts +2 -3
- package/plugins/ragents.actor-programs/web/chat-state.ts +9 -8
- package/plugins/ragents.actor-programs/web/index.tsx +7 -17
- package/plugins/ragents.actor-programs/web/program-state.ts +3 -3
- package/plugins/ragents.actor-programs/web/state-revision.ts +2 -2
- package/plugins/ragents.ask/ask-payload.ts +25 -0
- package/plugins/ragents.ask/contract.ts +2 -2
- package/plugins/ragents.ask/ragents-plugin.json +7 -0
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +43 -19
- package/plugins/ragents.ask/server/ask-tool.ts +2 -2
- package/plugins/ragents.ask/server/contract.ts +9 -1
- package/plugins/ragents.ask/server/index.ts +8 -10
- package/plugins/ragents.ask/server/tool-contributor.ts +3 -3
- package/plugins/ragents.ask/web/AskActionView.tsx +36 -0
- package/{apps/web/src/chat → plugins/ragents.ask/web}/QuestionCard.tsx +7 -5
- package/plugins/ragents.ask/web/QuestionSection.tsx +22 -21
- package/plugins/ragents.ask/web/api.ts +1 -1
- package/plugins/ragents.ask/web/index.tsx +11 -8
- package/plugins/ragents.browser/provision.ts +9 -8
- package/plugins/ragents.browser/ragents-plugin.json +6 -0
- package/plugins/ragents.browser/server/browser.ts +165 -286
- package/plugins/ragents.browser/server/contract.ts +8 -19
- package/plugins/ragents.browser/server/index.ts +8 -7
- package/plugins/ragents.browser/server/tools.ts +29 -37
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +3 -1
- package/plugins/ragents.documents/contract.ts +4 -2
- package/plugins/ragents.documents/ragents-plugin.json +6 -0
- package/plugins/ragents.documents/server/config.ts +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +2 -2
- package/plugins/ragents.documents/server/files-route.ts +2 -3
- package/plugins/ragents.documents/server/index.ts +10 -11
- package/plugins/ragents.documents/server/show-document-tool.ts +2 -2
- package/plugins/ragents.documents/server/store.ts +3 -3
- package/plugins/ragents.documents/server/tool-contributor.ts +3 -3
- package/plugins/ragents.documents/web/DocumentViewer.tsx +5 -6
- package/plugins/ragents.documents/web/api.ts +1 -1
- package/plugins/ragents.documents/web/index.tsx +4 -4
- package/plugins/ragents.lsp-fsharp/provision.ts +2 -2
- package/plugins/ragents.lsp-fsharp/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-fsharp/server/index.ts +3 -3
- package/plugins/ragents.lsp-fsharp/web/index.tsx +1 -1
- package/plugins/ragents.lsp-roslyn/provision.ts +2 -2
- package/plugins/ragents.lsp-roslyn/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-roslyn/server/index.ts +47 -8
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +145 -0
- package/plugins/ragents.lsp-roslyn/web/index.tsx +1 -1
- package/plugins/ragents.lsp-typescript/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-typescript/server/index.ts +3 -3
- package/plugins/ragents.lsp-typescript/web/index.tsx +1 -1
- package/plugins/ragents.model-relay/ragents-plugin.json +3 -0
- package/plugins/ragents.model-relay/server/config.ts +5 -31
- package/plugins/ragents.model-relay/server/index.ts +5 -6
- package/plugins/ragents.model-relay/server/relay.ts +8 -9
- package/plugins/ragents.orchestration/contract.ts +13 -14
- package/plugins/ragents.orchestration/orchestration.hbs +4 -3
- package/plugins/ragents.orchestration/ragents-plugin.json +6 -0
- package/plugins/ragents.orchestration/server/index.ts +13 -16
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +4 -4
- package/plugins/ragents.orchestration/server/{canvas-tool.ts → surface-tool.ts} +42 -43
- package/plugins/ragents.orchestration/surface.hbs +34 -0
- package/plugins/ragents.orchestration/tiled-layout.ts +16 -16
- package/plugins/ragents.orchestration/web/ActorChat.tsx +16 -14
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +23 -26
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +5 -6
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +7 -5
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +16 -16
- package/plugins/ragents.orchestration/web/{ActorCanvasControls.tsx → ActorSurfaceControls.tsx} +23 -28
- package/plugins/ragents.orchestration/web/ActorTile.tsx +2 -2
- package/plugins/ragents.orchestration/web/Center.tsx +47 -55
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +4 -4
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +7 -7
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +24 -42
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +8 -8
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +5 -5
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/SurfaceStartup.tsx +8 -0
- package/plugins/ragents.orchestration/web/{CanvasTiles.tsx → SurfaceTiles.tsx} +18 -18
- package/plugins/ragents.orchestration/web/{TiledCanvas.tsx → TiledSurface.tsx} +22 -22
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/api.ts +4 -10
- package/plugins/ragents.orchestration/web/constants.ts +0 -1
- package/plugins/ragents.orchestration/web/executions.ts +3 -3
- package/plugins/ragents.orchestration/web/index.tsx +19 -124
- package/plugins/ragents.orchestration/web/program-slot.ts +14 -0
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +95 -0
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +109 -0
- package/plugins/ragents.orchestration/web/{column/RunColumn.tsx → run-panel/RunPanel.tsx} +211 -83
- package/plugins/ragents.orchestration/web/{column/ColumnSettings.tsx → run-panel/RunPanelSettings.tsx} +13 -13
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +165 -0
- package/plugins/ragents.orchestration/web/{column/column-actors.ts → run-panel/run-panel-actors.ts} +14 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +47 -0
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +30 -0
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +71 -0
- package/plugins/ragents.orchestration/web/{column → run-panel}/sheet-status.ts +4 -4
- package/plugins/ragents.orchestration/web/{canvas-stage.ts → surface-entities.ts} +2 -2
- package/plugins/ragents.orchestration/web/{canvas-startup.ts → surface-startup.ts} +7 -10
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +42 -0
- package/plugins/ragents.orchestration/web/tile-docking.ts +14 -14
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +26 -26
- package/plugins/ragents.overseer/contract.ts +20 -14
- package/plugins/ragents.overseer/ragents-plugin.json +3 -0
- package/plugins/ragents.overseer/server/api.ts +34 -23
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +3 -3
- package/plugins/ragents.overseer/server/coordinator.ts +19 -0
- package/plugins/ragents.overseer/server/index.ts +39 -27
- package/plugins/ragents.overseer/server/orientation.ts +4 -5
- package/plugins/ragents.overseer/server/quick-answer.ts +5 -4
- package/plugins/ragents.overseer/server/reset-method.ts +4 -3
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings-method.ts +1 -1
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +20 -19
- package/plugins/ragents.overseer/web/ModelSettings.tsx +4 -4
- package/plugins/ragents.overseer/web/chat-display.ts +1 -1
- package/plugins/ragents.overseer/web/index.tsx +51 -26
- 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/ragents-plugin.json +3 -0
- package/plugins/ragents.processes/server/index.ts +13 -19
- package/plugins/ragents.processes/server/methods.ts +18 -20
- package/plugins/ragents.processes/server/observer.ts +64 -104
- package/plugins/ragents.processes/server/run-processes.ts +24 -0
- package/plugins/ragents.processes/web/ProcessHeader.tsx +13 -16
- package/plugins/ragents.processes/web/index.tsx +2 -1
- package/plugins/ragents.processes/web/processes.ts +1 -1
- package/plugins/ragents.product/ragents-plugin.json +3 -0
- package/plugins/ragents.product/server/config.ts +12 -13
- package/plugins/ragents.product/server/index.ts +15 -16
- package/plugins/ragents.product/server/runtime.ts +2 -2
- package/plugins/ragents.product/web/index.tsx +3 -3
- package/plugins/ragents.profile-distribution/contract.ts +6 -9
- package/plugins/ragents.profile-distribution/ragents-plugin.json +3 -0
- package/plugins/ragents.profile-distribution/server/archive.ts +26 -51
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +9 -16
- package/plugins/ragents.reference/examples.ts +1 -1
- package/plugins/ragents.reference/ragents-plugin.json +3 -0
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/state.ts +2 -2
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +11 -11
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +15 -15
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +4 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +1 -1
- 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 +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +1 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/state.ts +6 -6
- package/plugins/ragents.reference/run-scripts/word-game/src/view.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +7 -8
- package/plugins/ragents.reference/server/index.ts +2 -2
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +2 -2
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +2 -2
- package/plugins/ragents.reference/walkthroughs.ts +19 -19
- package/plugins/ragents.reference/web/StartGuides.tsx +2 -2
- package/plugins/ragents.reference/web/index.tsx +1 -1
- package/plugins/ragents.todo/ragents-plugin.json +3 -0
- package/plugins/ragents.todo/server/index.ts +2 -2
- package/plugins/ragents.todo/server/todo-tool.ts +4 -5
- package/plugins/ragents.todo/server/tool-contributor.ts +2 -2
- package/plugins/ragents.todo/web/TodoSection.tsx +3 -3
- package/plugins/ragents.todo/web/index.ts +1 -1
- package/plugins/ragents.transcript/ragents-plugin.json +3 -0
- package/plugins/ragents.transcript/server/index.ts +4 -4
- package/plugins/ragents.transcript/server/transcript.ts +2 -3
- package/plugins/ragents.watch/ragents-plugin.json +6 -0
- package/plugins/ragents.watch/server/condition.ts +2 -2
- package/plugins/ragents.watch/server/contract.ts +1 -1
- package/plugins/ragents.watch/server/functions.ts +3 -3
- package/plugins/ragents.watch/server/index.ts +3 -3
- package/plugins/ragents.watch/server/observation.ts +6 -6
- package/plugins/ragents.watch/server/service.ts +5 -5
- package/plugins/ragents.workspace/client/workspace-client.ts +129 -58
- package/plugins/ragents.workspace/contract.ts +98 -35
- package/plugins/ragents.workspace/prompt.hbs +1 -8
- package/plugins/ragents.workspace/ragents-plugin.json +3 -0
- package/plugins/ragents.workspace/server/binding.ts +122 -39
- package/plugins/ragents.workspace/server/browse-route.ts +96 -103
- package/plugins/ragents.workspace/server/clients.ts +236 -68
- package/plugins/ragents.workspace/server/config.ts +30 -0
- package/plugins/ragents.workspace/server/index.ts +61 -26
- package/plugins/ragents.workspace/server/runtime.ts +271 -46
- package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/shell-platform.ts +3 -5
- package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/workspace-tool-naming.ts +7 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +11 -8
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +115 -61
- package/plugins/ragents.workspace/web/api.ts +1 -1
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +2 -7
- package/ragents.config.showcase.ts +2 -5
- package/scripts/agent/agent-cli.ts +265 -107
- package/scripts/agent/journal.ts +8 -4
- package/scripts/agent/turn-control.ts +19 -0
- package/scripts/package/build-package.ts +68 -13
- package/scripts/package/ragents.mjs +4 -2
- package/scripts/plugin/build-builtin-plugins.ts +52 -0
- package/scripts/plugin/plugin-cli.ts +99 -0
- package/scripts/provision/run-provision.ts +20 -18
- package/scripts/remote/connect.ts +75 -53
- package/scripts/remote/start.ts +2 -3
- package/scripts/workspace-client/run-workspace-client.ts +15 -9
- package/apps/server/agent-home/settings.json +0 -3
- package/apps/server/src/chat-attachments.ts +0 -52
- package/apps/server/src/chat-events.ts +0 -185
- package/apps/server/src/plugin-support/asset-path.ts +0 -4
- package/apps/server/src/profile/plugin-list.ts +0 -19
- package/apps/server/src/web-build.ts +0 -82
- package/apps/web/column.html +0 -12
- package/apps/web/index.html +0 -12
- package/apps/web/src/StartSurface.tsx +0 -161
- package/apps/web/src/chat/ChatInputToolbar.tsx +0 -488
- package/apps/web/src/chat/ChatMessages.tsx +0 -666
- package/apps/web/src/chat/ChatPanel.tsx +0 -61
- package/apps/web/src/chat/DetailModeSwitch.tsx +0 -58
- package/apps/web/src/chat/Markdown.tsx +0 -104
- package/apps/web/src/chat/StepPopover.tsx +0 -82
- package/apps/web/src/chat/WorkingScenes.tsx +0 -235
- package/apps/web/src/chat/attachments.ts +0 -53
- package/apps/web/src/chat/chat-scroll.ts +0 -41
- package/apps/web/src/chat/texts.ts +0 -61
- package/apps/web/src/chat/types.ts +0 -26
- package/apps/web/src/column/ColumnApp.tsx +0 -234
- package/apps/web/src/column/column-location.ts +0 -30
- package/apps/web/src/column/host-contract.ts +0 -93
- package/apps/web/src/panel/OverviewPage.tsx +0 -215
- package/apps/web/src/panel/SettingsPage.tsx +0 -98
- package/apps/web/src/panel/target-state.ts +0 -78
- package/apps/web/src/plugin-discovery.ts +0 -5
- package/apps/web/src/virtual-plugins.d.ts +0 -3
- package/apps/web/vite.config.ts +0 -140
- package/packages/agent/src/config.ts +0 -161
- package/packages/agent/src/core/agent-session-runtime.ts +0 -548
- package/packages/agent/src/core/agent-session-services.ts +0 -224
- package/packages/agent/src/core/agent-session.ts +0 -3357
- package/packages/agent/src/core/auth-guidance.ts +0 -18
- package/packages/agent/src/core/auth-storage.ts +0 -271
- package/packages/agent/src/core/bash-executor.ts +0 -156
- package/packages/agent/src/core/compaction/branch-summarization.ts +0 -372
- package/packages/agent/src/core/defaults.ts +0 -3
- package/packages/agent/src/core/diagnostics.ts +0 -15
- package/packages/agent/src/core/event-bus.ts +0 -33
- package/packages/agent/src/core/exec.ts +0 -107
- package/packages/agent/src/core/experimental.ts +0 -3
- package/packages/agent/src/core/extensions/index.ts +0 -149
- package/packages/agent/src/core/extensions/loader.ts +0 -709
- package/packages/agent/src/core/extensions/runner.ts +0 -1132
- package/packages/agent/src/core/extensions/types.ts +0 -1460
- package/packages/agent/src/core/extensions/wrapper.ts +0 -45
- package/packages/agent/src/core/footer-data-provider.ts +0 -388
- package/packages/agent/src/core/http-dispatcher.ts +0 -106
- package/packages/agent/src/core/index.ts +0 -78
- package/packages/agent/src/core/model-config.ts +0 -287
- package/packages/agent/src/core/model-registry.ts +0 -126
- package/packages/agent/src/core/model-resolver.ts +0 -675
- package/packages/agent/src/core/output-guard.ts +0 -108
- package/packages/agent/src/core/package-manager.ts +0 -2441
- package/packages/agent/src/core/prompt-templates.ts +0 -284
- package/packages/agent/src/core/resolve-config-value.ts +0 -287
- package/packages/agent/src/core/resource-loader.ts +0 -946
- package/packages/agent/src/core/runtime-credentials.ts +0 -48
- package/packages/agent/src/core/sdk.ts +0 -358
- package/packages/agent/src/core/session-cwd.ts +0 -59
- package/packages/agent/src/core/session-manager.ts +0 -1623
- package/packages/agent/src/core/settings-manager.ts +0 -1212
- package/packages/agent/src/core/slash-commands.ts +0 -41
- package/packages/agent/src/core/source-info.ts +0 -40
- package/packages/agent/src/core/system-prompt.ts +0 -147
- package/packages/agent/src/core/timings.ts +0 -50
- package/packages/agent/src/core/tools/tool-definition-wrapper.ts +0 -45
- package/packages/agent/src/core/trust-manager.ts +0 -244
- package/packages/agent/src/utils/ansi.ts +0 -60
- package/packages/agent/src/utils/fs-watch.ts +0 -30
- package/packages/agent/src/utils/git.ts +0 -226
- package/packages/agent/src/utils/json.ts +0 -6
- package/packages/agent/src/utils/tools-manager.ts +0 -63
- package/packages/agent-core/package.json +0 -32
- package/packages/ai/src/api/openrouter-images.lazy.ts +0 -10
- package/packages/ai/src/api/openrouter-images.ts +0 -98
- package/packages/ai/src/auth/credential-store.ts +0 -51
- package/packages/ai/src/compat/extension-oauth-types.ts +0 -45
- package/packages/ai/src/image-models.generated.ts +0 -533
- package/packages/ai/src/images-models.ts +0 -274
- package/packages/ai/src/models-store.ts +0 -38
- package/packages/ai/src/oauth.ts +0 -10
- package/packages/ai/src/providers/openrouter-images.ts +0 -14
- package/packages/ai/src/session-resources.ts +0 -24
- package/packages/ai/src/utils/abort-signals.ts +0 -41
- package/packages/ai/src/utils/deferred-tools.ts +0 -39
- package/packages/ai/src/utils/hash.ts +0 -13
- package/packages/ai/src/utils/node-http-proxy.ts +0 -112
- package/plugins/ragents.actor-programs/server/client-runtime.ts +0 -16
- package/plugins/ragents.ask/web/constants.ts +0 -1
- package/plugins/ragents.lsp-roslyn/web/api.ts +0 -10
- package/plugins/ragents.orchestration/web/CanvasStartup.tsx +0 -14
- package/plugins/ragents.orchestration/web/canvas-view-settings.ts +0 -42
- package/plugins/ragents.orchestration/web/column/AddresseeControl.tsx +0 -116
- package/plugins/ragents.orchestration/web/column/column-settings.ts +0 -47
- package/plugins/ragents.orchestration/web/column/column-state.ts +0 -68
- package/plugins/ragents.orchestration/web/contract.ts +0 -25
- package/plugins/ragents.product/model-settings-contract.ts +0 -10
- package/plugins/ragents.profile-distribution/server/web.ts +0 -24
- /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/authoring-contracts.ts +0 -0
- /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/runtime-libraries.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/prompt-reader.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram.css +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/form-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/frame-layout.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/table-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/viewer-contracts.d.ts +0 -0
- /package/{plugins/ragents.orchestration/canvas.hbs → bundles/ragents.orchestration/surface.hbs} +0 -0
- /package/packages/{agent-core/src → agent/src/loop}/index.ts +0 -0
- /package/packages/{agent-core/src → agent/src/loop}/uuid.ts +0 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import vm from "node:vm";
|
|
4
|
+
import { build } from "esbuild";
|
|
5
|
+
import ts from "typescript";
|
|
6
|
+
import { HOST_API_VERSION, LIBRARY, hostApi, hostApiModules, type HostApiHalf } from "../host-api.js";
|
|
7
|
+
import { HOST_API_RECORD_FILE, hostRoot, type HostApiRecord } from "../host-version.js";
|
|
8
|
+
|
|
9
|
+
export { readHostApiRecord, type HostApiRecord } from "../host-version.js";
|
|
10
|
+
|
|
11
|
+
export const hostApiRecordFile = (root = hostRoot()): string => path.join(root, HOST_API_RECORD_FILE);
|
|
12
|
+
|
|
13
|
+
/** Where the host itself resolves a module of each half: its tsconfig and an importer inside the host. */
|
|
14
|
+
export const HALF_PLACES: Readonly<Record<HostApiHalf, { readonly app: string; readonly config: string; readonly importer: string }>> = {
|
|
15
|
+
server: { app: "apps/server", config: "apps/server/tsconfig.json", importer: "apps/server/src/main.ts" },
|
|
16
|
+
web: { app: "apps/web", config: "apps/web/tsconfig.json", importer: "apps/web/src/main.tsx" },
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const parsedConfig = (file: string): ts.ParsedCommandLine => {
|
|
20
|
+
const parsed = ts.getParsedCommandLineOfConfigFile(file, {}, {
|
|
21
|
+
...ts.sys,
|
|
22
|
+
onUnRecoverableConfigFileDiagnostic: (diagnostic) => {
|
|
23
|
+
throw new Error(ts.flattenDiagnosticMessageText(diagnostic.messageText, " "));
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
if (!parsed) throw new Error(`${file} ist keine gültige tsconfig`);
|
|
27
|
+
return parsed;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
interface TypeView {
|
|
31
|
+
readonly names: readonly string[];
|
|
32
|
+
/** Resolved through node_modules, so the implementation may be JavaScript whose types promise more than it has. */
|
|
33
|
+
readonly library: boolean;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Value exports as TypeScript sees them; a module with export= also has a default import, a host declaration file has no values at all. */
|
|
37
|
+
export const typeViews = (half: HostApiHalf, root = hostRoot()): ReadonlyMap<string, TypeView> => {
|
|
38
|
+
const place = HALF_PLACES[half];
|
|
39
|
+
const options = parsedConfig(path.join(root, place.config)).options;
|
|
40
|
+
const importer = path.join(root, place.importer);
|
|
41
|
+
const resolved = hostApiModules(half).map((specifier) => {
|
|
42
|
+
const module = ts.resolveModuleName(specifier, importer, options, ts.sys).resolvedModule;
|
|
43
|
+
if (!module) throw new Error(`${specifier} ist für die ${half}-Hälfte nicht auflösbar`);
|
|
44
|
+
return { specifier, module };
|
|
45
|
+
});
|
|
46
|
+
const probe = path.join(path.dirname(importer), "__host-api-probe__.ts");
|
|
47
|
+
const probeText = resolved.map(({ specifier }, index) => `import * as module${index} from ${JSON.stringify(specifier)};`).join("\n");
|
|
48
|
+
const compilerOptions = { ...options, noEmit: true };
|
|
49
|
+
const host = ts.createCompilerHost(compilerOptions);
|
|
50
|
+
const readSource = host.getSourceFile.bind(host);
|
|
51
|
+
host.getSourceFile = (file, language, onError, create) =>
|
|
52
|
+
path.resolve(file) === probe ? ts.createSourceFile(file, probeText, language, true) : readSource(file, language, onError, create);
|
|
53
|
+
const program = ts.createProgram({ rootNames: [probe], options: compilerOptions, host });
|
|
54
|
+
const checker = program.getTypeChecker();
|
|
55
|
+
const imports = program.getSourceFile(probe)!.statements.filter(ts.isImportDeclaration);
|
|
56
|
+
return new Map(resolved.map(({ specifier, module }, index) => {
|
|
57
|
+
const symbol = checker.getSymbolAtLocation(imports[index]!.moduleSpecifier);
|
|
58
|
+
if (!symbol) throw new Error(`${specifier}: ${module.resolvedFileName} hat kein Modulsymbol`);
|
|
59
|
+
const values = checker.getExportsOfModule(symbol).filter((exported) => {
|
|
60
|
+
const target = exported.flags & ts.SymbolFlags.Alias ? checker.getAliasedSymbol(exported) : exported;
|
|
61
|
+
return (target.flags & ts.SymbolFlags.Value) !== 0;
|
|
62
|
+
}).map((exported) => exported.name);
|
|
63
|
+
const names = symbol.exports?.has(ts.InternalSymbolName.ExportEquals) ? [...values, "default"] : values;
|
|
64
|
+
const library = module.isExternalLibraryImport === true;
|
|
65
|
+
const declarationOnly = !library && /\.d\.[cm]?ts$/.test(module.resolvedFileName);
|
|
66
|
+
return [specifier, { names: declarationOnly ? [] : [...new Set(names)].sort(), library }];
|
|
67
|
+
}));
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const RUNTIME_SCRIPT = `
|
|
71
|
+
const [mode, list] = process.argv.slice(1);
|
|
72
|
+
const found = {};
|
|
73
|
+
for (const specifier of JSON.parse(list)) {
|
|
74
|
+
const location = import.meta.resolve(specifier);
|
|
75
|
+
if (/\\.(ts|tsx|mts|cts)$/.test(location)) continue;
|
|
76
|
+
found[specifier] = mode === "import" ? Object.keys(await import(specifier)) : [];
|
|
77
|
+
}
|
|
78
|
+
process.stdout.write(JSON.stringify(found));
|
|
79
|
+
`;
|
|
80
|
+
|
|
81
|
+
/** Library modules whose implementation is JavaScript, resolved from the host app of the half; with import, their names as Node sees them. */
|
|
82
|
+
const javaScriptModules = (half: HostApiHalf, specifiers: readonly string[], mode: "import" | "resolve", root: string): Readonly<Record<string, readonly string[]>> =>
|
|
83
|
+
JSON.parse(execFileSync(process.execPath, ["--input-type=module", "-e", RUNTIME_SCRIPT, mode, JSON.stringify(specifiers)], {
|
|
84
|
+
cwd: path.join(root, HALF_PLACES[half].app),
|
|
85
|
+
encoding: "utf8",
|
|
86
|
+
stdio: ["ignore", "pipe", "inherit"],
|
|
87
|
+
})) as Record<string, readonly string[]>;
|
|
88
|
+
|
|
89
|
+
/** The register of the web half: every listed module as a namespace, keyed by its specifier. */
|
|
90
|
+
export const webRegisterSource = (specifiers: readonly string[] = hostApiModules("web")): string => [
|
|
91
|
+
...specifiers.map((specifier, index) => `import * as module${index} from ${JSON.stringify(specifier)};`),
|
|
92
|
+
`export const hostModules = {`,
|
|
93
|
+
...specifiers.map((specifier, index) => ` ${JSON.stringify(specifier)}: module${index},`),
|
|
94
|
+
`};`,
|
|
95
|
+
].join("\n");
|
|
96
|
+
|
|
97
|
+
/** Bundles the register the way a production browser build does, with the host's own resolution. */
|
|
98
|
+
export const bundleWebRegister = async (specifiers: readonly string[], format: "cjs" | "iife", root = hostRoot()): Promise<string> => {
|
|
99
|
+
const result = await build({
|
|
100
|
+
stdin: { contents: webRegisterSource(specifiers), resolveDir: path.join(root, "apps/web/src"), loader: "ts", sourcefile: "host-modules.ts" },
|
|
101
|
+
bundle: true,
|
|
102
|
+
write: false,
|
|
103
|
+
platform: "browser",
|
|
104
|
+
format,
|
|
105
|
+
globalName: format === "iife" ? "__ragentsRegister" : undefined,
|
|
106
|
+
target: "es2022",
|
|
107
|
+
jsx: "automatic",
|
|
108
|
+
define: { "process.env.NODE_ENV": JSON.stringify("production"), "import.meta.hot": "undefined" },
|
|
109
|
+
loader: { ".css": "empty", ".svg": "empty", ".png": "empty", ".woff2": "empty" },
|
|
110
|
+
logLevel: "silent",
|
|
111
|
+
});
|
|
112
|
+
return result.outputFiles[0]!.text;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/** Names of library modules as a browser bundle sees them, evaluated without a page. */
|
|
116
|
+
const webRuntimeNames = async (specifiers: readonly string[], root: string): Promise<Readonly<Record<string, readonly string[]>>> => {
|
|
117
|
+
const code = await bundleWebRegister(specifiers, "cjs", root);
|
|
118
|
+
const module = { exports: {} as { hostModules?: Record<string, object> } };
|
|
119
|
+
// Browser builds such as the one micromark uses for entities create an element while loading.
|
|
120
|
+
const document = { createElement: () => ({}) };
|
|
121
|
+
vm.runInNewContext(code, { module, exports: module.exports, console, setTimeout, clearTimeout, queueMicrotask, TextEncoder, TextDecoder, URL, document });
|
|
122
|
+
const modules = module.exports.hostModules;
|
|
123
|
+
if (!modules) throw new Error("Das Register der Web-Hälfte liefert keine Module");
|
|
124
|
+
return Object.fromEntries(Object.entries(modules).map(([specifier, namespace]) => [specifier, Object.keys(namespace)]));
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/** A host module names exactly what it offers, each name a value it exports; a library counts whole. */
|
|
128
|
+
const listedNames = (half: HostApiHalf, specifier: string, view: TypeView): readonly string[] | typeof LIBRARY => {
|
|
129
|
+
const listed = hostApi[half][specifier]!;
|
|
130
|
+
const hostCode = specifier.startsWith("@ragents/");
|
|
131
|
+
if (listed === LIBRARY) {
|
|
132
|
+
if (hostCode) throw new Error(`${specifier} ist Code des Hosts, keine Bibliothek; host-api.ts nennt seine Namen einzeln`);
|
|
133
|
+
return LIBRARY;
|
|
134
|
+
}
|
|
135
|
+
if (!hostCode) throw new Error(`${specifier} ist eine Bibliothek; host-api.ts gibt sie ganz frei`);
|
|
136
|
+
const missing = listed.filter((name) => !view.names.includes(name));
|
|
137
|
+
if (missing.length > 0) throw new Error(`host-api.ts nennt für ${specifier} ${missing.join(", ")}, das Modul exportiert es nicht als Wert`);
|
|
138
|
+
return [...listed].sort();
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/** The value names per module: the list of a host module, for a library its types narrowed to what it really has at runtime. */
|
|
142
|
+
export const hostApiNames = async (root = hostRoot()): Promise<HostApiRecord> => {
|
|
143
|
+
const half = async (which: HostApiHalf): Promise<Record<string, readonly string[]>> => {
|
|
144
|
+
const views = typeViews(which, root);
|
|
145
|
+
const candidates = [...views].filter(([, view]) => view.library).map(([specifier]) => specifier);
|
|
146
|
+
const runtime = which === "server"
|
|
147
|
+
? javaScriptModules("server", candidates, "import", root)
|
|
148
|
+
: await webRuntimeNames(Object.keys(javaScriptModules("web", candidates, "resolve", root)), root);
|
|
149
|
+
return Object.fromEntries([...views].map(([specifier, view]) => {
|
|
150
|
+
const listed = listedNames(which, specifier, view);
|
|
151
|
+
if (listed !== LIBRARY) return [specifier, listed];
|
|
152
|
+
const present = runtime[specifier];
|
|
153
|
+
return [specifier, present ? view.names.filter((name) => present.includes(name)) : view.names];
|
|
154
|
+
}));
|
|
155
|
+
};
|
|
156
|
+
return { version: HOST_API_VERSION, server: await half("server"), web: await half("web") };
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export const hostApiRecordText = (record: HostApiRecord): string => `${JSON.stringify(record, null, 2)}\n`;
|
|
160
|
+
|
|
161
|
+
export interface HostApiChange {
|
|
162
|
+
readonly half: HostApiHalf;
|
|
163
|
+
readonly specifier: string;
|
|
164
|
+
readonly added: readonly string[];
|
|
165
|
+
readonly removed: readonly string[];
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/** What differs between two records, per module; a module that disappeared lists all its names as removed. */
|
|
169
|
+
export const hostApiChanges = (stored: HostApiRecord, current: HostApiRecord): readonly HostApiChange[] =>
|
|
170
|
+
(["server", "web"] as const).flatMap((half) => {
|
|
171
|
+
const specifiers = [...new Set([...Object.keys(stored[half]), ...Object.keys(current[half])])].sort();
|
|
172
|
+
return specifiers.flatMap((specifier) => {
|
|
173
|
+
const before = stored[half][specifier] ?? [];
|
|
174
|
+
const after = current[half][specifier] ?? [];
|
|
175
|
+
const added = after.filter((name) => !before.includes(name));
|
|
176
|
+
const removed = before.filter((name) => !after.includes(name));
|
|
177
|
+
return added.length > 0 || removed.length > 0 ? [{ half, specifier, added, removed }] : [];
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
export const describeHostApiChange = (change: HostApiChange): string =>
|
|
182
|
+
`${change.half} ${change.specifier}: ${[
|
|
183
|
+
...change.added.map((name) => `+${name}`),
|
|
184
|
+
...change.removed.map((name) => `-${name}`),
|
|
185
|
+
].join(" ")}`;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import type { HostApiHalf } from "../host-api.js";
|
|
4
|
+
import { pluginsRoot } from "../plugin-support/plugins-root.js";
|
|
5
|
+
|
|
6
|
+
export const PLUGIN_DESCRIPTION_FILE = "ragents-plugin.json";
|
|
7
|
+
|
|
8
|
+
/** What the author states about a plugin source folder; entries stay convention. */
|
|
9
|
+
export interface PluginDescription {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly exports: Readonly<Record<HostApiHalf, readonly string[]>>;
|
|
12
|
+
readonly assets: readonly string[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface PluginSource {
|
|
16
|
+
readonly folder: string;
|
|
17
|
+
readonly description: PluginDescription;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const ID_PATTERN = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/;
|
|
21
|
+
/** Places of the bundle the build tool writes itself; an asset there would overwrite its output or publish sources under /plugins/<id>/web/. */
|
|
22
|
+
const RESERVED_ASSET_ROOTS = new Set(["server", "web", "ragents-bundle.json"]);
|
|
23
|
+
const DESCRIPTION_KEYS = new Set(["id", "exports", "assets"]);
|
|
24
|
+
const HALVES = new Set(["server", "web"]);
|
|
25
|
+
|
|
26
|
+
const stringList = (value: unknown, where: string): readonly string[] => {
|
|
27
|
+
if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string" || entry.length === 0)) {
|
|
28
|
+
throw new Error(`${where} muss eine Liste von Pfaden sein`);
|
|
29
|
+
}
|
|
30
|
+
return value as readonly string[];
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** A relative path inside the plugin folder, written with forward slashes and without leaving the folder. */
|
|
34
|
+
const insidePath = (value: string, where: string): string => {
|
|
35
|
+
if (path.isAbsolute(value) || value.includes("\\") || value.split("/").some((part) => part === ".." || part === "." || part === "")) {
|
|
36
|
+
throw new Error(`${where}: ${value} ist kein relativer Pfad im Plugin-Ordner`);
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** The source file behind a module path without extension, the way a bundler finds it. */
|
|
42
|
+
export const sourceFileOf = (stem: string): string | undefined =>
|
|
43
|
+
[`${stem}.ts`, `${stem}.tsx`, path.join(stem, "index.ts"), path.join(stem, "index.tsx")]
|
|
44
|
+
.find((candidate) => statSync(candidate, { throwIfNoEntry: false })?.isFile() === true);
|
|
45
|
+
|
|
46
|
+
export const readPluginDescription = (folder: string): PluginDescription => {
|
|
47
|
+
const file = path.join(folder, PLUGIN_DESCRIPTION_FILE);
|
|
48
|
+
if (!existsSync(file)) {
|
|
49
|
+
throw new Error(`${folder} hat keine ${PLUGIN_DESCRIPTION_FILE}; ein Plugin beschreibt sich dort mit { "id": "${path.basename(folder)}" }`);
|
|
50
|
+
}
|
|
51
|
+
const raw = JSON.parse(readFileSync(file, "utf8")) as unknown;
|
|
52
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) throw new Error(`${file} muss ein Objekt enthalten`);
|
|
53
|
+
const record = raw as Record<string, unknown>;
|
|
54
|
+
const unknown = Object.keys(record).filter((key) => !DESCRIPTION_KEYS.has(key));
|
|
55
|
+
if (unknown.length > 0) throw new Error(`${file}: unbekannte Felder ${unknown.join(", ")}; erlaubt sind id, exports und assets`);
|
|
56
|
+
const id = record.id;
|
|
57
|
+
if (typeof id !== "string" || !ID_PATTERN.test(id)) throw new Error(`${file}: id muss eine Kennung wie acme.tickets sein`);
|
|
58
|
+
if (id !== path.basename(folder)) throw new Error(`${file}: die Kennung ${id} weicht vom Ordnernamen ${path.basename(folder)} ab`);
|
|
59
|
+
const exportsValue = record.exports ?? {};
|
|
60
|
+
if (typeof exportsValue !== "object" || exportsValue === null || Array.isArray(exportsValue)) {
|
|
61
|
+
throw new Error(`${file}: exports muss ein Objekt mit server und web sein`);
|
|
62
|
+
}
|
|
63
|
+
const halves = Object.keys(exportsValue).filter((half) => !HALVES.has(half));
|
|
64
|
+
if (halves.length > 0) throw new Error(`${file}: exports kennt nur server und web, nicht ${halves.join(", ")}`);
|
|
65
|
+
const exportsOf = (half: HostApiHalf): readonly string[] => {
|
|
66
|
+
const names = stringList((exportsValue as Record<string, unknown>)[half] ?? [], `${file}: exports.${half}`)
|
|
67
|
+
.map((name) => insidePath(name, `${file}: exports.${half}`));
|
|
68
|
+
for (const name of names) {
|
|
69
|
+
if (/\.(js|ts|tsx|mjs)$/.test(name)) throw new Error(`${file}: der Export ${name} wird ohne Endung genannt`);
|
|
70
|
+
if (!sourceFileOf(path.join(folder, name))) throw new Error(`${file}: der Export ${name} für ${half} hat keine Quelldatei`);
|
|
71
|
+
}
|
|
72
|
+
return names;
|
|
73
|
+
};
|
|
74
|
+
const assets = stringList(record.assets ?? [], `${file}: assets`).map((name) => insidePath(name, `${file}: assets`));
|
|
75
|
+
for (const name of assets) {
|
|
76
|
+
if (RESERVED_ASSET_ROOTS.has(name.split("/")[0]!)) throw new Error(`${file}: das Asset ${name} liegt unter ${name.split("/")[0]}, das schreibt das Bauwerkzeug selbst`);
|
|
77
|
+
if (!existsSync(path.join(folder, name))) throw new Error(`${file}: das Asset ${name} fehlt im Plugin-Ordner`);
|
|
78
|
+
}
|
|
79
|
+
return { id, exports: { server: exportsOf("server"), web: exportsOf("web") }, assets };
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const readPluginSource = (folder: string): PluginSource => {
|
|
83
|
+
const given = path.resolve(folder);
|
|
84
|
+
if (!statSync(given, { throwIfNoEntry: false })?.isDirectory()) throw new Error(`${given} ist kein Ordner`);
|
|
85
|
+
const real = realpathSync.native(given);
|
|
86
|
+
return { folder: real, description: readPluginDescription(real) };
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/** The nearest plugin folder that contains a file, if the file belongs to a plugin at all. */
|
|
90
|
+
export const owningPluginFolder = (file: string): string | undefined => {
|
|
91
|
+
const parts = path.dirname(file).split(path.sep);
|
|
92
|
+
for (let length = parts.length; length > 1; length -= 1) {
|
|
93
|
+
const candidate = parts.slice(0, length).join(path.sep) || path.sep;
|
|
94
|
+
if (parts[length - 1] === "node_modules") return undefined;
|
|
95
|
+
if (existsSync(path.join(candidate, PLUGIN_DESCRIPTION_FILE))) return candidate;
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/** The export a file stands for in its plugin, for the given half. */
|
|
101
|
+
export const exportOfFile = (source: PluginSource, half: HostApiHalf, file: string): string | undefined =>
|
|
102
|
+
source.description.exports[half].find((name) => sourceFileOf(path.join(source.folder, name)) === file);
|
|
103
|
+
|
|
104
|
+
/** Plugins a build may import by id: the siblings of the built folders first, then the host's own. */
|
|
105
|
+
export const pluginCatalog = (folders: readonly string[], builtIn = pluginsRoot): ((id: string) => PluginSource | undefined) => {
|
|
106
|
+
const roots = [...new Set(folders.map((folder) => path.dirname(path.resolve(folder)))), builtIn];
|
|
107
|
+
const known = new Map<string, PluginSource | undefined>();
|
|
108
|
+
return (id) => {
|
|
109
|
+
if (!ID_PATTERN.test(id)) return undefined;
|
|
110
|
+
if (known.has(id)) return known.get(id);
|
|
111
|
+
const found = roots.map((root) => path.join(root, id)).filter((folder) => existsSync(path.join(folder, PLUGIN_DESCRIPTION_FILE)));
|
|
112
|
+
const distinct = [...new Set(found.map((folder) => realpathSync.native(folder)))];
|
|
113
|
+
if (distinct.length > 1) throw new Error(`Das Plugin ${id} gibt es mehrfach: ${distinct.join(", ")}`);
|
|
114
|
+
const source = distinct[0] ? readPluginSource(distinct[0]) : undefined;
|
|
115
|
+
known.set(id, source);
|
|
116
|
+
return source;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { readdirSync, existsSync } from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import ts from "typescript";
|
|
4
|
+
import type { HostApiHalf } from "../host-api.js";
|
|
5
|
+
import { hostRoot } from "../host-version.js";
|
|
6
|
+
import { PLUGIN_DESCRIPTION_FILE, sourceFileOf, type PluginSource } from "./plugin-description.js";
|
|
7
|
+
|
|
8
|
+
/** The host's compiler settings for plugin code anywhere on disk; authors may extend the same file for their editor. */
|
|
9
|
+
export const PLUGIN_TSCONFIG: Readonly<Record<HostApiHalf, string>> = {
|
|
10
|
+
server: "apps/server/tsconfig.plugin.json",
|
|
11
|
+
web: "apps/web/tsconfig.plugin.json",
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/** The files a half starts from: its entry, the provisioning for the server, and the declared exports. */
|
|
15
|
+
export const halfEntries = (source: PluginSource, half: HostApiHalf): readonly string[] => {
|
|
16
|
+
const own = half === "server" ? ["server/index", "provision"] : ["web/index"];
|
|
17
|
+
return [...own, ...source.description.exports[half]]
|
|
18
|
+
.map((name) => sourceFileOf(path.join(source.folder, name)))
|
|
19
|
+
.filter((file): file is string => file !== undefined);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const configOptions = (file: string): ts.CompilerOptions => {
|
|
23
|
+
const parsed = ts.getParsedCommandLineOfConfigFile(file, {}, {
|
|
24
|
+
...ts.sys,
|
|
25
|
+
onUnRecoverableConfigFileDiagnostic: (diagnostic) => {
|
|
26
|
+
throw new Error(ts.flattenDiagnosticMessageText(diagnostic.messageText, " "));
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
if (!parsed) throw new Error(`${file} ist keine gültige tsconfig`);
|
|
30
|
+
return parsed.options;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/** Plugins beside the built ones can be imported by id; the host's own resolve through the plugin tsconfig. */
|
|
34
|
+
const siblingPaths = (sources: readonly PluginSource[]): ts.MapLike<string[]> => {
|
|
35
|
+
const parents = [...new Set(sources.map((source) => path.dirname(source.folder)))];
|
|
36
|
+
return Object.fromEntries(parents.flatMap((parent) => readdirSync(parent, { withFileTypes: true })
|
|
37
|
+
.filter((entry) => entry.isDirectory() && existsSync(path.join(parent, entry.name, PLUGIN_DESCRIPTION_FILE)))
|
|
38
|
+
.map((entry) => [`@ragents/plugins/${entry.name}/*`, [path.join(parent, entry.name, "*")]])));
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const inside = (folder: string, file: string): boolean => file.startsWith(folder + path.sep);
|
|
42
|
+
|
|
43
|
+
/** Type errors per plugin id; one program per half covers all given plugins, errors in host files stay the host's. */
|
|
44
|
+
export const typecheckPlugins = (sources: readonly PluginSource[], root = hostRoot()): ReadonlyMap<string, readonly string[]> => {
|
|
45
|
+
const problems = new Map<string, string[]>(sources.map((source) => [source.description.id, []]));
|
|
46
|
+
for (const half of ["server", "web"] as const) {
|
|
47
|
+
const rootNames = sources.flatMap((source) => halfEntries(source, half));
|
|
48
|
+
if (rootNames.length === 0) continue;
|
|
49
|
+
const base = configOptions(path.join(root, PLUGIN_TSCONFIG[half]));
|
|
50
|
+
const options: ts.CompilerOptions = { ...base, noEmit: true, paths: { ...base.paths, ...siblingPaths(sources) } };
|
|
51
|
+
const program = ts.createProgram({ rootNames, options });
|
|
52
|
+
for (const diagnostic of ts.getPreEmitDiagnostics(program)) {
|
|
53
|
+
const text = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
54
|
+
const file = diagnostic.file?.fileName ? path.resolve(diagnostic.file.fileName) : undefined;
|
|
55
|
+
if (!file) {
|
|
56
|
+
for (const list of problems.values()) list.push(`${half}: ${text}`);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const owner = sources.find((source) => inside(source.folder, file));
|
|
60
|
+
if (!owner) continue;
|
|
61
|
+
const { line, character } = diagnostic.file!.getLineAndCharacterOfPosition(diagnostic.start ?? 0);
|
|
62
|
+
problems.get(owner.description.id)!.push(`${path.relative(owner.folder, file)}:${line + 1}:${character + 1}: ${text}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return problems;
|
|
66
|
+
};
|
|
@@ -7,13 +7,13 @@ import { build } from "esbuild";
|
|
|
7
7
|
import ts from "typescript";
|
|
8
8
|
import { Type, type Static } from "typebox";
|
|
9
9
|
import { Value } from "typebox/value";
|
|
10
|
-
import { canonicalHash, typeScriptTypesFromSchema, type NativeTypeScriptExecutor, type RunCapabilityDescriptor, scriptStdDeclarations } from "@
|
|
10
|
+
import { canonicalHash, schemaComplaints, typeScriptTypesFromSchema, type NativeTypeScriptExecutor, type RunCapabilityDescriptor, scriptStdDeclarations } from "@ragents/engine";
|
|
11
11
|
import { runtimeLibraries, webRuntimeLibraries } from "./runtime-libraries.js";
|
|
12
12
|
|
|
13
|
-
const webRequire = createRequire(new URL("
|
|
14
|
-
const rootRequire = createRequire(new URL("
|
|
15
|
-
const serverRequire = createRequire(new URL("../../../
|
|
16
|
-
const serverTypeRoot = fileURLToPath(new URL("../../../
|
|
13
|
+
const webRequire = createRequire(new URL("../../../../web/package.json", import.meta.url));
|
|
14
|
+
const rootRequire = createRequire(new URL("../../../../../package.json", import.meta.url));
|
|
15
|
+
const serverRequire = createRequire(new URL("../../../package.json", import.meta.url));
|
|
16
|
+
const serverTypeRoot = fileURLToPath(new URL("../../../node_modules/@types", import.meta.url));
|
|
17
17
|
const libraryDirectory = (name: string): string => {
|
|
18
18
|
const resolver = (webRuntimeLibraries as readonly string[]).includes(name) ? webRequire
|
|
19
19
|
: name === "@types/node" || name === "tsx" ? serverRequire : rootRequire;
|
|
@@ -86,9 +86,10 @@ const sdkRuntime = `export const defineActor = (contract, implementation) => ({
|
|
|
86
86
|
let testingBundle: Promise<string> | undefined;
|
|
87
87
|
const testingRuntime = (): Promise<string> => testingBundle ??= build({
|
|
88
88
|
stdin: {contents: `
|
|
89
|
-
import {createRunContext} from ${JSON.stringify(fileURLToPath(new URL("
|
|
90
|
-
import {assertJsonValue} from ${JSON.stringify(fileURLToPath(new URL("
|
|
91
|
-
import {createScriptStd} from ${JSON.stringify(fileURLToPath(new URL("
|
|
89
|
+
import {createRunContext} from ${JSON.stringify(fileURLToPath(new URL("../../../../../packages/ragents/src/typescript/run-context.ts",import.meta.url)))};
|
|
90
|
+
import {assertJsonValue} from ${JSON.stringify(fileURLToPath(new URL("../../../../../packages/ragents/src/domain/json.ts",import.meta.url)))};
|
|
91
|
+
import {createScriptStd} from ${JSON.stringify(fileURLToPath(new URL("../../../../../packages/ragents/src/script/std.ts",import.meta.url)))};
|
|
92
|
+
import {schemaComplaints} from ${JSON.stringify(fileURLToPath(new URL("../../../../../packages/ragents/src/domain/schema-errors.ts",import.meta.url)))};
|
|
92
93
|
import {Value} from "typebox/value";
|
|
93
94
|
export function createTestContextWithContracts(options, contracts) {
|
|
94
95
|
let state = structuredClone(options.state);
|
|
@@ -100,10 +101,10 @@ export function createTestContextWithContracts(options, contracts) {
|
|
|
100
101
|
const contract=declared.get(name);
|
|
101
102
|
const call=options.functions?.[name];
|
|
102
103
|
if(!call)throw new Error("Im Test fehlt die Funktion "+name);
|
|
103
|
-
if(!Value.Check(contract.schema,input))throw new Error("Testeingabe verletzt den Vertrag von "+name);
|
|
104
|
+
if(!Value.Check(contract.schema,input))throw new Error("Testeingabe verletzt den Vertrag von "+name+": "+schemaComplaints(contract.schema,input));
|
|
104
105
|
const result=await call(input);
|
|
105
106
|
assertJsonValue(result,"Testantwort von "+name);
|
|
106
|
-
if(!Value.Check(contract.resultSchema,result))throw new Error("Testantwort verletzt den Vertrag von "+name);
|
|
107
|
+
if(!Value.Check(contract.resultSchema,result))throw new Error("Testantwort verletzt den Vertrag von "+name+": "+schemaComplaints(contract.resultSchema,result,"result"));
|
|
107
108
|
return result;
|
|
108
109
|
}};
|
|
109
110
|
return {...createRunContext({runId:"test",invocationId:"test",invocationKind:"tool",principal:{id:"test",kind:"service"},state:statePort,capabilities,log:()=>{},signal:controller.signal}),
|
|
@@ -150,11 +151,11 @@ export declare function defineActor<const C extends ActorContract>(contract: C,
|
|
|
150
151
|
};
|
|
151
152
|
|
|
152
153
|
let workflowSdk: Promise<{ javaScript: string; declarations: string; promptReader: string; promptDeclarations: string }> | undefined;
|
|
153
|
-
const workflowSource = fileURLToPath(new URL("
|
|
154
|
+
const workflowSource = fileURLToPath(new URL("./workflow/index.ts", import.meta.url));
|
|
154
155
|
const workflowSdkFiles = () => workflowSdk ??= (async () => {
|
|
155
156
|
let declarations = "";
|
|
156
157
|
let promptDeclarations = "";
|
|
157
|
-
const promptSource = fileURLToPath(new URL("
|
|
158
|
+
const promptSource = fileURLToPath(new URL("./workflow/prompt-reader.ts", import.meta.url));
|
|
158
159
|
const program = ts.createProgram([workflowSource, promptSource], {
|
|
159
160
|
target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.ESNext, moduleResolution: ts.ModuleResolutionKind.Bundler,
|
|
160
161
|
strict: true, skipLibCheck: true, types: ["node"], typeRoots: [serverTypeRoot], declaration: true, emitDeclarationOnly: true,
|
|
@@ -178,7 +179,7 @@ export const installWorkflowSdk = async (directory: string): Promise<void> => {
|
|
|
178
179
|
await writeFile(path.join(target, "prompt-reader.d.ts"), files.promptDeclarations);
|
|
179
180
|
await writeFile(path.join(target, "prompt-reader.js"), files.promptReader);
|
|
180
181
|
await writeFile(path.join(target, "prompts.d.ts"), 'import { createPromptReader } from "./prompt-reader.js";\nexport declare const readPrompt: ReturnType<typeof createPromptReader>;\n');
|
|
181
|
-
await writeFile(path.join(target, "prompts.js"),
|
|
182
|
+
await writeFile(path.join(target, "prompts.js"), 'import { fileURLToPath } from "node:url";\nimport { createPromptReader } from "./prompt-reader.js";\nexport const readPrompt = createPromptReader(fileURLToPath(new URL("../../../", import.meta.url)));\n');
|
|
182
183
|
};
|
|
183
184
|
|
|
184
185
|
export const installServerSdk = async (directory: string, capabilities: readonly RunCapabilityDescriptor[] = []): Promise<void> => {
|
|
@@ -214,7 +215,7 @@ export const prepareAppProject = async (directory: string): Promise<void> => {
|
|
|
214
215
|
|
|
215
216
|
export const readAppPackage = async (directory: string): Promise<AppPackage> => {
|
|
216
217
|
const pkg = JSON.parse(await readFile(path.join(directory, "package.json"), "utf8")) as Record<string, unknown>;
|
|
217
|
-
if (!Value.Check(appPackageSchema, pkg.ragents)) throw new Error(
|
|
218
|
+
if (!Value.Check(appPackageSchema, pkg.ragents)) throw new Error(`package.json.ragents ist ungültig: ${schemaComplaints(appPackageSchema, pkg.ragents, "ragents")}`);
|
|
218
219
|
if (!pkg.ragents.backend && !pkg.ragents.views?.length) throw new Error("Ein Actor-Paket braucht ein Backend oder mindestens eine Ansicht.");
|
|
219
220
|
const views = pkg.ragents.views ?? [];
|
|
220
221
|
if (new Set(views.map((view) => view.id)).size !== views.length) throw new Error("Ansichtsnamen müssen eindeutig sein.");
|
|
@@ -277,6 +278,6 @@ export const handle = (request, context) => {
|
|
|
277
278
|
input: {}, state: {}, cwd: options.directory,
|
|
278
279
|
context: { runId: options.runId, invocationId: "app-contract", invocationKind: "tool", principal: { id: "app-build", kind: "service" }, capabilities: [] },
|
|
279
280
|
}, { signal, call: async () => { throw new Error("Beim Laden des App-Vertrags sind Run-Aufrufe nicht verfügbar."); }, log: () => undefined });
|
|
280
|
-
if (!Value.Check(appContractSchema, described.result)) throw new Error(
|
|
281
|
+
if (!Value.Check(appContractSchema, described.result)) throw new Error(`Der Backend-Export braucht defineActor({state, functions, input?}, {functions, onInput?}) mit gültigen Aktionsverträgen: ${schemaComplaints(appContractSchema, described.result, "contract")}`);
|
|
281
282
|
return { contract: described.result, javaScript, hash: canonicalHash({ javaScript }) };
|
|
282
283
|
};
|
|
@@ -5,7 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { build, type Message } from "esbuild";
|
|
7
7
|
import ts from "typescript";
|
|
8
|
-
import { canonicalTypeScriptBuildContract, typeScriptTypeFromSchema, type VirtualTypeScriptDiagnostic } from "@
|
|
8
|
+
import { canonicalTypeScriptBuildContract, typeScriptTypeFromSchema, type VirtualTypeScriptDiagnostic } from "@ragents/engine";
|
|
9
9
|
import { installWorkflowSdk } from "./app-project.js";
|
|
10
10
|
import { readClientUiContractFiles } from "./client-contracts.js";
|
|
11
11
|
|
|
@@ -25,9 +25,9 @@ export interface ClientProjectRequest extends ClientContracts {
|
|
|
25
25
|
entryPoint: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
const webRequire = createRequire(new URL("
|
|
28
|
+
const webRequire = createRequire(new URL("../../../../web/package.json", import.meta.url));
|
|
29
29
|
const packageRoot = (id: string): string => path.dirname(webRequire.resolve(`${id}/package.json`));
|
|
30
|
-
const uiSource = fileURLToPath(new URL("
|
|
30
|
+
const uiSource = fileURLToPath(new URL("../../../../web/src/actor-programs/client-ui/index.tsx", import.meta.url));
|
|
31
31
|
|
|
32
32
|
const actionMap = (actions: readonly ClientActionContract[]): string => {
|
|
33
33
|
const seen = new Set<string>();
|
|
@@ -102,7 +102,7 @@ export const installClientSdk = async (directory: string, contracts: ClientContr
|
|
|
102
102
|
"tsconfig.json": JSON.stringify(clientCompilerConfig, null, 2),
|
|
103
103
|
"index.d.ts": clientDeclarations(contracts),
|
|
104
104
|
"index.js": clientSdkSource,
|
|
105
|
-
"ui.d.ts": 'export * from "./contracts/
|
|
105
|
+
"ui.d.ts": 'export * from "./contracts/apps/web/src/actor-programs/client-ui/contracts";\n',
|
|
106
106
|
"ui.js": `export * from ${JSON.stringify(uiSource)};\n`,
|
|
107
107
|
...Object.fromEntries(Object.entries(readClientUiContractFiles()).map(([name, text]) => [`contracts/${name}`, text])),
|
|
108
108
|
};
|
|
@@ -3,7 +3,7 @@ import { fileURLToPath } from "node:url";
|
|
|
3
3
|
import ts from "typescript";
|
|
4
4
|
|
|
5
5
|
function readContracts(repoRoot: string): { names: string[]; files: Record<string, string> } {
|
|
6
|
-
const filename = path.join(repoRoot, "
|
|
6
|
+
const filename = path.join(repoRoot, "apps/web/src/actor-programs/client-ui/contracts.d.ts");
|
|
7
7
|
const options: ts.CompilerOptions = {
|
|
8
8
|
target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.ESNext,
|
|
9
9
|
moduleResolution: ts.ModuleResolutionKind.Bundler, jsx: ts.JsxEmit.ReactJSX,
|
|
@@ -59,7 +59,7 @@ function readContracts(repoRoot: string): { names: string[]; files: Record<strin
|
|
|
59
59
|
|
|
60
60
|
let cached: ReturnType<typeof readContracts> | undefined;
|
|
61
61
|
const contracts = (repoRoot?: string) => repoRoot === undefined
|
|
62
|
-
? cached ??= readContracts(fileURLToPath(new URL("
|
|
62
|
+
? cached ??= readContracts(fileURLToPath(new URL("../../../../../", import.meta.url)))
|
|
63
63
|
: readContracts(repoRoot);
|
|
64
64
|
|
|
65
65
|
export function readClientUiContractFiles(repoRoot?: string): Record<string, string> {
|
|
@@ -76,7 +76,7 @@ export function readClientUiComponentContracts(component: string, repoRoot?: str
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
export function readClientUiExportContracts(component: string, repoRoot?: string): Record<string, string> {
|
|
79
|
-
const root = repoRoot ?? fileURLToPath(new URL("
|
|
79
|
+
const root = repoRoot ?? fileURLToPath(new URL("../../../../../", import.meta.url));
|
|
80
80
|
const catalog = contracts(repoRoot);
|
|
81
81
|
const files = new Map(Object.entries(catalog.files).map(([name, text]) => [path.resolve(root, name), text]));
|
|
82
82
|
const options: ts.CompilerOptions = { target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.ESNext, moduleResolution: ts.ModuleResolutionKind.Bundler, strict: true, skipLibCheck: true };
|
|
@@ -94,7 +94,7 @@ export function readClientUiExportContracts(component: string, repoRoot?: string
|
|
|
94
94
|
const text = host.readFile(name);
|
|
95
95
|
return text === undefined ? undefined : ts.createSourceFile(name, text, languageVersion, true);
|
|
96
96
|
};
|
|
97
|
-
const entry = path.join(root, "
|
|
97
|
+
const entry = path.join(root, "apps/web/src/actor-programs/client-ui/contracts.d.ts");
|
|
98
98
|
const program = ts.createProgram([entry], options, host);
|
|
99
99
|
const checker = program.getTypeChecker();
|
|
100
100
|
const selected = new Set<ts.Statement>();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { fileURLToPath } from "node:url";
|
|
2
|
+
import { buildSync } from "esbuild";
|
|
3
|
+
|
|
4
|
+
export { FRAME_BODY_CLASS, FRAME_DOCUMENT_CLASS, FRAME_ROOT_CLASS } from "../../../../web/src/actor-programs/client-ui/frame-layout.js";
|
|
5
|
+
|
|
6
|
+
/** Third-party stylesheets every mini-app frame needs: syntax colors, diff markup and the flow diagram. */
|
|
7
|
+
const entries = ["../../highlighting.css", "../../diff-view.css", "./flow-diagram.css"];
|
|
8
|
+
|
|
9
|
+
export const browserRuntimeStyles = buildSync({
|
|
10
|
+
stdin: {
|
|
11
|
+
contents: entries.map((file) => `@import "${file}";`).join("\n"),
|
|
12
|
+
resolveDir: fileURLToPath(new URL("../../../../web/src/actor-programs/client-ui/", import.meta.url)),
|
|
13
|
+
loader: "css",
|
|
14
|
+
},
|
|
15
|
+
bundle: true,
|
|
16
|
+
write: false,
|
|
17
|
+
minify: true,
|
|
18
|
+
}).outputFiles[0].text;
|
|
19
|
+
|
|
20
|
+
export const browserInputRuntime = buildSync({
|
|
21
|
+
entryPoints: [fileURLToPath(new URL("../../../../web/src/run-panel/input-bridge.ts", import.meta.url))],
|
|
22
|
+
bundle: true,
|
|
23
|
+
write: false,
|
|
24
|
+
minify: true,
|
|
25
|
+
format: "iife",
|
|
26
|
+
globalName: "ragentsInputBridge",
|
|
27
|
+
}).outputFiles[0].text;
|
package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/contract.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Type } from "typebox";
|
|
2
|
-
import { defineOperation } from "@
|
|
3
|
-
import { openJson } from "@
|
|
2
|
+
import { defineOperation } from "@ragents/engine/src/rpc/contract";
|
|
3
|
+
import { openJson } from "@ragents/engine/src/http/contracts";
|
|
4
4
|
|
|
5
5
|
export const ACTOR_PROGRAMS_STATE_ID = "ragents.actor-programs";
|
|
6
6
|
export const ACTOR_INVOCATIONS_STATE_ID = "ragents.actor-programs.invocations";
|
|
@@ -57,7 +57,7 @@ export const resolveActorView = (programs: readonly ActorProgramDefinition[], re
|
|
|
57
57
|
const matches = named.length > 0 ? named : views.filter(({ view }) => view.title.toLowerCase() === normalized);
|
|
58
58
|
const names = (entries: typeof views) => entries.map(({ program, view }) => `${program.name}/${view.key} (@${program.actorHandle}/${view.key})`).join(", ") || "keine";
|
|
59
59
|
if (matches.length === 0) {
|
|
60
|
-
throw new Error(`${reference} ist keine aktive Actor-Ansicht dieses
|
|
60
|
+
throw new Error(`${reference} ist keine aktive Actor-Ansicht dieses Runs. Zuerst das Programm aktivieren. Vorhanden: ${names(views)}`);
|
|
61
61
|
}
|
|
62
62
|
if (matches.length > 1) throw new Error(`${reference} ist mehrdeutig. Verwende einen eindeutigen Namen: ${names(matches)}`);
|
|
63
63
|
return matches[0]!;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { serviceToken, type ActorProgramExecutor, type CommandContext } from "@
|
|
1
|
+
import { serviceToken, type ActorProgramExecutor, type CommandContext } from "@ragents/engine";
|
|
2
2
|
export interface ActorProgramSource {
|
|
3
3
|
path: string;
|
|
4
4
|
content: string;
|
|
@@ -4,8 +4,7 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
import { compile } from "@tailwindcss/node";
|
|
5
5
|
import { Scanner } from "@tailwindcss/oxide";
|
|
6
6
|
|
|
7
|
-
const hostDirectory = fileURLToPath(new URL("
|
|
8
|
-
const clientUiDirectory = fileURLToPath(new URL("../client-ui/", import.meta.url));
|
|
7
|
+
const hostDirectory = fileURLToPath(new URL("../../../../web/src/", import.meta.url));
|
|
9
8
|
export const frameStylesheet = path.join(hostDirectory, "ui/frame.css");
|
|
10
9
|
|
|
11
10
|
export type TailwindSource = string | { base: string; pattern: string };
|
|
@@ -16,7 +15,7 @@ export const buildTailwind = async (sources: readonly TailwindSource[], entry =
|
|
|
16
15
|
const compiler = await compile(css, { base: path.dirname(entry), onDependency: () => {} });
|
|
17
16
|
const scanner = new Scanner({ sources: [
|
|
18
17
|
...compiler.sources,
|
|
19
|
-
...[hostDirectory,
|
|
18
|
+
...[hostDirectory, ...sources].map((source) => typeof source === "string" ? { base: source, pattern: "**/*", negated: false } : { ...source, negated: false }),
|
|
20
19
|
] });
|
|
21
20
|
return compiler.build(scanner.scan());
|
|
22
21
|
};
|