@datalayer/agent-runtimes 1.0.29 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AgentDocument.js +5 -22
- package/lib/AgentNode.d.ts +1 -1
- package/lib/AgentNode.js +193 -23
- package/lib/AgentNotebook.js +1 -1
- package/lib/App.d.ts +1 -1
- package/lib/AppExamples2.d.ts +1 -1
- package/lib/agent-node/AgentNodeGallery.d.ts +14 -1
- package/lib/agent-node/AgentNodeGallery.js +19 -15
- package/lib/agent-node/themeStore.js +7 -6
- package/lib/agents/AgentDetails.d.ts +8 -2
- package/lib/agents/AgentDetails.js +41 -11
- package/lib/agents/AgentRuntimeChat.d.ts +3 -3
- package/lib/agents/AgentRuntimeChat.js +15 -15
- package/lib/api/agents.d.ts +10 -10
- package/lib/api/agents.js +15 -15
- package/lib/api/checkpoints.d.ts +40 -0
- package/lib/api/checkpoints.js +75 -0
- package/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +2 -1
- package/lib/api/notifications.d.ts +21 -6
- package/lib/api/notifications.js +32 -14
- package/lib/api/runtimes/environments.d.ts +385 -4
- package/lib/api/runtimes/environments.js +610 -9
- package/lib/api/runtimes/runtimes.d.ts +19 -19
- package/lib/api/runtimes/runtimes.js +47 -46
- package/lib/api/spacer/notebooks.js +1 -1
- package/lib/chat/Chat.d.ts +16 -4
- package/lib/chat/Chat.js +18 -5
- package/lib/chat/ChatFloating.d.ts +13 -2
- package/lib/chat/ChatFloating.js +192 -117
- package/lib/chat/ChatInline.d.ts +15 -0
- package/lib/chat/ChatInline.js +0 -18
- package/lib/chat/ChatPopupStandalone.d.ts +1 -1
- package/lib/chat/ChatSidebar.d.ts +14 -2
- package/lib/chat/ChatSidebar.js +1 -1
- package/lib/chat/ChatStandalone.d.ts +1 -1
- package/lib/chat/EphemeralSurfaceControl.d.ts +30 -0
- package/lib/chat/EphemeralSurfaceControl.js +55 -0
- package/lib/chat/base/ChatAvailability.d.ts +34 -0
- package/lib/chat/base/ChatAvailability.js +18 -0
- package/lib/chat/base/ChatBase.d.ts +2 -1
- package/lib/chat/base/ChatBase.js +657 -28
- package/lib/chat/display/EmptyState.d.ts +15 -1
- package/lib/chat/display/EmptyState.js +78 -12
- package/lib/chat/display/FloatingBrandButton.d.ts +1 -1
- package/lib/chat/display/PoweredByTag.d.ts +1 -1
- package/lib/chat/display/groupSuggestions.d.ts +21 -0
- package/lib/chat/display/groupSuggestions.js +18 -0
- package/lib/chat/document/EphemeralDocument.d.ts +70 -6
- package/lib/chat/document/EphemeralDocument.js +154 -52
- package/lib/chat/header/ChatHeader.d.ts +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +10 -1
- package/lib/chat/header/ChatHeaderBase.js +67 -96
- package/lib/chat/index.d.ts +4 -1
- package/lib/chat/index.js +8 -1
- package/lib/chat/indicators/McpStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +1 -1
- package/lib/chat/indicators/SandboxStatusIndicator.js +1 -1
- package/lib/chat/indicators/SkillsStatusIndicator.d.ts +1 -1
- package/lib/chat/messages/ChatMessageList.d.ts +22 -1
- package/lib/chat/messages/ChatMessageList.js +370 -166
- package/lib/chat/messages/ChatMessages.d.ts +1 -1
- package/lib/chat/messages/NotebookToolSurfaces.d.ts +68 -0
- package/lib/chat/messages/NotebookToolSurfaces.js +302 -0
- package/lib/chat/messages/TurnFooter.d.ts +42 -0
- package/lib/chat/messages/TurnFooter.js +75 -0
- package/lib/chat/messages/assistantMarkdown.d.ts +22 -0
- package/lib/chat/messages/assistantMarkdown.js +56 -0
- package/lib/chat/notebook/EphemeralNotebook.d.ts +67 -6
- package/lib/chat/notebook/EphemeralNotebook.js +194 -61
- package/lib/chat/parts/DynamicToolPart.d.ts +1 -1
- package/lib/chat/parts/MessagePart.d.ts +1 -1
- package/lib/chat/parts/ReasoningPart.d.ts +8 -1
- package/lib/chat/parts/TextPart.d.ts +1 -1
- package/lib/chat/parts/ToolPart.d.ts +8 -1
- package/lib/chat/prompt/FloatingCard.d.ts +26 -0
- package/lib/chat/prompt/FloatingCard.js +80 -0
- package/lib/chat/prompt/InputPrompt.d.ts +206 -53
- package/lib/chat/prompt/InputPrompt.js +161 -80
- package/lib/chat/prompt/InputPromptBase.d.ts +112 -0
- package/lib/chat/prompt/InputPromptBase.js +225 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +18 -1
- package/lib/chat/prompt/InputPromptLexical.js +227 -30
- package/lib/chat/prompt/InputPromptText.d.ts +10 -2
- package/lib/chat/prompt/InputPromptText.js +35 -3
- package/lib/chat/prompt/footer/BelowPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/footer/BelowPromptFooter.js +12 -0
- package/lib/chat/prompt/footer/InPromptFooter.d.ts +35 -0
- package/lib/chat/prompt/footer/InPromptFooter.js +16 -0
- package/lib/chat/prompt/footer/index.d.ts +7 -0
- package/lib/chat/prompt/footer/index.js +11 -0
- package/lib/chat/prompt/header/BelowPromptHeader.d.ts +23 -0
- package/lib/chat/prompt/header/BelowPromptHeader.js +12 -0
- package/lib/chat/prompt/header/InPromptHeader.d.ts +31 -0
- package/lib/chat/prompt/header/InPromptHeader.js +14 -0
- package/lib/chat/prompt/header/index.d.ts +7 -0
- package/lib/chat/prompt/header/index.js +11 -0
- package/lib/chat/prompt/index.d.ts +8 -4
- package/lib/chat/prompt/index.js +15 -3
- package/lib/chat/prompt/menus/AgentsMenu.d.ts +14 -0
- package/lib/chat/prompt/menus/AgentsMenu.js +42 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.d.ts +22 -0
- package/lib/chat/prompt/menus/InlineAgentsMenu.js +24 -0
- package/lib/chat/prompt/menus/ModelSelector.d.ts +7 -0
- package/lib/chat/prompt/menus/ModelSelector.js +27 -0
- package/lib/chat/prompt/menus/SkillsMenu.d.ts +10 -0
- package/lib/chat/prompt/menus/SkillsMenu.js +75 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/SuggestionsMenu.js +31 -0
- package/lib/chat/prompt/menus/ToolsMenu.d.ts +13 -0
- package/lib/chat/prompt/menus/ToolsMenu.js +103 -0
- package/lib/chat/prompt/menus/index.d.ts +15 -0
- package/lib/chat/prompt/menus/index.js +19 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.d.ts +54 -0
- package/lib/chat/prompt/plugins/AgentMentionPlugin.js +370 -0
- package/lib/chat/prompt/plugins/CommandPlugin.d.ts +52 -0
- package/lib/chat/prompt/plugins/CommandPlugin.js +359 -0
- package/lib/chat/prompt/plugins/MentionChip.d.ts +15 -0
- package/lib/chat/prompt/plugins/MentionChip.js +24 -0
- package/lib/chat/prompt/plugins/MentionNode.d.ts +66 -0
- package/lib/chat/prompt/plugins/MentionNode.js +77 -0
- package/lib/chat/prompt/promptHistory.d.ts +52 -0
- package/lib/chat/prompt/promptHistory.js +123 -0
- package/lib/chat/prompt/stack.d.ts +81 -0
- package/lib/chat/prompt/stack.js +41 -0
- package/lib/chat/prompt/useTypingPlaceholder.d.ts +52 -0
- package/lib/chat/prompt/useTypingPlaceholder.js +180 -0
- package/lib/chat/tools/A2AAgentDialog.d.ts +60 -0
- package/lib/chat/tools/A2AAgentDialog.js +265 -0
- package/lib/chat/tools/ToolApprovalBanner.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalDialog.d.ts +1 -1
- package/lib/chat/tools/ToolCallDisplay.d.ts +8 -1
- package/lib/chat/tools/index.d.ts +1 -0
- package/lib/chat/tools/index.js +1 -0
- package/lib/chat/usage/ContextPie.d.ts +17 -0
- package/lib/chat/usage/{TokenUsageBar.js → ContextPie.js} +20 -14
- package/lib/chat/useViewportDrag.d.ts +11 -0
- package/lib/chat/useViewportDrag.js +61 -0
- package/lib/chat/viewModes.d.ts +51 -0
- package/lib/chat/viewModes.js +57 -0
- package/lib/client/AgentRuntimesClient.d.ts +10 -9
- package/lib/client/AgentRuntimesClient.js +1 -1
- package/lib/client/AgentRuntimesClientContext.d.ts +1 -0
- package/lib/client/AgentsMixin.d.ts +12 -12
- package/lib/client/AgentsMixin.js +31 -31
- package/lib/client/IAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.d.ts +10 -10
- package/lib/client/SdkAgentRuntimesClient.js +10 -10
- package/lib/client/mixins/RuntimesMixin.d.ts +37 -10
- package/lib/client/mixins/RuntimesMixin.js +54 -21
- package/lib/components/a2ui/A2uiSurfaceComposed.d.ts +1 -1
- package/lib/components/agents/AgentSummary.d.ts +13 -0
- package/lib/components/agents/AgentSummary.js +21 -4
- package/lib/components/cards/NotificationEventCard.d.ts +1 -1
- package/lib/components/cards/OutputCard.d.ts +1 -1
- package/lib/components/cards/ToolApprovalCard.d.ts +2 -2
- package/lib/components/cards/ToolApprovalCard.js +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariables.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxCellVariablesDialog.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.d.ts +35 -0
- package/lib/components/code-sandboxes/CodeSandboxEnvironmentSelect.js +27 -29
- package/lib/components/code-sandboxes/CodeSandboxLauncher.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxLauncher.js +42 -19
- package/lib/components/code-sandboxes/CodeSandboxNames.js +7 -6
- package/lib/components/code-sandboxes/CodeSandboxPicker.js +89 -42
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxPickerCell.js +0 -4
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.d.ts +1 -0
- package/lib/components/code-sandboxes/CodeSandboxReservationControl.js +5 -7
- package/lib/components/code-sandboxes/CodeSandboxTransfer.d.ts +5 -0
- package/lib/components/code-sandboxes/CodeSandboxUtils.d.ts +13 -1
- package/lib/components/code-sandboxes/CodeSandboxUtils.js +10 -4
- package/lib/components/code-sandboxes/NewCodeSandboxControls.d.ts +21 -15
- package/lib/components/code-sandboxes/NewCodeSandboxControls.js +28 -51
- package/lib/components/code-sandboxes/codeSandboxAllowance.d.ts +33 -0
- package/lib/components/code-sandboxes/codeSandboxAllowance.js +37 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.d.ts +86 -0
- package/lib/components/code-sandboxes/codeSandboxEnvironments.js +147 -0
- package/lib/components/code-sandboxes/codeSandboxProviders.js +14 -5
- package/lib/components/code-sandboxes/index.d.ts +1 -0
- package/lib/components/code-sandboxes/index.js +1 -0
- package/lib/components/context/SpaceSelect.d.ts +1 -1
- package/lib/components/flashes/FlashDisclaimer.d.ts +1 -1
- package/lib/components/icons/ArtifactIcon.d.ts +1 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.d.ts +1 -0
- package/lib/components/progress/CreditsIndicator.js +0 -4
- package/lib/components/scheduler/ScheduleMenu.d.ts +1 -1
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +3 -2
- package/lib/components/snapshots/SandboxSnapshotMenu.js +11 -15
- package/lib/components/snippets/SnippetDialog.d.ts +1 -0
- package/lib/components/snippets/SnippetDialog.js +0 -4
- package/lib/components/specs/SpecPayloadPreview.d.ts +34 -0
- package/lib/components/specs/SpecPayloadPreview.js +102 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/context/ContextDistribution.d.ts +1 -1
- package/lib/context/ContextInspector.d.ts +2 -1
- package/lib/context/ContextPanel.d.ts +1 -1
- package/lib/context/ContextUsage.d.ts +1 -1
- package/lib/context/CostTracker.d.ts +1 -1
- package/lib/context/CostUsageChart.d.ts +1 -1
- package/lib/context/CostUsageChart.js +4 -4
- package/lib/context/MessageHistory.d.ts +3 -2
- package/lib/context/TokenUsageChart.d.ts +1 -1
- package/lib/context/TokenUsageChart.js +4 -4
- package/lib/examples/A2UiAgentExample.js +15 -6
- package/lib/examples/A2UiComponentsGalleryExample.d.ts +10 -0
- package/lib/examples/A2UiComponentsGalleryExample.js +24 -855
- package/lib/examples/A2UiContactCardExample.d.ts +10 -0
- package/lib/examples/A2UiContactCardExample.js +23 -170
- package/lib/examples/A2UiJupyterOutputExample.d.ts +3 -0
- package/lib/examples/A2UiJupyterOutputExample.js +792 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +10 -0
- package/lib/examples/A2UiRestaurantExample.js +24 -179
- package/lib/examples/A2UiViewerExample.d.ts +10 -0
- package/lib/examples/A2UiViewerExample.js +24 -378
- package/lib/examples/AgUiAgenticExample.js +2 -4
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -5
- package/lib/examples/AgUiHaikuGenUiExample.js +2 -4
- package/lib/examples/AgUiHumanInTheLoopExample.js +2 -4
- package/lib/examples/AgUiSharedStateExample.js +2 -4
- package/lib/examples/AgUiToolsBasedGenUiExample.js +2 -4
- package/lib/examples/AgentA2AExample.d.ts +17 -0
- package/lib/examples/AgentA2AExample.js +56 -0
- package/lib/examples/AgentCheckpointsExample.d.ts +9 -10
- package/lib/examples/AgentCheckpointsExample.js +72 -54
- package/lib/examples/AgentCodeSandboxExample.d.ts +7 -7
- package/lib/examples/AgentCodeSandboxExample.js +93 -303
- package/lib/examples/AgentCodeSandboxesExample.d.ts +10 -0
- package/lib/examples/AgentCodeSandboxesExample.js +56 -162
- package/lib/examples/AgentCodemodeExample.d.ts +7 -2
- package/lib/examples/AgentCodemodeExample.js +60 -125
- package/lib/examples/AgentCompactionExample.js +19 -135
- package/lib/examples/AgentEvalsExample.js +34 -66
- package/lib/examples/AgentGuardrailsExample.js +64 -112
- package/lib/examples/AgentHooksExample.d.ts +11 -0
- package/lib/examples/AgentHooksExample.js +30 -67
- package/lib/examples/AgentInferenceProviderExample.js +8 -32
- package/lib/examples/AgentLoopExample.d.ts +4 -2
- package/lib/examples/AgentLoopExample.js +45 -93
- package/lib/examples/AgentMCPExample.js +30 -79
- package/lib/examples/AgentMemoryExample.js +21 -64
- package/lib/examples/AgentMonitoringExample.js +33 -94
- package/lib/examples/AgentNotificationsExample.js +56 -95
- package/lib/examples/AgentOtelExample.js +35 -88
- package/lib/examples/AgentOutputsExample.d.ts +2 -1
- package/lib/examples/AgentOutputsExample.js +16 -137
- package/lib/examples/AgentParametersExample.js +7 -17
- package/lib/examples/AgentSkillsExample.js +40 -154
- package/lib/examples/AgentSubagentsExample.d.ts +7 -6
- package/lib/examples/AgentSubagentsExample.js +80 -191
- package/lib/examples/AgentToolApprovalsExample.js +35 -91
- package/lib/examples/AgentTriggersExample.js +43 -59
- package/lib/examples/AgentspecsExample.js +4 -4
- package/lib/examples/CellExample.d.ts +1 -1
- package/lib/examples/ChatExample.d.ts +12 -5
- package/lib/examples/ChatExample.js +38 -13
- package/lib/examples/CopilotKitLexicalExample.d.ts +1 -0
- package/lib/examples/CopilotKitLexicalExample.js +4 -41
- package/lib/examples/CopilotKitNotebookExample.d.ts +10 -0
- package/lib/examples/CopilotKitNotebookExample.js +2 -14
- package/lib/examples/DecksAgent.d.ts +21 -0
- package/lib/examples/DecksAgent.js +23 -0
- package/lib/examples/DocumentPageAgent.d.ts +19 -0
- package/lib/examples/DocumentPageAgent.js +15 -0
- package/lib/examples/Lexical2Example.d.ts +2 -2
- package/lib/examples/Lexical2Example.js +17 -38
- package/lib/examples/LexicalAgentExample.d.ts +2 -1
- package/lib/examples/LexicalAgentExample.js +29 -102
- package/lib/examples/LexicalAgentSidebarExample.d.ts +16 -5
- package/lib/examples/LexicalAgentSidebarExample.js +99 -131
- package/lib/examples/LoopShellExample.d.ts +38 -0
- package/lib/examples/LoopShellExample.js +68 -0
- package/lib/examples/LoopWorkspaceEmbed.d.ts +50 -0
- package/lib/examples/LoopWorkspaceEmbed.js +73 -0
- package/lib/examples/LoopWorkspaceExample.d.ts +150 -0
- package/lib/examples/LoopWorkspaceExample.js +151 -0
- package/lib/examples/NotebookAgentExample.d.ts +13 -0
- package/lib/examples/NotebookAgentExample.js +36 -86
- package/lib/examples/NotebookAgentSidebarExample.d.ts +10 -4
- package/lib/examples/NotebookAgentSidebarExample.js +39 -83
- package/lib/examples/NotebookCollaborationExample.d.ts +1 -1
- package/lib/examples/NotebookCollaborationExample.js +108 -20
- package/lib/examples/NotebookExample.d.ts +1 -1
- package/lib/examples/NotebookExample.js +20 -10
- package/lib/examples/NotebookPageAgent.d.ts +23 -0
- package/lib/examples/NotebookPageAgent.js +17 -0
- package/lib/examples/components/ExampleWrapper.d.ts +5 -0
- package/lib/examples/components/ExampleWrapper.js +36 -28
- package/lib/examples/components/LexicalEditor.d.ts +1 -1
- package/lib/examples/components/LexicalEditor.js +4 -24
- package/lib/examples/components/haiku/HaikuDisplay.d.ts +1 -1
- package/lib/examples/components/haiku/InlineHaikuCard.d.ts +1 -1
- package/lib/examples/components/weather/InlineWeatherCard.d.ts +1 -1
- package/lib/examples/example-selector.js +26 -6
- package/lib/examples/hooks/useCreateAgentOnce.d.ts +41 -0
- package/lib/examples/hooks/useCreateAgentOnce.js +51 -0
- package/lib/examples/hooks/useExampleAgentProtocol.d.ts +35 -0
- package/lib/examples/hooks/useExampleAgentProtocol.js +63 -0
- package/lib/examples/hooks/useExampleAgentRuntime.d.ts +16 -16
- package/lib/examples/hooks/useExampleAgentRuntime.js +26 -25
- package/lib/examples/hooks/useExampleAgentRuntimes.js +45 -61
- package/lib/examples/hooks/useExampleJupyterAgent.d.ts +91 -0
- package/lib/examples/hooks/useExampleJupyterAgent.js +151 -0
- package/lib/examples/index.d.ts +4 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/lexical/editorConfig.d.ts +2 -75
- package/lib/examples/lexical/editorConfig.js +26 -48
- package/lib/examples/lexical/lexical-theme.css +65 -47
- package/lib/examples/main.js +450 -322
- package/lib/examples/scenes/A2UiComponentsGalleryScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiComponentsGalleryScene.js +872 -0
- package/lib/examples/scenes/A2UiContactCardScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiContactCardScene.js +188 -0
- package/lib/examples/scenes/A2UiRestaurantScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiRestaurantScene.js +196 -0
- package/lib/examples/scenes/A2UiViewerScene.d.ts +3 -0
- package/lib/examples/scenes/A2UiViewerScene.js +395 -0
- package/lib/examples/utils/agentSummaryStore.d.ts +7 -1
- package/lib/examples/utils/agents/earthquake-detector.ipynb.json +1 -1
- package/lib/examples/utils/agents/earthquake-detector.lexical.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.ipynb.json +1 -1
- package/lib/examples/utils/agents/sales-forecaster.lexical.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.ipynb.json +1 -1
- package/lib/examples/utils/agents/social-post-generator.lexical.json +1 -1
- package/lib/examples/utils/exampleSurfaces.d.ts +31 -0
- package/lib/examples/utils/exampleSurfaces.js +38 -0
- package/lib/examples/utils/jupyterSandboxUrl.d.ts +27 -0
- package/lib/examples/utils/jupyterSandboxUrl.js +55 -0
- package/lib/examples/utils/localUrl.d.ts +2 -0
- package/lib/examples/utils/localUrl.js +49 -0
- package/lib/examples/utils/notebookToolbarItems.d.ts +46 -0
- package/lib/examples/utils/notebookToolbarItems.js +129 -0
- package/lib/examples/utils/runtimeTargetStore.d.ts +40 -1
- package/lib/examples/utils/runtimeTargetStore.js +82 -1
- package/lib/examples/utils/themedProvider.d.ts +7 -0
- package/lib/examples/utils/themedProvider.js +57 -4
- package/lib/examples/utils/useExampleAgentRuntimesUrl.js +30 -5
- package/lib/examples/utils/waitForAgent.d.ts +23 -0
- package/lib/examples/utils/waitForAgent.js +24 -0
- package/lib/examples2/CellExample.d.ts +1 -1
- package/lib/examples2/DatalayerNotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookExample.d.ts +1 -1
- package/lib/examples2/NotebookMutationsKernel.d.ts +1 -1
- package/lib/examples2/NotebookMutationsServiceManager.d.ts +1 -1
- package/lib/examples2/main.js +24 -4
- package/lib/extensions/A2UIExtension.d.ts +1 -1
- package/lib/hooks/index.d.ts +8 -5
- package/lib/hooks/index.js +20 -5
- package/lib/hooks/useAgentRuntimes.d.ts +49 -22
- package/lib/hooks/useAgentRuntimes.js +214 -90
- package/lib/hooks/useAgentsCatalog.js +32 -4
- package/lib/hooks/useBrowserAgent.d.ts +26 -0
- package/lib/hooks/useBrowserAgent.js +75 -0
- package/lib/hooks/useBrowserInference.d.ts +27 -0
- package/lib/hooks/useBrowserInference.js +67 -0
- package/lib/hooks/useCheckpoints.d.ts +8 -17
- package/lib/hooks/useCheckpoints.js +25 -59
- package/lib/hooks/useConfig.d.ts +1 -1
- package/lib/hooks/useConfig.js +5 -1
- package/lib/hooks/useContextSnapshot.d.ts +18 -7
- package/lib/hooks/useContextSnapshot.js +14 -10
- package/lib/hooks/useNotifications.d.ts +11 -11
- package/lib/hooks/useNotifications.js +1 -1
- package/lib/hooks/useProjects.d.ts +7 -19
- package/lib/hooks/useProjects.js +5 -5
- package/lib/hooks/useSkills.d.ts +0 -1
- package/lib/hooks/useSkills.js +6 -2
- package/lib/hooks/useToolApprovals.d.ts +8 -8
- package/lib/hooks/useToolApprovals.js +3 -3
- package/lib/identity/AgentIdentity.d.ts +9 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +4 -0
- package/lib/jupyter/index.d.ts +2 -1
- package/lib/jupyter/index.js +2 -1
- package/lib/jupyter/serverExecution.d.ts +78 -0
- package/lib/jupyter/serverExecution.js +258 -0
- package/lib/jupyter/useResumeServerExecutions.d.ts +11 -0
- package/lib/jupyter/useResumeServerExecutions.js +64 -0
- package/lib/lexical/ChatInlinePlugin.d.ts +33 -0
- package/lib/lexical/ChatInlinePlugin.js +0 -36
- package/lib/loop/core/focusRequests.d.ts +10 -0
- package/lib/loop/core/focusRequests.js +46 -0
- package/lib/loop/core/index.d.ts +894 -0
- package/lib/loop/core/index.js +264 -0
- package/lib/loop/core/promptStore.d.ts +44 -0
- package/lib/loop/core/promptStore.js +63 -0
- package/lib/loop/core/surfaceRequests.d.ts +33 -0
- package/lib/loop/core/surfaceRequests.js +29 -0
- package/lib/loop/core/toolbar.d.ts +28 -0
- package/lib/loop/core/toolbar.js +59 -0
- package/lib/loop/embed/LoopEmbed.d.ts +57 -0
- package/lib/loop/embed/LoopEmbed.js +118 -0
- package/lib/loop/extensions.d.ts +10 -0
- package/lib/loop/extensions.js +49 -0
- package/lib/loop/index.d.ts +68 -0
- package/lib/loop/index.js +87 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.d.ts +48 -0
- package/lib/loop/plugins/a2a-sidebar/A2ASidebar.js +190 -0
- package/lib/loop/plugins/a2a-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/a2a-sidebar/index.js +39 -0
- package/lib/loop/plugins/a2ui/A2uiView.d.ts +12 -0
- package/lib/loop/plugins/a2ui/A2uiView.js +97 -0
- package/lib/loop/plugins/a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/a2ui/index.js +50 -0
- package/lib/loop/plugins/a2ui-scene/index.d.ts +36 -0
- package/lib/loop/plugins/a2ui-scene/index.js +28 -0
- package/lib/loop/plugins/agent-a2a/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2a/index.js +26 -0
- package/lib/loop/plugins/agent-a2ui/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui/index.js +42 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.d.ts +3 -0
- package/lib/loop/plugins/agent-a2ui-jupyter-output/index.js +53 -0
- package/lib/loop/plugins/agent-capacity/index.d.ts +39 -0
- package/lib/loop/plugins/agent-capacity/index.js +52 -0
- package/lib/loop/plugins/agent-checkpoints/index.d.ts +3 -0
- package/lib/loop/plugins/agent-checkpoints/index.js +26 -0
- package/lib/loop/plugins/agent-code-sandbox/index.d.ts +3 -0
- package/lib/loop/plugins/agent-code-sandbox/index.js +24 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.d.ts +13 -0
- package/lib/loop/plugins/agent-code-sandboxes/index.js +85 -0
- package/lib/loop/plugins/agent-codemode/index.d.ts +5 -0
- package/lib/loop/plugins/agent-codemode/index.js +41 -0
- package/lib/loop/plugins/agent-compaction/index.d.ts +10 -0
- package/lib/loop/plugins/agent-compaction/index.js +34 -0
- package/lib/loop/plugins/agent-evals/index.d.ts +3 -0
- package/lib/loop/plugins/agent-evals/index.js +25 -0
- package/lib/loop/plugins/agent-guardrails/index.d.ts +3 -0
- package/lib/loop/plugins/agent-guardrails/index.js +25 -0
- package/lib/loop/plugins/agent-hooks/index.d.ts +3 -0
- package/lib/loop/plugins/agent-hooks/index.js +28 -0
- package/lib/loop/plugins/agent-inference/index.d.ts +7 -0
- package/lib/loop/plugins/agent-inference/index.js +29 -0
- package/lib/loop/plugins/agent-mcp/index.d.ts +3 -0
- package/lib/loop/plugins/agent-mcp/index.js +25 -0
- package/lib/loop/plugins/agent-memory/index.d.ts +3 -0
- package/lib/loop/plugins/agent-memory/index.js +25 -0
- package/lib/loop/plugins/agent-monitoring/index.d.ts +3 -0
- package/lib/loop/plugins/agent-monitoring/index.js +25 -0
- package/lib/loop/plugins/agent-notifications/index.d.ts +3 -0
- package/lib/loop/plugins/agent-notifications/index.js +25 -0
- package/lib/loop/plugins/agent-otel/index.d.ts +3 -0
- package/lib/loop/plugins/agent-otel/index.js +25 -0
- package/lib/loop/plugins/agent-outputs/index.d.ts +3 -0
- package/lib/loop/plugins/agent-outputs/index.js +25 -0
- package/lib/loop/plugins/agent-parameters/index.d.ts +3 -0
- package/lib/loop/plugins/agent-parameters/index.js +25 -0
- package/lib/loop/plugins/agent-skills/index.d.ts +3 -0
- package/lib/loop/plugins/agent-skills/index.js +25 -0
- package/lib/loop/plugins/agent-subagents/index.d.ts +3 -0
- package/lib/loop/plugins/agent-subagents/index.js +25 -0
- package/lib/loop/plugins/agent-tool-approvals/index.d.ts +11 -0
- package/lib/loop/plugins/agent-tool-approvals/index.js +38 -0
- package/lib/loop/plugins/agent-triggers/index.d.ts +3 -0
- package/lib/loop/plugins/agent-triggers/index.js +26 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.d.ts +20 -0
- package/lib/loop/plugins/agents/AgentSummaryPanel.js +50 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.d.ts +35 -0
- package/lib/loop/plugins/agents/AnonymousKeyBadge.js +53 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.d.ts +24 -0
- package/lib/loop/plugins/agents/DatalayerAgentBridge.js +102 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.d.ts +18 -0
- package/lib/loop/plugins/agents/DatalayerAgentMount.js +12 -0
- package/lib/loop/plugins/agents/SandboxSelector.d.ts +18 -0
- package/lib/loop/plugins/agents/SandboxSelector.js +99 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.d.ts +19 -0
- package/lib/loop/plugins/agents/SandboxStatusBridge.js +23 -0
- package/lib/loop/plugins/agents/SandboxView.d.ts +11 -0
- package/lib/loop/plugins/agents/SandboxView.js +43 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.d.ts +17 -0
- package/lib/loop/plugins/agents/TeamMemberPicker.js +60 -0
- package/lib/loop/plugins/agents/agentIcons.d.ts +23 -0
- package/lib/loop/plugins/agents/agentIcons.js +88 -0
- package/lib/loop/plugins/agents/browserService.d.ts +50 -0
- package/lib/loop/plugins/agents/browserService.js +233 -0
- package/lib/loop/plugins/agents/index.d.ts +13 -0
- package/lib/loop/plugins/agents/index.js +17 -0
- package/lib/loop/plugins/agents/plugin.d.ts +91 -0
- package/lib/loop/plugins/agents/plugin.js +201 -0
- package/lib/loop/plugins/agents/service.d.ts +99 -0
- package/lib/loop/plugins/agents/service.js +167 -0
- package/lib/loop/plugins/agents/specSubagents.d.ts +18 -0
- package/lib/loop/plugins/agents/specSubagents.js +33 -0
- package/lib/loop/plugins/agents/switchable.d.ts +107 -0
- package/lib/loop/plugins/agents/switchable.js +405 -0
- package/lib/loop/plugins/agents/team.d.ts +87 -0
- package/lib/loop/plugins/agents/team.js +143 -0
- package/lib/loop/plugins/agents/useSandboxService.d.ts +11 -0
- package/lib/loop/plugins/agents/useSandboxService.js +36 -0
- package/lib/loop/plugins/agents/useTeamSelection.d.ts +10 -0
- package/lib/loop/plugins/agents/useTeamSelection.js +27 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.d.ts +15 -0
- package/lib/loop/plugins/agentspecs/AgentspecPicker.js +90 -0
- package/lib/loop/plugins/agentspecs/index.d.ts +6 -0
- package/lib/loop/plugins/agentspecs/index.js +63 -0
- package/lib/loop/plugins/chat/ChatView.d.ts +20 -0
- package/lib/loop/plugins/chat/ChatView.js +1670 -0
- package/lib/loop/plugins/chat/chatViewTools.d.ts +41 -0
- package/lib/loop/plugins/chat/chatViewTools.js +92 -0
- package/lib/loop/plugins/chat/index.d.ts +111 -0
- package/lib/loop/plugins/chat/index.js +143 -0
- package/lib/loop/plugins/chat/turnState.d.ts +41 -0
- package/lib/loop/plugins/chat/turnState.js +90 -0
- package/lib/loop/plugins/chat-extras/index.d.ts +14 -0
- package/lib/loop/plugins/chat-extras/index.js +51 -0
- package/lib/loop/plugins/chat-header/HeaderView.d.ts +13 -0
- package/lib/loop/plugins/chat-header/HeaderView.js +6 -0
- package/lib/loop/plugins/chat-header/index.d.ts +3 -0
- package/lib/loop/plugins/chat-header/index.js +21 -0
- package/lib/loop/plugins/chat-view/index.d.ts +10 -0
- package/lib/loop/plugins/chat-view/index.js +29 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.d.ts +27 -0
- package/lib/loop/plugins/checkpoints-sidebar/CheckpointsSidebar.js +174 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.d.ts +5 -0
- package/lib/loop/plugins/checkpoints-sidebar/index.js +39 -0
- package/lib/loop/plugins/commands/index.d.ts +20 -0
- package/lib/loop/plugins/commands/index.js +148 -0
- package/lib/loop/plugins/decks/DeckSurface.d.ts +10 -0
- package/lib/loop/plugins/decks/DeckSurface.js +6 -0
- package/lib/loop/plugins/decks/DecksMenu.d.ts +11 -0
- package/lib/loop/plugins/decks/DecksMenu.js +42 -0
- package/lib/loop/plugins/decks/index.d.ts +19 -0
- package/lib/loop/plugins/decks/index.js +133 -0
- package/lib/loop/plugins/decks/surface.d.ts +7 -0
- package/lib/loop/plugins/decks/surface.js +11 -0
- package/lib/loop/plugins/document/DocumentView.d.ts +12 -0
- package/lib/loop/plugins/document/DocumentView.js +68 -0
- package/lib/loop/plugins/document/index.d.ts +3 -0
- package/lib/loop/plugins/document/index.js +86 -0
- package/lib/loop/plugins/document/openingDocument.d.ts +28 -0
- package/lib/loop/plugins/document/openingDocument.js +122 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.d.ts +16 -0
- package/lib/loop/plugins/document-toolbar/SandboxStatusItem.js +31 -0
- package/lib/loop/plugins/document-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/document-toolbar/index.js +35 -0
- package/lib/loop/plugins/document-toolbar/names.d.ts +6 -0
- package/lib/loop/plugins/document-toolbar/names.js +10 -0
- package/lib/loop/plugins/document-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/document-toolbar/plugin.js +38 -0
- package/lib/loop/plugins/document-view/index.d.ts +10 -0
- package/lib/loop/plugins/document-view/index.js +28 -0
- package/lib/loop/plugins/graph/GraphToggle.d.ts +17 -0
- package/lib/loop/plugins/graph/GraphToggle.js +22 -0
- package/lib/loop/plugins/graph/GraphView.d.ts +16 -0
- package/lib/loop/plugins/graph/GraphView.js +6 -0
- package/lib/loop/plugins/graph/index.d.ts +5 -0
- package/lib/loop/plugins/graph/index.js +80 -0
- package/lib/loop/plugins/graph/viewType.d.ts +10 -0
- package/lib/loop/plugins/graph/viewType.js +14 -0
- package/lib/loop/plugins/input-prompt/ComposerView.d.ts +15 -0
- package/lib/loop/plugins/input-prompt/ComposerView.js +25 -0
- package/lib/loop/plugins/input-prompt/index.d.ts +25 -0
- package/lib/loop/plugins/input-prompt/index.js +26 -0
- package/lib/loop/plugins/models/index.d.ts +3 -0
- package/lib/loop/plugins/models/index.js +49 -0
- package/lib/loop/plugins/notebook/NotebookView.d.ts +9 -0
- package/lib/loop/plugins/notebook/NotebookView.js +189 -0
- package/lib/loop/plugins/notebook/index.d.ts +3 -0
- package/lib/loop/plugins/notebook/index.js +91 -0
- package/lib/loop/plugins/notebook/openingNotebook.d.ts +72 -0
- package/lib/loop/plugins/notebook/openingNotebook.js +90 -0
- package/lib/loop/plugins/notebook-toolbar/index.d.ts +4 -0
- package/lib/loop/plugins/notebook-toolbar/index.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/items.d.ts +10 -0
- package/lib/loop/plugins/notebook-toolbar/items.js +45 -0
- package/lib/loop/plugins/notebook-toolbar/names.d.ts +9 -0
- package/lib/loop/plugins/notebook-toolbar/names.js +13 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.d.ts +2 -0
- package/lib/loop/plugins/notebook-toolbar/plugin.js +24 -0
- package/lib/loop/plugins/notebook-view/index.d.ts +10 -0
- package/lib/loop/plugins/notebook-view/index.js +30 -0
- package/lib/loop/plugins/page-layout/TurnPanel.d.ts +25 -0
- package/lib/loop/plugins/page-layout/TurnPanel.js +126 -0
- package/lib/loop/plugins/page-layout/index.d.ts +35 -0
- package/lib/loop/plugins/page-layout/index.js +80 -0
- package/lib/loop/plugins/plugins-panel/index.d.ts +14 -0
- package/lib/loop/plugins/plugins-panel/index.js +74 -0
- package/lib/loop/plugins/prompt/NewChatAction.d.ts +19 -0
- package/lib/loop/plugins/prompt/NewChatAction.js +10 -0
- package/lib/loop/plugins/prompt/index.d.ts +11 -0
- package/lib/loop/plugins/prompt/index.js +73 -0
- package/lib/loop/plugins/shell/editorChoice.d.ts +31 -0
- package/lib/loop/plugins/shell/editorChoice.js +58 -0
- package/lib/loop/plugins/shell/index.d.ts +47 -0
- package/lib/loop/plugins/shell/index.js +142 -0
- package/lib/loop/plugins/shell/useEditorPreviews.d.ts +32 -0
- package/lib/loop/plugins/shell/useEditorPreviews.js +217 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.d.ts +16 -0
- package/lib/loop/plugins/subagent-activity/SubagentPulse.js +45 -0
- package/lib/loop/plugins/subagent-activity/index.d.ts +12 -0
- package/lib/loop/plugins/subagent-activity/index.js +42 -0
- package/lib/loop/plugins/view-switch/index.d.ts +46 -0
- package/lib/loop/plugins/view-switch/index.js +68 -0
- package/lib/loop/plugins/window-frame/WindowFrame.d.ts +48 -0
- package/lib/loop/plugins/window-frame/WindowFrame.js +63 -0
- package/lib/loop/plugins/window-frame/index.d.ts +6 -0
- package/lib/loop/plugins/window-frame/index.js +79 -0
- package/lib/loop/plugins/window-frame/slots.d.ts +26 -0
- package/lib/loop/plugins/window-frame/slots.js +30 -0
- package/lib/loop/presets.d.ts +167 -0
- package/lib/loop/presets.js +139 -0
- package/lib/loop/shell/LoopWorkspace.d.ts +109 -0
- package/lib/loop/shell/LoopWorkspace.js +231 -0
- package/lib/loop/shell/PluginToggles.d.ts +21 -0
- package/lib/loop/shell/PluginToggles.js +41 -0
- package/lib/loop/shell/ViewSwitcher.d.ts +24 -0
- package/lib/loop/shell/ViewSwitcher.js +43 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.d.ts +25 -0
- package/lib/loop/shell/WorkspaceFullScreenAction.js +24 -0
- package/lib/loop/shell/index.d.ts +10 -0
- package/lib/loop/shell/index.js +14 -0
- package/lib/loop/shell/useWorkspaceFullScreen.d.ts +93 -0
- package/lib/loop/shell/useWorkspaceFullScreen.js +167 -0
- package/lib/loop-example-main.d.ts +1 -0
- package/lib/loop-example-main.js +42 -0
- package/lib/loop-main.d.ts +1 -0
- package/lib/loop-main.js +138 -0
- package/lib/mcp/McpServerManager.d.ts +1 -1
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +1 -1
- package/lib/models/CodeSandboxVariant.d.ts +13 -5
- package/lib/models/CodeSandboxVariant.js +17 -5
- package/lib/models/Content.d.ts +26 -0
- package/lib/models/Environment.d.ts +561 -5
- package/lib/models/Environment.js +12 -1
- package/lib/models/EnvironmentDTO.d.ts +24 -6
- package/lib/models/EnvironmentDTO.js +13 -2
- package/lib/models/Exercise.d.ts +0 -2
- package/lib/models/Library.d.ts +0 -2
- package/lib/models/Notebook.d.ts +0 -2
- package/lib/models/ProjectDTO.d.ts +2 -2
- package/lib/models/ProjectDTO.js +4 -4
- package/lib/models/Runtime.d.ts +11 -11
- package/lib/models/RuntimeDTO.d.ts +16 -7
- package/lib/models/RuntimeDTO.js +9 -9
- package/lib/models/Space.d.ts +10 -0
- package/lib/models/Space.js +1 -1
- package/lib/models/SpaceDTO.d.ts +1 -1
- package/lib/models/SpaceItem.d.ts +1 -2
- package/lib/models/environments.generated.d.ts +113 -0
- package/lib/models/environments.generated.js +13 -0
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.js +0 -1
- package/lib/protocols/A2AAdapter.d.ts +39 -6
- package/lib/protocols/A2AAdapter.js +180 -11
- package/lib/protocols/ACPAdapter.js +40 -37
- package/lib/protocols/AGUIAdapter.d.ts +14 -0
- package/lib/protocols/AGUIAdapter.js +34 -9
- package/lib/protocols/BrowserAgentAdapter.d.ts +117 -0
- package/lib/protocols/BrowserAgentAdapter.js +310 -0
- package/lib/protocols/VercelAIAdapter.d.ts +10 -0
- package/lib/protocols/VercelAIAdapter.js +27 -7
- package/lib/protocols/index.d.ts +1 -0
- package/lib/protocols/index.js +1 -0
- package/lib/runtimes/actions.d.ts +3 -3
- package/lib/runtimes/actions.js +27 -14
- package/lib/runtimes/apis.d.ts +13 -4
- package/lib/runtimes/browser/agent.d.ts +54 -0
- package/lib/runtimes/browser/agent.js +63 -0
- package/lib/runtimes/browser/anonymousToken.d.ts +121 -0
- package/lib/runtimes/browser/anonymousToken.js +300 -0
- package/lib/runtimes/browser/frontendTools.d.ts +61 -0
- package/lib/runtimes/browser/frontendTools.js +152 -0
- package/lib/runtimes/browser/index.d.ts +11 -0
- package/lib/runtimes/browser/index.js +20 -0
- package/lib/runtimes/browser/model.d.ts +52 -0
- package/lib/runtimes/browser/model.js +110 -0
- package/lib/runtimes/browser/protocol.d.ts +54 -0
- package/lib/runtimes/browser/protocol.js +35 -0
- package/lib/runtimes/browser/subagents.d.ts +131 -0
- package/lib/runtimes/browser/subagents.js +241 -0
- package/lib/runtimes/index.d.ts +3 -0
- package/lib/runtimes/index.js +3 -0
- package/lib/runtimes/lifecycle.d.ts +76 -0
- package/lib/runtimes/lifecycle.js +99 -0
- package/lib/runtimes/variants.d.ts +172 -0
- package/lib/runtimes/variants.js +187 -0
- package/lib/services/reconnectToRuntime.d.ts +2 -2
- package/lib/services/reconnectToRuntime.js +3 -3
- package/lib/services/sandboxServiceManagers.d.ts +2 -2
- package/lib/services/sandboxServiceManagers.js +11 -11
- package/lib/specs/agents/agents.d.ts +128 -112
- package/lib/specs/agents/agents.js +8024 -5052
- package/lib/specs/evals.js +9 -0
- package/lib/specs/frontendTools.d.ts +3 -0
- package/lib/specs/frontendTools.js +46 -3
- package/lib/specs/mcpServers.d.ts +1 -0
- package/lib/specs/mcpServers.js +25 -2
- package/lib/specs/models.d.ts +18 -0
- package/lib/specs/models.js +154 -0
- package/lib/specs/outputs.d.ts +2 -0
- package/lib/specs/outputs.js +22 -0
- package/lib/specs/personas.js +1 -1
- package/lib/specs/teams/teams.d.ts +2 -0
- package/lib/specs/teams/teams.js +628 -111
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -1
- package/lib/state/substates/RuntimesState.d.ts +5 -5
- package/lib/state/substates/RuntimesState.js +14 -14
- package/lib/state/substates/index.d.ts +1 -1
- package/lib/state/substates/index.js +1 -1
- package/lib/stores/agentRuntimeStore.d.ts +43 -1
- package/lib/stores/agentRuntimeStore.js +100 -11
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -1
- package/lib/stories/Button.d.ts +1 -1
- package/lib/stories/Button.stories.d.ts +1 -1
- package/lib/stories/Header.d.ts +1 -1
- package/lib/stories/Header.stories.d.ts +1 -1
- package/lib/test-setup.js +66 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +15 -0
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +43 -2
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +9 -0
- package/lib/tools/adapters/agent-runtimes/notebookHooks.js +12 -0
- package/lib/tools/adapters/commands/frontendCommandTools.d.ts +11 -0
- package/lib/tools/adapters/commands/frontendCommandTools.js +60 -0
- package/lib/tools/adapters/commands/index.d.ts +1 -0
- package/lib/{models/Dataset.js → tools/adapters/commands/index.js} +1 -1
- package/lib/tools/adapters/copilotkit/lexicalHooks.js +7 -3
- package/lib/tools/index.d.ts +1 -0
- package/lib/tools/index.js +1 -0
- package/lib/types/a2a.d.ts +15 -1
- package/lib/types/agents-lifecycle.d.ts +11 -6
- package/lib/types/agents.d.ts +31 -6
- package/lib/types/agentspecs.d.ts +120 -4
- package/lib/types/chat.d.ts +251 -3
- package/lib/types/checkpoints.d.ts +20 -0
- package/lib/types/config.d.ts +13 -1
- package/lib/types/connection.d.ts +1 -1
- package/lib/types/evals.d.ts +2 -0
- package/lib/types/messages.d.ts +60 -0
- package/lib/types/models.d.ts +26 -0
- package/lib/types/notifications.d.ts +15 -6
- package/lib/types/protocol.d.ts +7 -2
- package/lib/types/stream.d.ts +48 -3
- package/lib/types/stream.js +5 -0
- package/lib/types/teams.d.ts +102 -4
- package/lib/types/tool-approvals.d.ts +1 -1
- package/lib/types/tools.d.ts +8 -2
- package/lib/utils/utils.js +7 -1
- package/package.json +376 -361
- package/scripts/codegen/__pycache__/compose.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/compose.py +208 -0
- package/scripts/codegen/generate_agents.py +202 -31
- package/scripts/codegen/generate_evals.py +2 -0
- package/scripts/codegen/generate_frontend_tools.py +35 -6
- package/scripts/codegen/generate_models.py +40 -15
- package/scripts/codegen/generate_sandbox_agents.py +76 -62
- package/scripts/codegen/generate_teams.py +178 -4
- package/scripts/codegen/generate_tools.py +6 -4
- package/scripts/gen_workers.py +278 -110
- package/scripts/generate-environments-types.py +404 -0
- package/lib/chat/prompt/InputFooter.d.ts +0 -58
- package/lib/chat/prompt/InputFooter.js +0 -194
- package/lib/chat/prompt/InputPromptFooter.d.ts +0 -27
- package/lib/chat/prompt/InputPromptFooter.js +0 -15
- package/lib/chat/prompt/InputPromptHeader.d.ts +0 -15
- package/lib/chat/prompt/InputPromptHeader.js +0 -15
- package/lib/chat/usage/TokenUsageBar.d.ts +0 -8
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/jupyter/kernelsHandler.js +0 -39
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
|
@@ -8,6 +8,20 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { type ReactNode } from 'react';
|
|
10
10
|
import type { EmptyStateConfig, Suggestion } from '../../types/chat';
|
|
11
|
+
export { groupSuggestions } from './groupSuggestions';
|
|
12
|
+
/**
|
|
13
|
+
* How wide a suggestion chip stands, in pixels — fixed, not a cap.
|
|
14
|
+
*
|
|
15
|
+
* An opener is a whole request in the words somebody would type, and some
|
|
16
|
+
* are a sentence long — "Explain this notebook cell by cell, as if I am new
|
|
17
|
+
* to Python" — while others are a few words — "Rerun with another model".
|
|
18
|
+
* Sized to their own words, a row of them read as uneven lines of text
|
|
19
|
+
* rather than as one set of options. One width, for every chip and every
|
|
20
|
+
* place that draws them (the empty state below and the page layout's row
|
|
21
|
+
* under the composer); past it the label truncates, and the chip's own
|
|
22
|
+
* title still carries the whole sentence on hover.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SUGGESTION_CHIP_WIDTH = 140;
|
|
11
25
|
export interface ChatEmptyStateProps {
|
|
12
26
|
/** Empty-state configuration (icon, title, subtitle, render) */
|
|
13
27
|
emptyState?: EmptyStateConfig;
|
|
@@ -24,4 +38,4 @@ export interface ChatEmptyStateProps {
|
|
|
24
38
|
/** Whether clicking a suggestion auto-submits it */
|
|
25
39
|
submitOnSuggestionClick?: boolean;
|
|
26
40
|
}
|
|
27
|
-
export declare function ChatEmptyState({ emptyState, brandIcon, description, suggestions, onSuggestionSubmit, onSuggestionFill, submitOnSuggestionClick, }: ChatEmptyStateProps): import("react
|
|
41
|
+
export declare function ChatEmptyState({ emptyState, brandIcon, description, suggestions, onSuggestionSubmit, onSuggestionFill, submitOnSuggestionClick, }: ChatEmptyStateProps): import("react").JSX.Element;
|
|
@@ -2,6 +2,21 @@ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { Text, LabelGroup, Label, Truncate, ThemeProvider, } from '@primer/react';
|
|
3
3
|
import { Box } from '@datalayer/primer-addons';
|
|
4
4
|
import { AiAgentIcon } from '@datalayer/icons-react';
|
|
5
|
+
import { groupSuggestions } from './groupSuggestions';
|
|
6
|
+
export { groupSuggestions } from './groupSuggestions';
|
|
7
|
+
/**
|
|
8
|
+
* How wide a suggestion chip stands, in pixels — fixed, not a cap.
|
|
9
|
+
*
|
|
10
|
+
* An opener is a whole request in the words somebody would type, and some
|
|
11
|
+
* are a sentence long — "Explain this notebook cell by cell, as if I am new
|
|
12
|
+
* to Python" — while others are a few words — "Rerun with another model".
|
|
13
|
+
* Sized to their own words, a row of them read as uneven lines of text
|
|
14
|
+
* rather than as one set of options. One width, for every chip and every
|
|
15
|
+
* place that draws them (the empty state below and the page layout's row
|
|
16
|
+
* under the composer); past it the label truncates, and the chip's own
|
|
17
|
+
* title still carries the whole sentence on hover.
|
|
18
|
+
*/
|
|
19
|
+
export const SUGGESTION_CHIP_WIDTH = 140;
|
|
5
20
|
// ---------------------------------------------------------------------------
|
|
6
21
|
// Component
|
|
7
22
|
// ---------------------------------------------------------------------------
|
|
@@ -18,24 +33,75 @@ export function ChatEmptyState({ emptyState, brandIcon, description, suggestions
|
|
|
18
33
|
onSuggestionFill?.(suggestion.message);
|
|
19
34
|
}
|
|
20
35
|
};
|
|
36
|
+
/*
|
|
37
|
+
* The openers in blocks: the ungrouped ones first, as the one row they
|
|
38
|
+
* always were, then each group under its own heading in the order the
|
|
39
|
+
* groups first appear. A team's openers and, beneath them, the addressed
|
|
40
|
+
* member's own is the case this draws — and when the host gave the empty
|
|
41
|
+
* state *levels*, each level takes its own group's openers and the blocks
|
|
42
|
+
* below are only what no level claimed.
|
|
43
|
+
*/
|
|
44
|
+
const sections = emptyState?.sections ?? [];
|
|
45
|
+
const claimed = new Set(sections.map(section => section.group));
|
|
46
|
+
const blocks = groupSuggestions((suggestions ?? []).filter(suggestion => suggestion.group === undefined || !claimed.has(suggestion.group)));
|
|
47
|
+
const chips = (items) => (_jsx(LabelGroup, { sx: { justifyContent: 'center' }, children: items.map((suggestion, index) => (_jsx(Label, { variant: "accent",
|
|
48
|
+
// The whole request: the chip may show only its summary.
|
|
49
|
+
title: suggestion.message, sx: {
|
|
50
|
+
cursor: 'pointer',
|
|
51
|
+
display: 'inline-flex',
|
|
52
|
+
alignItems: 'center',
|
|
53
|
+
width: SUGGESTION_CHIP_WIDTH,
|
|
54
|
+
flex: `0 0 ${SUGGESTION_CHIP_WIDTH}px`,
|
|
55
|
+
'&:hover': {
|
|
56
|
+
bg: 'accent.emphasis',
|
|
57
|
+
color: 'var(--button-primary-fgColor-rest)',
|
|
58
|
+
borderColor: 'accent.emphasis',
|
|
59
|
+
},
|
|
60
|
+
}, onClick: () => handleSuggestionClick(suggestion), children: _jsx(Truncate, { title: suggestion.message, maxWidth: "100%", sx: { minWidth: 0 }, children: suggestion.title }) }, index))) }));
|
|
21
61
|
return (_jsx(ThemeProvider, { children: _jsxs(Box, { sx: {
|
|
22
62
|
display: 'flex',
|
|
23
63
|
flexDirection: 'column',
|
|
64
|
+
// Centred across the column, anchored to its top: the introduction
|
|
65
|
+
// is where a conversation starts, and the first message should
|
|
66
|
+
// appear under it rather than push it around the canvas.
|
|
24
67
|
alignItems: 'center',
|
|
25
|
-
justifyContent: '
|
|
26
|
-
height: '100%',
|
|
68
|
+
justifyContent: 'flex-start',
|
|
27
69
|
p: 4,
|
|
28
70
|
color: 'fg.muted',
|
|
29
71
|
textAlign: 'center',
|
|
30
72
|
gap: 2,
|
|
31
|
-
}, children: [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
73
|
+
}, children: [sections.length > 0 ? (
|
|
74
|
+
/*
|
|
75
|
+
* Levels: the first at full size, the ones under it a step
|
|
76
|
+
* smaller and set off by a rule — a team, then the member of it
|
|
77
|
+
* being addressed, each introducing itself and offering its own
|
|
78
|
+
* openers.
|
|
79
|
+
*/
|
|
80
|
+
sections.map((section, level) => (_jsxs(Box, { sx: {
|
|
81
|
+
display: 'flex',
|
|
82
|
+
flexDirection: 'column',
|
|
83
|
+
alignItems: 'center',
|
|
84
|
+
gap: 2,
|
|
85
|
+
width: '100%',
|
|
86
|
+
...(level > 0
|
|
87
|
+
? {
|
|
88
|
+
mt: 3,
|
|
89
|
+
pt: 3,
|
|
90
|
+
borderTop: '1px solid',
|
|
91
|
+
borderColor: 'border.muted',
|
|
92
|
+
}
|
|
93
|
+
: null),
|
|
94
|
+
}, children: [section.icon, _jsx(Text, { sx: {
|
|
95
|
+
fontSize: level === 0 ? 2 : 1,
|
|
96
|
+
fontWeight: level === 0 ? 'normal' : 'semibold',
|
|
97
|
+
}, children: section.title }), section.subtitle ? (_jsx(Text, { sx: { fontSize: level === 0 ? 1 : 0 }, children: section.subtitle })) : null, (() => {
|
|
98
|
+
const own = (suggestions ?? []).filter(suggestion => suggestion.group === section.group);
|
|
99
|
+
return own.length > 0 ? chips(own) : null;
|
|
100
|
+
})()] }, section.group)))) : (_jsxs(_Fragment, { children: [emptyState?.icon || brandIcon || _jsx(AiAgentIcon, { colored: true, size: 48 }), _jsx(Text, { sx: { fontSize: 2 }, children: emptyState?.title || 'Start a conversation' }), (emptyState?.subtitle || description) && (_jsx(Text, { sx: { fontSize: 1 }, children: emptyState?.subtitle || description }))] })), blocks.map(block => (_jsxs(Box, { sx: {
|
|
101
|
+
display: 'flex',
|
|
102
|
+
flexDirection: 'column',
|
|
103
|
+
alignItems: 'center',
|
|
104
|
+
gap: 1,
|
|
105
|
+
mt: 2,
|
|
106
|
+
}, children: [block.group ? (_jsx(Text, { sx: { fontSize: 0, color: 'fg.muted' }, children: block.group })) : null, chips(block.items)] }, block.group ?? '')))] }) }));
|
|
41
107
|
}
|
|
@@ -30,5 +30,5 @@ export interface FloatingBrandButtonProps {
|
|
|
30
30
|
* Floating brand button component
|
|
31
31
|
* A circular button that floats in a corner to open/close the chat
|
|
32
32
|
*/
|
|
33
|
-
export declare function FloatingBrandButton({ isOpen, onToggle, position, icon, tooltip, unreadCount, className, brandColor, }: FloatingBrandButtonProps):
|
|
33
|
+
export declare function FloatingBrandButton({ isOpen, onToggle, position, icon, tooltip, unreadCount, className, brandColor, }: FloatingBrandButtonProps): React.JSX.Element;
|
|
34
34
|
export default FloatingBrandButton;
|
|
@@ -22,5 +22,5 @@ export interface PoweredByTagProps {
|
|
|
22
22
|
* PoweredBy tag component
|
|
23
23
|
* Displays a "Powered by X" branding tag
|
|
24
24
|
*/
|
|
25
|
-
export declare function PoweredByTag({ show, brandName, brandUrl, brandIcon, }: PoweredByTagProps):
|
|
25
|
+
export declare function PoweredByTag({ show, brandName, brandUrl, brandIcon, }: PoweredByTagProps): React.JSX.Element | null;
|
|
26
26
|
export default PoweredByTag;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Openers in blocks.
|
|
3
|
+
*
|
|
4
|
+
* A suggestion may name a `group`; the ungrouped ones come first, as one
|
|
5
|
+
* block, and each group follows as a block of its own in the order it first
|
|
6
|
+
* appears. The empty state draws the blocks as rows of chips under headings
|
|
7
|
+
* and the composer's suggestions menu as sections — the same shape, so a
|
|
8
|
+
* team's openers and the addressed member's own read the same in both.
|
|
9
|
+
*
|
|
10
|
+
* @module chat/display/groupSuggestions
|
|
11
|
+
*/
|
|
12
|
+
/** The least a suggestion needs to be grouped. */
|
|
13
|
+
export type Groupable = {
|
|
14
|
+
group?: string;
|
|
15
|
+
};
|
|
16
|
+
export type SuggestionBlock<T extends Groupable> = {
|
|
17
|
+
group?: string;
|
|
18
|
+
items: T[];
|
|
19
|
+
};
|
|
20
|
+
/** The openers in blocks: the ungrouped first, then each group as it first appears. */
|
|
21
|
+
export declare function groupSuggestions<T extends Groupable>(suggestions: T[]): SuggestionBlock<T>[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/** The openers in blocks: the ungrouped first, then each group as it first appears. */
|
|
6
|
+
export function groupSuggestions(suggestions) {
|
|
7
|
+
const blocks = [];
|
|
8
|
+
for (const suggestion of suggestions) {
|
|
9
|
+
const block = blocks.find(entry => entry.group === suggestion.group);
|
|
10
|
+
if (block) {
|
|
11
|
+
block.items.push(suggestion);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
blocks.push({ group: suggestion.group, items: [suggestion] });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return blocks.sort((left, right) => left.group === undefined ? -1 : right.group === undefined ? 1 : 0);
|
|
18
|
+
}
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EphemeralDocument — an in-memory Lexical rich-text document rendered next to
|
|
3
|
+
* the chat.
|
|
4
|
+
*
|
|
5
|
+
* This is the document analogue of {@link EphemeralNotebook}. The Lexical
|
|
6
|
+
* editor state lives purely in memory and is mirrored into the agent-runtime
|
|
7
|
+
* Zustand store (`ephemeralDocumentModels`) so the document survives navigating
|
|
8
|
+
* away from and back to the same runtime page. While mounted, its lexical
|
|
9
|
+
* frontend tools are reported upward via `onToolsReady` so the agent can drive
|
|
10
|
+
* the document blocks (insert / update / delete / read).
|
|
11
|
+
*
|
|
12
|
+
* IMPORTANT: this module statically imports `@datalayer/jupyter-lexical`, which
|
|
13
|
+
* initialises Lumino-backed nodes on load. It is therefore lazy-loaded by
|
|
14
|
+
* `ChatBase` (via `React.lazy`) so notebook-only chats never pull in lexical.
|
|
15
|
+
*
|
|
16
|
+
* @module chat/document/EphemeralDocument
|
|
17
|
+
*/
|
|
18
|
+
import '@datalayer/jupyter-react/lib/css/PrismCss';
|
|
19
|
+
import type { JSX } from 'react';
|
|
20
|
+
import { ServiceManager } from '@jupyterlab/services';
|
|
1
21
|
import type { IKernelConnection } from '@jupyterlab/services/lib/kernel/kernel';
|
|
2
22
|
import { type ToolbarItem } from '@datalayer/primer-addons';
|
|
3
23
|
import type { FrontendToolDefinition } from '../../types/tools';
|
|
4
24
|
import type { EphemeralRuntimeOverride } from '../notebook/EphemeralNotebook';
|
|
5
|
-
import '@datalayer/jupyter-react/lib/css/PrismCss';
|
|
6
25
|
import '@datalayer/jupyter-lexical/style/index.css';
|
|
7
26
|
/**
|
|
8
27
|
* Real-time collaboration configuration for the ephemeral document.
|
|
@@ -38,9 +57,27 @@ export interface EphemeralDocumentProps {
|
|
|
38
57
|
*/
|
|
39
58
|
documentId: string;
|
|
40
59
|
/** Preferred runtime pod name to bind the document kernel to. */
|
|
41
|
-
|
|
60
|
+
runtimeName?: string;
|
|
42
61
|
/** Optional explicit runtime endpoint (agent-node tunnel proxy path). */
|
|
43
62
|
runtimeOverride?: EphemeralRuntimeOverride;
|
|
63
|
+
/**
|
|
64
|
+
* Services the host already has, used instead of building some from a URL.
|
|
65
|
+
*
|
|
66
|
+
* An in-page sandbox — JupyterLite over Pyodide — has no address to connect
|
|
67
|
+
* to: it *is* the services. Without this the document had no way to reach
|
|
68
|
+
* such a kernel and rendered an empty editor with nothing in the console,
|
|
69
|
+
* because "no base url" was a silent early return rather than a failure.
|
|
70
|
+
*
|
|
71
|
+
* The host keeps ownership: a manager passed in is never disposed here.
|
|
72
|
+
*/
|
|
73
|
+
serviceManager?: ServiceManager.IManager;
|
|
74
|
+
/**
|
|
75
|
+
* Kernel to join on that manager, rather than starting another.
|
|
76
|
+
*
|
|
77
|
+
* The agent and the reader should be looking at one kernel; starting a
|
|
78
|
+
* second one beside it is how they end up with different variables.
|
|
79
|
+
*/
|
|
80
|
+
kernelId?: string;
|
|
44
81
|
/** Optional theme variant override from host chat context. */
|
|
45
82
|
themeVariant?: string;
|
|
46
83
|
/** Optional color mode override from host chat context. */
|
|
@@ -73,10 +110,37 @@ export interface EphemeralDocumentProps {
|
|
|
73
110
|
* change it — the same way the notebook surface does through the
|
|
74
111
|
* `extraItems` of its toolbar.
|
|
75
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Render without wrapping the content in a theme provider.
|
|
115
|
+
*
|
|
116
|
+
* For a host that already owns one — the LOOP workspace, where the entry
|
|
117
|
+
* point provides the theme and the views inherit it. Nested providers fight
|
|
118
|
+
* over `BaseStyles` and font tokens, and the inner one wins for the wrong
|
|
119
|
+
* reasons.
|
|
120
|
+
*/
|
|
121
|
+
inheritTheme?: boolean;
|
|
76
122
|
toolbarExtraItems?: ToolbarItem[];
|
|
123
|
+
/**
|
|
124
|
+
* Whether to draw a toolbar at all. Defaults to true.
|
|
125
|
+
*
|
|
126
|
+
* For a host where the toolbar is somebody's to provide — the LOOP
|
|
127
|
+
* workspace, where a plugin owns it and can be switched off. `false` draws
|
|
128
|
+
* no bar rather than an empty one: an empty bar still costs a row and a
|
|
129
|
+
* border, and reads as broken rather than as absent.
|
|
130
|
+
*/
|
|
131
|
+
showToolbar?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Whether the document takes the caret once its editor mounts. Defaults to
|
|
134
|
+
* `true`.
|
|
135
|
+
*
|
|
136
|
+
* `false` for a host whose composer already asked for the caret on mount:
|
|
137
|
+
* this editor only exists once a sandbox — and, for the ephemeral case, a
|
|
138
|
+
* kernel — has finished starting, well after a chat composer's own
|
|
139
|
+
* `autoFocus` effect has already run and stopped watching, so the
|
|
140
|
+
* document's unconditional autofocus otherwise steals the caret back a
|
|
141
|
+
* moment later purely by mounting second.
|
|
142
|
+
*/
|
|
143
|
+
autoFocus?: boolean;
|
|
77
144
|
}
|
|
78
|
-
|
|
79
|
-
* Renders an in-memory Lexical document backed by a sandbox kernel.
|
|
80
|
-
*/
|
|
81
|
-
export declare function EphemeralDocument({ documentId, runtimePodName, runtimeOverride, themeVariant, colorMode, content, onContentChange, onToolsReady, onKernelChange, collaboration, toolbarExtraItems, }: EphemeralDocumentProps): import("react/jsx-runtime").JSX.Element;
|
|
145
|
+
export declare function EphemeralDocument({ documentId, runtimeName, runtimeOverride, serviceManager: providedServiceManager, kernelId, themeVariant, colorMode, content, onContentChange, onToolsReady, onKernelChange, collaboration, toolbarExtraItems, showToolbar, inheritTheme, autoFocus, }: EphemeralDocumentProps): JSX.Element;
|
|
82
146
|
export default EphemeralDocument;
|
|
@@ -20,34 +20,32 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
20
20
|
*
|
|
21
21
|
* @module chat/document/EphemeralDocument
|
|
22
22
|
*/
|
|
23
|
+
/*
|
|
24
|
+
* First, before anything lexical: `@lexical/code` pulls Prism *language
|
|
25
|
+
* components*, plain scripts that read the bare global `Prism` the moment
|
|
26
|
+
* they evaluate — and this module is what defines it. Imported lower down,
|
|
27
|
+
* the languages ran first and the whole editor died on "Prism is not
|
|
28
|
+
* defined" before it could draw anything.
|
|
29
|
+
*/
|
|
30
|
+
import '@datalayer/jupyter-react/lib/css/PrismCss';
|
|
23
31
|
import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
|
|
24
|
-
import { $getRoot, $createParagraphNode, } from 'lexical';
|
|
25
|
-
import {
|
|
26
|
-
import { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';
|
|
32
|
+
import { $getRoot, $createParagraphNode, defineExtension, } from 'lexical';
|
|
33
|
+
import { LexicalExtensionComposer } from '@lexical/react/LexicalExtensionComposer';
|
|
27
34
|
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
|
|
28
|
-
import { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';
|
|
29
35
|
import { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin';
|
|
30
36
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import { MarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';
|
|
34
|
-
import { TRANSFORMERS } from '@lexical/markdown';
|
|
35
|
-
import { registerCodeHighlighting } from '@lexical/code';
|
|
36
|
-
import { ListPlugin } from '@lexical/react/LexicalListPlugin';
|
|
37
|
-
import { CheckListPlugin } from '@lexical/react/LexicalCheckListPlugin';
|
|
38
|
-
import { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';
|
|
37
|
+
import { AutoFocusExtension, getExtensionDependencyFromEditor, } from '@lexical/extension';
|
|
38
|
+
import { HistoryExtension } from '@lexical/history';
|
|
39
39
|
import { ServerConnection, ServiceManager } from '@jupyterlab/services';
|
|
40
40
|
import { DatalayerThemeProvider, getThemeConfig, useSystemColorMode, useThemeStore, } from '@datalayer/primer-addons';
|
|
41
|
-
import { Box
|
|
41
|
+
import { Box } from '@primer/react';
|
|
42
42
|
import { JupyterReactTheme, Kernel, disposeServiceManager, } from '@datalayer/jupyter-react';
|
|
43
|
-
import { ComponentPickerMenuPlugin,
|
|
43
|
+
import { ComponentPickerMenuPlugin, JupyterLexicalExtension, JupyterInputOutputPlugin, DraggableBlockPlugin, TableCellResizerPlugin, TableActionMenuPlugin, TableHoverActionsV2Plugin, LexicalConfigProvider, LexicalStatePlugin, FloatingTextFormatToolbarPlugin, CodeActionMenuPlugin, ToolbarPlugin, ToolbarContext, CommentsProvider, DocumentSkeleton, commentTheme, } from '@datalayer/jupyter-lexical';
|
|
44
44
|
import { createWebsocketProvider, LoroCollaborationPlugin, } from '@datalayer/lexical-loro';
|
|
45
|
-
import { editorConfig } from '../../examples/lexical/editorConfig';
|
|
46
45
|
import { useLexicalTools } from '../../tools/adapters/agent-runtimes/lexicalHooks';
|
|
47
46
|
import { useAgentsRuntimes } from '../../hooks/useAgentRuntimes';
|
|
48
47
|
import { registerSandboxServiceManager } from '../../services/sandboxServiceManagers';
|
|
49
48
|
import { useProgressTask } from '../../hooks/useProgressTask';
|
|
50
|
-
import '@datalayer/jupyter-react/lib/css/PrismCss';
|
|
51
49
|
import '@datalayer/jupyter-lexical/style/index.css';
|
|
52
50
|
/**
|
|
53
51
|
* Lexical plugin that loads the initial (restored) editor state exactly once.
|
|
@@ -89,10 +87,18 @@ function LoadContentPlugin({ content }) {
|
|
|
89
87
|
}, [content, editor]);
|
|
90
88
|
return null;
|
|
91
89
|
}
|
|
92
|
-
/**
|
|
93
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Undo history follows the collaboration mode.
|
|
92
|
+
*
|
|
93
|
+
* The history is the bundled `HistoryExtension`'s. Its `disabled` signal is
|
|
94
|
+
* flipped here rather than set in the root extension, so that a change of
|
|
95
|
+
* mode does not rebuild the editor and lose the document with it.
|
|
96
|
+
*/
|
|
97
|
+
function HistoryTogglePlugin({ disabled }) {
|
|
94
98
|
const [editor] = useLexicalComposerContext();
|
|
95
|
-
useEffect(() =>
|
|
99
|
+
useEffect(() => {
|
|
100
|
+
getExtensionDependencyFromEditor(editor, HistoryExtension).output.disabled.value = disabled;
|
|
101
|
+
}, [editor, disabled]);
|
|
96
102
|
return null;
|
|
97
103
|
}
|
|
98
104
|
/**
|
|
@@ -108,7 +114,20 @@ function DocumentToolbar({ setIsLinkEditMode, extraItems, }) {
|
|
|
108
114
|
/**
|
|
109
115
|
* Renders an in-memory Lexical document backed by a sandbox kernel.
|
|
110
116
|
*/
|
|
111
|
-
|
|
117
|
+
/**
|
|
118
|
+
* The theme provider, or nothing.
|
|
119
|
+
*
|
|
120
|
+
* A host that already owns a theme root passes `inherit`; nested providers
|
|
121
|
+
* fight over `BaseStyles` and font tokens, and the inner one wins for the wrong
|
|
122
|
+
* reasons.
|
|
123
|
+
*/
|
|
124
|
+
function ThemeRoot({ inherit, colorMode, themeConfig, children, }) {
|
|
125
|
+
if (inherit) {
|
|
126
|
+
return _jsx(_Fragment, { children: children });
|
|
127
|
+
}
|
|
128
|
+
return (_jsx(DatalayerThemeProvider, { colorMode: colorMode, theme: themeConfig.primerTheme, themeStyles: themeConfig.themeStyles, children: children }));
|
|
129
|
+
}
|
|
130
|
+
export function EphemeralDocument({ documentId, runtimeName, runtimeOverride, serviceManager: providedServiceManager, kernelId, themeVariant, colorMode, content, onContentChange, onToolsReady, onKernelChange, collaboration, toolbarExtraItems, showToolbar = true, inheritTheme = false, autoFocus = true, }) {
|
|
112
131
|
// Real-time collaboration is active only when both a WebSocket endpoint and a
|
|
113
132
|
// room id are supplied. In that mode the shared Loro CRDT is the single source
|
|
114
133
|
// of truth: local content-seeding and undo history are disabled so the local
|
|
@@ -162,17 +181,18 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
162
181
|
url: overrideBaseUrl,
|
|
163
182
|
wsUrl: String(runtimeOverride?.wsUrl || '').trim() || undefined,
|
|
164
183
|
token: String(runtimeOverride?.token || '').trim(),
|
|
165
|
-
|
|
184
|
+
runtime_name: String(runtimeOverride?.runtimeName || '').trim() ||
|
|
185
|
+
'agent-node-proxy',
|
|
166
186
|
};
|
|
167
187
|
}
|
|
168
|
-
const
|
|
169
|
-
if (!
|
|
188
|
+
const preferredRuntime = String(runtimeName || '').trim();
|
|
189
|
+
if (!preferredRuntime) {
|
|
170
190
|
return undefined;
|
|
171
191
|
}
|
|
172
|
-
return runtimes.find(rt => String(rt?.
|
|
173
|
-
}, [runtimeOverride,
|
|
192
|
+
return runtimes.find(rt => String(rt?.runtime_name || '') === preferredRuntime);
|
|
193
|
+
}, [runtimeOverride, runtimeName, runtimes]);
|
|
174
194
|
const needsRuntimeLookup = Boolean(!runtimeOverride?.baseUrl &&
|
|
175
|
-
String(
|
|
195
|
+
String(runtimeName || '').trim() &&
|
|
176
196
|
!selectedRuntime);
|
|
177
197
|
useEffect(() => {
|
|
178
198
|
if (!needsRuntimeLookup) {
|
|
@@ -195,6 +215,41 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
195
215
|
let manager = null;
|
|
196
216
|
let unregisterManager = null;
|
|
197
217
|
const connectRuntime = async () => {
|
|
218
|
+
// Services handed over by the host — an in-page JupyterLite sandbox —
|
|
219
|
+
// are used as they are. There is no URL to connect to in that case, and
|
|
220
|
+
// the old code read "no url" as "nothing to do" and returned silently,
|
|
221
|
+
// which is why the editor came up blank with an empty console.
|
|
222
|
+
if (providedServiceManager) {
|
|
223
|
+
try {
|
|
224
|
+
await providedServiceManager.ready;
|
|
225
|
+
const connection = kernelId
|
|
226
|
+
? providedServiceManager.kernels.connectTo({
|
|
227
|
+
model: { id: kernelId, name: 'python' },
|
|
228
|
+
})
|
|
229
|
+
: await providedServiceManager.kernels.startNew();
|
|
230
|
+
if (!cancelled) {
|
|
231
|
+
setRuntimeServiceManager(providedServiceManager);
|
|
232
|
+
setDocumentKernel(new Kernel({
|
|
233
|
+
kernelName: connection.model.name,
|
|
234
|
+
kernelSpecName: connection.model.name,
|
|
235
|
+
kernelModel: connection.model,
|
|
236
|
+
kernelManager: providedServiceManager.kernels,
|
|
237
|
+
kernelspecsManager: providedServiceManager.kernelspecs,
|
|
238
|
+
sessionManager: providedServiceManager.sessions,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch (reason) {
|
|
243
|
+
// Said out loud. A document that silently shows nothing is the
|
|
244
|
+
// hardest kind of failure to chase.
|
|
245
|
+
console.error('[agent-runtimes] The document could not reach the kernel of the sandbox it was given.', reason);
|
|
246
|
+
if (!cancelled) {
|
|
247
|
+
setRuntimeServiceManager(null);
|
|
248
|
+
setDocumentKernel(undefined);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
198
253
|
const baseUrl = String(selectedRuntime?.url || '').trim();
|
|
199
254
|
if (!baseUrl) {
|
|
200
255
|
if (!cancelled) {
|
|
@@ -216,7 +271,7 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
216
271
|
manager = new ServiceManager({ serverSettings });
|
|
217
272
|
// Central sandbox registry: runtime terminate/pause disposes this
|
|
218
273
|
// manager immediately so its pollers cannot hit the dead pod ingress.
|
|
219
|
-
unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.
|
|
274
|
+
unregisterManager = registerSandboxServiceManager(String(selectedRuntime?.runtime_name || ''), manager);
|
|
220
275
|
await manager.ready;
|
|
221
276
|
const kernelConnection = await manager.kernels.startNew();
|
|
222
277
|
if (!cancelled) {
|
|
@@ -243,11 +298,19 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
243
298
|
return () => {
|
|
244
299
|
cancelled = true;
|
|
245
300
|
unregisterManager?.();
|
|
301
|
+
// Only what this component built. A manager the host passed in is still
|
|
302
|
+
// theirs, and disposing it would take the sandbox down with the view.
|
|
246
303
|
if (manager) {
|
|
247
304
|
disposeServiceManager(manager);
|
|
248
305
|
}
|
|
249
306
|
};
|
|
250
|
-
}, [
|
|
307
|
+
}, [
|
|
308
|
+
providedServiceManager,
|
|
309
|
+
kernelId,
|
|
310
|
+
selectedRuntime?.runtime_name,
|
|
311
|
+
selectedRuntime?.url,
|
|
312
|
+
selectedRuntime?.token,
|
|
313
|
+
]);
|
|
251
314
|
// Surface the document's live kernel connection to the parent so the chat
|
|
252
315
|
// header's kernel indicator reflects the real connected kernel instead of
|
|
253
316
|
// the "disconnected"/"no-kernel" placeholder while the document is active.
|
|
@@ -258,23 +321,31 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
258
321
|
};
|
|
259
322
|
}, [documentKernel, onKernelChange]);
|
|
260
323
|
const activeServiceManager = runtimeServiceManager;
|
|
261
|
-
|
|
262
|
-
|
|
324
|
+
// Starting covers the supplied-services path too. Without it the spinner
|
|
325
|
+
// appeared and vanished in the same frame — the only sign that anything was
|
|
326
|
+
// happening — and then the editor sat empty while the kernel connected.
|
|
327
|
+
const isRuntimeStarting = Boolean((String(runtimeName || '').trim() ||
|
|
328
|
+
String(runtimeOverride?.baseUrl || '').trim() ||
|
|
329
|
+
providedServiceManager) &&
|
|
263
330
|
!activeServiceManager);
|
|
264
331
|
useProgressTask(`ephemeral-document-start-${documentId}`, isRuntimeStarting);
|
|
265
|
-
//
|
|
266
|
-
//
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
332
|
+
// The root extension, once per documentId: the shared Jupyter Lexical
|
|
333
|
+
// document with the `commentTheme` the jupyter-lexical stylesheet styles,
|
|
334
|
+
// focus on mount unless the host asked otherwise, and no content — the
|
|
335
|
+
// document starts empty and is either restored or filled by the agent
|
|
336
|
+
// (LoadContentPlugin) or by the room.
|
|
337
|
+
const extension = useMemo(() => defineExtension({
|
|
338
|
+
name: '@datalayer/agent-runtimes/EphemeralDocument',
|
|
339
|
+
namespace: `ephemeral-document-${documentId}`,
|
|
340
|
+
theme: commentTheme,
|
|
341
|
+
dependencies: [
|
|
342
|
+
JupyterLexicalExtension,
|
|
343
|
+
...(autoFocus ? [AutoFocusExtension] : []),
|
|
344
|
+
],
|
|
345
|
+
onError(error) {
|
|
346
|
+
console.error('[EphemeralDocument]', error);
|
|
347
|
+
},
|
|
348
|
+
}), [documentId, autoFocus]);
|
|
278
349
|
const handleChange = useCallback((editorState) => {
|
|
279
350
|
if (!onContentChange) {
|
|
280
351
|
return;
|
|
@@ -288,6 +359,14 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
288
359
|
}, [onContentChange]);
|
|
289
360
|
const [floatingAnchorElem, setFloatingAnchorElem] = useState(null);
|
|
290
361
|
const [, setIsLinkEditMode] = useState(false);
|
|
362
|
+
// A collaborative document is not here until its room has sent the first
|
|
363
|
+
// snapshot: an editor drawn before that is an empty page for a document
|
|
364
|
+
// that exists. Remembered per room, so another room waits again; without a
|
|
365
|
+
// room the content is local and known at mount.
|
|
366
|
+
const roomId = isCollaborative ? collaboration?.roomId : undefined;
|
|
367
|
+
const [initializedRoom, setInitializedRoom] = useState();
|
|
368
|
+
const documentReady = roomId === undefined || initializedRoom === roomId;
|
|
369
|
+
const onRoomInitialization = useCallback((isInitialized) => setInitializedRoom(isInitialized ? roomId : undefined), [roomId]);
|
|
291
370
|
const onAnchorRef = (elem) => {
|
|
292
371
|
if (elem !== null) {
|
|
293
372
|
setFloatingAnchorElem(elem);
|
|
@@ -313,7 +392,7 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
313
392
|
position: 'relative',
|
|
314
393
|
overflow: 'hidden',
|
|
315
394
|
bg: 'canvas.default',
|
|
316
|
-
}, children: activeServiceManager ? (_jsx(
|
|
395
|
+
}, children: activeServiceManager ? (_jsx(ThemeRoot, { inherit: inheritTheme, colorMode: effectiveColorMode, themeConfig: themeConfig, children: _jsx(JupyterReactTheme, { colormode: resolvedMode, backgroundColor: themeBackground, children: _jsx(Box, { sx: {
|
|
317
396
|
position: 'absolute',
|
|
318
397
|
inset: 0,
|
|
319
398
|
display: 'flex',
|
|
@@ -322,6 +401,26 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
322
401
|
overflow: 'hidden',
|
|
323
402
|
overscrollBehaviorY: 'contain',
|
|
324
403
|
padding: 2,
|
|
404
|
+
backgroundColor: themeBackground,
|
|
405
|
+
/*
|
|
406
|
+
* The variable Lexical's own stylesheets paint from.
|
|
407
|
+
*
|
|
408
|
+
* `Editor.css`, `Rich.css` and `TableNode.css` all write
|
|
409
|
+
* `background: var(--bgColor-default, #fff)` — they are theme-
|
|
410
|
+
* aware by design, and go white only where that variable is
|
|
411
|
+
* undefined. In the lexical package's own examples it is
|
|
412
|
+
* defined, because `LexicalPrimerThemeProvider` wraps them in a
|
|
413
|
+
* `DatalayerThemeProvider`; here the host owns the theme and
|
|
414
|
+
* this subtree never inherited it.
|
|
415
|
+
*
|
|
416
|
+
* Defining it here fixes every one of those rules at once,
|
|
417
|
+
* including the ones nobody has hit yet. Chasing them class by
|
|
418
|
+
* class is what the block below used to do, and it lost: an
|
|
419
|
+
* emotion rule and `.editor-shell .editor-container` have the
|
|
420
|
+
* same specificity, so which one wins comes down to stylesheet
|
|
421
|
+
* order.
|
|
422
|
+
*/
|
|
423
|
+
'--bgColor-default': themeBackground,
|
|
325
424
|
'& .editor-shell': {
|
|
326
425
|
backgroundColor: themeBackground,
|
|
327
426
|
borderRadius: 2,
|
|
@@ -384,13 +483,16 @@ export function EphemeralDocument({ documentId, runtimePodName, runtimeOverride,
|
|
|
384
483
|
'& [role="toolbar"][aria-label="Editor toolbar"]': {
|
|
385
484
|
backgroundColor: themeBackground,
|
|
386
485
|
},
|
|
387
|
-
}, children: _jsx(LexicalConfigProvider, { lexicalId: documentId, serviceManager: activeServiceManager, children: _jsx(
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
486
|
+
}, children: _jsx(LexicalConfigProvider, { lexicalId: documentId, serviceManager: activeServiceManager, children: _jsx(LexicalExtensionComposer, { extension: extension, contentEditable: null, children: _jsx(CommentsProvider, { children: _jsx(ToolbarContext, { children: _jsxs("div", { className: "editor-shell", children: [showToolbar ? (_jsx(DocumentToolbar, { setIsLinkEditMode: setIsLinkEditMode, extraItems: toolbarExtraItems })) : null, _jsx("div", { className: "editor-container", children: _jsxs("div", { className: "editor-inner", children: [isCollaborative && collaboration ? (_jsx(LoroCollaborationPlugin, { id: collaboration.roomId, providerFactory: createWebsocketProvider, websocketUrl: collaboration.websocketUrl, shouldBootstrap: true, showCollaborators: true, username: collaborationName, cursorColor: collaborationColor, awarenessData: collaborationAwarenessData, onInitialization: onRoomInitialization })) : null, _jsx(LexicalStatePlugin, {}), documentReady ? (_jsx("div", { className: "editor-scroller", children: _jsx("div", { className: "editor", ref: onAnchorRef, children: _jsx(ContentEditable, { className: "editor-input", "aria-label": "Ephemeral document editor" }) }) })) : (_jsx(DocumentSkeleton, { maxWidth: "100%" })), !isCollaborative && (_jsx(OnChangePlugin, { onChange: handleChange })), _jsx(HistoryTogglePlugin, { disabled: isCollaborative }), !isCollaborative && (_jsx(LoadContentPlugin, { content: initialContent })), _jsx(TableCellResizerPlugin, {}), _jsx(TableActionMenuPlugin, {}), _jsx(TableHoverActionsV2Plugin, {}), _jsx(ComponentPickerMenuPlugin, { kernel: documentKernel }), _jsx(JupyterInputOutputPlugin, { kernel: documentKernel }), floatingAnchorElem && (_jsxs(_Fragment, { children: [_jsx(DraggableBlockPlugin, { anchorElem: floatingAnchorElem }), _jsx(FloatingTextFormatToolbarPlugin, { anchorElem: floatingAnchorElem, setIsLinkEditMode: setIsLinkEditMode }), _jsx(CodeActionMenuPlugin, { anchorElem: floatingAnchorElem })] }))] }) })] }) }) }) }) }) }) }) })) : isRuntimeStarting ? (
|
|
487
|
+
// The document's shape while its runtime starts, where the document
|
|
488
|
+
// will be — not a wheel, which says nothing about what is coming.
|
|
489
|
+
_jsx(ThemeRoot, { inherit: inheritTheme, colorMode: effectiveColorMode, themeConfig: themeConfig, children: _jsx(Box, { sx: {
|
|
490
|
+
position: 'absolute',
|
|
491
|
+
inset: 0,
|
|
492
|
+
display: 'flex',
|
|
493
|
+
flexDirection: 'column',
|
|
494
|
+
padding: 2,
|
|
495
|
+
backgroundColor: themeBackground,
|
|
496
|
+
}, children: _jsx(DocumentSkeleton, { label: "Starting the document", maxWidth: "100%" }) }) })) : null }));
|
|
395
497
|
}
|
|
396
498
|
export default EphemeralDocument;
|
|
@@ -38,5 +38,5 @@ export interface ChatHeaderProps {
|
|
|
38
38
|
* />
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
export declare function ChatHeader({ title, description, connectionState, runtimeBusy, onReconnect, onDisconnect, onLogout, onCollapsePanel, }: ChatHeaderProps): import("react
|
|
41
|
+
export declare function ChatHeader({ title, description, connectionState, runtimeBusy, onReconnect, onDisconnect, onLogout, onCollapsePanel, }: ChatHeaderProps): import("react").JSX.Element;
|
|
42
42
|
export default ChatHeader;
|