@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
package/lib/chat/ChatFloating.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/*
|
|
3
3
|
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
4
|
* Distributed under the terms of the Modified BSD License.
|
|
@@ -19,9 +19,12 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
19
19
|
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from 'react';
|
|
20
20
|
import { IconButton, Text, Tooltip } from '@primer/react';
|
|
21
21
|
import { Box } from '@datalayer/primer-addons';
|
|
22
|
-
import { XIcon, CommentDiscussionIcon } from '@primer/octicons-react';
|
|
22
|
+
import { XIcon, CommentDiscussionIcon, GrabberIcon, } from '@primer/octicons-react';
|
|
23
23
|
import { AiAgentIcon } from '@datalayer/icons-react';
|
|
24
|
+
import { createPortal } from 'react-dom';
|
|
24
25
|
import { ChatBase } from './base/ChatBase';
|
|
26
|
+
import { useViewportDrag } from './useViewportDrag';
|
|
27
|
+
import { disabledChatViewModes, resolveMountPoint } from './viewModes';
|
|
25
28
|
import { useChatOpen, useChatMessages, useChatStore, } from '../stores/chatStore';
|
|
26
29
|
import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
|
|
27
30
|
/**
|
|
@@ -43,7 +46,7 @@ function useIsMobile(breakpoint = 640) {
|
|
|
43
46
|
* ChatFloating component
|
|
44
47
|
* A floating chat window built on ChatBase
|
|
45
48
|
*/
|
|
46
|
-
export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode = true, title = 'Chat', description = 'Start a conversation with the AI agent.', position = 'bottom-right', defaultOpen = false, width = 400, height = 550, showHeader = true, showButton = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = '/', showPoweredBy = true, poweredByProps, clickOutsideToClose = false, escapeToClose = true, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip = 'Chat with AI', brandColor, offset = 20, animationDuration = 200, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick = true, hideMessagesAfterToolUI = false, defaultViewMode = 'floating', onViewModeChange, showPanelBackdrop = false, availableModels, showModelSelector = false, showToolsMenu = false, showSkillsMenu = false, showTokenUsage = true, runtimeId, historyEndpoint, authToken, historyAuthToken, pendingPrompt, showInformation = false, onInformationClick, onToolCallStart, onToolCallComplete, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, launching = false, launchingMessage, }) {
|
|
49
|
+
export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode = true, title = 'Chat', description = 'Start a conversation with the AI agent.', position = 'bottom-right', defaultOpen = false, width = 400, height = 550, showHeader = true, showButton = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = '/', showPoweredBy = true, promptVariant, mentionableAgents, poweredByProps, clickOutsideToClose = false, escapeToClose = true, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip = 'Chat with AI', brandColor, offset = 20, animationDuration = 200, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick = true, hideMessagesAfterToolUI = false, defaultViewMode = 'floating', onViewModeChange, sidebarMountPoint = null, showPanelBackdrop = false, availableModels, showModelSelector = false, showToolsMenu = false, showSkillsMenu = false, showTokenUsage = true, showContextRing = false, themeVariant, colorMode, runtimeId, historyEndpoint, authToken, historyAuthToken, pendingPrompt, showInformation = false, onInformationClick, onToolCallStart, onToolCallComplete, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, launching = false, launchingMessage, }) {
|
|
47
50
|
// Store-based state
|
|
48
51
|
const storeIsOpen = useChatOpen();
|
|
49
52
|
const storeMessages = useChatMessages();
|
|
@@ -65,8 +68,39 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
65
68
|
const [panelHostRect, setPanelHostRect] = useState(null);
|
|
66
69
|
// Map internal viewMode to ChatViewMode for the header toggle
|
|
67
70
|
const chatViewMode = viewMode === 'panel' ? 'sidebar' : viewMode;
|
|
71
|
+
/*
|
|
72
|
+
* The host's mount point for a sidebar, resolved each time the chat opens
|
|
73
|
+
* or changes mode: a container may mount after the chat does.
|
|
74
|
+
*/
|
|
75
|
+
const [sidebarMount, setSidebarMount] = useState(null);
|
|
76
|
+
useLayoutEffect(() => {
|
|
77
|
+
setSidebarMount(resolveMountPoint(sidebarMountPoint));
|
|
78
|
+
}, [sidebarMountPoint, isOpen, viewMode]);
|
|
79
|
+
const disabledViewModes = disabledChatViewModes({
|
|
80
|
+
sidebarMountPoint: sidebarMount,
|
|
81
|
+
viewMode: chatViewMode,
|
|
82
|
+
});
|
|
83
|
+
const sidebarDisabled = disabledViewModes.includes('sidebar');
|
|
84
|
+
/* Docked into the host's element, rather than measured against it. */
|
|
85
|
+
const dockedInMount = viewMode === 'panel' && !isMobile && !!sidebarMount;
|
|
86
|
+
/*
|
|
87
|
+
* "Floating draggable": the window moves by its handle. Its place is
|
|
88
|
+
* forgotten on leaving the mode, so it comes back where the small popup
|
|
89
|
+
* starts rather than wherever it was last dropped.
|
|
90
|
+
*/
|
|
91
|
+
const drag = useViewportDrag(popupRef);
|
|
92
|
+
const resetDrag = drag.reset;
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
if (viewMode !== 'floating-draggable') {
|
|
95
|
+
resetDrag();
|
|
96
|
+
}
|
|
97
|
+
}, [viewMode, resetDrag]);
|
|
68
98
|
// Handle view mode changes from the header segmented toggle
|
|
69
99
|
const handleChatViewModeChange = useCallback((mode) => {
|
|
100
|
+
if (mode === 'sidebar' && sidebarDisabled) {
|
|
101
|
+
// Greyed out in the header: nothing to dock into.
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
70
104
|
if (mode === 'sidebar') {
|
|
71
105
|
// When a parent callback is provided, let it switch the host layout
|
|
72
106
|
// (e.g. swap to ChatSidebar). Otherwise, fall back to the built-in
|
|
@@ -80,12 +114,12 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
80
114
|
setFocusTrigger(prev => prev + 1);
|
|
81
115
|
}
|
|
82
116
|
else {
|
|
83
|
-
//
|
|
117
|
+
// The floating modes stay within ChatFloating
|
|
84
118
|
setViewMode(mode);
|
|
85
119
|
setFocusTrigger(prev => prev + 1);
|
|
86
120
|
onViewModeChange?.(mode);
|
|
87
121
|
}
|
|
88
|
-
}, [onViewModeChange]);
|
|
122
|
+
}, [onViewModeChange, sidebarDisabled]);
|
|
89
123
|
// Detect whether the chat is mounted inside a parent that is intentionally
|
|
90
124
|
// configured for docked side panels (Notebook example lays the chat out as a
|
|
91
125
|
// flex sibling). Those hosts dock the panel in-flow. Plain content pages
|
|
@@ -95,6 +129,11 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
95
129
|
setPanelInFlow(false);
|
|
96
130
|
return;
|
|
97
131
|
}
|
|
132
|
+
if (sidebarMount) {
|
|
133
|
+
// Rendered into the host's element: in its flow by definition.
|
|
134
|
+
setPanelInFlow(true);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
98
137
|
const parent = popupRef.current?.parentElement;
|
|
99
138
|
if (!parent) {
|
|
100
139
|
setPanelInFlow(false);
|
|
@@ -105,7 +144,7 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
105
144
|
(style.flexDirection === 'row' || style.flexDirection === 'row-reverse');
|
|
106
145
|
const isGrid = style.display.includes('grid');
|
|
107
146
|
setPanelInFlow(isFlexRow || isGrid);
|
|
108
|
-
}, [viewMode, isMobile, isOpen]);
|
|
147
|
+
}, [viewMode, isMobile, isOpen, sidebarMount]);
|
|
109
148
|
// For fixed (non-flow) panel mode, measure the host region so the docked
|
|
110
149
|
// panel aligns to the visible content area (below any app header) at full
|
|
111
150
|
// height, and reserve horizontal space so the page content reflows to the
|
|
@@ -367,6 +406,150 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
367
406
|
: {};
|
|
368
407
|
// Close button for header
|
|
369
408
|
const closeButton = (_jsx(Tooltip, { text: `Close${escapeToClose ? ' (Esc)' : ''}`, direction: "s", children: _jsx(IconButton, { icon: XIcon, "aria-label": "Close", onClick: handleToggle, variant: "invisible", size: "small" }) }));
|
|
409
|
+
/* The window itself; where it goes is decided below. */
|
|
410
|
+
const chatWindow = (_jsxs(Box, { ref: popupRef, className: className, sx: {
|
|
411
|
+
position: viewMode === 'panel' && !isMobile && (panelInFlow || dockedInMount)
|
|
412
|
+
? 'relative'
|
|
413
|
+
: 'fixed',
|
|
414
|
+
// floating (normal) — full-height column pinned to the right edge
|
|
415
|
+
...(viewMode === 'floating' && !isMobile
|
|
416
|
+
? {
|
|
417
|
+
top: 0,
|
|
418
|
+
right: 0,
|
|
419
|
+
bottom: 0,
|
|
420
|
+
left: 'auto',
|
|
421
|
+
}
|
|
422
|
+
: {}),
|
|
423
|
+
// floating-small — standard popup positioned via getPositionStyles()
|
|
424
|
+
...(viewMode === 'floating-small' && !isMobile
|
|
425
|
+
? getPositionStyles()
|
|
426
|
+
: {}),
|
|
427
|
+
// floating-draggable — where it was last put down, or where the
|
|
428
|
+
// small popup starts until somebody moves it
|
|
429
|
+
...(viewMode === 'floating-draggable' && !isMobile
|
|
430
|
+
? drag.position
|
|
431
|
+
? {
|
|
432
|
+
left: drag.position.left,
|
|
433
|
+
top: drag.position.top,
|
|
434
|
+
right: 'auto',
|
|
435
|
+
bottom: 'auto',
|
|
436
|
+
}
|
|
437
|
+
: getPositionStyles()
|
|
438
|
+
: {}),
|
|
439
|
+
...(viewMode === 'panel' && !isMobile
|
|
440
|
+
? {
|
|
441
|
+
...(panelInFlow || dockedInMount
|
|
442
|
+
? {
|
|
443
|
+
top: 'auto',
|
|
444
|
+
right: 'auto',
|
|
445
|
+
bottom: 'auto',
|
|
446
|
+
left: 'auto',
|
|
447
|
+
marginLeft: 'auto',
|
|
448
|
+
alignSelf: 'stretch',
|
|
449
|
+
}
|
|
450
|
+
: {
|
|
451
|
+
// Fixed panel aligned to the measured host region so it
|
|
452
|
+
// docks below any app header at full content height,
|
|
453
|
+
// instead of overlaying from the very top of the viewport.
|
|
454
|
+
top: panelHostRect ? `${panelHostRect.top}px` : 0,
|
|
455
|
+
right: panelHostRect ? `${panelHostRect.right}px` : 0,
|
|
456
|
+
bottom: panelHostRect ? 'auto' : 0,
|
|
457
|
+
left: 'auto',
|
|
458
|
+
}),
|
|
459
|
+
}
|
|
460
|
+
: {}),
|
|
461
|
+
width: viewMode === 'panel' && !isMobile
|
|
462
|
+
? isOpen || isAnimating
|
|
463
|
+
? `${panelWidthPx}px`
|
|
464
|
+
: '0px'
|
|
465
|
+
: viewMode === 'floating' && !isMobile
|
|
466
|
+
? typeof popupWidth === 'number'
|
|
467
|
+
? `${popupWidth}px`
|
|
468
|
+
: popupWidth
|
|
469
|
+
: (viewMode === 'floating-small' ||
|
|
470
|
+
viewMode === 'floating-draggable') &&
|
|
471
|
+
!isMobile
|
|
472
|
+
? typeof popupWidth === 'number'
|
|
473
|
+
? `${popupWidth}px`
|
|
474
|
+
: popupWidth
|
|
475
|
+
: isMobile
|
|
476
|
+
? '100%'
|
|
477
|
+
: typeof popupWidth === 'number'
|
|
478
|
+
? `${popupWidth}px`
|
|
479
|
+
: popupWidth,
|
|
480
|
+
height: viewMode === 'panel' && !isMobile
|
|
481
|
+
? panelInFlow || dockedInMount
|
|
482
|
+
? '100%'
|
|
483
|
+
: panelHostRect
|
|
484
|
+
? `${panelHostRect.height}px`
|
|
485
|
+
: '100%'
|
|
486
|
+
: viewMode === 'floating' && !isMobile
|
|
487
|
+
? '100%'
|
|
488
|
+
: (viewMode === 'floating-small' ||
|
|
489
|
+
viewMode === 'floating-draggable') &&
|
|
490
|
+
!isMobile
|
|
491
|
+
? typeof popupHeight === 'number'
|
|
492
|
+
? `${popupHeight}px`
|
|
493
|
+
: popupHeight
|
|
494
|
+
: isMobile
|
|
495
|
+
? '100%'
|
|
496
|
+
: typeof popupHeight === 'number'
|
|
497
|
+
? `${popupHeight}px`
|
|
498
|
+
: popupHeight,
|
|
499
|
+
display: 'flex',
|
|
500
|
+
flexDirection: 'column',
|
|
501
|
+
bg: 'canvas.default',
|
|
502
|
+
border: '1px solid',
|
|
503
|
+
borderColor: 'border.default',
|
|
504
|
+
borderRadius: viewMode === 'panel' || isMobile ? 0 : '12px',
|
|
505
|
+
boxShadow: viewMode === 'panel' ? 'shadow.none' : 'shadow.extra-large',
|
|
506
|
+
overflow: 'hidden',
|
|
507
|
+
transform: viewMode === 'panel'
|
|
508
|
+
? isOpen
|
|
509
|
+
? 'translateX(0)'
|
|
510
|
+
: 'translateX(100%)'
|
|
511
|
+
: getAnimationTransform(isOpen),
|
|
512
|
+
opacity: viewMode === 'panel' ? 1 : isOpen ? 1 : 0,
|
|
513
|
+
transition: `transform ${animationDuration}ms ease, opacity ${animationDuration}ms ease, width ${animationDuration}ms ease`,
|
|
514
|
+
zIndex: viewMode === 'panel' && !isMobile
|
|
515
|
+
? panelInFlow || dockedInMount
|
|
516
|
+
? 'auto'
|
|
517
|
+
: 1001
|
|
518
|
+
: 1001,
|
|
519
|
+
// Hide from accessibility and pointer events when closed
|
|
520
|
+
visibility: isOpen || isAnimating ? 'visible' : 'hidden',
|
|
521
|
+
pointerEvents: isOpen ? 'auto' : 'none',
|
|
522
|
+
...mobileStyles,
|
|
523
|
+
}, children: [viewMode === 'floating-draggable' && !isMobile && (_jsx(Box, { onPointerDown: drag.onHandlePointerDown, "aria-label": "Move the chat", sx: {
|
|
524
|
+
display: 'flex',
|
|
525
|
+
alignItems: 'center',
|
|
526
|
+
justifyContent: 'center',
|
|
527
|
+
flexShrink: 0,
|
|
528
|
+
height: 18,
|
|
529
|
+
cursor: 'grab',
|
|
530
|
+
color: 'fg.subtle',
|
|
531
|
+
bg: 'canvas.subtle',
|
|
532
|
+
borderBottom: '1px solid',
|
|
533
|
+
borderColor: 'border.muted',
|
|
534
|
+
touchAction: 'none',
|
|
535
|
+
'&:active': { cursor: 'grabbing' },
|
|
536
|
+
}, children: _jsx(GrabberIcon, { size: 16 }) })), _jsx(ChatBase, { title: title, showHeader: showHeader, useStore: useStoreMode, protocol: protocol, themeVariant: themeVariant, colorMode: colorMode, autoFocus: isOpen, focusTrigger: focusTrigger, launching: launching, launchingMessage: launchingMessage, brandIcon: brandIcon || _jsx(AiAgentIcon, { colored: true, size: 20 }), headerButtons: {
|
|
537
|
+
showNewChat: showNewChatButton,
|
|
538
|
+
showClear: showClearButton && messages.length > 0,
|
|
539
|
+
showSettings: showSettingsButton && !!onSettingsClick,
|
|
540
|
+
onNewChat: handleNewChat,
|
|
541
|
+
onClear: handleClear,
|
|
542
|
+
onSettings: onSettingsClick,
|
|
543
|
+
}, headerActions: _jsx(_Fragment, { children: closeButton }), chatViewMode: chatViewMode, onChatViewModeChange: handleChatViewModeChange, disabledViewModes: disabledViewModes, showPoweredBy: showPoweredBy,
|
|
544
|
+
// Forwarded, so a host can ask for the Lexical editor — and with it
|
|
545
|
+
// the `@` menu — without giving up the floating chat to get one.
|
|
546
|
+
promptVariant: promptVariant, mentionableAgents: mentionableAgents, poweredByProps: {
|
|
547
|
+
brandName: 'Datalayer',
|
|
548
|
+
brandUrl: 'https://datalayer.ai',
|
|
549
|
+
...poweredByProps,
|
|
550
|
+
}, renderToolResult: renderToolResult, description: description, onStateUpdate: onStateUpdate, onNewChat: onNewChat, suggestions: suggestions, submitOnSuggestionClick: submitOnSuggestionClick, hideMessagesAfterToolUI: hideMessagesAfterToolUI, avatarConfig: {
|
|
551
|
+
showAvatars: true,
|
|
552
|
+
}, placeholder: "Type a message...", backgroundColor: "canvas.subtle", frontendTools: frontendTools, showModelSelector: showModelSelector, availableModels: availableModels, showToolsMenu: showToolsMenu, showSkillsMenu: showSkillsMenu, showTokenUsage: showTokenUsage, showContextRing: showContextRing, runtimeId: runtimeId, historyEndpoint: historyEndpoint, historyAuthToken: historyAuthToken, pendingPrompt: pendingPrompt, showInformation: showInformation, onInformationClick: onInformationClick, onToolCallStart: onToolCallStart, onToolCallComplete: onToolCallComplete, showToolApprovalBanner: showToolApprovalBanner, pendingApprovals: pendingApprovals, onApproveApproval: onApproveApproval, onRejectApproval: onRejectApproval, ...panelProps, children: children })] }));
|
|
370
553
|
return (_jsxs(_Fragment, { children: [showButton && !isOpen && (_jsx(Box, { sx: {
|
|
371
554
|
...getPositionStyles(),
|
|
372
555
|
}, children: _jsxs(Box, { sx: {
|
|
@@ -442,116 +625,8 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
442
625
|
bg: 'neutral.muted',
|
|
443
626
|
opacity: 0.3,
|
|
444
627
|
zIndex: 1000,
|
|
445
|
-
}, onClick: handleToggle })),
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
: 'fixed',
|
|
449
|
-
// floating (normal) — full-height column pinned to the right edge
|
|
450
|
-
...(viewMode === 'floating' && !isMobile
|
|
451
|
-
? {
|
|
452
|
-
top: 0,
|
|
453
|
-
right: 0,
|
|
454
|
-
bottom: 0,
|
|
455
|
-
left: 'auto',
|
|
456
|
-
}
|
|
457
|
-
: {}),
|
|
458
|
-
// floating-small — standard popup positioned via getPositionStyles()
|
|
459
|
-
...(viewMode === 'floating-small' && !isMobile
|
|
460
|
-
? getPositionStyles()
|
|
461
|
-
: {}),
|
|
462
|
-
...(viewMode === 'panel' && !isMobile
|
|
463
|
-
? {
|
|
464
|
-
...(panelInFlow
|
|
465
|
-
? {
|
|
466
|
-
top: 'auto',
|
|
467
|
-
right: 'auto',
|
|
468
|
-
bottom: 'auto',
|
|
469
|
-
left: 'auto',
|
|
470
|
-
marginLeft: 'auto',
|
|
471
|
-
alignSelf: 'stretch',
|
|
472
|
-
}
|
|
473
|
-
: {
|
|
474
|
-
// Fixed panel aligned to the measured host region so it
|
|
475
|
-
// docks below any app header at full content height,
|
|
476
|
-
// instead of overlaying from the very top of the viewport.
|
|
477
|
-
top: panelHostRect ? `${panelHostRect.top}px` : 0,
|
|
478
|
-
right: panelHostRect ? `${panelHostRect.right}px` : 0,
|
|
479
|
-
bottom: panelHostRect ? 'auto' : 0,
|
|
480
|
-
left: 'auto',
|
|
481
|
-
}),
|
|
482
|
-
}
|
|
483
|
-
: {}),
|
|
484
|
-
width: viewMode === 'panel' && !isMobile
|
|
485
|
-
? isOpen || isAnimating
|
|
486
|
-
? `${panelWidthPx}px`
|
|
487
|
-
: '0px'
|
|
488
|
-
: viewMode === 'floating' && !isMobile
|
|
489
|
-
? typeof popupWidth === 'number'
|
|
490
|
-
? `${popupWidth}px`
|
|
491
|
-
: popupWidth
|
|
492
|
-
: viewMode === 'floating-small' && !isMobile
|
|
493
|
-
? typeof popupWidth === 'number'
|
|
494
|
-
? `${popupWidth}px`
|
|
495
|
-
: popupWidth
|
|
496
|
-
: isMobile
|
|
497
|
-
? '100%'
|
|
498
|
-
: typeof popupWidth === 'number'
|
|
499
|
-
? `${popupWidth}px`
|
|
500
|
-
: popupWidth,
|
|
501
|
-
height: viewMode === 'panel' && !isMobile
|
|
502
|
-
? panelInFlow
|
|
503
|
-
? '100%'
|
|
504
|
-
: panelHostRect
|
|
505
|
-
? `${panelHostRect.height}px`
|
|
506
|
-
: '100%'
|
|
507
|
-
: viewMode === 'floating' && !isMobile
|
|
508
|
-
? '100%'
|
|
509
|
-
: viewMode === 'floating-small' && !isMobile
|
|
510
|
-
? typeof popupHeight === 'number'
|
|
511
|
-
? `${popupHeight}px`
|
|
512
|
-
: popupHeight
|
|
513
|
-
: isMobile
|
|
514
|
-
? '100%'
|
|
515
|
-
: typeof popupHeight === 'number'
|
|
516
|
-
? `${popupHeight}px`
|
|
517
|
-
: popupHeight,
|
|
518
|
-
display: 'flex',
|
|
519
|
-
flexDirection: 'column',
|
|
520
|
-
bg: 'canvas.default',
|
|
521
|
-
border: '1px solid',
|
|
522
|
-
borderColor: 'border.default',
|
|
523
|
-
borderRadius: viewMode === 'panel' || isMobile ? 0 : '12px',
|
|
524
|
-
boxShadow: viewMode === 'panel' ? 'shadow.none' : 'shadow.extra-large',
|
|
525
|
-
overflow: 'hidden',
|
|
526
|
-
transform: viewMode === 'panel'
|
|
527
|
-
? isOpen
|
|
528
|
-
? 'translateX(0)'
|
|
529
|
-
: 'translateX(100%)'
|
|
530
|
-
: getAnimationTransform(isOpen),
|
|
531
|
-
opacity: viewMode === 'panel' ? 1 : isOpen ? 1 : 0,
|
|
532
|
-
transition: `transform ${animationDuration}ms ease, opacity ${animationDuration}ms ease, width ${animationDuration}ms ease`,
|
|
533
|
-
zIndex: viewMode === 'panel' && !isMobile
|
|
534
|
-
? panelInFlow
|
|
535
|
-
? 'auto'
|
|
536
|
-
: 1001
|
|
537
|
-
: 1001,
|
|
538
|
-
// Hide from accessibility and pointer events when closed
|
|
539
|
-
visibility: isOpen || isAnimating ? 'visible' : 'hidden',
|
|
540
|
-
pointerEvents: isOpen ? 'auto' : 'none',
|
|
541
|
-
...mobileStyles,
|
|
542
|
-
}, children: _jsx(ChatBase, { title: title, showHeader: showHeader, useStore: useStoreMode, protocol: protocol, autoFocus: isOpen, focusTrigger: focusTrigger, launching: launching, launchingMessage: launchingMessage, brandIcon: brandIcon || _jsx(AiAgentIcon, { colored: true, size: 20 }), headerButtons: {
|
|
543
|
-
showNewChat: showNewChatButton,
|
|
544
|
-
showClear: showClearButton && messages.length > 0,
|
|
545
|
-
showSettings: showSettingsButton && !!onSettingsClick,
|
|
546
|
-
onNewChat: handleNewChat,
|
|
547
|
-
onClear: handleClear,
|
|
548
|
-
onSettings: onSettingsClick,
|
|
549
|
-
}, headerActions: _jsx(_Fragment, { children: closeButton }), chatViewMode: chatViewMode, onChatViewModeChange: handleChatViewModeChange, showPoweredBy: showPoweredBy, poweredByProps: {
|
|
550
|
-
brandName: 'Datalayer',
|
|
551
|
-
brandUrl: 'https://datalayer.ai',
|
|
552
|
-
...poweredByProps,
|
|
553
|
-
}, renderToolResult: renderToolResult, description: description, onStateUpdate: onStateUpdate, onNewChat: onNewChat, suggestions: suggestions, submitOnSuggestionClick: submitOnSuggestionClick, hideMessagesAfterToolUI: hideMessagesAfterToolUI, avatarConfig: {
|
|
554
|
-
showAvatars: true,
|
|
555
|
-
}, placeholder: "Type a message...", backgroundColor: "canvas.subtle", frontendTools: frontendTools, showModelSelector: showModelSelector, availableModels: availableModels, showToolsMenu: showToolsMenu, showSkillsMenu: showSkillsMenu, showTokenUsage: showTokenUsage, runtimeId: runtimeId, historyEndpoint: historyEndpoint, historyAuthToken: historyAuthToken, pendingPrompt: pendingPrompt, showInformation: showInformation, onInformationClick: onInformationClick, onToolCallStart: onToolCallStart, onToolCallComplete: onToolCallComplete, showToolApprovalBanner: showToolApprovalBanner, pendingApprovals: pendingApprovals, onApproveApproval: onApproveApproval, onRejectApproval: onRejectApproval, ...panelProps, children: children }) })] }));
|
|
628
|
+
}, onClick: handleToggle })), dockedInMount && sidebarMount
|
|
629
|
+
? createPortal(chatWindow, sidebarMount)
|
|
630
|
+
: chatWindow] }));
|
|
556
631
|
}
|
|
557
632
|
export default ChatFloating;
|
package/lib/chat/ChatInline.d.ts
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatInline - Inline chat component for text selection AI assistance.
|
|
3
|
+
*
|
|
4
|
+
* This component provides an inline AI chat interface that appears when
|
|
5
|
+
* text is selected in a Lexical editor. It supports:
|
|
6
|
+
* - Custom prompts via text input
|
|
7
|
+
* - Pre-defined AI actions (improve, summarize, translate, etc.)
|
|
8
|
+
* - Streaming responses from an agent via AG-UI protocol
|
|
9
|
+
* - Actions to apply AI results (replace, insert inline, insert below)
|
|
10
|
+
*
|
|
11
|
+
* Uses Primer UI components instead of Tailwind CSS.
|
|
12
|
+
*
|
|
13
|
+
* @module chat/ChatInline
|
|
14
|
+
*/
|
|
15
|
+
import type { JSX } from 'react';
|
|
1
16
|
import type { Protocol } from '../types/protocol';
|
|
2
17
|
/**
|
|
3
18
|
* Protocol configuration for ChatInline
|
package/lib/chat/ChatInline.js
CHANGED
|
@@ -1,22 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
-
* Distributed under the terms of the Modified BSD License.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* ChatInline - Inline chat component for text selection AI assistance.
|
|
8
|
-
*
|
|
9
|
-
* This component provides an inline AI chat interface that appears when
|
|
10
|
-
* text is selected in a Lexical editor. It supports:
|
|
11
|
-
* - Custom prompts via text input
|
|
12
|
-
* - Pre-defined AI actions (improve, summarize, translate, etc.)
|
|
13
|
-
* - Streaming responses from an agent via AG-UI protocol
|
|
14
|
-
* - Actions to apply AI results (replace, insert inline, insert below)
|
|
15
|
-
*
|
|
16
|
-
* Uses Primer UI components instead of Tailwind CSS.
|
|
17
|
-
*
|
|
18
|
-
* @module chat/ChatInline
|
|
19
|
-
*/
|
|
20
2
|
import { useState, useCallback, useMemo, useRef, useEffect, Fragment, } from 'react';
|
|
21
3
|
import { Text, TextInput, IconButton, ActionList, Spinner, } from '@primer/react';
|
|
22
4
|
import { Box } from '@datalayer/primer-addons';
|
|
@@ -66,5 +66,5 @@ export interface ChatPopupStandaloneProps extends Omit<ChatCommonProps, 'onSendM
|
|
|
66
66
|
* ChatPopupStandalone component
|
|
67
67
|
* A floating popup chat that uses ChatBase with custom onSendMessage handler
|
|
68
68
|
*/
|
|
69
|
-
export declare function ChatPopupStandalone({ onSendMessage, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, placeholder, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, enableStreaming, emptyStateMessage, renderToolResult, onToolCallStart, onToolCallComplete, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }: ChatPopupStandaloneProps):
|
|
69
|
+
export declare function ChatPopupStandalone({ onSendMessage, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, placeholder, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, enableStreaming, emptyStateMessage, renderToolResult, onToolCallStart, onToolCallComplete, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }: ChatPopupStandaloneProps): React.JSX.Element;
|
|
70
70
|
export default ChatPopupStandalone;
|
|
@@ -15,7 +15,19 @@ export interface ChatSidebarProps extends ChatCommonProps {
|
|
|
15
15
|
enableKeyboardShortcuts?: boolean;
|
|
16
16
|
/** Keyboard shortcut to toggle (default: 'k') */
|
|
17
17
|
toggleShortcut?: string;
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Close the sidebar when a click lands outside it. Off by default.
|
|
20
|
+
*
|
|
21
|
+
* On a desktop the sidebar is *docked*: it takes layout width beside the
|
|
22
|
+
* content, and everything the user is working on — a notebook cell, a
|
|
23
|
+
* paragraph of the document — is by definition outside it. Closing on that
|
|
24
|
+
* click made the panel vanish the moment anyone touched what they were
|
|
25
|
+
* chatting about. Modal semantics for a panel that is not modal.
|
|
26
|
+
*
|
|
27
|
+
* The mobile overlay is genuinely modal, and it already closes on its own
|
|
28
|
+
* backdrop, so nothing needs this to be on there either. Left as a prop for
|
|
29
|
+
* a consumer that really does want dismiss-on-outside-click.
|
|
30
|
+
*/
|
|
19
31
|
clickOutsideToClose?: boolean;
|
|
20
32
|
/** Enable escape key to close */
|
|
21
33
|
escapeToClose?: boolean;
|
|
@@ -23,5 +35,5 @@ export interface ChatSidebarProps extends ChatCommonProps {
|
|
|
23
35
|
/**
|
|
24
36
|
* Chat Sidebar component
|
|
25
37
|
*/
|
|
26
|
-
export declare function ChatSidebar({ title, protocol: protocolProp, defaultOpen, position, width, showHeader, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming, onToolCallStart, onToolCallComplete, placeholder, description, pendingPrompt, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }: ChatSidebarProps): import("react
|
|
38
|
+
export declare function ChatSidebar({ title, protocol: protocolProp, defaultOpen, position, width, showHeader, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming, onToolCallStart, onToolCallComplete, placeholder, description, pendingPrompt, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }: ChatSidebarProps): import("react").JSX.Element;
|
|
27
39
|
export default ChatSidebar;
|
package/lib/chat/ChatSidebar.js
CHANGED
|
@@ -37,7 +37,7 @@ function useIsMobile(breakpoint = 640) {
|
|
|
37
37
|
/**
|
|
38
38
|
* Chat Sidebar component
|
|
39
39
|
*/
|
|
40
|
-
export function ChatSidebar({ title = 'Chat', protocol: protocolProp, defaultOpen = true, position = 'right', width = 400, showHeader = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = 'k', showPoweredBy = true, poweredByProps, clickOutsideToClose =
|
|
40
|
+
export function ChatSidebar({ title = 'Chat', protocol: protocolProp, defaultOpen = true, position = 'right', width = 400, showHeader = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = 'k', showPoweredBy = true, poweredByProps, clickOutsideToClose = false, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming = true, onToolCallStart, onToolCallComplete, placeholder = 'Ask a question...', description, pendingPrompt, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }) {
|
|
41
41
|
const isOpen = useChatOpen();
|
|
42
42
|
const messages = useChatMessages();
|
|
43
43
|
const setOpen = useChatStore(state => state.setOpen);
|
|
@@ -55,5 +55,5 @@ export interface ChatStandaloneProps extends ChatCommonProps {
|
|
|
55
55
|
* ChatStandalone component
|
|
56
56
|
* A floating popup chat that uses ChatBase with custom onSendMessage handler
|
|
57
57
|
*/
|
|
58
|
-
export declare function ChatStandalone({ onSendMessage, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, placeholder, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, enableStreaming, emptyStateMessage, renderToolResult, onToolCallStart, onToolCallComplete, pendingPrompt, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }: ChatStandaloneProps):
|
|
58
|
+
export declare function ChatStandalone({ onSendMessage, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, placeholder, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, enableStreaming, emptyStateMessage, renderToolResult, onToolCallStart, onToolCallComplete, pendingPrompt, showToolApprovalBanner, pendingApprovals, onApproveApproval, onRejectApproval, panelProps, }: ChatStandaloneProps): React.JSX.Element;
|
|
59
59
|
export default ChatStandalone;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which companion surface is on screen: the chat alone, a notebook, or a
|
|
3
|
+
* document.
|
|
4
|
+
*
|
|
5
|
+
* It lives in the chat's header, and it also has to live on the surface's own
|
|
6
|
+
* toolbar: a page drawn without a conversation — a Code Sandbox, where nothing
|
|
7
|
+
* is listening — has no header to put it in, and without it the reader is
|
|
8
|
+
* stuck in whichever surface opened first. One component in both places, so
|
|
9
|
+
* the switch is the same thing wherever it is found.
|
|
10
|
+
*/
|
|
11
|
+
import type { JSX } from 'react';
|
|
12
|
+
import type { EphemeralSurfaceMode } from '../types';
|
|
13
|
+
export type EphemeralSurfaceControlProps = {
|
|
14
|
+
/** The surface on screen. */
|
|
15
|
+
mode: EphemeralSurfaceMode;
|
|
16
|
+
onChange?: (mode: EphemeralSurfaceMode) => void;
|
|
17
|
+
/** Whether a notebook is on offer at all. */
|
|
18
|
+
enableNotebook?: boolean;
|
|
19
|
+
/** Whether a document is on offer at all. */
|
|
20
|
+
enableDocument?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether "chat only" is one of the choices.
|
|
23
|
+
*
|
|
24
|
+
* Not where there is no chat: closing the surface would leave the page
|
|
25
|
+
* empty, which is not a state anyone is asking for.
|
|
26
|
+
*/
|
|
27
|
+
enableChatOnly?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare function EphemeralSurfaceControl({ mode, onChange, enableNotebook, enableDocument, enableChatOnly, }: EphemeralSurfaceControlProps): JSX.Element | null;
|
|
30
|
+
export default EphemeralSurfaceControl;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Tooltip } from '@primer/react';
|
|
3
|
+
import { CircleSlashIcon, FileIcon, RowsIcon } from '@primer/octicons-react';
|
|
4
|
+
export function EphemeralSurfaceControl({ mode, onChange, enableNotebook = false, enableDocument = false, enableChatOnly = true, }) {
|
|
5
|
+
const choices = [
|
|
6
|
+
{
|
|
7
|
+
mode: 'none',
|
|
8
|
+
icon: CircleSlashIcon,
|
|
9
|
+
label: 'Chat only',
|
|
10
|
+
enabled: enableChatOnly,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
mode: 'notebook',
|
|
14
|
+
icon: RowsIcon,
|
|
15
|
+
label: 'Notebook',
|
|
16
|
+
enabled: enableNotebook,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
mode: 'document',
|
|
20
|
+
icon: FileIcon,
|
|
21
|
+
label: 'Document',
|
|
22
|
+
enabled: enableDocument,
|
|
23
|
+
},
|
|
24
|
+
].filter(({ enabled }) => enabled);
|
|
25
|
+
// One choice is not a choice.
|
|
26
|
+
if (choices.length < 2) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return (_jsx(Box, { sx: {
|
|
30
|
+
display: 'inline-flex',
|
|
31
|
+
alignItems: 'center',
|
|
32
|
+
bg: 'neutral.muted',
|
|
33
|
+
borderRadius: '6px',
|
|
34
|
+
p: '2px',
|
|
35
|
+
gap: '1px',
|
|
36
|
+
}, children: choices.map(({ mode: choice, icon: ModeIcon, label }) => (_jsx(Tooltip, { text: label, direction: "n", children: _jsx(Box, { as: "button", "aria-label": label, onClick: () => onChange?.(choice), sx: {
|
|
37
|
+
display: 'inline-flex',
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
justifyContent: 'center',
|
|
40
|
+
width: 26,
|
|
41
|
+
height: 24,
|
|
42
|
+
borderRadius: '4px',
|
|
43
|
+
border: 'none',
|
|
44
|
+
cursor: 'pointer',
|
|
45
|
+
bg: mode === choice ? 'canvas.default' : 'transparent',
|
|
46
|
+
boxShadow: mode === choice ? 'shadow.small' : 'none',
|
|
47
|
+
color: mode === choice ? 'fg.default' : 'fg.muted',
|
|
48
|
+
transition: 'all 0.15s ease',
|
|
49
|
+
'&:hover': {
|
|
50
|
+
color: 'fg.default',
|
|
51
|
+
bg: mode === choice ? 'canvas.default' : 'neutral.subtle',
|
|
52
|
+
},
|
|
53
|
+
}, children: _jsx(ModeIcon, { size: 14 }) }) }, choice))) }));
|
|
54
|
+
}
|
|
55
|
+
export default EphemeralSurfaceControl;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether there is an agent to talk to, said once by the host.
|
|
3
|
+
*
|
|
4
|
+
* A chat can be unavailable for a reason that has nothing to do with the chat:
|
|
5
|
+
* the sandbox runs in the browser, or on an anonymous server, and no agent runs
|
|
6
|
+
* beside it. That is the host's knowledge, not the chat's — and not something
|
|
7
|
+
* every screen rendering a chat should have to work out and pass down.
|
|
8
|
+
*
|
|
9
|
+
* So the host says it once, here, and every `ChatBase` beneath it shows itself
|
|
10
|
+
* switched off with the reason in its header. An explicit `disabled` prop still
|
|
11
|
+
* wins: a caller that knows better about one particular chat can say so.
|
|
12
|
+
*
|
|
13
|
+
* @module chat/base/ChatAvailability
|
|
14
|
+
*/
|
|
15
|
+
import type { JSX } from 'react';
|
|
16
|
+
import { type ReactNode } from 'react';
|
|
17
|
+
/** What the host knows about whether a chat can be used. */
|
|
18
|
+
export interface ChatAvailability {
|
|
19
|
+
/** Whether the chat is unusable here. */
|
|
20
|
+
disabled: boolean;
|
|
21
|
+
/** Why, in the person's terms. Shown in the chat header. */
|
|
22
|
+
disableReason?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Declare, for everything beneath, whether a chat can be used.
|
|
26
|
+
*
|
|
27
|
+
* Rendering no provider means available — the common case should cost nothing.
|
|
28
|
+
*/
|
|
29
|
+
export declare function ChatAvailabilityProvider({ disabled, disableReason, children, }: ChatAvailability & {
|
|
30
|
+
children: ReactNode;
|
|
31
|
+
}): JSX.Element;
|
|
32
|
+
/** What the host said about chat availability here. */
|
|
33
|
+
export declare function useChatAvailability(): ChatAvailability;
|
|
34
|
+
export default ChatAvailabilityProvider;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useMemo } from 'react';
|
|
3
|
+
const AVAILABLE = { disabled: false };
|
|
4
|
+
const ChatAvailabilityContext = createContext(AVAILABLE);
|
|
5
|
+
/**
|
|
6
|
+
* Declare, for everything beneath, whether a chat can be used.
|
|
7
|
+
*
|
|
8
|
+
* Rendering no provider means available — the common case should cost nothing.
|
|
9
|
+
*/
|
|
10
|
+
export function ChatAvailabilityProvider({ disabled = false, disableReason, children, }) {
|
|
11
|
+
const value = useMemo(() => (disabled ? { disabled: true, disableReason } : AVAILABLE), [disabled, disableReason]);
|
|
12
|
+
return (_jsx(ChatAvailabilityContext.Provider, { value: value, children: children }));
|
|
13
|
+
}
|
|
14
|
+
/** What the host said about chat availability here. */
|
|
15
|
+
export function useChatAvailability() {
|
|
16
|
+
return useContext(ChatAvailabilityContext);
|
|
17
|
+
}
|
|
18
|
+
export default ChatAvailabilityProvider;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
1
2
|
import type { ChatBaseProps } from '../../types/chat';
|
|
2
3
|
/**
|
|
3
4
|
* ChatBase component — Universal chat panel supporting store, protocol, and custom modes.
|
|
4
5
|
*/
|
|
5
|
-
export declare function ChatBase(props: ChatBaseProps):
|
|
6
|
+
export declare function ChatBase(props: ChatBaseProps): React.JSX.Element;
|
|
6
7
|
export default ChatBase;
|