@schlenkr/ragents 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -11
- package/apps/server/package.json +8 -6
- package/apps/server/src/access-projection.ts +3 -3
- package/apps/server/src/access-service.ts +19 -8
- package/apps/server/src/access-session.ts +6 -2
- package/apps/server/src/api/contracts.ts +19 -18
- package/apps/server/src/api/core-methods.ts +45 -26
- package/apps/server/src/api/delivery.ts +4 -4
- package/apps/server/src/api/reference.ts +1 -1
- package/apps/server/src/api/rights.ts +86 -7
- package/apps/server/src/chat-context.ts +1 -1
- package/apps/server/src/chat-handler.ts +16 -7
- package/apps/server/src/config-file.ts +25 -6
- package/apps/server/src/config.ts +10 -4
- package/apps/server/src/data-directory.ts +1 -1
- package/apps/server/src/folder-install.ts +115 -0
- package/apps/server/src/host-api.json +1257 -0
- package/apps/server/src/host-api.ts +190 -0
- package/apps/server/src/host-resolution-hooks.mjs +50 -1
- package/apps/server/src/host-resolution.ts +26 -1
- package/apps/server/src/host-version.ts +41 -0
- package/apps/server/src/host-web.ts +59 -0
- package/apps/server/src/layout.ts +0 -15
- package/apps/server/src/main.ts +3 -2
- package/apps/server/src/missing-environment.ts +47 -0
- package/apps/server/src/parent-watch.ts +37 -0
- package/apps/server/src/plugin-build/build.ts +650 -0
- package/apps/server/src/plugin-build/host-api-names.ts +185 -0
- package/apps/server/src/plugin-build/plugin-description.ts +118 -0
- package/apps/server/src/plugin-build/typecheck.ts +66 -0
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/app-project.ts +16 -15
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-compiler.ts +4 -4
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/client-contracts.ts +4 -4
- package/apps/server/src/plugin-support/actor-programs/client-runtime.ts +27 -0
- package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/contract.ts +3 -3
- package/apps/server/src/plugin-support/actor-programs/service.ts +1 -1
- package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/tailwind.ts +2 -3
- package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/index.ts +48 -48
- package/apps/server/src/plugin-support/agent-tool.ts +12 -8
- package/apps/server/src/plugin-support/http.ts +1 -1
- package/apps/server/src/plugin-support/language-server/contract.ts +37 -6
- package/apps/server/src/plugin-support/language-server/plugin.ts +18 -8
- package/apps/server/src/plugin-support/language-server/snapshot-method.ts +32 -7
- package/apps/server/src/plugin-support/language-server/tools.ts +59 -15
- package/apps/server/src/plugin-support/model-aliases.ts +77 -0
- package/apps/server/src/plugin-support/model-choice.ts +17 -7
- package/apps/server/src/plugin-support/model-completion.ts +58 -0
- package/apps/server/src/plugin-support/model-upstreams.ts +2 -2
- package/apps/server/src/plugin-support/native-typescript-executor.ts +10 -7
- package/apps/server/src/plugin-support/plugin-config.ts +1 -1
- package/apps/server/src/plugin-support/plugin-folder.ts +4 -1
- package/apps/server/src/plugin-support/plugin-module.ts +1 -1
- package/apps/server/src/plugin-support/plugins-root.ts +6 -10
- package/apps/server/src/plugin-support/process-sandbox.ts +312 -0
- package/apps/server/src/plugin-support/product-model-settings-contract.ts +14 -5
- package/apps/server/src/plugin-support/product-model-settings.ts +10 -9
- package/{plugins/ragents.product/server/relay.ts → apps/server/src/plugin-support/product-relay.ts} +2 -2
- package/apps/server/src/plugin-support/product-start-options.ts +8 -3
- package/apps/server/src/plugin-support/prompt.ts +1 -1
- package/apps/server/src/plugin-support/provision.ts +6 -0
- package/apps/server/src/plugin-support/run-scripts.ts +16 -2
- package/apps/server/src/plugin-support/skills.ts +32 -16
- package/apps/server/src/plugin-support/start-entries-contract.ts +12 -3
- package/apps/server/src/plugin-support/start-options-contract.ts +5 -1
- package/apps/server/src/plugin-support/thinking-level.ts +6 -1
- package/apps/server/src/plugin-support/tool-availability.ts +1 -7
- package/apps/server/src/plugin-support/workspace-ownership.ts +12 -6
- package/apps/server/src/plugin-support/workspace-sandbox-host.ts +184 -37
- package/apps/server/src/profile/bundle-manifest.ts +183 -0
- package/apps/server/src/profile/compose.ts +19 -10
- package/apps/server/src/profile/plugin-discovery.ts +98 -46
- package/apps/server/src/profile/provisioning.ts +30 -26
- package/apps/server/src/profile-target.ts +3 -0
- package/apps/server/src/provider.ts +212 -106
- package/apps/server/src/ragents/actor-chat-history.ts +24 -22
- package/apps/server/src/ragents/chat-projection.ts +25 -14
- package/apps/server/src/ragents/chat-text-positions.ts +4 -4
- package/apps/server/src/ragents/coordinator.ts +27 -1
- package/apps/server/src/ragents/document-store.ts +1 -1
- package/apps/server/src/ragents/engine.ts +68 -43
- package/apps/server/src/ragents/global-chat.ts +26 -13
- package/apps/server/src/ragents/host-services.ts +15 -6
- package/apps/server/src/ragents/journal-chat-events.ts +33 -15
- package/apps/server/src/ragents/product-runtime.ts +1 -1
- package/apps/server/src/ragents/run-owner.ts +18 -0
- package/apps/server/src/ragents/runtime-bridge.ts +1 -1
- package/apps/server/src/ragents/session.ts +184 -85
- package/apps/server/src/ragents/start-option-state.ts +1 -1
- package/apps/server/src/ragents/typescript-tools.ts +35 -27
- package/apps/server/src/ragents/workspace-runtime.ts +74 -8
- package/apps/server/src/rpc/dispatcher.ts +17 -8
- package/apps/server/src/rpc/http-transport.ts +1 -3
- package/apps/server/src/rpc/stdio-transport.ts +1 -1
- package/apps/server/src/run-preparation-contract.ts +1 -1
- package/apps/server/src/run-preparation-input.ts +1 -1
- package/apps/server/src/run-preparation.ts +18 -29
- package/apps/server/src/run-transfer.ts +66 -5
- package/apps/server/src/server.ts +112 -33
- package/apps/server/src/settings.ts +9 -12
- package/apps/server/src/title-compactor.ts +5 -8
- package/apps/server/src/title-settings.ts +3 -3
- package/apps/server/src/web-bundles.ts +79 -0
- package/apps/server/src/web-stylesheet.ts +85 -0
- package/apps/server/tsconfig.json +4 -4
- package/apps/server/tsconfig.plugin.json +58 -0
- package/apps/web/dist/assets/highlighted-body-KPVGNVTW-CFhTJEmH.js +1 -0
- package/apps/web/dist/assets/main-DlzW4t4c.js +6 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-BPn4aV2r.css +1 -0
- package/apps/web/dist/assets/mermaid-HWGCJPDP-kxkB991i.js +478 -0
- package/apps/web/dist/assets/runPanel-BJEFQ__w.js +21 -0
- package/apps/web/dist/help/guide-access.html +199 -0
- package/apps/web/dist/help/guide-access.md +84 -0
- package/apps/web/dist/help/guide-clients.html +430 -0
- package/apps/web/dist/help/guide-clients.md +346 -0
- package/apps/web/dist/help/guide-distributed.html +325 -0
- package/apps/web/dist/help/guide-distributed.md +230 -0
- package/apps/web/dist/help/guide-functions.html +231 -0
- package/apps/web/dist/help/guide-functions.md +127 -0
- package/apps/web/dist/help/guide-getting-started.html +230 -0
- package/apps/web/dist/help/guide-getting-started.md +123 -0
- package/apps/web/dist/help/guide-ideas.html +183 -0
- package/apps/web/dist/help/guide-ideas.md +71 -0
- package/apps/web/dist/help/guide-plugins.html +450 -0
- package/apps/web/dist/help/guide-plugins.md +341 -0
- package/apps/web/dist/help/guide-programs.html +359 -0
- package/apps/web/dist/help/guide-programs.md +271 -0
- package/apps/web/dist/help/guide-runtime.html +344 -0
- package/apps/web/dist/help/guide-runtime.md +232 -0
- package/apps/web/dist/help/guide.html +133 -0
- package/apps/web/dist/help/guide.md +13 -0
- package/apps/web/dist/help/homepage-bullets.js +12 -0
- package/apps/web/dist/help/homepage-distributed.js +261 -0
- package/apps/web/dist/help/homepage-plugins.js +30 -0
- package/apps/web/dist/help/homepage-scenes.js +368 -0
- package/apps/web/dist/help/homepage-stickers.js +69 -0
- package/apps/web/dist/help/homepage-story-nav.js +11 -0
- package/apps/web/dist/help/homepage-subnav.js +61 -0
- package/apps/web/dist/help/homepage.css +833 -0
- package/apps/web/dist/help/index.html +1167 -0
- package/apps/web/dist/help/mini-app.css +7076 -0
- package/apps/web/dist/help/mini-app.html +15 -0
- package/apps/web/dist/help/mini-app.js +131 -0
- package/apps/web/dist/help/screenshots/release-checklist-vscode.png +0 -0
- package/apps/web/dist/help/screenshots/release-checklist-web.png +0 -0
- package/apps/web/dist/help/scroll-vendor.js +73 -0
- package/apps/web/dist/help/site.css +63 -0
- package/apps/web/dist/help/site.js +103 -0
- package/apps/web/dist/host-web.json +143 -0
- package/apps/web/dist/index.html +15 -0
- package/apps/web/dist/run-panel.html +15 -0
- package/apps/web/package.json +2 -2
- package/apps/web/src/App.tsx +8 -6
- package/apps/web/src/Overview.tsx +5 -5
- package/apps/web/src/PluginActivation.ts +25 -5
- package/apps/web/src/PluginChat.tsx +163 -129
- package/apps/web/src/PluginFailureNotice.tsx +15 -0
- package/apps/web/src/PluginRegistry.tsx +106 -68
- package/apps/web/src/RunPreparationChat.tsx +40 -28
- package/apps/web/src/RunStore.ts +2 -2
- package/apps/web/src/SessionList.tsx +16 -8
- package/apps/web/src/SettingsModal.tsx +37 -37
- package/apps/web/src/StartOptions.tsx +81 -26
- package/apps/web/src/StartSelection.tsx +111 -0
- package/apps/web/src/StartTiles.tsx +73 -0
- package/apps/web/src/{CanvasShortcuts.tsx → SurfaceShortcuts.tsx} +2 -2
- package/apps/web/src/ThemeSettings.tsx +1 -1
- package/apps/web/src/WorkspacePanel.tsx +4 -4
- package/apps/web/src/access-session.ts +4 -1
- package/{plugins/ragents.orchestration/web → apps/web/src}/actor-conversation.ts +3 -3
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/DataTable.tsx +9 -9
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FilePicker.tsx +4 -4
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagram.tsx +16 -14
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/FlowDiagramRenderer.tsx +3 -3
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Form.tsx +12 -12
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Layout.tsx +1 -1
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/MessageList.tsx +5 -5
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/Viewers.tsx +8 -7
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/WorkflowDiagram.tsx +1 -1
- package/apps/web/src/actor-programs/client-ui/chat-contracts.d.ts +64 -0
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/contracts.d.ts +2 -2
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-selection.ts +5 -5
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/index.tsx +22 -16
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/layout-contracts.d.ts +1 -1
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/message-list-contracts.d.ts +2 -2
- package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/workflow-diagram-contracts.d.ts +1 -1
- package/apps/web/src/api.ts +45 -22
- package/apps/web/src/chat/QuasselHost.tsx +12 -0
- package/apps/web/src/chat/StoppedActorNotice.tsx +39 -0
- package/apps/web/src/chat/chat-target.ts +14 -5
- package/apps/web/src/chat/requests.ts +13 -5
- package/apps/web/src/chat/useAttachmentCapabilities.ts +2 -2
- package/apps/web/src/chat/useChat.ts +8 -7
- package/apps/web/src/chat/user-location.ts +1 -1
- package/apps/web/src/chat-view-settings.tsx +49 -0
- package/apps/web/src/host-modules.ts +90 -0
- package/apps/web/src/language-server/api.ts +24 -0
- package/{plugins/ragents.lsp-roslyn/web → apps/web/src/language-server}/language-server-plugin.tsx +133 -6
- package/apps/web/src/main.tsx +4 -2
- package/apps/web/src/offered-machines.ts +11 -0
- package/apps/web/src/panel/ConnectionsPage.tsx +117 -0
- package/apps/web/src/panel/LoginForm.tsx +9 -9
- package/apps/web/src/panel/PanelDialogs.tsx +44 -27
- package/apps/web/src/panel/PanelHeader.tsx +11 -0
- package/apps/web/src/panel/PanelPage.tsx +8 -5
- package/apps/web/src/panel/RunLine.tsx +50 -0
- package/apps/web/src/panel/RunsPage.tsx +84 -0
- package/apps/web/src/panel/StartPage.tsx +163 -0
- package/apps/web/src/panel/connection-state.ts +40 -0
- package/apps/web/src/panel/contract.ts +66 -21
- package/apps/web/src/panel/page-props.ts +6 -0
- package/apps/web/src/plugin-bootstrap.ts +60 -31
- package/{plugins/ragents.product/web → apps/web/src/product}/ModelControl.tsx +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/ProductModelSettings.tsx +7 -7
- package/{plugins/ragents.product/web → apps/web/src/product}/SystemPromptControl.tsx +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/model-settings.ts +3 -3
- package/{plugins/ragents.product/web → apps/web/src/product}/start-options.tsx +2 -2
- package/apps/web/src/rpc/client.ts +28 -6
- package/apps/web/src/run-panel/RunPanelApp.tsx +334 -0
- package/apps/web/src/{column/ColumnRunHeader.tsx → run-panel/RunPanelHeader.tsx} +2 -2
- package/apps/web/src/{column/ColumnMenu.tsx → run-panel/RunPanelMenu.tsx} +4 -4
- package/apps/web/src/run-panel/RunPanelRail.tsx +38 -0
- package/apps/web/src/run-panel/RunPanelWorkspace.tsx +55 -0
- package/apps/web/src/{column → run-panel}/clipboard.ts +21 -10
- package/apps/web/src/run-panel/host-contract.ts +123 -0
- package/apps/web/src/{column → run-panel}/host.ts +31 -23
- package/apps/web/src/run-panel/input-bridge.ts +75 -0
- package/apps/web/src/run-panel/keyboard.ts +53 -0
- package/apps/web/src/run-panel/run-panel-location.ts +35 -0
- package/apps/web/src/{column → run-panel}/use-session-list.ts +3 -3
- package/apps/web/src/run-panel/workspace-state.ts +43 -0
- package/apps/web/src/{column.tsx → run-panel.tsx} +20 -13
- package/apps/web/src/run-preparation.ts +1 -1
- package/{plugins/ragents.orchestration/web → apps/web/src}/run-view.ts +25 -7
- package/apps/web/src/settings-contributions.ts +16 -18
- package/apps/web/src/title-model-settings.ts +1 -1
- package/apps/web/src/toolLine.ts +1 -1
- package/apps/web/src/ui/ListDetail.tsx +1 -1
- package/apps/web/src/ui/dialog.tsx +5 -5
- package/apps/web/src/ui/frame.css +1 -0
- package/apps/web/src/ui/index.ts +5 -0
- package/apps/web/src/ui/popover.tsx +2 -2
- package/apps/web/src/ui/quassel.css +41 -0
- package/apps/web/src/ui/relative-time.ts +36 -0
- package/apps/web/src/ui/startup-notice.tsx +22 -0
- package/apps/web/src/ui/state-icon.tsx +60 -0
- package/apps/web/src/ui/state-vocabulary.ts +31 -0
- package/apps/web/src/ui/stop-button.tsx +22 -0
- package/apps/web/src/ui/tailwind.css +2 -3
- package/apps/web/src/ui/theme.css +19 -19
- package/apps/web/tsconfig.json +4 -5
- package/apps/web/tsconfig.plugin.json +44 -0
- package/bundles/ragents.activity/ragents-bundle.json +38 -0
- package/bundles/ragents.activity/server/index.js +14 -0
- package/bundles/ragents.activity/server/index.js.map +7 -0
- package/bundles/ragents.activity/web/classes.json +1 -0
- package/bundles/ragents.activity/web/index.js +2 -0
- package/bundles/ragents.activity/web/index.js.map +7 -0
- package/bundles/ragents.actor-programs/prompt.hbs +80 -0
- package/bundles/ragents.actor-programs/ragents-bundle.json +214 -0
- package/bundles/ragents.actor-programs/server/index.js +2071 -0
- package/bundles/ragents.actor-programs/server/index.js.map +7 -0
- package/bundles/ragents.actor-programs/summary.hbs +17 -0
- package/bundles/ragents.actor-programs/web/classes.json +1 -0
- package/bundles/ragents.actor-programs/web/index.js +27 -0
- package/bundles/ragents.actor-programs/web/index.js.map +7 -0
- package/bundles/ragents.ask/ask.hbs +4 -0
- package/bundles/ragents.ask/ragents-bundle.json +97 -0
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js +13 -0
- package/bundles/ragents.ask/server/chunks/chunk-PDJO75SQ.js.map +7 -0
- package/bundles/ragents.ask/server/exports/server/contract.js +11 -0
- package/bundles/ragents.ask/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.ask/server/index.js +279 -0
- package/bundles/ragents.ask/server/index.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-4VXWWEG7.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-HGFDGTNC.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js +25 -0
- package/bundles/ragents.ask/web/chunks/chunk-V7W3QDVS.js.map +7 -0
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js +2 -0
- package/bundles/ragents.ask/web/chunks/chunk-VUBJDIKQ.js.map +7 -0
- package/bundles/ragents.ask/web/classes.json +1 -0
- package/bundles/ragents.ask/web/exports/ask-payload.js +2 -0
- package/bundles/ragents.ask/web/exports/ask-payload.js.map +7 -0
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js +2 -0
- package/bundles/ragents.ask/web/exports/web/QuestionCard.js.map +7 -0
- package/bundles/ragents.ask/web/exports/web/api.js +2 -0
- package/bundles/ragents.ask/web/exports/web/api.js.map +7 -0
- package/bundles/ragents.ask/web/index.js +2 -0
- package/bundles/ragents.ask/web/index.js.map +7 -0
- package/bundles/ragents.browser/ragents-bundle.json +53 -0
- package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js +11 -0
- package/bundles/ragents.browser/server/chunks/chunk-2GKLLCBE.js.map +7 -0
- package/bundles/ragents.browser/server/exports/server/contract.js +9 -0
- package/bundles/ragents.browser/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.browser/server/index.js +479 -0
- package/bundles/ragents.browser/server/index.js.map +7 -0
- package/bundles/ragents.browser/skills/browser-testing/SKILL.md +38 -0
- package/bundles/ragents.documents/prompt.hbs +18 -0
- package/bundles/ragents.documents/ragents-bundle.json +120 -0
- package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js +37 -0
- package/bundles/ragents.documents/server/chunks/chunk-QIECRZ7C.js.map +7 -0
- package/bundles/ragents.documents/server/exports/contract.js +11 -0
- package/bundles/ragents.documents/server/exports/contract.js.map +7 -0
- package/bundles/ragents.documents/server/index.js +290 -0
- package/bundles/ragents.documents/server/index.js.map +7 -0
- package/bundles/ragents.documents/web/classes.json +1 -0
- package/bundles/ragents.documents/web/index.js +26 -0
- package/bundles/ragents.documents/web/index.js.map +7 -0
- package/bundles/ragents.lsp-fsharp/ragents-bundle.json +49 -0
- package/bundles/ragents.lsp-fsharp/server/index.js +82 -0
- package/bundles/ragents.lsp-fsharp/server/index.js.map +7 -0
- package/bundles/ragents.lsp-fsharp/web/classes.json +1 -0
- package/bundles/ragents.lsp-fsharp/web/index.js +2 -0
- package/bundles/ragents.lsp-fsharp/web/index.js.map +7 -0
- package/bundles/ragents.lsp-roslyn/ragents-bundle.json +61 -0
- package/bundles/ragents.lsp-roslyn/server/index.js +208 -0
- package/bundles/ragents.lsp-roslyn/server/index.js.map +7 -0
- package/bundles/ragents.lsp-roslyn/web/classes.json +1 -0
- package/bundles/ragents.lsp-roslyn/web/index.js +2 -0
- package/bundles/ragents.lsp-roslyn/web/index.js.map +7 -0
- package/bundles/ragents.lsp-typescript/ragents-bundle.json +36 -0
- package/bundles/ragents.lsp-typescript/server/index.js +13 -0
- package/bundles/ragents.lsp-typescript/server/index.js.map +7 -0
- package/bundles/ragents.lsp-typescript/web/classes.json +1 -0
- package/bundles/ragents.lsp-typescript/web/index.js +2 -0
- package/bundles/ragents.lsp-typescript/web/index.js.map +7 -0
- package/bundles/ragents.model-relay/ragents-bundle.json +33 -0
- package/bundles/ragents.model-relay/server/index.js +230 -0
- package/bundles/ragents.model-relay/server/index.js.map +7 -0
- package/bundles/ragents.orchestration/orchestration.hbs +106 -0
- package/bundles/ragents.orchestration/ragents-bundle.json +194 -0
- package/bundles/ragents.orchestration/server/index.js +277 -0
- package/bundles/ragents.orchestration/server/index.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-ODMMQGX2.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OQYCNYXN.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-OSKPH6SZ.js.map +7 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js +2 -0
- package/bundles/ragents.orchestration/web/chunks/chunk-XGPPQCZR.js.map +7 -0
- package/bundles/ragents.orchestration/web/classes.json +1 -0
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/program-slot.js.map +7 -0
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/surface-entities.js.map +7 -0
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js +2 -0
- package/bundles/ragents.orchestration/web/exports/web/tile-docking.js.map +7 -0
- package/bundles/ragents.orchestration/web/index.js +51 -0
- package/bundles/ragents.orchestration/web/index.js.map +7 -0
- package/bundles/ragents.overseer/ragents-bundle.json +144 -0
- package/bundles/ragents.overseer/server/index.js +652 -0
- package/bundles/ragents.overseer/server/index.js.map +7 -0
- package/bundles/ragents.overseer/web/classes.json +1 -0
- package/bundles/ragents.overseer/web/index.js +25 -0
- package/bundles/ragents.overseer/web/index.js.map +7 -0
- package/bundles/ragents.processes/ragents-bundle.json +93 -0
- package/bundles/ragents.processes/server/index.js +204 -0
- package/bundles/ragents.processes/server/index.js.map +7 -0
- package/bundles/ragents.processes/web/classes.json +1 -0
- package/bundles/ragents.processes/web/index.js +4 -0
- package/bundles/ragents.processes/web/index.js.map +7 -0
- package/bundles/ragents.product/preamble.hbs +9 -0
- package/bundles/ragents.product/ragents-bundle.json +93 -0
- package/bundles/ragents.product/server/index.js +208 -0
- package/bundles/ragents.product/server/index.js.map +7 -0
- package/bundles/ragents.product/web/classes.json +1 -0
- package/bundles/ragents.product/web/index.js +2 -0
- package/bundles/ragents.product/web/index.js.map +7 -0
- package/bundles/ragents.profile-distribution/ragents-bundle.json +64 -0
- package/bundles/ragents.profile-distribution/server/index.js +241 -0
- package/bundles/ragents.profile-distribution/server/index.js.map +7 -0
- package/bundles/ragents.reference/ragents-bundle.json +39 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/RUN.md +27 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/package.json +10 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +80 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/conversation.ts +82 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/tests/conversation.test.ts +154 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/src/server.ts +32 -0
- package/bundles/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +59 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/RUN.md +13 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/src/server.ts +81 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/conversation-circle/tests/program.test.ts +34 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/RUN.md +24 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/package.json +10 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/experiment.md +1 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/helper.md +5 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/prompts/quiz.md +1 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +27 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/server.ts +137 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/state.ts +38 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +42 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +38 -0
- package/bundles/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +218 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/RUN.md +12 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/src/server.ts +60 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +24 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/RUN.md +18 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/package.json +16 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +39 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/contract.ts +15 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/server.ts +14 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/tests/program.test.ts +13 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/package.json +9 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/src/server.ts +65 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +26 -0
- package/bundles/ragents.reference/run-scripts/shared-actor-list/tests/program.test.ts +42 -0
- package/bundles/ragents.reference/run-scripts/word-game/RUN.md +25 -0
- package/bundles/ragents.reference/run-scripts/word-game/package.json +11 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/client.tsx +27 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/contract.ts +23 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/server.ts +105 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/state.ts +22 -0
- package/bundles/ragents.reference/run-scripts/word-game/src/view.tsx +54 -0
- package/bundles/ragents.reference/run-scripts/word-game/tests/program.test.ts +252 -0
- package/bundles/ragents.reference/server/index.js +16 -0
- package/bundles/ragents.reference/server/index.js.map +7 -0
- package/bundles/ragents.reference/skills/100-shared-actor-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/110-all-card-slots/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/150-editorial-workbench/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/160-learning-companion/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/170-photo-collection/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/180-decision-workbench/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/190-review-queue/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/20-circle-of-four/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/200-typescript-diagnostics/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/210-moderator-handover/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/220-actor-approval-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/230-shared-state-views/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/240-live-result-list/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/250-balcony-wizard/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/30-llm-without-runtime-knowledge/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/35-actor-input-fifo/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/40-subscription-matrix/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/50-subscription-removal/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/60-stop-in-the-circle/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/65-artifact-least-privilege/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/70-headless-counter/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/75-lsp-demo/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/80-actor-text-analysis/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/90-actor-notes/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/95-hello-world/SKILL.md +12 -0
- package/bundles/ragents.reference/skills/decision-brief/SKILL.md +33 -0
- package/bundles/ragents.reference/skills/learning-sprint/SKILL.md +33 -0
- package/bundles/ragents.reference/web/classes.json +1 -0
- package/bundles/ragents.reference/web/index.js +2 -0
- package/bundles/ragents.reference/web/index.js.map +7 -0
- package/bundles/ragents.todo/ragents-bundle.json +48 -0
- package/bundles/ragents.todo/server/index.js +108 -0
- package/bundles/ragents.todo/server/index.js.map +7 -0
- package/bundles/ragents.todo/web/classes.json +1 -0
- package/bundles/ragents.todo/web/index.js +2 -0
- package/bundles/ragents.todo/web/index.js.map +7 -0
- package/bundles/ragents.transcript/ragents-bundle.json +34 -0
- package/bundles/ragents.transcript/server/index.js +102 -0
- package/bundles/ragents.transcript/server/index.js.map +7 -0
- package/bundles/ragents.watch/ragents-bundle.json +39 -0
- package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js +11 -0
- package/bundles/ragents.watch/server/chunks/chunk-FHAM6OML.js.map +7 -0
- package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js +10 -0
- package/bundles/ragents.watch/server/chunks/chunk-RPBX3J4P.js.map +7 -0
- package/bundles/ragents.watch/server/exports/contract.js +9 -0
- package/bundles/ragents.watch/server/exports/contract.js.map +7 -0
- package/bundles/ragents.watch/server/exports/server/contract.js +9 -0
- package/bundles/ragents.watch/server/exports/server/contract.js.map +7 -0
- package/bundles/ragents.watch/server/index.js +482 -0
- package/bundles/ragents.watch/server/index.js.map +7 -0
- package/bundles/ragents.workspace/prompt.hbs +7 -0
- package/bundles/ragents.workspace/ragents-bundle.json +148 -0
- package/bundles/ragents.workspace/server/index.js +1049 -0
- package/bundles/ragents.workspace/server/index.js.map +7 -0
- package/bundles/ragents.workspace/web/classes.json +1 -0
- package/bundles/ragents.workspace/web/index.js +39 -0
- package/bundles/ragents.workspace/web/index.js.map +7 -0
- package/package.json +4 -15
- package/packages/agent/dist/core/agent-settings.d.ts +27 -0
- package/packages/agent/dist/core/compaction/compaction.d.ts +82 -0
- package/packages/agent/dist/core/compaction/index.d.ts +6 -0
- package/packages/agent/dist/core/compaction/utils.d.ts +39 -0
- package/packages/agent/dist/core/context-log.d.ts +25 -0
- package/packages/agent/dist/core/messages.d.ts +30 -0
- package/packages/agent/dist/core/model-runtime.d.ts +32 -0
- package/packages/agent/dist/core/provider-composer.d.ts +25 -0
- package/packages/agent/dist/core/skills.d.ts +20 -0
- package/packages/agent/dist/core/tool-definition.d.ts +17 -0
- package/packages/agent/dist/core/tools/bash.d.ts +58 -0
- package/packages/agent/dist/core/tools/edit-diff.d.ts +98 -0
- package/packages/agent/dist/core/tools/edit.d.ts +41 -0
- package/packages/agent/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/packages/agent/dist/core/tools/index.d.ts +5 -0
- package/packages/agent/dist/core/tools/output-accumulator.d.ts +58 -0
- package/packages/agent/dist/core/tools/path-utils.d.ts +8 -0
- package/packages/agent/dist/core/tools/read.d.ts +33 -0
- package/packages/agent/dist/core/tools/truncate.d.ts +61 -0
- package/packages/agent/dist/core/tools/write.d.ts +23 -0
- package/packages/agent/dist/index.d.ts +12 -0
- package/packages/agent/dist/loop/agent-loop.d.ts +13 -0
- package/packages/agent/dist/loop/agent.d.ts +99 -0
- package/packages/agent/dist/loop/index.d.ts +5 -0
- package/packages/agent/dist/loop/types.d.ts +333 -0
- package/packages/agent/dist/loop/uuid.d.ts +2 -0
- package/packages/agent/dist/utils/child-process.d.ts +17 -0
- package/packages/agent/dist/utils/exif-orientation.d.ts +5 -0
- package/packages/agent/dist/utils/frontmatter.d.ts +8 -0
- package/packages/agent/dist/utils/image-convert.d.ts +2 -0
- package/packages/agent/dist/utils/image-process.d.ts +18 -0
- package/packages/agent/dist/utils/image-resize-core.d.ts +30 -0
- package/packages/agent/dist/utils/image-resize-worker.d.ts +2 -0
- package/packages/agent/dist/utils/image-resize.d.ts +16 -0
- package/packages/agent/dist/utils/mime.d.ts +3 -0
- package/packages/agent/dist/utils/paths.d.ts +15 -0
- package/packages/agent/dist/utils/photon.d.ts +21 -0
- package/packages/agent/dist/utils/shell.d.ts +17 -0
- package/packages/agent/dist/utils/sleep.d.ts +5 -0
- package/packages/agent/package.json +3 -32
- package/packages/agent/src/core/agent-settings.ts +20 -0
- package/packages/agent/src/core/compaction/compaction.ts +53 -208
- package/packages/agent/src/core/compaction/index.ts +0 -1
- package/packages/agent/src/core/compaction/utils.ts +2 -2
- package/packages/agent/src/core/context-log.ts +49 -0
- package/packages/agent/src/core/messages.ts +9 -119
- package/packages/agent/src/core/model-runtime.ts +109 -467
- package/packages/agent/src/core/provider-composer.ts +21 -451
- package/packages/agent/src/core/skills.ts +8 -440
- package/packages/agent/src/core/tool-definition.ts +29 -0
- package/packages/agent/src/core/tools/bash.ts +22 -41
- package/packages/agent/src/core/tools/edit-diff.ts +0 -60
- package/packages/agent/src/core/tools/edit.ts +4 -29
- package/packages/agent/src/core/tools/index.ts +4 -130
- package/packages/agent/src/core/tools/output-accumulator.ts +33 -5
- package/packages/agent/src/core/tools/path-utils.ts +2 -49
- package/packages/agent/src/core/tools/read.ts +6 -29
- package/packages/agent/src/core/tools/truncate.ts +0 -15
- package/packages/agent/src/core/tools/write.ts +2 -13
- package/packages/agent/src/index.ts +23 -270
- package/packages/{agent-core/src → agent/src/loop}/agent-loop.ts +128 -275
- package/packages/{agent-core/src → agent/src/loop}/agent.ts +20 -166
- package/packages/{agent-core/src → agent/src/loop}/types.ts +6 -105
- package/packages/agent/src/utils/child-process.ts +0 -13
- package/packages/agent/src/utils/image-convert.ts +0 -25
- package/packages/agent/src/utils/paths.ts +1 -71
- package/packages/agent/src/utils/shell.ts +13 -156
- package/packages/ai/dist/api/ai-sdk-messages.d.ts +9 -0
- package/packages/ai/dist/api/ai-sdk-transport.d.ts +13 -0
- package/packages/ai/dist/api/ai-sdk.d.ts +15 -0
- package/packages/ai/dist/api/ai-sdk.lazy.d.ts +3 -0
- package/packages/ai/dist/api/lazy.d.ts +15 -0
- package/packages/ai/dist/api/simple-options.d.ts +4 -0
- package/packages/ai/dist/api/transform-messages.d.ts +8 -0
- package/packages/ai/dist/api-registry.d.ts +25 -0
- package/packages/ai/dist/auth/context.d.ts +4 -0
- package/packages/ai/dist/auth/helpers.d.ts +4 -0
- package/packages/ai/dist/auth/resolve.d.ts +19 -0
- package/packages/ai/dist/auth/types.d.ts +51 -0
- package/packages/ai/dist/env-api-keys.d.ts +8 -0
- package/packages/ai/dist/index.d.ts +19 -0
- package/packages/ai/dist/models.d.ts +71 -0
- package/packages/ai/dist/models.generated.d.ts +8021 -0
- package/packages/ai/dist/providers/all.d.ts +15 -0
- package/packages/ai/dist/providers/faux.d.ts +97 -0
- package/packages/ai/dist/providers/openrouter.d.ts +3 -0
- package/packages/ai/dist/providers/openrouter.models.d.ts +8019 -0
- package/packages/ai/dist/types.d.ts +543 -0
- package/packages/ai/dist/utils/diagnostics.d.ts +13 -0
- package/packages/ai/dist/utils/error-body.d.ts +25 -0
- package/packages/ai/dist/utils/estimate.d.ts +17 -0
- package/packages/ai/dist/utils/event-stream.d.ts +21 -0
- package/packages/ai/dist/utils/headers.d.ts +2 -0
- package/packages/ai/dist/utils/json-parse.d.ts +16 -0
- package/packages/ai/dist/utils/overflow.d.ts +54 -0
- package/packages/ai/dist/utils/provider-env.d.ts +7 -0
- package/packages/ai/dist/utils/retry.d.ts +12 -0
- package/packages/ai/dist/utils/sanitize-unicode.d.ts +22 -0
- package/packages/ai/dist/utils/typebox-helpers.d.ts +17 -0
- package/packages/ai/dist/utils/validation.d.ts +10 -0
- package/packages/ai/package.json +2 -6
- package/packages/ai/src/api/ai-sdk-messages.ts +15 -10
- package/packages/ai/src/api/ai-sdk-transport.ts +2 -2
- package/packages/ai/src/api/ai-sdk.ts +11 -0
- package/packages/ai/src/api/simple-options.ts +0 -34
- package/packages/ai/src/api/transform-messages.ts +1 -1
- package/packages/ai/src/api-registry.ts +1 -12
- package/packages/ai/src/auth/context.ts +1 -30
- package/packages/ai/src/auth/helpers.ts +3 -34
- package/packages/ai/src/auth/resolve.ts +10 -108
- package/packages/ai/src/auth/types.ts +9 -176
- package/packages/ai/src/index.ts +1 -13
- package/packages/ai/src/models.ts +41 -407
- package/packages/ai/src/providers/all.ts +3 -31
- package/packages/ai/src/providers/openrouter.models.ts +14 -0
- package/packages/ai/src/types.ts +2 -104
- package/packages/ai/src/utils/diagnostics.ts +0 -32
- package/packages/ai/src/utils/headers.ts +0 -11
- package/packages/ai/src/utils/overflow.ts +0 -7
- package/packages/ai/src/utils/retry.ts +14 -0
- package/packages/ai/src/utils/validation.ts +0 -15
- package/packages/ragents/package.json +3 -6
- package/packages/ragents/src/access.ts +2 -1
- package/packages/ragents/src/agents/actor-input.ts +29 -18
- package/packages/ragents/src/agents/catalog.ts +3 -3
- package/packages/ragents/src/agents/model-context.ts +360 -0
- package/packages/ragents/src/agents/plugins.ts +0 -4
- package/packages/ragents/src/agents/scheduler.ts +233 -83
- package/packages/ragents/src/agents/schemas.ts +1 -36
- package/packages/ragents/src/agents/tool-orientation.ts +1 -1
- package/packages/ragents/src/agents/tools.ts +74 -75
- package/packages/ragents/src/agents/toolset.ts +51 -24
- package/packages/ragents/src/agents/turn.ts +2 -14
- package/packages/ragents/src/agents/workspaces.ts +12 -0
- package/packages/ragents/src/domain/actor-reference.ts +22 -0
- package/packages/ragents/src/domain/driver.ts +0 -9
- package/packages/ragents/src/domain/event-semantics.ts +111 -72
- package/packages/ragents/src/domain/event-validation.ts +188 -21
- package/packages/ragents/src/domain/events.ts +91 -7
- package/packages/ragents/src/domain/json.ts +2 -0
- package/packages/ragents/src/domain/model.ts +42 -18
- package/packages/ragents/src/domain/projection.ts +52 -15
- package/packages/ragents/src/domain/schema-errors.ts +3 -3
- package/packages/ragents/src/domain/tool-result-text.ts +9 -0
- package/packages/ragents/src/drivers/agent-hooks.ts +27 -0
- package/packages/ragents/src/drivers/agent-runtime.ts +137 -1020
- package/packages/ragents/src/drivers/agent-turn.ts +735 -0
- package/packages/ragents/src/drivers/agent.ts +13 -26
- package/packages/ragents/src/drivers/attachments.ts +4 -24
- package/packages/ragents/src/drivers/skill-preload.ts +56 -78
- package/packages/ragents/src/drivers/types.ts +39 -6
- package/packages/ragents/src/http/contracts.ts +16 -3
- package/packages/ragents/src/http/methods.ts +32 -33
- package/packages/ragents/src/index.ts +12 -21
- package/packages/ragents/src/plugin-host.ts +150 -105
- package/packages/ragents/src/plugin-types.ts +86 -23
- package/packages/ragents/src/rpc/peer.ts +6 -0
- package/packages/ragents/src/runtime/decisions/actions.ts +40 -37
- package/packages/ragents/src/runtime/decisions/actors.ts +100 -51
- package/packages/ragents/src/runtime/decisions/artifacts.ts +2 -2
- package/packages/ragents/src/runtime/decisions/inputs.ts +3 -3
- package/packages/ragents/src/runtime/decisions/subscriptions.ts +9 -7
- package/packages/ragents/src/runtime/decisions/turns.ts +101 -9
- package/packages/ragents/src/runtime/guards.ts +12 -21
- package/packages/ragents/src/runtime/journal-storage.ts +8 -3
- package/packages/ragents/src/runtime/journal.ts +36 -1
- package/packages/ragents/src/runtime/orchestration.ts +167 -19
- package/packages/ragents/src/runtime/serial-queue.ts +24 -0
- package/packages/ragents/src/runtime/stop.ts +19 -44
- package/packages/ragents/src/script/mediators.ts +4 -5
- package/packages/ragents/src/typescript/index.ts +2 -0
- package/packages/ragents/src/typescript/run-context.ts +10 -8
- package/packages/ragents/src/typescript/snippet.ts +7 -6
- package/packages/workspace-executor/package.json +2 -2
- package/packages/workspace-executor/src/bash-launch.ts +45 -0
- package/packages/workspace-executor/src/browser/contract.ts +71 -0
- package/packages/workspace-executor/src/browser/module.ts +74 -0
- package/packages/workspace-executor/src/browser/pages.ts +298 -0
- package/packages/workspace-executor/src/browser/playwright.ts +52 -0
- package/packages/workspace-executor/src/commands.ts +170 -0
- package/packages/workspace-executor/src/context.ts +34 -6
- package/packages/workspace-executor/src/errors.ts +12 -0
- package/packages/workspace-executor/src/executor.ts +62 -104
- package/packages/workspace-executor/src/files.ts +287 -0
- package/packages/workspace-executor/src/index.ts +82 -18
- package/packages/workspace-executor/src/language-server/adapters/roslyn.ts +1 -0
- package/packages/workspace-executor/src/language-server/contract.ts +14 -0
- package/packages/workspace-executor/src/language-server/host.ts +82 -26
- package/packages/workspace-executor/src/language-server/module.ts +107 -0
- package/packages/workspace-executor/src/language-server/workspace-solutions.ts +90 -0
- package/packages/workspace-executor/src/managed-process.ts +1 -1
- package/packages/workspace-executor/src/module.ts +35 -0
- package/packages/workspace-executor/src/modules.ts +25 -0
- package/packages/workspace-executor/src/paths.ts +57 -5
- package/packages/workspace-executor/src/process-sandbox.ts +16 -0
- package/packages/workspace-executor/src/processes/module.ts +48 -0
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/process-table.ts +80 -57
- package/packages/workspace-executor/src/processes/scanner.ts +106 -0
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/snapshot.ts +23 -11
- package/{plugins/ragents.processes/server → packages/workspace-executor/src/processes}/terminator.ts +19 -20
- package/packages/workspace-executor/src/run-folders.ts +33 -0
- package/packages/workspace-executor/src/safe-environment.ts +14 -0
- package/packages/workspace-executor/src/sandbox-tools.ts +212 -43
- package/packages/workspace-executor/src/shell-platform.ts +2 -2
- package/plugins/package.json +1 -1
- package/plugins/ragents.activity/ragents-plugin.json +3 -0
- package/plugins/ragents.activity/server/index.ts +2 -2
- package/plugins/ragents.activity/web/ActivityHeader.tsx +2 -2
- package/plugins/ragents.activity/web/activity.ts +1 -1
- package/plugins/ragents.activity/web/index.tsx +1 -1
- package/plugins/ragents.actor-programs/prompt.hbs +8 -7
- package/plugins/ragents.actor-programs/ragents-plugin.json +3 -0
- package/plugins/ragents.actor-programs/server/agent-tools.ts +3 -3
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/capability-resolver.ts +1 -16
- package/plugins/ragents.actor-programs/server/controls-template.ts +5 -18
- package/plugins/ragents.actor-programs/server/controls-tool.ts +8 -11
- package/plugins/ragents.actor-programs/server/index.ts +10 -10
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/limits.ts +4 -4
- package/plugins/ragents.actor-programs/server/methods.ts +2 -2
- package/{apps/server/src/plugin-support/actor-programs → plugins/ragents.actor-programs/server}/operations.ts +2 -4
- package/plugins/ragents.actor-programs/server/project-diagnostics.ts +65 -70
- package/plugins/ragents.actor-programs/server/prompts.ts +4 -4
- package/plugins/ragents.actor-programs/server/routes.ts +14 -8
- package/plugins/ragents.actor-programs/server/runtime.ts +132 -55
- package/plugins/ragents.actor-programs/server/templates.ts +35 -80
- package/plugins/ragents.actor-programs/server/test-report.ts +106 -0
- package/plugins/ragents.actor-programs/server/tool-contributor.ts +4 -4
- package/plugins/ragents.actor-programs/summary.hbs +1 -1
- package/plugins/ragents.actor-programs/web/ActorViewFrame.tsx +15 -10
- package/plugins/ragents.actor-programs/web/AppsPanel.tsx +47 -30
- package/plugins/ragents.actor-programs/web/EmbeddedApps.tsx +15 -17
- package/plugins/ragents.actor-programs/web/FullscreenHost.tsx +3 -3
- package/plugins/ragents.actor-programs/web/FunctionForm.tsx +3 -3
- package/plugins/ragents.actor-programs/web/ProgramSource.tsx +12 -3
- package/plugins/ragents.actor-programs/web/api.ts +5 -5
- package/plugins/ragents.actor-programs/web/bridge.ts +2 -3
- package/plugins/ragents.actor-programs/web/chat-state.ts +9 -8
- package/plugins/ragents.actor-programs/web/index.tsx +7 -17
- package/plugins/ragents.actor-programs/web/program-state.ts +3 -3
- package/plugins/ragents.actor-programs/web/state-revision.ts +2 -2
- package/plugins/ragents.ask/ask-payload.ts +25 -0
- package/plugins/ragents.ask/contract.ts +2 -2
- package/plugins/ragents.ask/ragents-plugin.json +7 -0
- package/plugins/ragents.ask/server/answer-method.ts +1 -1
- package/plugins/ragents.ask/server/ask-service.ts +43 -19
- package/plugins/ragents.ask/server/ask-tool.ts +2 -2
- package/plugins/ragents.ask/server/contract.ts +9 -1
- package/plugins/ragents.ask/server/index.ts +8 -10
- package/plugins/ragents.ask/server/tool-contributor.ts +3 -3
- package/plugins/ragents.ask/web/AskActionView.tsx +36 -0
- package/{apps/web/src/chat → plugins/ragents.ask/web}/QuestionCard.tsx +7 -5
- package/plugins/ragents.ask/web/QuestionSection.tsx +22 -21
- package/plugins/ragents.ask/web/api.ts +1 -1
- package/plugins/ragents.ask/web/index.tsx +11 -8
- package/plugins/ragents.browser/provision.ts +9 -8
- package/plugins/ragents.browser/ragents-plugin.json +6 -0
- package/plugins/ragents.browser/server/browser.ts +165 -286
- package/plugins/ragents.browser/server/contract.ts +8 -19
- package/plugins/ragents.browser/server/index.ts +8 -7
- package/plugins/ragents.browser/server/tools.ts +29 -37
- package/plugins/ragents.browser/skills/browser-testing/SKILL.md +3 -1
- package/plugins/ragents.documents/contract.ts +4 -2
- package/plugins/ragents.documents/ragents-plugin.json +6 -0
- package/plugins/ragents.documents/server/config.ts +1 -1
- package/plugins/ragents.documents/server/document-write-tool.ts +2 -2
- package/plugins/ragents.documents/server/files-route.ts +2 -3
- package/plugins/ragents.documents/server/index.ts +10 -11
- package/plugins/ragents.documents/server/show-document-tool.ts +2 -2
- package/plugins/ragents.documents/server/store.ts +3 -3
- package/plugins/ragents.documents/server/tool-contributor.ts +3 -3
- package/plugins/ragents.documents/web/DocumentViewer.tsx +5 -6
- package/plugins/ragents.documents/web/api.ts +1 -1
- package/plugins/ragents.documents/web/index.tsx +4 -4
- package/plugins/ragents.lsp-fsharp/provision.ts +2 -2
- package/plugins/ragents.lsp-fsharp/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-fsharp/server/index.ts +3 -3
- package/plugins/ragents.lsp-fsharp/web/index.tsx +1 -1
- package/plugins/ragents.lsp-roslyn/provision.ts +2 -2
- package/plugins/ragents.lsp-roslyn/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-roslyn/server/index.ts +47 -8
- package/plugins/ragents.lsp-roslyn/server/solution-on-start.ts +145 -0
- package/plugins/ragents.lsp-roslyn/web/index.tsx +1 -1
- package/plugins/ragents.lsp-typescript/ragents-plugin.json +3 -0
- package/plugins/ragents.lsp-typescript/server/index.ts +3 -3
- package/plugins/ragents.lsp-typescript/web/index.tsx +1 -1
- package/plugins/ragents.model-relay/ragents-plugin.json +3 -0
- package/plugins/ragents.model-relay/server/config.ts +5 -31
- package/plugins/ragents.model-relay/server/index.ts +5 -6
- package/plugins/ragents.model-relay/server/relay.ts +8 -9
- package/plugins/ragents.orchestration/contract.ts +13 -14
- package/plugins/ragents.orchestration/orchestration.hbs +4 -3
- package/plugins/ragents.orchestration/ragents-plugin.json +6 -0
- package/plugins/ragents.orchestration/server/index.ts +13 -16
- package/plugins/ragents.orchestration/server/run-stop-tool.ts +4 -4
- package/plugins/ragents.orchestration/server/{canvas-tool.ts → surface-tool.ts} +42 -43
- package/plugins/ragents.orchestration/surface.hbs +34 -0
- package/plugins/ragents.orchestration/tiled-layout.ts +16 -16
- package/plugins/ragents.orchestration/web/ActorChat.tsx +16 -14
- package/plugins/ragents.orchestration/web/ActorChatControls.tsx +23 -26
- package/plugins/ragents.orchestration/web/ActorChatPreview.tsx +5 -6
- package/plugins/ragents.orchestration/web/ActorPopout.tsx +7 -5
- package/plugins/ragents.orchestration/web/ActorShortcut.tsx +16 -16
- package/plugins/ragents.orchestration/web/{ActorCanvasControls.tsx → ActorSurfaceControls.tsx} +23 -28
- package/plugins/ragents.orchestration/web/ActorTile.tsx +2 -2
- package/plugins/ragents.orchestration/web/Center.tsx +47 -55
- package/plugins/ragents.orchestration/web/DocumentsSection.tsx +4 -4
- package/plugins/ragents.orchestration/web/ExecutionsPanel.tsx +7 -7
- package/plugins/ragents.orchestration/web/FlowInspector.tsx +24 -42
- package/plugins/ragents.orchestration/web/JournalStatus.tsx +8 -8
- package/plugins/ragents.orchestration/web/MaterialBody.tsx +5 -5
- package/plugins/ragents.orchestration/web/StopRunButton.tsx +6 -6
- package/plugins/ragents.orchestration/web/SurfaceStartup.tsx +8 -0
- package/plugins/ragents.orchestration/web/{CanvasTiles.tsx → SurfaceTiles.tsx} +18 -18
- package/plugins/ragents.orchestration/web/{TiledCanvas.tsx → TiledSurface.tsx} +22 -22
- package/plugins/ragents.orchestration/web/actor-header-settings.ts +2 -2
- package/plugins/ragents.orchestration/web/api.ts +4 -10
- package/plugins/ragents.orchestration/web/constants.ts +0 -1
- package/plugins/ragents.orchestration/web/executions.ts +3 -3
- package/plugins/ragents.orchestration/web/index.tsx +19 -124
- package/plugins/ragents.orchestration/web/program-slot.ts +14 -0
- package/plugins/ragents.orchestration/web/run-panel/AddresseeControl.tsx +95 -0
- package/plugins/ragents.orchestration/web/run-panel/AddresseeTree.tsx +109 -0
- package/plugins/ragents.orchestration/web/{column/RunColumn.tsx → run-panel/RunPanel.tsx} +211 -83
- package/plugins/ragents.orchestration/web/{column/ColumnSettings.tsx → run-panel/RunPanelSettings.tsx} +13 -13
- package/plugins/ragents.orchestration/web/run-panel/addressee-tree.ts +165 -0
- package/plugins/ragents.orchestration/web/{column/column-actors.ts → run-panel/run-panel-actors.ts} +14 -13
- package/plugins/ragents.orchestration/web/run-panel/run-panel-settings.ts +47 -0
- package/plugins/ragents.orchestration/web/run-panel/run-panel-startup.ts +30 -0
- package/plugins/ragents.orchestration/web/run-panel/run-panel-state.ts +71 -0
- package/plugins/ragents.orchestration/web/{column → run-panel}/sheet-status.ts +4 -4
- package/plugins/ragents.orchestration/web/{canvas-stage.ts → surface-entities.ts} +2 -2
- package/plugins/ragents.orchestration/web/{canvas-startup.ts → surface-startup.ts} +7 -10
- package/plugins/ragents.orchestration/web/surface-view-settings.ts +42 -0
- package/plugins/ragents.orchestration/web/tile-docking.ts +14 -14
- package/plugins/ragents.orchestration/web/tiled-view-settings.ts +26 -26
- package/plugins/ragents.overseer/contract.ts +20 -14
- package/plugins/ragents.overseer/ragents-plugin.json +3 -0
- package/plugins/ragents.overseer/server/api.ts +34 -23
- package/plugins/ragents.overseer/server/coordinator-prompt.ts +3 -3
- package/plugins/ragents.overseer/server/coordinator.ts +19 -0
- package/plugins/ragents.overseer/server/index.ts +39 -27
- package/plugins/ragents.overseer/server/orientation.ts +4 -5
- package/plugins/ragents.overseer/server/quick-answer.ts +5 -4
- package/plugins/ragents.overseer/server/reset-method.ts +4 -3
- package/plugins/ragents.overseer/server/run-directory.ts +5 -5
- package/plugins/ragents.overseer/server/settings-method.ts +1 -1
- package/plugins/ragents.overseer/server/settings.ts +6 -6
- package/plugins/ragents.overseer/server/user-location.ts +20 -19
- package/plugins/ragents.overseer/web/ModelSettings.tsx +4 -4
- package/plugins/ragents.overseer/web/chat-display.ts +1 -1
- package/plugins/ragents.overseer/web/index.tsx +51 -26
- package/plugins/ragents.overseer/web/model-settings.ts +1 -1
- package/plugins/ragents.overseer/web/quick-answers.ts +2 -2
- package/plugins/ragents.processes/contract.ts +5 -5
- package/plugins/ragents.processes/ragents-plugin.json +3 -0
- package/plugins/ragents.processes/server/index.ts +13 -19
- package/plugins/ragents.processes/server/methods.ts +18 -20
- package/plugins/ragents.processes/server/observer.ts +64 -104
- package/plugins/ragents.processes/server/run-processes.ts +24 -0
- package/plugins/ragents.processes/web/ProcessHeader.tsx +13 -16
- package/plugins/ragents.processes/web/index.tsx +2 -1
- package/plugins/ragents.processes/web/processes.ts +1 -1
- package/plugins/ragents.product/ragents-plugin.json +3 -0
- package/plugins/ragents.product/server/config.ts +12 -13
- package/plugins/ragents.product/server/index.ts +15 -16
- package/plugins/ragents.product/server/runtime.ts +2 -2
- package/plugins/ragents.product/web/index.tsx +3 -3
- package/plugins/ragents.profile-distribution/contract.ts +6 -9
- package/plugins/ragents.profile-distribution/ragents-plugin.json +3 -0
- package/plugins/ragents.profile-distribution/server/archive.ts +26 -51
- package/plugins/ragents.profile-distribution/server/config.ts +2 -2
- package/plugins/ragents.profile-distribution/server/index.ts +9 -16
- package/plugins/ragents.reference/examples.ts +1 -1
- package/plugins/ragents.reference/ragents-plugin.json +3 -0
- package/plugins/ragents.reference/run-scripts/balcony-wizard/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/balcony-wizard/actors/balcony-app/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/balcony-wizard/tests/program.test.ts +4 -4
- package/plugins/ragents.reference/run-scripts/conversation-circle/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/conversation-circle/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/RUN.md +2 -2
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/state.ts +2 -2
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/view.tsx +11 -11
- package/plugins/ragents.reference/run-scripts/learning-afternoon/src/workflow.ts +15 -15
- package/plugins/ragents.reference/run-scripts/learning-afternoon/tests/program.test.ts +4 -9
- package/plugins/ragents.reference/run-scripts/moderated-round/src/server.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/moderated-round/tests/program.test.ts +2 -2
- package/plugins/ragents.reference/run-scripts/shared-actor-list/actors/shared-list/src/client.tsx +6 -6
- package/plugins/ragents.reference/run-scripts/shared-actor-list/src/server.ts +3 -3
- package/plugins/ragents.reference/run-scripts/shared-actor-list/tests/helpers.ts +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/RUN.md +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/client.tsx +1 -1
- package/plugins/ragents.reference/run-scripts/word-game/src/server.ts +1 -2
- package/plugins/ragents.reference/run-scripts/word-game/src/state.ts +6 -6
- package/plugins/ragents.reference/run-scripts/word-game/src/view.tsx +14 -14
- package/plugins/ragents.reference/run-scripts/word-game/tests/program.test.ts +7 -8
- package/plugins/ragents.reference/server/index.ts +2 -2
- package/plugins/ragents.reference/skills/160-learning-companion/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/240-live-result-list/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/250-balcony-wizard/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/90-actor-notes/SKILL.md +1 -1
- package/plugins/ragents.reference/skills/95-hello-world/SKILL.md +2 -2
- package/plugins/ragents.reference/skills/decision-brief/SKILL.md +2 -2
- package/plugins/ragents.reference/walkthroughs.ts +19 -19
- package/plugins/ragents.reference/web/StartGuides.tsx +2 -2
- package/plugins/ragents.reference/web/index.tsx +1 -1
- package/plugins/ragents.todo/ragents-plugin.json +3 -0
- package/plugins/ragents.todo/server/index.ts +2 -2
- package/plugins/ragents.todo/server/todo-tool.ts +4 -5
- package/plugins/ragents.todo/server/tool-contributor.ts +2 -2
- package/plugins/ragents.todo/web/TodoSection.tsx +3 -3
- package/plugins/ragents.todo/web/index.ts +1 -1
- package/plugins/ragents.transcript/ragents-plugin.json +3 -0
- package/plugins/ragents.transcript/server/index.ts +4 -4
- package/plugins/ragents.transcript/server/transcript.ts +2 -3
- package/plugins/ragents.watch/ragents-plugin.json +6 -0
- package/plugins/ragents.watch/server/condition.ts +2 -2
- package/plugins/ragents.watch/server/contract.ts +1 -1
- package/plugins/ragents.watch/server/functions.ts +3 -3
- package/plugins/ragents.watch/server/index.ts +3 -3
- package/plugins/ragents.watch/server/observation.ts +6 -6
- package/plugins/ragents.watch/server/service.ts +5 -5
- package/plugins/ragents.workspace/client/workspace-client.ts +129 -58
- package/plugins/ragents.workspace/contract.ts +98 -35
- package/plugins/ragents.workspace/prompt.hbs +1 -8
- package/plugins/ragents.workspace/ragents-plugin.json +3 -0
- package/plugins/ragents.workspace/server/binding.ts +122 -39
- package/plugins/ragents.workspace/server/browse-route.ts +96 -103
- package/plugins/ragents.workspace/server/clients.ts +236 -68
- package/plugins/ragents.workspace/server/config.ts +30 -0
- package/plugins/ragents.workspace/server/index.ts +61 -26
- package/plugins/ragents.workspace/server/runtime.ts +271 -46
- package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/shell-platform.ts +3 -5
- package/{apps/server/src/plugin-support → plugins/ragents.workspace/server}/workspace-tool-naming.ts +7 -1
- package/plugins/ragents.workspace/web/FileBrowser.tsx +11 -8
- package/plugins/ragents.workspace/web/WorkspaceBinding.tsx +115 -61
- package/plugins/ragents.workspace/web/api.ts +1 -1
- package/plugins/ragents.workspace/web/index.tsx +1 -1
- package/ragents.config.core.ts +2 -7
- package/ragents.config.showcase.ts +2 -5
- package/scripts/agent/agent-cli.ts +265 -107
- package/scripts/agent/journal.ts +8 -4
- package/scripts/agent/turn-control.ts +19 -0
- package/scripts/package/build-package.ts +68 -13
- package/scripts/package/ragents.mjs +4 -2
- package/scripts/plugin/build-builtin-plugins.ts +52 -0
- package/scripts/plugin/plugin-cli.ts +99 -0
- package/scripts/provision/run-provision.ts +20 -18
- package/scripts/remote/connect.ts +75 -53
- package/scripts/remote/start.ts +2 -3
- package/scripts/workspace-client/run-workspace-client.ts +15 -9
- package/apps/server/agent-home/settings.json +0 -3
- package/apps/server/src/chat-attachments.ts +0 -52
- package/apps/server/src/chat-events.ts +0 -185
- package/apps/server/src/plugin-support/asset-path.ts +0 -4
- package/apps/server/src/profile/plugin-list.ts +0 -19
- package/apps/server/src/web-build.ts +0 -82
- package/apps/web/column.html +0 -12
- package/apps/web/index.html +0 -12
- package/apps/web/src/StartSurface.tsx +0 -161
- package/apps/web/src/chat/ChatInputToolbar.tsx +0 -488
- package/apps/web/src/chat/ChatMessages.tsx +0 -666
- package/apps/web/src/chat/ChatPanel.tsx +0 -61
- package/apps/web/src/chat/DetailModeSwitch.tsx +0 -58
- package/apps/web/src/chat/Markdown.tsx +0 -104
- package/apps/web/src/chat/StepPopover.tsx +0 -82
- package/apps/web/src/chat/WorkingScenes.tsx +0 -235
- package/apps/web/src/chat/attachments.ts +0 -53
- package/apps/web/src/chat/chat-scroll.ts +0 -41
- package/apps/web/src/chat/texts.ts +0 -61
- package/apps/web/src/chat/types.ts +0 -26
- package/apps/web/src/column/ColumnApp.tsx +0 -234
- package/apps/web/src/column/column-location.ts +0 -30
- package/apps/web/src/column/host-contract.ts +0 -93
- package/apps/web/src/panel/OverviewPage.tsx +0 -215
- package/apps/web/src/panel/SettingsPage.tsx +0 -98
- package/apps/web/src/panel/target-state.ts +0 -78
- package/apps/web/src/plugin-discovery.ts +0 -5
- package/apps/web/src/virtual-plugins.d.ts +0 -3
- package/apps/web/vite.config.ts +0 -140
- package/packages/agent/src/config.ts +0 -161
- package/packages/agent/src/core/agent-session-runtime.ts +0 -548
- package/packages/agent/src/core/agent-session-services.ts +0 -224
- package/packages/agent/src/core/agent-session.ts +0 -3357
- package/packages/agent/src/core/auth-guidance.ts +0 -18
- package/packages/agent/src/core/auth-storage.ts +0 -271
- package/packages/agent/src/core/bash-executor.ts +0 -156
- package/packages/agent/src/core/compaction/branch-summarization.ts +0 -372
- package/packages/agent/src/core/defaults.ts +0 -3
- package/packages/agent/src/core/diagnostics.ts +0 -15
- package/packages/agent/src/core/event-bus.ts +0 -33
- package/packages/agent/src/core/exec.ts +0 -107
- package/packages/agent/src/core/experimental.ts +0 -3
- package/packages/agent/src/core/extensions/index.ts +0 -149
- package/packages/agent/src/core/extensions/loader.ts +0 -709
- package/packages/agent/src/core/extensions/runner.ts +0 -1132
- package/packages/agent/src/core/extensions/types.ts +0 -1460
- package/packages/agent/src/core/extensions/wrapper.ts +0 -45
- package/packages/agent/src/core/footer-data-provider.ts +0 -388
- package/packages/agent/src/core/http-dispatcher.ts +0 -106
- package/packages/agent/src/core/index.ts +0 -78
- package/packages/agent/src/core/model-config.ts +0 -287
- package/packages/agent/src/core/model-registry.ts +0 -126
- package/packages/agent/src/core/model-resolver.ts +0 -675
- package/packages/agent/src/core/output-guard.ts +0 -108
- package/packages/agent/src/core/package-manager.ts +0 -2441
- package/packages/agent/src/core/prompt-templates.ts +0 -284
- package/packages/agent/src/core/resolve-config-value.ts +0 -287
- package/packages/agent/src/core/resource-loader.ts +0 -946
- package/packages/agent/src/core/runtime-credentials.ts +0 -48
- package/packages/agent/src/core/sdk.ts +0 -358
- package/packages/agent/src/core/session-cwd.ts +0 -59
- package/packages/agent/src/core/session-manager.ts +0 -1623
- package/packages/agent/src/core/settings-manager.ts +0 -1212
- package/packages/agent/src/core/slash-commands.ts +0 -41
- package/packages/agent/src/core/source-info.ts +0 -40
- package/packages/agent/src/core/system-prompt.ts +0 -147
- package/packages/agent/src/core/timings.ts +0 -50
- package/packages/agent/src/core/tools/tool-definition-wrapper.ts +0 -45
- package/packages/agent/src/core/trust-manager.ts +0 -244
- package/packages/agent/src/utils/ansi.ts +0 -60
- package/packages/agent/src/utils/fs-watch.ts +0 -30
- package/packages/agent/src/utils/git.ts +0 -226
- package/packages/agent/src/utils/json.ts +0 -6
- package/packages/agent/src/utils/tools-manager.ts +0 -63
- package/packages/agent-core/package.json +0 -32
- package/packages/ai/src/api/openrouter-images.lazy.ts +0 -10
- package/packages/ai/src/api/openrouter-images.ts +0 -98
- package/packages/ai/src/auth/credential-store.ts +0 -51
- package/packages/ai/src/compat/extension-oauth-types.ts +0 -45
- package/packages/ai/src/image-models.generated.ts +0 -533
- package/packages/ai/src/images-models.ts +0 -274
- package/packages/ai/src/models-store.ts +0 -38
- package/packages/ai/src/oauth.ts +0 -10
- package/packages/ai/src/providers/openrouter-images.ts +0 -14
- package/packages/ai/src/session-resources.ts +0 -24
- package/packages/ai/src/utils/abort-signals.ts +0 -41
- package/packages/ai/src/utils/deferred-tools.ts +0 -39
- package/packages/ai/src/utils/hash.ts +0 -13
- package/packages/ai/src/utils/node-http-proxy.ts +0 -112
- package/plugins/ragents.actor-programs/server/client-runtime.ts +0 -16
- package/plugins/ragents.ask/web/constants.ts +0 -1
- package/plugins/ragents.lsp-roslyn/web/api.ts +0 -10
- package/plugins/ragents.orchestration/web/CanvasStartup.tsx +0 -14
- package/plugins/ragents.orchestration/web/canvas-view-settings.ts +0 -42
- package/plugins/ragents.orchestration/web/column/AddresseeControl.tsx +0 -116
- package/plugins/ragents.orchestration/web/column/column-settings.ts +0 -47
- package/plugins/ragents.orchestration/web/column/column-state.ts +0 -68
- package/plugins/ragents.orchestration/web/contract.ts +0 -25
- package/plugins/ragents.product/model-settings-contract.ts +0 -10
- package/plugins/ragents.profile-distribution/server/web.ts +0 -24
- /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/authoring-contracts.ts +0 -0
- /package/{plugins/ragents.actor-programs/server → apps/server/src/plugin-support/actor-programs}/runtime-libraries.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/server/src/plugin-support/actor-programs}/workflow/prompt-reader.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/file-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/flow-diagram.css +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/form-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/frame-layout.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/table-contracts.d.ts +0 -0
- /package/{plugins/ragents.actor-programs → apps/web/src/actor-programs}/client-ui/viewer-contracts.d.ts +0 -0
- /package/{plugins/ragents.orchestration/canvas.hbs → bundles/ragents.orchestration/surface.hbs} +0 -0
- /package/packages/{agent-core/src → agent/src/loop}/index.ts +0 -0
- /package/packages/{agent-core/src → agent/src/loop}/uuid.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["ragents-host-read:read", "ragents-host-value:typebox#Type", "ragents-host-value:@ragents/engine/src/http/contracts#openJson", "ragents-host-value:@ragents/engine/src/rpc/contract#defineChannel", "ragents-host-value:@ragents/engine/src/rpc/contract#defineOperation", "../../../plugins/ragents.workspace/contract.ts", "ragents-host-value:@ragents/web/ui#Alert", "ragents-host-value:@ragents/web/ui#Button", "ragents-host-value:@ragents/web/ui#Empty", "ragents-host-value:@ragents/web/ui#EmptyDescription", "ragents-host-value:@ragents/web/ui#EmptyHeader", "ragents-host-value:@ragents/web/ui#EmptyMedia", "ragents-host-value:@ragents/web/ui#EmptyTitle", "ragents-host-value:@ragents/web/ui#Input", "ragents-host-value:@ragents/web/ui#Label", "ragents-host-value:@ragents/web/ui#Select", "ragents-host-value:@ragents/web/ui#SelectContent", "ragents-host-value:@ragents/web/ui#SelectItem", "ragents-host-value:@ragents/web/ui#SelectTrigger", "ragents-host-value:@ragents/web/ui#SelectValue", "ragents-host-value:@ragents/web/ui#Toggle", "ragents-host-value:react#createContext", "ragents-host-value:react#createElement", "ragents-host-value:react#forwardRef", "ragents-host-value:react#useContext", "ragents-host-value:react#useEffect", "ragents-host-value:react#useId", "ragents-host-value:react#useMemo", "ragents-host-value:react#useRef", "ragents-host-value:react#useState", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toKebabCase.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toLucideIconData.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toCamelCase.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/toPascalCase.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/mergeClasses.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/defaultAttributes.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconNode.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/build/buildLucideIconForReact.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/shared/src/utils/hasA11yProp.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/context.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/Icon.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/createLucideIcon.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/braces.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/chevron-right.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/eye-off.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/eye.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file-archive.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file-code-corner.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file-cog.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file-image.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file-terminal.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file-text.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/file.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/folder-open.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/folder.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/palette.ts", "../../../node_modules/.pnpm/lucide-react@1.46.0_react@19.2.8/node_modules/lucide-react/src/icons/refresh-cw.ts", "ragents-host-value:@ragents/web/PluginRegistry#workspaceAccessible", "ragents-host-value:@ragents/web/rpc#rpc", "../../../plugins/ragents.workspace/web/api.ts", "../../../plugins/ragents.workspace/web/file-icons.tsx", "ragents-host-value:@ragents/web/SourceCode#SourceCode", "ragents-host-value:react/jsx-runtime#Fragment", "ragents-host-value:react/jsx-runtime#jsx", "ragents-host-value:react/jsx-runtime#jsxs", "../../../plugins/ragents.workspace/web/FileBrowser.tsx", "ragents-host-value:@ragents/web/Toolbar#ToolbarCopy", "ragents-host-value:@ragents/web/Toolbar#ToolbarItem", "ragents-host-value:@ragents/web/Toolbar#ToolbarLabel", "ragents-host-value:@ragents/web/Toolbar#ToolbarText", "../../../plugins/ragents.workspace/web/WorkspaceBinding.tsx", "../../../plugins/ragents.workspace/web/index.tsx"],
|
|
4
|
+
"sourcesContent": ["export const read = (specifier, name) => {\n const module = globalThis[\"__ragentsHostModules\"]?.[specifier];\n if (module === undefined) throw new Error(`Der Host stellt ${specifier} nicht bereit`);\n if (!(name in module)) throw new Error(`Der Host stellt ${name} aus ${specifier} nicht bereit; das Bundle ist gegen einen neueren Host gebaut`);\n return module[name];\n};", "import { read } from \"ragents-host-read:read\";\nexport default read(\"typebox\", \"Type\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/engine/src/http/contracts\", \"openJson\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/engine/src/rpc/contract\", \"defineChannel\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/engine/src/rpc/contract\", \"defineOperation\");\n", "import { Type } from \"typebox\";\nimport { openJson } from \"@ragents/engine/src/http/contracts\";\nimport { defineChannel, defineOperation } from \"@ragents/engine/src/rpc/contract\";\n\nexport const WORKSPACE_PLUGIN_ID = \"ragents.workspace\";\n\nexport const BROWSE_ROOTS = [\"workspace\", \"files\"] as const;\nexport type BrowseRoot = typeof BROWSE_ROOTS[number];\n\nexport interface BrowseEntry {\n name: string;\n kind: \"directory\" | \"file\";\n size: number;\n modifiedAt: string;\n}\n\nexport interface BrowseListing {\n root: BrowseRoot;\n /** Wo die Wurzel liegt; bei einem Arbeitsplatz mit dessen Label. */\n location: string;\n path: string;\n entries: BrowseEntry[];\n truncated: boolean;\n}\n\nexport type BrowsePreview =\n | { root: BrowseRoot; path: string; size: number; previewable: true; content: string }\n | { root: BrowseRoot; path: string; size: number; previewable: false; reason: string };\n\nexport const WORKSPACE_BINDING_OPTION_ID = \"ragents.workspace.binding\";\n\nexport const WORKSPACE_METADATA_ID = \"ragents.workspace\";\n\n/** Auf welchem Rechner der Arbeitsbereich eines Runs liegt: dem Server oder einem Arbeitsplatz, dessen Label die Bindung festh\u00E4lt. */\nexport type WorkspaceMachine = \"server\" | { client: string; label: string };\n\n/** Ein vorhandener Ordner, den der Run weder anlegt noch l\u00F6scht. */\nexport type ExistingWorkspaceFolder = {\n path: string;\n};\n\n/** Der neue Ordner je Run auf einem Arbeitsplatz; seinen Pfad dort h\u00E4lt die Bindung ab dem W\u00E4hlen fest. */\nexport type FreshWorkstationFolder = {\n path: string;\n fresh: true;\n};\n\n/** Welcher Ordner: ein neuer je Run oder ein vorhandener; `fresh` auf dem Server legt der Host je Run in seiner Ablage an. */\nexport type WorkspaceFolder = \"fresh\" | ExistingWorkspaceFolder | FreshWorkstationFolder;\n\n/** Wo und in welchem Ordner ein Run arbeitet; wird beim Start als Startoption ins Journal eingefroren. */\nexport type WorkspaceBinding = {\n machine: WorkspaceMachine;\n folder: WorkspaceFolder;\n};\n\nexport const freshServerBinding = (): WorkspaceBinding => ({ machine: \"server\", folder: \"fresh\" });\n\nexport const WORKSPACE_CLIENT_ID_PATTERN = /^[A-Za-z0-9_-]{8,64}$/;\n\n/** Was ein Arbeitsplatz bei der Anmeldung \u00FCber sich sagt. */\nexport interface WorkspaceClientDescription {\n label: string;\n hostname: string;\n platform: string;\n folders: string[];\n /** Wo der Arbeitsplatz die neuen Ordner je Run anlegt, je Run ein Unterordner mit dessen Kennung. */\n runsDirectory: string;\n}\n\nexport interface WorkspaceClientInfo extends WorkspaceClientDescription {\n id: string;\n}\n\n/** Wie der neue Ordner je Run auf jedem Rechner hei\u00DFt: der leere Ordner oder der Beitrag eines Plugins; null, wo es keinen gibt. */\nexport interface FreshWorkspaceLabels {\n server: string;\n client: string | null;\n}\n\nexport interface WorkspaceBindingPresentation {\n kind: \"workspace-binding\";\n clients: WorkspaceClientInfo[];\n fresh: FreshWorkspaceLabels;\n /** Ob ein vorhandener Ordner des Serverrechners gebunden werden darf. */\n serverFolders: boolean;\n}\n\nexport interface WorkspaceSessionMetadata {\n binding: WorkspaceBinding;\n summary: string;\n}\n\nconst clientId = Type.String({ pattern: \"^[A-Za-z0-9_-]{8,64}$\", description: \"Stabile Kennung des Arbeitsplatzes\" });\n\nconst executorVersion = Type.String({ minLength: 1, maxLength: 64, description: \"Stand des Executors, den der Arbeitsplatz mitbringt\" });\n\nconst clientDescription = {\n label: Type.String({ minLength: 1, maxLength: 120 }),\n hostname: Type.String({ minLength: 1 }),\n platform: Type.String({ minLength: 1 }),\n folders: Type.Array(Type.String({ minLength: 1 }), { maxItems: 32 }),\n runsDirectory: Type.String({ minLength: 1, description: \"Absoluter Ordner, unter dem der Arbeitsplatz die neuen Ordner je Run anlegt\" }),\n};\n\nexport const clientInfoSchema = Type.Object({\n id: Type.String(),\n ...clientDescription,\n}, { additionalProperties: false });\n\nconst absolutePath = Type.String({ minLength: 1, description: \"Absoluter Pfad im gebundenen Ordner\" });\n\n/** Keine Operation eines Moduls: gibt frei, was der Executor des Arbeitsplatzes f\u00FCr den Run h\u00E4lt. */\nexport const WORKSPACE_CLIENT_STOP_OPERATION = \"stop\";\n\n/** Die eine Operation, die der Server auf dem Arbeitsplatz ruft; Fortschritt ist der JSON-Wert der Operation, bei Bash { text }. */\nexport const workspaceClientContracts = {\n execute: defineOperation({\n id: \"ragents.workspace.client.execute\",\n description: \"Eine Operation des Executors auf dem Arbeitsplatz ausf\u00FChren, etwa ein Werkzeug, eine Dateiabfrage oder die Prozessanzeige; das Ergebnis ist ihr Wert, Fortschritt ihr JSON-Wert. stop gibt frei, was der Arbeitsplatz f\u00FCr den Run h\u00E4lt.\",\n implementedBy: \"client\",\n input: Type.Object({\n runId: Type.String({ minLength: 1, maxLength: 64, description: \"Kennung des Runs\" }),\n operation: Type.String({ minLength: 1, maxLength: 64, description: \"Name der Operation, etwa read, bash, roslyn_open, files.list oder stop\" }),\n toolCallId: Type.Optional(Type.String({ minLength: 1, maxLength: 200, description: \"Nur bei einem Werkzeugaufruf des Modells\" })),\n cwd: absolutePath,\n env: Type.Record(Type.String(), Type.String(), { description: \"Was der Server beitr\u00E4gt: Run-Marker und Git-Regeln der Sandbox\" }),\n input: Type.Unknown({ description: \"Die Eingabe der Operation\" }),\n }, { additionalProperties: false }),\n result: Type.Object({ value: Type.Unknown() }, { additionalProperties: false }),\n }),\n} as const;\n\nconst browseTarget = {\n runId: Type.String({ minLength: 1, maxLength: 64, description: \"Kennung des Runs\" }),\n root: Type.Union([Type.Literal(\"workspace\"), Type.Literal(\"files\")]),\n path: Type.String({ description: \"Pfad unterhalb der Wurzel; leer ist die Wurzel selbst\" }),\n};\n\n/** Die Anmeldung eines Arbeitsplatzes bindet die aufrufende Verbindung; \u00FCber sie ruft der Server zur\u00FCck. */\nexport const workspaceContracts = {\n browse: {\n list: defineOperation({\n id: \"ragents.workspace.browse.list\",\n description: \"Ein Verzeichnis im Arbeitsverzeichnis oder in der Dateiablage eines Runs auflisten.\",\n rights: [\"runs.read\", \"runs.inspect\"],\n input: Type.Object(browseTarget, { additionalProperties: false }),\n result: openJson<BrowseListing>(\"BrowseListing\"),\n }),\n preview: defineOperation({\n id: \"ragents.workspace.browse.preview\",\n description: \"Eine Datei als Text vorschauen; zu gro\u00DFe und bin\u00E4re Dateien nennen stattdessen den Grund.\",\n rights: [\"runs.read\", \"runs.inspect\"],\n input: Type.Object(browseTarget, { additionalProperties: false }),\n result: openJson<BrowsePreview>(\"BrowsePreview\"),\n }),\n },\n channels: {\n browse: defineChannel({\n id: \"ragents.workspace.browse\",\n description: \"Meldet jede \u00C4nderung unterhalb der beobachteten Wurzel eines Runs.\",\n rights: [\"runs.read\", \"runs.inspect\"],\n params: Type.Object({ runId: browseTarget.runId, root: browseTarget.root }, { additionalProperties: false }),\n message: Type.Object({ changed: Type.Literal(true) }, { additionalProperties: false }),\n }),\n },\n clients: {\n list: defineOperation({\n id: \"ragents.workspace.clients.list\",\n description: \"Die angemeldeten Arbeitspl\u00E4tze des Aufrufers; fremde erscheinen auch mit runs.read.all nicht.\",\n rights: [\"runs.read\"],\n input: Type.Object({}, { additionalProperties: false }),\n result: Type.Array(clientInfoSchema),\n }),\n register: defineOperation({\n id: \"ragents.workspace.clients.register\",\n description: \"Einen Arbeitsplatz anmelden oder seine Ordner erneuern; die Verbindung dieser Anfrage wird sein R\u00FCckweg und braucht einen Ereignisstrom.\",\n rights: [\"runs.write\"],\n input: Type.Object({ id: clientId, ...clientDescription, executor: executorVersion }, { additionalProperties: false }),\n result: clientInfoSchema,\n }),\n unregister: defineOperation({\n id: \"ragents.workspace.clients.unregister\",\n description: \"Einen eigenen Arbeitsplatz abmelden; offene Auftr\u00E4ge scheitern.\",\n rights: [\"runs.write\"],\n input: Type.Object({ id: clientId }, { additionalProperties: false }),\n result: Type.Null(),\n }),\n },\n} as const;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === \"object\" && value !== null;\n\nconst hasExactly = (value: Record<string, unknown>, keys: readonly string[]): boolean =>\n Object.keys(value).length === keys.length && keys.every((key) => Object.hasOwn(value, key));\n\nconst isMachine = (value: unknown): value is WorkspaceMachine =>\n value === \"server\" || (isRecord(value) && hasExactly(value, [\"client\", \"label\"])\n && typeof value.client === \"string\" && WORKSPACE_CLIENT_ID_PATTERN.test(value.client) && typeof value.label === \"string\");\n\nconst isFolder = (value: unknown): value is WorkspaceFolder => {\n if (value === \"fresh\") return true;\n if (!isRecord(value) || typeof value.path !== \"string\" || value.path.length === 0) return false;\n return hasExactly(value, [\"path\"]) || (hasExactly(value, [\"path\", \"fresh\"]) && value.fresh === true);\n};\n\n/** Einen neuen Ordner mit Pfad gibt es nur auf einem Arbeitsplatz; auf dem Server legt ihn der Host selbst an. */\nexport const isWorkspaceBinding = (value: unknown): value is WorkspaceBinding =>\n isRecord(value) && hasExactly(value, [\"machine\", \"folder\"]) && isMachine(value.machine) && isFolder(value.folder)\n && !(value.machine === \"server\" && typeof value.folder === \"object\" && \"fresh\" in value.folder);\n\nexport const isFreshFolder = (folder: WorkspaceFolder): folder is \"fresh\" | FreshWorkstationFolder =>\n folder === \"fresh\" || \"fresh\" in folder;\n\n/** Die Form vor der Trennung von Rechner und Ordner, `{ kind: \"fresh\" | \"path\" | \"client\" }`, eindeutig in der heutigen. */\nconst fromKind = (value: Record<string, unknown>): unknown => {\n switch (value.kind) {\n case \"fresh\": return hasExactly(value, [\"kind\"]) ? freshServerBinding() : undefined;\n case \"path\": return hasExactly(value, [\"kind\", \"path\"]) ? { machine: \"server\", folder: { path: value.path } } : undefined;\n case \"client\": return hasExactly(value, [\"kind\", \"client\", \"label\", \"path\"])\n ? { machine: { client: value.client, label: value.label }, folder: { path: value.path } }\n : undefined;\n default: return undefined;\n }\n};\n\n/** Die gespeicherte Bindung; \u00E4ltere, unver\u00E4nderliche Journale tragen die Form mit `kind`, und nur hier wird sie abgebildet. */\nexport const storedWorkspaceBinding = (value: unknown): WorkspaceBinding | undefined => {\n if (isWorkspaceBinding(value)) return value;\n const mapped = isRecord(value) && Object.hasOwn(value, \"kind\") ? fromKind(value) : undefined;\n return isWorkspaceBinding(mapped) ? mapped : undefined;\n};\n\nexport const FRESH_WORKSPACE_LABEL = \"Leerer Ordner je Run\";\n\n/** Wie der neue Ordner je Run auf dem Rechner der Bindung hei\u00DFt; ohne Beitrag dort der leere Ordner. */\nconst freshLabelOf = (binding: WorkspaceBinding, labels: FreshWorkspaceLabels): string =>\n (binding.machine === \"server\" ? labels.server : labels.client) ?? FRESH_WORKSPACE_LABEL;\n\nexport const workspaceBindingSummary = (binding: WorkspaceBinding, labels: FreshWorkspaceLabels): string => {\n const { machine, folder } = binding;\n const fresh = freshLabelOf(binding, labels);\n const where = folder === \"fresh\" ? fresh : \"fresh\" in folder ? `${folder.path} (${fresh})` : folder.path;\n return machine === \"server\" ? where : `${machine.label}: ${where}`;\n};\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Alert\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Button\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Empty\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"EmptyDescription\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"EmptyHeader\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"EmptyMedia\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"EmptyTitle\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Input\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Label\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Select\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"SelectContent\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"SelectItem\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"SelectTrigger\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"SelectValue\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/ui\", \"Toggle\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"createElement\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"forwardRef\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useContext\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useEffect\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useId\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useMemo\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useRef\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react\", \"useState\");\n", "/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n", "import { toKebabCase } from './toKebabCase';\nimport type { LucideIconData, LucideIconNode } from '../build/types';\n\n/**\n * Converts legacy `(name, iconNode, aliases?)` icon arguments into icon data object format.\n */\nexport function toLucideIconData(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases: string[] = [],\n): LucideIconData {\n if (iconNode == null) {\n throw new Error('[lucide]: iconNode is required when icon name is used');\n }\n\n return {\n name: toKebabCase(iconName),\n size: 24,\n node: iconNode,\n ...(aliases.length > 0 ? { aliases } : {}),\n };\n}\n", "/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) => {\n let out = '';\n let upperNext = false;\n\n for (const ch of string) {\n if (ch === '-' || ch === '_' || ch <= ' ') {\n upperNext = out.length > 0;\n continue;\n }\n\n if (out.length === 0) {\n out += ch.toLowerCase();\n } else {\n out += upperNext ? ch.toUpperCase() : ch;\n }\n\n upperNext = false;\n }\n\n return out as string;\n};\n", "import { CamelToPascal } from '../utility-types';\nimport { toCamelCase } from './toCamelCase';\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n", "/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n", "const defaultAttributes = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n} as const;\n\nexport default defaultAttributes;\n", "import type { LucideBuildParams, LucideIconData, LucideIconNode, SVGProps } from './types';\nimport defaultAttributes from './defaultAttributes';\nimport { mergeClasses } from '../utils/mergeClasses';\n\nfunction isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\n/**\n * Creates a Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconNode(icon: LucideIconData, params: LucideBuildParams = {}): LucideIconNode {\n const attributeNames = params.attributeNames ?? {};\n const getAttributeName = (attributeName: string) =>\n attributeNames[attributeName] ?? attributeName;\n\n const viewBoxWidth = icon.size ?? icon.width ?? defaultAttributes['width'];\n const viewBoxHeight = icon.size ?? icon.height ?? defaultAttributes['height'];\n const aliasClassNames =\n icon.aliases\n ?.filter((alias: string): alias is string => typeof alias === 'string' && alias.trim() !== '')\n .map((alias: string) => `lucide-${alias}`) ?? [];\n const iconClassNames = [...(icon.name ? [`lucide-${icon.name}`] : []), ...aliasClassNames];\n const classNamesFromClassName = params.className?.split(' ').filter(Boolean) ?? [];\n const className =\n params.includeDefaultClasses === false\n ? mergeClasses(...classNamesFromClassName)\n : mergeClasses('lucide', ...iconClassNames, ...classNamesFromClassName);\n\n const calculatedStrokeWidth = params.absoluteStrokeWidth\n ? (Number(params.strokeWidth ?? defaultAttributes['stroke-width']) *\n Number(icon.size ?? icon.width ?? defaultAttributes['width'])) /\n Number(params.size ?? params.width ?? defaultAttributes['width'])\n : (params.strokeWidth ?? defaultAttributes['stroke-width']);\n\n const attributes = {\n ...Object.entries(defaultAttributes).reduce((attrs, [attrName, value]) => {\n attrs[getAttributeName(attrName)] = value;\n return attrs;\n }, {} as SVGProps),\n ...('color' in params &&\n params.color && {\n [getAttributeName('stroke')]: params.color,\n }),\n ...('size' in params &&\n isDefined(params.size) && {\n [getAttributeName('width')]: params.size,\n [getAttributeName('height')]: params.size,\n }),\n ...('width' in params &&\n isDefined(params.width) && {\n [getAttributeName('width')]: params.width,\n }),\n ...('height' in params &&\n isDefined(params.height) && {\n [getAttributeName('height')]: params.height,\n }),\n [getAttributeName('stroke-width')]: calculatedStrokeWidth,\n ...(className && {\n [getAttributeName('class')]: className,\n }),\n [getAttributeName('viewBox')]: `0 0 ${viewBoxWidth} ${viewBoxHeight}`,\n ...(params.hasA11yProp === false\n ? {\n [getAttributeName('aria-hidden')]: 'true',\n }\n : {}),\n ...('attributes' in params && params.attributes),\n };\n\n return [\n 'svg',\n attributes,\n icon.node.map((child): LucideIconNode => {\n const [name, attrs, children] = child;\n const nextAttrs = params.nonScalingStroke\n ? { [getAttributeName('vector-effect')]: 'non-scaling-stroke', ...attrs }\n : attrs;\n\n return children ? [name, nextAttrs, children] : [name, nextAttrs];\n }),\n ];\n}\n\nexport default buildLucideIconNode;\n", "import buildLucideIconNode from './buildLucideIconNode';\nimport type { LucideBuildParams, LucideIconData, LucideIconNode } from './types';\n\n/**\n * Creates a React-compatible Lucide icon node (an svgson-like format) from a Lucide icon object.\n *\n * @param icon The icon to build.\n * @param params Additional build parameters.\n */\nfunction buildLucideIconForReact(\n icon: LucideIconData,\n params: LucideBuildParams = {},\n): LucideIconNode {\n return buildLucideIconNode(icon, {\n ...params,\n attributeNames: {\n ...params.attributeNames,\n class: 'className',\n 'stroke-width': 'strokeWidth',\n 'stroke-linecap': 'strokeLinecap',\n 'stroke-linejoin': 'strokeLinejoin',\n 'vector-effect': 'vectorEffect',\n },\n });\n}\n\nexport default buildLucideIconForReact;\n", "/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: object) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n\n return false;\n};\n", "'use client';\n\nimport { createContext, createElement, type ReactNode, useContext, useMemo } from 'react';\nimport { LucideProps } from './types';\n\ntype LucideConfig = {\n size: number;\n color: string;\n strokeWidth: number;\n /**\n * @deprecated Use `nonScalingStroke` instead.\n */\n absoluteStrokeWidth: boolean;\n nonScalingStroke: boolean;\n className: string;\n};\n\nconst LucideContext = createContext<LucideProps>({});\n\ntype LucideProviderProps = {\n children: ReactNode;\n} & Partial<LucideConfig>;\n\nexport function LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n}: LucideProviderProps) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className,\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, nonScalingStroke, className],\n );\n\n return createElement(LucideContext.Provider, { value }, children);\n}\n\nexport const useLucideContext = () => useContext(LucideContext);\n", "'use client';\n\nimport { createElement, forwardRef } from 'react';\nimport { buildLucideIconForReact, hasA11yProp, mergeClasses } from '@lucide/shared';\nimport { LucideIconData, LucideIconNode, LucideProps } from './types';\nimport { useLucideContext } from './context';\n\ntype IconComponentProps = LucideProps &\n (\n | {\n iconNode: LucideIconNode[];\n icon?: never;\n }\n | {\n icon: LucideIconData;\n iconNode?: never;\n }\n );\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {boolean} props.nonScalingStroke - Whether to use non scaling strokes\n * @param {string} props.className - The class name of the icon\n * @param {LucideIconNode[]} props.children - The children of the icon\n * @param {LucideIconNode[]} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color,\n size,\n width,\n height,\n strokeWidth,\n absoluteStrokeWidth,\n nonScalingStroke,\n className = '',\n children,\n iconNode = [],\n icon = {\n node: iconNode,\n aliases: [],\n size: 24,\n },\n ...rest\n },\n ref,\n ) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n nonScalingStroke: contextNonScalingStroke = false,\n color: contextColor = 'currentColor',\n className: contextClass = '',\n } = useLucideContext() ?? {};\n\n const hasAccessibleProp = Boolean(children) || hasA11yProp(rest);\n\n const [name, svgAttributes, builtIconNode = []] = buildLucideIconForReact(icon, {\n color: color ?? contextColor,\n width: width ?? size ?? contextSize,\n height: height ?? size ?? contextSize,\n strokeWidth: strokeWidth ?? contextStrokeWidth,\n absoluteStrokeWidth: absoluteStrokeWidth ?? contextAbsoluteStrokeWidth,\n nonScalingStroke: nonScalingStroke ?? contextNonScalingStroke,\n className: mergeClasses(contextClass, className),\n hasA11yProp: hasAccessibleProp,\n attributes: rest,\n });\n\n return createElement(\n name,\n {\n ref,\n ...svgAttributes,\n },\n [\n ...builtIconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n );\n },\n);\n\nexport default Icon;\n", "import { createElement, forwardRef } from 'react';\nimport { toLucideIconData, toPascalCase } from '@lucide/shared';\nimport { LucideIcon, LucideIconData, LucideIconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Creates a Lucide icon component from icon data.\n *\n * @param icon Icon data object.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(icon: LucideIconData): LucideIcon;\n\n/**\n * Creates a Lucide icon component from the legacy icon arguments.\n *\n * @param iconName Icon name.\n * @param iconNode Icon node.\n * @param aliases Optional icon aliases.\n * @returns Lucide icon component.\n */\nfunction createLucideIcon(\n iconName: string,\n iconNode: LucideIconNode[],\n aliases?: string[],\n): LucideIcon;\n\nfunction createLucideIcon(\n iconDataOrName: LucideIconData | string,\n iconNode: LucideIconNode[] = [],\n aliases: string[] = [],\n): LucideIcon {\n const iconData =\n typeof iconDataOrName === 'string'\n ? toLucideIconData(iconDataOrName, iconNode, aliases)\n : iconDataOrName;\n\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n icon: iconData,\n className,\n ...props,\n }),\n );\n\n if (iconData.name) {\n Component.displayName = toPascalCase(iconData.name);\n }\n\n return Component;\n}\n\nexport default createLucideIcon;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'braces',\n size: 24,\n node: [\n [\n 'path',\n { d: 'M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1', key: 'ezmyqa' },\n ],\n [\n 'path',\n {\n d: 'M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1',\n key: 'e1hn23',\n },\n ],\n ],\n aliases: ['curly-braces'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Braces\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/braces\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Braces = createLucideIcon(__iconData);\n\nexport default Braces;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'chevron-right',\n size: 24,\n node: [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon(__iconData);\n\nexport default ChevronRight;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'eye-off',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49',\n key: 'ct8e1f',\n },\n ],\n ['path', { d: 'M14.084 14.158a3 3 0 0 1-4.242-4.242', key: '151rxh' }],\n [\n 'path',\n {\n d: 'M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143',\n key: '13bj9a',\n },\n ],\n ['path', { d: 'm2 2 20 20', key: '1ooewy' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name EyeOff\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/eye-off\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst EyeOff = createLucideIcon(__iconData);\n\nexport default EyeOff;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'eye',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0',\n key: '1nclc0',\n },\n ],\n ['circle', { cx: '12', cy: '12', r: '3', key: '1v7zrd' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Eye\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/eye\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Eye = createLucideIcon(__iconData);\n\nexport default Eye;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file-archive',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5',\n key: '4pqfef',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M8 12v-1', key: '1ej8lb' }],\n ['path', { d: 'M8 18v-2', key: 'qcmpov' }],\n ['path', { d: 'M8 7V6', key: '1nbb54' }],\n ['circle', { cx: '8', cy: '20', r: '2', key: 'ckkr5m' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FileArchive\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-archive\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileArchive = createLucideIcon(__iconData);\n\nexport default FileArchive;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file-code-corner',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35',\n key: '1wthlu',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'm5 16-3 3 3 3', key: '331omg' }],\n ['path', { d: 'm9 22 3-3-3-3', key: 'lsp7cz' }],\n ],\n aliases: ['file-code-2'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FileCodeCorner\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-code-corner\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileCodeCorner = createLucideIcon(__iconData);\n\nexport default FileCodeCorner;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file-cog',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M15 8a1 1 0 0 1-1-1V2a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8z',\n key: '1ckgky',\n },\n ],\n ['path', { d: 'M20 8v12a2 2 0 0 1-2 2h-4.182', key: '1726p0' }],\n ['path', { d: 'm3.305 19.53.923-.382', key: 'ao1pio' }],\n ['path', { d: 'M4 10.592V4a2 2 0 0 1 2-2h8', key: '1foop0' }],\n ['path', { d: 'm4.228 16.852-.924-.383', key: '1fv9zy' }],\n ['path', { d: 'm5.852 15.228-.383-.923', key: '1a9hc2' }],\n ['path', { d: 'm5.852 20.772-.383.924', key: '1sh9ke' }],\n ['path', { d: 'm8.148 15.228.383-.923', key: '4yu6lf' }],\n ['path', { d: 'm8.53 21.696-.382-.924', key: '18b0s9' }],\n ['path', { d: 'm9.773 16.852.922-.383', key: 'ti6xop' }],\n ['path', { d: 'm9.773 19.148.922.383', key: 'rws47d' }],\n ['circle', { cx: '7', cy: '18', r: '3', key: 'lvkj7j' }],\n ],\n aliases: ['file-cog-2'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FileCog\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-cog\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileCog = createLucideIcon(__iconData);\n\nexport default FileCog;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file-image',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['circle', { cx: '10', cy: '12', r: '2', key: '737tya' }],\n ['path', { d: 'm20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22', key: 'wt3hpn' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FileImage\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileImage = createLucideIcon(__iconData);\n\nexport default FileImage;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file-terminal',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'm8 16 2-2-2-2', key: '10vzyd' }],\n ['path', { d: 'M12 18h4', key: '1wd2n7' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FileTerminal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-terminal\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileTerminal = createLucideIcon(__iconData);\n\nexport default FileTerminal;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file-text',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-text\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileText = createLucideIcon(__iconData);\n\nexport default FileText;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'file',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst File = createLucideIcon(__iconData);\n\nexport default File;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'folder-open',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'm6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2',\n key: 'usdka0',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name FolderOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FolderOpen = createLucideIcon(__iconData);\n\nexport default FolderOpen;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'folder',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Folder = createLucideIcon(__iconData);\n\nexport default Folder;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'palette',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z',\n key: 'e79jfc',\n },\n ],\n ['circle', { cx: '13.5', cy: '6.5', r: '.5', fill: 'currentColor', key: '1okk4w' }],\n ['circle', { cx: '17.5', cy: '10.5', r: '.5', fill: 'currentColor', key: 'f64h9f' }],\n ['circle', { cx: '6.5', cy: '12.5', r: '.5', fill: 'currentColor', key: 'qy21gx' }],\n ['circle', { cx: '8.5', cy: '7.5', r: '.5', fill: 'currentColor', key: 'fotxhn' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Palette\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/palette\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Palette = createLucideIcon(__iconData);\n\nexport default Palette;\n", "import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'refresh-cw',\n size: 24,\n node: [\n ['path', { d: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8', key: 'v9h5vc' }],\n ['path', { d: 'M21 3v5h-5', key: '1q7to0' }],\n ['path', { d: 'M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16', key: '3uifl3' }],\n ['path', { d: 'M8 16H3v5', key: '1cv678' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name RefreshCw\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/refresh-cw\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst RefreshCw = createLucideIcon(__iconData);\n\nexport default RefreshCw;\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/PluginRegistry\", \"workspaceAccessible\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/rpc\", \"rpc\");\n", "import { rpc } from \"@ragents/web/rpc\";\nimport { workspaceContracts, type BrowseListing, type BrowsePreview, type BrowseRoot } from \"../contract\";\n\nexport const fetchBrowseListing = (runId: string, root: BrowseRoot, directory: string): Promise<BrowseListing> =>\n rpc.call(workspaceContracts.browse.list, { runId, root, path: directory });\n\nexport const fetchBrowsePreview = (runId: string, root: BrowseRoot, file: string): Promise<BrowsePreview> =>\n rpc.call(workspaceContracts.browse.preview, { runId, root, path: file });\n", "import {\n Braces,\n File,\n FileArchive,\n FileCode2,\n FileCog,\n FileImage,\n FileTerminal,\n FileText,\n Folder,\n FolderOpen,\n Palette,\n type LucideIcon,\n} from \"lucide-react\";\n\ntype FileTone = \"blue\" | \"yellow\" | \"green\" | \"teal\" | \"orange\" | \"pink\" | \"violet\" | \"red\" | \"muted\";\n\ninterface FileIconChoice {\n Icon: LucideIcon;\n tone: FileTone;\n}\n\nexport const fileToneClass: Readonly<Record<FileTone, string>> = {\n blue: \"text-info\",\n yellow: \"text-warning\",\n green: \"text-success\",\n teal: \"text-teal\",\n orange: \"text-[color-mix(in_srgb,var(--warning)_75%,var(--destructive))]\",\n pink: \"text-[color-mix(in_srgb,var(--destructive)_65%,var(--accent))]\",\n violet: \"text-primary\",\n red: \"text-destructive\",\n muted: \"text-muted-foreground\",\n};\n\nconst byExtension: Readonly<Record<string, FileIconChoice>> = {\n ts: { Icon: FileCode2, tone: \"blue\" },\n tsx: { Icon: FileCode2, tone: \"blue\" },\n mts: { Icon: FileCode2, tone: \"blue\" },\n cts: { Icon: FileCode2, tone: \"blue\" },\n js: { Icon: FileCode2, tone: \"yellow\" },\n jsx: { Icon: FileCode2, tone: \"yellow\" },\n mjs: { Icon: FileCode2, tone: \"yellow\" },\n cjs: { Icon: FileCode2, tone: \"yellow\" },\n cs: { Icon: FileCode2, tone: \"green\" },\n fs: { Icon: FileCode2, tone: \"teal\" },\n fsx: { Icon: FileCode2, tone: \"teal\" },\n py: { Icon: FileCode2, tone: \"green\" },\n json: { Icon: Braces, tone: \"yellow\" },\n md: { Icon: FileText, tone: \"violet\" },\n txt: { Icon: FileText, tone: \"muted\" },\n pdf: { Icon: FileText, tone: \"red\" },\n html: { Icon: FileCode2, tone: \"orange\" },\n htm: { Icon: FileCode2, tone: \"orange\" },\n hbs: { Icon: FileCode2, tone: \"orange\" },\n css: { Icon: Palette, tone: \"pink\" },\n png: { Icon: FileImage, tone: \"violet\" },\n jpg: { Icon: FileImage, tone: \"violet\" },\n jpeg: { Icon: FileImage, tone: \"violet\" },\n gif: { Icon: FileImage, tone: \"violet\" },\n webp: { Icon: FileImage, tone: \"violet\" },\n svg: { Icon: FileImage, tone: \"violet\" },\n ico: { Icon: FileImage, tone: \"violet\" },\n sh: { Icon: FileTerminal, tone: \"green\" },\n zsh: { Icon: FileTerminal, tone: \"green\" },\n bash: { Icon: FileTerminal, tone: \"green\" },\n yml: { Icon: FileCog, tone: \"muted\" },\n yaml: { Icon: FileCog, tone: \"muted\" },\n toml: { Icon: FileCog, tone: \"muted\" },\n ini: { Icon: FileCog, tone: \"muted\" },\n csproj: { Icon: FileCog, tone: \"blue\" },\n fsproj: { Icon: FileCog, tone: \"teal\" },\n sln: { Icon: FileCog, tone: \"blue\" },\n slnx: { Icon: FileCog, tone: \"blue\" },\n zip: { Icon: FileArchive, tone: \"orange\" },\n gz: { Icon: FileArchive, tone: \"orange\" },\n tar: { Icon: FileArchive, tone: \"orange\" },\n lock: { Icon: FileCog, tone: \"muted\" },\n};\n\nconst byName: Readonly<Record<string, FileIconChoice>> = {\n \"package.json\": { Icon: Braces, tone: \"green\" },\n \"pnpm-lock.yaml\": { Icon: FileCog, tone: \"muted\" },\n \"tsconfig.json\": { Icon: Braces, tone: \"blue\" },\n \".gitignore\": { Icon: FileCog, tone: \"muted\" },\n dockerfile: { Icon: FileCog, tone: \"teal\" },\n};\n\nexport const fileIconFor = (name: string, kind: \"directory\" | \"file\", open: boolean): FileIconChoice => {\n if (kind === \"directory\") return { Icon: open ? FolderOpen : Folder, tone: \"muted\" };\n const named = byName[name.toLowerCase()];\n if (named) return named;\n const extension = name.includes(\".\") ? name.toLowerCase().split(\".\").at(-1) ?? \"\" : \"\";\n return byExtension[extension] ?? { Icon: File, tone: \"muted\" };\n};\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/SourceCode\", \"SourceCode\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"Fragment\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsx\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"react/jsx-runtime\", \"jsxs\");\n", "import {\n Alert,\n Button,\n Empty,\n EmptyDescription,\n EmptyHeader,\n EmptyMedia,\n EmptyTitle,\n Toggle,\n} from \"@ragents/web/ui\";\nimport { useEffect, useRef, useState, type CSSProperties, type ReactNode } from \"react\";\nimport { ChevronRight, Eye, EyeOff, FolderOpen, RefreshCw } from \"lucide-react\";\nimport { workspaceAccessible, type WorkspaceTabContext } from \"@ragents/web/PluginRegistry\";\nimport { rpc } from \"@ragents/web/rpc\";\nimport { BROWSE_ROOTS, workspaceContracts, type BrowseListing, type BrowsePreview, type BrowseRoot } from \"../contract\";\nimport { fetchBrowseListing, fetchBrowsePreview } from \"./api\";\nimport { fileIconFor, fileToneClass } from \"./file-icons\";\nimport { SourceCode } from \"@ragents/web/SourceCode\";\n\nconst rowClass = \"h-auto w-full justify-start gap-1.5 rounded-none py-[3px] pr-2.5 pl-(--row-indent) text-[0.7rem] font-normal data-selected:bg-primary/12 data-selected:text-primary\";\nconst previewSourceClass = \"min-w-0 px-2.5 pt-0 pb-2.5 text-xs leading-[1.45] whitespace-pre-wrap break-words\";\nconst indent = (depth: number) => ({ \"--row-indent\": `${8 + depth * 12}px` }) as CSSProperties;\n\nconst rootLabels: Readonly<Record<BrowseRoot, string>> = {\n workspace: \"Arbeitsverzeichnis\",\n files: \"Dateiablage\",\n};\n\nconst emptyHints: Readonly<Record<BrowseRoot, string>> = {\n workspace: \"Im Arbeitsverzeichnis des Runs liegt noch nichts.\",\n files: \"In der Dateiablage des Runs liegt noch nichts.\",\n};\n\nconst messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);\n\nconst sizeLabel = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nconst timeLabel = (value: string): string => {\n const at = new Date(value);\n return Number.isNaN(at.getTime()) ? value : at.toLocaleString(\"de-DE\");\n};\n\ninterface BrowserMemory {\n expanded: ReadonlySet<string>;\n selected: string | undefined;\n}\n\nexport function FileBrowserPanel({ active, session }: WorkspaceTabContext) {\n const runId = session.session.id;\n const treeMemory = useRef(new Map<string, BrowserMemory>());\n const reachable = workspaceAccessible(session.session);\n const roots: readonly BrowseRoot[] = reachable ? BROWSE_ROOTS : [\"files\"];\n const [chosenRoot, setRoot] = useState<BrowseRoot>(\"workspace\");\n const root: BrowseRoot = reachable ? chosenRoot : \"files\";\n const stateKey = `${runId}|${root}`;\n const [listings, setListings] = useState<ReadonlyMap<string, BrowseListing>>(() => new Map());\n const [expanded, setExpanded] = useState<ReadonlySet<string>>(() => new Set());\n const [selected, setSelected] = useState<string | undefined>();\n const [preview, setPreview] = useState<BrowsePreview>();\n const [error, setError] = useState<string>();\n const [pending, setPending] = useState(false);\n const [reload, setReload] = useState(0);\n const [showHidden, setShowHidden] = useState(false);\n\n const expandedRef = useRef(expanded);\n expandedRef.current = expanded;\n\n const keyRef = useRef(stateKey);\n useEffect(() => {\n if (keyRef.current === stateKey) return;\n keyRef.current = stateKey;\n const saved = treeMemory.current.get(stateKey);\n setListings(new Map());\n setExpanded(saved?.expanded ?? new Set());\n setSelected(saved?.selected);\n setPreview(undefined);\n setError(undefined);\n }, [stateKey]);\n\n useEffect(() => {\n treeMemory.current.set(stateKey, { expanded, selected });\n }, [expanded, root, runId, selected, stateKey]);\n\n useEffect(() => {\n if (!active || selected === undefined || preview !== undefined) return;\n let alive = true;\n void fetchBrowsePreview(runId, root, selected)\n .then((value) => alive && setPreview(value))\n .catch(() => alive && setSelected(undefined));\n return () => {\n alive = false;\n };\n }, [active, preview, root, runId, selected]);\n\n useEffect(() => {\n if (!active) return;\n let alive = true;\n let timer: number | undefined;\n let busy = false;\n\n const load = async (visible: boolean) => {\n if (busy) return;\n busy = true;\n if (visible) setPending(true);\n try {\n const targets = [\"\", ...expandedRef.current];\n const results = await Promise.all(targets.map(async (directory) => ({\n directory,\n listing: await fetchBrowseListing(runId, root, directory).catch((cause: unknown) =>\n directory === \"\" ? Promise.reject(cause) : null),\n })));\n if (!alive) return;\n const gone = results.filter((result) => result.listing === null).map((result) => result.directory);\n setListings(new Map(results\n .filter((result) => result.listing !== null)\n .map((result) => [result.directory, result.listing as BrowseListing])));\n if (gone.length > 0) {\n setExpanded((current) => new Set([...current].filter((directory) =>\n !gone.some((missing) => directory === missing || directory.startsWith(`${missing}/`)))));\n }\n setError(undefined);\n } catch (cause) {\n if (alive) setError(messageOf(cause));\n } finally {\n busy = false;\n if (alive) {\n if (visible) setPending(false);\n if (timer !== undefined) window.clearTimeout(timer);\n timer = window.setTimeout(() => void load(false), 30000);\n }\n }\n };\n\n const unsubscribe = rpc.subscribe(workspaceContracts.channels.browse, { runId, root }, () => void load(false));\n void load(true);\n return () => {\n alive = false;\n unsubscribe();\n if (timer !== undefined) window.clearTimeout(timer);\n };\n }, [active, reload, root, runId]);\n\n const toggleDirectory = (directory: string) => {\n setExpanded((current) => {\n const next = new Set(current);\n if (next.has(directory)) next.delete(directory);\n else next.add(directory);\n return next;\n });\n if (listings.has(directory)) return;\n setPending(true);\n void fetchBrowseListing(runId, root, directory)\n .then((listing) => {\n setListings((current) => new Map(current).set(directory, listing));\n setError(undefined);\n })\n .catch((cause: unknown) => setError(messageOf(cause)))\n .finally(() => setPending(false));\n };\n\n const openFile = (file: string) => {\n setSelected(file);\n setPreview(undefined);\n setPending(true);\n void fetchBrowsePreview(runId, root, file)\n .then((value) => {\n setPreview(value);\n setError(undefined);\n })\n .catch((cause: unknown) => setError(messageOf(cause)))\n .finally(() => setPending(false));\n };\n\n const renderLevel = (directory: string, depth: number): ReactNode => {\n const listing = listings.get(directory);\n if (!listing) return null;\n const visible = showHidden ? listing.entries : listing.entries.filter((entry) => !entry.name.startsWith(\".\"));\n return (\n <>\n {visible.map((entry) => {\n const full = directory ? `${directory}/${entry.name}` : entry.name;\n const open = expanded.has(full);\n const { Icon, tone } = fileIconFor(entry.name, entry.kind, open);\n return (\n <div key={full}>\n <Button\n className={rowClass}\n data-selected={selected === full}\n onClick={() => entry.kind === \"directory\" ? toggleDirectory(full) : openFile(full)}\n style={indent(depth)}\n title={`${entry.name} - ${sizeLabel(entry.size)} - ${timeLabel(entry.modifiedAt)}`}\n variant=\"ghost\"\n >\n <span className={`inline-flex w-3 flex-none items-center justify-center text-muted-foreground${open ? \" [&>svg]:rotate-90\" : \"\"}`}>\n {entry.kind === \"directory\" ? <ChevronRight size={11} strokeWidth={2} /> : null}\n </span>\n <Icon aria-hidden className={`flex-none ${fileToneClass[tone]}`} size={14} strokeWidth={1.7} />\n <span className=\"min-w-0 flex-1 truncate text-left font-mono\">{entry.name}</span>\n {entry.kind === \"file\" && <span className=\"flex-none text-[0.64rem] text-muted-foreground tabular-nums\">{sizeLabel(entry.size)}</span>}\n </Button>\n {entry.kind === \"directory\" && open && renderLevel(full, depth + 1)}\n </div>\n );\n })}\n {listing.truncated && (\n <div className=\"py-1 pr-2.5 pl-(--row-indent) text-[0.64rem] text-muted-foreground\" style={indent(depth)}>\n Weitere Eintr\u00E4ge sind nicht gelistet.\n </div>\n )}\n </>\n );\n };\n\n const rootListing = listings.get(\"\");\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <header className=\"flex items-center gap-2 px-2.5 py-2\">\n <div className=\"flex min-w-0 flex-1 gap-1\">\n {roots.map((value) => (\n <Toggle key={value} onPressedChange={() => setRoot(value)} pressed={value === root} size=\"sm\" variant=\"outline\">\n {rootLabels[value]}\n </Toggle>\n ))}\n </div>\n <div className=\"flex items-center gap-1\">\n <Toggle\n aria-label={showHidden ? \"Versteckte Eintr\u00E4ge ausblenden\" : \"Versteckte Eintr\u00E4ge anzeigen\"}\n onPressedChange={setShowHidden}\n pressed={showHidden}\n size=\"sm\"\n title={showHidden ? \"Versteckte Eintr\u00E4ge ausblenden\" : \"Versteckte Eintr\u00E4ge anzeigen\"}\n >\n {showHidden ? <Eye size={15} strokeWidth={1.8} /> : <EyeOff size={15} strokeWidth={1.8} />}\n </Toggle>\n <Button aria-label=\"Dateien aktualisieren\" onClick={() => setReload((value) => value + 1)} size=\"icon\" title=\"Aktualisieren\" variant=\"ghost\">\n <RefreshCw className={pending ? \"animate-spin\" : undefined} size={15} strokeWidth={1.8} />\n </Button>\n </div>\n </header>\n {error && (\n <Alert className=\"shrink-0 rounded-none border-x-0 border-t-0 border-b-border-soft bg-destructive/8 px-2.5 py-2 text-[0.68rem]\" variant=\"destructive\">\n {error}\n </Alert>\n )}\n {rootListing && <div className=\"truncate px-2.5 pt-0.5 pb-1.5 font-mono text-[0.66rem] text-muted-foreground\" title={rootListing.location}>{rootListing.location}</div>}\n {rootListing && rootListing.entries.length === 0 && (\n <Empty className=\"min-h-30 flex-none gap-2 p-7\">\n <EmptyHeader>\n <EmptyMedia><FolderOpen size={15} strokeWidth={1.7} /></EmptyMedia>\n <EmptyTitle>Keine Dateien</EmptyTitle>\n <EmptyDescription>{emptyHints[root]}</EmptyDescription>\n </EmptyHeader>\n </Empty>\n )}\n <div className=\"min-h-0 flex-1 overflow-auto pb-2\">{renderLevel(\"\", 0)}</div>\n {selected && (\n <div className=\"flex min-h-0 flex-1 flex-col border-t border-border-soft\">\n <div className=\"truncate px-2.5 py-1.5 font-mono text-[0.66rem] text-muted-foreground\" title={selected}>{selected}</div>\n {preview && !preview.previewable && <div className=\"px-2.5 pb-2 text-[0.68rem] text-muted-foreground\">{preview.reason}</div>}\n {preview && preview.previewable && (\n <div className=\"min-h-0 flex-1 overflow-auto\">\n <SourceCode className={previewSourceClass} content={preview.content} path={selected} />\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/Toolbar\", \"ToolbarCopy\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/Toolbar\", \"ToolbarItem\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/Toolbar\", \"ToolbarLabel\");\n", "import { read } from \"ragents-host-read:read\";\nexport default read(\"@ragents/web/Toolbar\", \"ToolbarText\");\n", "import { useId, useMemo, useState } from \"react\";\nimport { FolderIcon } from \"lucide-react\";\nimport { Input, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@ragents/web/ui\";\nimport { ToolbarCopy, ToolbarItem, ToolbarLabel, ToolbarText } from \"@ragents/web/Toolbar\";\nimport type {\n SessionMetadataContext,\n StartOptionBadgeContext,\n StartOptionControlContext,\n} from \"@ragents/web/PluginRegistry\";\nimport {\n FRESH_WORKSPACE_LABEL,\n isFreshFolder,\n isWorkspaceBinding,\n storedWorkspaceBinding,\n workspaceBindingSummary,\n WORKSPACE_METADATA_ID,\n type FreshWorkspaceLabels,\n type WorkspaceBinding,\n type WorkspaceBindingPresentation,\n type WorkspaceClientInfo,\n type WorkspaceSessionMetadata,\n} from \"../contract\";\n\nexport interface BindingChoice {\n value: string;\n label: string;\n}\n\ntype FolderChoice = \"fresh\" | \"existing\";\n\nconst SERVER = \"server\";\n\nconst errorClass = \"text-[0.75rem] text-destructive\";\n\nconst labelClass = \"text-[0.66rem] font-medium text-muted-foreground\";\n\nconst messageOf = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause);\n\nconst isClientInfo = (value: unknown): value is WorkspaceClientInfo => {\n const raw = value as Record<string, unknown> | null;\n return typeof raw === \"object\" && raw !== null\n && typeof raw.id === \"string\" && typeof raw.label === \"string\"\n && typeof raw.hostname === \"string\" && typeof raw.platform === \"string\"\n && Array.isArray(raw.folders) && raw.folders.every((folder) => typeof folder === \"string\")\n && typeof raw.runsDirectory === \"string\";\n};\n\nconst isFreshLabels = (value: unknown): value is FreshWorkspaceLabels => {\n const raw = value as Record<string, unknown> | null;\n return typeof raw === \"object\" && raw !== null && typeof raw.server === \"string\"\n && (raw.client === null || typeof raw.client === \"string\");\n};\n\nconst presentationFrom = (presentation: unknown, optionId: string): WorkspaceBindingPresentation => {\n const raw = presentation as Record<string, unknown> | null;\n if (typeof raw !== \"object\" || raw === null || raw.kind !== \"workspace-binding\"\n || !Array.isArray(raw.clients) || !raw.clients.every(isClientInfo)\n || !isFreshLabels(raw.fresh) || typeof raw.serverFolders !== \"boolean\") {\n throw new Error(`Die Startoption ${optionId} liefert keine Arbeitsbereich-Darstellung`);\n }\n return { kind: \"workspace-binding\", clients: raw.clients, fresh: raw.fresh, serverFolders: raw.serverFolders };\n};\n\n/** Auch ein eingefrorener Wert aus einem \u00E4lteren Journal; dieselbe Abbildung wie auf dem Server. */\nconst bindingFrom = (value: unknown, optionId: string): WorkspaceBinding => {\n const binding = storedWorkspaceBinding(value);\n if (!binding) throw new Error(`Der Wert der Startoption ${optionId} ist keine Arbeitsbereich-Bindung`);\n return binding;\n};\n\nconst machineOf = (binding: WorkspaceBinding): string => binding.machine === SERVER ? SERVER : binding.machine.client;\n\nconst folderOf = (binding: WorkspaceBinding): FolderChoice => isFreshFolder(binding.folder) ? \"fresh\" : \"existing\";\n\nconst pathOf = (binding: WorkspaceBinding): string => {\n const { folder } = binding;\n return isFreshFolder(folder) ? \"\" : folder.path;\n};\n\n/** Ein neuer Ordner auf einem Arbeitsplatz ist dieselbe Wahl, ob schon mit Pfad eingefroren oder nicht. */\nconst sameBinding = (left: WorkspaceBinding, right: WorkspaceBinding): boolean =>\n machineOf(left) === machineOf(right) && folderOf(left) === folderOf(right) && pathOf(left) === pathOf(right);\n\n/** Der Server, die verbundenen Arbeitspl\u00E4tze nur, wo der Host sie anbietet, und ein schon gew\u00E4hlter Arbeitsplatz, damit die Wahl lesbar bleibt. */\nexport const workspaceMachineChoices = (\n presentation: WorkspaceBindingPresentation,\n binding: WorkspaceBinding,\n machines: StartOptionControlContext[\"machines\"],\n): BindingChoice[] => {\n const { machine } = binding;\n const clients = machines === \"all\" ? presentation.clients : [];\n const current = machine === SERVER || clients.some((client) => client.id === machine.client) ? []\n : [{ value: machine.client, label: presentation.clients.some((client) => client.id === machine.client)\n ? `Arbeitsplatz ${machine.label}` : `Arbeitsplatz ${machine.label} (nicht verbunden)` }];\n return [\n { value: SERVER, label: \"Server\" },\n ...clients.map((client) => ({ value: client.id, label: `Arbeitsplatz ${client.label}` })),\n ...current,\n ];\n};\n\n/** Auf dem Server gibt es den neuen Ordner immer, einen vorhandenen nur ohne Beitrag, der ihn ausschlie\u00DFt; auf einem Arbeitsplatz umgekehrt. */\nexport const workspaceFolderChoices = (presentation: WorkspaceBindingPresentation, machine: string): BindingChoice[] => {\n const existing = { value: \"existing\", label: \"Vorhandener Ordner\" };\n if (machine === SERVER) {\n return [{ value: \"fresh\", label: presentation.fresh.server }, ...(presentation.serverFolders ? [existing] : [])];\n }\n return [...(presentation.fresh.client === null ? [] : [{ value: \"fresh\", label: presentation.fresh.client }]), existing];\n};\n\nexport const workspaceMetadataFrom = (value: unknown): WorkspaceSessionMetadata | undefined => {\n const raw = value as Record<string, unknown> | null;\n if (typeof raw !== \"object\" || raw === null || typeof raw.summary !== \"string\" || !isWorkspaceBinding(raw.binding)) {\n return undefined;\n }\n return { binding: raw.binding, summary: raw.summary };\n};\n\nconst parse = (option: StartOptionControlContext[\"option\"]) => {\n try {\n return {\n presentation: presentationFrom(option.presentation, option.id),\n binding: bindingFrom(option.value, option.id),\n };\n } catch (cause) {\n return { message: messageOf(cause) };\n }\n};\n\nexport function WorkspaceBindingControl({ disabled, error, machines: offeredMachines, option, setValue }: StartOptionControlContext) {\n const [machineDraft, setMachine] = useState<string | undefined>(undefined);\n const [folderDraft, setFolder] = useState<FolderChoice | undefined>(undefined);\n const [draft, setDraft] = useState<string | undefined>(undefined);\n const pathId = useId();\n const parsed = useMemo(() => parse(option), [option]);\n if (\"message\" in parsed) return <p className={errorClass} role=\"alert\">{parsed.message}</p>;\n const { presentation, binding } = parsed;\n\n const machine = machineDraft ?? machineOf(binding);\n const folder = folderDraft ?? folderOf(binding);\n const path = draft ?? pathOf(binding);\n const machines = workspaceMachineChoices(presentation, binding, offeredMachines);\n const folderChoices = workspaceFolderChoices(presentation, machine);\n const client = presentation.clients.find((entry) => entry.id === machine);\n const offered = folder === \"existing\" ? client?.folders.map((entry) => ({ value: entry, label: entry })) ?? [] : [];\n\n const bindingOf = (nextMachine: string, nextFolder: FolderChoice, nextPath: string): WorkspaceBinding | undefined => {\n const label = presentation.clients.find((entry) => entry.id === nextMachine)?.label\n ?? (binding.machine !== SERVER && binding.machine.client === nextMachine ? binding.machine.label : nextMachine);\n const where = nextMachine === SERVER ? SERVER : { client: nextMachine, label };\n if (nextFolder === \"fresh\") return { machine: where, folder: \"fresh\" };\n return nextPath === \"\" ? undefined : { machine: where, folder: { path: nextPath } };\n };\n\n const commit = (nextMachine: string, nextFolder: FolderChoice, nextPath: string) => {\n const next = bindingOf(nextMachine, nextFolder, nextPath);\n if (next && !sameBinding(next, binding)) void setValue(next);\n };\n\n const chooseMachine = (next: string) => {\n const available = workspaceFolderChoices(presentation, next).map((choice) => choice.value as FolderChoice);\n const nextFolder = available.includes(folder) ? folder : available[0]!;\n const nextPath = path === \"\" ? presentation.clients.find((entry) => entry.id === next)?.folders[0] ?? \"\" : path;\n setMachine(next);\n setFolder(nextFolder);\n setDraft(nextPath);\n commit(next, nextFolder, nextPath);\n };\n\n const chooseFolder = (next: FolderChoice) => {\n const nextPath = path === \"\" ? client?.folders[0] ?? \"\" : path;\n setFolder(next);\n setDraft(nextPath);\n commit(machine, next, nextPath);\n };\n\n const chooseOffered = (next: string) => {\n setDraft(next);\n commit(machine, folder, next);\n };\n\n return (\n <div className=\"flex w-full flex-col items-start gap-2\">\n <span className=\"text-[0.72rem] font-semibold text-muted-foreground\">Arbeitsbereich</span>\n <div className=\"flex w-full flex-wrap items-end gap-2\">\n <div className=\"flex flex-col gap-1\">\n <span className={labelClass}>Rechner</span>\n <Select disabled={disabled} items={machines} onValueChange={(next) => { if (next !== null) chooseMachine(next); }} value={machine}>\n <SelectTrigger aria-label=\"Rechner des Arbeitsbereichs\" className=\"min-w-0 max-w-full\" size=\"sm\"><SelectValue /></SelectTrigger>\n <SelectContent>{machines.map((choice) => <SelectItem key={choice.value} value={choice.value}>{choice.label}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n <div className=\"flex flex-col gap-1\">\n <span className={labelClass}>Ordner</span>\n <Select disabled={disabled} items={folderChoices} onValueChange={(next) => { if (next !== null) chooseFolder(next as FolderChoice); }} value={folder}>\n <SelectTrigger aria-label=\"Ordner des Arbeitsbereichs\" className=\"min-w-0 max-w-full\" size=\"sm\"><SelectValue /></SelectTrigger>\n <SelectContent>{folderChoices.map((choice) => <SelectItem key={choice.value} value={choice.value}>{choice.label}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n {folder === \"existing\" && (\n <div className=\"flex min-w-[15rem] flex-1 flex-col gap-1\">\n <Label className={labelClass} htmlFor={pathId}>Absoluter Pfad</Label>\n <Input\n className=\"h-7 text-sm\"\n disabled={disabled}\n id={pathId}\n onBlur={() => commit(machine, folder, path)}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={(event) => { if (event.key === \"Enter\") commit(machine, folder, path); }}\n placeholder=\"/Users/name/projekt\"\n value={path}\n />\n </div>\n )}\n {offered.length > 0 && (\n <div className=\"flex flex-col gap-1\">\n <span className={labelClass}>Angebotener Ordner</span>\n <Select disabled={disabled} items={offered} onValueChange={(next) => { if (next !== null) chooseOffered(next); }} value={offered.some((entry) => entry.value === path) ? path : null}>\n <SelectTrigger aria-label=\"Angebotener Ordner\" className=\"min-w-0 max-w-full\" size=\"sm\"><SelectValue placeholder=\"\u00DCbernehmen\" /></SelectTrigger>\n <SelectContent>{offered.map((entry) => <SelectItem key={entry.value} value={entry.value}>{entry.label}</SelectItem>)}</SelectContent>\n </Select>\n </div>\n )}\n </div>\n {error && <p className={errorClass} role=\"alert\">{error}</p>}\n </div>\n );\n}\n\nconst freshLabelsOf = (presentation: unknown): FreshWorkspaceLabels => {\n const raw = presentation as Record<string, unknown> | null;\n return typeof raw === \"object\" && raw !== null && isFreshLabels(raw.fresh) ? raw.fresh : { server: FRESH_WORKSPACE_LABEL, client: FRESH_WORKSPACE_LABEL };\n};\n\nexport function WorkspaceBindingBadge({ option }: StartOptionBadgeContext) {\n if (!option.locked) return null;\n let binding: WorkspaceBinding;\n try {\n binding = bindingFrom(option.value, option.id);\n } catch (cause) {\n return <ToolbarItem title={messageOf(cause)}><ToolbarText>Arbeitsbereich unlesbar</ToolbarText></ToolbarItem>;\n }\n const summary = workspaceBindingSummary(binding, freshLabelsOf(option.presentation));\n return (\n <ToolbarItem title={`Arbeitsbereich: ${summary}`}>\n <ToolbarCopy><ToolbarLabel>Arbeitsbereich</ToolbarLabel><ToolbarText>{summary}</ToolbarText></ToolbarCopy>\n </ToolbarItem>\n );\n}\n\nexport function WorkspaceMetadata({ placement, session }: SessionMetadataContext) {\n const metadata = workspaceMetadataFrom(session.metadata?.[WORKSPACE_METADATA_ID]);\n if (!metadata) return null;\n if (placement === \"list\") {\n const { machine, folder } = metadata.binding;\n if (machine === \"server\" && folder === \"fresh\") return null;\n return (\n <span className=\"flex max-w-full items-center gap-1.5 overflow-hidden pl-px text-xs text-muted-foreground\" title={`Arbeitsbereich: ${metadata.summary}`}>\n <FolderIcon aria-hidden className=\"size-3 flex-none\" />\n <span className=\"truncate\">{metadata.summary}</span>\n </span>\n );\n }\n return (\n <ToolbarItem title={`Arbeitsbereich: ${metadata.summary}`}>\n <FolderIcon aria-hidden className=\"size-3.5\" />\n <ToolbarCopy><ToolbarLabel>Arbeitsbereich</ToolbarLabel><ToolbarText>{metadata.summary}</ToolbarText></ToolbarCopy>\n </ToolbarItem>\n );\n}\n", "import type { WebPlugin } from \"@ragents/web/PluginRegistry\";\nimport { WORKSPACE_BINDING_OPTION_ID, WORKSPACE_PLUGIN_ID } from \"../contract\";\nimport { FileBrowserPanel } from \"./FileBrowser\";\nimport { WorkspaceBindingBadge, WorkspaceBindingControl, WorkspaceMetadata } from \"./WorkspaceBinding\";\n\nexport const WORKSPACE_FILES_TAB_ID = \"ragents.workspace.files\";\n\nfunction IconFiles() {\n return (\n <svg aria-hidden fill=\"none\" height=\"15\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.7\" viewBox=\"0 0 24 24\" width=\"15\">\n <path d=\"M3 6.5A1.5 1.5 0 0 1 4.5 5h4L10 7h9.5A1.5 1.5 0 0 1 21 8.5v9a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 17.5z\" />\n <path d=\"M3 11h18\" />\n </svg>\n );\n}\n\nexport const webPlugin: WebPlugin = {\n id: WORKSPACE_PLUGIN_ID,\n workspaceTabs: [{\n readRight: \"runs.inspect\",\n id: WORKSPACE_FILES_TAB_ID,\n label: \"Dateien\",\n order: 260,\n Icon: IconFiles,\n Panel: FileBrowserPanel,\n }],\n startOptions: [{\n id: WORKSPACE_BINDING_OPTION_ID,\n Control: WorkspaceBindingControl,\n Badge: WorkspaceBindingBadge,\n }],\n sessionMetadata: [{\n id: \"ragents.workspace.binding\",\n order: 90,\n Metadata: WorkspaceMetadata,\n }],\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["read", "specifier", "name", "module", "typebox_Type_default", "read", "contracts_openJson_default", "read", "contract_defineChannel_default", "read", "contract_defineOperation_default", "read", "WORKSPACE_PLUGIN_ID", "BROWSE_ROOTS", "WORKSPACE_BINDING_OPTION_ID", "WORKSPACE_METADATA_ID", "freshServerBinding", "WORKSPACE_CLIENT_ID_PATTERN", "clientId", "typebox_Type_default", "executorVersion", "clientDescription", "clientInfoSchema", "absolutePath", "workspaceClientContracts", "contract_defineOperation_default", "typebox_Type_default", "absolutePath", "browseTarget", "workspaceContracts", "contracts_openJson_default", "contract_defineChannel_default", "clientInfoSchema", "clientId", "clientDescription", "executorVersion", "isRecord", "value", "hasExactly", "keys", "key", "isMachine", "WORKSPACE_CLIENT_ID_PATTERN", "isFolder", "isWorkspaceBinding", "isFreshFolder", "folder", "fromKind", "freshServerBinding", "storedWorkspaceBinding", "mapped", "FRESH_WORKSPACE_LABEL", "freshLabelOf", "binding", "labels", "workspaceBindingSummary", "machine", "fresh", "where", "ui_Alert_default", "read", "ui_Button_default", "read", "ui_Empty_default", "read", "ui_EmptyDescription_default", "read", "ui_EmptyHeader_default", "read", "ui_EmptyMedia_default", "read", "ui_EmptyTitle_default", "read", "ui_Input_default", "read", "ui_Label_default", "read", "ui_Select_default", "read", "ui_SelectContent_default", "read", "ui_SelectItem_default", "read", "ui_SelectTrigger_default", "read", "ui_SelectValue_default", "read", "ui_Toggle_default", "read", "react_createContext_default", "read", "react_createElement_default", "read", "react_forwardRef_default", "read", "react_useContext_default", "read", "react_useEffect_default", "read", "react_useId_default", "read", "react_useMemo_default", "read", "react_useRef_default", "read", "react_useState_default", "read", "toKebabCase", "string", "toLucideIconData", "iconName", "iconNode", "aliases", "toKebabCase", "toCamelCase", "string", "out", "upperNext", "ch", "toPascalCase", "string", "camelCase", "toCamelCase", "mergeClasses", "classes", "className", "index", "array", "defaultAttributes", "isDefined", "value", "buildLucideIconNode", "icon", "params", "attributeNames", "getAttributeName", "attributeName", "viewBoxWidth", "defaultAttributes", "viewBoxHeight", "aliasClassNames", "alias", "iconClassNames", "classNamesFromClassName", "className", "mergeClasses", "calculatedStrokeWidth", "attrs", "attrName", "child", "name", "children", "nextAttrs", "buildLucideIconForReact", "icon", "params", "buildLucideIconNode", "hasA11yProp", "props", "prop", "LucideContext", "react_createContext_default", "useLucideContext", "react_useContext_default", "LucideContext", "Icon", "react_forwardRef_default", "color", "size", "width", "height", "strokeWidth", "absoluteStrokeWidth", "nonScalingStroke", "className", "children", "iconNode", "icon", "rest", "ref", "contextSize", "contextStrokeWidth", "contextAbsoluteStrokeWidth", "contextNonScalingStroke", "contextColor", "contextClass", "useLucideContext", "hasAccessibleProp", "hasA11yProp", "name", "svgAttributes", "builtIconNode", "buildLucideIconForReact", "mergeClasses", "react_createElement_default", "tag", "attrs", "createLucideIcon", "iconDataOrName", "iconNode", "aliases", "iconData", "toLucideIconData", "Component", "react_forwardRef_default", "className", "props", "ref", "react_createElement_default", "Icon", "toPascalCase", "__iconData", "Braces", "createLucideIcon", "__iconData", "ChevronRight", "createLucideIcon", "__iconData", "EyeOff", "createLucideIcon", "__iconData", "Eye", "createLucideIcon", "__iconData", "FileArchive", "createLucideIcon", "__iconData", "FileCodeCorner", "createLucideIcon", "__iconData", "FileCog", "createLucideIcon", "__iconData", "FileImage", "createLucideIcon", "__iconData", "FileTerminal", "createLucideIcon", "__iconData", "FileText", "createLucideIcon", "__iconData", "File", "createLucideIcon", "__iconData", "FolderOpen", "createLucideIcon", "__iconData", "Folder", "createLucideIcon", "__iconData", "Palette", "createLucideIcon", "__iconData", "RefreshCw", "createLucideIcon", "PluginRegistry_workspaceAccessible_default", "read", "rpc_rpc_default", "read", "fetchBrowseListing", "runId", "root", "directory", "rpc_rpc_default", "workspaceContracts", "fetchBrowsePreview", "file", "fileToneClass", "byExtension", "FileCodeCorner", "Braces", "FileText", "Palette", "FileImage", "FileTerminal", "FileCog", "FileArchive", "byName", "fileIconFor", "name", "kind", "open", "FolderOpen", "Folder", "named", "extension", "File", "SourceCode_SourceCode_default", "read", "jsx_runtime_Fragment_default", "read", "jsx_runtime_jsx_default", "read", "jsx_runtime_jsxs_default", "read", "rowClass", "previewSourceClass", "indent", "depth", "rootLabels", "emptyHints", "messageOf", "cause", "sizeLabel", "bytes", "timeLabel", "value", "at", "FileBrowserPanel", "active", "session", "runId", "treeMemory", "react_useRef_default", "reachable", "PluginRegistry_workspaceAccessible_default", "roots", "BROWSE_ROOTS", "chosenRoot", "setRoot", "react_useState_default", "root", "stateKey", "listings", "setListings", "expanded", "setExpanded", "selected", "setSelected", "preview", "setPreview", "error", "setError", "pending", "setPending", "reload", "setReload", "showHidden", "setShowHidden", "expandedRef", "keyRef", "react_useEffect_default", "saved", "alive", "fetchBrowsePreview", "timer", "busy", "load", "visible", "targets", "results", "directory", "fetchBrowseListing", "gone", "result", "current", "missing", "unsubscribe", "rpc_rpc_default", "workspaceContracts", "toggleDirectory", "next", "listing", "openFile", "file", "renderLevel", "entry", "jsx_runtime_jsxs_default", "jsx_runtime_Fragment_default", "full", "open", "Icon", "tone", "fileIconFor", "ui_Button_default", "jsx_runtime_jsx_default", "ChevronRight", "fileToneClass", "rootListing", "ui_Toggle_default", "Eye", "EyeOff", "RefreshCw", "ui_Alert_default", "ui_Empty_default", "ui_EmptyHeader_default", "ui_EmptyMedia_default", "FolderOpen", "ui_EmptyTitle_default", "ui_EmptyDescription_default", "SourceCode_SourceCode_default", "Toolbar_ToolbarCopy_default", "read", "Toolbar_ToolbarItem_default", "read", "Toolbar_ToolbarLabel_default", "read", "Toolbar_ToolbarText_default", "read", "SERVER", "errorClass", "labelClass", "messageOf", "cause", "isClientInfo", "value", "raw", "folder", "isFreshLabels", "presentationFrom", "presentation", "optionId", "bindingFrom", "binding", "storedWorkspaceBinding", "machineOf", "folderOf", "isFreshFolder", "pathOf", "sameBinding", "left", "right", "workspaceMachineChoices", "machines", "machine", "clients", "current", "client", "workspaceFolderChoices", "existing", "workspaceMetadataFrom", "isWorkspaceBinding", "parse", "option", "WorkspaceBindingControl", "disabled", "error", "offeredMachines", "setValue", "machineDraft", "setMachine", "react_useState_default", "folderDraft", "setFolder", "draft", "setDraft", "pathId", "react_useId_default", "parsed", "react_useMemo_default", "jsx_runtime_jsx_default", "path", "folderChoices", "entry", "offered", "bindingOf", "nextMachine", "nextFolder", "nextPath", "label", "where", "commit", "next", "chooseMachine", "available", "choice", "chooseFolder", "chooseOffered", "jsx_runtime_jsxs_default", "ui_Select_default", "ui_SelectTrigger_default", "ui_SelectValue_default", "ui_SelectContent_default", "ui_SelectItem_default", "ui_Label_default", "ui_Input_default", "event", "freshLabelsOf", "FRESH_WORKSPACE_LABEL", "WorkspaceBindingBadge", "Toolbar_ToolbarItem_default", "Toolbar_ToolbarText_default", "summary", "workspaceBindingSummary", "Toolbar_ToolbarCopy_default", "Toolbar_ToolbarLabel_default", "WorkspaceMetadata", "placement", "session", "metadata", "WORKSPACE_METADATA_ID", "Folder", "WORKSPACE_FILES_TAB_ID", "IconFiles", "jsx_runtime_jsxs_default", "jsx_runtime_jsx_default", "webPlugin", "WORKSPACE_PLUGIN_ID", "FileBrowserPanel", "WORKSPACE_BINDING_OPTION_ID", "WorkspaceBindingControl", "WorkspaceBindingBadge", "WorkspaceMetadata"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schlenkr/ragents",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "RAgents-Host: Server, Engine, Plugins und Werkzeuge ohne Quell-Checkout",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agents",
|
|
@@ -32,19 +32,17 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
+
"@anthropic-ai/sandbox-runtime": "0.0.77",
|
|
35
36
|
"@base-ui/react": "1.8.0",
|
|
36
37
|
"@openrouter/ai-sdk-provider": "3.0.0",
|
|
37
38
|
"@silvia-odwyer/photon-node": "0.3.4",
|
|
38
39
|
"@tailwindcss/node": "4.3.3",
|
|
39
40
|
"@tailwindcss/oxide": "4.3.3",
|
|
40
|
-
"@tailwindcss/vite": "4.3.3",
|
|
41
41
|
"@types/node": "24.13.3",
|
|
42
42
|
"@types/react": "19.2.18",
|
|
43
43
|
"@types/react-dom": "19.2.4",
|
|
44
|
-
"@vitejs/plugin-react": "4.7.0",
|
|
45
44
|
"@xyflow/react": "12.11.6",
|
|
46
45
|
"ai": "7.0.99",
|
|
47
|
-
"chalk": "5.6.2",
|
|
48
46
|
"class-variance-authority": "0.7.1",
|
|
49
47
|
"cn": "0.3.0",
|
|
50
48
|
"cross-spawn": "7.0.6",
|
|
@@ -52,22 +50,15 @@
|
|
|
52
50
|
"dompurify": "3.4.13",
|
|
53
51
|
"elkjs": "0.12.0",
|
|
54
52
|
"esbuild": "0.28.2",
|
|
55
|
-
"glob": "13.0.6",
|
|
56
53
|
"handlebars": "4.7.9",
|
|
57
54
|
"highlight.js": "11.12.0",
|
|
58
|
-
"hosted-git-info": "9.0.3",
|
|
59
|
-
"ignore": "7.0.5",
|
|
60
|
-
"jiti": "2.7.0",
|
|
61
55
|
"lucide-react": "1.46.0",
|
|
62
|
-
"minimatch": "10.2.5",
|
|
63
56
|
"partial-json": "0.1.7",
|
|
64
57
|
"playwright-core": "1.61.1",
|
|
65
|
-
"
|
|
58
|
+
"quassel": "0.2.2",
|
|
66
59
|
"react": "19.2.8",
|
|
67
60
|
"react-diff-view": "3.3.3",
|
|
68
61
|
"react-dom": "19.2.8",
|
|
69
|
-
"semver": "7.8.0",
|
|
70
|
-
"streamdown": "2.6.0",
|
|
71
62
|
"tailwindcss": "4.3.3",
|
|
72
63
|
"tar": "7.5.22",
|
|
73
64
|
"tsx": "4.23.12",
|
|
@@ -75,12 +66,10 @@
|
|
|
75
66
|
"typebox": "1.3.13",
|
|
76
67
|
"typescript": "5.9.3",
|
|
77
68
|
"typescript-language-server": "6.0.0",
|
|
78
|
-
"undici": "8.5.0",
|
|
79
|
-
"vite": "6.4.3",
|
|
80
69
|
"vscode-jsonrpc": "9.0.2",
|
|
81
70
|
"yaml": "2.9.0"
|
|
82
71
|
},
|
|
83
72
|
"ragents": {
|
|
84
|
-
"hostVersion": "
|
|
73
|
+
"hostVersion": "765802e9cb0252b2a312b2b1b09a557ef8bf13cc"
|
|
85
74
|
}
|
|
86
75
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** The few knobs of an agent's runtime; everything else is fixed. */
|
|
2
|
+
export interface AgentSettings {
|
|
3
|
+
compaction: {
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
reserveTokens: number;
|
|
6
|
+
keepRecentTokens: number;
|
|
7
|
+
};
|
|
8
|
+
/** Retries after a retryable model error, with exponential backoff. */
|
|
9
|
+
retry: {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
maxRetries: number;
|
|
12
|
+
baseDelayMs: number;
|
|
13
|
+
};
|
|
14
|
+
/** Timeout and retries of a single provider request; unset values leave the SDK defaults. */
|
|
15
|
+
providerRequest: {
|
|
16
|
+
timeoutMs: number;
|
|
17
|
+
maxRetries?: number;
|
|
18
|
+
maxRetryDelayMs: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface AgentSettingsInput {
|
|
22
|
+
compaction?: Partial<AgentSettings["compaction"]>;
|
|
23
|
+
retry?: Partial<AgentSettings["retry"]>;
|
|
24
|
+
providerRequest?: Partial<AgentSettings["providerRequest"]>;
|
|
25
|
+
}
|
|
26
|
+
export declare const agentSettings: (input?: AgentSettingsInput) => AgentSettings;
|
|
27
|
+
//# sourceMappingURL=agent-settings.d.ts.map
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/** Context compaction over the context log of one agent; pure functions, the caller persists the result. */
|
|
2
|
+
import type { AgentMessage, StreamFn, ThinkingLevel } from "../../loop/index.ts";
|
|
3
|
+
import type { Model, Usage } from "@ragents/ai";
|
|
4
|
+
import { type ContextLogEntry } from "../context-log.ts";
|
|
5
|
+
import { type FileOperations } from "./utils.ts";
|
|
6
|
+
/** Result of compact(); the caller records it as a compaction entry. */
|
|
7
|
+
export interface CompactionResult {
|
|
8
|
+
summary: string;
|
|
9
|
+
firstKeptId: string;
|
|
10
|
+
tokensBefore: number;
|
|
11
|
+
estimatedTokensAfter?: number;
|
|
12
|
+
readFiles: string[];
|
|
13
|
+
modifiedFiles: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface CompactionSettings {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
reserveTokens: number;
|
|
18
|
+
keepRecentTokens: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Calculate total context tokens from usage.
|
|
22
|
+
* Uses the native totalTokens field when available, falls back to computing from components.
|
|
23
|
+
*/
|
|
24
|
+
export declare function calculateContextTokens(usage: Usage): number;
|
|
25
|
+
export interface ContextUsageEstimate {
|
|
26
|
+
tokens: number;
|
|
27
|
+
usageTokens: number;
|
|
28
|
+
trailingTokens: number;
|
|
29
|
+
lastUsageIndex: number | null;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Estimate context tokens from messages, using the last assistant usage when available.
|
|
33
|
+
* If there are messages after the last usage, estimate their tokens with estimateTokens.
|
|
34
|
+
*/
|
|
35
|
+
export declare function estimateContextTokens(messages: AgentMessage[]): ContextUsageEstimate;
|
|
36
|
+
/**
|
|
37
|
+
* Check if compaction should trigger based on context usage.
|
|
38
|
+
*/
|
|
39
|
+
export declare function shouldCompact(contextTokens: number, contextWindow: number, settings: CompactionSettings): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Estimate token count for a message using chars/4 heuristic.
|
|
42
|
+
* This is conservative (overestimates tokens).
|
|
43
|
+
*/
|
|
44
|
+
export declare function estimateTokens(message: AgentMessage): number;
|
|
45
|
+
/** The user-like message that starts the turn containing the given index, or -1. */
|
|
46
|
+
export declare function findTurnStartIndex(entries: ContextLogEntry[], entryIndex: number, startIndex: number): number;
|
|
47
|
+
export interface CutPointResult {
|
|
48
|
+
/** Index of first entry to keep */
|
|
49
|
+
firstKeptEntryIndex: number;
|
|
50
|
+
/** Index of user message that starts the turn being split, or -1 if not splitting */
|
|
51
|
+
turnStartIndex: number;
|
|
52
|
+
/** Whether this cut splits a turn (cut point is not a user message) */
|
|
53
|
+
isSplitTurn: boolean;
|
|
54
|
+
}
|
|
55
|
+
/** The valid cut point that keeps about `keepRecentTokens` of the entries between `startIndex` and `endIndex`, counted from the newest. */
|
|
56
|
+
export declare function findCutPoint(entries: ContextLogEntry[], startIndex: number, endIndex: number, keepRecentTokens: number): CutPointResult;
|
|
57
|
+
/**
|
|
58
|
+
* Generate a summary of the conversation using the LLM.
|
|
59
|
+
* If previousSummary is provided, uses the update prompt to merge.
|
|
60
|
+
*/
|
|
61
|
+
export declare function generateSummary(currentMessages: AgentMessage[], model: Model<any>, reserveTokens: number, apiKey: string | undefined, headers?: Record<string, string>, signal?: AbortSignal, customInstructions?: string, previousSummary?: string, thinkingLevel?: ThinkingLevel, streamFn?: StreamFn, env?: Record<string, string>): Promise<string>;
|
|
62
|
+
export interface CompactionPreparation {
|
|
63
|
+
/** Id of the first entry to keep */
|
|
64
|
+
firstKeptId: string;
|
|
65
|
+
/** Messages that will be summarized and discarded */
|
|
66
|
+
messagesToSummarize: AgentMessage[];
|
|
67
|
+
/** Messages that will be turned into turn prefix summary (if splitting) */
|
|
68
|
+
turnPrefixMessages: AgentMessage[];
|
|
69
|
+
/** Whether this is a split turn (cut point in middle of turn) */
|
|
70
|
+
isSplitTurn: boolean;
|
|
71
|
+
tokensBefore: number;
|
|
72
|
+
/** Summary from previous compaction, for iterative update */
|
|
73
|
+
previousSummary?: string;
|
|
74
|
+
/** File operations extracted from messagesToSummarize */
|
|
75
|
+
fileOps: FileOperations;
|
|
76
|
+
settings: CompactionSettings;
|
|
77
|
+
}
|
|
78
|
+
/** Prepares a compaction of the whole context log; undefined when there is nothing to summarize. */
|
|
79
|
+
export declare function prepareCompaction(entries: ContextLogEntry[], settings: CompactionSettings): CompactionPreparation | undefined;
|
|
80
|
+
/** Summarizes a prepared compaction; the caller records the result. */
|
|
81
|
+
export declare function compact(preparation: CompactionPreparation, model: Model<any>, apiKey: string | undefined, headers?: Record<string, string>, customInstructions?: string, signal?: AbortSignal, thinkingLevel?: ThinkingLevel, streamFn?: StreamFn, env?: Record<string, string>): Promise<CompactionResult>;
|
|
82
|
+
//# sourceMappingURL=compaction.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for compaction and branch summarization.
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentMessage } from "../../loop/index.ts";
|
|
5
|
+
import type { Message, UserAttachment } from "@ragents/ai";
|
|
6
|
+
export interface FileOperations {
|
|
7
|
+
read: Set<string>;
|
|
8
|
+
written: Set<string>;
|
|
9
|
+
edited: Set<string>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createFileOps(): FileOperations;
|
|
12
|
+
/**
|
|
13
|
+
* Extract file operations from tool calls in an assistant message.
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractFileOpsFromMessage(message: AgentMessage, fileOps: FileOperations): void;
|
|
16
|
+
/**
|
|
17
|
+
* Compute final file lists from file operations.
|
|
18
|
+
* Returns readFiles (files only read, not modified) and modifiedFiles.
|
|
19
|
+
*/
|
|
20
|
+
export declare function computeFileLists(fileOps: FileOperations): {
|
|
21
|
+
readFiles: string[];
|
|
22
|
+
modifiedFiles: string[];
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Format file operations as XML tags for summary.
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatFileOperations(readFiles: string[], modifiedFiles: string[]): string;
|
|
28
|
+
/**
|
|
29
|
+
* Serialize LLM messages to text for summarization.
|
|
30
|
+
* This prevents the model from treating it as a conversation to continue.
|
|
31
|
+
* Call convertToLlm() first to handle custom message types.
|
|
32
|
+
*
|
|
33
|
+
* Tool results are truncated to keep the summarization request within
|
|
34
|
+
* reasonable token budgets. Full content is not needed for summarization.
|
|
35
|
+
*/
|
|
36
|
+
export declare function serializeConversation(messages: Message[]): string;
|
|
37
|
+
export declare function collectUserAttachments(messages: Message[]): UserAttachment[];
|
|
38
|
+
export declare const SUMMARIZATION_SYSTEM_PROMPT = "You are a context summarization assistant. Your task is to read a conversation between a user and an AI assistant, then produce a structured summary following the exact format specified.\n\nDo NOT continue the conversation. Do NOT respond to any questions in the conversation. ONLY output the structured summary.";
|
|
39
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AgentMessage } from "../loop/index.ts";
|
|
2
|
+
/** A compaction replaces every entry before its first kept entry with its summary. */
|
|
3
|
+
export interface ContextCompaction {
|
|
4
|
+
kind: "compaction";
|
|
5
|
+
id: string;
|
|
6
|
+
summary: string;
|
|
7
|
+
firstKeptId: string;
|
|
8
|
+
tokensBefore: number;
|
|
9
|
+
timestamp: number;
|
|
10
|
+
readFiles: string[];
|
|
11
|
+
modifiedFiles: string[];
|
|
12
|
+
}
|
|
13
|
+
/** One entry of an agent's model context in the order the conversation produced it. */
|
|
14
|
+
export type ContextLogEntry = {
|
|
15
|
+
kind: "message";
|
|
16
|
+
id: string;
|
|
17
|
+
message: AgentMessage;
|
|
18
|
+
} | ContextCompaction;
|
|
19
|
+
export declare function latestCompaction(entries: readonly ContextLogEntry[]): ContextCompaction | undefined;
|
|
20
|
+
/** The entries the model sees: the latest compaction, the entries it keeps, and everything after it. */
|
|
21
|
+
export declare function activeContextEntries(entries: readonly ContextLogEntry[]): ContextLogEntry[];
|
|
22
|
+
export declare function contextEntryMessages(entry: ContextLogEntry): AgentMessage[];
|
|
23
|
+
/** The messages of the model context, compaction-aware; the order is the order of the log. */
|
|
24
|
+
export declare function contextMessages(entries: readonly ContextLogEntry[]): AgentMessage[];
|
|
25
|
+
//# sourceMappingURL=context-log.d.ts.map
|