@datalayer/agent-runtimes 1.0.2 → 1.0.4
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/README.md +14 -132
- package/lib/Agent.js +2 -2
- package/lib/AgentLexical.d.ts +1 -12
- package/lib/AgentLexical.js +3 -14
- package/lib/AgentNotebook.js +3 -3
- package/lib/App.js +2 -2
- package/lib/{components/chat/components → agents}/AgentDetails.d.ts +13 -2
- package/lib/{components/chat/components → agents}/AgentDetails.js +6 -12
- package/lib/api/agents.d.ts +47 -0
- package/lib/api/agents.js +106 -0
- package/lib/api/context.d.ts +17 -0
- package/lib/api/context.js +45 -0
- package/lib/api/evals.d.ts +27 -0
- package/lib/api/evals.js +63 -0
- package/lib/api/events.d.ts +17 -0
- package/lib/api/events.js +93 -0
- package/lib/{components/chat → api}/handler.js +1 -1
- package/lib/api/index.d.ts +15 -0
- package/lib/api/index.js +20 -0
- package/lib/api/notifications.d.ts +39 -0
- package/lib/api/notifications.js +103 -0
- package/lib/api/output.d.ts +28 -0
- package/lib/api/output.js +64 -0
- package/lib/api/tool-approvals.d.ts +62 -0
- package/lib/api/tool-approvals.js +145 -0
- package/lib/{components/chat/components → chat}/Chat.d.ts +26 -15
- package/lib/{components/chat/components → chat}/Chat.js +16 -16
- package/lib/{components/chat/components → chat}/ChatFloating.d.ts +17 -9
- package/lib/{components/chat/components → chat}/ChatFloating.js +17 -9
- package/lib/{components/chat/components → chat}/ChatInline.d.ts +2 -2
- package/lib/{components/chat/components → chat}/ChatInline.js +8 -6
- package/lib/{components/chat/components → chat}/ChatPopupStandalone.d.ts +3 -4
- package/lib/{components/chat/components → chat}/ChatPopupStandalone.js +6 -6
- package/lib/{components/chat/components → chat}/ChatSidebar.d.ts +14 -5
- package/lib/{components/chat/components → chat}/ChatSidebar.js +48 -26
- package/lib/{components/chat/components → chat}/ChatStandalone.d.ts +3 -4
- package/lib/{components/chat/components → chat}/ChatStandalone.js +5 -5
- package/lib/chat/base/ChatBase.d.ts +6 -0
- package/lib/chat/base/ChatBase.js +1338 -0
- package/lib/chat/display/EmptyState.d.ts +27 -0
- package/lib/chat/display/EmptyState.js +41 -0
- package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/display}/FloatingBrandButton.js +1 -1
- package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/header}/ChatHeader.d.ts +1 -4
- package/lib/{components/chat/components/elements → chat/header}/ChatHeader.js +1 -1
- package/lib/chat/header/ChatHeaderBase.d.ts +38 -0
- package/lib/chat/header/ChatHeaderBase.js +83 -0
- package/lib/chat/index.d.ts +66 -0
- package/lib/chat/index.js +74 -0
- package/lib/chat/indicators/McpStatusIndicator.d.ts +9 -0
- package/lib/chat/indicators/McpStatusIndicator.js +128 -0
- package/lib/chat/indicators/SandboxStatusIndicator.d.ts +10 -0
- package/lib/chat/indicators/SandboxStatusIndicator.js +175 -0
- package/lib/chat/indicators/index.d.ts +17 -0
- package/lib/chat/indicators/index.js +19 -0
- package/lib/chat/messages/ChatMessageList.d.ts +49 -0
- package/lib/chat/messages/ChatMessageList.js +332 -0
- package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.d.ts +2 -2
- package/lib/{components/chat/components/elements → chat/messages}/ChatMessages.js +6 -4
- package/lib/{components/chat/components → chat}/parts/DynamicToolPart.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/parts}/MessagePart.d.ts +1 -1
- package/lib/{components/chat/components/elements → chat/parts}/MessagePart.js +4 -4
- package/lib/{components/chat/components → chat}/parts/ReasoningPart.js +1 -1
- package/lib/{components/chat/components → chat}/parts/TextPart.d.ts +1 -1
- package/lib/{components/chat/components → chat}/parts/ToolPart.js +1 -1
- package/lib/{components/chat/components → chat}/parts/index.d.ts +2 -1
- package/lib/{components/chat/components → chat}/parts/index.js +2 -1
- package/lib/chat/prompt/InputFooter.d.ts +43 -0
- package/lib/chat/prompt/InputFooter.js +135 -0
- package/lib/chat/prompt/InputPrompt.d.ts +60 -0
- package/lib/chat/prompt/InputPrompt.js +83 -0
- package/lib/chat/prompt/InputPromptFooter.d.ts +25 -0
- package/lib/chat/prompt/InputPromptFooter.js +15 -0
- package/lib/chat/prompt/InputPromptHeader.d.ts +15 -0
- package/lib/chat/prompt/InputPromptHeader.js +15 -0
- package/lib/chat/prompt/InputPromptLexical.d.ts +16 -0
- package/lib/chat/prompt/InputPromptLexical.js +122 -0
- package/lib/chat/prompt/InputPromptText.d.ts +24 -0
- package/lib/chat/prompt/InputPromptText.js +66 -0
- package/lib/chat/prompt/index.d.ts +11 -0
- package/lib/chat/prompt/index.js +15 -0
- package/lib/{components/chat/components → chat}/styles/streamdownStyles.d.ts +1 -1
- package/lib/chat/tools/ToolApprovalBanner.d.ts +31 -0
- package/lib/chat/tools/ToolApprovalBanner.js +62 -0
- package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.js +1 -1
- package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.d.ts +13 -4
- package/lib/{components/chat/components/display → chat/tools}/ToolCallDisplay.js +18 -8
- package/lib/chat/tools/index.d.ts +8 -0
- package/lib/{components/chat/components/display → chat/tools}/index.js +3 -1
- package/lib/chat/usage/TokenUsageBar.d.ts +8 -0
- package/lib/chat/usage/TokenUsageBar.js +213 -0
- package/lib/client/AgentsMixin.d.ts +216 -0
- package/lib/client/AgentsMixin.js +388 -0
- package/lib/client/index.d.ts +6 -0
- package/lib/client/index.js +10 -0
- package/lib/components/NotificationEventCard.d.ts +8 -0
- package/lib/components/NotificationEventCard.js +177 -0
- package/lib/components/OutputCard.d.ts +8 -0
- package/lib/components/OutputCard.js +94 -0
- package/lib/components/ToolApprovalCard.d.ts +33 -0
- package/lib/components/ToolApprovalCard.js +78 -0
- package/lib/components/index.d.ts +3 -7
- package/lib/components/index.js +3 -4
- package/lib/{components → config}/AgentConfiguration.d.ts +43 -21
- package/lib/{components → config}/AgentConfiguration.js +48 -28
- package/lib/config/index.d.ts +2 -0
- package/lib/config/index.js +1 -0
- package/lib/{components/chat/components → context}/ContextInspector.js +38 -8
- package/lib/{components/chat/components → context}/ContextPanel.js +27 -6
- package/lib/context/CostTracker.d.ts +37 -0
- package/lib/context/CostTracker.js +124 -0
- package/lib/context/TokenUsageChart.d.ts +10 -0
- package/lib/context/TokenUsageChart.js +288 -0
- package/lib/examples/A2UiComponentGalleryExample.d.ts +20 -0
- package/lib/examples/A2UiComponentGalleryExample.js +568 -0
- package/lib/examples/A2UiContactCardExample.d.ts +21 -0
- package/lib/examples/A2UiContactCardExample.js +432 -0
- package/lib/examples/A2UiRestaurantExample.d.ts +11 -3
- package/lib/examples/A2UiRestaurantExample.js +63 -98
- package/lib/examples/A2UiViewerExample.d.ts +21 -0
- package/lib/examples/A2UiViewerExample.js +563 -0
- package/lib/examples/AgUiAgenticExample.js +3 -3
- package/lib/examples/AgUiBackendToolRenderingExample.js +3 -3
- package/lib/examples/{AgUiHaikuGenUIExample.d.ts → AgUiHaikuGenUiExample.d.ts} +4 -4
- package/lib/examples/{AgUiHaikuGenUIExample.js → AgUiHaikuGenUiExample.js} +7 -7
- package/lib/examples/AgUiHumanInTheLoopExample.js +3 -3
- package/lib/examples/AgUiSharedStateExample.js +3 -3
- package/lib/examples/{AgUiToolsBasedGenUIExample.d.ts → AgUiToolsBasedGenUiExample.d.ts} +4 -4
- package/lib/examples/{AgUiToolsBasedGenUIExample.js → AgUiToolsBasedGenUiExample.js} +7 -7
- package/lib/examples/AgentCheckpointsExample.d.ts +19 -0
- package/lib/examples/AgentCheckpointsExample.js +500 -0
- package/lib/examples/AgentCodemodeExample.d.ts +14 -0
- package/lib/examples/AgentCodemodeExample.js +256 -0
- package/lib/examples/AgentEvalsExample.d.ts +14 -0
- package/lib/examples/AgentEvalsExample.js +210 -0
- package/lib/examples/AgentGuardrailsExample.d.ts +14 -0
- package/lib/examples/AgentGuardrailsExample.js +212 -0
- package/lib/examples/AgentMemoryExample.d.ts +14 -0
- package/lib/examples/AgentMemoryExample.js +228 -0
- package/lib/examples/AgentMonitoringExample.d.ts +13 -0
- package/lib/examples/AgentMonitoringExample.js +305 -0
- package/lib/examples/AgentNotificationsExample.d.ts +14 -0
- package/lib/examples/AgentNotificationsExample.js +267 -0
- package/lib/examples/AgentOtelExample.d.ts +25 -0
- package/lib/examples/AgentOtelExample.js +281 -0
- package/lib/examples/AgentOutputsExample.d.ts +14 -0
- package/lib/examples/AgentOutputsExample.js +205 -0
- package/lib/examples/AgentSandboxExample.d.ts +17 -0
- package/lib/examples/AgentSandboxExample.js +490 -0
- package/lib/examples/AgentSkillsExample.d.ts +3 -0
- package/lib/examples/AgentSkillsExample.js +284 -0
- package/lib/examples/AgentToolApprovalsExample.d.ts +3 -0
- package/lib/examples/AgentToolApprovalsExample.js +737 -0
- package/lib/examples/AgentTriggersExample.d.ts +14 -0
- package/lib/examples/AgentTriggersExample.js +1090 -0
- package/lib/examples/{AgentRuntimeFormExample.d.ts → AgentspecExample.d.ts} +3 -4
- package/lib/examples/{AgentRuntimeFormExample.js → AgentspecExample.js} +92 -34
- package/lib/examples/{JupyterCellExample.js → CellSimpleExample.js} +1 -1
- package/lib/examples/{AgentRuntimeCustomExample.js → ChatCustomExample.js} +3 -3
- package/lib/examples/{AgentRuntimeChatExample.js → ChatExample.js} +6 -14
- package/lib/examples/{AgentRuntimeStandaloneExample.js → ChatStandaloneExample.js} +2 -2
- package/lib/examples/CopilotKitLexicalExample.d.ts +3 -14
- package/lib/examples/CopilotKitLexicalExample.js +4 -15
- package/lib/examples/CopilotKitNotebookExample.js +4 -6
- package/lib/examples/DatalayerNotebookExample.js +2 -2
- package/lib/examples/{AgentRuntimeLexical2Example.d.ts → Lexical2Example.d.ts} +2 -13
- package/lib/examples/{AgentRuntimeLexical2Example.js → Lexical2Example.js} +8 -17
- package/lib/examples/{AgentRuntimeLexicalExample.d.ts → LexicalExample.d.ts} +1 -12
- package/lib/examples/{AgentRuntimeLexicalExample.js → LexicalExample.js} +28 -27
- package/lib/examples/{AgentRuntimeLexicalSidebarExample.d.ts → LexicalSidebarExample.d.ts} +2 -13
- package/lib/examples/{AgentRuntimeLexicalSidebarExample.js → LexicalSidebarExample.js} +6 -18
- package/lib/examples/{AgentRuntimeNotebookExample.js → NotebookExample.js} +14 -10
- package/lib/examples/{AgentRuntimeNotebookSidebarExample.js → NotebookSidebarExample.js} +5 -8
- package/lib/examples/{JupyterNotebookExample.js → NotebookSimpleExample.js} +2 -2
- package/lib/examples/ag-ui/weather/InlineWeatherCard.js +1 -1
- package/lib/examples/components/ErrorView.d.ts +14 -0
- package/lib/examples/components/ErrorView.js +20 -0
- package/lib/examples/components/ExampleWrapper.d.ts +12 -0
- package/lib/examples/components/ExampleWrapper.js +16 -0
- package/lib/examples/components/Header.d.ts +2 -2
- package/lib/examples/components/HeaderControls.js +1 -1
- package/lib/examples/components/LexicalEditor.d.ts +1 -12
- package/lib/examples/components/LexicalEditor.js +1 -12
- package/lib/examples/components/MainContent.d.ts +4 -11
- package/lib/examples/components/MainContent.js +6 -60
- package/lib/examples/components/index.d.ts +3 -0
- package/lib/examples/components/index.js +2 -0
- package/lib/examples/example-selector.d.ts +1 -1
- package/lib/examples/example-selector.js +35 -22
- package/lib/examples/index.d.ts +26 -13
- package/lib/examples/index.js +26 -12
- package/lib/examples/main.d.ts +7 -0
- package/lib/examples/main.js +21 -43
- package/lib/examples/utils/examplesStore.d.ts +4 -0
- package/lib/examples/{stores → utils}/examplesStore.js +1 -1
- package/lib/examples/utils/notebooks/Empty.ipynb.json +33 -0
- package/lib/examples/utils/notebooks/NotebookExample2.ipynb.json +48 -0
- package/lib/examples/utils/themeStore.d.ts +8 -0
- package/lib/examples/utils/themeStore.js +14 -0
- package/lib/extensions/A2UIExtension.d.ts +65 -0
- package/lib/extensions/A2UIExtension.js +202 -0
- package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.d.ts +2 -3
- package/lib/{components/chat/extensions → extensions}/ExtensionRegistry.js +0 -2
- package/lib/{components/chat/extensions → extensions}/MCPUIExtension.d.ts +2 -2
- package/lib/{components/chat/extensions → extensions}/MCPUIExtension.js +1 -1
- package/lib/extensions/index.d.ts +9 -0
- package/lib/{components/chat/extensions → extensions}/index.js +2 -2
- package/lib/hooks/index.d.ts +33 -16
- package/lib/hooks/index.js +33 -16
- package/lib/hooks/useAIAgentsWebSocket.d.ts +29 -0
- package/lib/hooks/useAIAgentsWebSocket.js +136 -0
- package/lib/hooks/{useAGUI.d.ts → useAgUi.d.ts} +2 -2
- package/lib/hooks/{useAGUI.js → useAgUi.js} +2 -2
- package/lib/hooks/useAgents.d.ts +150 -11
- package/lib/hooks/useAgents.js +623 -61
- package/lib/hooks/{useAgentStore.d.ts → useAgentsCatalog.d.ts} +3 -8
- package/lib/hooks/{useAgentStore.js → useAgentsCatalog.js} +9 -3
- package/lib/hooks/useAgentsRegistry.d.ts +10 -0
- package/lib/hooks/useAgentsRegistry.js +20 -0
- package/lib/hooks/useAgentsService.d.ts +22 -0
- package/lib/hooks/useAgentsService.js +146 -0
- package/lib/hooks/useChat.d.ts +2 -2
- package/lib/hooks/useChat.js +14 -8
- package/lib/hooks/useCheckpoints.d.ts +176 -0
- package/lib/hooks/useCheckpoints.js +466 -0
- package/lib/hooks/useConfig.d.ts +11 -0
- package/lib/hooks/useConfig.js +46 -0
- package/lib/hooks/useContextSnapshot.d.ts +11 -0
- package/lib/hooks/useContextSnapshot.js +44 -0
- package/lib/hooks/useMonitoring.d.ts +24 -0
- package/lib/hooks/useMonitoring.js +111 -0
- package/lib/hooks/useNotifications.d.ts +67 -0
- package/lib/hooks/useNotifications.js +208 -0
- package/lib/hooks/useSandbox.d.ts +12 -0
- package/lib/hooks/useSandbox.js +49 -0
- package/lib/hooks/useSkills.d.ts +13 -0
- package/lib/hooks/useSkills.js +46 -0
- package/lib/hooks/useToolApprovals.d.ts +45 -0
- package/lib/hooks/useToolApprovals.js +126 -0
- package/lib/hooks/useTools.d.ts +4 -4
- package/lib/hooks/useTools.js +2 -2
- package/lib/hooks/{useVercelChat.d.ts → useVercelAI.d.ts} +3 -3
- package/lib/hooks/{useVercelChat.js → useVercelAI.js} +2 -2
- package/lib/{components/chat/components → identity}/AgentIdentity.d.ts +1 -1
- package/lib/{components/chat/components → identity}/AgentIdentity.js +4 -3
- package/lib/identity/index.d.ts +1 -0
- package/lib/identity/index.js +2 -0
- package/lib/index.d.ts +4 -3
- package/lib/index.js +3 -2
- package/lib/{components/chat/inference → inference}/BaseInferenceProvider.d.ts +3 -3
- package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.d.ts +3 -3
- package/lib/{components/chat/inference → inference}/DatalayerInferenceProvider.js +1 -1
- package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.d.ts +2 -2
- package/lib/{components/chat/inference → inference}/SelfHostedInferenceProvider.js +1 -1
- package/lib/{components/chat/inference → inference}/index.d.ts +1 -1
- package/lib/{components/chat/inference → inference}/index.js +1 -1
- package/lib/lexical/ChatInlinePlugin.d.ts +1 -1
- package/lib/lexical/ChatInlinePlugin.js +1 -1
- package/lib/{components → mcp}/McpServerManager.d.ts +1 -2
- package/lib/mcp/index.d.ts +1 -0
- package/lib/{specs/agents/codeai → mcp}/index.js +1 -1
- package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.d.ts +3 -3
- package/lib/{components/chat/middleware → middleware}/index.d.ts +1 -1
- package/lib/{components/chat/middleware → middleware}/index.js +1 -1
- package/lib/{components/chat/protocols → protocols}/A2AAdapter.d.ts +6 -6
- package/lib/{components/chat/protocols → protocols}/A2AAdapter.js +3 -3
- package/lib/{components/chat/protocols → protocols}/ACPAdapter.d.ts +6 -6
- package/lib/{components/chat/protocols → protocols}/ACPAdapter.js +4 -4
- package/lib/{components/chat/protocols → protocols}/AGUIAdapter.d.ts +14 -6
- package/lib/{components/chat/protocols → protocols}/AGUIAdapter.js +72 -10
- package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.d.ts +6 -6
- package/lib/{components/chat/protocols → protocols}/BaseProtocolAdapter.js +1 -1
- package/lib/{components/chat/protocols → protocols}/VercelAIAdapter.d.ts +33 -7
- package/lib/protocols/VercelAIAdapter.js +748 -0
- package/lib/{components/chat/protocols → protocols}/index.d.ts +1 -2
- package/lib/{components/chat/protocols → protocols}/index.js +1 -1
- package/lib/shims/json5.d.ts +4 -0
- package/lib/shims/json5.js +8 -0
- package/lib/specs/agents/agents.d.ts +54 -0
- package/lib/specs/agents/agents.js +1489 -0
- package/lib/specs/agents/index.js +15 -12
- package/lib/specs/envvars.d.ts +11 -19
- package/lib/specs/envvars.js +52 -38
- package/lib/specs/evals.d.ts +20 -0
- package/lib/specs/evals.js +133 -0
- package/lib/specs/events.d.ts +26 -0
- package/lib/specs/events.js +140 -0
- package/lib/specs/frontendTools.d.ts +14 -0
- package/lib/specs/frontendTools.js +53 -0
- package/lib/specs/guardrails.d.ts +29 -0
- package/lib/specs/guardrails.js +310 -0
- package/lib/specs/index.d.ts +15 -2
- package/lib/specs/index.js +15 -2
- package/lib/specs/mcpServers.d.ts +13 -11
- package/lib/specs/mcpServers.js +75 -50
- package/lib/specs/memory.d.ts +36 -0
- package/lib/specs/memory.js +112 -0
- package/lib/specs/models.d.ts +21 -34
- package/lib/specs/models.js +66 -66
- package/lib/specs/notifications.d.ts +17 -0
- package/lib/specs/notifications.js +103 -0
- package/lib/specs/outputs.d.ts +19 -0
- package/lib/specs/outputs.js +106 -0
- package/lib/specs/skills.d.ts +7 -16
- package/lib/specs/skills.js +95 -18
- package/lib/specs/teams/index.d.ts +17 -0
- package/lib/specs/teams/index.js +35 -0
- package/lib/specs/teams/teams.d.ts +27 -0
- package/lib/specs/teams/teams.js +1000 -0
- package/lib/specs/tools.d.ts +15 -0
- package/lib/specs/tools.js +86 -0
- package/lib/specs/triggers.d.ts +15 -0
- package/lib/specs/triggers.js +67 -0
- package/lib/stores/agentsStore.d.ts +123 -0
- package/lib/stores/agentsStore.js +270 -0
- package/lib/{components/chat/store → stores}/chatStore.d.ts +3 -2
- package/lib/{components/chat/store → stores}/chatStore.js +2 -2
- package/lib/{components/chat/store → stores}/conversationStore.d.ts +1 -1
- package/lib/{components/chat/store → stores}/conversationStore.js +1 -1
- package/lib/{components/chat/store → stores}/index.d.ts +3 -2
- package/lib/{components/chat/store → stores}/index.js +3 -2
- package/lib/{components/chat/tools → tools}/ToolExecutor.d.ts +2 -2
- package/lib/{components/chat/tools → tools}/ToolExecutor.js +1 -1
- package/lib/tools/adapters/agent-runtimes/AgentRuntimesToolAdapter.d.ts +1 -1
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.d.ts +14 -10
- package/lib/tools/adapters/agent-runtimes/lexicalHooks.js +31 -21
- package/lib/tools/adapters/agent-runtimes/notebookHooks.d.ts +1 -1
- package/lib/tools/index.d.ts +3 -0
- package/lib/tools/index.js +3 -7
- package/lib/types/a2a.d.ts +39 -0
- package/lib/types/acp.d.ts +21 -0
- package/lib/types/ag-ui.d.ts +25 -0
- package/lib/types/agents-lifecycle.d.ts +36 -0
- package/lib/types/agents.d.ts +80 -0
- package/lib/types/agents.js +22 -0
- package/lib/types/agentspecs.d.ts +90 -0
- package/lib/{components/chat/components/base/ChatBase.d.ts → types/chat.d.ts} +59 -99
- package/lib/types/checkpoints.d.ts +32 -0
- package/lib/types/checkpoints.js +5 -0
- package/lib/types/config.d.ts +67 -0
- package/lib/{runtime/types.js → types/config.js} +2 -2
- package/lib/types/connection.d.ts +31 -0
- package/lib/types/connection.js +5 -0
- package/lib/types/context.d.ts +67 -0
- package/lib/types/context.js +5 -0
- package/lib/types/cost.d.ts +42 -0
- package/lib/types/cost.js +5 -0
- package/lib/types/envvars.d.ts +21 -0
- package/lib/types/envvars.js +5 -0
- package/lib/types/evals.d.ts +66 -0
- package/lib/types/evals.js +5 -0
- package/lib/types/events.d.ts +49 -0
- package/lib/types/events.js +5 -0
- package/lib/types/eventspecs.d.ts +39 -0
- package/lib/types/eventspecs.js +5 -0
- package/lib/types/examples.d.ts +31 -0
- package/lib/types/examples.js +5 -0
- package/lib/{components/chat/types → types}/execution.d.ts +10 -1
- package/lib/{components/chat/types/extension.d.ts → types/extensions.d.ts} +3 -3
- package/lib/types/guardrails.d.ts +106 -0
- package/lib/types/guardrails.js +5 -0
- package/lib/types/index.d.ts +36 -2
- package/lib/types/index.js +35 -2
- package/lib/{components/chat/types → types}/inference.d.ts +3 -3
- package/lib/types/inference.js +5 -0
- package/lib/types/mcp.d.ts +117 -0
- package/lib/types/mcp.js +27 -0
- package/lib/types/memory.d.ts +23 -0
- package/lib/types/memory.js +5 -0
- package/lib/{components/chat/types/message.d.ts → types/messages.d.ts} +20 -1
- package/lib/{components/chat/types → types}/middleware.d.ts +3 -3
- package/lib/types/models.d.ts +63 -0
- package/lib/types/models.js +5 -0
- package/lib/types/notifications.d.ts +85 -0
- package/lib/types/notifications.js +5 -0
- package/lib/types/outputs.d.ts +51 -0
- package/lib/types/outputs.js +5 -0
- package/lib/{components/chat/types → types}/protocol.d.ts +37 -99
- package/lib/types/protocol.js +5 -0
- package/lib/types/sandbox.d.ts +27 -0
- package/lib/types/sandbox.js +24 -0
- package/lib/types/skills.d.ts +74 -0
- package/lib/types/skills.js +5 -0
- package/lib/types/teams.d.ts +133 -0
- package/lib/types/teams.js +5 -0
- package/lib/types/tool-approvals.d.ts +39 -0
- package/lib/types/tool-approvals.js +5 -0
- package/lib/{components/chat/types/tool.d.ts → types/tools.d.ts} +61 -4
- package/lib/types/triggers.d.ts +48 -0
- package/lib/types/triggers.js +5 -0
- package/lib/types/usage.d.ts +36 -0
- package/lib/types/usage.js +5 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +5 -0
- package/lib/utils/utils.d.ts +60 -0
- package/lib/utils/utils.js +205 -0
- package/package.json +13 -14
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/generate_agents.py +377 -61
- package/scripts/codegen/generate_envvars.py +36 -35
- package/scripts/codegen/generate_evals.py +279 -0
- package/scripts/codegen/generate_events.py +320 -0
- package/scripts/codegen/generate_frontend_tools.py +266 -0
- package/scripts/codegen/generate_guardrails.py +475 -0
- package/scripts/codegen/generate_mcp_servers.py +36 -9
- package/scripts/codegen/generate_memory.py +468 -0
- package/scripts/codegen/generate_models.py +22 -46
- package/scripts/codegen/generate_notifications.py +309 -0
- package/scripts/codegen/generate_outputs.py +267 -0
- package/scripts/codegen/generate_skills.py +108 -51
- package/scripts/codegen/generate_teams.py +922 -0
- package/scripts/codegen/generate_tools.py +346 -0
- package/scripts/codegen/generate_triggers.py +295 -0
- package/scripts/codegen/versioning.py +53 -0
- package/style/primer-primitives.css +1 -6
- package/lib/components/chat/components/base/ChatBase.js +0 -2242
- package/lib/components/chat/components/base/InputPrompt.d.ts +0 -42
- package/lib/components/chat/components/base/InputPrompt.js +0 -131
- package/lib/components/chat/components/display/index.d.ts +0 -6
- package/lib/components/chat/components/index.d.ts +0 -26
- package/lib/components/chat/components/index.js +0 -39
- package/lib/components/chat/extensions/A2UIExtension.d.ts +0 -87
- package/lib/components/chat/extensions/A2UIExtension.js +0 -312
- package/lib/components/chat/extensions/index.d.ts +0 -10
- package/lib/components/chat/index.d.ts +0 -61
- package/lib/components/chat/index.js +0 -76
- package/lib/components/chat/protocols/VercelAIAdapter.js +0 -315
- package/lib/components/chat/tools/index.d.ts +0 -8
- package/lib/components/chat/tools/index.js +0 -11
- package/lib/components/chat/types/index.d.ts +0 -12
- package/lib/components/chat/types/index.js +0 -17
- package/lib/components/sparklines/Sparklines.d.ts +0 -16
- package/lib/components/sparklines/Sparklines.js +0 -65
- package/lib/components/sparklines/SparklinesLine.d.ts +0 -8
- package/lib/components/sparklines/SparklinesLine.js +0 -37
- package/lib/components/sparklines/dataProcessing.d.ts +0 -25
- package/lib/components/sparklines/dataProcessing.js +0 -35
- package/lib/components/sparklines/index.d.ts +0 -4
- package/lib/components/sparklines/index.js +0 -7
- package/lib/components/sparklines/types.d.ts +0 -36
- package/lib/examples/stores/examplesStore.d.ts +0 -5
- package/lib/examples/stores/notebooks/Empty.ipynb.json +0 -33
- package/lib/examples/stores/notebooks/NotebookExample2.ipynb.json +0 -48
- package/lib/examples/stores/themeStore.d.ts +0 -33
- package/lib/examples/stores/themeStore.js +0 -38
- package/lib/hooks/useAgentRuntimes.d.ts +0 -350
- package/lib/hooks/useAgentRuntimes.js +0 -78
- package/lib/hooks/useKeyboardShortcuts.d.ts +0 -47
- package/lib/hooks/useKeyboardShortcuts.js +0 -153
- package/lib/hooks/useMobile.d.ts +0 -1
- package/lib/hooks/useMobile.js +0 -19
- package/lib/hooks/useNotebookAIAgent.d.ts +0 -8
- package/lib/hooks/useNotebookAIAgent.js +0 -73
- package/lib/renderers/a2ui/components/A2UIRenderer.d.ts +0 -7
- package/lib/renderers/a2ui/components/A2UIRenderer.js +0 -102
- package/lib/renderers/a2ui/components/SurfaceRenderer.d.ts +0 -7
- package/lib/renderers/a2ui/components/SurfaceRenderer.js +0 -101
- package/lib/renderers/a2ui/components/content/AudioPlayer.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/AudioPlayer.js +0 -38
- package/lib/renderers/a2ui/components/content/Divider.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Divider.js +0 -35
- package/lib/renderers/a2ui/components/content/Icon.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Icon.js +0 -110
- package/lib/renderers/a2ui/components/content/Image.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Image.js +0 -61
- package/lib/renderers/a2ui/components/content/Text.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Text.js +0 -64
- package/lib/renderers/a2ui/components/content/Video.d.ts +0 -9
- package/lib/renderers/a2ui/components/content/Video.js +0 -37
- package/lib/renderers/a2ui/components/content/index.d.ts +0 -6
- package/lib/renderers/a2ui/components/content/index.js +0 -25
- package/lib/renderers/a2ui/components/index.d.ts +0 -5
- package/lib/renderers/a2ui/components/index.js +0 -24
- package/lib/renderers/a2ui/components/interactive/Button.d.ts +0 -11
- package/lib/renderers/a2ui/components/interactive/Button.js +0 -71
- package/lib/renderers/a2ui/components/interactive/CheckBox.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/CheckBox.js +0 -48
- package/lib/renderers/a2ui/components/interactive/DateTimeInput.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/DateTimeInput.js +0 -62
- package/lib/renderers/a2ui/components/interactive/MultipleChoice.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/MultipleChoice.js +0 -73
- package/lib/renderers/a2ui/components/interactive/Slider.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/Slider.js +0 -53
- package/lib/renderers/a2ui/components/interactive/TextField.d.ts +0 -9
- package/lib/renderers/a2ui/components/interactive/TextField.js +0 -72
- package/lib/renderers/a2ui/components/interactive/index.d.ts +0 -6
- package/lib/renderers/a2ui/components/interactive/index.js +0 -25
- package/lib/renderers/a2ui/components/layout/Card.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Card.js +0 -30
- package/lib/renderers/a2ui/components/layout/Column.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Column.js +0 -65
- package/lib/renderers/a2ui/components/layout/List.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/List.js +0 -55
- package/lib/renderers/a2ui/components/layout/Modal.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Modal.js +0 -58
- package/lib/renderers/a2ui/components/layout/Row.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Row.js +0 -65
- package/lib/renderers/a2ui/components/layout/Tabs.d.ts +0 -11
- package/lib/renderers/a2ui/components/layout/Tabs.js +0 -48
- package/lib/renderers/a2ui/components/layout/index.d.ts +0 -6
- package/lib/renderers/a2ui/components/layout/index.js +0 -25
- package/lib/renderers/a2ui/context/A2UIContext.d.ts +0 -17
- package/lib/renderers/a2ui/context/A2UIContext.js +0 -54
- package/lib/renderers/a2ui/context/ThemeContext.d.ts +0 -20
- package/lib/renderers/a2ui/context/ThemeContext.js +0 -333
- package/lib/renderers/a2ui/hooks/useA2UI.d.ts +0 -36
- package/lib/renderers/a2ui/hooks/useA2UI.js +0 -62
- package/lib/renderers/a2ui/hooks/useDataBinding.d.ts +0 -8
- package/lib/renderers/a2ui/hooks/useDataBinding.js +0 -83
- package/lib/renderers/a2ui/index.d.ts +0 -9
- package/lib/renderers/a2ui/index.js +0 -28
- package/lib/renderers/a2ui/lib/utils.d.ts +0 -11
- package/lib/renderers/a2ui/lib/utils.js +0 -38
- package/lib/renderers/a2ui/types/index.d.ts +0 -17
- package/lib/runtime/index.d.ts +0 -38
- package/lib/runtime/index.js +0 -40
- package/lib/runtime/runtimeStore.d.ts +0 -76
- package/lib/runtime/runtimeStore.js +0 -184
- package/lib/runtime/types.d.ts +0 -84
- package/lib/runtime/useAgentConnection.d.ts +0 -45
- package/lib/runtime/useAgentConnection.js +0 -112
- package/lib/runtime/useAgentRuntime.d.ts +0 -93
- package/lib/runtime/useAgentRuntime.js +0 -125
- package/lib/specs/agents/codeai/agents.d.ts +0 -28
- package/lib/specs/agents/codeai/agents.js +0 -179
- package/lib/specs/agents/codeai/index.d.ts +0 -1
- package/lib/specs/agents/codemode-paper/agents.d.ts +0 -31
- package/lib/specs/agents/codemode-paper/agents.js +0 -378
- package/lib/specs/agents/codemode-paper/index.d.ts +0 -1
- package/lib/specs/agents/codemode-paper/index.js +0 -5
- package/lib/specs/agents/datalayer-ai/agents.d.ts +0 -31
- package/lib/specs/agents/datalayer-ai/agents.js +0 -352
- package/lib/specs/agents/datalayer-ai/index.d.ts +0 -1
- package/lib/specs/agents/datalayer-ai/index.js +0 -5
- package/lib/specs/agents/mocks/agents.d.ts +0 -43
- package/lib/specs/agents/mocks/agents.js +0 -2293
- package/lib/specs/agents/mocks/index.d.ts +0 -1
- package/lib/specs/agents/mocks/index.js +0 -5
- package/lib/state/index.d.ts +0 -1
- package/lib/state/index.js +0 -5
- package/lib/state/substates/AIAgentState.d.ts +0 -80
- package/lib/state/substates/AIAgentState.js +0 -108
- package/lib/state/substates/index.d.ts +0 -1
- package/lib/state/substates/index.js +0 -5
- package/lib/types/AIAgent.d.ts +0 -17
- package/lib/types/Types.d.ts +0 -217
- /package/lib/{components/chat → api}/handler.d.ts +0 -0
- /package/lib/{renderers/index.d.ts → api/utils.d.ts} +0 -0
- /package/lib/{renderers/index.js → api/utils.js} +0 -0
- /package/lib/{components/chat/components/elements → chat/display}/PoweredByTag.js +0 -0
- /package/lib/{components/chat/components → chat}/parts/DynamicToolPart.js +0 -0
- /package/lib/{components/chat/components → chat}/parts/ReasoningPart.d.ts +0 -0
- /package/lib/{components/chat/components → chat}/parts/TextPart.js +0 -0
- /package/lib/{components/chat/components → chat}/parts/ToolPart.d.ts +0 -0
- /package/lib/{components/chat/components → chat}/styles/streamdownStyles.js +0 -0
- /package/lib/{components/chat/components/elements → chat/tools}/ToolApprovalDialog.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextDistribution.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextDistribution.js +0 -0
- /package/lib/{components/chat/components → context}/ContextInspector.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextPanel.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextUsage.d.ts +0 -0
- /package/lib/{components/chat/components → context}/ContextUsage.js +0 -0
- /package/lib/examples/{JupyterCellExample.d.ts → CellSimpleExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeCustomExample.d.ts → ChatCustomExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeChatExample.d.ts → ChatExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeStandaloneExample.d.ts → ChatStandaloneExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeNotebookExample.d.ts → NotebookExample.d.ts} +0 -0
- /package/lib/examples/{AgentRuntimeNotebookSidebarExample.d.ts → NotebookSidebarExample.d.ts} +0 -0
- /package/lib/examples/{JupyterNotebookExample.d.ts → NotebookSimpleExample.d.ts} +0 -0
- /package/lib/examples/{stores → utils}/agents/earthquake-detector.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/earthquake-detector.json +0 -0
- /package/lib/examples/{stores → utils}/agents/earthquake-detector.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/agents/sales-forecaster.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/sales-forecaster.json +0 -0
- /package/lib/examples/{stores → utils}/agents/sales-forecaster.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/agents/social-post-generator.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/social-post-generator.json +0 -0
- /package/lib/examples/{stores → utils}/agents/social-post-generator.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/agents/stock-market.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/agents/stock-market.json +0 -0
- /package/lib/examples/{stores → utils}/agents/stock-market.lexical.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExample.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/Lite.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/Matplotlib.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/NotebookExample1.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/NotebookOutputs.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/NotebookToCExample.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.d.ts +0 -0
- /package/lib/examples/{stores → utils}/notebooks/OutputIPyWidgetsExample.js +0 -0
- /package/lib/examples/{stores → utils}/notebooks/PyGWalker.ipynb.json +0 -0
- /package/lib/examples/{stores → utils}/themedProvider.d.ts +0 -0
- /package/lib/examples/{stores → utils}/themedProvider.js +0 -0
- /package/lib/{components/chat/inference → inference}/BaseInferenceProvider.js +0 -0
- /package/lib/{components → mcp}/McpServerManager.js +0 -0
- /package/lib/{components/chat/middleware → middleware}/MiddlewarePipeline.js +0 -0
- /package/lib/{components/chat/types/inference.js → types/a2a.js} +0 -0
- /package/lib/{components/chat/types/protocol.js → types/acp.js} +0 -0
- /package/lib/{components/sparklines/types.js → types/ag-ui.js} +0 -0
- /package/lib/{renderers/a2ui/types/index.js → types/agents-lifecycle.js} +0 -0
- /package/lib/types/{AIAgent.js → agentspecs.js} +0 -0
- /package/lib/types/{Types.js → chat.js} +0 -0
- /package/lib/{components/chat/types → types}/execution.js +0 -0
- /package/lib/{components/chat/types/extension.js → types/extensions.js} +0 -0
- /package/lib/{components/chat/types/message.js → types/messages.js} +0 -0
- /package/lib/{components/chat/types → types}/middleware.js +0 -0
- /package/lib/{components/chat/types/tool.js → types/tools.js} +0 -0
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
import type { FrontendToolDefinition } from '../types
|
|
4
|
-
import type { McpServerSelection } from '../types';
|
|
5
|
-
import type { OAuthProvider, OAuthProviderConfig, Identity } from '../../../identity';
|
|
6
|
-
/**
|
|
7
|
-
* Supported transports (communication transports)
|
|
8
|
-
*/
|
|
9
|
-
export type Transport = 'ag-ui' | 'a2a' | 'acp' | 'vercel-ai' | 'vercel-ai-jupyter';
|
|
10
|
-
/**
|
|
11
|
-
* Extension type for chat features
|
|
12
|
-
*/
|
|
13
|
-
export type Extension = 'mcp-ui' | 'a2ui';
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { OAuthProvider, OAuthProviderConfig, Identity } from '../identity';
|
|
3
|
+
import type { Extension, FrontendToolDefinition, McpServerSelection, Protocol, ChatViewMode, ModelConfig, RenderToolResult, Suggestion } from '../types';
|
|
14
4
|
/**
|
|
15
5
|
* Chat props
|
|
16
6
|
*/
|
|
17
7
|
export interface ChatProps {
|
|
18
8
|
/** Transport to use */
|
|
19
|
-
|
|
9
|
+
protocol: Protocol;
|
|
20
10
|
/** Extensions for chat features */
|
|
21
11
|
extensions?: Extension[];
|
|
22
12
|
/** Base URL of the server (for HTTP-based protocols) */
|
|
@@ -25,10 +15,14 @@ export interface ChatProps {
|
|
|
25
15
|
wsUrl?: string;
|
|
26
16
|
/** Agent ID */
|
|
27
17
|
agentId?: string;
|
|
18
|
+
/** Authentication token (JWT) to send as Authorization Bearer header */
|
|
19
|
+
authToken?: string;
|
|
28
20
|
/** Custom placeholder text */
|
|
29
21
|
placeholder?: string;
|
|
30
22
|
/** Custom title */
|
|
31
23
|
title?: string;
|
|
24
|
+
/** Brand icon shown in chat header/empty state and details title */
|
|
25
|
+
brandIcon?: ReactNode;
|
|
32
26
|
/** Whether to auto-connect on mount */
|
|
33
27
|
autoConnect?: boolean;
|
|
34
28
|
/** Whether to use streaming (for protocols that support it) */
|
|
@@ -49,10 +43,16 @@ export interface ChatProps {
|
|
|
49
43
|
height?: string | number;
|
|
50
44
|
/** Show header with connection status */
|
|
51
45
|
showHeader?: boolean;
|
|
46
|
+
/** Show the new chat (+) button in the header */
|
|
47
|
+
showNewChatButton?: boolean;
|
|
48
|
+
/** Show the clear chat button in the header */
|
|
49
|
+
showClearButton?: boolean;
|
|
52
50
|
/** Show model selector (fetched from /configure endpoint) */
|
|
53
51
|
showModelSelector?: boolean;
|
|
54
52
|
/** Show tools menu (fetched from /configure endpoint) */
|
|
55
53
|
showToolsMenu?: boolean;
|
|
54
|
+
/** Show input area */
|
|
55
|
+
showInput?: boolean;
|
|
56
56
|
/** Show skills menu (fetched from /skills endpoint) */
|
|
57
57
|
showSkillsMenu?: boolean;
|
|
58
58
|
/** Indicate tools are accessed via Codemode meta-tools */
|
|
@@ -82,6 +82,10 @@ export interface ChatProps {
|
|
|
82
82
|
submitOnSuggestionClick?: boolean;
|
|
83
83
|
/** Description shown in empty state */
|
|
84
84
|
description?: string;
|
|
85
|
+
/** Custom content to render in the chat header title row (left side). */
|
|
86
|
+
headerContent?: ReactNode;
|
|
87
|
+
/** Custom actions to render in the chat header title row (right side). */
|
|
88
|
+
headerActions?: ReactNode;
|
|
85
89
|
/** Auto-focus the input on mount */
|
|
86
90
|
autoFocus?: boolean;
|
|
87
91
|
/** Identity providers configuration for OAuth */
|
|
@@ -142,6 +146,13 @@ export interface ChatProps {
|
|
|
142
146
|
* Pass an empty array to explicitly disable all frontend tools.
|
|
143
147
|
*/
|
|
144
148
|
frontendTools?: FrontendToolDefinition[];
|
|
149
|
+
/** Optional custom renderer for tool-call message cards. */
|
|
150
|
+
renderToolResult?: RenderToolResult;
|
|
151
|
+
/**
|
|
152
|
+
* Hide assistant messages that follow a rendered tool call UI.
|
|
153
|
+
* Useful to suppress raw tool-call/continuation text and show only tool cards.
|
|
154
|
+
*/
|
|
155
|
+
hideMessagesAfterToolUI?: boolean;
|
|
145
156
|
}
|
|
146
157
|
/**
|
|
147
158
|
* Chat Component
|
|
@@ -184,5 +195,5 @@ export interface ChatProps {
|
|
|
184
195
|
* />
|
|
185
196
|
* ```
|
|
186
197
|
*/
|
|
187
|
-
export declare function Chat({ transport, extensions: _extensions, baseUrl, wsUrl, agentId, placeholder, title, autoConnect: _autoConnect, streaming: _streaming, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height, showHeader, showModelSelector, showToolsMenu, showSkillsMenu, codemodeEnabled, showTokenUsage, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount, suggestions, submitOnSuggestionClick, description, autoFocus, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation, chatViewMode, onChatViewModeChange, frontendTools, }: ChatProps): import("react/jsx-runtime").JSX.Element;
|
|
198
|
+
export declare function Chat({ protocol: transport, extensions: _extensions, baseUrl, wsUrl, agentId, authToken: authTokenProp, placeholder, title, brandIcon, autoConnect: _autoConnect, streaming: _streaming, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height, showHeader, showNewChatButton, showClearButton, showModelSelector, showToolsMenu, showInput, showSkillsMenu, codemodeEnabled, showTokenUsage, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount, suggestions, submitOnSuggestionClick, description, headerContent, headerActions, autoFocus, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation, chatViewMode, onChatViewModeChange, frontendTools, renderToolResult, hideMessagesAfterToolUI, }: ChatProps): import("react/jsx-runtime").JSX.Element;
|
|
188
199
|
export default Chat;
|
|
@@ -16,16 +16,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
16
16
|
* - Vercel AI - HTTP/SSE streaming (via SelfHostedInferenceProvider)
|
|
17
17
|
* - Vercel AI Jupyter - Same as Vercel AI but served by Jupyter server
|
|
18
18
|
*
|
|
19
|
-
* @module
|
|
19
|
+
* @module chat/Chat
|
|
20
20
|
*/
|
|
21
21
|
import { useEffect, useMemo, useState } from 'react';
|
|
22
22
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
23
23
|
import { Text, Button, Spinner } from '@primer/react';
|
|
24
24
|
import { AlertIcon, SyncIcon } from '@primer/octicons-react';
|
|
25
25
|
import { Box } from '@datalayer/primer-addons';
|
|
26
|
+
import { useConnectedIdentities } from '../identity';
|
|
26
27
|
import { ChatBase } from './base/ChatBase';
|
|
27
|
-
import { AgentDetails } from '
|
|
28
|
-
import { useConnectedIdentities } from '../../../identity';
|
|
28
|
+
import { AgentDetails } from '../agents/AgentDetails';
|
|
29
29
|
// Try to get Jupyter settings if available
|
|
30
30
|
let getJupyterSettings;
|
|
31
31
|
try {
|
|
@@ -62,8 +62,8 @@ const queryClient = new QueryClient();
|
|
|
62
62
|
/**
|
|
63
63
|
* Get transport endpoint path
|
|
64
64
|
*/
|
|
65
|
-
function getEndpointPath(
|
|
66
|
-
switch (
|
|
65
|
+
function getEndpointPath(protocol, agentId) {
|
|
66
|
+
switch (protocol) {
|
|
67
67
|
case 'vercel-ai':
|
|
68
68
|
return `/api/v1/vercel-ai/${agentId}`;
|
|
69
69
|
case 'vercel-ai-jupyter':
|
|
@@ -84,12 +84,12 @@ function getEndpointPath(transport, agentId) {
|
|
|
84
84
|
/**
|
|
85
85
|
* Map transport type to protocol type
|
|
86
86
|
*/
|
|
87
|
-
function getProtocolType(
|
|
88
|
-
switch (
|
|
87
|
+
function getProtocolType(protocol) {
|
|
88
|
+
switch (protocol) {
|
|
89
89
|
case 'vercel-ai-jupyter':
|
|
90
90
|
return 'vercel-ai';
|
|
91
91
|
default:
|
|
92
|
-
return
|
|
92
|
+
return protocol;
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
@@ -133,7 +133,7 @@ function getProtocolType(transport) {
|
|
|
133
133
|
* />
|
|
134
134
|
* ```
|
|
135
135
|
*/
|
|
136
|
-
export function Chat({ transport, extensions: _extensions, baseUrl = 'http://localhost:8765', wsUrl, agentId, placeholder = 'Type your message...', title, autoConnect: _autoConnect = true, streaming: _streaming = true, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height = '600px', showHeader = true, showModelSelector = true, showToolsMenu = true, showSkillsMenu = false, codemodeEnabled = false, showTokenUsage = true, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount = true, suggestions, submitOnSuggestionClick = true, description, autoFocus = false, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation = true, chatViewMode, onChatViewModeChange, frontendTools, }) {
|
|
136
|
+
export function Chat({ protocol: transport, extensions: _extensions, baseUrl = 'http://localhost:8765', wsUrl, agentId, authToken: authTokenProp, placeholder = 'Type your message...', title, brandIcon, autoConnect: _autoConnect = true, streaming: _streaming = true, onMessageSent: _onMessageSent, onMessageReceived: _onMessageReceived, onDisconnect, onLogout: _onLogout, onCollapsePanel: _onCollapsePanel, className, height = '600px', showHeader = true, showNewChatButton = true, showClearButton = true, showModelSelector = true, showToolsMenu = true, showInput = true, showSkillsMenu = false, codemodeEnabled = false, showTokenUsage = true, initialModel, availableModels, mcpServers, initialSkills, clearOnMount: _clearOnMount = true, suggestions, submitOnSuggestionClick = true, description, headerContent, headerActions, autoFocus = false, identityProviders, onIdentityConnect, onIdentityDisconnect, runtimeId, historyEndpoint, pendingPrompt, errorBanner, showInformation = true, chatViewMode, onChatViewModeChange, frontendTools, renderToolResult, hideMessagesAfterToolUI = false, }) {
|
|
137
137
|
const [error, setError] = useState(null);
|
|
138
138
|
const [isInitializing, setIsInitializing] = useState(true);
|
|
139
139
|
const [showDetails, setShowDetails] = useState(false);
|
|
@@ -165,7 +165,7 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
|
|
|
165
165
|
const protocolConfig = useMemo(() => {
|
|
166
166
|
try {
|
|
167
167
|
let endpoint;
|
|
168
|
-
let authToken;
|
|
168
|
+
let authToken = authTokenProp;
|
|
169
169
|
let options;
|
|
170
170
|
switch (transport) {
|
|
171
171
|
case 'vercel-ai-jupyter': {
|
|
@@ -232,7 +232,7 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
|
|
|
232
232
|
setError(err instanceof Error ? err.message : 'Failed to configure');
|
|
233
233
|
return undefined;
|
|
234
234
|
}
|
|
235
|
-
}, [transport, baseUrl, wsUrl, agentId]);
|
|
235
|
+
}, [transport, baseUrl, wsUrl, agentId, authTokenProp]);
|
|
236
236
|
// Set initialized once protocol config is built
|
|
237
237
|
useEffect(() => {
|
|
238
238
|
if (protocolConfig) {
|
|
@@ -285,7 +285,7 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
|
|
|
285
285
|
display: showDetails ? 'flex' : 'none',
|
|
286
286
|
flexDirection: 'column',
|
|
287
287
|
height: '100%',
|
|
288
|
-
}, children: _jsx(AgentDetails, { name: title || 'AI Agent', protocol: transport, url: protocolConfig?.endpoint || baseUrl, messageCount: messageCount, agentId: agentId, apiBase: baseUrl, identityProviders: identityProviders, onIdentityConnect: onIdentityConnect, onIdentityDisconnect: onIdentityDisconnect, onBack: () => setShowDetails(false) }) }), _jsxs(Box, { sx: {
|
|
288
|
+
}, children: _jsx(AgentDetails, { name: title || 'AI Agent', icon: brandIcon, protocol: transport, url: protocolConfig?.endpoint || baseUrl, messageCount: messageCount, agentId: agentId, apiBase: baseUrl, identityProviders: identityProviders, onIdentityConnect: onIdentityConnect, onIdentityDisconnect: onIdentityDisconnect, onBack: () => setShowDetails(false) }) }), _jsxs(Box, { sx: {
|
|
289
289
|
display: showDetails ? 'none' : 'flex',
|
|
290
290
|
flexDirection: 'column',
|
|
291
291
|
height: '100%',
|
|
@@ -310,12 +310,12 @@ export function Chat({ transport, extensions: _extensions, baseUrl = 'http://loc
|
|
|
310
310
|
? 'attention.fg'
|
|
311
311
|
: 'danger.fg',
|
|
312
312
|
flex: 1,
|
|
313
|
-
}, children: errorBanner.message })] })), _jsx(ChatBase, { title: title, showHeader: showHeader, protocol: protocolConfig, placeholder: placeholder, description: description, suggestions: suggestions, submitOnSuggestionClick: submitOnSuggestionClick, autoFocus: autoFocus, runtimeId: runtimeId, historyEndpoint: historyEndpoint, pendingPrompt: pendingPrompt, showInformation: showInformation, onInformationClick: () => setShowDetails(true), showModelSelector: showModelSelector, showToolsMenu: showToolsMenu, showSkillsMenu: showSkillsMenu, showTokenUsage: showTokenUsage, codemodeEnabled: codemodeEnabled, initialModel: initialModel, availableModels: availableModels, mcpServers: mcpServers, initialSkills: initialSkills, connectedIdentities: identitiesForChat, onNewChat: handleNewChat, onMessagesChange: messages => setMessageCount(messages.length), headerButtons: {
|
|
314
|
-
showNewChat:
|
|
315
|
-
showClear:
|
|
313
|
+
}, children: errorBanner.message })] })), _jsx(ChatBase, { title: title, brandIcon: brandIcon, showHeader: showHeader, protocol: protocolConfig, placeholder: placeholder, description: description, suggestions: suggestions, submitOnSuggestionClick: submitOnSuggestionClick, autoFocus: autoFocus, runtimeId: runtimeId, historyEndpoint: historyEndpoint, pendingPrompt: pendingPrompt, showInformation: showInformation, onInformationClick: () => setShowDetails(true), headerContent: headerContent, headerActions: headerActions, showModelSelector: showModelSelector, showToolsMenu: showToolsMenu, showInput: showInput, showSkillsMenu: showSkillsMenu, showTokenUsage: showTokenUsage, codemodeEnabled: codemodeEnabled, initialModel: initialModel, availableModels: availableModels, mcpServers: mcpServers, initialSkills: initialSkills, connectedIdentities: identitiesForChat, onNewChat: handleNewChat, onMessagesChange: messages => setMessageCount(messages.length), headerButtons: {
|
|
314
|
+
showNewChat: showNewChatButton,
|
|
315
|
+
showClear: showClearButton,
|
|
316
316
|
onNewChat: handleNewChat,
|
|
317
317
|
}, avatarConfig: {
|
|
318
318
|
showAvatars: true,
|
|
319
|
-
}, backgroundColor: "canvas.default", focusTrigger: focusTrigger, chatViewMode: chatViewMode, onChatViewModeChange: onChatViewModeChange, frontendTools: frontendTools })] })] }) }));
|
|
319
|
+
}, backgroundColor: "canvas.default", focusTrigger: focusTrigger, chatViewMode: chatViewMode, onChatViewModeChange: onChatViewModeChange, frontendTools: frontendTools, renderToolResult: renderToolResult, hideMessagesAfterToolUI: hideMessagesAfterToolUI })] })] }) }));
|
|
320
320
|
}
|
|
321
321
|
export default Chat;
|
|
@@ -9,13 +9,11 @@
|
|
|
9
9
|
* 2. Store mode: When `useStore` is true
|
|
10
10
|
* 3. Any protocol supported by ChatBase (AG-UI, A2A, ACP, Vercel AI)
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module chat/ChatFloating
|
|
13
13
|
*/
|
|
14
14
|
import React from 'react';
|
|
15
|
-
import
|
|
16
|
-
import type {
|
|
17
|
-
import type { FrontendToolDefinition } from '../types/tool';
|
|
18
|
-
export type { ToolCallStatus, ToolCallRenderContext, RenderToolResult, RespondCallback, Suggestion, RemoteConfig, ModelConfig, BuiltinTool, MCPServerConfig, MCPServerTool, ChatViewMode, };
|
|
15
|
+
import type { PoweredByTagProps } from './display/PoweredByTag';
|
|
16
|
+
import type { ChatBaseProps, ChatViewMode, FrontendToolDefinition, ModelConfig, Protocol, ProtocolConfig, RenderToolResult, Suggestion } from '../types';
|
|
19
17
|
/**
|
|
20
18
|
* ChatFloating props
|
|
21
19
|
*/
|
|
@@ -26,10 +24,15 @@ export interface ChatFloatingProps {
|
|
|
26
24
|
*/
|
|
27
25
|
endpoint?: string;
|
|
28
26
|
/**
|
|
29
|
-
* Protocol
|
|
30
|
-
*
|
|
27
|
+
* Protocol type or full configuration.
|
|
28
|
+
*
|
|
29
|
+
* When a `Protocol` string is provided (e.g. `'vercel-ai'`), it overrides the
|
|
30
|
+
* auto-detected protocol from the endpoint URL. When a full `ProtocolConfig`
|
|
31
|
+
* object is provided, it is used directly and takes precedence over endpoint.
|
|
32
|
+
*
|
|
33
|
+
* @default 'vercel-ai'
|
|
31
34
|
*/
|
|
32
|
-
protocol?: ProtocolConfig;
|
|
35
|
+
protocol?: Protocol | ProtocolConfig;
|
|
33
36
|
/**
|
|
34
37
|
* Use Zustand store for state management instead of protocol endpoint.
|
|
35
38
|
* @default false
|
|
@@ -182,6 +185,11 @@ export interface ChatFloatingProps {
|
|
|
182
185
|
* Defaults to `{protocol.endpoint}/api/v1/history` when runtimeId is set.
|
|
183
186
|
*/
|
|
184
187
|
historyEndpoint?: string;
|
|
188
|
+
/**
|
|
189
|
+
* Auth token for authenticating with the agent runtime.
|
|
190
|
+
* Used for indicator API calls (MCP status, sandbox status) and history.
|
|
191
|
+
*/
|
|
192
|
+
authToken?: string;
|
|
185
193
|
/**
|
|
186
194
|
* Auth token for the history endpoint.
|
|
187
195
|
*/
|
|
@@ -206,5 +214,5 @@ export interface ChatFloatingProps {
|
|
|
206
214
|
* ChatFloating component
|
|
207
215
|
* A floating chat window built on ChatBase
|
|
208
216
|
*/
|
|
209
|
-
export declare function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick, hideMessagesAfterToolUI, defaultViewMode, onViewModeChange, showPanelBackdrop, availableModels, showModelSelector, showToolsMenu, showSkillsMenu, showTokenUsage, runtimeId, historyEndpoint, historyAuthToken, pendingPrompt, showInformation, onInformationClick, panelProps, }: ChatFloatingProps): import("react/jsx-runtime").JSX.Element;
|
|
217
|
+
export declare function ChatFloating({ endpoint, protocol: protocolProp, useStore: useStoreMode, title, description, position, defaultOpen, width, height, showHeader, showButton, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose, escapeToClose, className, onSettingsClick, onNewChat, onOpen, onClose, onStateUpdate, children, brandIcon, buttonIcon, buttonTooltip, brandColor, offset, animationDuration, renderToolResult, frontendTools, initialState: _initialState, suggestions, submitOnSuggestionClick, hideMessagesAfterToolUI, defaultViewMode, onViewModeChange, showPanelBackdrop, availableModels, showModelSelector, showToolsMenu, showSkillsMenu, showTokenUsage, runtimeId, historyEndpoint, authToken, historyAuthToken, pendingPrompt, showInformation, onInformationClick, panelProps, }: ChatFloatingProps): import("react/jsx-runtime").JSX.Element;
|
|
210
218
|
export default ChatFloating;
|
|
@@ -14,16 +14,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
14
14
|
* 2. Store mode: When `useStore` is true
|
|
15
15
|
* 3. Any protocol supported by ChatBase (AG-UI, A2A, ACP, Vercel AI)
|
|
16
16
|
*
|
|
17
|
-
* @module
|
|
17
|
+
* @module chat/ChatFloating
|
|
18
18
|
*/
|
|
19
19
|
import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
|
|
20
20
|
import { IconButton, Text, Tooltip } from '@primer/react';
|
|
21
21
|
import { Box } from '@datalayer/primer-addons';
|
|
22
22
|
import { XIcon, CommentDiscussionIcon } from '@primer/octicons-react';
|
|
23
23
|
import { AiAgentIcon } from '@datalayer/icons-react';
|
|
24
|
-
import { ChatBase
|
|
25
|
-
import { useChatOpen, useChatMessages, useChatStore } from '../
|
|
26
|
-
import { useChatKeyboardShortcuts, getShortcutDisplay, } from '
|
|
24
|
+
import { ChatBase } from './base/ChatBase';
|
|
25
|
+
import { useChatOpen, useChatMessages, useChatStore, } from '../stores/chatStore';
|
|
26
|
+
import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
|
|
27
27
|
/**
|
|
28
28
|
* Hook to detect mobile viewport
|
|
29
29
|
*/
|
|
@@ -43,7 +43,7 @@ function useIsMobile(breakpoint = 640) {
|
|
|
43
43
|
* ChatFloating component
|
|
44
44
|
* A floating chat window built on ChatBase
|
|
45
45
|
*/
|
|
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, historyAuthToken, pendingPrompt, showInformation = false, onInformationClick, panelProps, }) {
|
|
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, panelProps, }) {
|
|
47
47
|
// Store-based state
|
|
48
48
|
const storeIsOpen = useChatOpen();
|
|
49
49
|
const storeMessages = useChatMessages();
|
|
@@ -80,23 +80,30 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
80
80
|
// Build protocol config from endpoint if not provided directly
|
|
81
81
|
// Memoize to avoid creating new object on every render (which would trigger useEffect re-runs)
|
|
82
82
|
const protocol = useMemo(() => {
|
|
83
|
-
|
|
83
|
+
// Full ProtocolConfig object takes precedence
|
|
84
|
+
if (protocolProp && typeof protocolProp === 'object')
|
|
84
85
|
return protocolProp;
|
|
85
86
|
if (!endpoint)
|
|
86
87
|
return undefined;
|
|
88
|
+
// If protocolProp is a Protocol string, use it as explicit type override
|
|
89
|
+
const explicitType = typeof protocolProp === 'string' ? protocolProp : undefined;
|
|
87
90
|
// Extract base URL from endpoint - everything before /api/v1/
|
|
88
91
|
// e.g., https://prod1.datalayer.run/agent-runtimes/pool1/rt123/api/v1/ag-ui/default/
|
|
89
92
|
// -> https://prod1.datalayer.run/agent-runtimes/pool1/rt123
|
|
90
93
|
const baseUrl = endpoint.match(/^(.*?)\/api\/v1\//)?.[1] ||
|
|
91
94
|
endpoint.match(/^(https?:\/\/[^/]+)/)?.[1] ||
|
|
92
95
|
'';
|
|
93
|
-
//
|
|
94
|
-
const
|
|
96
|
+
// Detect protocol type from endpoint path (fallback when no explicit type)
|
|
97
|
+
const protocolMatch = endpoint.match(/\/api\/v1\/(ag-ui|vercel-ai|a2a|acp)\//);
|
|
98
|
+
const detectedType = (explicitType ?? protocolMatch?.[1] ?? 'vercel-ai');
|
|
99
|
+
// Extract agentId from endpoint path
|
|
100
|
+
const agentIdMatch = endpoint.match(/\/api\/v1\/(?:ag-ui|vercel-ai|a2a\/agents|acp\/ws)\/([^/]+)/);
|
|
95
101
|
const extractedAgentId = agentIdMatch ? agentIdMatch[1] : undefined;
|
|
96
102
|
return {
|
|
97
|
-
type:
|
|
103
|
+
type: detectedType,
|
|
98
104
|
endpoint,
|
|
99
105
|
agentId: extractedAgentId,
|
|
106
|
+
authToken,
|
|
100
107
|
// Enable config query for model/tools/skills selector or token usage
|
|
101
108
|
enableConfigQuery: showModelSelector || showToolsMenu || showSkillsMenu || showTokenUsage,
|
|
102
109
|
// Config endpoint is at /api/v1/configure (global, not per-agent)
|
|
@@ -107,6 +114,7 @@ export function ChatFloating({ endpoint, protocol: protocolProp, useStore: useSt
|
|
|
107
114
|
}, [
|
|
108
115
|
protocolProp,
|
|
109
116
|
endpoint,
|
|
117
|
+
authToken,
|
|
110
118
|
showModelSelector,
|
|
111
119
|
showToolsMenu,
|
|
112
120
|
showSkillsMenu,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Protocol } from '../types/protocol';
|
|
2
2
|
/**
|
|
3
3
|
* Protocol configuration for ChatInline
|
|
4
4
|
*/
|
|
5
5
|
export interface ChatInlineProtocolConfig {
|
|
6
6
|
/** Protocol type (ag-ui, vercel-ai, etc.) */
|
|
7
|
-
type:
|
|
7
|
+
type: Protocol;
|
|
8
8
|
/** Endpoint URL */
|
|
9
9
|
endpoint: string;
|
|
10
10
|
/** Authentication token */
|
|
@@ -15,7 +15,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
15
15
|
*
|
|
16
16
|
* Uses Primer UI components instead of Tailwind CSS.
|
|
17
17
|
*
|
|
18
|
-
* @module
|
|
18
|
+
* @module chat/ChatInline
|
|
19
19
|
*/
|
|
20
20
|
import { useState, useCallback, useMemo, useRef, useEffect, Fragment, } from 'react';
|
|
21
21
|
import { Text, TextInput, IconButton, ActionList, Spinner, } from '@primer/react';
|
|
@@ -23,7 +23,8 @@ import { Box } from '@datalayer/primer-addons';
|
|
|
23
23
|
import { CopyIcon, ArrowLeftIcon, SyncIcon, TrashIcon, CheckIcon, PlusIcon, PencilIcon, XIcon, } from '@primer/octicons-react';
|
|
24
24
|
import { SparklesIcon } from '@datalayer/icons-react';
|
|
25
25
|
import { AGUIAdapter } from '../protocols';
|
|
26
|
-
import { generateMessageId } from '../types/
|
|
26
|
+
import { generateMessageId } from '../types/messages';
|
|
27
|
+
import { sanitizeAssistantContent } from '../utils';
|
|
27
28
|
/**
|
|
28
29
|
* Pre-defined AI action groups
|
|
29
30
|
*/
|
|
@@ -120,7 +121,7 @@ export function ChatInline({ selectedText, protocol, onReplaceSelection, onInser
|
|
|
120
121
|
if (!protocol)
|
|
121
122
|
return;
|
|
122
123
|
const adapter = new AGUIAdapter({
|
|
123
|
-
|
|
124
|
+
protocol: protocol.type,
|
|
124
125
|
baseUrl: protocol.endpoint,
|
|
125
126
|
authToken: protocol.authToken,
|
|
126
127
|
agentId: protocol.agentId,
|
|
@@ -132,9 +133,10 @@ export function ChatInline({ selectedText, protocol, onReplaceSelection, onInser
|
|
|
132
133
|
switch (event.type) {
|
|
133
134
|
case 'message':
|
|
134
135
|
if (event.message?.content) {
|
|
135
|
-
|
|
136
|
-
? event.message.content
|
|
137
|
-
: ''
|
|
136
|
+
const content = typeof event.message.content === 'string'
|
|
137
|
+
? sanitizeAssistantContent(event.message.content)
|
|
138
|
+
: '';
|
|
139
|
+
setAiResponse(content);
|
|
138
140
|
}
|
|
139
141
|
break;
|
|
140
142
|
case 'error':
|
|
@@ -6,12 +6,11 @@
|
|
|
6
6
|
* This component uses ChatBase for all chat functionality and provides
|
|
7
7
|
* a floating popup wrapper with animation, positioning, and FAB button.
|
|
8
8
|
*
|
|
9
|
-
* @module
|
|
9
|
+
* @module chat/ChatPopupStandalone
|
|
10
10
|
*/
|
|
11
11
|
import React from 'react';
|
|
12
|
-
import { type
|
|
13
|
-
import {
|
|
14
|
-
export type { ToolCallStatus, ToolCallRenderContext, RenderToolResult };
|
|
12
|
+
import { type PoweredByTagProps } from './display/PoweredByTag';
|
|
13
|
+
import { ChatBaseProps, RenderToolResult } from '../types';
|
|
15
14
|
/**
|
|
16
15
|
* Simple message handler type for standalone usage
|
|
17
16
|
*/
|
|
@@ -11,18 +11,18 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
11
11
|
* This component uses ChatBase for all chat functionality and provides
|
|
12
12
|
* a floating popup wrapper with animation, positioning, and FAB button.
|
|
13
13
|
*
|
|
14
|
-
* @module
|
|
14
|
+
* @module chat/ChatPopupStandalone
|
|
15
15
|
*/
|
|
16
16
|
import { useCallback, useEffect, useRef, useState, } from 'react';
|
|
17
17
|
import { IconButton, Text, Tooltip, Textarea, Button } from '@primer/react';
|
|
18
18
|
import { Box } from '@datalayer/primer-addons';
|
|
19
19
|
import { XIcon, CommentDiscussionIcon, PaperAirplaneIcon, SquareCircleIcon, } from '@primer/octicons-react';
|
|
20
20
|
import { AiAgentIcon } from '@datalayer/icons-react';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
21
|
+
import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
|
|
22
|
+
import { ChatBase } from './base/ChatBase';
|
|
23
|
+
import { PoweredByTag } from './display/PoweredByTag';
|
|
24
|
+
import { useChatOpen, useChatMessages, useChatStore, useChatLoading, useChatStreaming, } from '../stores/chatStore';
|
|
25
|
+
import { generateMessageId, createUserMessage, createAssistantMessage, } from '../types/messages';
|
|
26
26
|
/**
|
|
27
27
|
* Hook to detect mobile viewport
|
|
28
28
|
*/
|
|
@@ -4,18 +4,27 @@
|
|
|
4
4
|
* Features: keyboard shortcuts, mobile responsive, powered by tag.
|
|
5
5
|
* Built on top of ChatBase for core chat functionality.
|
|
6
6
|
*
|
|
7
|
-
* @module
|
|
7
|
+
* @module chat/ChatSidebar
|
|
8
8
|
*/
|
|
9
9
|
import React from 'react';
|
|
10
|
-
import
|
|
11
|
-
import type {
|
|
12
|
-
export type { MessageHandler };
|
|
10
|
+
import type { PoweredByTagProps } from './display/PoweredByTag';
|
|
11
|
+
import type { ChatBaseProps, MessageHandler, Protocol, ProtocolConfig } from '../types';
|
|
13
12
|
/**
|
|
14
13
|
* ChatSidebar props
|
|
15
14
|
*/
|
|
16
15
|
export interface ChatSidebarProps {
|
|
17
16
|
/** Sidebar title */
|
|
18
17
|
title?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Protocol type or full configuration.
|
|
20
|
+
*
|
|
21
|
+
* When a `Protocol` string is provided (e.g. `'vercel-ai'`), it is forwarded
|
|
22
|
+
* to ChatBase. When a full `ProtocolConfig` object is provided, it is passed
|
|
23
|
+
* directly via `panelProps`.
|
|
24
|
+
*
|
|
25
|
+
* @default 'vercel-ai'
|
|
26
|
+
*/
|
|
27
|
+
protocol?: Protocol | ProtocolConfig;
|
|
19
28
|
/** Initial open state */
|
|
20
29
|
defaultOpen?: boolean;
|
|
21
30
|
/** Sidebar position */
|
|
@@ -79,5 +88,5 @@ export interface ChatSidebarProps {
|
|
|
79
88
|
/**
|
|
80
89
|
* Chat Sidebar component
|
|
81
90
|
*/
|
|
82
|
-
export declare function ChatSidebar({ title, defaultOpen, position, width, showHeader, showNewChatButton, showClearButton, showSettingsButton, enableKeyboardShortcuts, toggleShortcut, showPoweredBy, poweredByProps, clickOutsideToClose,
|
|
91
|
+
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, placeholder, description, pendingPrompt, panelProps, }: ChatSidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
83
92
|
export default ChatSidebar;
|
|
@@ -9,16 +9,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
9
9
|
* Features: keyboard shortcuts, mobile responsive, powered by tag.
|
|
10
10
|
* Built on top of ChatBase for core chat functionality.
|
|
11
11
|
*
|
|
12
|
-
* @module
|
|
12
|
+
* @module chat/ChatSidebar
|
|
13
13
|
*/
|
|
14
14
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
15
15
|
import { IconButton, Text } from '@primer/react';
|
|
16
16
|
import { Box } from '@datalayer/primer-addons';
|
|
17
17
|
import { SidebarCollapseIcon, SidebarExpandIcon, XIcon, } from '@primer/octicons-react';
|
|
18
18
|
import { AiAgentIcon } from '@datalayer/icons-react';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
19
|
+
import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
|
|
20
|
+
import { ChatBase } from './base/ChatBase';
|
|
21
|
+
import { useChatStore, useChatOpen, useChatMessages, } from '../stores/chatStore';
|
|
22
22
|
/**
|
|
23
23
|
* Hook to detect mobile viewport
|
|
24
24
|
*/
|
|
@@ -37,7 +37,7 @@ function useIsMobile(breakpoint = 640) {
|
|
|
37
37
|
/**
|
|
38
38
|
* Chat Sidebar component
|
|
39
39
|
*/
|
|
40
|
-
export function ChatSidebar({ title = 'Chat', defaultOpen = true, position = 'right', width = 400, showHeader = true, showNewChatButton = true, showClearButton = true, showSettingsButton = false, enableKeyboardShortcuts = true, toggleShortcut = 'k', showPoweredBy = true, poweredByProps, clickOutsideToClose = true,
|
|
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 = true, className, onSettingsClick, onNewChat, onOpen, onClose, children, brandIcon, onSendMessage, enableStreaming = true, placeholder = 'Ask a question...', description, pendingPrompt, panelProps, }) {
|
|
41
41
|
const isOpen = useChatOpen();
|
|
42
42
|
const messages = useChatMessages();
|
|
43
43
|
const setOpen = useChatStore(state => state.setOpen);
|
|
@@ -138,34 +138,56 @@ export function ChatSidebar({ title = 'Chat', defaultOpen = true, position = 'ri
|
|
|
138
138
|
// Collapsed state
|
|
139
139
|
if (!isOpen) {
|
|
140
140
|
return (_jsxs(Box, { ref: sidebarRef, className: className, sx: {
|
|
141
|
-
position: '
|
|
141
|
+
position: 'fixed',
|
|
142
|
+
top: 12,
|
|
143
|
+
...(position === 'right' ? { right: 12 } : { left: 12 }),
|
|
144
|
+
zIndex: 1001,
|
|
142
145
|
display: 'flex',
|
|
143
146
|
flexDirection: 'column',
|
|
144
147
|
alignItems: 'center',
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
148
|
+
gap: 2,
|
|
149
|
+
}, children: [_jsxs(Box, { sx: { position: 'relative' }, children: [_jsx(IconButton, { icon: position === 'right' ? SidebarExpandIcon : SidebarCollapseIcon, "aria-label": `Open chat${shortcutHint ? ` (${shortcutHint})` : ''}`, onClick: handleToggle, variant: "default", size: "small", sx: {
|
|
150
|
+
bg: 'canvas.default',
|
|
151
|
+
border: '1px solid',
|
|
152
|
+
borderColor: 'border.default',
|
|
153
|
+
boxShadow: 'shadow.small',
|
|
154
|
+
} }), messages.length > 0 && (_jsx(Box, { sx: {
|
|
155
|
+
position: 'absolute',
|
|
156
|
+
top: -6,
|
|
157
|
+
right: -6,
|
|
158
|
+
minWidth: 16,
|
|
159
|
+
height: 16,
|
|
160
|
+
px: 1,
|
|
161
|
+
display: 'flex',
|
|
162
|
+
alignItems: 'center',
|
|
163
|
+
justifyContent: 'center',
|
|
164
|
+
bg: 'accent.emphasis',
|
|
165
|
+
color: 'fg.onEmphasis',
|
|
166
|
+
borderRadius: '50%',
|
|
167
|
+
fontSize: '10px',
|
|
168
|
+
fontWeight: 'bold',
|
|
169
|
+
boxShadow: 'shadow.small',
|
|
170
|
+
}, children: messages.length > 99 ? '99+' : messages.length }))] }), _jsx(Box, { sx: {
|
|
171
|
+
width: 32,
|
|
172
|
+
height: 32,
|
|
173
|
+
display: 'flex',
|
|
174
|
+
alignItems: 'center',
|
|
175
|
+
justifyContent: 'center',
|
|
176
|
+
bg: 'canvas.default',
|
|
177
|
+
border: '1px solid',
|
|
178
|
+
borderColor: 'border.default',
|
|
179
|
+
borderRadius: 2,
|
|
180
|
+
boxShadow: 'shadow.small',
|
|
181
|
+
}, children: brandIcon || _jsx(AiAgentIcon, { colored: true, size: 20 }) }), shortcutHint && (_jsx(Box, { sx: {
|
|
163
182
|
px: 1,
|
|
164
183
|
py: '2px',
|
|
165
|
-
bg: '
|
|
184
|
+
bg: 'canvas.default',
|
|
185
|
+
border: '1px solid',
|
|
186
|
+
borderColor: 'border.default',
|
|
166
187
|
color: 'fg.muted',
|
|
167
188
|
borderRadius: 1,
|
|
168
189
|
fontSize: 0,
|
|
190
|
+
boxShadow: 'shadow.small',
|
|
169
191
|
}, children: _jsx(Text, { sx: { fontSize: '10px', fontFamily: 'mono' }, children: shortcutHint }) }))] }));
|
|
170
192
|
}
|
|
171
193
|
// Mobile full-screen overlay
|
|
@@ -206,7 +228,7 @@ export function ChatSidebar({ title = 'Chat', defaultOpen = true, position = 'ri
|
|
|
206
228
|
borderRight: !isMobile && position === 'left' ? '1px solid' : 'none',
|
|
207
229
|
borderColor: 'border.default',
|
|
208
230
|
...mobileStyles,
|
|
209
|
-
}, children: _jsx(ChatBase, { title: title, showHeader: showHeader, brandIcon: brandIcon, headerButtons: {
|
|
231
|
+
}, children: _jsx(ChatBase, { title: title, showHeader: showHeader, brandIcon: brandIcon, protocol: protocolProp, headerButtons: {
|
|
210
232
|
showNewChat: showNewChatButton,
|
|
211
233
|
showClear: showClearButton && messages.length > 0,
|
|
212
234
|
showSettings: showSettingsButton,
|
|
@@ -6,12 +6,11 @@
|
|
|
6
6
|
* This component uses ChatBase for all chat functionality and provides
|
|
7
7
|
* a floating popup wrapper with animation, positioning, and FAB button.
|
|
8
8
|
*
|
|
9
|
-
* @module
|
|
9
|
+
* @module chat/ChatStandalone
|
|
10
10
|
*/
|
|
11
11
|
import React from 'react';
|
|
12
|
-
import { type
|
|
13
|
-
import { type
|
|
14
|
-
export type { ToolCallStatus, ToolCallRenderContext, RenderToolResult, StreamingMessageOptions, MessageHandler, };
|
|
12
|
+
import { type PoweredByTagProps } from './display/PoweredByTag';
|
|
13
|
+
import { type ChatBaseProps, type RenderToolResult, type MessageHandler } from '../types';
|
|
15
14
|
/**
|
|
16
15
|
* ChatStandalone props
|
|
17
16
|
*/
|
|
@@ -11,17 +11,17 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
11
11
|
* This component uses ChatBase for all chat functionality and provides
|
|
12
12
|
* a floating popup wrapper with animation, positioning, and FAB button.
|
|
13
13
|
*
|
|
14
|
-
* @module
|
|
14
|
+
* @module chat/ChatStandalone
|
|
15
15
|
*/
|
|
16
16
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
17
17
|
import { IconButton, Text, Tooltip } from '@primer/react';
|
|
18
18
|
import { Box } from '@datalayer/primer-addons';
|
|
19
19
|
import { XIcon, CommentDiscussionIcon } from '@primer/octicons-react';
|
|
20
20
|
import { AiAgentIcon } from '@datalayer/icons-react';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
21
|
+
import { useChatKeyboardShortcuts, getShortcutDisplay, } from '@datalayer/core/lib/hooks';
|
|
22
|
+
import { ChatBase } from './base/ChatBase';
|
|
23
|
+
import { PoweredByTag } from './display/PoweredByTag';
|
|
24
|
+
import { useChatOpen, useChatMessages, useChatStore, } from '../stores/chatStore';
|
|
25
25
|
/**
|
|
26
26
|
* Hook to detect mobile viewport
|
|
27
27
|
*/
|