@datalayer/agent-runtimes 1.3.91 → 1.3.93
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/dist-embed/assets/coincident.worker-Dd47v4fq.js +9 -0
- package/dist-embed/assets/comlink.worker-DmOp1QjG.js +9 -0
- package/dist-embed/datalayer-app.css +1 -0
- package/dist-embed/datalayer-app.js +4 -0
- package/dist-embed/lite-service-worker.js +91 -0
- package/lib/{loop → apps}/apps/AppComposer.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppComposer.js +1 -1
- package/lib/{loop → apps}/apps/AppFeedback.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppKept.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppRenderer.d.ts +1 -1
- package/lib/{loop → apps}/apps/AppRenderer.js +2 -2
- package/lib/{loop → apps}/apps/AppRuntimePlugins.js +1 -1
- package/lib/{loop → apps}/apps/agent.js +1 -1
- package/lib/{loop → apps}/apps/appspec.d.ts +1 -1
- package/lib/{loop → apps}/apps/checks.js +1 -1
- package/lib/{loop → apps}/apps/composer.d.ts +1 -1
- package/lib/{loop → apps}/apps/computer.d.ts +1 -1
- package/lib/{loop → apps}/apps/customComponents.js +1 -1
- package/lib/{loop → apps}/apps/feedback.d.ts +1 -1
- package/lib/{loop → apps}/apps/hostTools.d.ts +1 -1
- package/lib/{loop → apps}/apps/index.d.ts +1 -1
- package/lib/{loop → apps}/apps/index.js +1 -1
- package/lib/{loop → apps}/apps/kept.d.ts +1 -1
- package/lib/{loop → apps}/apps/language.d.ts +1 -1
- package/lib/{loop → apps}/apps/pluginPair.d.ts +1 -1
- package/lib/{loop → apps}/apps/records.d.ts +1 -1
- package/lib/{loop → apps}/apps/rules.js +1 -1
- package/lib/{loop → apps}/apps/saved.d.ts +1 -1
- package/lib/{loop → apps}/apps/saved.js +1 -1
- package/lib/{loop → apps}/apps/settingsInputs.d.ts +1 -1
- package/lib/{loop → apps}/apps/settingsInputs.js +1 -1
- package/lib/{loop → apps}/apps/threads.d.ts +1 -1
- package/lib/{loop → apps}/apps/uploads.d.ts +1 -1
- package/lib/{loop → apps}/apps/visitorToken.js +1 -1
- package/lib/{loop → apps}/apps/yaml.js +1 -1
- package/lib/{loop → apps}/core/a2uiComponents.js +2 -2
- package/lib/{loop → apps}/core/canvasBlocks.js +2 -2
- package/lib/{loop → apps}/core/focusRequests.js +1 -1
- package/lib/{loop → apps}/core/index.js +1 -1
- package/lib/{loop → apps}/core/promptStore.js +1 -1
- package/lib/{loop → apps}/core/surfaceRequests.d.ts +1 -1
- package/lib/{loop → apps}/core/toolbar.js +1 -1
- package/lib/{loop → apps}/embed/AppEmbed.js +1 -1
- package/lib/{loop → apps}/embed/LoopEmbed.d.ts +1 -1
- package/lib/{loop → apps}/embed/LoopEmbed.js +1 -1
- package/lib/{loop → apps}/embed/datalayer-app.js +1 -1
- package/lib/{loop → apps}/embed/element.js +1 -1
- package/lib/{loop → apps}/embed/embedConfig.d.ts +1 -1
- package/lib/{loop → apps}/embed/embedSession.d.ts +1 -1
- package/lib/{loop → apps}/embed/hostBridge.d.ts +1 -1
- package/lib/{loop → apps}/extensions.js +1 -1
- package/lib/{loop → apps}/index.d.ts +1 -1
- package/lib/{loop → apps}/index.js +1 -1
- package/lib/{loop → apps}/plugins/a2a-sidebar/A2ASidebar.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2a-sidebar/A2ASidebar.js +1 -1
- package/lib/{loop → apps}/plugins/a2a-sidebar/index.js +1 -1
- package/lib/{loop → apps}/plugins/a2ui/A2uiView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2ui/index.js +1 -1
- package/lib/{loop → apps}/plugins/a2ui-scene/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2ui-surface/InlineSurface.d.ts +2 -2
- package/lib/{loop → apps}/plugins/a2ui-surface/SurfaceToolResult.d.ts +1 -1
- package/lib/{loop → apps}/plugins/a2ui-surface/ownComponents.js +1 -1
- package/lib/{loop → apps}/plugins/a2ui-surface/toolResult.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agent-a2a/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-a2ui/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-a2ui-jupyter-output/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-capacity/index.d.ts +2 -2
- package/lib/{loop → apps}/plugins/agent-capacity/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-checkpoints/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-code-sandbox/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-code-sandboxes/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-codemode/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-compaction/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-evals/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-guardrails/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-hooks/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-inference/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-mcp/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-memory/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-monitoring/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-notifications/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-otel/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-outputs/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-parameters/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-skills/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-subagents/index.js +2 -2
- package/lib/{loop → apps}/plugins/agent-tool-approvals/index.js +1 -1
- package/lib/{loop → apps}/plugins/agent-triggers/index.js +1 -1
- package/lib/{loop → apps}/plugins/agents/AgentSummaryPanel.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/AnonymousKeyBadge.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/DatalayerAgentBridge.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/DatalayerAgentMount.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/SandboxSelector.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/SandboxStatusBridge.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/SandboxView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/TeamMemberPicker.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/agentIcons.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/agentIcons.js +1 -1
- package/lib/{loop → apps}/plugins/agents/appLaunch.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/browserService.js +1 -1
- package/lib/{loop → apps}/plugins/agents/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/index.js +1 -1
- package/lib/{loop → apps}/plugins/agents/plugin.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/service.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/service.js +1 -1
- package/lib/{loop → apps}/plugins/agents/specSubagents.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/switchable.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/switchable.js +1 -1
- package/lib/{loop → apps}/plugins/agents/team.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agents/team.js +1 -1
- package/lib/{loop → apps}/plugins/agents/useSandboxService.js +1 -1
- package/lib/{loop → apps}/plugins/agents/useTeamSelection.js +1 -1
- package/lib/{loop → apps}/plugins/agentspecs/AgentspecPicker.d.ts +1 -1
- package/lib/{loop → apps}/plugins/agentspecs/index.js +1 -1
- package/lib/{loop → apps}/plugins/app-activity/AppActivity.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-components/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-components/index.js +1 -1
- package/lib/{loop → apps}/plugins/app-computer/AppComputer.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-computer/AppComputer.js +3 -1
- package/lib/{loop → apps}/plugins/app-elements/AppElements.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-elements/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-elements/index.js +1 -1
- package/lib/{loop → apps}/plugins/app-page/AppPage.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/appPageModel.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/pageRun.d.ts +1 -1
- package/lib/{loop → apps}/plugins/app-page/pageRun.js +1 -1
- package/lib/{loop → apps}/plugins/app-rules/AppRulesCard.d.ts +1 -1
- package/lib/{loop → apps}/plugins/assistant/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/assistant-characters/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/assistant-characters/index.js +1 -1
- package/lib/{loop → apps}/plugins/canvas-blocks/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/canvas-blocks/index.js +1 -1
- package/lib/{loop → apps}/plugins/chat/ChatView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/chat/chatViewTools.js +1 -1
- package/lib/{loop → apps}/plugins/chat/index.js +1 -1
- package/lib/{loop → apps}/plugins/chat/turnState.d.ts +1 -1
- package/lib/{loop → apps}/plugins/chat/turnState.js +1 -1
- package/lib/{loop → apps}/plugins/chat-extras/index.js +1 -1
- package/lib/{loop → apps}/plugins/chat-header/HeaderView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/chat-view/index.js +1 -1
- package/lib/{loop → apps}/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +1 -1
- package/lib/{loop → apps}/plugins/checkpoints-sidebar/CheckpointsSidebar.js +1 -1
- package/lib/{loop → apps}/plugins/checkpoints-sidebar/index.js +1 -1
- package/lib/{loop → apps}/plugins/commands/index.js +1 -1
- package/lib/{loop → apps}/plugins/decks/index.js +1 -1
- package/lib/{loop → apps}/plugins/decks/surface.d.ts +1 -1
- package/lib/{loop → apps}/plugins/decks/surface.js +1 -1
- package/lib/{loop → apps}/plugins/document/DocumentView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document/index.js +1 -1
- package/lib/{loop → apps}/plugins/document/openingDocument.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/SandboxStatusItem.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/index.js +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/names.d.ts +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/names.js +1 -1
- package/lib/{loop → apps}/plugins/document-toolbar/plugin.js +1 -1
- package/lib/{loop → apps}/plugins/document-view/index.js +1 -1
- package/lib/{loop → apps}/plugins/graph/GraphToggle.d.ts +1 -1
- package/lib/{loop → apps}/plugins/graph/GraphView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/graph/index.js +1 -1
- package/lib/{loop → apps}/plugins/graph/viewType.d.ts +1 -1
- package/lib/{loop → apps}/plugins/graph/viewType.js +1 -1
- package/lib/{loop → apps}/plugins/input-prompt/ComposerView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/models/index.js +1 -1
- package/lib/{loop → apps}/plugins/notebook/NotebookView.d.ts +1 -1
- package/lib/{loop → apps}/plugins/notebook/index.js +1 -1
- package/lib/{loop → apps}/plugins/notebook/openingNotebook.d.ts +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/index.js +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/names.d.ts +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/names.js +1 -1
- package/lib/{loop → apps}/plugins/notebook-toolbar/plugin.js +1 -1
- package/lib/{loop → apps}/plugins/notebook-view/index.js +1 -1
- package/lib/{loop → apps}/plugins/page-layout/SplitLayout.d.ts +1 -1
- package/lib/{loop → apps}/plugins/page-layout/SplitLayout.js +1 -1
- package/lib/{loop → apps}/plugins/page-layout/TurnPanel.d.ts +1 -1
- package/lib/{loop → apps}/plugins/page-layout/TurnPanel.js +2 -1
- package/lib/{loop → apps}/plugins/plugins-panel/index.js +1 -1
- package/lib/{loop → apps}/plugins/prompt/NewChatAction.d.ts +1 -1
- package/lib/{loop → apps}/plugins/prompt/index.js +1 -1
- package/lib/{loop → apps}/plugins/shell/editorChoice.d.ts +1 -1
- package/lib/{loop → apps}/plugins/shell/editorChoice.js +1 -1
- package/lib/{loop → apps}/plugins/shell/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/shell/useEditorPreviews.d.ts +1 -1
- package/lib/{loop → apps}/plugins/subagent-activity/SubagentPulse.d.ts +1 -1
- package/lib/{loop → apps}/plugins/subagent-activity/index.js +1 -1
- package/lib/{loop → apps}/plugins/view-switch/index.d.ts +1 -1
- package/lib/{loop → apps}/plugins/window-frame/WindowFrame.d.ts +1 -1
- package/lib/{loop → apps}/plugins/window-frame/index.js +1 -1
- package/lib/{loop → apps}/plugins/window-frame/slots.d.ts +1 -1
- package/lib/{loop → apps}/plugins/window-frame/slots.js +1 -1
- package/lib/{loop → apps}/presets.d.ts +1 -1
- package/lib/{loop → apps}/presets.js +1 -1
- package/lib/{loop → apps}/shell/LoopWorkspace.d.ts +1 -1
- package/lib/{loop → apps}/shell/PluginToggles.d.ts +1 -1
- package/lib/{loop → apps}/shell/SidebarRail.d.ts +1 -1
- package/lib/{loop → apps}/shell/ViewSwitcher.d.ts +1 -1
- package/lib/{loop → apps}/shell/WorkspaceFullScreenAction.d.ts +1 -1
- package/lib/{loop → apps}/shell/index.d.ts +1 -1
- package/lib/{loop → apps}/shell/index.js +1 -1
- package/lib/{loop → apps}/shell/paneMotion.d.ts +1 -1
- package/lib/{loop → apps}/shell/paneMotion.js +1 -1
- package/lib/{loop → apps}/shell/useWorkspaceFullScreen.d.ts +1 -1
- package/lib/chat/ChatLanguage.js +1 -1
- package/lib/chat/messages/ChatMarkdown.js +2 -1
- package/lib/chat/messages/markdownWithoutHtml.d.ts +34 -0
- package/lib/chat/messages/markdownWithoutHtml.js +53 -0
- package/lib/chat/parts/ReasoningPart.js +2 -1
- package/lib/chat/parts/TextPart.js +2 -1
- package/lib/chat/words.js +2 -2
- package/lib/components/a2ui/custom/index.js +1 -3
- package/lib/components/a2ui/datalayer/FileUpload.js +1 -1
- package/lib/components/cards/NotificationEventCard.js +2 -1
- package/lib/components/cards/OutputCard.js +2 -1
- package/lib/components/teams/AnswerSurfaces.js +1 -1
- package/lib/components/teams/AnswerSurfacesView.js +2 -2
- package/lib/components/teams/TeamNotebookView.d.ts +1 -1
- package/lib/components/teams/TeamNotebookView.js +1 -1
- package/lib/components/teams/sceneTranscript.d.ts +1 -1
- package/lib/examples/A2UiAgentExample.js +3 -3
- package/lib/examples/A2UiComponentsGalleryExample.js +2 -2
- package/lib/examples/A2UiContactCardExample.js +2 -2
- package/lib/examples/A2UiJupyterOutputExample.js +3 -3
- package/lib/examples/A2UiRestaurantExample.js +2 -2
- package/lib/examples/A2UiViewerExample.js +2 -2
- package/lib/examples/AgentA2AExample.js +3 -3
- package/lib/examples/AgentCheckpointsExample.js +3 -3
- package/lib/examples/AgentCodeSandboxExample.js +2 -2
- package/lib/examples/AgentCodeSandboxesExample.js +2 -2
- package/lib/examples/AgentCodemodeExample.js +3 -3
- package/lib/examples/AgentCompactionExample.js +2 -2
- package/lib/examples/AgentDecideExample.js +3 -3
- package/lib/examples/AgentEvalsExample.js +2 -2
- package/lib/examples/AgentGuardrailsExample.js +3 -3
- package/lib/examples/AgentHooksExample.js +2 -2
- package/lib/examples/AgentInferenceProviderExample.js +2 -2
- package/lib/examples/AgentMCPExample.js +3 -3
- package/lib/examples/AgentMemoryExample.js +2 -2
- package/lib/examples/AgentMonitoringExample.js +3 -3
- package/lib/examples/AgentNotificationsExample.js +2 -2
- package/lib/examples/AgentOtelExample.js +2 -2
- package/lib/examples/AgentOutputsExample.js +2 -2
- package/lib/examples/AgentParametersExample.js +2 -2
- package/lib/examples/AgentSkillsExample.js +2 -2
- package/lib/examples/AgentSubagentsExample.js +2 -2
- package/lib/examples/AgentToolApprovalsExample.js +2 -2
- package/lib/examples/AgentTriggersExample.js +2 -2
- package/lib/examples/AssistantExample.js +1 -1
- package/lib/examples/DecksAgent.js +2 -2
- package/lib/examples/DocumentPageAgent.js +1 -1
- package/lib/examples/LoopAppComputerExample.js +1 -1
- package/lib/examples/LoopShellExample.js +3 -3
- package/lib/examples/LoopWorkspaceExample.d.ts +1 -1
- package/lib/examples/LoopWorkspaceExample.js +5 -5
- package/lib/examples/NotebookPageAgent.js +1 -1
- package/lib/examples/utils/AssistantGalleryGrid.js +1 -1
- package/lib/examples/utils/owlCharacterPlugin.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/loop-example-main.js +1 -1
- package/lib/loop-main.js +9 -9
- package/lib/stories/loop/ReferenceScreens.js +1 -1
- package/lib/ui-plugins/MCPUIPlugin.d.ts +14 -0
- package/lib/ui-plugins/MCPUIPlugin.js +17 -48
- package/lib/ui-plugins/index.d.ts +1 -1
- package/lib/ui-plugins/index.js +1 -1
- package/package.json +3 -2
- /package/lib/{loop → apps}/apps/AppFeedback.js +0 -0
- /package/lib/{loop → apps}/apps/AppKept.js +0 -0
- /package/lib/{loop → apps}/apps/AppRuntimePlugins.d.ts +0 -0
- /package/lib/{loop → apps}/apps/agent.d.ts +0 -0
- /package/lib/{loop → apps}/apps/appspec.js +0 -0
- /package/lib/{loop → apps}/apps/checks.d.ts +0 -0
- /package/lib/{loop → apps}/apps/composer.js +0 -0
- /package/lib/{loop → apps}/apps/computer.js +0 -0
- /package/lib/{loop → apps}/apps/customComponents.d.ts +0 -0
- /package/lib/{loop → apps}/apps/feedback.js +0 -0
- /package/lib/{loop → apps}/apps/hostTools.js +0 -0
- /package/lib/{loop → apps}/apps/kept.js +0 -0
- /package/lib/{loop → apps}/apps/language.js +0 -0
- /package/lib/{loop → apps}/apps/pluginPair.js +0 -0
- /package/lib/{loop → apps}/apps/records.js +0 -0
- /package/lib/{loop → apps}/apps/rules.d.ts +0 -0
- /package/lib/{loop → apps}/apps/threads.js +0 -0
- /package/lib/{loop → apps}/apps/uploads.js +0 -0
- /package/lib/{loop → apps}/apps/visitorToken.d.ts +0 -0
- /package/lib/{loop → apps}/apps/yaml.d.ts +0 -0
- /package/lib/{loop → apps}/core/a2uiComponents.d.ts +0 -0
- /package/lib/{loop → apps}/core/canvasBlocks.d.ts +0 -0
- /package/lib/{loop → apps}/core/focusRequests.d.ts +0 -0
- /package/lib/{loop → apps}/core/index.d.ts +0 -0
- /package/lib/{loop → apps}/core/promptStore.d.ts +0 -0
- /package/lib/{loop → apps}/core/surfaceRequests.js +0 -0
- /package/lib/{loop → apps}/core/toolbar.d.ts +0 -0
- /package/lib/{loop → apps}/embed/AppEmbed.d.ts +0 -0
- /package/lib/{loop → apps}/embed/datalayer-app.d.ts +0 -0
- /package/lib/{loop → apps}/embed/element.d.ts +0 -0
- /package/lib/{loop → apps}/embed/embedConfig.js +0 -0
- /package/lib/{loop → apps}/embed/embedSession.js +0 -0
- /package/lib/{loop → apps}/embed/embedTheme.d.ts +0 -0
- /package/lib/{loop → apps}/embed/embedTheme.js +0 -0
- /package/lib/{loop → apps}/embed/hostBridge.js +0 -0
- /package/lib/{loop → apps}/extensions.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2a-sidebar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui/A2uiView.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-scene/index.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/InlineSurface.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/SurfaceToolResult.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/index.js +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/ownComponents.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/a2ui-surface/toolResult.js +0 -0
- /package/lib/{loop → apps}/plugins/agent-a2a/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-a2ui/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-a2ui-jupyter-output/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-checkpoints/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-code-sandbox/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-code-sandboxes/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-codemode/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-compaction/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-evals/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-guardrails/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-hooks/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-inference/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-mcp/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-memory/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-monitoring/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-notifications/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-otel/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-outputs/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-parameters/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-skills/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-subagents/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-tool-approvals/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agent-triggers/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agents/AgentSummaryPanel.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/AnonymousKeyBadge.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/DatalayerAgentBridge.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/DatalayerAgentMount.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/SandboxSelector.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/SandboxStatusBridge.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/SandboxView.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/TeamMemberPicker.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/appLaunch.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/browserService.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agents/plugin.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/specSubagents.js +0 -0
- /package/lib/{loop → apps}/plugins/agents/useSandboxService.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agents/useTeamSelection.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/agentspecs/AgentspecPicker.js +0 -0
- /package/lib/{loop → apps}/plugins/agentspecs/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-activity/AppActivity.js +0 -0
- /package/lib/{loop → apps}/plugins/app-activity/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-activity/index.js +0 -0
- /package/lib/{loop → apps}/plugins/app-computer/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-computer/index.js +0 -0
- /package/lib/{loop → apps}/plugins/app-elements/AppElements.js +0 -0
- /package/lib/{loop → apps}/plugins/app-page/AppPage.js +0 -0
- /package/lib/{loop → apps}/plugins/app-page/appPageModel.js +0 -0
- /package/lib/{loop → apps}/plugins/app-page/index.js +0 -0
- /package/lib/{loop → apps}/plugins/app-rules/AppRulesCard.js +0 -0
- /package/lib/{loop → apps}/plugins/app-rules/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/app-rules/index.js +0 -0
- /package/lib/{loop → apps}/plugins/assistant/index.js +0 -0
- /package/lib/{loop → apps}/plugins/chat/ChatView.js +0 -0
- /package/lib/{loop → apps}/plugins/chat/chatViewTools.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat-extras/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat-header/HeaderView.js +0 -0
- /package/lib/{loop → apps}/plugins/chat-header/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/chat-header/index.js +0 -0
- /package/lib/{loop → apps}/plugins/chat-view/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/checkpoints-sidebar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/commands/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/decks/DeckSurface.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/decks/DeckSurface.js +0 -0
- /package/lib/{loop → apps}/plugins/decks/DecksMenu.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/decks/DecksMenu.js +0 -0
- /package/lib/{loop → apps}/plugins/decks/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document/DocumentView.js +0 -0
- /package/lib/{loop → apps}/plugins/document/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document/openingDocument.js +0 -0
- /package/lib/{loop → apps}/plugins/document-toolbar/SandboxStatusItem.js +0 -0
- /package/lib/{loop → apps}/plugins/document-toolbar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document-toolbar/plugin.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/document-view/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/graph/GraphToggle.js +0 -0
- /package/lib/{loop → apps}/plugins/graph/GraphView.js +0 -0
- /package/lib/{loop → apps}/plugins/graph/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/input-prompt/ComposerView.js +0 -0
- /package/lib/{loop → apps}/plugins/input-prompt/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/input-prompt/index.js +0 -0
- /package/lib/{loop → apps}/plugins/models/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook/NotebookView.js +0 -0
- /package/lib/{loop → apps}/plugins/notebook/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook/openingNotebook.js +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/items.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/items.js +0 -0
- /package/lib/{loop → apps}/plugins/notebook-toolbar/plugin.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/notebook-view/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/page-layout/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/page-layout/index.js +0 -0
- /package/lib/{loop → apps}/plugins/plugins-panel/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/prompt/NewChatAction.js +0 -0
- /package/lib/{loop → apps}/plugins/prompt/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/shell/index.js +0 -0
- /package/lib/{loop → apps}/plugins/shell/useEditorPreviews.js +0 -0
- /package/lib/{loop → apps}/plugins/subagent-activity/SubagentPulse.js +0 -0
- /package/lib/{loop → apps}/plugins/subagent-activity/index.d.ts +0 -0
- /package/lib/{loop → apps}/plugins/view-switch/index.js +0 -0
- /package/lib/{loop → apps}/plugins/window-frame/WindowFrame.js +0 -0
- /package/lib/{loop → apps}/plugins/window-frame/index.d.ts +0 -0
- /package/lib/{loop → apps}/shell/LoopWorkspace.js +0 -0
- /package/lib/{loop → apps}/shell/PluginToggles.js +0 -0
- /package/lib/{loop → apps}/shell/SidebarRail.js +0 -0
- /package/lib/{loop → apps}/shell/ViewSwitcher.js +0 -0
- /package/lib/{loop → apps}/shell/WorkspaceFullScreenAction.js +0 -0
- /package/lib/{loop → apps}/shell/useWorkspaceFullScreen.js +0 -0
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* only while a notebook is actually contributed, and requires the
|
|
10
10
|
* input-prompt plugin, whose footer the icon sits in.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module apps/plugins/notebook-view
|
|
13
13
|
*/
|
|
14
14
|
// The same icon the notebook's own editor view declares, so the footer
|
|
15
15
|
// button and the selector entry read as one thing.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* leaves the conversation is kept while the workspace is mounted. The page
|
|
14
14
|
* opens at the theme's pace (T-10, `paneOpening`).
|
|
15
15
|
*
|
|
16
|
-
* @module
|
|
16
|
+
* @module apps/plugins/page-layout/SplitLayout
|
|
17
17
|
*/
|
|
18
18
|
import type { JSX } from 'react';
|
|
19
19
|
import type { ChatLayoutParts } from '../../core';
|
|
@@ -87,7 +87,7 @@ export function SplitLayout({ editors, hasEditor, transcript, prompt, chips, pic
|
|
|
87
87
|
'&:hover::before, &:focus-visible::before': {
|
|
88
88
|
width: '3px',
|
|
89
89
|
bg: 'accent.emphasis',
|
|
90
|
-
}
|
|
90
|
+
},
|
|
91
91
|
} })) : null, _jsx(Box, { "data-testid": "loop-split-page", sx: hasEditor
|
|
92
92
|
? {
|
|
93
93
|
flex: '1 1 0',
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* the panel is not is a second transcript: one turn, compact, and the whole
|
|
16
16
|
* conversation one click away.
|
|
17
17
|
*
|
|
18
|
-
* @module
|
|
18
|
+
* @module apps/plugins/page-layout/TurnPanel
|
|
19
19
|
*/
|
|
20
20
|
import type { JSX } from 'react';
|
|
21
21
|
export type TurnPanelFooter = 'full' | 'actions' | 'none';
|
|
@@ -8,6 +8,7 @@ import { signal } from '@datalayer/reactor';
|
|
|
8
8
|
import { TurnFooter } from '../../../chat/messages/TurnFooter';
|
|
9
9
|
import { LoopChatTurn } from '../../core';
|
|
10
10
|
import { Streamdown } from 'streamdown';
|
|
11
|
+
import { REHYPE_PLUGINS_WITHOUT_HTML } from '../../../chat/messages/markdownWithoutHtml';
|
|
11
12
|
import { streamdownMarkdownStyles } from '../../../chat/styles/streamdownStyles';
|
|
12
13
|
import { normalizeAssistantMarkdown } from '../../../chat/messages/assistantMarkdown';
|
|
13
14
|
import { openPagePanel, pageLayoutSheet, } from '@datalayer/primer-addons/lib/reactor';
|
|
@@ -89,7 +90,7 @@ export function TurnPanel({ footer = 'full', }) {
|
|
|
89
90
|
}, children: turn.user }) }), _jsxs(Box, { display: "flex", gap: 2, alignItems: "flex-start", children: [_jsx(Box, { ref: replyRef, flex: "1 1 auto", minWidth: 0, maxHeight: MAX_HEIGHT, overflowY: "auto", fontSize: 0, lineHeight: 1.5, color: turn.assistant ? 'fg.default' : 'fg.muted',
|
|
90
91
|
// Rendered markdown brings its own flow; the plain fallbacks
|
|
91
92
|
// below keep their line breaks.
|
|
92
|
-
whiteSpace: turn.assistant ? 'normal' : 'pre-wrap', overflowWrap: "anywhere", children: turn.assistant ? (_jsx(Box, { sx: { ...streamdownMarkdownStyles, fontSize: 0 }, children: _jsx(Streamdown, { children: normalizeAssistantMarkdown(turn.assistant) }) })) : turn.activity ? (_jsx(Text, { sx: { color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : working ? (_jsx(Thinking, {})) : turn.status === 'error' ? ('The agent could not answer.') : ('Done — the result is in the page.') }), _jsx(IconButton, { icon: CommentDiscussionIcon, size: "small", variant: "invisible", "aria-label": "Open the conversation", onClick: openPagePanel, sx: { color: 'fg.muted', flexShrink: 0 } })] }), turn.assistant && turn.activity ? (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : null, footer === 'full' ? (
|
|
93
|
+
whiteSpace: turn.assistant ? 'normal' : 'pre-wrap', overflowWrap: "anywhere", children: turn.assistant ? (_jsx(Box, { sx: { ...streamdownMarkdownStyles, fontSize: 0 }, children: _jsx(Streamdown, { rehypePlugins: REHYPE_PLUGINS_WITHOUT_HTML, children: normalizeAssistantMarkdown(turn.assistant) }) })) : turn.activity ? (_jsx(Text, { sx: { color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : working ? (_jsx(Thinking, {})) : turn.status === 'error' ? ('The agent could not answer.') : ('Done — the result is in the page.') }), _jsx(IconButton, { icon: CommentDiscussionIcon, size: "small", variant: "invisible", "aria-label": "Open the conversation", onClick: openPagePanel, sx: { color: 'fg.muted', flexShrink: 0 } })] }), turn.assistant && turn.activity ? (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted', fontStyle: 'italic' }, children: turn.activity })) : null, footer === 'full' ? (
|
|
93
94
|
// The same footer the transcript draws under a turn: the window's
|
|
94
95
|
// fill, this turn's tokens in and out, copy, and dismiss.
|
|
95
96
|
_jsx(TurnFooter, { usage: turn.usage, live: working, latest: true, padding: 0, onCopy: copyTurn, onRemove: () => setDismissedId(turn.id) })) : footer === 'actions' ? (
|
|
@@ -21,7 +21,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
21
21
|
* plugin contributes it to the manager's action slot now, so it appears and
|
|
22
22
|
* disappears with the thing it opens.
|
|
23
23
|
*
|
|
24
|
-
* @module
|
|
24
|
+
* @module apps/plugins/plugins-panel
|
|
25
25
|
*/
|
|
26
26
|
import { definePlugin } from '@datalayer/reactor';
|
|
27
27
|
import { GraphPlugin } from '@datalayer/reactor-graph';
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* button and the slash command cannot drift: one intent, one path, and the
|
|
10
10
|
* command's own error shows when no conversation is on screen.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module apps/plugins/prompt/NewChatAction
|
|
13
13
|
*/
|
|
14
14
|
import type { JSX } from 'react';
|
|
15
15
|
import type { LoopWorkspaceContext } from '../../core';
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* `loopPlugins({ floatingPrompt: true })` mounts this plugin and asks the
|
|
21
21
|
* chat for the floating placement together.
|
|
22
22
|
*
|
|
23
|
-
* @module
|
|
23
|
+
* @module apps/plugins/prompt
|
|
24
24
|
*/
|
|
25
25
|
import { contribution, definePlugin } from '@datalayer/reactor';
|
|
26
26
|
import { LoopCommand, LoopSlots, focusPrompt } from '../../core';
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* whether the choice came from the selector, `/editor`, or the generic
|
|
15
15
|
* cycle command.
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module apps/plugins/shell/editorChoice
|
|
18
18
|
*/
|
|
19
19
|
import { chooseView, nextView, seedViewChoice, setViewOptions, subscribeViewChoice } from '@datalayer/reactor-shell';
|
|
20
20
|
/** The choice that means "just the conversation". */
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* whether the choice came from the selector, `/editor`, or the generic
|
|
19
19
|
* cycle command.
|
|
20
20
|
*
|
|
21
|
-
* @module
|
|
21
|
+
* @module apps/plugins/shell/editorChoice
|
|
22
22
|
*/
|
|
23
23
|
import { NONE_VIEW, chooseView, getViewChoice, nextView, seedViewChoice, setViewAnnouncer, setViewOptions, subscribeViewChoice, } from '@datalayer/reactor-shell';
|
|
24
24
|
import { requestSurface } from '../../core/surfaceRequests';
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* through the same channel `/notebook` and `/document` use;
|
|
14
14
|
* - it keeps the `/editor` slash command, in the loop's own registry.
|
|
15
15
|
*
|
|
16
|
-
* @module
|
|
16
|
+
* @module apps/plugins/shell
|
|
17
17
|
*/
|
|
18
18
|
import type { JSX } from 'react';
|
|
19
19
|
export declare const SHELL_PLUGIN_NAME = "@datalayer/loop-plugin-shell";
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* document — this file must not be the import that drags lexical into every
|
|
16
16
|
* bundle.
|
|
17
17
|
*
|
|
18
|
-
* @module
|
|
18
|
+
* @module apps/plugins/shell/useEditorPreviews
|
|
19
19
|
*/
|
|
20
20
|
import type { ReactNode } from 'react';
|
|
21
21
|
export type EditorPreview = {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* name is a team member's, and the generic agent mark otherwise; the tooltip
|
|
9
9
|
* says who it is.
|
|
10
10
|
*
|
|
11
|
-
* @module
|
|
11
|
+
* @module apps/plugins/subagent-activity/SubagentPulse
|
|
12
12
|
*/
|
|
13
13
|
import type { JSX } from 'react';
|
|
14
14
|
export declare const PULSE_ANIMATION = "loop-subagent-pulse";
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* was a pause: the parent went quiet, and whether anything was happening
|
|
12
12
|
* showed only in a side panel a host may not draw.
|
|
13
13
|
*
|
|
14
|
-
* @module
|
|
14
|
+
* @module apps/plugins/subagent-activity
|
|
15
15
|
*/
|
|
16
16
|
import { definePlugin } from '@datalayer/reactor';
|
|
17
17
|
import { LoopSlots } from '../../core';
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* not on offer (no notebook plugin, no notebook button). The chat's icon is
|
|
15
15
|
* always there — the conversation is the view that remains.
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module apps/plugins/view-switch
|
|
18
18
|
*/
|
|
19
19
|
import type { ComponentType, JSX } from 'react';
|
|
20
20
|
export type ViewPluginOptions = {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* than passed down: a plugin adds a control without the frame knowing what it
|
|
15
15
|
* is, and without the host that mounted the frame having to forward it.
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module apps/plugins/window-frame/WindowFrame
|
|
18
18
|
*/
|
|
19
19
|
import type { ReactNode } from 'react';
|
|
20
20
|
export type WindowFrameProps = {
|
|
@@ -29,7 +29,7 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
|
29
29
|
* </WindowFrame>
|
|
30
30
|
* ```
|
|
31
31
|
*
|
|
32
|
-
* @module
|
|
32
|
+
* @module apps/plugins/window-frame
|
|
33
33
|
*/
|
|
34
34
|
import { definePlugin } from '@datalayer/reactor';
|
|
35
35
|
import { Box } from '@datalayer/primer-addons';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* them can each import the names without importing each other — the same
|
|
6
6
|
* reason the graph plugin keeps its view type apart.
|
|
7
7
|
*
|
|
8
|
-
* @module
|
|
8
|
+
* @module apps/plugins/window-frame/slots
|
|
9
9
|
*/
|
|
10
10
|
/**
|
|
11
11
|
* The leading edge of the title bar.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* them can each import the names without importing each other — the same
|
|
10
10
|
* reason the graph plugin keeps its view type apart.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module apps/plugins/window-frame/slots
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
15
|
* The leading edge of the title bar.
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* <LoopWorkspace reactor={reactor} serverUrl={serverUrl} agentId={agentId} />
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
|
-
* @module
|
|
20
|
+
* @module apps/presets
|
|
21
21
|
*/
|
|
22
22
|
import { type PluginRef } from '@datalayer/reactor';
|
|
23
23
|
import { type AgentsConfig, type SandboxTarget } from './plugins/agents';
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* <LoopWorkspace reactor={reactor} serverUrl={serverUrl} agentId={agentId} />
|
|
22
22
|
* ```
|
|
23
23
|
*
|
|
24
|
-
* @module
|
|
24
|
+
* @module apps/presets
|
|
25
25
|
*/
|
|
26
26
|
import { configurePlugin } from '@datalayer/reactor';
|
|
27
27
|
import { ThemePlugin } from '@datalayer/primer-addons/lib/reactor';
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* the same component run as a page, inside the Datalayer app, and later inside
|
|
18
18
|
* a JupyterLab panel.
|
|
19
19
|
*
|
|
20
|
-
* @module
|
|
20
|
+
* @module apps/shell/LoopWorkspace
|
|
21
21
|
*/
|
|
22
22
|
import type { JSX } from 'react';
|
|
23
23
|
import type { ReactNode } from 'react';
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Not part of the workspace itself — the workspace has one navigation element
|
|
10
10
|
* and no settings tree (§3.5). This belongs to the examples that demonstrate it.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module apps/shell/PluginToggles
|
|
13
13
|
*/
|
|
14
14
|
import type { JSX } from 'react';
|
|
15
15
|
export type PluginTogglesProps = {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* under a generic icon. Every panel stays mounted while another is shown,
|
|
15
15
|
* so a feed keeps its place and a live computer its connection.
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module apps/shell/SidebarRail
|
|
18
18
|
*/
|
|
19
19
|
import type { ElementType, JSX } from 'react';
|
|
20
20
|
import type { ReactorSlotComponent } from '@datalayer/reactor/react';
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* is the whole difference from `EphemeralSurfaceControl`: a fifth view costs a
|
|
6
6
|
* plugin, not an edit to a union type.
|
|
7
7
|
*
|
|
8
|
-
* @module
|
|
8
|
+
* @module apps/shell/ViewSwitcher
|
|
9
9
|
*/
|
|
10
10
|
import type { JSX } from 'react';
|
|
11
11
|
import type { Contribution } from '@datalayer/reactor';
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* first answer arrives because that is where the reader is looking; a header
|
|
19
19
|
* icon that pulsed would be chrome asking for attention it has not earned.
|
|
20
20
|
*
|
|
21
|
-
* @module
|
|
21
|
+
* @module apps/shell/WorkspaceFullScreenAction
|
|
22
22
|
*/
|
|
23
23
|
import type { JSX } from 'react';
|
|
24
24
|
export declare function WorkspaceFullScreenAction(): JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The workspace shell: a prompt at the bottom, one view above it.
|
|
3
3
|
*
|
|
4
|
-
* @module
|
|
4
|
+
* @module apps/shell
|
|
5
5
|
*/
|
|
6
6
|
export { LoopWorkspace, buildLoopReactor, type LoopWorkspaceProps, } from './LoopWorkspace';
|
|
7
7
|
export { ViewSwitcher, type ViewSwitcherProps } from './ViewSwitcher';
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `loop`) gives `0ms`, and nothing moves; nor does anything when the person
|
|
8
8
|
* asked for reduced motion.
|
|
9
9
|
*
|
|
10
|
-
* @module
|
|
10
|
+
* @module apps/shell/paneMotion
|
|
11
11
|
*/
|
|
12
12
|
/** The keyframes' name for a pane opening from a side: one per side. */
|
|
13
13
|
export declare const paneOpenKeyframes: (from: "left" | "right") => string;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* `loop`) gives `0ms`, and nothing moves; nor does anything when the person
|
|
12
12
|
* asked for reduced motion.
|
|
13
13
|
*
|
|
14
|
-
* @module
|
|
14
|
+
* @module apps/shell/paneMotion
|
|
15
15
|
*/
|
|
16
16
|
/** The keyframes' name for a pane opening from a side: one per side. */
|
|
17
17
|
export const paneOpenKeyframes = (from) => from === 'left' ? 'loopPaneOpenLeft' : 'loopPaneOpenRight';
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* the two is in play (`usingApi`); painting the overlay stays with the caller,
|
|
20
20
|
* which is the one that knows what it looks like.
|
|
21
21
|
*
|
|
22
|
-
* @module
|
|
22
|
+
* @module apps/shell/useWorkspaceFullScreen
|
|
23
23
|
*/
|
|
24
24
|
import type { RefObject } from 'react';
|
|
25
25
|
export type WorkspaceFullScreen = {
|
package/lib/chat/ChatLanguage.js
CHANGED
|
@@ -10,7 +10,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
10
10
|
* @module chat/ChatLanguage
|
|
11
11
|
*/
|
|
12
12
|
import { createContext, useContext, useMemo, } from 'react';
|
|
13
|
-
import { preferredLanguages } from '../
|
|
13
|
+
import { preferredLanguages } from '../apps/apps/language';
|
|
14
14
|
import { CHAT_WORDS, chatLanguage } from './words';
|
|
15
15
|
/** The language the host says, as BCP 47 tags it; unsaid, the browser's. */
|
|
16
16
|
const ChatLanguageContext = createContext(undefined);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box } from '@datalayer/primer-addons';
|
|
3
3
|
import { Streamdown } from 'streamdown';
|
|
4
|
+
import { REHYPE_PLUGINS_WITHOUT_HTML } from './markdownWithoutHtml';
|
|
4
5
|
import { streamdownMarkdownStyles } from '../styles/streamdownStyles';
|
|
5
6
|
import { normalizeAssistantMarkdown } from './assistantMarkdown';
|
|
6
7
|
export function ChatMarkdown({ text, density = 'comfortable', }) {
|
|
@@ -13,6 +14,6 @@ export function ChatMarkdown({ text, density = 'comfortable', }) {
|
|
|
13
14
|
'& p:last-child': { marginBottom: 0 },
|
|
14
15
|
}
|
|
15
16
|
: {}),
|
|
16
|
-
}, children: _jsx(Streamdown, { children: normalizeAssistantMarkdown(text) }) }));
|
|
17
|
+
}, children: _jsx(Streamdown, { rehypePlugins: REHYPE_PLUGINS_WITHOUT_HTML, children: normalizeAssistantMarkdown(text) }) }));
|
|
17
18
|
}
|
|
18
19
|
export default ChatMarkdown;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown without markup (STUDIO D-22): what every renderer of an agent's
|
|
3
|
+
* words hands Streamdown, so that no markup a model or an application writes
|
|
4
|
+
* reaches the page.
|
|
5
|
+
*
|
|
6
|
+
* Streamdown parses the HTML written in markdown (`rehype-raw`) and then
|
|
7
|
+
* sanitizes it; sanitized markup still reaches the page — an application
|
|
8
|
+
* hosted on the platform's origin would draw what its model wrote. Here the
|
|
9
|
+
* HTML is never parsed: each piece of it is shown as the text it is
|
|
10
|
+
* (`<script>…</script>` reads as those characters), and the rest of
|
|
11
|
+
* Streamdown's plugins — maths, sanitizing, hardened links — run as before.
|
|
12
|
+
*
|
|
13
|
+
* @module chat/messages/markdownWithoutHtml
|
|
14
|
+
*/
|
|
15
|
+
import { type StreamdownProps } from 'streamdown';
|
|
16
|
+
type PluggableList = NonNullable<StreamdownProps['rehypePlugins']>;
|
|
17
|
+
/** A node of the HTML tree, as far as this plugin reads it. */
|
|
18
|
+
type HastNode = {
|
|
19
|
+
type: string;
|
|
20
|
+
value?: string;
|
|
21
|
+
children?: HastNode[];
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A rehype plugin: every piece of HTML written in the markdown (`raw` nodes,
|
|
25
|
+
* which `remark-rehype` keeps) becomes the text it is.
|
|
26
|
+
*/
|
|
27
|
+
export declare function rehypeHtmlAsText(): (tree: HastNode) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Streamdown's rehype plugins without `rehype-raw`, the HTML shown as text
|
|
30
|
+
* first: what every Streamdown of the chat, the page layout and the cards is
|
|
31
|
+
* given.
|
|
32
|
+
*/
|
|
33
|
+
export declare const REHYPE_PLUGINS_WITHOUT_HTML: PluggableList;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Markdown without markup (STUDIO D-22): what every renderer of an agent's
|
|
7
|
+
* words hands Streamdown, so that no markup a model or an application writes
|
|
8
|
+
* reaches the page.
|
|
9
|
+
*
|
|
10
|
+
* Streamdown parses the HTML written in markdown (`rehype-raw`) and then
|
|
11
|
+
* sanitizes it; sanitized markup still reaches the page — an application
|
|
12
|
+
* hosted on the platform's origin would draw what its model wrote. Here the
|
|
13
|
+
* HTML is never parsed: each piece of it is shown as the text it is
|
|
14
|
+
* (`<script>…</script>` reads as those characters), and the rest of
|
|
15
|
+
* Streamdown's plugins — maths, sanitizing, hardened links — run as before.
|
|
16
|
+
*
|
|
17
|
+
* @module chat/messages/markdownWithoutHtml
|
|
18
|
+
*/
|
|
19
|
+
import { defaultRehypePlugins } from 'streamdown';
|
|
20
|
+
function htmlAsText(node) {
|
|
21
|
+
if (!node.children) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
node.children = node.children.map(child => {
|
|
25
|
+
if (child.type === 'raw') {
|
|
26
|
+
return { type: 'text', value: child.value ?? '' };
|
|
27
|
+
}
|
|
28
|
+
htmlAsText(child);
|
|
29
|
+
return child;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A rehype plugin: every piece of HTML written in the markdown (`raw` nodes,
|
|
34
|
+
* which `remark-rehype` keeps) becomes the text it is.
|
|
35
|
+
*/
|
|
36
|
+
export function rehypeHtmlAsText() {
|
|
37
|
+
return (tree) => htmlAsText(tree);
|
|
38
|
+
}
|
|
39
|
+
const { raw, ...withoutRaw } = defaultRehypePlugins;
|
|
40
|
+
if (!raw) {
|
|
41
|
+
// Streamdown no longer names its raw-HTML plugin `raw`: what it parses
|
|
42
|
+
// has to be read again before these plugins are trusted.
|
|
43
|
+
throw new Error("Streamdown's rehype plugins have no `raw`: markdownWithoutHtml cannot say what it leaves out.");
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Streamdown's rehype plugins without `rehype-raw`, the HTML shown as text
|
|
47
|
+
* first: what every Streamdown of the chat, the page layout and the cards is
|
|
48
|
+
* given.
|
|
49
|
+
*/
|
|
50
|
+
export const REHYPE_PLUGINS_WITHOUT_HTML = [
|
|
51
|
+
rehypeHtmlAsText,
|
|
52
|
+
...Object.values(withoutRaw),
|
|
53
|
+
];
|
|
@@ -14,6 +14,7 @@ import { Text, Button } from '@primer/react';
|
|
|
14
14
|
import { Box } from '@datalayer/primer-addons';
|
|
15
15
|
import { ChevronDownIcon } from '@primer/octicons-react';
|
|
16
16
|
import { Streamdown } from 'streamdown';
|
|
17
|
+
import { REHYPE_PLUGINS_WITHOUT_HTML } from '../messages/markdownWithoutHtml';
|
|
17
18
|
import { streamdownMarkdownStyles } from '../styles/streamdownStyles';
|
|
18
19
|
/**
|
|
19
20
|
* ReasoningPart component for displaying AI reasoning/thinking.
|
|
@@ -48,6 +49,6 @@ export function ReasoningPart({ text, isStreaming }) {
|
|
|
48
49
|
'&:hover': {
|
|
49
50
|
color: 'fg.default',
|
|
50
51
|
},
|
|
51
|
-
}, children: [_jsx(Text, { sx: { fontSize: 1 }, children: "\uD83E\uDDE0" }), _jsx(Text, { sx: { fontSize: 1, fontWeight: 'normal' }, children: isStreaming ? 'Thinking...' : 'Reasoning' }), _jsx(Box, { as: "span", display: "inline-flex", marginLeft: "auto", transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)', transition: "transform 0.2s", children: _jsx(ChevronDownIcon, {}) })] }), isExpanded && (_jsx(Box, { marginTop: 2, padding: 3, backgroundColor: "canvas.inset", borderRadius: 2, border: "1px solid", borderColor: "border.default", color: "fg.muted", sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: text }) }))] }));
|
|
52
|
+
}, children: [_jsx(Text, { sx: { fontSize: 1 }, children: "\uD83E\uDDE0" }), _jsx(Text, { sx: { fontSize: 1, fontWeight: 'normal' }, children: isStreaming ? 'Thinking...' : 'Reasoning' }), _jsx(Box, { as: "span", display: "inline-flex", marginLeft: "auto", transform: isExpanded ? 'rotate(180deg)' : 'rotate(0deg)', transition: "transform 0.2s", children: _jsx(ChevronDownIcon, {}) })] }), isExpanded && (_jsx(Box, { marginTop: 2, padding: 3, backgroundColor: "canvas.inset", borderRadius: 2, border: "1px solid", borderColor: "border.default", color: "fg.muted", sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { rehypePlugins: REHYPE_PLUGINS_WITHOUT_HTML, children: text }) }))] }));
|
|
52
53
|
}
|
|
53
54
|
export default ReasoningPart;
|
|
@@ -3,6 +3,7 @@ import { Text, IconButton } from '@primer/react';
|
|
|
3
3
|
import { Box } from '@datalayer/primer-addons';
|
|
4
4
|
import { CopyIcon, SyncIcon } from '@primer/octicons-react';
|
|
5
5
|
import { Streamdown } from 'streamdown';
|
|
6
|
+
import { REHYPE_PLUGINS_WITHOUT_HTML } from '../messages/markdownWithoutHtml';
|
|
6
7
|
import { streamdownMarkdownStyles } from '../styles/streamdownStyles';
|
|
7
8
|
/**
|
|
8
9
|
* TextPart component for rendering text content with markdown support.
|
|
@@ -24,6 +25,6 @@ export function TextPart({ text, message, isLastPart, onRegenerate, }) {
|
|
|
24
25
|
fontSize: 1,
|
|
25
26
|
color: 'fg.muted',
|
|
26
27
|
textTransform: 'uppercase',
|
|
27
|
-
}, children: message.role === 'user' ? 'You' : 'Assistant' }), message.role === 'assistant' && isLastPart && (_jsxs(Box, { display: "flex", gap: 1, children: [_jsx(IconButton, { icon: SyncIcon, "aria-label": "Regenerate", size: "small", variant: "invisible", onClick: () => onRegenerate(message.id) }), _jsx(IconButton, { icon: CopyIcon, "aria-label": "Copy", size: "small", variant: "invisible", onClick: () => copy(text) })] }))] }), _jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: text }) })] }));
|
|
28
|
+
}, children: message.role === 'user' ? 'You' : 'Assistant' }), message.role === 'assistant' && isLastPart && (_jsxs(Box, { display: "flex", gap: 1, children: [_jsx(IconButton, { icon: SyncIcon, "aria-label": "Regenerate", size: "small", variant: "invisible", onClick: () => onRegenerate(message.id) }), _jsx(IconButton, { icon: CopyIcon, "aria-label": "Copy", size: "small", variant: "invisible", onClick: () => copy(text) })] }))] }), _jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { rehypePlugins: REHYPE_PLUGINS_WITHOUT_HTML, children: text }) })] }));
|
|
28
29
|
}
|
|
29
30
|
export default TextPart;
|
package/lib/chat/words.js
CHANGED
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
* The chat reads them in the language its host says (`ChatLanguage`, which
|
|
12
12
|
* `AppRenderer` and the embed set from their `language`), else in the first
|
|
13
13
|
* the browser prefers that is here, else in English: as an application's own
|
|
14
|
-
* words are picked (`
|
|
14
|
+
* words are picked (`apps/apps/language`).
|
|
15
15
|
*
|
|
16
16
|
* Pure: no React ({@link useChatWords} is in `ChatLanguage`).
|
|
17
17
|
*
|
|
18
18
|
* @module chat/words
|
|
19
19
|
*/
|
|
20
|
-
import { pickLanguage } from '../
|
|
20
|
+
import { pickLanguage } from '../apps/apps/language';
|
|
21
21
|
/** The chat's words, by language. Another language reads English. */
|
|
22
22
|
export const CHAT_WORDS = {
|
|
23
23
|
en: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import { createComponentImplementation, } from '@a2ui/react/v0_9';
|
|
4
|
-
import { customComponentEntry } from '../../../
|
|
4
|
+
import { customComponentEntry } from '../../../apps/apps/customComponents';
|
|
5
5
|
import { componentSchemaOf } from '../datalayer/schema';
|
|
6
6
|
import { BlockFrame, Problem } from '../datalayer/parts';
|
|
7
7
|
import { CUSTOM_FRAME_SANDBOX, FRAME_TAG, customFrameDocument, customModule, frameNonce, fromFrame, } from './sandbox';
|
|
@@ -62,13 +62,11 @@ export function CustomComponentView({ component, props, fetcher, }) {
|
|
|
62
62
|
};
|
|
63
63
|
window.addEventListener('message', listen);
|
|
64
64
|
return () => window.removeEventListener('message', listen);
|
|
65
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
66
65
|
}, [component, fetcher]);
|
|
67
66
|
useEffect(() => {
|
|
68
67
|
if (ready) {
|
|
69
68
|
tell({ tag: FRAME_TAG, kind: 'props', props: given });
|
|
70
69
|
}
|
|
71
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
72
70
|
}, [ready, given]);
|
|
73
71
|
return (_jsxs(BlockFrame, { label: component.description || component.name, weight: props.weight, testId: `custom-${component.name}`, children: [problem ? _jsx(Problem, { children: problem }) : null, _jsx("iframe", { ref: frame, title: component.description || component.name, sandbox: CUSTOM_FRAME_SANDBOX, srcDoc: srcDoc, referrerPolicy: "no-referrer", style: {
|
|
74
72
|
width: '100%',
|
|
@@ -21,7 +21,7 @@ import { UploadIcon } from '@primer/octicons-react';
|
|
|
21
21
|
import { Box } from '@datalayer/primer-addons';
|
|
22
22
|
import { BlockFrame, CARD_RADIUS, Problem, Quiet, isRecord } from './parts';
|
|
23
23
|
import { ownImplementation } from './implementation';
|
|
24
|
-
import { acceptsFile } from '../../../
|
|
24
|
+
import { acceptsFile } from '../../../apps/apps/uploads';
|
|
25
25
|
/** The default the catalog gives `max_mb`. */
|
|
26
26
|
const MAX_MB = 25;
|
|
27
27
|
/**
|
|
@@ -9,6 +9,7 @@ import { Box } from '@datalayer/primer-addons';
|
|
|
9
9
|
import { ChevronDownIcon, DownloadIcon, EyeClosedIcon, EyeIcon, TrashIcon, } from '@primer/octicons-react';
|
|
10
10
|
import { createMarkdownDownloadPayload, downloadTextPayload, formatDurationMs, formatRelativeTime, } from '@datalayer/core/lib/utils';
|
|
11
11
|
import { Streamdown } from 'streamdown';
|
|
12
|
+
import { REHYPE_PLUGINS_WITHOUT_HTML } from '../../chat/messages/markdownWithoutHtml';
|
|
12
13
|
import { streamdownMarkdownStyles } from '../../chat/styles/streamdownStyles';
|
|
13
14
|
const EVENT_KIND_VARIANT = {
|
|
14
15
|
'agent-start-requested': 'attention',
|
|
@@ -100,7 +101,7 @@ export function NotificationEventCard({ event, onToggleRead, onDelete, onOpenAge
|
|
|
100
101
|
color: 'fg.muted',
|
|
101
102
|
minWidth: 0,
|
|
102
103
|
flex: 1,
|
|
103
|
-
}, children: outputText })] }) }), _jsx(Box, { mt: 2, children: _jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: outputText }) }) })] }) }), _jsx(Button, { size: "small", variant: "invisible", sx: { p: 1, flexShrink: 0 }, title: "Download output markdown", "aria-label": "Download output markdown", onClick: () => {
|
|
104
|
+
}, children: outputText })] }) }), _jsx(Box, { mt: 2, children: _jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { rehypePlugins: REHYPE_PLUGINS_WITHOUT_HTML, children: outputText }) }) })] }) }), _jsx(Button, { size: "small", variant: "invisible", sx: { p: 1, flexShrink: 0 }, title: "Download output markdown", "aria-label": "Download output markdown", onClick: () => {
|
|
104
105
|
const payload = createMarkdownDownloadPayload(outputText, `${runtimeId}-output`);
|
|
105
106
|
downloadTextPayload(payload);
|
|
106
107
|
}, children: _jsx(DownloadIcon, { size: 12 }) })] }) })), _jsx(Box, { mt: 2, p: 2, borderRadius: 2, border: "1px solid", borderColor: "border.muted", bg: "canvas.subtle", children: _jsxs("details", { open: isDetailsExpanded, children: [_jsx("summary", { onClick: e => {
|
|
@@ -9,6 +9,7 @@ import { Box } from '@datalayer/primer-addons';
|
|
|
9
9
|
import { ChevronDownIcon, DownloadIcon, EyeClosedIcon, EyeIcon, TrashIcon, } from '@primer/octicons-react';
|
|
10
10
|
import { createMarkdownDownloadPayload, downloadTextPayload, formatDurationMs, formatRelativeTime, } from '@datalayer/core/lib/utils';
|
|
11
11
|
import { Streamdown } from 'streamdown';
|
|
12
|
+
import { REHYPE_PLUGINS_WITHOUT_HTML } from '../../chat/messages/markdownWithoutHtml';
|
|
12
13
|
import { streamdownMarkdownStyles } from '../../chat/styles/streamdownStyles';
|
|
13
14
|
export function OutputCard({ event, onToggleRead, onDelete, onOpenAgent, }) {
|
|
14
15
|
const [isOutputExpanded, setIsOutputExpanded] = useState(false);
|
|
@@ -42,7 +43,7 @@ export function OutputCard({ event, onToggleRead, onDelete, onOpenAgent, }) {
|
|
|
42
43
|
color: 'fg.muted',
|
|
43
44
|
minWidth: 0,
|
|
44
45
|
flex: 1,
|
|
45
|
-
}, children: outputText })] }) }), _jsx(Box, { mt: 2, children: _jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { children: outputText }) }) })] }) }), _jsx(Button, { size: "small", variant: "invisible", sx: { p: 1, flexShrink: 0 }, title: "Download output markdown", "aria-label": "Download output markdown", onClick: () => {
|
|
46
|
+
}, children: outputText })] }) }), _jsx(Box, { mt: 2, children: _jsx(Box, { sx: streamdownMarkdownStyles, children: _jsx(Streamdown, { rehypePlugins: REHYPE_PLUGINS_WITHOUT_HTML, children: outputText }) }) })] }) }), _jsx(Button, { size: "small", variant: "invisible", sx: { p: 1, flexShrink: 0 }, title: "Download output markdown", "aria-label": "Download output markdown", onClick: () => {
|
|
46
47
|
const payload = createMarkdownDownloadPayload(outputText, `${runtimeId}-output`);
|
|
47
48
|
downloadTextPayload(payload);
|
|
48
49
|
}, children: _jsx(DownloadIcon, { size: 12 }) })] }) }))] }));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Suspense, lazy } from 'react';
|
|
3
3
|
import { Text } from '@primer/react';
|
|
4
|
-
import { answerAction } from '../../
|
|
4
|
+
import { answerAction } from '../../apps/plugins/a2ui-surface/toolResult';
|
|
5
5
|
/** The renderer itself: A2UI and the catalog, loaded when a surface is drawn. */
|
|
6
6
|
const AnswerSurfacesView = lazy(() => import('./AnswerSurfacesView'));
|
|
7
7
|
/**
|
|
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useCallback, useMemo, useState } from 'react';
|
|
3
3
|
import { Spinner, Text } from '@primer/react';
|
|
4
4
|
import { Box } from '@datalayer/primer-addons';
|
|
5
|
-
import { InlineSurface, SURFACE_CATALOG_ID, } from '../../
|
|
6
|
-
import { readA2uiToolResult } from '../../
|
|
5
|
+
import { InlineSurface, SURFACE_CATALOG_ID, } from '../../apps/plugins/a2ui-surface/InlineSurface';
|
|
6
|
+
import { readA2uiToolResult } from '../../apps/plugins/a2ui-surface/toolResult';
|
|
7
7
|
import { pressedOf } from './AnswerSurfaces';
|
|
8
8
|
function OneSurface({ surface, name, onPress, }) {
|
|
9
9
|
const parsed = useMemo(() => readA2uiToolResult(surface.artifact.data, SURFACE_CATALOG_ID), [surface.artifact.data]);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The notebook a member of the team gave, on the browser sandbox.
|
|
3
3
|
*
|
|
4
|
-
* What the loop's notebook view does (`
|
|
4
|
+
* What the loop's notebook view does (`apps/plugins/notebook/NotebookView`),
|
|
5
5
|
* for a notebook that arrived over A2A: the browser sandbox
|
|
6
6
|
* (`createBrowserSandboxService`, a JupyterLite Pyodide kernel in the page)
|
|
7
7
|
* is started, and `EphemeralNotebook` is bound to its manager and its
|
|
@@ -7,7 +7,7 @@ import { Box } from '@datalayer/primer-addons';
|
|
|
7
7
|
import { useSignalValue } from '@datalayer/reactor/react';
|
|
8
8
|
import { notebookStore } from '@datalayer/jupyter-react';
|
|
9
9
|
import { EphemeralNotebook } from '../../chat/notebook/EphemeralNotebook';
|
|
10
|
-
import { createBrowserSandboxService } from '../../
|
|
10
|
+
import { createBrowserSandboxService } from '../../apps/plugins/agents/browserService';
|
|
11
11
|
import { teamNotebookKernel } from './teamNotebookKernel';
|
|
12
12
|
/** Each notebook drawn has its own id in jupyter-react's store. */
|
|
13
13
|
let drawn = 0;
|