@datalayer/agent-runtimes 1.0.29 → 1.3.10
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/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
- package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
- package/lib/components/code-sandboxes/index.d.ts +1 -0
- package/lib/components/code-sandboxes/index.js +1 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +4 -4
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.js +0 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +27 -14
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +25 -2
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +14 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +278 -110
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Loop, ready to drop into somebody else's page.
|
|
8
|
+
*
|
|
9
|
+
* The supported way to embed the workspace: a plugin set from `loopPlugins`, a
|
|
10
|
+
* query client, an optional theme, and the shell. Everything a host has to do
|
|
11
|
+
* around Loop, done once here instead of once per host.
|
|
12
|
+
*
|
|
13
|
+
* It exists because the landing page was embedding the *example*. An example is
|
|
14
|
+
* written to be read — its props are demonstration switches, its wiring is
|
|
15
|
+
* whatever made the demo clearest, and none of it is a promise. A page that
|
|
16
|
+
* embeds Loop needs a supported surface, and the two drifting apart should not
|
|
17
|
+
* be able to break somebody's home page.
|
|
18
|
+
*
|
|
19
|
+
* What a host still owns is the frame it puts around this and how much of the
|
|
20
|
+
* page to give it. `WindowFrame` is there for the first; the second is a
|
|
21
|
+
* `height` on whatever wraps this.
|
|
22
|
+
*
|
|
23
|
+
* @module loop/embed/LoopEmbed
|
|
24
|
+
*/
|
|
25
|
+
import { useMemo, useRef } from 'react';
|
|
26
|
+
import { QueryClientProvider } from '@tanstack/react-query';
|
|
27
|
+
import { useReactor } from '@datalayer/reactor/react';
|
|
28
|
+
import { Box } from '@datalayer/primer-addons';
|
|
29
|
+
import { internalQueryClient } from '../../utils';
|
|
30
|
+
import { buildLoopReactor, LoopWorkspace } from '../shell';
|
|
31
|
+
import { loopPlugins } from '../presets';
|
|
32
|
+
import { WindowFrame } from '../plugins/window-frame';
|
|
33
|
+
export function LoopEmbed({ agentId = '', showHeader = false, chatHeaderActions, headerActions, frameTitle, frameHeight, plugins = [], ...preset }) {
|
|
34
|
+
/*
|
|
35
|
+
* The latest `firstPromptHook`, kept in a ref rather than closed over
|
|
36
|
+
* directly.
|
|
37
|
+
*
|
|
38
|
+
* The reactor below is built once — see the comment on it — and a host's
|
|
39
|
+
* hook is exactly the kind of prop that is *not* stable across renders (it
|
|
40
|
+
* usually closes over the page's own state). Closing over it directly
|
|
41
|
+
* would either freeze the plugin config at whichever value happened to be
|
|
42
|
+
* current on the one render that built the reactor, or force this into the
|
|
43
|
+
* dependency array and restart every plugin whenever the host re-renders
|
|
44
|
+
* with a fresh inline function. The ref sidesteps both: the wrapper handed
|
|
45
|
+
* to `loopPlugins` below never changes identity, and it always reaches
|
|
46
|
+
* whatever the host most recently passed.
|
|
47
|
+
*/
|
|
48
|
+
const firstPromptHookRef = useRef(preset.firstPromptHook);
|
|
49
|
+
firstPromptHookRef.current = preset.firstPromptHook;
|
|
50
|
+
// Built once: rebuilding would restart every plugin on each render.
|
|
51
|
+
const reactor = useMemo(() => buildLoopReactor([
|
|
52
|
+
...loopPlugins({
|
|
53
|
+
...preset,
|
|
54
|
+
// A framed embed wants the title bar's slots open; a host that
|
|
55
|
+
// asked for a frame should not also have to remember the plugin.
|
|
56
|
+
windowFrame: preset.windowFrame || frameTitle !== undefined,
|
|
57
|
+
firstPromptHook: () => firstPromptHookRef.current?.(),
|
|
58
|
+
}),
|
|
59
|
+
...plugins,
|
|
60
|
+
]),
|
|
61
|
+
// `preset.firstPromptHook` is deliberately absent — see the ref above.
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
[
|
|
64
|
+
preset.serverUrl,
|
|
65
|
+
preset.target,
|
|
66
|
+
preset.defaultEditor,
|
|
67
|
+
preset.showViewSelector,
|
|
68
|
+
preset.hideChatHeader,
|
|
69
|
+
preset.promptPlacement,
|
|
70
|
+
preset.autoFocusPrompt,
|
|
71
|
+
preset.fullScreenTopOffset,
|
|
72
|
+
preset.showAgentVariants,
|
|
73
|
+
preset.agentSummary,
|
|
74
|
+
preset.teamId,
|
|
75
|
+
preset.teamPicker,
|
|
76
|
+
preset.pageLayout,
|
|
77
|
+
preset.pageLayoutTurnPanel,
|
|
78
|
+
preset.pageLayoutTurnPanelFooter,
|
|
79
|
+
preset.pageLayoutPrompt,
|
|
80
|
+
preset.localAgentSpec,
|
|
81
|
+
preset.floatingPrompt,
|
|
82
|
+
preset.editorSelector,
|
|
83
|
+
preset.editors,
|
|
84
|
+
preset.graph,
|
|
85
|
+
preset.commandPalette,
|
|
86
|
+
preset.pluginsPanel,
|
|
87
|
+
preset.windowFrame,
|
|
88
|
+
frameTitle !== undefined,
|
|
89
|
+
plugins,
|
|
90
|
+
]);
|
|
91
|
+
/*
|
|
92
|
+
* No theme provider here, deliberately.
|
|
93
|
+
*
|
|
94
|
+
* The views read Primer's CSS custom properties — the document editor reads
|
|
95
|
+
* them as variables, because that is how Lexical's stylesheets are written —
|
|
96
|
+
* so *something* above this has to define them. But a provider mounted here
|
|
97
|
+
* writes into the shared primer-addons store, which is the store the host
|
|
98
|
+
* page reads from: an embedded Loop would overwrite the reader's theme the
|
|
99
|
+
* moment it finished loading. Installing a global from inside a component
|
|
100
|
+
* somebody dropped into their page is not this component's business.
|
|
101
|
+
*
|
|
102
|
+
* A host provides `DatalayerThemeProvider` (or `ThemedProvider`) once, which
|
|
103
|
+
* every Datalayer application already does.
|
|
104
|
+
*/
|
|
105
|
+
/*
|
|
106
|
+
* Started here, because this is what built it.
|
|
107
|
+
*
|
|
108
|
+
* `LoopWorkspace` starts the platform only when it is managing it, and it is
|
|
109
|
+
* told not to below — the reactor is this component's, and a shell that
|
|
110
|
+
* stopped it on unmount would be stopping somebody else's. Registering
|
|
111
|
+
* without starting leaves every plugin inactive, so nothing contributes a
|
|
112
|
+
* view and the workspace draws "No view is available yet".
|
|
113
|
+
*/
|
|
114
|
+
useReactor(reactor);
|
|
115
|
+
const shell = (_jsx(LoopWorkspace, { serverUrl: preset.serverUrl ?? '', agentId: agentId, reactor: reactor, manageReactor: false, showViewSelector: preset.showViewSelector, showHeader: showHeader, chatHeaderActions: chatHeaderActions, headerActions: headerActions }));
|
|
116
|
+
return (_jsx(QueryClientProvider, { client: internalQueryClient, children: frameTitle !== undefined ? (_jsx(WindowFrame, { title: frameTitle, height: frameHeight, children: shell })) : (_jsx(Box, { sx: { height: '100%', minHeight: 0 }, children: shell })) }));
|
|
117
|
+
}
|
|
118
|
+
export default LoopEmbed;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The notebook capability: the editor, and the toolbar that reports on it.
|
|
3
|
+
*
|
|
4
|
+
* The sandbox plugin is deliberately absent even though the editor depends on
|
|
5
|
+
* it. It arrives as a dependency, and a package should not claim to deliver
|
|
6
|
+
* something it merely relies on — the whole workspace runs on that sandbox.
|
|
7
|
+
*/
|
|
8
|
+
export declare const NotebookExtension: import("@datalayer/reactor").ReactorExtension;
|
|
9
|
+
/** The document capability: the same arrangement, for prose. */
|
|
10
|
+
export declare const DocumentExtension: import("@datalayer/reactor").ReactorExtension;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The Loop plugins, grouped the way they are installed.
|
|
7
|
+
*
|
|
8
|
+
* Splitting the editors from their toolbars bought a real thing — a toolbar
|
|
9
|
+
* can be switched off, and the chat can fill one without the editor knowing —
|
|
10
|
+
* but it also doubled the length of the plugin list, and a list of peers is a
|
|
11
|
+
* worse way to read a system than a list of capabilities.
|
|
12
|
+
*
|
|
13
|
+
* An extension fixes exactly that and nothing else: it groups, and it has no
|
|
14
|
+
* lifecycle of its own. Each member is still enabled and disabled on its own,
|
|
15
|
+
* still appears on the graph as itself, and still contributes as itself. The
|
|
16
|
+
* grouping is only how a reader is told "these arrived together, and this is
|
|
17
|
+
* what you would uninstall to lose the capability".
|
|
18
|
+
*
|
|
19
|
+
* @module loop/extensions
|
|
20
|
+
*/
|
|
21
|
+
import { defineExtension } from '@datalayer/reactor';
|
|
22
|
+
import { DocumentPlugin } from './plugins/document';
|
|
23
|
+
import { DocumentToolbarPlugin } from './plugins/document-toolbar';
|
|
24
|
+
import { NotebookPlugin } from './plugins/notebook';
|
|
25
|
+
import { NotebookToolbarPlugin } from './plugins/notebook-toolbar';
|
|
26
|
+
/**
|
|
27
|
+
* The notebook capability: the editor, and the toolbar that reports on it.
|
|
28
|
+
*
|
|
29
|
+
* The sandbox plugin is deliberately absent even though the editor depends on
|
|
30
|
+
* it. It arrives as a dependency, and a package should not claim to deliver
|
|
31
|
+
* something it merely relies on — the whole workspace runs on that sandbox.
|
|
32
|
+
*/
|
|
33
|
+
export const NotebookExtension = defineExtension({
|
|
34
|
+
name: '@datalayer/loop-extension-notebook',
|
|
35
|
+
displayName: 'Notebooks',
|
|
36
|
+
description: 'A notebook beside the chat, and the toolbar that reports on it.',
|
|
37
|
+
octicon: 'rows',
|
|
38
|
+
emoji: '\u{1F4D3}',
|
|
39
|
+
plugins: [NotebookPlugin, NotebookToolbarPlugin],
|
|
40
|
+
});
|
|
41
|
+
/** The document capability: the same arrangement, for prose. */
|
|
42
|
+
export const DocumentExtension = defineExtension({
|
|
43
|
+
name: '@datalayer/loop-extension-document',
|
|
44
|
+
displayName: 'Documents',
|
|
45
|
+
description: 'A rich-text document beside the chat, and the toolbar that reports on it.',
|
|
46
|
+
octicon: 'file',
|
|
47
|
+
emoji: '\u{1F4C4}',
|
|
48
|
+
plugins: [DocumentPlugin, DocumentToolbarPlugin],
|
|
49
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The LOOP workspace: contracts, shell, and the plugins that come with it.
|
|
3
|
+
*
|
|
4
|
+
* A host embeds the workspace through this surface — never by deep import — so
|
|
5
|
+
* what is public is a decision rather than an accident of file layout (§3.5).
|
|
6
|
+
*
|
|
7
|
+
* @module loop
|
|
8
|
+
*/
|
|
9
|
+
export { LoopCommand, LoopDocumentToolbar, LoopMention, LoopNotebookToolbar, LoopSlots, LoopViewType, canOpenView, createPromptChannel, parseCommand, type CommandArgSpec, type CommandContribution, type CommandResult, type EditorToolbarContext, type EditorToolbarContribution, type LoopCommandContext, type LoopViewProps, type LoopWorkspaceContext, type MentionCandidate, type MentionContribution, type PromptChannel, type SandboxSnapshot, type SandboxState, type ViewControls, type ViewTypeContribution, useLoopPromptStore, suggestLoopPrompt, focusPrompt, onPromptFocusRequest, type LoopPromptState, type SuggestedPrompt, } from './core';
|
|
10
|
+
export { useEditorToolbar } from './core/toolbar';
|
|
11
|
+
export { LoopWorkspace, PluginToggles, ViewSwitcher, WorkspaceFullScreenAction, buildLoopReactor, useWorkspaceFullScreen, type LoopWorkspaceProps, type PluginTogglesProps, type ViewSwitcherProps, } from './shell';
|
|
12
|
+
export { A2uiPlugin, A2UI_PLUGIN_NAME } from './plugins/a2ui';
|
|
13
|
+
export { AgentspecsPlugin, AGENTSPECS_PLUGIN_NAME } from './plugins/agentspecs';
|
|
14
|
+
export { ChatPlugin, CHAT_PLUGIN_NAME, type ChatPluginConfig, } from './plugins/chat';
|
|
15
|
+
export { ChatHeaderPlugin, CHAT_HEADER_PLUGIN_NAME, } from './plugins/chat-header';
|
|
16
|
+
export { InputPromptPlugin, INPUT_PROMPT_PLUGIN_NAME, type InputPromptPluginConfig, } from './plugins/input-prompt';
|
|
17
|
+
export { createChatExtrasPlugin, CHAT_EXTRAS_PLUGIN_NAME, type ChatExtrasHandle, } from './plugins/chat-extras';
|
|
18
|
+
export { LoopChatExtras, LoopChatLayout, LoopChatTurn, LoopOpeningDocument, LoopOpeningNotebook, LoopPromptPanel, type ChatLayoutContribution, type ChatLayoutParts, type ChatTurnContribution, type ChatTurnSnapshot, type ChatTurnStatus, type LoopChatExtrasValue, type OpeningDocumentContribution, type OpeningNotebookContribution, type PromptPanelContribution, } from './core';
|
|
19
|
+
export { LoopPageLayoutPlugin, LOOP_PAGE_LAYOUT_PLUGIN_NAME, openConversationPanel, pageLayoutSheet, pageLayoutPanelOpen, type LoopPageLayoutConfig, } from './plugins/page-layout';
|
|
20
|
+
export { useOptionalTeamSelection } from './plugins/agents/useTeamSelection';
|
|
21
|
+
export type { TeamMember, TeamSelection } from './plugins/agents/team';
|
|
22
|
+
export { ChatViewPlugin, CHAT_VIEW_PLUGIN_NAME } from './plugins/chat-view';
|
|
23
|
+
export { NotebookViewPlugin, NOTEBOOK_VIEW_PLUGIN_NAME, } from './plugins/notebook-view';
|
|
24
|
+
export { DocumentViewPlugin, DOCUMENT_VIEW_PLUGIN_NAME, } from './plugins/document-view';
|
|
25
|
+
export { defineViewPlugin, type ViewPluginOptions, } from './plugins/view-switch';
|
|
26
|
+
export { defineAgentCapacityPlugin, type AgentCapacityOptions, } from './plugins/agent-capacity';
|
|
27
|
+
export { AgentCheckpointsPlugin, AGENT_CHECKPOINTS_PLUGIN_NAME, } from './plugins/agent-checkpoints';
|
|
28
|
+
export { AgentCodeSandboxPlugin, AGENT_CODE_SANDBOX_PLUGIN_NAME, } from './plugins/agent-code-sandbox';
|
|
29
|
+
export { AgentCodemodePlugin, AgentNoCodemodePlugin, AGENT_CODEMODE_PLUGIN_NAME, AGENT_NO_CODEMODE_PLUGIN_NAME, } from './plugins/agent-codemode';
|
|
30
|
+
export { AgentCompactionPlugin, AGENT_COMPACTION_PLUGIN_NAME, } from './plugins/agent-compaction';
|
|
31
|
+
export { AgentEvalsPlugin, AGENT_EVALS_PLUGIN_NAME, } from './plugins/agent-evals';
|
|
32
|
+
export { AgentGuardrailsPlugin, AGENT_GUARDRAILS_PLUGIN_NAME, } from './plugins/agent-guardrails';
|
|
33
|
+
export { AgentHooksPlugin, AGENT_HOOKS_PLUGIN_NAME, } from './plugins/agent-hooks';
|
|
34
|
+
export { AgentInferencePlugin, AGENT_INFERENCE_PLUGIN_NAME, } from './plugins/agent-inference';
|
|
35
|
+
export { AgentMcpPlugin, AGENT_MCP_PLUGIN_NAME } from './plugins/agent-mcp';
|
|
36
|
+
export { AgentMemoryPlugin, AGENT_MEMORY_PLUGIN_NAME, } from './plugins/agent-memory';
|
|
37
|
+
export { AgentMonitoringPlugin, AGENT_MONITORING_PLUGIN_NAME, } from './plugins/agent-monitoring';
|
|
38
|
+
export { AgentNotificationsPlugin, AGENT_NOTIFICATIONS_PLUGIN_NAME, } from './plugins/agent-notifications';
|
|
39
|
+
export { AgentOtelPlugin, AGENT_OTEL_PLUGIN_NAME } from './plugins/agent-otel';
|
|
40
|
+
export { AgentOutputsPlugin, AGENT_OUTPUTS_PLUGIN_NAME, } from './plugins/agent-outputs';
|
|
41
|
+
export { AgentParametersPlugin, AGENT_PARAMETERS_PLUGIN_NAME, } from './plugins/agent-parameters';
|
|
42
|
+
export { AgentSkillsPlugin, AGENT_SKILLS_PLUGIN_NAME, } from './plugins/agent-skills';
|
|
43
|
+
export { AgentSubagentsPlugin, AGENT_SUBAGENTS_PLUGIN_NAME, } from './plugins/agent-subagents';
|
|
44
|
+
export { AgentA2APlugin, AGENT_A2A_PLUGIN_NAME } from './plugins/agent-a2a';
|
|
45
|
+
export { CheckpointsSidebarPlugin, CHECKPOINTS_SIDEBAR_PLUGIN_NAME, CheckpointsSidebar, } from './plugins/checkpoints-sidebar';
|
|
46
|
+
export { A2ASidebarPlugin, A2ASidebar, A2A_SIDEBAR_PLUGIN_NAME, describeRemoteAgents, remoteStatusOf, type A2ARemoteAgentView, type A2ARemoteStatus, } from './plugins/a2a-sidebar';
|
|
47
|
+
export { AgentToolApprovalsPlugin, AGENT_TOOL_APPROVALS_PLUGIN_NAME, } from './plugins/agent-tool-approvals';
|
|
48
|
+
export { AgentTriggersPlugin, AGENT_TRIGGERS_PLUGIN_NAME, } from './plugins/agent-triggers';
|
|
49
|
+
export { SANDBOX_CAPACITIES, SandboxCapacityPlugins, } from './plugins/agent-code-sandboxes';
|
|
50
|
+
export { AgentA2uiPlugin, AGENT_A2UI_PLUGIN_NAME } from './plugins/agent-a2ui';
|
|
51
|
+
export { AgentA2uiJupyterOutputPlugin, AGENT_A2UI_JUPYTER_OUTPUT_PLUGIN_NAME, } from './plugins/agent-a2ui-jupyter-output';
|
|
52
|
+
export { defineA2uiScenePlugin, type A2uiSceneOptions, } from './plugins/a2ui-scene';
|
|
53
|
+
export { GraphViewPlugin, GRAPH_PLUGIN_NAME, GRAPH_VIEW_TYPE, } from './plugins/graph';
|
|
54
|
+
export { PluginsPanelPlugin, PLUGINS_PANEL_PLUGIN_NAME, PluginsPanel, } from './plugins/plugins-panel';
|
|
55
|
+
export { AGENTS_PLUGIN_NAME, AgentsPlugin, SandboxSelector, browserSource, createBrowserSandboxService, createServerSandboxService, createSwitchableSandboxService, suppliedSource, useOptionalSandboxService, useSandboxService, type AgentsConfig, type AgentsOutput, type SandboxExecution, type SandboxService, type SandboxTarget, type ServiceManagerSource, type SwitchableSandboxService, } from './plugins/agents';
|
|
56
|
+
export { DocumentPlugin, DOCUMENT_PLUGIN_NAME } from './plugins/document';
|
|
57
|
+
export { DocumentToolbarPlugin, DOCUMENT_TOOLBAR_PLUGIN_NAME, } from './plugins/document-toolbar';
|
|
58
|
+
export { ShellPlugin, EditorSelector, SHELL_PLUGIN_NAME, NONE_EDITOR, chooseEditor, EditorsPlugin, EDITORS_PLUGIN_NAME, type ShellPluginConfig, } from './plugins/shell';
|
|
59
|
+
export { ModelsPlugin, MODELS_PLUGIN_NAME } from './plugins/models';
|
|
60
|
+
export { NotebookPlugin, NOTEBOOK_PLUGIN_NAME } from './plugins/notebook';
|
|
61
|
+
export { NotebookToolbarPlugin, NOTEBOOK_TOOLBAR_PLUGIN_NAME, } from './plugins/notebook-toolbar';
|
|
62
|
+
export { WindowFrame, WindowFramePlugin, WINDOW_ACTIONS_SLOT, WINDOW_CONTROLS_SLOT, WINDOW_FRAME_PLUGIN_NAME, type WindowFrameProps, } from './plugins/window-frame';
|
|
63
|
+
export { LoopCommandsPlugin, COMMANDS_PLUGIN_NAME } from './plugins/commands';
|
|
64
|
+
export { PromptPlugin, PROMPT_PLUGIN_NAME } from './plugins/prompt';
|
|
65
|
+
export { LoopEmbed, type LoopEmbedProps } from './embed/LoopEmbed';
|
|
66
|
+
export { SubagentActivityPlugin, SubagentPulse, SUBAGENT_ACTIVITY_PLUGIN_NAME, } from './plugins/subagent-activity';
|
|
67
|
+
export { loopPlugins, type LoopPresetOptions } from './presets';
|
|
68
|
+
export { DocumentExtension, NotebookExtension } from './extensions';
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* The LOOP workspace: contracts, shell, and the plugins that come with it.
|
|
7
|
+
*
|
|
8
|
+
* A host embeds the workspace through this surface — never by deep import — so
|
|
9
|
+
* what is public is a decision rather than an accident of file layout (§3.5).
|
|
10
|
+
*
|
|
11
|
+
* @module loop
|
|
12
|
+
*/
|
|
13
|
+
// The contracts. A plugin depends on these and on the reactor, never on the shell.
|
|
14
|
+
export { LoopCommand, LoopDocumentToolbar, LoopMention, LoopNotebookToolbar, LoopSlots, LoopViewType, canOpenView, createPromptChannel, parseCommand, useLoopPromptStore, suggestLoopPrompt, focusPrompt, onPromptFocusRequest, } from './core';
|
|
15
|
+
export { useEditorToolbar } from './core/toolbar';
|
|
16
|
+
// The shell.
|
|
17
|
+
export { LoopWorkspace, PluginToggles, ViewSwitcher, WorkspaceFullScreenAction, buildLoopReactor, useWorkspaceFullScreen, } from './shell';
|
|
18
|
+
// The plugins that ship with it.
|
|
19
|
+
export { A2uiPlugin, A2UI_PLUGIN_NAME } from './plugins/a2ui';
|
|
20
|
+
export { AgentspecsPlugin, AGENTSPECS_PLUGIN_NAME } from './plugins/agentspecs';
|
|
21
|
+
export { ChatPlugin, CHAT_PLUGIN_NAME, } from './plugins/chat';
|
|
22
|
+
export { ChatHeaderPlugin, CHAT_HEADER_PLUGIN_NAME, } from './plugins/chat-header';
|
|
23
|
+
export { InputPromptPlugin, INPUT_PROMPT_PLUGIN_NAME, } from './plugins/input-prompt';
|
|
24
|
+
export { createChatExtrasPlugin, CHAT_EXTRAS_PLUGIN_NAME, } from './plugins/chat-extras';
|
|
25
|
+
// The live channels a host feeds the workspace through, and what it can
|
|
26
|
+
// read back: the chat extras, the opening notebook, and who the team is
|
|
27
|
+
// talking to. A page composing panels around a `LoopEmbed` needs all three.
|
|
28
|
+
export { LoopChatExtras, LoopChatLayout, LoopChatTurn, LoopOpeningDocument, LoopOpeningNotebook, LoopPromptPanel, } from './core';
|
|
29
|
+
export { LoopPageLayoutPlugin, LOOP_PAGE_LAYOUT_PLUGIN_NAME, openConversationPanel, pageLayoutSheet, pageLayoutPanelOpen, } from './plugins/page-layout';
|
|
30
|
+
export { useOptionalTeamSelection } from './plugins/agents/useTeamSelection';
|
|
31
|
+
export { ChatViewPlugin, CHAT_VIEW_PLUGIN_NAME } from './plugins/chat-view';
|
|
32
|
+
export { NotebookViewPlugin, NOTEBOOK_VIEW_PLUGIN_NAME, } from './plugins/notebook-view';
|
|
33
|
+
export { DocumentViewPlugin, DOCUMENT_VIEW_PLUGIN_NAME, } from './plugins/document-view';
|
|
34
|
+
export { defineViewPlugin, } from './plugins/view-switch';
|
|
35
|
+
export { defineAgentCapacityPlugin, } from './plugins/agent-capacity';
|
|
36
|
+
// The agent-capacity plugins: one folder per capacity, one line each.
|
|
37
|
+
export { AgentCheckpointsPlugin, AGENT_CHECKPOINTS_PLUGIN_NAME, } from './plugins/agent-checkpoints';
|
|
38
|
+
export { AgentCodeSandboxPlugin, AGENT_CODE_SANDBOX_PLUGIN_NAME, } from './plugins/agent-code-sandbox';
|
|
39
|
+
export { AgentCodemodePlugin, AgentNoCodemodePlugin, AGENT_CODEMODE_PLUGIN_NAME, AGENT_NO_CODEMODE_PLUGIN_NAME, } from './plugins/agent-codemode';
|
|
40
|
+
export { AgentCompactionPlugin, AGENT_COMPACTION_PLUGIN_NAME, } from './plugins/agent-compaction';
|
|
41
|
+
export { AgentEvalsPlugin, AGENT_EVALS_PLUGIN_NAME, } from './plugins/agent-evals';
|
|
42
|
+
export { AgentGuardrailsPlugin, AGENT_GUARDRAILS_PLUGIN_NAME, } from './plugins/agent-guardrails';
|
|
43
|
+
export { AgentHooksPlugin, AGENT_HOOKS_PLUGIN_NAME, } from './plugins/agent-hooks';
|
|
44
|
+
export { AgentInferencePlugin, AGENT_INFERENCE_PLUGIN_NAME, } from './plugins/agent-inference';
|
|
45
|
+
export { AgentMcpPlugin, AGENT_MCP_PLUGIN_NAME } from './plugins/agent-mcp';
|
|
46
|
+
export { AgentMemoryPlugin, AGENT_MEMORY_PLUGIN_NAME, } from './plugins/agent-memory';
|
|
47
|
+
export { AgentMonitoringPlugin, AGENT_MONITORING_PLUGIN_NAME, } from './plugins/agent-monitoring';
|
|
48
|
+
export { AgentNotificationsPlugin, AGENT_NOTIFICATIONS_PLUGIN_NAME, } from './plugins/agent-notifications';
|
|
49
|
+
export { AgentOtelPlugin, AGENT_OTEL_PLUGIN_NAME } from './plugins/agent-otel';
|
|
50
|
+
export { AgentOutputsPlugin, AGENT_OUTPUTS_PLUGIN_NAME, } from './plugins/agent-outputs';
|
|
51
|
+
export { AgentParametersPlugin, AGENT_PARAMETERS_PLUGIN_NAME, } from './plugins/agent-parameters';
|
|
52
|
+
export { AgentSkillsPlugin, AGENT_SKILLS_PLUGIN_NAME, } from './plugins/agent-skills';
|
|
53
|
+
export { AgentSubagentsPlugin, AGENT_SUBAGENTS_PLUGIN_NAME, } from './plugins/agent-subagents';
|
|
54
|
+
export { AgentA2APlugin, AGENT_A2A_PLUGIN_NAME } from './plugins/agent-a2a';
|
|
55
|
+
export { CheckpointsSidebarPlugin, CHECKPOINTS_SIDEBAR_PLUGIN_NAME, CheckpointsSidebar, } from './plugins/checkpoints-sidebar';
|
|
56
|
+
export { A2ASidebarPlugin, A2ASidebar, A2A_SIDEBAR_PLUGIN_NAME, describeRemoteAgents, remoteStatusOf, } from './plugins/a2a-sidebar';
|
|
57
|
+
export { AgentToolApprovalsPlugin, AGENT_TOOL_APPROVALS_PLUGIN_NAME, } from './plugins/agent-tool-approvals';
|
|
58
|
+
export { AgentTriggersPlugin, AGENT_TRIGGERS_PLUGIN_NAME, } from './plugins/agent-triggers';
|
|
59
|
+
export { SANDBOX_CAPACITIES, SandboxCapacityPlugins, } from './plugins/agent-code-sandboxes';
|
|
60
|
+
export { AgentA2uiPlugin, AGENT_A2UI_PLUGIN_NAME } from './plugins/agent-a2ui';
|
|
61
|
+
export { AgentA2uiJupyterOutputPlugin, AGENT_A2UI_JUPYTER_OUTPUT_PLUGIN_NAME, } from './plugins/agent-a2ui-jupyter-output';
|
|
62
|
+
export { defineA2uiScenePlugin, } from './plugins/a2ui-scene';
|
|
63
|
+
export { GraphViewPlugin, GRAPH_PLUGIN_NAME, GRAPH_VIEW_TYPE, } from './plugins/graph';
|
|
64
|
+
export { PluginsPanelPlugin, PLUGINS_PANEL_PLUGIN_NAME, PluginsPanel, } from './plugins/plugins-panel';
|
|
65
|
+
export { AGENTS_PLUGIN_NAME, AgentsPlugin, SandboxSelector, browserSource, createBrowserSandboxService, createServerSandboxService, createSwitchableSandboxService, suppliedSource, useOptionalSandboxService, useSandboxService, } from './plugins/agents';
|
|
66
|
+
export { DocumentPlugin, DOCUMENT_PLUGIN_NAME } from './plugins/document';
|
|
67
|
+
export { DocumentToolbarPlugin, DOCUMENT_TOOLBAR_PLUGIN_NAME, } from './plugins/document-toolbar';
|
|
68
|
+
export { ShellPlugin, EditorSelector, SHELL_PLUGIN_NAME, NONE_EDITOR, chooseEditor,
|
|
69
|
+
// The names this plugin outgrew, kept so nothing breaks in the same step.
|
|
70
|
+
EditorsPlugin, EDITORS_PLUGIN_NAME, } from './plugins/shell';
|
|
71
|
+
export { ModelsPlugin, MODELS_PLUGIN_NAME } from './plugins/models';
|
|
72
|
+
export { NotebookPlugin, NOTEBOOK_PLUGIN_NAME } from './plugins/notebook';
|
|
73
|
+
export { NotebookToolbarPlugin, NOTEBOOK_TOOLBAR_PLUGIN_NAME, } from './plugins/notebook-toolbar';
|
|
74
|
+
// The window a page puts around Loop, and the slots that make its title bar
|
|
75
|
+
// extensible.
|
|
76
|
+
export { WindowFrame, WindowFramePlugin, WINDOW_ACTIONS_SLOT, WINDOW_CONTROLS_SLOT, WINDOW_FRAME_PLUGIN_NAME, } from './plugins/window-frame';
|
|
77
|
+
export { LoopCommandsPlugin, COMMANDS_PLUGIN_NAME } from './plugins/commands';
|
|
78
|
+
export { PromptPlugin, PROMPT_PLUGIN_NAME } from './plugins/prompt';
|
|
79
|
+
// Loop, ready to drop into somebody else's page.
|
|
80
|
+
export { LoopEmbed } from './embed/LoopEmbed';
|
|
81
|
+
export { SubagentActivityPlugin, SubagentPulse, SUBAGENT_ACTIVITY_PLUGIN_NAME, } from './plugins/subagent-activity';
|
|
82
|
+
// The set a workspace normally has, so a host starts from a working Loop
|
|
83
|
+
// rather than assembling one — and never from the example.
|
|
84
|
+
export { loopPlugins } from './presets';
|
|
85
|
+
// The extensions that group them, for hosts that would rather install a
|
|
86
|
+
// capability than assemble one.
|
|
87
|
+
export { DocumentExtension, NotebookExtension } from './extensions';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The A2A sidebar: the agents the chat's agent reaches over A2A, what each
|
|
3
|
+
* is doing, and the run under way — the same boxed live run the chat shows
|
|
4
|
+
* under the delegation's tool card, kept in view here while the chat scrolls.
|
|
5
|
+
*
|
|
6
|
+
* What it knows comes from two places. The agentspec behind the workspace's
|
|
7
|
+
* agent blueprint declares the subagents with an `a2a` target; the runtime
|
|
8
|
+
* store holds the `agent.subagent` events, and the ones marked
|
|
9
|
+
* `transport: 'a2a'` say where each agent was launched, its card, its task
|
|
10
|
+
* and how far it has got.
|
|
11
|
+
*
|
|
12
|
+
* @module loop/plugins/a2a-sidebar/A2ASidebar
|
|
13
|
+
*/
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import { type LoopWorkspaceContext } from '../../core';
|
|
16
|
+
import { type AgentStreamSubagentPayload } from '../../../types/stream';
|
|
17
|
+
import type { SubAgentspecConfig } from '../../../types/agentspecs';
|
|
18
|
+
/** Fixed height (px) of the live run box. */
|
|
19
|
+
export declare const A2A_ACTIVE_PANEL_HEIGHT = 280;
|
|
20
|
+
export type A2ARemoteStatus = 'idle' | 'launching' | 'working' | 'done' | 'stopped' | 'failed';
|
|
21
|
+
/** One A2A agent as the sidebar shows it. */
|
|
22
|
+
export interface A2ARemoteAgentView {
|
|
23
|
+
name: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
/** The agentspec it is launched from, as `<id>:<version>`. */
|
|
26
|
+
ref?: string;
|
|
27
|
+
/** `local`, `cloud`, `remote`, or the `auto` not yet decided. */
|
|
28
|
+
launch?: string;
|
|
29
|
+
url?: string;
|
|
30
|
+
taskId?: string | null;
|
|
31
|
+
card?: AgentStreamSubagentPayload['agentCard'];
|
|
32
|
+
runtimeUid?: string;
|
|
33
|
+
status: A2ARemoteStatus;
|
|
34
|
+
}
|
|
35
|
+
type Activity = Record<string, readonly AgentStreamSubagentPayload[]>;
|
|
36
|
+
/** Where a remote run stands, from its events. */
|
|
37
|
+
export declare function remoteStatusOf(events: readonly AgentStreamSubagentPayload[] | undefined): A2ARemoteStatus;
|
|
38
|
+
/**
|
|
39
|
+
* The A2A agents to show: the ones the spec declares, each with what its
|
|
40
|
+
* latest run said about it, plus any the events name that the spec did not.
|
|
41
|
+
*/
|
|
42
|
+
export declare function describeRemoteAgents(declared: readonly SubAgentspecConfig[], activity: Activity): A2ARemoteAgentView[];
|
|
43
|
+
export interface A2ASidebarProps {
|
|
44
|
+
/** Forwarded by the shell; unused, the sidebar reads the stores. */
|
|
45
|
+
workspace?: LoopWorkspaceContext;
|
|
46
|
+
}
|
|
47
|
+
export declare function A2ASidebar(_props: A2ASidebarProps): React.ReactElement;
|
|
48
|
+
export default A2ASidebar;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* The A2A sidebar: the agents the chat's agent reaches over A2A, what each
|
|
8
|
+
* is doing, and the run under way — the same boxed live run the chat shows
|
|
9
|
+
* under the delegation's tool card, kept in view here while the chat scrolls.
|
|
10
|
+
*
|
|
11
|
+
* What it knows comes from two places. The agentspec behind the workspace's
|
|
12
|
+
* agent blueprint declares the subagents with an `a2a` target; the runtime
|
|
13
|
+
* store holds the `agent.subagent` events, and the ones marked
|
|
14
|
+
* `transport: 'a2a'` say where each agent was launched, its card, its task
|
|
15
|
+
* and how far it has got.
|
|
16
|
+
*
|
|
17
|
+
* @module loop/plugins/a2a-sidebar/A2ASidebar
|
|
18
|
+
*/
|
|
19
|
+
import { useMemo, useState } from 'react';
|
|
20
|
+
import { Heading, Label, Link, Text, Timeline } from '@primer/react';
|
|
21
|
+
import { AlertIcon, BroadcastIcon, CheckCircleIcon, CloudIcon, DependabotIcon, DeviceDesktopIcon, } from '@primer/octicons-react';
|
|
22
|
+
import { Box } from '@datalayer/primer-addons';
|
|
23
|
+
import { useContributions } from '@datalayer/reactor/react';
|
|
24
|
+
import { LoopAgentBlueprint } from '../../core';
|
|
25
|
+
import { getAgentspecs } from '../../../specs/agents';
|
|
26
|
+
import { SubagentChatPanel } from '../../../chat/messages/ChatMessageList';
|
|
27
|
+
import { A2AAgentDialog } from '../../../chat/tools/A2AAgentDialog';
|
|
28
|
+
import { useAgentRuntimeActiveSubagentToolCallId, useAgentRuntimeStore, } from '../../../stores/agentRuntimeStore';
|
|
29
|
+
import { SUBAGENT_STOPPED, } from '../../../types/stream';
|
|
30
|
+
/** Fixed height (px) of the live run box. */
|
|
31
|
+
export const A2A_ACTIVE_PANEL_HEIGHT = 280;
|
|
32
|
+
/** Where a remote run stands, from its events. */
|
|
33
|
+
export function remoteStatusOf(events) {
|
|
34
|
+
if (!events || events.length === 0)
|
|
35
|
+
return 'idle';
|
|
36
|
+
if (events.some(event => event.phase === 'error')) {
|
|
37
|
+
return events.some(event => event.phase === 'error' && event.error === SUBAGENT_STOPPED)
|
|
38
|
+
? 'stopped'
|
|
39
|
+
: 'failed';
|
|
40
|
+
}
|
|
41
|
+
if (events.some(event => event.phase === 'end'))
|
|
42
|
+
return 'done';
|
|
43
|
+
let state;
|
|
44
|
+
for (const event of events) {
|
|
45
|
+
if (event.phase === 'status' && event.state)
|
|
46
|
+
state = event.state;
|
|
47
|
+
}
|
|
48
|
+
return state === 'launching' ? 'launching' : 'working';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The A2A agents to show: the ones the spec declares, each with what its
|
|
52
|
+
* latest run said about it, plus any the events name that the spec did not.
|
|
53
|
+
*/
|
|
54
|
+
export function describeRemoteAgents(declared, activity) {
|
|
55
|
+
const views = declared
|
|
56
|
+
.filter(subagent => subagent.a2a)
|
|
57
|
+
.map(subagent => ({
|
|
58
|
+
name: subagent.name,
|
|
59
|
+
description: subagent.description,
|
|
60
|
+
ref: subagent.ref,
|
|
61
|
+
launch: subagent.a2a?.launch ?? 'auto',
|
|
62
|
+
url: subagent.a2a?.url,
|
|
63
|
+
status: 'idle',
|
|
64
|
+
}));
|
|
65
|
+
// Runs are keyed by tool call; the ones over A2A, in the order they were
|
|
66
|
+
// opened, so the last run seen for a name is the latest.
|
|
67
|
+
for (const events of Object.values(activity)) {
|
|
68
|
+
const first = events[0];
|
|
69
|
+
if (!first || !events.some(event => event.transport === 'a2a'))
|
|
70
|
+
continue;
|
|
71
|
+
let view = views.find(entry => entry.name === first.subagentName);
|
|
72
|
+
if (!view) {
|
|
73
|
+
view = { name: first.subagentName, status: 'idle' };
|
|
74
|
+
views.push(view);
|
|
75
|
+
}
|
|
76
|
+
view.status = remoteStatusOf(events);
|
|
77
|
+
for (const event of events) {
|
|
78
|
+
if (event.url)
|
|
79
|
+
view.url = event.url;
|
|
80
|
+
if (event.launch && event.launch !== 'auto')
|
|
81
|
+
view.launch = event.launch;
|
|
82
|
+
if (event.taskId)
|
|
83
|
+
view.taskId = event.taskId;
|
|
84
|
+
if (event.agentCard)
|
|
85
|
+
view.card = event.agentCard;
|
|
86
|
+
if (event.runtimeUid)
|
|
87
|
+
view.runtimeUid = event.runtimeUid;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return views;
|
|
91
|
+
}
|
|
92
|
+
const STATUS_LABEL = {
|
|
93
|
+
idle: { text: 'idle', variant: 'secondary' },
|
|
94
|
+
launching: { text: 'launching', variant: 'accent' },
|
|
95
|
+
working: { text: 'working', variant: 'accent' },
|
|
96
|
+
done: { text: 'done', variant: 'success' },
|
|
97
|
+
stopped: { text: 'stopped', variant: 'attention' },
|
|
98
|
+
failed: { text: 'failed', variant: 'danger' },
|
|
99
|
+
};
|
|
100
|
+
function StatusBadge({ status, }) {
|
|
101
|
+
switch (status) {
|
|
102
|
+
case 'done':
|
|
103
|
+
return (_jsx(Box, { sx: { color: 'success.fg', display: 'flex' }, children: _jsx(CheckCircleIcon, {}) }));
|
|
104
|
+
case 'stopped':
|
|
105
|
+
return (_jsx(Box, { sx: { color: 'attention.fg', display: 'flex' }, children: _jsx(AlertIcon, {}) }));
|
|
106
|
+
case 'failed':
|
|
107
|
+
return (_jsx(Box, { sx: { color: 'danger.fg', display: 'flex' }, children: _jsx(AlertIcon, {}) }));
|
|
108
|
+
case 'launching':
|
|
109
|
+
case 'working':
|
|
110
|
+
return (_jsx(Box, { sx: { color: 'accent.fg', display: 'flex' }, children: _jsx(DependabotIcon, {}) }));
|
|
111
|
+
default:
|
|
112
|
+
return _jsx(BroadcastIcon, {});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function LaunchChip({ launch, }) {
|
|
116
|
+
if (!launch)
|
|
117
|
+
return null;
|
|
118
|
+
const Icon = launch === 'cloud'
|
|
119
|
+
? CloudIcon
|
|
120
|
+
: launch === 'local'
|
|
121
|
+
? DeviceDesktopIcon
|
|
122
|
+
: BroadcastIcon;
|
|
123
|
+
return (_jsxs(Box, { sx: {
|
|
124
|
+
display: 'inline-flex',
|
|
125
|
+
alignItems: 'center',
|
|
126
|
+
gap: 1,
|
|
127
|
+
fontSize: 0,
|
|
128
|
+
color: 'fg.muted',
|
|
129
|
+
}, children: [_jsx(Icon, { size: 12 }), _jsx(Text, { sx: { fontSize: 0 }, children: launch })] }));
|
|
130
|
+
}
|
|
131
|
+
function SectionHeading({ children }) {
|
|
132
|
+
return (_jsx(Heading, { as: "h4", sx: { fontSize: 1, mb: 2 }, children: children }));
|
|
133
|
+
}
|
|
134
|
+
export function A2ASidebar(_props) {
|
|
135
|
+
const blueprints = useContributions(LoopAgentBlueprint);
|
|
136
|
+
const specId = blueprints[0]?.value.specId;
|
|
137
|
+
const declared = useMemo(() => (specId ? (getAgentspecs(specId)?.subagents?.subagents ?? []) : []), [specId]);
|
|
138
|
+
const activity = useAgentRuntimeStore(state => state.subagentActivity);
|
|
139
|
+
const agents = useMemo(() => describeRemoteAgents(declared, activity), [declared, activity]);
|
|
140
|
+
const activeKey = useAgentRuntimeActiveSubagentToolCallId();
|
|
141
|
+
// The agent whose details are open over the workspace, if any.
|
|
142
|
+
const [shown, setShown] = useState(null);
|
|
143
|
+
const activeOverA2A = activeKey !== null &&
|
|
144
|
+
(activity[activeKey] ?? []).some(event => event.transport === 'a2a');
|
|
145
|
+
return (_jsxs(Box, { "data-a2a-sidebar": true, sx: { display: 'flex', flexDirection: 'column', gap: 4 }, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(BroadcastIcon, { size: 16 }), _jsx(Heading, { as: "h3", sx: { fontSize: 2, m: 0, flex: 1 }, children: "A2A agents" }), _jsx(Label, { variant: "accent", children: agents.length })] }), _jsxs(Box, { children: [_jsx(SectionHeading, { children: "Running now" }), activeKey && activeOverA2A ? (_jsx(SubagentChatPanel, { toolCallId: activeKey, height: A2A_ACTIVE_PANEL_HEIGHT })) : (_jsx(Box, { "data-a2a-sidebar-idle": true, sx: {
|
|
146
|
+
height: A2A_ACTIVE_PANEL_HEIGHT,
|
|
147
|
+
display: 'flex',
|
|
148
|
+
alignItems: 'center',
|
|
149
|
+
justifyContent: 'center',
|
|
150
|
+
border: '1px solid',
|
|
151
|
+
borderColor: 'border.muted',
|
|
152
|
+
borderRadius: 2,
|
|
153
|
+
bg: 'canvas.default',
|
|
154
|
+
}, children: _jsx(Text, { sx: { fontSize: 0, color: 'fg.muted', m: 0 }, children: "No A2A agent running" }) }))] }), _jsxs(Box, { children: [_jsx(SectionHeading, { children: "Remote agents" }), agents.length === 0 ? (_jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', m: 0 }, children: "This agent declares no A2A agents." })) : (_jsx(Timeline, { children: agents.map(agent => {
|
|
155
|
+
const status = STATUS_LABEL[agent.status];
|
|
156
|
+
return (_jsxs(Timeline.Item, { "data-a2a-agent": agent.name, children: [_jsx(Timeline.Badge, { children: _jsx(StatusBadge, { status: agent.status }) }), _jsxs(Timeline.Body, { children: [_jsxs(Box, { sx: {
|
|
157
|
+
display: 'flex',
|
|
158
|
+
alignItems: 'center',
|
|
159
|
+
gap: 2,
|
|
160
|
+
mb: 1,
|
|
161
|
+
flexWrap: 'wrap',
|
|
162
|
+
}, children: [_jsx(Text, { sx: { fontWeight: 'bold', fontSize: 1 }, children: agent.name }), _jsx(Label, { variant: status.variant, size: "small", children: status.text }), _jsx(LaunchChip, { launch: agent.launch })] }), agent.description ? (_jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', mt: 0, mb: 1 }, children: agent.description })) : null, _jsxs(Box, { sx: {
|
|
163
|
+
display: 'flex',
|
|
164
|
+
flexDirection: 'column',
|
|
165
|
+
gap: '2px',
|
|
166
|
+
fontSize: 0,
|
|
167
|
+
color: 'fg.muted',
|
|
168
|
+
}, children: [agent.card?.name ? (_jsxs(Text, { sx: { fontSize: 0 }, children: ["Card: ", agent.card.name, agent.card.version ? ` v${agent.card.version}` : ''] })) : agent.ref ? (_jsx(Text, { sx: { fontSize: 0, fontFamily: 'mono' }, children: agent.ref })) : null, agent.url ? (_jsx(Link, { as: "button", type: "button", "data-a2a-card-button": agent.name, onClick: () => setShown(agent), sx: {
|
|
169
|
+
fontSize: 0,
|
|
170
|
+
fontFamily: 'mono',
|
|
171
|
+
overflow: 'hidden',
|
|
172
|
+
textOverflow: 'ellipsis',
|
|
173
|
+
whiteSpace: 'nowrap',
|
|
174
|
+
display: 'block',
|
|
175
|
+
maxWidth: '100%',
|
|
176
|
+
textAlign: 'left',
|
|
177
|
+
}, title: `${agent.url} — open the agent's details`, children: agent.url })) : null, agent.taskId ? (_jsxs(Text, { sx: { fontSize: 0, fontFamily: 'mono' }, children: ["task ", agent.taskId] })) : null, agent.runtimeUid ? (_jsxs(Text, { sx: { fontSize: 0, fontFamily: 'mono' }, children: ["runtime ", agent.runtimeUid] })) : null] })] })] }, agent.name));
|
|
178
|
+
}) }))] }), shown ? (_jsx(A2AAgentDialog, { details: {
|
|
179
|
+
name: shown.name,
|
|
180
|
+
url: shown.url,
|
|
181
|
+
launch: shown.launch,
|
|
182
|
+
state: shown.status,
|
|
183
|
+
taskId: shown.taskId,
|
|
184
|
+
runtimeUid: shown.runtimeUid,
|
|
185
|
+
card: shown.card,
|
|
186
|
+
ref: shown.ref,
|
|
187
|
+
description: shown.description,
|
|
188
|
+
}, onClose: () => setShown(null) })) : null, _jsxs(Box, { children: [_jsx(SectionHeading, { children: "How it works" }), _jsxs(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', mb: 2 }, children: ["The orchestrator delegates with ", _jsx("code", { children: "delegate_task" }), ", as with in-process subagents \u2014 but each of these agents is a separate agent spoken to over the A2A protocol. On the first delegation it is launched from its agentspec: beside the orchestrator on the local server, or on a Datalayer runtime when the orchestrator runs in the cloud."] }), _jsxs(Text, { as: "p", sx: { fontSize: 0, color: 'fg.muted', mb: 0 }, children: ["The remote run streams back over ", _jsx("code", { children: "message/stream" }), ": its text, its tool calls and results, and the task's states, shown here and in the chat as the run goes."] })] })] }));
|
|
189
|
+
}
|
|
190
|
+
export default A2ASidebar;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ReactorReactOutput } from '@datalayer/reactor/react';
|
|
2
|
+
export declare const A2A_SIDEBAR_PLUGIN_NAME = "@datalayer/loop-plugin-a2a-sidebar";
|
|
3
|
+
export declare const A2ASidebarPlugin: import("@datalayer/reactor").ReactorPlugin<Record<string, never>, unknown, ReactorReactOutput>;
|
|
4
|
+
export { A2ASidebar, describeRemoteAgents, remoteStatusOf, type A2ARemoteAgentView, type A2ARemoteStatus, } from './A2ASidebar';
|
|
5
|
+
export default A2ASidebarPlugin;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* `@datalayer/loop-plugin-a2a-sidebar` — the agents reached over A2A, at the
|
|
8
|
+
* side of the workspace.
|
|
9
|
+
*
|
|
10
|
+
* The chat boxes a delegated run under its tool card; this keeps the same box
|
|
11
|
+
* in view while the chat scrolls, and lists every A2A agent the chat's agent
|
|
12
|
+
* can reach with where it runs, its card, and what it is doing.
|
|
13
|
+
*
|
|
14
|
+
* @module loop/plugins/a2a-sidebar
|
|
15
|
+
*/
|
|
16
|
+
import { definePlugin } from '@datalayer/reactor';
|
|
17
|
+
import { LoopSlots } from '../../core';
|
|
18
|
+
import { A2ASidebar } from './A2ASidebar';
|
|
19
|
+
export const A2A_SIDEBAR_PLUGIN_NAME = '@datalayer/loop-plugin-a2a-sidebar';
|
|
20
|
+
export const A2ASidebarPlugin = definePlugin({
|
|
21
|
+
name: A2A_SIDEBAR_PLUGIN_NAME,
|
|
22
|
+
displayName: 'A2A sidebar',
|
|
23
|
+
description: 'The agents reached over A2A, and the run under way.',
|
|
24
|
+
octicon: 'broadcast',
|
|
25
|
+
emoji: '\u{1F4E1}',
|
|
26
|
+
build: () => ({
|
|
27
|
+
components: [
|
|
28
|
+
{
|
|
29
|
+
id: 'a2a-sidebar',
|
|
30
|
+
slot: LoopSlots.sidebar,
|
|
31
|
+
// Part of the work, so above the plugins panel (900).
|
|
32
|
+
order: 100,
|
|
33
|
+
Component: ({ workspace }) => (_jsx(A2ASidebar, { workspace: workspace })),
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
}),
|
|
37
|
+
});
|
|
38
|
+
export { A2ASidebar, describeRemoteAgents, remoteStatusOf, } from './A2ASidebar';
|
|
39
|
+
export default A2ASidebarPlugin;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The A2UI view: what the sandbox produced, rendered.
|
|
3
|
+
*
|
|
4
|
+
* The conversion happens on the server (D20), so this view only receives
|
|
5
|
+
* messages and draws them. That is what lets the terminal show a degraded
|
|
6
|
+
* version of the same surface instead of a second implementation.
|
|
7
|
+
*
|
|
8
|
+
* @module loop/plugins/a2ui/A2uiView
|
|
9
|
+
*/
|
|
10
|
+
import type { JSX } from 'react';
|
|
11
|
+
import type { LoopViewProps } from '../../core';
|
|
12
|
+
export default function A2uiView({ workspace }: LoopViewProps): JSX.Element;
|