@datalayer/agent-runtimes 1.0.28 → 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 +18 -5
- 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 +76 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +81 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +12 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +132 -25
- package/lib/components/code-sandboxes/CodeSandboxNames.js +75 -29
- package/lib/components/code-sandboxes/CodeSandboxPicker.d.ts +14 -1
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +226 -45
- 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 +16 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +69 -12
- 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.d.ts +29 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +90 -0
- package/lib/components/code-sandboxes/index.d.ts +3 -0
- package/lib/components/code-sandboxes/index.js +3 -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 +7 -7
- 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/identity/index.d.ts +1 -1
- package/lib/identity/index.js +1 -1
- package/lib/identity/types.d.ts +1 -1
- package/lib/identity/types.js +1 -1
- 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 +53 -0
- package/lib/models/CodeSandboxVariant.js +77 -0
- 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 +1 -1
- package/lib/models/index.js +1 -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 +41 -16
- 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/envvars.d.ts +1 -1
- package/lib/specs/envvars.js +3 -3
- 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 +27 -4
- 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 +17 -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 +279 -111
- 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
package/lib/AgentDocument.js
CHANGED
|
@@ -21,31 +21,21 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
21
21
|
import '@datalayer/jupyter-react/lib/css/PrismCss';
|
|
22
22
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
23
23
|
import { $getRoot, $createParagraphNode } from 'lexical';
|
|
24
|
-
import {
|
|
25
|
-
import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
|
|
24
|
+
import { LexicalExtensionComposer } from '@lexical/react/LexicalExtensionComposer';
|
|
26
25
|
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
|
|
27
|
-
import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';
|
|
28
26
|
import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin';
|
|
29
27
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
30
|
-
import { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';
|
|
31
|
-
import { AutoFocusPlugin } from '@lexical/react/LexicalAutoFocusPlugin';
|
|
32
|
-
import { MarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';
|
|
33
|
-
import { TRANSFORMERS } from '@lexical/markdown';
|
|
34
|
-
import { registerCodeHighlighting } from '@lexical/code';
|
|
35
|
-
import { ListPlugin } from '@lexical/react/LexicalListPlugin';
|
|
36
|
-
import { CheckListPlugin } from '@lexical/react/LexicalCheckListPlugin';
|
|
37
|
-
import { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';
|
|
38
28
|
import { Text, Spinner } from '@primer/react';
|
|
39
29
|
import { AlertIcon } from '@primer/octicons-react';
|
|
40
30
|
import { AppearanceControlsWithStore, Box, createThemeStore, DatalayerThemeProvider, setupPrimerPortals, themeConfigs, useSystemColorMode, } from '@datalayer/primer-addons';
|
|
41
31
|
import { JupyterReactTheme, disposeServiceManager, loadJupyterConfig, getJupyterServerUrl, getJupyterServerToken, setJupyterServerUrl, setJupyterServerToken, useJupyter, } from '@datalayer/jupyter-react';
|
|
42
|
-
import { ComponentPickerMenuPlugin,
|
|
32
|
+
import { ComponentPickerMenuPlugin, JupyterInputOutputPlugin, DraggableBlockPlugin, LexicalConfigProvider, LexicalStatePlugin, FloatingTextFormatToolbarPlugin, CodeActionMenuPlugin, TableCellResizerPlugin, } from '@datalayer/jupyter-lexical';
|
|
43
33
|
import { ServiceManager, ServerConnection } from '@jupyterlab/services';
|
|
44
34
|
import { Chat } from './chat';
|
|
45
35
|
import { ChatInlinePlugin } from './lexical/ChatInlinePlugin';
|
|
46
36
|
import { useChatInlineToolbarItems } from './lexical/useChatInlineToolbarItems';
|
|
47
37
|
import { useLexicalTools } from './tools/adapters/agent-runtimes/lexicalHooks';
|
|
48
|
-
import {
|
|
38
|
+
import { editorExtension } from './examples/lexical/editorConfig';
|
|
49
39
|
import { DEFAULT_MODEL } from './specs';
|
|
50
40
|
import '@datalayer/jupyter-lexical/style/index.css';
|
|
51
41
|
import './examples/lexical/lexical-theme.css';
|
|
@@ -76,7 +66,7 @@ async function fetchStartupKernelId() {
|
|
|
76
66
|
}
|
|
77
67
|
const payload = await resp.json();
|
|
78
68
|
const sandbox = payload?.sandbox;
|
|
79
|
-
if (sandbox?.variant !== 'jupyter') {
|
|
69
|
+
if (sandbox?.variant !== 'jupyter-server') {
|
|
80
70
|
return undefined;
|
|
81
71
|
}
|
|
82
72
|
const kernelId = sandbox?.kernel_id;
|
|
@@ -178,13 +168,6 @@ function LoadContentPlugin({ content }) {
|
|
|
178
168
|
}, [content, editor]);
|
|
179
169
|
return null;
|
|
180
170
|
}
|
|
181
|
-
function CodeHighlightPlugin() {
|
|
182
|
-
const [editor] = useLexicalComposerContext();
|
|
183
|
-
useEffect(() => {
|
|
184
|
-
return registerCodeHighlighting(editor);
|
|
185
|
-
}, [editor]);
|
|
186
|
-
return null;
|
|
187
|
-
}
|
|
188
171
|
function KernelPluginsInner({ serviceManager, kernelId, onKernelReady, }) {
|
|
189
172
|
const { defaultKernel } = useJupyter({
|
|
190
173
|
serviceManager,
|
|
@@ -231,7 +214,7 @@ const LexicalPanel = React.memo(function LexicalPanel({ serviceManager, kernelId
|
|
|
231
214
|
overflow: 'auto',
|
|
232
215
|
borderRight: '1px solid',
|
|
233
216
|
borderColor: 'border.default',
|
|
234
|
-
}, children: _jsx(Box, { sx: { padding: 3 }, children: _jsxs(LexicalConfigProvider, { lexicalId: DOCUMENT_ID, serviceManager: serviceManager, children: [_jsx(LexicalToolsPlugin, { onToolsReady: onToolsReady }), _jsx(
|
|
217
|
+
}, children: _jsx(Box, { sx: { padding: 3 }, children: _jsxs(LexicalConfigProvider, { lexicalId: DOCUMENT_ID, serviceManager: serviceManager, children: [_jsx(LexicalToolsPlugin, { onToolsReady: onToolsReady }), _jsx(LexicalExtensionComposer, { extension: editorExtension, contentEditable: null, children: _jsxs("div", { className: "lexical-editor-inner", ref: onRef, children: [_jsx(LexicalStatePlugin, {}), _jsx(ContentEditable, { className: "lexical-editor-content", "aria-label": "Lexical Editor" }), _jsx(OnChangePlugin, { onChange: handleChange }), _jsx(LoadContentPlugin, {}), _jsx(TableCellResizerPlugin, {}), _jsx(JupyterReactTheme, { colormode: colormode, backgroundColor: backgroundColor, children: _jsx(KernelPluginsInner, { serviceManager: serviceManager, kernelId: kernelId, onKernelReady: onKernelReady }) }), floatingAnchorElem && (_jsxs(_Fragment, { children: [_jsx(DraggableBlockPlugin, { anchorElem: floatingAnchorElem }), _jsx(FloatingTextFormatToolbarPlugin, { anchorElem: floatingAnchorElem, setIsLinkEditMode: setIsLinkEditMode, extraItems: toolbarItems }), _jsx(CodeActionMenuPlugin, { anchorElem: floatingAnchorElem })] })), _jsx(ChatInlinePlugin, { protocol: {
|
|
235
218
|
type: 'ag-ui',
|
|
236
219
|
endpoint: agUiEndpoint,
|
|
237
220
|
}, isOpen: isAiOpen, onClose: closeAi, pendingPrompt: pendingPrompt, onPendingPromptConsumed: clearPendingPrompt })] }) })] }) }) }));
|
package/lib/AgentNode.d.ts
CHANGED
package/lib/AgentNode.js
CHANGED
|
@@ -3,17 +3,18 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
4
|
* Distributed under the terms of the Modified BSD License.
|
|
5
5
|
*/
|
|
6
|
-
import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
|
|
6
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from 'react';
|
|
7
7
|
import { useQueryClient } from '@tanstack/react-query';
|
|
8
8
|
import { AiAgentIcon, AlienIcon } from '@datalayer/icons-react';
|
|
9
9
|
import { DatalayerLogoText, DatalayerThemeProvider, getColorPalette, getLogoColors, setupPrimerPortals, themeConfigs, } from '@datalayer/primer-addons';
|
|
10
10
|
import { AppearanceMenu } from '@datalayer/primer-addons/lib/components/appearance';
|
|
11
|
-
import { ActionList, ActionMenu, Box, Button, Heading, Label, PageHeader, PageLayout, Text, } from '@primer/react';
|
|
11
|
+
import { ActionList, ActionMenu, Box, Button, Heading, Label, PageHeader, PageLayout, Spinner, Text, } from '@primer/react';
|
|
12
12
|
import { CommentIcon, HomeIcon, KeyAsteriskIcon, LockIcon, MoonIcon, PeopleIcon, PersonIcon, GearIcon, SignOutIcon, } from '@primer/octicons-react';
|
|
13
13
|
import { SignInSimple } from '@datalayer/core/lib/views/iam';
|
|
14
14
|
import { UserAvatar } from '@datalayer/core/lib/components/avatars';
|
|
15
15
|
import { UserBadge } from '@datalayer/core/lib/views/profile';
|
|
16
16
|
import { useSimpleAuthStore } from '@datalayer/core/lib/views/otel';
|
|
17
|
+
import * as coreState from '@datalayer/core/lib/state';
|
|
17
18
|
import { useIAMStore } from '@datalayer/core/lib/state';
|
|
18
19
|
import { BillingEntitySelect, } from '@datalayer/core/lib/components/billing';
|
|
19
20
|
import { ShareAccessComponent } from '@datalayer/core/lib/components/sharing';
|
|
@@ -50,11 +51,25 @@ const LOCAL_JUPYTER_SANDBOX = (() => {
|
|
|
50
51
|
}
|
|
51
52
|
})();
|
|
52
53
|
const DEFAULT_DATALAYER_SERVICE_URL = 'https://prod1.datalayer.run';
|
|
54
|
+
/** The protocol a node reports for an agent, as the chat understands it. */
|
|
55
|
+
const normalizeChatProtocol = (value) => value === 'vercel-ai' || value === 'vercel-ai-jupyter'
|
|
56
|
+
? 'vercel-ai'
|
|
57
|
+
: 'ag-ui';
|
|
53
58
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* via /auth/bootstrap, so the sign-out survives a page refresh.
|
|
59
|
+
* Whether a JWT's `exp` is in the past. A token that does not parse is not
|
|
60
|
+
* called expired — that is IAM's verdict to give, and it gives it as a 401.
|
|
57
61
|
*/
|
|
62
|
+
const isJwtExpired = (token) => {
|
|
63
|
+
try {
|
|
64
|
+
const payload = token.split('.')[1];
|
|
65
|
+
const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));
|
|
66
|
+
const exp = Number(JSON.parse(json)?.exp);
|
|
67
|
+
return Number.isFinite(exp) && exp * 1000 < Date.now();
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
58
73
|
const AUTO_BOOTSTRAP_DISABLED_KEY = 'agent-node-auto-bootstrap-disabled';
|
|
59
74
|
/** Persist (or clear) the signed-out intent in localStorage. */
|
|
60
75
|
function setAutoBootstrapDisabled(disabled) {
|
|
@@ -294,9 +309,12 @@ export function AgentNode() {
|
|
|
294
309
|
// ── Ephemeral document RTC (shared Lexical/Loro room with the SaaS UI) ────
|
|
295
310
|
// The node provisions a spacer *lexical* room (distinct from the notebook
|
|
296
311
|
// room) on registration and stores its uid as `collaboration_document_uid`.
|
|
297
|
-
// Both peers join that Loro room over the spacer lexical WebSocket.
|
|
298
|
-
//
|
|
299
|
-
//
|
|
312
|
+
// Both peers join that Loro room over the spacer lexical WebSocket.
|
|
313
|
+
//
|
|
314
|
+
// The URL is the bare endpoint: the Loro provider composes
|
|
315
|
+
// `${websocketUrl}/${roomId}` itself, so a query string here would land
|
|
316
|
+
// *between* the path and the room (`…/ws?token=…/ROOM`) and match no route —
|
|
317
|
+
// which is what this used to do. The spacer reads no token on this socket.
|
|
300
318
|
const collaborationDocumentUser = useIAMStore(state => state.user);
|
|
301
319
|
const ephemeralDocumentCollaboration = useMemo(() => {
|
|
302
320
|
const documentRoomId = configuration.collaboration_document_uid;
|
|
@@ -305,7 +323,7 @@ export function AgentNode() {
|
|
|
305
323
|
}
|
|
306
324
|
const spacerUrl = resolveSpacerUrl();
|
|
307
325
|
const wsSpacer = String(spacerUrl).replace(/^http/, 'ws');
|
|
308
|
-
const websocketUrl = `${wsSpacer}/api/spacer/v1/lexical/ws
|
|
326
|
+
const websocketUrl = `${wsSpacer}/api/spacer/v1/lexical/ws`;
|
|
309
327
|
const u = collaborationDocumentUser;
|
|
310
328
|
return {
|
|
311
329
|
websocketUrl,
|
|
@@ -330,6 +348,10 @@ export function AgentNode() {
|
|
|
330
348
|
const [inferenceDefaultModel, setInferenceDefaultModel] = useState(null);
|
|
331
349
|
const [configurationLoaded, setConfigurationLoaded] = useState(false);
|
|
332
350
|
const [isActiveAgentRunning, setIsActiveAgentRunning] = useState(false);
|
|
351
|
+
// The protocol the active agent actually speaks, as reported by the node.
|
|
352
|
+
// The chat must speak the same one; a node hosts AG-UI and Vercel AI
|
|
353
|
+
// agents alike.
|
|
354
|
+
const [activeAgentProtocol, setActiveAgentProtocol] = useState('ag-ui');
|
|
333
355
|
const chatRestoreAttemptRef = useRef('');
|
|
334
356
|
const hasActiveAgent = Boolean(String(configuration.active_agent_id || '').trim()) &&
|
|
335
357
|
isActiveAgentRunning;
|
|
@@ -337,7 +359,7 @@ export function AgentNode() {
|
|
|
337
359
|
configuration.deployment_target === 'aws';
|
|
338
360
|
// ── Local sandbox runtime override for the ephemeral surfaces ─────────────
|
|
339
361
|
// In the node-local webapp the agent's Jupyter sandbox is a LOCAL server, not
|
|
340
|
-
// a Kubernetes pod resolvable by `
|
|
362
|
+
// a Kubernetes pod resolvable by `runtime_name`, so the ephemeral notebook and
|
|
341
363
|
// document surfaces cannot bind their kernel through the runtimes pod lookup.
|
|
342
364
|
// Instead we read the live sandbox Jupyter endpoint from `/health/startup`
|
|
343
365
|
// and pass it as an explicit override so the surfaces connect a service
|
|
@@ -370,7 +392,7 @@ export function AgentNode() {
|
|
|
370
392
|
return {
|
|
371
393
|
baseUrl: LOCAL_JUPYTER_SANDBOX.baseUrl,
|
|
372
394
|
token: LOCAL_JUPYTER_SANDBOX.token || undefined,
|
|
373
|
-
|
|
395
|
+
runtimeName: 'agent-node-sandbox',
|
|
374
396
|
};
|
|
375
397
|
});
|
|
376
398
|
return;
|
|
@@ -392,7 +414,7 @@ export function AgentNode() {
|
|
|
392
414
|
const payload = await resp.json();
|
|
393
415
|
const sandbox = payload?.sandbox;
|
|
394
416
|
const jupyterUrl = String(sandbox?.jupyter_url || '').trim();
|
|
395
|
-
if (sandbox?.variant !== 'jupyter' || !jupyterUrl) {
|
|
417
|
+
if (sandbox?.variant !== 'jupyter-server' || !jupyterUrl) {
|
|
396
418
|
return;
|
|
397
419
|
}
|
|
398
420
|
const jupyterToken = String(sandbox?.jupyter_token || '').trim();
|
|
@@ -411,7 +433,7 @@ export function AgentNode() {
|
|
|
411
433
|
return {
|
|
412
434
|
baseUrl: jupyterUrl,
|
|
413
435
|
token: jupyterToken || undefined,
|
|
414
|
-
|
|
436
|
+
runtimeName: 'agent-node-sandbox',
|
|
415
437
|
};
|
|
416
438
|
});
|
|
417
439
|
// Endpoint resolved — stop the fast poll.
|
|
@@ -467,8 +489,31 @@ export function AgentNode() {
|
|
|
467
489
|
: typeof spec.welcome_message === 'string'
|
|
468
490
|
? spec.welcome_message
|
|
469
491
|
: undefined,
|
|
492
|
+
/*
|
|
493
|
+
* Either shape, because this reads a spec off a running node.
|
|
494
|
+
*
|
|
495
|
+
* A node may have been launched from an older catalogue, where a
|
|
496
|
+
* suggestion was a bare string. Filtering to strings — which is what
|
|
497
|
+
* this did — silently emptied the list the moment the catalogue
|
|
498
|
+
* started sending the mapping form, and an empty state with no
|
|
499
|
+
* openers looks like an agent with nothing to offer.
|
|
500
|
+
*/
|
|
470
501
|
suggestions: Array.isArray(spec.suggestions)
|
|
471
|
-
? spec.suggestions
|
|
502
|
+
? spec.suggestions
|
|
503
|
+
.map(item => {
|
|
504
|
+
if (typeof item === 'string') {
|
|
505
|
+
return { text: item };
|
|
506
|
+
}
|
|
507
|
+
const entry = item;
|
|
508
|
+
return {
|
|
509
|
+
text: typeof entry?.text === 'string' ? entry.text : '',
|
|
510
|
+
// The label, when the spec gave one shorter than the text.
|
|
511
|
+
summary: typeof entry?.summary === 'string'
|
|
512
|
+
? entry.summary
|
|
513
|
+
: undefined,
|
|
514
|
+
};
|
|
515
|
+
})
|
|
516
|
+
.filter(entry => !!entry.text)
|
|
472
517
|
: undefined,
|
|
473
518
|
});
|
|
474
519
|
}
|
|
@@ -487,7 +532,10 @@ export function AgentNode() {
|
|
|
487
532
|
agentSpecInfo?.description ||
|
|
488
533
|
'Node-local chat';
|
|
489
534
|
const chatSuggestions = agentSpecInfo?.suggestions && agentSpecInfo.suggestions.length > 0
|
|
490
|
-
? agentSpecInfo.suggestions.map(s => ({
|
|
535
|
+
? agentSpecInfo.suggestions.map(s => ({
|
|
536
|
+
title: s.summary ?? s.text,
|
|
537
|
+
message: s.text,
|
|
538
|
+
}))
|
|
491
539
|
: undefined;
|
|
492
540
|
const [banner, setBanner] = useState(null);
|
|
493
541
|
const bannerTimerRef = useRef(null);
|
|
@@ -528,6 +576,61 @@ export function AgentNode() {
|
|
|
528
576
|
}),
|
|
529
577
|
});
|
|
530
578
|
}, []);
|
|
579
|
+
// A token that IAM no longer accepts ends the session, here and now.
|
|
580
|
+
//
|
|
581
|
+
// The billing entity selector reads the signed-in user from the core IAM
|
|
582
|
+
// store, which this page fills by asking IAM `whoami` with the node's token.
|
|
583
|
+
// When that call fails the core store logs its user out while the node's own
|
|
584
|
+
// token stays — and the page used to sit there "loading" a user that was
|
|
585
|
+
// never coming. A token past its `exp` is signed out at once; one that IAM
|
|
586
|
+
// rejects is retried briefly (a plane still starting), then signed out too.
|
|
587
|
+
const [identityAttempt, setIdentityAttempt] = useState(0);
|
|
588
|
+
const expireSession = useCallback((why) => {
|
|
589
|
+
showBanner('info', `${why} Please sign in again.`);
|
|
590
|
+
setAutoBootstrapDisabled(true);
|
|
591
|
+
setDisableAutoBootstrap(true);
|
|
592
|
+
void pushCredentials(token, null).catch(() => {
|
|
593
|
+
// Best-effort; local state is signed out regardless.
|
|
594
|
+
});
|
|
595
|
+
clearAuth();
|
|
596
|
+
setStep('auth');
|
|
597
|
+
}, [token, showBanner, pushCredentials, clearAuth]);
|
|
598
|
+
useEffect(() => {
|
|
599
|
+
if (!token || iamUser) {
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
if (isJwtExpired(token)) {
|
|
603
|
+
expireSession('Your session has expired.');
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
let cancelled = false;
|
|
607
|
+
const attempt = identityAttempt;
|
|
608
|
+
const timer = window.setTimeout(async () => {
|
|
609
|
+
try {
|
|
610
|
+
const api = coreState.iamStore.getState();
|
|
611
|
+
await api.refreshUserByToken(token);
|
|
612
|
+
}
|
|
613
|
+
catch {
|
|
614
|
+
// Decided below, on whether a user arrived.
|
|
615
|
+
}
|
|
616
|
+
if (cancelled) {
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
if (coreState.iamStore.getState().user) {
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
if (attempt >= 2) {
|
|
623
|
+
expireSession(`${resolveIamUrl()} did not recognise your session.`);
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
setIdentityAttempt(n => n + 1);
|
|
627
|
+
}
|
|
628
|
+
}, attempt === 0 ? 1500 : 4000);
|
|
629
|
+
return () => {
|
|
630
|
+
cancelled = true;
|
|
631
|
+
window.clearTimeout(timer);
|
|
632
|
+
};
|
|
633
|
+
}, [token, iamUser, identityAttempt, expireSession]);
|
|
531
634
|
// Refs kept in sync with state so the BillingEntitySelect callbacks
|
|
532
635
|
// (passed via stable identities) can read the latest values without
|
|
533
636
|
// being re-created on every render — re-created callbacks made
|
|
@@ -700,13 +803,25 @@ export function AgentNode() {
|
|
|
700
803
|
// Best-effort; backend may not be reachable in some local setups.
|
|
701
804
|
});
|
|
702
805
|
}, [token, pushCredentials]);
|
|
703
|
-
|
|
704
|
-
|
|
806
|
+
// Before paint, and before any child effect: children fetch runtimes and
|
|
807
|
+
// the like in their own effects, and a parent's layout effect runs first.
|
|
808
|
+
// Seeded in a plain effect behind a dynamic import, as this used to be,
|
|
809
|
+
// the first round of requests went to the core store's *default* URLs —
|
|
810
|
+
// production — and came back 401 against a local token before the local
|
|
811
|
+
// plane was even named.
|
|
812
|
+
useLayoutEffect(() => {
|
|
813
|
+
Promise.resolve(coreState).then(({ iamStore, coreStore }) => {
|
|
705
814
|
const iamUrl = resolveIamUrl();
|
|
706
815
|
const runtimesUrl = resolveRuntimesUrl();
|
|
707
816
|
const aiInferenceUrl = getConfigUrlFromDocument('aiInferenceUrl') ||
|
|
708
817
|
import.meta.env?.VITE_DATALAYER_AI_INFERENCE_URL ||
|
|
709
|
-
|
|
818
|
+
'https://r1.datalayer.run';
|
|
819
|
+
const aiAgentsUrl = getConfigUrlFromDocument('aiAgentsUrl') ||
|
|
820
|
+
import.meta.env?.VITE_DATALAYER_AI_AGENTS_URL ||
|
|
821
|
+
'https://r1.datalayer.run';
|
|
822
|
+
const jupyterMcpServerUrl = getConfigUrlFromDocument('jupyterMcpServerUrl') ||
|
|
823
|
+
import.meta.env?.VITE_DATALAYER_JUPYTER_MCP_SERVER_URL ||
|
|
824
|
+
'https://mcp.datalayer.run/mcp';
|
|
710
825
|
// Seed all per-service URLs to match the main UI login behavior.
|
|
711
826
|
const coreApi = coreStore.getState();
|
|
712
827
|
const prevCfg = coreApi.configuration ?? {};
|
|
@@ -715,9 +830,9 @@ export function AgentNode() {
|
|
|
715
830
|
runtimesUrl,
|
|
716
831
|
spacerUrl: iamUrl,
|
|
717
832
|
libraryUrl: iamUrl,
|
|
718
|
-
aiAgentsUrl
|
|
833
|
+
aiAgentsUrl,
|
|
719
834
|
aiInferenceUrl: aiInferenceUrl,
|
|
720
|
-
jupyterMcpServerUrl
|
|
835
|
+
jupyterMcpServerUrl,
|
|
721
836
|
otelUrl: iamUrl,
|
|
722
837
|
growthUrl: iamUrl,
|
|
723
838
|
successUrl: iamUrl,
|
|
@@ -810,6 +925,60 @@ export function AgentNode() {
|
|
|
810
925
|
configuration.active_agent_id,
|
|
811
926
|
selectedAgentId,
|
|
812
927
|
]);
|
|
928
|
+
// Keep "is the active agent running" true to life.
|
|
929
|
+
//
|
|
930
|
+
// The restore effect above decides that once, when the page loads, so that
|
|
931
|
+
// it can send the reader to the chat once and not on every tick. But the
|
|
932
|
+
// answer changes: an agent launched later from the gallery, by another tab,
|
|
933
|
+
// or through the API (the SaaS, say) used to leave the header's Chat
|
|
934
|
+
// disabled for as long as the page stayed open, while the gallery — which
|
|
935
|
+
// refetches — plainly showed the agent as active.
|
|
936
|
+
useEffect(() => {
|
|
937
|
+
if (!token || !configurationLoaded) {
|
|
938
|
+
return;
|
|
939
|
+
}
|
|
940
|
+
const activeAgentId = (configuration.active_agent_id || '').trim();
|
|
941
|
+
if (!activeAgentId) {
|
|
942
|
+
setIsActiveAgentRunning(false);
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
945
|
+
let cancelled = false;
|
|
946
|
+
const check = async () => {
|
|
947
|
+
try {
|
|
948
|
+
const response = await fetch(`${AGENT_RUNTIMES_BASE_URL}/api/v1/agents`, { headers: { Authorization: `Bearer ${token}` } });
|
|
949
|
+
if (!response.ok || cancelled) {
|
|
950
|
+
return;
|
|
951
|
+
}
|
|
952
|
+
const payload = await response.json().catch(() => null);
|
|
953
|
+
if (cancelled) {
|
|
954
|
+
return;
|
|
955
|
+
}
|
|
956
|
+
const agents = Array.isArray(payload)
|
|
957
|
+
? payload
|
|
958
|
+
: payload?.agents || payload?.items || [];
|
|
959
|
+
const active = agents.find(agent => {
|
|
960
|
+
const id = String(agent?.agent_id || agent?.id || '').trim();
|
|
961
|
+
return id === activeAgentId;
|
|
962
|
+
});
|
|
963
|
+
setIsActiveAgentRunning(Boolean(active));
|
|
964
|
+
if (active) {
|
|
965
|
+
setActiveAgentProtocol(normalizeChatProtocol(active.protocol ?? active.transport));
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
catch {
|
|
969
|
+
// Leave the last known answer; the next tick asks again.
|
|
970
|
+
}
|
|
971
|
+
};
|
|
972
|
+
void check();
|
|
973
|
+
const timer = window.setInterval(() => void check(), 10_000);
|
|
974
|
+
const onFocus = () => void check();
|
|
975
|
+
window.addEventListener('focus', onFocus);
|
|
976
|
+
return () => {
|
|
977
|
+
cancelled = true;
|
|
978
|
+
window.clearInterval(timer);
|
|
979
|
+
window.removeEventListener('focus', onFocus);
|
|
980
|
+
};
|
|
981
|
+
}, [token, configurationLoaded, configuration.active_agent_id]);
|
|
813
982
|
useEffect(() => {
|
|
814
983
|
// If a persisted session is already authenticated on first load,
|
|
815
984
|
// skip the auth screen and land on the agents gallery.
|
|
@@ -1121,7 +1290,7 @@ export function AgentNode() {
|
|
|
1121
1290
|
borderColor: 'border.default',
|
|
1122
1291
|
borderRadius: 2,
|
|
1123
1292
|
p: 3,
|
|
1124
|
-
}, children: [_jsx(Heading, { sx: { fontSize: 2, m: 0, mb: 2 }, children: "Billing Entity" }), _jsx(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: "Loading billing
|
|
1293
|
+
}, children: [_jsx(Heading, { sx: { fontSize: 2, m: 0, mb: 2 }, children: "Billing Entity" }), _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(Spinner, { size: "small" }), _jsx(Text, { sx: { color: 'fg.muted', fontSize: 1 }, children: "Loading billing entities..." })] })] }))] }), _jsx(Box, { sx: {
|
|
1125
1294
|
display: 'flex',
|
|
1126
1295
|
flexDirection: 'column',
|
|
1127
1296
|
gap: 2,
|
|
@@ -1132,9 +1301,10 @@ export function AgentNode() {
|
|
|
1132
1301
|
p: 3,
|
|
1133
1302
|
}, children: [_jsx(Heading, { sx: { fontSize: 2, m: 0, mb: 2 }, children: "Share" }), _jsx(ShareAccessComponent, { isOpen: true, displayMode: "inline", requestUrl: `${AGENT_RUNTIMES_BASE_URL}/api/v1/agent-node/sharing`, resourceLabel: "Agent Node", resourceName: "this Agent Node", onClose: handleSharingInlineClose })] }) })] }), error && _jsx(Text, { sx: { color: 'danger.fg' }, children: error }), _jsx(Box, { sx: { display: 'flex', justifyContent: 'flex-end' }, children: _jsx(Button, { variant: "primary", onClick: saveConfiguration, disabled: isSaving, children: isSaving ? 'Saving...' : 'Save' }) })] })), step === 'profile' && (_jsx(AgentNodeProfileView, { token: token, onTokenExpired: handleSignOut, avatarFallbackBackground: avatarPalette.bgAlt, avatarFallbackForeground: avatarPalette.primary })), step === 'gallery' && (_jsx(AgentNodeGallery, { baseUrl: AGENT_RUNTIMES_BASE_URL, token: token, activeAgentId: configuration.active_agent_id, onLaunchError: message => {
|
|
1134
1303
|
showBanner('error', message);
|
|
1135
|
-
}, onLaunched: agentId => {
|
|
1304
|
+
}, onLaunched: (agentId, protocol) => {
|
|
1136
1305
|
setSelectedAgentId(agentId);
|
|
1137
1306
|
setIsActiveAgentRunning(true);
|
|
1307
|
+
setActiveAgentProtocol(normalizeChatProtocol(protocol));
|
|
1138
1308
|
const nextConfiguration = {
|
|
1139
1309
|
...configuration,
|
|
1140
1310
|
active_agent_id: agentId,
|
|
@@ -1172,6 +1342,6 @@ export function AgentNode() {
|
|
|
1172
1342
|
borderColor: 'border.default',
|
|
1173
1343
|
borderRadius: 2,
|
|
1174
1344
|
overflow: 'hidden',
|
|
1175
|
-
}, children: isSaasOnlyChat ? (_jsxs(Box, { sx: { p: 4 }, children: [_jsx(Heading, { sx: { fontSize: 2, mb: 2 }, children: "Chat From SaaS" }), _jsx(Text, { sx: { color: 'fg.muted' }, children: "This Agent Node deployment is configured for SaaS-only chat. Use the Datalayer Agent Nodes view to open chat sessions over the runtimes tunnel." })] })) : (_jsx(Chat, { protocol:
|
|
1345
|
+
}, children: isSaasOnlyChat ? (_jsxs(Box, { sx: { p: 4 }, children: [_jsx(Heading, { sx: { fontSize: 2, mb: 2 }, children: "Chat From SaaS" }), _jsx(Text, { sx: { color: 'fg.muted' }, children: "This Agent Node deployment is configured for SaaS-only chat. Use the Datalayer Agent Nodes view to open chat sessions over the runtimes tunnel." })] })) : (_jsx(Chat, { protocol: activeAgentProtocol, baseUrl: AGENT_RUNTIMES_BASE_URL, agentId: selectedAgentId, title: chatTitle, placeholder: "Send a message...", description: chatDescription, suggestions: chatSuggestions, submitOnSuggestionClick: true, showHeader: true, height: '70vh', showModelSelector: true, showToolsMenu: true, showSkillsMenu: true, showTokenUsage: true, showInformation: true, autoFocus: true, enableEphemeralNotebook: true, enableEphemeralDocument: true, initialEphemeralSurfaceMode: "notebook", runtimeId: selectedAgentId, ephemeralRuntimeOverride: sandboxRuntimeOverride, kernelEnvironmentName: sandboxEnvironmentName, themeVariant: themeVariant, colorMode: colorMode, ephemeralNotebookCollaborationProvider: ephemeralNotebookCollaborationProvider, ephemeralNotebookCollaborationDocumentId: ephemeralCollaborationDocumentId, ephemeralDocumentCollaboration: ephemeralDocumentCollaboration, historyEndpoint: `${AGENT_RUNTIMES_BASE_URL}/api/v1/history` })) }))] })] }) }) }));
|
|
1176
1346
|
}
|
|
1177
1347
|
export default AgentNode;
|
package/lib/AgentNotebook.js
CHANGED
|
@@ -60,7 +60,7 @@ async function fetchStartupKernelId() {
|
|
|
60
60
|
}
|
|
61
61
|
const payload = await resp.json();
|
|
62
62
|
const sandbox = payload?.sandbox;
|
|
63
|
-
if (sandbox?.variant !== 'jupyter') {
|
|
63
|
+
if (sandbox?.variant !== 'jupyter-server') {
|
|
64
64
|
return undefined;
|
|
65
65
|
}
|
|
66
66
|
const kernelId = sandbox?.kernel_id;
|
package/lib/App.d.ts
CHANGED
package/lib/AppExamples2.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { JSX } from 'react';
|
|
1
2
|
/**
|
|
2
3
|
* A single agent specification returned by ``GET /api/v1/agents/library``.
|
|
3
4
|
* Only the fields consumed by the gallery cards are typed here.
|
|
@@ -14,7 +15,19 @@ export type AgentspecSummary = {
|
|
|
14
15
|
icon?: string;
|
|
15
16
|
emoji?: string;
|
|
16
17
|
color?: string;
|
|
18
|
+
/** The chat protocol the spec is written for: ``ag-ui`` or ``vercel-ai``. */
|
|
19
|
+
protocol?: string;
|
|
17
20
|
};
|
|
21
|
+
/** The transports a node launches agents with, and the chat can speak. */
|
|
22
|
+
export type AgentTransport = 'ag-ui' | 'vercel-ai';
|
|
23
|
+
/**
|
|
24
|
+
* The transport to launch a spec with: its own when it names one the node
|
|
25
|
+
* can serve, AG-UI otherwise. A spec written for Vercel AI launched as AG-UI
|
|
26
|
+
* answered on an endpoint its chat never called.
|
|
27
|
+
*/
|
|
28
|
+
export declare const transportForSpec: (spec: {
|
|
29
|
+
protocol?: string;
|
|
30
|
+
}) => AgentTransport;
|
|
18
31
|
export type AgentNodeGalleryProps = {
|
|
19
32
|
/** Base URL of the local Agent Runtimes server. */
|
|
20
33
|
baseUrl: string;
|
|
@@ -23,7 +36,7 @@ export type AgentNodeGalleryProps = {
|
|
|
23
36
|
/** Id of the agent currently marked active on the node, if any. */
|
|
24
37
|
activeAgentId?: string | null;
|
|
25
38
|
/** Called with the launched agent id once it is running and set active. */
|
|
26
|
-
onLaunched: (agentId: string) => void;
|
|
39
|
+
onLaunched: (agentId: string, protocol: AgentTransport) => void;
|
|
27
40
|
/** Called once the active agent is terminated and cleared on the node. */
|
|
28
41
|
onTerminated?: (agentId: string) => void;
|
|
29
42
|
/** Optional callback used by parent to display launch errors (e.g. toast). */
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
-
* Distributed under the terms of the Modified BSD License.
|
|
5
|
-
*/
|
|
6
2
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
7
3
|
import { Box, Button, Heading, Label, Spinner, Text, TextInput, } from '@primer/react';
|
|
8
4
|
import { AgentIcon, BeakerIcon, BookIcon, BugIcon, CheckCircleFillIcon, CloudIcon, CodeIcon, CopilotIcon, CpuIcon, DatabaseIcon, DependabotIcon, EyeIcon, FileIcon, GearIcon, GitBranchIcon, GlobeIcon, GraphIcon, HeartIcon, HomeIcon, IssueOpenedIcon, LightBulbIcon, LinkIcon, MailIcon, MegaphoneIcon, NoteIcon, PackageIcon, PencilIcon, PeopleIcon, PlayIcon, PlugIcon, PulseIcon, RocketIcon, SearchIcon, ShareIcon, ShieldCheckIcon, ShieldIcon, SparklesFillIcon, SquirrelIcon, StarIcon, SyncIcon, TableIcon, TagIcon, TelescopeIcon, TerminalIcon, ToolsIcon, ZapIcon, } from '@primer/octicons-react';
|
|
5
|
+
/**
|
|
6
|
+
* The transport to launch a spec with: its own when it names one the node
|
|
7
|
+
* can serve, AG-UI otherwise. A spec written for Vercel AI launched as AG-UI
|
|
8
|
+
* answered on an endpoint its chat never called.
|
|
9
|
+
*/
|
|
10
|
+
export const transportForSpec = (spec) => spec.protocol === 'vercel-ai' || spec.protocol === 'vercel-ai-jupyter'
|
|
11
|
+
? 'vercel-ai'
|
|
12
|
+
: 'ag-ui';
|
|
9
13
|
const GRID_TEMPLATE = ['1fr', '1fr 1fr', 'repeat(5, minmax(0, 1fr))'];
|
|
10
14
|
const ICON_REGISTRY = {
|
|
11
15
|
// Primary agentspec icon values.
|
|
@@ -258,9 +262,9 @@ export function AgentNodeGallery({ baseUrl, token, activeAgentId, onLaunched, on
|
|
|
258
262
|
body: JSON.stringify({
|
|
259
263
|
name: requestedName,
|
|
260
264
|
agent_spec_id: spec.id,
|
|
261
|
-
transport:
|
|
262
|
-
sandbox_variant: 'jupyter',
|
|
263
|
-
sandboxVariant: 'jupyter',
|
|
265
|
+
transport: transportForSpec(spec),
|
|
266
|
+
sandbox_variant: 'jupyter-server',
|
|
267
|
+
sandboxVariant: 'jupyter-server',
|
|
264
268
|
...(LOCAL_JUPYTER_SANDBOX_URL
|
|
265
269
|
? { jupyter_sandbox: LOCAL_JUPYTER_SANDBOX_URL }
|
|
266
270
|
: {}),
|
|
@@ -325,9 +329,9 @@ export function AgentNodeGallery({ baseUrl, token, activeAgentId, onLaunched, on
|
|
|
325
329
|
body: JSON.stringify({
|
|
326
330
|
name: requestedName,
|
|
327
331
|
agent_spec_id: spec.id,
|
|
328
|
-
transport:
|
|
329
|
-
sandbox_variant: 'jupyter',
|
|
330
|
-
sandboxVariant: 'jupyter',
|
|
332
|
+
transport: transportForSpec(spec),
|
|
333
|
+
sandbox_variant: 'jupyter-server',
|
|
334
|
+
sandboxVariant: 'jupyter-server',
|
|
331
335
|
...(LOCAL_JUPYTER_SANDBOX_URL
|
|
332
336
|
? { jupyter_sandbox: LOCAL_JUPYTER_SANDBOX_URL }
|
|
333
337
|
: {}),
|
|
@@ -361,7 +365,7 @@ export function AgentNodeGallery({ baseUrl, token, activeAgentId, onLaunched, on
|
|
|
361
365
|
const variant = String(specPayload?.sandbox_variant || specPayload?.sandboxVariant || '')
|
|
362
366
|
.trim()
|
|
363
367
|
.toLowerCase();
|
|
364
|
-
mustRecreateForSandbox = variant !== 'jupyter';
|
|
368
|
+
mustRecreateForSandbox = variant !== 'jupyter-server';
|
|
365
369
|
}
|
|
366
370
|
if (specResponse.status === 404 || mustRecreateForSandbox) {
|
|
367
371
|
await fetch(`${baseUrl}/api/v1/agents/${encodeURIComponent(agentId)}`, {
|
|
@@ -374,9 +378,9 @@ export function AgentNodeGallery({ baseUrl, token, activeAgentId, onLaunched, on
|
|
|
374
378
|
body: JSON.stringify({
|
|
375
379
|
name: spec.id,
|
|
376
380
|
agent_spec_id: spec.id,
|
|
377
|
-
transport:
|
|
378
|
-
sandbox_variant: 'jupyter',
|
|
379
|
-
sandboxVariant: 'jupyter',
|
|
381
|
+
transport: transportForSpec(spec),
|
|
382
|
+
sandbox_variant: 'jupyter-server',
|
|
383
|
+
sandboxVariant: 'jupyter-server',
|
|
380
384
|
...(LOCAL_JUPYTER_SANDBOX_URL
|
|
381
385
|
? { jupyter_sandbox: LOCAL_JUPYTER_SANDBOX_URL }
|
|
382
386
|
: {}),
|
|
@@ -406,7 +410,7 @@ export function AgentNodeGallery({ baseUrl, token, activeAgentId, onLaunched, on
|
|
|
406
410
|
if (!activeResponse.ok) {
|
|
407
411
|
throw new Error(`Failed to set active agent (${activeResponse.status})`);
|
|
408
412
|
}
|
|
409
|
-
onLaunched(agentId);
|
|
413
|
+
onLaunched(agentId, transportForSpec(spec));
|
|
410
414
|
}
|
|
411
415
|
catch (reason) {
|
|
412
416
|
const message = reason?.message || 'Unable to launch agent.';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { create } from 'zustand';
|
|
6
6
|
import { createJSONStorage, persist } from 'zustand/middleware';
|
|
7
|
-
import { themeConfigs, } from '@datalayer/primer-addons';
|
|
7
|
+
import { themeConfigs, themeVariants, } from '@datalayer/primer-addons';
|
|
8
8
|
const STORAGE_KEY = 'agent-runtimes-agent-node-theme';
|
|
9
9
|
const COOKIE_MAX_AGE_SECONDS = 60 * 60 * 24 * 365;
|
|
10
10
|
const colorModeCycle = {
|
|
@@ -17,11 +17,12 @@ const normalizeThemeVariant = (value) => {
|
|
|
17
17
|
if (value === 'ocean') {
|
|
18
18
|
return 'earth';
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
// Every variant the registry knows, read from the registry: a list written
|
|
21
|
+
// out here had stopped at five, and picking any of the three added since
|
|
22
|
+
// (sand, ivory, sun) was silently turned into Earth — the selector changed
|
|
23
|
+
// and the page did not.
|
|
24
|
+
if (typeof value === 'string' &&
|
|
25
|
+
themeVariants.includes(value)) {
|
|
25
26
|
return value;
|
|
26
27
|
}
|
|
27
28
|
return 'earth';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* AgentDetails component - Shows detailed information about the agent
|
|
3
3
|
* including name, protocol, URL, message count, and context details.
|
|
4
4
|
*/
|
|
5
|
-
import type
|
|
5
|
+
import { type ReactNode } from 'react';
|
|
6
6
|
import { type FullContextResponse } from '../context/ContextInspector';
|
|
7
7
|
import type { ContextSnapshotResponse } from '../context/ContextPanel';
|
|
8
8
|
import type { OAuthProvider, OAuthProviderConfig, Identity } from '../identity';
|
|
@@ -40,6 +40,12 @@ export interface AgentDetailsProps {
|
|
|
40
40
|
onBack: () => void;
|
|
41
41
|
/** Whether to show the header with back button (default: true) */
|
|
42
42
|
showBackHeader?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Whether the content carries its own padding. Off when the panel is
|
|
45
|
+
* embedded in a page that already sets the measure — the details then
|
|
46
|
+
* align with the sections around them instead of sitting inset.
|
|
47
|
+
*/
|
|
48
|
+
padded?: boolean;
|
|
43
49
|
/** Whether to show context usage/history and context snapshot sections (default: true) */
|
|
44
50
|
showUsage?: boolean;
|
|
45
51
|
/** Live MCP status from WS — bypasses REST polling when provided */
|
|
@@ -64,5 +70,5 @@ interface MCPToolsetsStatus {
|
|
|
64
70
|
/**
|
|
65
71
|
* AgentDetails component displays comprehensive information about the agent.
|
|
66
72
|
*/
|
|
67
|
-
export declare function AgentDetails({ name, icon, emoji, protocol, url, messageCount, agentId, apiBase, identityProviders, onIdentityConnect, onIdentityDisconnect, onBack, showBackHeader, showUsage, mcpStatusData, codemodeStatusData, contextSnapshotData, fullContextData, }: AgentDetailsProps): import("react
|
|
73
|
+
export declare function AgentDetails({ name, icon, emoji, protocol, url, messageCount, agentId, apiBase, identityProviders, onIdentityConnect, onIdentityDisconnect, onBack, showBackHeader, showUsage, padded, mcpStatusData, codemodeStatusData, contextSnapshotData, fullContextData, }: AgentDetailsProps): import("react").JSX.Element;
|
|
68
74
|
export default AgentDetails;
|