@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
|
@@ -7,18 +7,15 @@ import {
|
|
|
7
7
|
type ComponentType,
|
|
8
8
|
type PropsWithChildren,
|
|
9
9
|
type ReactNode,
|
|
10
|
-
type Ref,
|
|
11
|
-
type WheelEventHandler,
|
|
12
10
|
} from "react";
|
|
13
11
|
import { useAccess } from "./AccessContext";
|
|
14
12
|
import { unrestrictedAccess, type AccessContext } from "../../../packages/ragents/src/access";
|
|
15
|
-
import { DETAIL_MODES } from "
|
|
16
|
-
import type { ChatAttachmentInput, DetailMode, Message, ToolInfo } from "./chat/types";
|
|
13
|
+
import { DETAIL_MODES, type ChatAttachmentInput, type DetailMode, type Message, type PendingAction, type ToolInfo, type ChatStartupStatus } from "quassel";
|
|
17
14
|
import type { SessionInfo } from "./api";
|
|
18
15
|
import type { ChatUserLocation } from "../../server/src/chat-context";
|
|
19
|
-
import type { ChatStartupStatus } from "../../server/src/chat-events";
|
|
20
16
|
import { CHAT_STEP_SCOPES, type ChatStepScope } from "../../server/src/plugin-support/chat-display-contract";
|
|
21
17
|
import type { StartOptionState } from "../../server/src/plugin-support/start-options-contract";
|
|
18
|
+
import type { OfferedMachines } from "./offered-machines";
|
|
22
19
|
import {
|
|
23
20
|
type ScriptStartEntry,
|
|
24
21
|
type SkillStartEntry,
|
|
@@ -53,6 +50,8 @@ export interface StartOptionControlContext {
|
|
|
53
50
|
disabled: boolean;
|
|
54
51
|
error: string | undefined;
|
|
55
52
|
setValue: (value: unknown) => Promise<void>;
|
|
53
|
+
/** Welche Rechner der Host für neue Runs anbietet; eine Option mit Rechnerwahl zeigt nur diese. */
|
|
54
|
+
machines: OfferedMachines;
|
|
56
55
|
}
|
|
57
56
|
|
|
58
57
|
export interface StartOptionBadgeContext {
|
|
@@ -62,7 +61,7 @@ export interface StartOptionBadgeContext {
|
|
|
62
61
|
|
|
63
62
|
export interface StartOptionContribution {
|
|
64
63
|
id: string;
|
|
65
|
-
placement?: "
|
|
64
|
+
placement?: "page" | "composer";
|
|
66
65
|
Control?: ComponentType<StartOptionControlContext>;
|
|
67
66
|
Badge?: ComponentType<StartOptionBadgeContext>;
|
|
68
67
|
}
|
|
@@ -82,7 +81,7 @@ export interface EntryGuideContribution {
|
|
|
82
81
|
Guide: ComponentType<EntryGuideContext>;
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
export interface
|
|
84
|
+
export interface PluginEvent {
|
|
86
85
|
pluginId: string;
|
|
87
86
|
type: string;
|
|
88
87
|
payload?: unknown;
|
|
@@ -90,21 +89,19 @@ export interface ExtensionEvent {
|
|
|
90
89
|
}
|
|
91
90
|
|
|
92
91
|
export interface SessionContext {
|
|
93
|
-
centerMode: "chat" | "workflow";
|
|
94
92
|
connected: boolean;
|
|
95
|
-
|
|
93
|
+
pluginEvents: readonly PluginEvent[];
|
|
96
94
|
messages: Message[];
|
|
97
95
|
actorConversations?: Readonly<Record<string, readonly Message[]>>;
|
|
98
96
|
conversationError?: string;
|
|
99
|
-
respond: (callId: string, payload: unknown) => Promise<void>;
|
|
100
97
|
runView: unknown;
|
|
101
98
|
running: boolean;
|
|
102
99
|
startup?: ChatStartupStatus;
|
|
103
|
-
|
|
100
|
+
/** Mit entryId startet die Nachricht den Run über diese Skill-Vorlage und die Startoptionen, die er festlegt. */
|
|
101
|
+
send: (text: string, attachments?: ChatAttachmentInput[], entryId?: string) => Promise<void>;
|
|
104
102
|
session: SessionInfo;
|
|
105
103
|
/** Starts the run through a run script entry, without a message; the value becomes the script's start input. */
|
|
106
104
|
start: (entryId: string, input: JsonValue | null) => Promise<void>;
|
|
107
|
-
stop: () => Promise<void>;
|
|
108
105
|
}
|
|
109
106
|
|
|
110
107
|
export interface EntityReference {
|
|
@@ -112,43 +109,39 @@ export interface EntityReference {
|
|
|
112
109
|
id: string;
|
|
113
110
|
}
|
|
114
111
|
|
|
115
|
-
|
|
112
|
+
/** Die Auswahl auf der Fläche: Kacheln, Actor-Zugänge und Pop-outs melden sie, die Fläche zeigt sie, der Chat meldet sie als Standort. */
|
|
113
|
+
export interface SurfaceController {
|
|
116
114
|
acceptSelection: (selection: EntityReference | undefined) => void;
|
|
117
115
|
selection: EntityReference | undefined;
|
|
118
|
-
selectionRevision: number;
|
|
119
|
-
tabId: string;
|
|
120
116
|
}
|
|
121
117
|
|
|
122
|
-
export interface
|
|
118
|
+
export interface ChatDisplayOptions {
|
|
123
119
|
chatElementClassName?: string;
|
|
124
120
|
chatScrollerRef?: (element: HTMLDivElement | null) => void;
|
|
125
|
-
nodeRef?: Ref<HTMLDivElement>;
|
|
126
|
-
onComposerWheel?: WheelEventHandler<HTMLElement>;
|
|
127
121
|
toolbarLeft?: ReactNode;
|
|
128
|
-
|
|
122
|
+
/** Steht statt des Verlaufs, solange gesetzt; die Eingabe bleibt bedienbar. */
|
|
123
|
+
notice?: ReactNode;
|
|
129
124
|
}
|
|
130
125
|
|
|
131
|
-
export interface
|
|
126
|
+
export interface SurfaceCenterContext {
|
|
132
127
|
runToolbarContainer: HTMLElement | null;
|
|
133
128
|
toolbarContainer: HTMLElement | null;
|
|
134
129
|
statusContainer: HTMLElement | null;
|
|
135
130
|
cardSections: readonly CardSectionContribution[];
|
|
136
|
-
|
|
131
|
+
surfaceElements: readonly SurfaceElementContribution[];
|
|
137
132
|
navigation: SessionNavigation;
|
|
138
|
-
|
|
139
|
-
renderChat: (options?: ChatSurfaceOptions) => ReactNode;
|
|
133
|
+
renderChat: (options?: ChatDisplayOptions) => ReactNode;
|
|
140
134
|
session: SessionContext;
|
|
141
135
|
tabIds: readonly string[];
|
|
142
136
|
}
|
|
143
137
|
|
|
144
|
-
export interface
|
|
145
|
-
Center: ComponentType<
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
tabId: string;
|
|
138
|
+
export interface SurfaceContribution {
|
|
139
|
+
Center: ComponentType<SurfaceCenterContext>;
|
|
140
|
+
/** Das Run-Panel (run-panel.html) mit demselben Kontext; ohne Beitrag zeigt es nur den Chat. */
|
|
141
|
+
RunPanel?: ComponentType<SurfaceCenterContext>;
|
|
149
142
|
}
|
|
150
143
|
|
|
151
|
-
export interface
|
|
144
|
+
export interface SurfaceElementDefinition {
|
|
152
145
|
id: string;
|
|
153
146
|
visible?: boolean;
|
|
154
147
|
title?: string;
|
|
@@ -157,17 +150,17 @@ export interface CanvasElementDefinition {
|
|
|
157
150
|
data?: unknown;
|
|
158
151
|
}
|
|
159
152
|
|
|
160
|
-
export interface
|
|
161
|
-
definition:
|
|
153
|
+
export interface SurfaceElementContext {
|
|
154
|
+
definition: SurfaceElementDefinition;
|
|
162
155
|
navigation: SessionNavigation;
|
|
163
156
|
session: SessionContext;
|
|
164
157
|
}
|
|
165
158
|
|
|
166
|
-
export interface
|
|
159
|
+
export interface SurfaceElementContribution {
|
|
167
160
|
id: string;
|
|
168
161
|
order: number;
|
|
169
|
-
select: (session: SessionContext) => readonly
|
|
170
|
-
Element: ComponentType<
|
|
162
|
+
select: (session: SessionContext) => readonly SurfaceElementDefinition[];
|
|
163
|
+
Element: ComponentType<SurfaceElementContext>;
|
|
171
164
|
}
|
|
172
165
|
|
|
173
166
|
export interface NavigationTarget {
|
|
@@ -210,6 +203,8 @@ export interface WorkspaceTabContribution {
|
|
|
210
203
|
Panel: ComponentType<WorkspaceTabContext>;
|
|
211
204
|
Badge?: ComponentType<WorkspaceTabContext>;
|
|
212
205
|
available?: (session: SessionContext) => boolean;
|
|
206
|
+
/** Der Reiter braucht den Arbeitsbereich des Runs und fehlt, wo der Betrachter ihn nicht erreicht. */
|
|
207
|
+
requiresWorkspace?: boolean;
|
|
213
208
|
keepMounted?: boolean;
|
|
214
209
|
}
|
|
215
210
|
|
|
@@ -220,7 +215,9 @@ export interface SessionHeaderContext {
|
|
|
220
215
|
|
|
221
216
|
export interface SessionHeaderContribution {
|
|
222
217
|
readRight?: string;
|
|
223
|
-
|
|
218
|
+
/** Der Beitrag braucht den Arbeitsbereich des Runs und fehlt, wo der Betrachter ihn nicht erreicht. */
|
|
219
|
+
requiresWorkspace?: boolean;
|
|
220
|
+
placement?: "header" | "surface";
|
|
224
221
|
id: string;
|
|
225
222
|
order: number;
|
|
226
223
|
Header: ComponentType<SessionHeaderContext>;
|
|
@@ -290,6 +287,18 @@ export interface SessionMetadataContribution {
|
|
|
290
287
|
Metadata: ComponentType<SessionMetadataContext>;
|
|
291
288
|
}
|
|
292
289
|
|
|
290
|
+
/** Die Darstellung einer wartenden Aktion durch das Plugin, dem sie gehört. */
|
|
291
|
+
export interface ActionViewContext {
|
|
292
|
+
action: PendingAction;
|
|
293
|
+
text: string;
|
|
294
|
+
session: SessionContext;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
export interface ActionViewContribution {
|
|
298
|
+
owner: string;
|
|
299
|
+
View: ComponentType<ActionViewContext>;
|
|
300
|
+
}
|
|
301
|
+
|
|
293
302
|
export interface AttentionState {
|
|
294
303
|
active: true;
|
|
295
304
|
label: string;
|
|
@@ -313,8 +322,8 @@ export interface WebPlugin extends WebPluginDescriptor {
|
|
|
313
322
|
activate?: (config: Readonly<Record<string, unknown>>) => WebPlugin;
|
|
314
323
|
enabled?: (config: Readonly<Record<string, unknown>>) => boolean;
|
|
315
324
|
brand?: ProductBrand;
|
|
316
|
-
|
|
317
|
-
|
|
325
|
+
surface?: SurfaceContribution;
|
|
326
|
+
surfaceElements?: SurfaceElementContribution[];
|
|
318
327
|
cardSections?: CardSectionContribution[];
|
|
319
328
|
chatDisplayPolicy?: ChatDisplayPolicy;
|
|
320
329
|
startOptions?: StartOptionContribution[];
|
|
@@ -330,7 +339,7 @@ export interface WebPlugin extends WebPluginDescriptor {
|
|
|
330
339
|
entityPresenters?: EntityPresenterContribution[];
|
|
331
340
|
guides?: EntryGuideContribution[];
|
|
332
341
|
sessionMetadata?: SessionMetadataContribution[];
|
|
333
|
-
|
|
342
|
+
actionViews?: ActionViewContribution[];
|
|
334
343
|
attention?: AttentionContribution[];
|
|
335
344
|
}
|
|
336
345
|
|
|
@@ -349,12 +358,17 @@ export interface ProductProfile {
|
|
|
349
358
|
plugins: WebPlugin[];
|
|
350
359
|
product: ProductDescriptor;
|
|
351
360
|
startEntries: readonly StartEntry[];
|
|
361
|
+
/** Die Vorlage, die die Startauswahl statt Neuer Chat zuerst zeigt; der Server nennt sie nur, wenn er sie auch liefert. */
|
|
362
|
+
defaultStartEntry?: string;
|
|
352
363
|
}
|
|
353
364
|
|
|
365
|
+
/** Einen Run, den der Server noch nicht gelistet hat, zeigt die Oberfläche als erreichbar; jeden Zugriff prüft der Server selbst. */
|
|
366
|
+
export const workspaceAccessible = (session: SessionInfo): boolean => session.workspaceAccessible !== false;
|
|
367
|
+
|
|
354
368
|
export class PluginRegistry {
|
|
355
369
|
readonly brand: ProductBrand;
|
|
356
|
-
readonly
|
|
357
|
-
readonly
|
|
370
|
+
readonly surface: SurfaceContribution | undefined;
|
|
371
|
+
readonly surfaceElements: readonly SurfaceElementContribution[];
|
|
358
372
|
readonly cardSections: readonly CardSectionContribution[];
|
|
359
373
|
readonly chatDisplayPolicy: ChatDisplayPolicy;
|
|
360
374
|
readonly startOptions: ReadonlyMap<string, StartOptionContribution>;
|
|
@@ -366,6 +380,7 @@ export class PluginRegistry {
|
|
|
366
380
|
readonly entityPresenters: readonly EntityPresenterContribution[];
|
|
367
381
|
readonly needsRunView: boolean;
|
|
368
382
|
readonly startEntries: readonly StartEntry[];
|
|
383
|
+
readonly defaultStartEntry: string | undefined;
|
|
369
384
|
readonly skillEntries: readonly SkillStartEntry[];
|
|
370
385
|
readonly scriptEntries: readonly ScriptStartEntry[];
|
|
371
386
|
readonly guides: ReadonlyMap<string, EntryGuideContribution>;
|
|
@@ -374,7 +389,7 @@ export class PluginRegistry {
|
|
|
374
389
|
readonly overviewPanels: readonly OverviewPanelContribution[];
|
|
375
390
|
readonly settings: readonly (SettingsContribution & { owner: string })[];
|
|
376
391
|
readonly sessionMetadata: readonly SessionMetadataContribution[];
|
|
377
|
-
readonly
|
|
392
|
+
readonly actionViews: ReadonlyMap<string, ActionViewContribution>;
|
|
378
393
|
readonly attention: readonly AttentionContribution[];
|
|
379
394
|
|
|
380
395
|
constructor(
|
|
@@ -392,28 +407,25 @@ export class PluginRegistry {
|
|
|
392
407
|
if (brands.length === 0) {
|
|
393
408
|
throw new Error("Kein aktives Plugin liefert ein Branding; die Plugin-Liste enthält kein Produkt-Plugin");
|
|
394
409
|
}
|
|
395
|
-
if (brands.length > 1) throw new Error(`Das
|
|
410
|
+
if (brands.length > 1) throw new Error(`Das Profil benötigt genau ein Branding, gefunden: ${brands.length}`);
|
|
396
411
|
this.brand = brands[0];
|
|
397
412
|
this.workspaceTabs = this.activePlugins
|
|
398
413
|
.flatMap((plugin) => plugin.workspaceTabs ?? [])
|
|
399
414
|
.sort(byTabOrder);
|
|
400
|
-
assertUnique(this.workspaceTabs, (tab) => tab.id, "
|
|
415
|
+
assertUnique(this.workspaceTabs, (tab) => tab.id, "Reiter der Leiste");
|
|
401
416
|
this.workspaceTabFactories = this.activePlugins
|
|
402
417
|
.flatMap((plugin) => plugin.workspaceTabsFor ? [plugin.workspaceTabsFor] : []);
|
|
403
|
-
const
|
|
404
|
-
if (
|
|
405
|
-
this.
|
|
406
|
-
this.
|
|
407
|
-
.flatMap((plugin) => plugin.
|
|
418
|
+
const surfaces = this.activePlugins.flatMap((plugin) => plugin.surface ? [plugin.surface] : []);
|
|
419
|
+
if (surfaces.length > 1) throw new Error(`Mehrere Flächenbeiträge registriert: ${surfaces.length}`);
|
|
420
|
+
this.surface = surfaces[0];
|
|
421
|
+
this.surfaceElements = this.activePlugins
|
|
422
|
+
.flatMap((plugin) => plugin.surfaceElements ?? [])
|
|
408
423
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
409
|
-
assertUnique(this.
|
|
424
|
+
assertUnique(this.surfaceElements, (element) => element.id, "Flächenelement-Beitrag");
|
|
410
425
|
this.cardSections = this.activePlugins
|
|
411
426
|
.flatMap((plugin) => plugin.cardSections ?? [])
|
|
412
427
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
413
428
|
assertUnique(this.cardSections, (section) => section.id, "Karten-Abschnitt");
|
|
414
|
-
if (this.canvas && !this.workspaceTabs.some((tab) => tab.id === this.canvas?.tabId)) {
|
|
415
|
-
throw new Error(`Canvas-Tab ist nicht registriert: ${this.canvas.tabId}`);
|
|
416
|
-
}
|
|
417
429
|
this.needsRunView = this.activePlugins.some((plugin) => plugin.needsRunView);
|
|
418
430
|
const chatPolicies = this.activePlugins.flatMap((plugin) => plugin.chatDisplayPolicy ? [plugin.chatDisplayPolicy] : []);
|
|
419
431
|
if (chatPolicies.length > 1) throw new Error(`Mehrere Chat-Display-Policies registriert: ${chatPolicies.length}`);
|
|
@@ -428,7 +440,11 @@ export class PluginRegistry {
|
|
|
428
440
|
this.entityPresenters = this.activePlugins.flatMap((plugin) => plugin.entityPresenters ?? []);
|
|
429
441
|
const active = new Set(this.activePlugins.map((plugin) => plugin.id));
|
|
430
442
|
this.startEntries = profile.startEntries.filter((entry) => active.has(entry.owner));
|
|
431
|
-
assertUnique(this.startEntries, (entry) => entry.id, "
|
|
443
|
+
assertUnique(this.startEntries, (entry) => entry.id, "Vorlage");
|
|
444
|
+
if (profile.defaultStartEntry !== undefined && !this.startEntries.some((entry) => entry.id === profile.defaultStartEntry)) {
|
|
445
|
+
throw new Error(`Die Default-Vorlage ${profile.defaultStartEntry} ist keine Vorlage eines aktiven Plugins`);
|
|
446
|
+
}
|
|
447
|
+
this.defaultStartEntry = profile.defaultStartEntry;
|
|
432
448
|
this.skillEntries = this.startEntries.filter((entry): entry is SkillStartEntry => entry.action === "skill");
|
|
433
449
|
this.scriptEntries = this.startEntries.filter((entry): entry is ScriptStartEntry => entry.action === "script");
|
|
434
450
|
const guides = this.activePlugins.flatMap((plugin) => plugin.guides ?? []);
|
|
@@ -436,7 +452,7 @@ export class PluginRegistry {
|
|
|
436
452
|
this.guides = new Map(guides.map((guide) => [guide.id, guide]));
|
|
437
453
|
for (const entry of this.startEntries) {
|
|
438
454
|
if (entry.guide !== undefined && !this.guides.has(entry.guide)) {
|
|
439
|
-
throw new Error(`
|
|
455
|
+
throw new Error(`Vorlage ${entry.id} verlangt den Leitfaden ${entry.guide}, den kein aktives Plugin bereitstellt`);
|
|
440
456
|
}
|
|
441
457
|
}
|
|
442
458
|
this.sessionHeaders = this.activePlugins
|
|
@@ -459,10 +475,9 @@ export class PluginRegistry {
|
|
|
459
475
|
.flatMap((plugin) => plugin.sessionMetadata ?? [])
|
|
460
476
|
.sort((left, right) => left.order - right.order || left.id.localeCompare(right.id));
|
|
461
477
|
assertUnique(this.sessionMetadata, (metadata) => metadata.id, "Session-Metadaten");
|
|
462
|
-
const
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
this.questionResponder = responders[0];
|
|
478
|
+
const actionViews = this.activePlugins.flatMap((plugin) => plugin.actionViews ?? []);
|
|
479
|
+
assertUnique(actionViews, (view) => view.owner, "Aktionsdarstellung");
|
|
480
|
+
this.actionViews = new Map(actionViews.map((view) => [view.owner, view]));
|
|
466
481
|
this.attention = this.activePlugins.flatMap((plugin) => plugin.attention ?? []);
|
|
467
482
|
assertUnique(this.attention, (contribution) => contribution.id, "Attention-Beitrag");
|
|
468
483
|
}
|
|
@@ -471,12 +486,19 @@ export class PluginRegistry {
|
|
|
471
486
|
if (this.workspaceTabFactories.length === 0) return this.workspaceTabs.filter((tab) => !tab.readRight || access.can(tab.readRight));
|
|
472
487
|
const contributed = this.workspaceTabFactories.flatMap((factory) => factory(session));
|
|
473
488
|
const tabs = [...this.workspaceTabs, ...contributed].sort(byTabOrder);
|
|
474
|
-
assertUnique(tabs, (tab) => tab.id, "
|
|
489
|
+
assertUnique(tabs, (tab) => tab.id, "Reiter der Leiste");
|
|
475
490
|
return tabs.filter((tab) => !tab.readRight || access.can(tab.readRight));
|
|
476
491
|
}
|
|
477
492
|
|
|
478
493
|
availableTabs(session: SessionContext, access: AccessContext = unrestrictedAccess): readonly WorkspaceTabContribution[] {
|
|
479
|
-
return this.registeredTabs(session, access)
|
|
494
|
+
return this.registeredTabs(session, access)
|
|
495
|
+
.filter((tab) => (!tab.requiresWorkspace || workspaceAccessible(session.session)) && (tab.available?.(session) ?? true));
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
headersFor(session: SessionContext, access: AccessContext, placement: "header" | "surface"): readonly SessionHeaderContribution[] {
|
|
499
|
+
return this.sessionHeaders.filter((entry) => (entry.placement ?? "header") === placement
|
|
500
|
+
&& (!entry.readRight || access.can(entry.readRight))
|
|
501
|
+
&& (!entry.requiresWorkspace || workspaceAccessible(session.session)));
|
|
480
502
|
}
|
|
481
503
|
|
|
482
504
|
guideFor(entry: StartEntry): EntryGuideContribution | undefined {
|
|
@@ -487,6 +509,10 @@ export class PluginRegistry {
|
|
|
487
509
|
return this.toolPresenters.get(tool.name);
|
|
488
510
|
}
|
|
489
511
|
|
|
512
|
+
actionViewFor(owner: string | null): ActionViewContribution | undefined {
|
|
513
|
+
return owner === null ? undefined : this.actionViews.get(owner);
|
|
514
|
+
}
|
|
515
|
+
|
|
490
516
|
targetForEntity(entity: EntityReference, session: SessionContext): NavigationTarget | undefined {
|
|
491
517
|
return this.entityPresenters
|
|
492
518
|
.map((presenter) => presenter.reveal(entity, session))
|
|
@@ -604,10 +630,10 @@ export function primaryChatActor(view: unknown): string {
|
|
|
604
630
|
return view !== null && typeof view === "object" && "primaryActorId" in view && typeof view.primaryActorId === "string" ? view.primaryActorId : "primary";
|
|
605
631
|
}
|
|
606
632
|
|
|
607
|
-
/**
|
|
608
|
-
export function useChatSteps(runId?: string, actorId = "primary",
|
|
633
|
+
/** display unterscheidet Anzeigeorte desselben Chats (Fläche, Inspector, Popout); jeder merkt sich seinen Detailgrad. */
|
|
634
|
+
export function useChatSteps(runId?: string, actorId = "primary", display?: string): ChatStepsControl {
|
|
609
635
|
const control = useContext(ChatStepsContext);
|
|
610
|
-
const identity = runId === undefined ? undefined : JSON.stringify(
|
|
636
|
+
const identity = runId === undefined ? undefined : JSON.stringify(display === undefined ? [runId, actorId] : [runId, actorId, display]);
|
|
611
637
|
return useMemo(() => ({
|
|
612
638
|
selectable: control.selectable,
|
|
613
639
|
stepsExpandable: control.stepsExpandable,
|
|
@@ -616,18 +642,22 @@ export function useChatSteps(runId?: string, actorId = "primary", surface?: stri
|
|
|
616
642
|
}), [control, identity]);
|
|
617
643
|
}
|
|
618
644
|
|
|
619
|
-
const
|
|
645
|
+
const SurfaceControllerContext = createContext<SurfaceController | undefined>(undefined);
|
|
620
646
|
|
|
621
|
-
export function
|
|
622
|
-
return <
|
|
647
|
+
export function SurfaceControllerProvider({ children, value }: PropsWithChildren<{ value: SurfaceController }>) {
|
|
648
|
+
return <SurfaceControllerContext.Provider value={value}>{children}</SurfaceControllerContext.Provider>;
|
|
623
649
|
}
|
|
624
650
|
|
|
625
|
-
export const
|
|
651
|
+
export const useSurfaceController = () => useContext(SurfaceControllerContext);
|
|
626
652
|
|
|
627
653
|
const ToolRendererContext = createContext<(tool: ToolInfo) => ReactNode>(() => undefined);
|
|
628
654
|
|
|
629
655
|
export const useToolRenderer = () => useContext(ToolRendererContext);
|
|
630
656
|
|
|
657
|
+
const ActionRendererContext = createContext<(action: PendingAction, text: string) => ReactNode>(() => undefined);
|
|
658
|
+
|
|
659
|
+
export const useActionRenderer = () => useContext(ActionRendererContext);
|
|
660
|
+
|
|
631
661
|
export function PluginSessionProviders({
|
|
632
662
|
children,
|
|
633
663
|
navigation,
|
|
@@ -642,11 +672,19 @@ export function PluginSessionProviders({
|
|
|
642
672
|
const Inline = registry.presenterFor(tool)?.Inline;
|
|
643
673
|
return Inline ? <Inline navigation={navigation} session={session} tool={tool} /> : undefined;
|
|
644
674
|
}, [registry, navigation, session]);
|
|
675
|
+
const renderAction = useMemo(() => (action: PendingAction, text: string) => {
|
|
676
|
+
const View = registry.actionViewFor(action.owner)?.View;
|
|
677
|
+
return View ? <View action={action} session={session} text={text} /> : undefined;
|
|
678
|
+
}, [registry, session]);
|
|
645
679
|
const content = registry.activePlugins.reduceRight<ReactNode>((content, plugin) => {
|
|
646
680
|
if (!plugin.SessionProvider) return content;
|
|
647
681
|
return createElement(plugin.SessionProvider, { key: plugin.id, navigation, session }, content);
|
|
648
682
|
}, children);
|
|
649
|
-
return
|
|
683
|
+
return (
|
|
684
|
+
<ToolRendererContext.Provider value={renderTool}>
|
|
685
|
+
<ActionRendererContext.Provider value={renderAction}>{content}</ActionRendererContext.Provider>
|
|
686
|
+
</ToolRendererContext.Provider>
|
|
687
|
+
);
|
|
650
688
|
}
|
|
651
689
|
|
|
652
690
|
const byTabOrder = (left: WorkspaceTabContribution, right: WorkspaceTabContribution): number =>
|
|
@@ -2,28 +2,32 @@ import { useEffect, useRef, useState, type RefObject } from "react";
|
|
|
2
2
|
import { cn } from "cn";
|
|
3
3
|
import type { RunPreparationMessage } from "../../server/src/run-preparation-contract";
|
|
4
4
|
import { Button } from "./ui";
|
|
5
|
-
import { ChatInputToolbar, type ChatInputHandle } from "
|
|
6
|
-
import { ChatMessages } from "./chat/ChatMessages";
|
|
7
|
-
import { ChatPanel } from "./chat/ChatPanel";
|
|
8
|
-
import { DetailModeSwitch } from "./chat/DetailModeSwitch";
|
|
5
|
+
import { ChatInputToolbar, type ChatInputHandle, ChatMessages, ChatPanel, type ChatAttachmentInput, type Message } from "quassel";
|
|
9
6
|
import { useAttachmentCapabilities } from "./chat/useAttachmentCapabilities";
|
|
10
|
-
import type {
|
|
11
|
-
import {
|
|
12
|
-
import { StartOptionControls, useStartOptions } from "./StartOptions";
|
|
7
|
+
import type { PluginRegistry, SessionContext, SkillStartEntry } from "./PluginRegistry";
|
|
8
|
+
import { ChatViewSwitches, useChatViewSettings } from "./chat-view-settings";
|
|
9
|
+
import { StartOptionControls, conflictingStartOptions, useStartOptions } from "./StartOptions";
|
|
13
10
|
import { discussRun, preparedRunInput } from "./run-preparation";
|
|
14
11
|
|
|
15
12
|
const composerPlacement = "flex min-h-0 min-w-0 flex-1 *:flex-1 max-md:[&_[data-chat=composer]]:px-2 max-md:[&_[data-chat=composer]]:pb-2";
|
|
16
13
|
/** Without a conversation the composer sits in the middle; a flat window puts it back at the bottom. */
|
|
17
14
|
const emptyComposerPlacement = "[&_[data-chat=composer]]:top-1/2 [&_[data-chat=composer]]:bottom-auto [&_[data-chat=composer]]:-translate-y-1/2 [@media(max-height:600px)]:[&_[data-chat=composer]]:top-auto [@media(max-height:600px)]:[&_[data-chat=composer]]:bottom-0 [@media(max-height:600px)]:[&_[data-chat=composer]]:translate-y-0";
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
type PreparationEntry = { message: RunPreparationMessage; at: string };
|
|
17
|
+
|
|
18
|
+
const entryNow = (message: RunPreparationMessage): PreparationEntry => ({ message, at: new Date().toISOString() });
|
|
19
|
+
|
|
20
|
+
/** Der Auftrag einer Skill-Vorlage entsteht hier; der Run startet über die Vorlage und mit dem, was sie festlegt. */
|
|
21
|
+
export function RunPreparationChat({ initialPrompt, entry, registry, sessionRef }: {
|
|
20
22
|
initialPrompt: string;
|
|
21
|
-
|
|
23
|
+
entry: SkillStartEntry;
|
|
22
24
|
registry: PluginRegistry;
|
|
23
25
|
sessionRef: RefObject<SessionContext>;
|
|
24
26
|
}) {
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
+
const skillName = entry.skill;
|
|
28
|
+
const fixed = entry.fixedStartOptions;
|
|
29
|
+
const [history, setHistory] = useState<PreparationEntry[]>([]);
|
|
30
|
+
const [pendingEntry, setPendingEntry] = useState<PreparationEntry>();
|
|
27
31
|
const [operation, setOperation] = useState<"preparing" | "starting">();
|
|
28
32
|
const [draft, setDraft] = useState(initialPrompt);
|
|
29
33
|
const [hasAttachments, setHasAttachments] = useState(false);
|
|
@@ -31,7 +35,7 @@ export function RunPreparationChat({ initialPrompt, skillName, registry, session
|
|
|
31
35
|
const active = useRef<AbortController | null>(null);
|
|
32
36
|
const mounted = useRef(false);
|
|
33
37
|
const submitting = useRef(false);
|
|
34
|
-
const
|
|
38
|
+
const chatView = useChatViewSettings(sessionRef.current.session.id, "preparation", "coordinator");
|
|
35
39
|
const options = useStartOptions();
|
|
36
40
|
const sessionId = sessionRef.current.session.id;
|
|
37
41
|
const attachments = useAttachmentCapabilities(sessionId, "primary", JSON.stringify(options.options.map(({ id, value }) => [id, value])));
|
|
@@ -46,18 +50,18 @@ export function RunPreparationChat({ initialPrompt, skillName, registry, session
|
|
|
46
50
|
submitting.current = true;
|
|
47
51
|
const controller = new AbortController();
|
|
48
52
|
active.current = controller;
|
|
49
|
-
const
|
|
50
|
-
const next = [...history,
|
|
53
|
+
const question = entryNow({ role: "user", text, ...(files?.length ? { attachments: files } : {}) });
|
|
54
|
+
const next = [...history, question];
|
|
51
55
|
setOperation("preparing");
|
|
52
|
-
|
|
56
|
+
setPendingEntry(question);
|
|
53
57
|
try {
|
|
54
|
-
const answer = await discussRun(sessionId, next, controller.signal, skillName);
|
|
58
|
+
const answer = await discussRun(sessionId, next.map(({ message }) => message), controller.signal, skillName);
|
|
55
59
|
if (!mounted.current || controller.signal.aborted) return;
|
|
56
60
|
if (answer.kind === "start") {
|
|
57
61
|
setOperation("starting");
|
|
58
|
-
await sessionRef.current.send(answer.input.text, answer.input.attachments);
|
|
62
|
+
await sessionRef.current.send(answer.input.text, answer.input.attachments, entry.id);
|
|
59
63
|
} else {
|
|
60
|
-
setHistory([...next, { role: "assistant", text: answer.text }]);
|
|
64
|
+
setHistory([...next, entryNow({ role: "assistant", text: answer.text })]);
|
|
61
65
|
}
|
|
62
66
|
} catch (cause) {
|
|
63
67
|
if (controller.signal.aborted) throw new Error("Besprechung gestoppt. Deine Eingabe bleibt erhalten.");
|
|
@@ -65,7 +69,7 @@ export function RunPreparationChat({ initialPrompt, skillName, registry, session
|
|
|
65
69
|
} finally {
|
|
66
70
|
active.current = null;
|
|
67
71
|
submitting.current = false;
|
|
68
|
-
if (mounted.current) { setOperation(undefined);
|
|
72
|
+
if (mounted.current) { setOperation(undefined); setPendingEntry(undefined); }
|
|
69
73
|
}
|
|
70
74
|
};
|
|
71
75
|
const createRun = async (text: string, files?: ChatAttachmentInput[]) => {
|
|
@@ -73,20 +77,24 @@ export function RunPreparationChat({ initialPrompt, skillName, registry, session
|
|
|
73
77
|
submitting.current = true;
|
|
74
78
|
setOperation("starting");
|
|
75
79
|
try {
|
|
76
|
-
const input = preparedRunInput(history, text, files, skillName);
|
|
77
|
-
await sessionRef.current.send(input.text, input.attachments);
|
|
80
|
+
const input = preparedRunInput(history.map(({ message }) => message), text, files, skillName);
|
|
81
|
+
await sessionRef.current.send(input.text, input.attachments, entry.id);
|
|
78
82
|
} finally {
|
|
79
83
|
submitting.current = false;
|
|
80
84
|
if (mounted.current) setOperation(undefined);
|
|
81
85
|
}
|
|
82
86
|
};
|
|
83
|
-
const messages: Message[] = [...history, ...(
|
|
84
|
-
key: `preparation-${index}`, role: message.role, text: message.text, closed: true,
|
|
87
|
+
const messages: Message[] = [...history, ...(pendingEntry ? [pendingEntry] : [])].map(({ message, at }, index) => ({
|
|
88
|
+
key: `preparation-${index}`, role: message.role, text: message.text, closed: true, at,
|
|
85
89
|
attachments: message.attachments?.map((file) => ({ name: file.name, mediaType: file.mediaType,
|
|
86
90
|
size: Math.floor(file.data.length * 3 / 4) - (file.data.endsWith("==") ? 2 : file.data.endsWith("=") ? 1 : 0),
|
|
87
91
|
url: `data:${file.mediaType};base64,${file.data}` })),
|
|
88
92
|
}));
|
|
89
93
|
const busy = operation !== undefined || options.pending;
|
|
94
|
+
const conflicts = conflictingStartOptions(options.options, fixed ?? {});
|
|
95
|
+
const adoptTemplate = async () => {
|
|
96
|
+
for (const option of conflicts) await options.set(option.id, fixed?.[option.id]);
|
|
97
|
+
};
|
|
90
98
|
|
|
91
99
|
return <section aria-label="Auftrag besprechen" className={cn(composerPlacement, messages.length === 0 && emptyComposerPlacement)} data-preparation={messages.length === 0 ? "empty" : "active"}>
|
|
92
100
|
<ChatPanel composer={<div>
|
|
@@ -94,18 +102,22 @@ export function RunPreparationChat({ initialPrompt, skillName, registry, session
|
|
|
94
102
|
initialValue={initialPrompt} onDraftChange={setDraft} onAttachmentsChange={setHasAttachments} handleRef={composer}
|
|
95
103
|
rows={3} maxRows={8} running={operation === "preparing"} onStop={() => active.current?.abort()} onSend={discuss}
|
|
96
104
|
texts={{ placeholder: "Ergänzungen oder Fragen zum Auftrag ...", send: "Auftrag besprechen", stop: "Besprechung stoppen" }}
|
|
97
|
-
toolbarLeft={
|
|
98
|
-
toolbarRight={<StartOptionControls disabled={busy} placement="composer" registry={registry} />} />
|
|
105
|
+
toolbarLeft={<ChatViewSwitches settings={chatView} />}
|
|
106
|
+
toolbarRight={<StartOptionControls disabled={busy} fixed={fixed} placement="composer" registry={registry} />} />
|
|
107
|
+
{conflicts.length > 0 && <div className="mt-3 flex flex-wrap items-center justify-between gap-2.5" data-start-option-conflicts="" role="alert">
|
|
108
|
+
<span className="text-[0.75rem] text-destructive">Vor dem Öffnen der Vorlage war bei {conflicts.length === 1 ? "einer Startoption" : `${conflicts.length} Startoptionen`} etwas anderes gewählt, als sie festlegt. So lässt sich der Run nicht erstellen.</span>
|
|
109
|
+
<Button disabled={busy} size="sm" variant="outline" onClick={() => { void adoptTemplate(); }}>Werte der Vorlage übernehmen</Button>
|
|
110
|
+
</div>}
|
|
99
111
|
<div className="my-3 flex flex-wrap items-center justify-between gap-2.5">
|
|
100
112
|
<span className="text-[0.75rem] text-muted-foreground">Gib im Chat Dein Go zum Starten oder wähle "Run erstellen".</span>
|
|
101
|
-
<Button disabled={busy || (!history.length && !draft.trim() && !hasAttachments)}
|
|
113
|
+
<Button disabled={busy || conflicts.length > 0 || (!history.length && !draft.trim() && !hasAttachments)}
|
|
102
114
|
onClick={() => { void composer.current?.submit(createRun, { allowEmpty: history.length > 0 }); }}>
|
|
103
115
|
{operation === "starting" ? "Run wird erstellt ..." : "Run erstellen"}
|
|
104
116
|
</Button>
|
|
105
117
|
</div>
|
|
106
|
-
<div aria-label="Startoptionen" className="flex flex-wrap items-center gap-x-3 gap-y-2 empty:hidden"><StartOptionControls disabled={busy} registry={registry} /></div>
|
|
118
|
+
<div aria-label="Startoptionen" className="flex flex-wrap items-center gap-x-3 gap-y-2 empty:hidden"><StartOptionControls disabled={busy} fixed={fixed} registry={registry} /></div>
|
|
107
119
|
</div>}>
|
|
108
|
-
{messages.length > 0 && <ChatMessages detailMode={
|
|
120
|
+
{messages.length > 0 && <ChatMessages detailMode={chatView.detailMode} messages={messages} running={operation === "preparing"} showTimestamps={chatView.showTimestamps} stepsExpandable={chatView.stepsExpandable} />}
|
|
109
121
|
</ChatPanel>
|
|
110
122
|
</section>;
|
|
111
123
|
}
|
package/apps/web/src/RunStore.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useState } from "react";
|
|
2
|
-
import { coreContracts } from "@
|
|
2
|
+
import { coreContracts } from "@ragents/host/api/contracts";
|
|
3
3
|
import { getActorConversations, getRunView } from "./api";
|
|
4
|
-
import type { Message } from "
|
|
4
|
+
import type { Message } from "quassel/events";
|
|
5
5
|
import { rpc } from "./rpc";
|
|
6
6
|
|
|
7
7
|
export interface RunStoreState {
|
|
@@ -32,8 +32,13 @@ const formatTimestamp = (time: number): string => {
|
|
|
32
32
|
: date.toLocaleDateString("de-DE", { day: "2-digit", month: "2-digit" });
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
/** Running, unread and resting runs differ only in their accent colour; the card layout stays the same. */
|
|
35
|
+
/** Running, unread, locked and resting runs differ only in their accent colour; the card layout stays the same. */
|
|
36
36
|
const tones = {
|
|
37
|
+
locked: {
|
|
38
|
+
card: "border-[color-mix(in_srgb,var(--destructive)_55%,var(--border))]",
|
|
39
|
+
head: "border-t-destructive bg-destructive/8",
|
|
40
|
+
text: "text-destructive",
|
|
41
|
+
},
|
|
37
42
|
running: {
|
|
38
43
|
card: "border-[color-mix(in_srgb,var(--info)_55%,var(--border))]",
|
|
39
44
|
head: "border-t-info bg-info/8",
|
|
@@ -80,8 +85,8 @@ export function SessionList({
|
|
|
80
85
|
<ul className={gridClass}>
|
|
81
86
|
{index === 0 && createCard}
|
|
82
87
|
{group.sessions.map((session) => {
|
|
83
|
-
const notice = runActivityNotice(session, seenRevisions[session.id]);
|
|
84
|
-
const tone = tones[session.running ? "running" : notice ? "unread" : "idle"];
|
|
88
|
+
const notice = session.locked === undefined ? runActivityNotice(session, seenRevisions[session.id]) : undefined;
|
|
89
|
+
const tone = tones[session.locked !== undefined ? "locked" : session.running ? "running" : notice ? "unread" : "idle"];
|
|
85
90
|
const picked = session.id === activeId || (selectMode && selectedIds.has(session.id));
|
|
86
91
|
return (
|
|
87
92
|
<li
|
|
@@ -106,9 +111,10 @@ export function SessionList({
|
|
|
106
111
|
aria-current={session.id === activeId ? "true" : undefined}
|
|
107
112
|
aria-pressed={selectMode ? selectedIds.has(session.id) : undefined}
|
|
108
113
|
className={cn(
|
|
109
|
-
"flex min-h-[148px] min-w-0 flex-1 cursor-pointer flex-col items-stretch gap-2.5 rounded-[11px] px-4 pb-4 text-left focus-visible:outline-2 focus-visible:outline-primary focus-visible:outline-offset-2",
|
|
114
|
+
"flex min-h-[148px] min-w-0 flex-1 cursor-pointer flex-col items-stretch gap-2.5 rounded-[11px] px-4 pb-4 text-left focus-visible:outline-2 focus-visible:outline-primary focus-visible:outline-offset-2 disabled:cursor-default",
|
|
110
115
|
selectMode && "pl-9",
|
|
111
116
|
)}
|
|
117
|
+
disabled={session.locked !== undefined && !selectMode}
|
|
112
118
|
onClick={() => (selectMode ? onToggleSelected(session.id) : onSelect(session.id))}
|
|
113
119
|
type="button"
|
|
114
120
|
>
|
|
@@ -117,16 +123,18 @@ export function SessionList({
|
|
|
117
123
|
<span className="flex min-h-[18px] flex-wrap items-center gap-x-3.5 gap-y-1.5">
|
|
118
124
|
<span className={cn("flex items-center gap-[7px] text-[0.75rem]", tone.text)}>
|
|
119
125
|
{session.running ? <Spinner aria-hidden className="size-3" /> : <span aria-hidden className="size-[7px] flex-none rounded-full bg-current" />}
|
|
120
|
-
{session.running ? "Läuft" : session.id === activeId ? "Geöffnet" : "Ruhend"}
|
|
126
|
+
{session.locked !== undefined ? "Locked" : session.running ? "Läuft" : session.id === activeId ? "Geöffnet" : "Ruhend"}
|
|
121
127
|
</span>
|
|
122
128
|
{notice && <span className="inline-flex items-center gap-1.5 text-[0.7rem] font-semibold text-primary" title={notice === "updated" ? "Neue Journal-Aktivität seit Deinem letzten Ansehen dieses Runs" : "In diesem Browser noch nicht angesehen"}>
|
|
123
129
|
<span aria-hidden className="size-[7px] flex-none rounded-full bg-current" />{notice === "updated" ? "Neue Aktivität" : "Nicht angesehen"}
|
|
124
130
|
</span>}
|
|
125
131
|
</span>
|
|
126
132
|
</span>
|
|
127
|
-
{
|
|
128
|
-
<
|
|
129
|
-
|
|
133
|
+
{session.locked !== undefined
|
|
134
|
+
? <span className="text-[0.75rem] leading-[1.45] text-destructive [overflow-wrap:anywhere]">{session.locked}</span>
|
|
135
|
+
: registry.sessionMetadata.map(({ id, Metadata }) => (
|
|
136
|
+
<Metadata key={id} placement="list" session={session} />
|
|
137
|
+
))}
|
|
130
138
|
<span className="mt-auto grid gap-0.5 text-muted-foreground">
|
|
131
139
|
{session.createdAt !== undefined && <span className="text-[0.7rem] tabular-nums">Erstellt <time dateTime={new Date(session.createdAt).toISOString()}>
|
|
132
140
|
{new Date(session.createdAt).toLocaleString("de-DE", { day: "2-digit", month: "2-digit", year: "numeric", hour: "2-digit", minute: "2-digit" })}
|