@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
|
@@ -1,4 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EphemeralNotebook — an in-memory Jupyter notebook rendered next to the chat.
|
|
3
|
+
*
|
|
4
|
+
* The notebook model lives purely in memory (the `nbformat` content below is
|
|
5
|
+
* never persisted to a file) and is backed by a sandbox kernel obtained via
|
|
6
|
+
* `useJupyter`. This mirrors the pattern used by the notebook editor and the
|
|
7
|
+
* `NotebookNbformat` example, so the agent can drive the notebook through the
|
|
8
|
+
* registered notebook frontend tools while nothing is written to disk.
|
|
9
|
+
*
|
|
10
|
+
* The container structure (relative wrapper + absolutely positioned inner box
|
|
11
|
+
* + `#dla-Jupyter-Notebook` overrides) is copied from the notebook editor
|
|
12
|
+
* (`NotebookEditorPanel`) so the cells get a resolved height and actually
|
|
13
|
+
* render — a plain `height: 100%` collapses to zero inside a flex parent.
|
|
14
|
+
*
|
|
15
|
+
* @module chat/notebook/EphemeralNotebook
|
|
16
|
+
*/
|
|
17
|
+
import type { JSX } from 'react';
|
|
1
18
|
import type { INotebookContent } from '@jupyterlab/nbformat';
|
|
19
|
+
import { ServiceManager } from '@jupyterlab/services';
|
|
2
20
|
import { type ToolbarItem } from '@datalayer/primer-addons';
|
|
3
21
|
import type { ICollaborationProvider } from '@datalayer/jupyter-react';
|
|
4
22
|
import type { EphemeralNotebookToolbarComponent } from '../../types/chat';
|
|
@@ -18,7 +36,7 @@ export interface EphemeralRuntimeOverride {
|
|
|
18
36
|
/** Bearer/JWT token appended to requests (`appendToken`). */
|
|
19
37
|
token?: string;
|
|
20
38
|
/** Stable identifier used for the sandbox service-manager registry. */
|
|
21
|
-
|
|
39
|
+
runtimeName?: string;
|
|
22
40
|
}
|
|
23
41
|
export interface EphemeralNotebookProps {
|
|
24
42
|
/**
|
|
@@ -27,7 +45,7 @@ export interface EphemeralNotebookProps {
|
|
|
27
45
|
*/
|
|
28
46
|
notebookId: string;
|
|
29
47
|
/** Preferred runtime pod name to bind the notebook kernel to. */
|
|
30
|
-
|
|
48
|
+
runtimeName?: string;
|
|
31
49
|
/**
|
|
32
50
|
* Explicit runtime endpoint override. When supplied, the notebook binds its
|
|
33
51
|
* kernel to this endpoint directly instead of resolving a pod from the user's
|
|
@@ -44,6 +62,24 @@ export interface EphemeralNotebookProps {
|
|
|
44
62
|
onNbformatChange?: (content: INotebookContent) => void;
|
|
45
63
|
/** Optional toolbar component override. */
|
|
46
64
|
toolbarComponent?: EphemeralNotebookToolbarComponent;
|
|
65
|
+
/**
|
|
66
|
+
* Whether to draw a toolbar at all. Defaults to true.
|
|
67
|
+
*
|
|
68
|
+
* For a host where the toolbar is somebody's to provide — the LOOP
|
|
69
|
+
* workspace, where a plugin owns it and can be switched off. `false` draws
|
|
70
|
+
* no bar rather than an empty one: an empty bar still costs a row and a
|
|
71
|
+
* border, and reads as broken rather than as absent.
|
|
72
|
+
*/
|
|
73
|
+
showToolbar?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Whether the toolbar offers Save.
|
|
76
|
+
*
|
|
77
|
+
* False by default. This notebook is held in memory and written back by
|
|
78
|
+
* whoever mounted it, so the button commits nothing a reader can point at —
|
|
79
|
+
* and in a browser sandbox there is no file behind it at all. A host that
|
|
80
|
+
* does persist the notebook, and wants an explicit save, sets this.
|
|
81
|
+
*/
|
|
82
|
+
showSaveItem?: boolean;
|
|
47
83
|
/**
|
|
48
84
|
* Items added to the toolbar of the notebook.
|
|
49
85
|
*
|
|
@@ -65,9 +101,34 @@ export interface EphemeralNotebookProps {
|
|
|
65
101
|
* tunnel.
|
|
66
102
|
*/
|
|
67
103
|
collaborationProvider?: ICollaborationProvider;
|
|
104
|
+
/**
|
|
105
|
+
* A `ServiceManager` to bind to instead of resolving one from a runtime.
|
|
106
|
+
*
|
|
107
|
+
* For hosts that already own the connection — a browser (Pyodide) sandbox,
|
|
108
|
+
* where the kernel runs in the page and there is no pod to look up. Binding
|
|
109
|
+
* to the host's manager is what puts the agent's executions and the reader's
|
|
110
|
+
* cells in the same kernel.
|
|
111
|
+
*/
|
|
112
|
+
/**
|
|
113
|
+
* Render without wrapping the content in a theme provider.
|
|
114
|
+
*
|
|
115
|
+
* For a host that already owns one — the LOOP workspace, where the entry
|
|
116
|
+
* point provides the theme and the views inherit it. Nested providers fight
|
|
117
|
+
* over `BaseStyles` and font tokens, and the inner one wins for the wrong
|
|
118
|
+
* reasons.
|
|
119
|
+
*/
|
|
120
|
+
inheritTheme?: boolean;
|
|
121
|
+
serviceManager?: ServiceManager.IManager;
|
|
122
|
+
/**
|
|
123
|
+
* A kernel already running on that manager to bind to.
|
|
124
|
+
*
|
|
125
|
+
* Supplied with `serviceManager` when the host has a kernel of its own — a
|
|
126
|
+
* browser sandbox, say. Without it the notebook starts a second kernel on the
|
|
127
|
+
* same manager, which for Pyodide dies on arrival and, more importantly,
|
|
128
|
+
* would put the reader's cells and the agent's executions in different
|
|
129
|
+
* kernels.
|
|
130
|
+
*/
|
|
131
|
+
kernelId?: string;
|
|
68
132
|
}
|
|
69
|
-
|
|
70
|
-
* Renders an in-memory notebook backed by a sandbox kernel.
|
|
71
|
-
*/
|
|
72
|
-
export declare function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride, cellSidebarMargin, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, themeVariant, colorMode, collaborationProvider, }: EphemeralNotebookProps): import("react/jsx-runtime").JSX.Element;
|
|
133
|
+
export declare function EphemeralNotebook({ notebookId, runtimeName, runtimeOverride, serviceManager: externalServiceManager, inheritTheme, kernelId: externalKernelId, cellSidebarMargin, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, showToolbar, showSaveItem, themeVariant, colorMode, collaborationProvider, }: EphemeralNotebookProps): JSX.Element;
|
|
73
134
|
export default EphemeralNotebook;
|
|
@@ -1,30 +1,11 @@
|
|
|
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
|
-
* EphemeralNotebook — an in-memory Jupyter notebook rendered next to the chat.
|
|
8
|
-
*
|
|
9
|
-
* The notebook model lives purely in memory (the `nbformat` content below is
|
|
10
|
-
* never persisted to a file) and is backed by a sandbox kernel obtained via
|
|
11
|
-
* `useJupyter`. This mirrors the pattern used by the notebook editor and the
|
|
12
|
-
* `NotebookNbformat` example, so the agent can drive the notebook through the
|
|
13
|
-
* registered notebook frontend tools while nothing is written to disk.
|
|
14
|
-
*
|
|
15
|
-
* The container structure (relative wrapper + absolutely positioned inner box
|
|
16
|
-
* + `#dla-Jupyter-Notebook` overrides) is copied from the notebook editor
|
|
17
|
-
* (`NotebookEditorPanel`) so the cells get a resolved height and actually
|
|
18
|
-
* render — a plain `height: 100%` collapses to zero inside a flex parent.
|
|
19
|
-
*
|
|
20
|
-
* @module chat/notebook/EphemeralNotebook
|
|
21
|
-
*/
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
22
2
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
23
3
|
import { ServerConnection, ServiceManager } from '@jupyterlab/services';
|
|
24
4
|
import { DatalayerThemeProvider, getThemeConfig, useSystemColorMode, useThemeStore, } from '@datalayer/primer-addons';
|
|
25
5
|
import { Box } from '@primer/react';
|
|
26
|
-
import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, JupyterReactTheme, notebookStore, disposeServiceManager, } from '@datalayer/jupyter-react';
|
|
6
|
+
import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, JupyterReactTheme, notebookStore, disposeServiceManager, useJupyterLabCssLoaded, } from '@datalayer/jupyter-react';
|
|
27
7
|
import { useAgentsRuntimes } from '../../hooks/useAgentRuntimes';
|
|
8
|
+
import { useResumeServerExecutions } from '../../jupyter/useResumeServerExecutions';
|
|
28
9
|
import { registerSandboxServiceManager } from '../../services/sandboxServiceManagers';
|
|
29
10
|
import { useProgressTask } from '../../hooks/useProgressTask';
|
|
30
11
|
/**
|
|
@@ -55,7 +36,20 @@ const EPHEMERAL_NOTEBOOK_CONTENT = {
|
|
|
55
36
|
/**
|
|
56
37
|
* Renders an in-memory notebook backed by a sandbox kernel.
|
|
57
38
|
*/
|
|
58
|
-
|
|
39
|
+
/**
|
|
40
|
+
* The theme provider, or nothing.
|
|
41
|
+
*
|
|
42
|
+
* A host that already owns a theme root passes `inherit`; nested providers
|
|
43
|
+
* fight over `BaseStyles` and font tokens, and the inner one wins for the wrong
|
|
44
|
+
* reasons.
|
|
45
|
+
*/
|
|
46
|
+
function ThemeRoot({ inherit, colorMode, themeConfig, children, }) {
|
|
47
|
+
if (inherit) {
|
|
48
|
+
return _jsx(_Fragment, { children: children });
|
|
49
|
+
}
|
|
50
|
+
return (_jsx(DatalayerThemeProvider, { colorMode: colorMode, theme: themeConfig.primerTheme, themeStyles: themeConfig.themeStyles, children: children }));
|
|
51
|
+
}
|
|
52
|
+
export function EphemeralNotebook({ notebookId, runtimeName, runtimeOverride, serviceManager: externalServiceManager, inheritTheme = false, kernelId: externalKernelId, cellSidebarMargin = 120, nbformat, onNbformatChange, toolbarComponent, toolbarExtraItems, showToolbar = true, showSaveItem = false, themeVariant, colorMode, collaborationProvider, }) {
|
|
59
53
|
// The `nbformat` passed to the `Notebook` component MUST stay a stable
|
|
60
54
|
// reference for the lifetime of a given `notebookId`: the underlying
|
|
61
55
|
// `useNotebookModel` hook rebuilds the notebook model (and its context /
|
|
@@ -78,13 +72,13 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
78
72
|
// notebook must bind to exactly the runtime assigned to this agent, or to
|
|
79
73
|
// none at all (straight path).
|
|
80
74
|
const { runtimes, refetchRuntimes } = useAgentsRuntimes();
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
if (!
|
|
75
|
+
const resolvedRuntime = useMemo(() => {
|
|
76
|
+
const preferredRuntime = String(runtimeName || '').trim();
|
|
77
|
+
if (!preferredRuntime) {
|
|
84
78
|
return undefined;
|
|
85
79
|
}
|
|
86
|
-
return runtimes.find(rt => String(rt?.
|
|
87
|
-
}, [
|
|
80
|
+
return runtimes.find(rt => String(rt?.runtime_name || '') === preferredRuntime);
|
|
81
|
+
}, [runtimeName, runtimes]);
|
|
88
82
|
// An explicit endpoint override wins over the pod lookup: it lets a SaaS
|
|
89
83
|
// browser bind the kernel through the runtimes tunnel proxy (the node's
|
|
90
84
|
// Jupyter server is not directly reachable, so no pod exists in the list).
|
|
@@ -95,18 +89,19 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
95
89
|
url: overrideBaseUrl,
|
|
96
90
|
wsUrl: String(runtimeOverride?.wsUrl || '').trim() || undefined,
|
|
97
91
|
token: String(runtimeOverride?.token || '').trim(),
|
|
98
|
-
|
|
92
|
+
runtime_name: String(runtimeOverride?.runtimeName || '').trim() ||
|
|
93
|
+
'agent-node-proxy',
|
|
99
94
|
};
|
|
100
95
|
}
|
|
101
|
-
return
|
|
102
|
-
}, [runtimeOverride,
|
|
96
|
+
return resolvedRuntime;
|
|
97
|
+
}, [runtimeOverride, resolvedRuntime]);
|
|
103
98
|
// While the assigned pod has not yet appeared in the runtimes list, poll the
|
|
104
99
|
// list quickly instead of waiting for the default (10s) refresh interval.
|
|
105
100
|
// This is what makes the "Starting notebook…" state clear promptly once the
|
|
106
101
|
// agent runtime is ready, rather than lingering for several seconds. The
|
|
107
102
|
// override path binds immediately, so no polling is needed there.
|
|
108
103
|
const needsRuntimeLookup = Boolean(!runtimeOverride?.baseUrl &&
|
|
109
|
-
String(
|
|
104
|
+
String(runtimeName || '').trim() &&
|
|
110
105
|
!selectedRuntime);
|
|
111
106
|
useEffect(() => {
|
|
112
107
|
if (!needsRuntimeLookup) {
|
|
@@ -147,37 +142,72 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
147
142
|
token,
|
|
148
143
|
appendToken: true,
|
|
149
144
|
});
|
|
150
|
-
|
|
145
|
+
const pending = new ServiceManager({ serverSettings });
|
|
146
|
+
manager = pending;
|
|
151
147
|
// Central sandbox registry: runtime terminate/pause disposes this
|
|
152
148
|
// manager immediately so its pollers cannot hit the dead pod ingress.
|
|
153
|
-
unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
149
|
+
unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.runtime_name || ''), manager);
|
|
150
|
+
// The cleanup below may already have run: it captured `manager` while
|
|
151
|
+
// it was still null, because this function is async and assigns it
|
|
152
|
+
// after the first await the caller does not wait for. Switching
|
|
153
|
+
// sandboxes quickly is exactly that race, and the manager it orphans
|
|
154
|
+
// polls the abandoned server for the life of the page.
|
|
155
|
+
if (cancelled) {
|
|
156
|
+
release(pending);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
await pending.ready;
|
|
160
|
+
await pending.kernels.refreshRunning();
|
|
161
|
+
const runningKernel = [...pending.kernels.running()][0];
|
|
162
|
+
if (cancelled) {
|
|
163
|
+
release(pending);
|
|
164
|
+
return;
|
|
161
165
|
}
|
|
166
|
+
setRuntimeServiceManager(pending);
|
|
167
|
+
setRuntimeKernelId(runningKernel?.id);
|
|
168
|
+
setRuntimeStartDefaultKernel(!runningKernel);
|
|
162
169
|
}
|
|
163
|
-
catch {
|
|
170
|
+
catch (reason) {
|
|
171
|
+
// Give up the manager, do not merely stop looking at it.
|
|
172
|
+
//
|
|
173
|
+
// A `ServiceManager` starts polling `/api/kernels` and `/api/sessions`
|
|
174
|
+
// the moment it is constructed, on its own schedule. Abandoning one
|
|
175
|
+
// whose `ready` rejected left those polls running against a server
|
|
176
|
+
// that had gone — a switch away from a restarted sandbox produced an
|
|
177
|
+
// endless run of ERR_CONNECTION_REFUSED, one every few seconds,
|
|
178
|
+
// forever.
|
|
179
|
+
if (manager) {
|
|
180
|
+
release(manager);
|
|
181
|
+
manager = null;
|
|
182
|
+
}
|
|
164
183
|
if (!cancelled) {
|
|
184
|
+
console.warn(`[agent-runtimes] Could not reach the sandbox at ${baseUrl}.`, reason);
|
|
165
185
|
setRuntimeServiceManager(null);
|
|
166
186
|
setRuntimeKernelId(undefined);
|
|
167
187
|
setRuntimeStartDefaultKernel(false);
|
|
168
188
|
}
|
|
169
189
|
}
|
|
170
190
|
};
|
|
191
|
+
/** Unregister and dispose one manager, once. */
|
|
192
|
+
const release = (target) => {
|
|
193
|
+
unregisterManager?.();
|
|
194
|
+
unregisterManager = null;
|
|
195
|
+
disposeServiceManager(target);
|
|
196
|
+
};
|
|
171
197
|
connectRuntime();
|
|
172
198
|
return () => {
|
|
173
199
|
cancelled = true;
|
|
174
|
-
unregisterManager?.();
|
|
175
200
|
if (manager) {
|
|
176
|
-
|
|
201
|
+
release(manager);
|
|
202
|
+
manager = null;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
unregisterManager?.();
|
|
206
|
+
unregisterManager = null;
|
|
177
207
|
}
|
|
178
208
|
};
|
|
179
209
|
}, [
|
|
180
|
-
selectedRuntime?.
|
|
210
|
+
selectedRuntime?.runtime_name,
|
|
181
211
|
selectedRuntime?.url,
|
|
182
212
|
selectedRuntime?.token,
|
|
183
213
|
selectedRuntime?.wsUrl,
|
|
@@ -185,25 +215,94 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
185
215
|
// Bind strictly to the agent runtime sandbox; there is NO local fallback
|
|
186
216
|
// kernel. The notebook executes on the agent's runtime or shows a waiting
|
|
187
217
|
// state until the runtime is ready.
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
218
|
+
// A host that already owns a `ServiceManager` — a browser (Pyodide) sandbox,
|
|
219
|
+
// where the kernel runs in the page and there is no pod to resolve — passes
|
|
220
|
+
// it in. Binding to *that* manager is what puts the agent's executions and
|
|
221
|
+
// the reader's cells in the same kernel.
|
|
222
|
+
const activeServiceManager = externalServiceManager ?? runtimeServiceManager;
|
|
223
|
+
/*
|
|
224
|
+
* Wait for the JupyterLab stylesheets before the first paint.
|
|
225
|
+
*
|
|
226
|
+
* They arrive as their own webpack chunks, fetched when the first notebook
|
|
227
|
+
* on the page asks for them, and a notebook drawn before they land has no
|
|
228
|
+
* rules at all — the cells stack, the toolbar unwraps, and the panel looks
|
|
229
|
+
* broken until something makes it render again. On a reload the chunks come
|
|
230
|
+
* from cache fast enough that nobody sees it, which is why this only ever
|
|
231
|
+
* showed up on the first visit to an agent page.
|
|
232
|
+
*
|
|
233
|
+
* Holding here rather than in `JupyterReactTheme` because the theme wraps
|
|
234
|
+
* the whole page: blanking the conversation while a notebook's stylesheet
|
|
235
|
+
* loads would trade a small ugly moment for a large empty one. This is the
|
|
236
|
+
* one component that cannot be read without them.
|
|
237
|
+
*
|
|
238
|
+
* The hook resolves even if a chunk fails, so a missing stylesheet still
|
|
239
|
+
* gets a notebook — the old, ugly one — and never an empty box forever.
|
|
240
|
+
*
|
|
241
|
+
* It waits for as long as that takes — measured at about 3s warm and 6.5s
|
|
242
|
+
* cold — rather than drawing after a grace period, and the reason is in the
|
|
243
|
+
* bug report: a refresh was needed. Stylesheets that arrive late apply
|
|
244
|
+
* themselves, so a notebook that were merely racing them would repair itself
|
|
245
|
+
* the moment they landed and nobody would ever reach for reload. It does not
|
|
246
|
+
* repair, because Lumino measures this panel when it attaches and never
|
|
247
|
+
* measures again — attach it against no rules and it keeps those numbers for
|
|
248
|
+
* as long as it lives. Drawing early on a timer would reproduce exactly the
|
|
249
|
+
* state being fixed, on precisely the slow connections that hit it most.
|
|
250
|
+
*/
|
|
251
|
+
const notebookReady = useJupyterLabCssLoaded();
|
|
252
|
+
const activeKernelId = externalKernelId ?? runtimeKernelId;
|
|
253
|
+
// Join the host's kernel when there is one; only start a kernel of our own
|
|
254
|
+
// when the host handed us a manager without one. Starting a second kernel
|
|
255
|
+
// beside the host's would split the reader's cells from the agent's
|
|
256
|
+
// executions — and for Pyodide the second one dies on arrival.
|
|
257
|
+
const activeStartDefaultKernel = externalServiceManager
|
|
258
|
+
? !externalKernelId
|
|
259
|
+
: runtimeStartDefaultKernel;
|
|
191
260
|
// The toolbar of the notebook, with the items of the host merged in. A host
|
|
192
261
|
// replacing the toolbar altogether receives them as well, as every toolbar
|
|
193
262
|
// built on the notebook one takes `extraItems`.
|
|
194
263
|
const ToolbarComponent = useMemo(() => {
|
|
264
|
+
if (!showToolbar) {
|
|
265
|
+
// Undefined, not a component that renders null. `Notebook` guards with
|
|
266
|
+
// `{Toolbar && <Toolbar/>}`, so this removes it from the tree entirely —
|
|
267
|
+
// which matters for the sibling selectors below.
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
195
270
|
const Base = toolbarComponent || NotebookToolbar;
|
|
196
|
-
|
|
271
|
+
/*
|
|
272
|
+
* No save button, unless a host asks for one.
|
|
273
|
+
*
|
|
274
|
+
* This notebook is ephemeral — that is its name. It is held in memory,
|
|
275
|
+
* written back by the host that mounted it, and in a browser sandbox there
|
|
276
|
+
* is no file on the other side of the button at all. A control that looks
|
|
277
|
+
* like it commits work and does not is worse than no control, and it is
|
|
278
|
+
* the first thing in the toolbar, where it reads as the primary action.
|
|
279
|
+
*
|
|
280
|
+
* The divider goes with it. Hiding the item alone leaves the toolbar
|
|
281
|
+
* opening on a rule with nothing before it.
|
|
282
|
+
*/
|
|
283
|
+
const hiddenItems = showSaveItem
|
|
284
|
+
? undefined
|
|
285
|
+
: ['notebook-save', 'notebook-divider-file'];
|
|
286
|
+
if (!toolbarExtraItems?.length && !hiddenItems) {
|
|
197
287
|
return Base;
|
|
198
288
|
}
|
|
199
289
|
return function EphemeralNotebookToolbar(props) {
|
|
200
|
-
return _jsx(Base, { ...props, extraItems: toolbarExtraItems });
|
|
290
|
+
return (_jsx(Base, { ...props, extraItems: toolbarExtraItems, hiddenItems: hiddenItems }));
|
|
201
291
|
};
|
|
202
|
-
}, [toolbarComponent, toolbarExtraItems]);
|
|
203
|
-
const isRuntimeStarting = Boolean((String(
|
|
292
|
+
}, [showToolbar, showSaveItem, toolbarComponent, toolbarExtraItems]);
|
|
293
|
+
const isRuntimeStarting = Boolean((String(runtimeName || '').trim() ||
|
|
204
294
|
String(runtimeOverride?.baseUrl || '').trim()) &&
|
|
205
295
|
!activeServiceManager);
|
|
206
296
|
useProgressTask(`ephemeral-notebook-start-${notebookId}`, isRuntimeStarting);
|
|
297
|
+
/*
|
|
298
|
+
* What a previous page left running on the sandbox.
|
|
299
|
+
*
|
|
300
|
+
* The cells come back from the persisted model, each carrying the request
|
|
301
|
+
* the server accepted for it; once the sandbox is bound again, those
|
|
302
|
+
* requests are polled back into the cells, so a refresh mid-run finds the
|
|
303
|
+
* outputs that kept arriving while it was away.
|
|
304
|
+
*/
|
|
305
|
+
useResumeServerExecutions(notebookId, activeServiceManager ?? undefined);
|
|
207
306
|
useEffect(() => {
|
|
208
307
|
// When a collaboration provider is active the shared ydoc is the single
|
|
209
308
|
// source of truth and is synced remotely; the local in-memory persistence
|
|
@@ -259,6 +358,20 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
259
358
|
: themeConfig.themeStyles.light;
|
|
260
359
|
const themeBackground = modeStyles.backgroundColor ?? '';
|
|
261
360
|
const extensions = useMemo(() => [new CellSidebarExtension({ factory: CellSidebarButton })], []);
|
|
361
|
+
/*
|
|
362
|
+
* A session path under `.datalayer/`, so the server executor recovers outputs.
|
|
363
|
+
*
|
|
364
|
+
* `jupyter-server-nbmodel` streams a cell's outputs into the shared document
|
|
365
|
+
* of the server when the session names a file of it, and turns on HTTP
|
|
366
|
+
* output recovery when it does not — the case for every editor of Datalayer.
|
|
367
|
+
* Left to default, Jupyter React names the session `kernel-<id>`, which the
|
|
368
|
+
* executor reads as a real server document, so it keeps recovery OFF and an
|
|
369
|
+
* ephemeral notebook (which has no shared document on the pod at all) shows
|
|
370
|
+
* no outputs and loses a running cell on refresh. A `.datalayer/` path is
|
|
371
|
+
* how the executor is told there is no file here; the notebook id keeps two
|
|
372
|
+
* ephemeral notebooks on one sandbox from sharing a session.
|
|
373
|
+
*/
|
|
374
|
+
const sessionPath = useMemo(() => `.datalayer/${notebookId}.ipynb`, [notebookId]);
|
|
262
375
|
return (_jsx(Box, { sx: {
|
|
263
376
|
flex: 1,
|
|
264
377
|
minHeight: 0,
|
|
@@ -266,7 +379,7 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
266
379
|
position: 'relative',
|
|
267
380
|
overflow: 'hidden',
|
|
268
381
|
bg: 'canvas.default',
|
|
269
|
-
}, children: activeServiceManager ? (_jsx(
|
|
382
|
+
}, children: activeServiceManager && notebookReady ? (_jsx(ThemeRoot, { inherit: inheritTheme, colorMode: effectiveColorMode, themeConfig: themeConfig, children: _jsx(JupyterReactTheme, { colormode: resolvedMode, backgroundColor: themeBackground, children: _jsx(Box, { sx: {
|
|
270
383
|
position: 'absolute',
|
|
271
384
|
inset: 0,
|
|
272
385
|
display: 'flex',
|
|
@@ -275,6 +388,7 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
275
388
|
overscrollBehaviorY: 'contain',
|
|
276
389
|
overflowAnchor: 'none',
|
|
277
390
|
padding: 2,
|
|
391
|
+
backgroundColor: themeBackground,
|
|
278
392
|
// Give the notebook a resolved height so cells render. The
|
|
279
393
|
// Jupyter Notebook component renders its outer container with
|
|
280
394
|
// id "dla-Jupyter-Notebook"; pin its toolbar and let the cell
|
|
@@ -283,17 +397,36 @@ export function EphemeralNotebook({ notebookId, runtimePodName, runtimeOverride,
|
|
|
283
397
|
display: 'flex',
|
|
284
398
|
flexDirection: 'column',
|
|
285
399
|
},
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
400
|
+
// Pin the toolbar — but only while there is one. This targets
|
|
401
|
+
// the first child, and with the toolbar gone that is the
|
|
402
|
+
// notebook body: it would be made sticky and painted with the
|
|
403
|
+
// toolbar's own background.
|
|
404
|
+
...(showToolbar
|
|
405
|
+
? {
|
|
406
|
+
'& #dla-Jupyter-Notebook > :first-of-type': {
|
|
407
|
+
position: 'sticky',
|
|
408
|
+
top: 0,
|
|
409
|
+
zIndex: 2,
|
|
410
|
+
flex: '0 0 auto',
|
|
411
|
+
backgroundColor: themeBackground,
|
|
412
|
+
},
|
|
413
|
+
}
|
|
414
|
+
: {
|
|
415
|
+
// `Notebook` gives the panel header `min-height: 50px` to
|
|
416
|
+
// reserve room for a toolbar. With no toolbar that room
|
|
417
|
+
// is a white band under nothing.
|
|
418
|
+
'& .datalayer-NotebookPanel-header': {
|
|
419
|
+
display: 'none',
|
|
420
|
+
minHeight: 0,
|
|
421
|
+
},
|
|
422
|
+
}),
|
|
293
423
|
'& #dla-Jupyter-Notebook > .dla-Box-Notebook': {
|
|
294
424
|
flex: '1 1 auto',
|
|
295
425
|
minHeight: 0,
|
|
296
426
|
},
|
|
297
|
-
|
|
427
|
+
'& [role="toolbar"][aria-label="Notebook toolbar"]': {
|
|
428
|
+
backgroundColor: themeBackground,
|
|
429
|
+
},
|
|
430
|
+
}, children: _jsx(Notebook, { nbformat: initialNbformat, id: notebookId, path: sessionPath, serviceManager: activeServiceManager, startDefaultKernel: activeStartDefaultKernel, kernelId: activeKernelId, height: "100%", cellSidebarMargin: cellSidebarMargin, extensions: extensions, Toolbar: ToolbarComponent, collaborationProvider: collaborationProvider }) }) }) })) : null }));
|
|
298
431
|
}
|
|
299
432
|
export default EphemeralNotebook;
|
|
@@ -16,5 +16,5 @@ export interface DynamicToolPartProps {
|
|
|
16
16
|
* for dynamic tool parts. In a production application, this would
|
|
17
17
|
* render custom UI based on the tool's specification.
|
|
18
18
|
*/
|
|
19
|
-
export declare function DynamicToolPart({ part }: DynamicToolPartProps): import("react
|
|
19
|
+
export declare function DynamicToolPart({ part }: DynamicToolPartProps): import("react").JSX.Element;
|
|
20
20
|
export default DynamicToolPart;
|
|
@@ -46,5 +46,5 @@ export interface MessagePartProps {
|
|
|
46
46
|
* ))}
|
|
47
47
|
* ```
|
|
48
48
|
*/
|
|
49
|
-
export declare function MessagePart({ part, message, status, regen, index, lastMessage, }: MessagePartProps): import("react
|
|
49
|
+
export declare function MessagePart({ part, message, status, regen, index, lastMessage, }: MessagePartProps): import("react").JSX.Element | null;
|
|
50
50
|
export default MessagePart;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reasoning message part display component.
|
|
3
|
+
* Renders AI reasoning/thinking content with collapsible section.
|
|
4
|
+
*
|
|
5
|
+
* @module chat/display/ReasoningPart
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
1
8
|
export interface ReasoningPartProps {
|
|
2
9
|
/** Reasoning text content */
|
|
3
10
|
text: string;
|
|
@@ -13,5 +20,5 @@ export interface ReasoningPartProps {
|
|
|
13
20
|
* - Visual indicator for streaming state
|
|
14
21
|
* - Markdown support for reasoning content
|
|
15
22
|
*/
|
|
16
|
-
export declare function ReasoningPart({ text, isStreaming }: ReasoningPartProps):
|
|
23
|
+
export declare function ReasoningPart({ text, isStreaming }: ReasoningPartProps): React.JSX.Element;
|
|
17
24
|
export default ReasoningPart;
|
|
@@ -24,5 +24,5 @@ export interface TextPartProps {
|
|
|
24
24
|
* - Regenerate button for assistant messages
|
|
25
25
|
* - Syntax highlighting for code blocks
|
|
26
26
|
*/
|
|
27
|
-
export declare function TextPart({ text, message, isLastPart, onRegenerate, }: TextPartProps): import("react
|
|
27
|
+
export declare function TextPart({ text, message, isLastPart, onRegenerate, }: TextPartProps): import("react").JSX.Element;
|
|
28
28
|
export default TextPart;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool call display component.
|
|
3
|
+
* Renders tool execution with input, output, and status.
|
|
4
|
+
*
|
|
5
|
+
* @module chat/display/ToolPart
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
1
8
|
import type { ToolUIPart } from 'ai';
|
|
2
9
|
export interface ToolPartProps {
|
|
3
10
|
/** Tool UI part data */
|
|
@@ -13,5 +20,5 @@ export interface ToolPartProps {
|
|
|
13
20
|
* - JSON display for output/result
|
|
14
21
|
* - Rich error display with execution vs code error distinction
|
|
15
22
|
*/
|
|
16
|
-
export declare function ToolPart({ part }: ToolPartProps):
|
|
23
|
+
export declare function ToolPart({ part }: ToolPartProps): React.JSX.Element;
|
|
17
24
|
export default ToolPart;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A card that floats over its host and can be dragged by its handle.
|
|
3
|
+
*
|
|
4
|
+
* The mechanics behind `InputPrompt`'s `draggable` prop, kept apart from the
|
|
5
|
+
* prompt so the prompt module stays about composing messages. The card is
|
|
6
|
+
* absolutely positioned against the nearest positioned ancestor — whoever
|
|
7
|
+
* mounts a floating prompt owns giving it one — and sits bottom-centre until
|
|
8
|
+
* somebody picks it up.
|
|
9
|
+
*
|
|
10
|
+
* @module chat/prompt/FloatingCard
|
|
11
|
+
*/
|
|
12
|
+
import type { JSX, ReactNode } from 'react';
|
|
13
|
+
export type FloatingCardProps = {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Which edge the card starts on, until somebody moves it.
|
|
17
|
+
*
|
|
18
|
+
* `bottom` (the default): over the work but under the eye, where a
|
|
19
|
+
* composer waits without being in the way. `top`: the command line of a
|
|
20
|
+
* page — the page layout puts the prompt where a document's title bar
|
|
21
|
+
* would be, so the sheet below it reads as the thing being worked on.
|
|
22
|
+
*/
|
|
23
|
+
anchor?: 'bottom' | 'top';
|
|
24
|
+
};
|
|
25
|
+
export declare function FloatingCard({ children, anchor, }: FloatingCardProps): JSX.Element;
|
|
26
|
+
export default FloatingCard;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useRef, useState } from 'react';
|
|
3
|
+
import { Box } from '@datalayer/primer-addons';
|
|
4
|
+
import { GrabberIcon } from '@primer/octicons-react';
|
|
5
|
+
/** Keep the card reachable: at least this much of it stays inside. */
|
|
6
|
+
const MARGIN = 8;
|
|
7
|
+
export function FloatingCard({ children, anchor = 'bottom', }) {
|
|
8
|
+
const [position, setPosition] = useState(null);
|
|
9
|
+
const cardRef = useRef(null);
|
|
10
|
+
/* Where the pointer took hold of the card, so dragging moves the card by
|
|
11
|
+
the pointer's delta rather than snapping its corner to the cursor. */
|
|
12
|
+
const grip = useRef(null);
|
|
13
|
+
const onHandlePointerDown = useCallback((event) => {
|
|
14
|
+
const card = cardRef.current;
|
|
15
|
+
const parent = card?.offsetParent;
|
|
16
|
+
if (!card || !parent) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const cardBox = card.getBoundingClientRect();
|
|
20
|
+
const parentBox = parent.getBoundingClientRect();
|
|
21
|
+
grip.current = {
|
|
22
|
+
dx: event.clientX - cardBox.left,
|
|
23
|
+
dy: event.clientY - cardBox.top,
|
|
24
|
+
};
|
|
25
|
+
const handle = event.currentTarget;
|
|
26
|
+
// Absent in test DOMs; the move listeners below still work there.
|
|
27
|
+
handle.setPointerCapture?.(event.pointerId);
|
|
28
|
+
const move = (moved) => {
|
|
29
|
+
if (!grip.current) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Clamped so the card cannot be dropped where its handle is
|
|
33
|
+
// unreachable — a prompt dragged off the edge is a prompt lost.
|
|
34
|
+
const left = Math.min(Math.max(moved.clientX - parentBox.left - grip.current.dx, MARGIN - cardBox.width / 2), parentBox.width - cardBox.width / 2 - MARGIN);
|
|
35
|
+
const top = Math.min(Math.max(moved.clientY - parentBox.top - grip.current.dy, MARGIN), parentBox.height - MARGIN * 4);
|
|
36
|
+
setPosition({ left, top });
|
|
37
|
+
};
|
|
38
|
+
const up = () => {
|
|
39
|
+
grip.current = null;
|
|
40
|
+
handle.removeEventListener('pointermove', move);
|
|
41
|
+
handle.removeEventListener('pointerup', up);
|
|
42
|
+
handle.removeEventListener('pointercancel', up);
|
|
43
|
+
};
|
|
44
|
+
handle.addEventListener('pointermove', move);
|
|
45
|
+
handle.addEventListener('pointerup', up);
|
|
46
|
+
handle.addEventListener('pointercancel', up);
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
}, []);
|
|
49
|
+
return (_jsxs(Box, { ref: cardRef, "data-floating-prompt": "", sx: {
|
|
50
|
+
position: 'absolute',
|
|
51
|
+
// Bottom-centre until somebody moves it: over the work but under the
|
|
52
|
+
// eye, which is where a composer waits without being in the way.
|
|
53
|
+
...(position
|
|
54
|
+
? { left: position.left, top: position.top }
|
|
55
|
+
: anchor === 'top'
|
|
56
|
+
? { left: '50%', top: 16, transform: 'translateX(-50%)' }
|
|
57
|
+
: { left: '50%', bottom: 16, transform: 'translateX(-50%)' }),
|
|
58
|
+
width: 'min(640px, calc(100% - 32px))',
|
|
59
|
+
zIndex: 20,
|
|
60
|
+
bg: 'canvas.default',
|
|
61
|
+
border: '1px solid',
|
|
62
|
+
borderColor: 'border.default',
|
|
63
|
+
borderRadius: 2,
|
|
64
|
+
boxShadow: 'shadow.large',
|
|
65
|
+
overflow: 'hidden',
|
|
66
|
+
}, children: [_jsx(Box, { onPointerDown: onHandlePointerDown, "aria-label": "Move the prompt", sx: {
|
|
67
|
+
display: 'flex',
|
|
68
|
+
alignItems: 'center',
|
|
69
|
+
justifyContent: 'center',
|
|
70
|
+
height: 18,
|
|
71
|
+
cursor: 'grab',
|
|
72
|
+
color: 'fg.subtle',
|
|
73
|
+
bg: 'canvas.subtle',
|
|
74
|
+
borderBottom: '1px solid',
|
|
75
|
+
borderColor: 'border.muted',
|
|
76
|
+
touchAction: 'none',
|
|
77
|
+
'&:active': { cursor: 'grabbing' },
|
|
78
|
+
}, children: _jsx(GrabberIcon, { size: 16 }) }), children] }));
|
|
79
|
+
}
|
|
80
|
+
export default FloatingCard;
|