@datalayer/agent-runtimes 1.0.1 → 1.0.3
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 +1 -1
- 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 +25 -16
- 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 +1287 -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 +319 -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 +169 -0
- package/lib/client/AgentsMixin.js +279 -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 +152 -0
- package/lib/components/OutputCard.d.ts +8 -0
- package/lib/components/OutputCard.js +80 -0
- package/lib/components/ToolApprovalCard.d.ts +33 -0
- package/lib/components/ToolApprovalCard.js +60 -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 +506 -0
- package/lib/examples/AgentCodemodeExample.d.ts +14 -0
- package/lib/examples/AgentCodemodeExample.js +262 -0
- package/lib/examples/AgentEvalsExample.d.ts +14 -0
- package/lib/examples/AgentEvalsExample.js +216 -0
- package/lib/examples/AgentGuardrailsExample.d.ts +14 -0
- package/lib/examples/AgentGuardrailsExample.js +218 -0
- package/lib/examples/AgentMemoryExample.d.ts +14 -0
- package/lib/examples/AgentMemoryExample.js +234 -0
- package/lib/examples/AgentMonitoringExample.d.ts +13 -0
- package/lib/examples/AgentMonitoringExample.js +311 -0
- package/lib/examples/AgentNotificationsExample.d.ts +14 -0
- package/lib/examples/AgentNotificationsExample.js +273 -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 +211 -0
- package/lib/examples/AgentSandboxExample.d.ts +17 -0
- package/lib/examples/AgentSandboxExample.js +496 -0
- package/lib/examples/AgentSkillsExample.d.ts +3 -0
- package/lib/examples/AgentSkillsExample.js +290 -0
- package/lib/examples/AgentToolApprovalsExample.d.ts +3 -0
- package/lib/examples/AgentToolApprovalsExample.js +672 -0
- package/lib/examples/AgentTriggersExample.d.ts +14 -0
- package/lib/examples/AgentTriggersExample.js +523 -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} +4 -4
- 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/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 +1 -0
- package/lib/examples/components/index.js +1 -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 +6 -0
- package/lib/examples/main.js +20 -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 +37 -12
- package/lib/hooks/index.js +37 -12
- 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/useAgentsCatalog.d.ts +25 -0
- package/lib/hooks/useAgentsCatalog.js +28 -0
- 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 +2 -3
- package/lib/{components → mcp}/McpServerManager.js +1 -1
- 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 +31 -7
- package/lib/protocols/VercelAIAdapter.js +682 -0
- package/lib/{components/chat/protocols → protocols}/index.d.ts +1 -2
- package/lib/{components/chat/protocols → protocols}/index.js +1 -1
- package/lib/specs/agents/agents.d.ts +54 -0
- package/lib/specs/agents/agents.js +2638 -0
- package/lib/specs/agents/index.js +14 -7
- package/lib/specs/envvars.d.ts +11 -19
- package/lib/specs/envvars.js +42 -21
- package/lib/specs/evals.d.ts +20 -0
- package/lib/specs/evals.js +133 -0
- package/lib/specs/events.d.ts +18 -0
- package/lib/specs/events.js +182 -0
- package/lib/specs/frontendTools.d.ts +14 -0
- package/lib/specs/frontendTools.js +53 -0
- package/lib/specs/guardrails.d.ts +22 -0
- package/lib/specs/guardrails.js +391 -0
- package/lib/specs/index.d.ts +15 -2
- package/lib/specs/index.js +15 -2
- package/lib/specs/mcpServers.d.ts +13 -10
- package/lib/specs/mcpServers.js +95 -25
- package/lib/specs/memory.d.ts +34 -0
- package/lib/specs/memory.js +99 -0
- package/lib/specs/models.d.ts +22 -35
- package/lib/specs/models.js +64 -44
- package/lib/specs/notifications.d.ts +17 -0
- package/lib/specs/notifications.js +187 -0
- package/lib/specs/outputs.d.ts +19 -0
- package/lib/specs/outputs.js +112 -0
- package/lib/specs/skills.d.ts +7 -16
- package/lib/specs/skills.js +89 -12
- package/lib/specs/teams/index.d.ts +17 -0
- package/lib/specs/teams/index.js +37 -0
- package/lib/specs/teams/teams.d.ts +27 -0
- package/lib/specs/teams/teams.js +1120 -0
- package/lib/specs/tools.d.ts +15 -0
- package/lib/specs/tools.js +83 -0
- package/lib/specs/triggers.d.ts +15 -0
- package/lib/specs/triggers.js +117 -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 +2 -2
- package/lib/{components/chat/store → stores}/conversationStore.js +3 -3
- 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} +60 -100
- 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} +59 -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__/generate_agents.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_envvars.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_evals.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_guardrails.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_mcp_servers.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_memory.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_models.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_notifications.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_outputs.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_skills.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_teams.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_tools.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/generate_triggers.cpython-313.pyc +0 -0
- package/scripts/codegen/__pycache__/versioning.cpython-313.pyc +0 -0
- package/scripts/codegen/generate_agents.py +464 -58
- package/scripts/codegen/generate_envvars.py +36 -35
- package/scripts/codegen/generate_evals.py +279 -0
- package/scripts/codegen/generate_events.py +312 -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 +326 -0
- package/scripts/codegen/generate_triggers.py +295 -0
- package/scripts/codegen/versioning.py +53 -0
- package/lib/components/chat/components/base/ChatBase.js +0 -2240
- 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/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 -151
- 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 -308
- 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 -282
- package/lib/specs/agents/datalayer-ai/index.d.ts +0 -1
- package/lib/specs/agents/datalayer-ai/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 -189
- /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/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,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chat - Next generation chat component for agent-runtimes.
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - Multiple transport support: AG-UI, A2A, ACP
|
|
6
|
-
* - Hybrid tool execution (frontend/backend)
|
|
7
|
-
* - Human-in-the-loop (HITL) tool approval
|
|
8
|
-
* - Middleware pipeline for extensibility
|
|
9
|
-
* - Extension registry for custom renderers
|
|
10
|
-
* - Primer React UI components
|
|
11
|
-
* - Zustand state management (NO provider required!)
|
|
12
|
-
*
|
|
13
|
-
* @module components/chat
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```tsx
|
|
17
|
-
* import {
|
|
18
|
-
* useChatStore,
|
|
19
|
-
* ChatSidebar,
|
|
20
|
-
* useFrontendTool,
|
|
21
|
-
* DatalayerInferenceProvider,
|
|
22
|
-
* } from './chat';
|
|
23
|
-
*
|
|
24
|
-
* // Setup inference provider (once at app init)
|
|
25
|
-
* const provider = new DatalayerInferenceProvider({
|
|
26
|
-
* apiKey: 'your-api-key',
|
|
27
|
-
* baseUrl: 'https://api.datalayer.io',
|
|
28
|
-
* });
|
|
29
|
-
* useChatStore.getState().setInferenceProvider(provider);
|
|
30
|
-
*
|
|
31
|
-
* function App() {
|
|
32
|
-
* return (
|
|
33
|
-
* <>
|
|
34
|
-
* <ToolRegistrar />
|
|
35
|
-
* <ChatSidebar title="Assistant" />
|
|
36
|
-
* </>
|
|
37
|
-
* );
|
|
38
|
-
* }
|
|
39
|
-
*
|
|
40
|
-
* function ToolRegistrar() {
|
|
41
|
-
* useFrontendTool({
|
|
42
|
-
* name: 'greet',
|
|
43
|
-
* description: 'Greet a user',
|
|
44
|
-
* parameters: [{ name: 'name', type: 'string', required: true }],
|
|
45
|
-
* handler: async ({ name }) => ({ greeting: `Hello, ${name}!` }),
|
|
46
|
-
* });
|
|
47
|
-
* return null;
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export * from './types';
|
|
52
|
-
export { useChatStore, useChatMessages, useChatLoading, useChatStreaming, useChatError, useChatTools, useChatOpen, useChatConfig, useChatReady, useChatInferenceProvider, useChatExtensionRegistry, defaultChatConfig, type ChatStore, type ChatState, type ChatActions, type ChatConfig, type ToolCallState, } from './store';
|
|
53
|
-
export { useChat, useFrontendTool, useBackendTool, ActionRegistrar, type UseChatReturn, type UseFrontendToolFn, } from '../../hooks';
|
|
54
|
-
export { BaseInferenceProvider, DatalayerInferenceProvider, SelfHostedInferenceProvider, type DatalayerInferenceConfig, type SelfHostedInferenceConfig, } from './inference';
|
|
55
|
-
export { BaseProtocolAdapter, AGUIAdapter, A2AAdapter, ACPAdapter, type AGUIAdapterConfig, type A2AAdapterConfig, type ACPAdapterConfig, type ACPSession, type ACPAgent, type ACPPendingPermission, } from './protocols';
|
|
56
|
-
export { ToolExecutor, type ToolExecutionContext } from './tools';
|
|
57
|
-
export { MiddlewarePipeline, createMiddleware, loggingMiddleware, createHITLMiddleware, type RequestContext, type ResponseContext, } from './middleware';
|
|
58
|
-
export { ExtensionRegistry, createMessageRenderer, createActivityRenderer, createA2UIRenderer, A2UIExtensionImpl, type A2UIMessage, type InternalExtensionType, } from './extensions';
|
|
59
|
-
export { ChatMessages, ChatSidebar, ChatStandalone, ChatBase, InputPrompt, ToolApprovalDialog, useToolApprovalDialog, PoweredByTag, FloatingBrandButton, ChatHeader, MessagePart, TextPart, ReasoningPart, ToolPart, DynamicToolPart, ToolCallDisplay, Chat, ChatFloating, AgentDetails, AgentIdentity, IdentityCard, getTokenStatus, formatDuration, formatExpirationStatus, type ChatMessagesProps, type ChatSidebarProps, type ChatStandaloneProps, type MessageHandler, type ChatBaseProps, type ProtocolConfig, type AgentRuntimeConfig, type AvatarConfig, type EmptyStateConfig, type HeaderButtonsConfig, type StreamingMessageOptions, type ChatViewMode, type InputPromptProps, type ToolApprovalDialogProps, type PoweredByTagProps, type FloatingBrandButtonProps, type ChatFloatingProps, type ToolCallRenderContext, type ToolCallStatus, type RenderToolResult, type RespondCallback, type Suggestion, type RemoteConfig, type ModelConfig, type BuiltinTool, type MCPServerConfig, type MCPServerTool, type AgentDetailsProps, type AgentIdentityProps, type IdentityCardProps, type TokenStatus, type ChatHeaderProps, type ConnectionState, type MessagePartProps, type TextPartProps, type ReasoningPartProps, type ToolPartProps, type DynamicToolPartProps, type ToolCallDisplayProps, type ChatProps, type Transport, type Extension, } from './components';
|
|
60
|
-
export { requestAPI } from './handler';
|
|
61
|
-
export { useKeyboardShortcuts, useChatKeyboardShortcuts, getShortcutDisplay, type KeyboardShortcut, type UseKeyboardShortcutsOptions, } from '../../hooks';
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Chat - Next generation chat component for agent-runtimes.
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Multiple transport support: AG-UI, A2A, ACP
|
|
10
|
-
* - Hybrid tool execution (frontend/backend)
|
|
11
|
-
* - Human-in-the-loop (HITL) tool approval
|
|
12
|
-
* - Middleware pipeline for extensibility
|
|
13
|
-
* - Extension registry for custom renderers
|
|
14
|
-
* - Primer React UI components
|
|
15
|
-
* - Zustand state management (NO provider required!)
|
|
16
|
-
*
|
|
17
|
-
* @module components/chat
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```tsx
|
|
21
|
-
* import {
|
|
22
|
-
* useChatStore,
|
|
23
|
-
* ChatSidebar,
|
|
24
|
-
* useFrontendTool,
|
|
25
|
-
* DatalayerInferenceProvider,
|
|
26
|
-
* } from './chat';
|
|
27
|
-
*
|
|
28
|
-
* // Setup inference provider (once at app init)
|
|
29
|
-
* const provider = new DatalayerInferenceProvider({
|
|
30
|
-
* apiKey: 'your-api-key',
|
|
31
|
-
* baseUrl: 'https://api.datalayer.io',
|
|
32
|
-
* });
|
|
33
|
-
* useChatStore.getState().setInferenceProvider(provider);
|
|
34
|
-
*
|
|
35
|
-
* function App() {
|
|
36
|
-
* return (
|
|
37
|
-
* <>
|
|
38
|
-
* <ToolRegistrar />
|
|
39
|
-
* <ChatSidebar title="Assistant" />
|
|
40
|
-
* </>
|
|
41
|
-
* );
|
|
42
|
-
* }
|
|
43
|
-
*
|
|
44
|
-
* function ToolRegistrar() {
|
|
45
|
-
* useFrontendTool({
|
|
46
|
-
* name: 'greet',
|
|
47
|
-
* description: 'Greet a user',
|
|
48
|
-
* parameters: [{ name: 'name', type: 'string', required: true }],
|
|
49
|
-
* handler: async ({ name }) => ({ greeting: `Hello, ${name}!` }),
|
|
50
|
-
* });
|
|
51
|
-
* return null;
|
|
52
|
-
* }
|
|
53
|
-
* ```
|
|
54
|
-
*/
|
|
55
|
-
// Types
|
|
56
|
-
export * from './types';
|
|
57
|
-
// Store (primary state management - no provider needed!)
|
|
58
|
-
export { useChatStore, useChatMessages, useChatLoading, useChatStreaming, useChatError, useChatTools, useChatOpen, useChatConfig, useChatReady, useChatInferenceProvider, useChatExtensionRegistry, defaultChatConfig, } from './store';
|
|
59
|
-
// Hooks (re-exported from main hooks folder)
|
|
60
|
-
export { useChat, useFrontendTool, useBackendTool, ActionRegistrar, } from '../../hooks';
|
|
61
|
-
// Inference Providers
|
|
62
|
-
export { BaseInferenceProvider, DatalayerInferenceProvider, SelfHostedInferenceProvider, } from './inference';
|
|
63
|
-
// Protocol Adapters
|
|
64
|
-
export { BaseProtocolAdapter, AGUIAdapter, A2AAdapter, ACPAdapter, } from './protocols';
|
|
65
|
-
// Tools
|
|
66
|
-
export { ToolExecutor } from './tools';
|
|
67
|
-
// Middleware
|
|
68
|
-
export { MiddlewarePipeline, createMiddleware, loggingMiddleware, createHITLMiddleware, } from './middleware';
|
|
69
|
-
// Extensions
|
|
70
|
-
export { ExtensionRegistry, createMessageRenderer, createActivityRenderer, createA2UIRenderer, A2UIExtensionImpl, } from './extensions';
|
|
71
|
-
// Components
|
|
72
|
-
export { ChatMessages, ChatSidebar, ChatStandalone, ChatBase, InputPrompt, ToolApprovalDialog, useToolApprovalDialog, PoweredByTag, FloatingBrandButton, ChatHeader, MessagePart, TextPart, ReasoningPart, ToolPart, DynamicToolPart, ToolCallDisplay, Chat, ChatFloating, AgentDetails, AgentIdentity, IdentityCard, getTokenStatus, formatDuration, formatExpirationStatus, } from './components';
|
|
73
|
-
// Simple API request handler (merged from chat)
|
|
74
|
-
export { requestAPI } from './handler';
|
|
75
|
-
// Keyboard shortcuts (re-exported from main hooks folder)
|
|
76
|
-
export { useKeyboardShortcuts, useChatKeyboardShortcuts, getShortcutDisplay, } from '../../hooks';
|
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { generateMessageId, createAssistantMessage } from '../types/message';
|
|
6
|
-
import { BaseProtocolAdapter } from './BaseProtocolAdapter';
|
|
7
|
-
/**
|
|
8
|
-
* Vercel AI protocol adapter
|
|
9
|
-
* Uses HTTP POST with SSE streaming for responses
|
|
10
|
-
* Compatible with Pydantic AI's Vercel AI Data Stream Protocol
|
|
11
|
-
*/
|
|
12
|
-
export class VercelAIAdapter extends BaseProtocolAdapter {
|
|
13
|
-
type = 'vercel-ai';
|
|
14
|
-
transport = 'sse';
|
|
15
|
-
vercelConfig;
|
|
16
|
-
abortController = null;
|
|
17
|
-
currentRequestId = null;
|
|
18
|
-
constructor(config) {
|
|
19
|
-
super(config);
|
|
20
|
-
this.vercelConfig = config;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Connect to Vercel AI endpoint (SSE doesn't require persistent connection)
|
|
24
|
-
*/
|
|
25
|
-
async connect() {
|
|
26
|
-
this.setConnectionState('connecting');
|
|
27
|
-
// Vercel AI uses SSE, no persistent connection needed
|
|
28
|
-
// Just mark as connected
|
|
29
|
-
this.setConnectionState('connected');
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Disconnect and terminate any ongoing request
|
|
33
|
-
*/
|
|
34
|
-
disconnect() {
|
|
35
|
-
this.abortController?.abort();
|
|
36
|
-
this.abortController = null;
|
|
37
|
-
// Send terminate request to backend if we have a request ID
|
|
38
|
-
if (this.currentRequestId) {
|
|
39
|
-
this.terminateRequest(this.currentRequestId).catch(err => {
|
|
40
|
-
console.warn('[VercelAIAdapter] Failed to terminate request:', err);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
this.setConnectionState('disconnected');
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Terminate a running request on the backend
|
|
47
|
-
*/
|
|
48
|
-
async terminateRequest(requestId) {
|
|
49
|
-
try {
|
|
50
|
-
// Derive the terminate endpoint from the base URL
|
|
51
|
-
const baseUrl = new URL(this.vercelConfig.baseUrl);
|
|
52
|
-
const terminateUrl = `${baseUrl.origin}/api/v1/vercel-ai/terminate`;
|
|
53
|
-
const response = await fetch(terminateUrl, {
|
|
54
|
-
method: 'POST',
|
|
55
|
-
headers: {
|
|
56
|
-
'Content-Type': 'application/json',
|
|
57
|
-
},
|
|
58
|
-
body: JSON.stringify({
|
|
59
|
-
request_id: requestId || this.currentRequestId,
|
|
60
|
-
}),
|
|
61
|
-
});
|
|
62
|
-
if (!response.ok) {
|
|
63
|
-
console.warn(`[VercelAIAdapter] Terminate request failed: ${response.status}`);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
// Consume the response (terminate result)
|
|
67
|
-
await response.json();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// Ignore errors - request may have already completed
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Send a message using Vercel AI Data Stream Protocol
|
|
76
|
-
*/
|
|
77
|
-
async sendMessage(message, options) {
|
|
78
|
-
if (this.abortController) {
|
|
79
|
-
this.abortController.abort();
|
|
80
|
-
}
|
|
81
|
-
this.abortController = new AbortController();
|
|
82
|
-
// Generate request ID for tracking
|
|
83
|
-
const requestId = options?.threadId || generateMessageId();
|
|
84
|
-
this.currentRequestId = requestId;
|
|
85
|
-
try {
|
|
86
|
-
// Extract the message content as a string
|
|
87
|
-
const messageContent = typeof message.content === 'string'
|
|
88
|
-
? message.content
|
|
89
|
-
: String(message.content);
|
|
90
|
-
// Build single message in Vercel AI SDK format
|
|
91
|
-
const vercelMessage = {
|
|
92
|
-
id: message.id,
|
|
93
|
-
role: message.role,
|
|
94
|
-
parts: [
|
|
95
|
-
{
|
|
96
|
-
type: 'text',
|
|
97
|
-
text: messageContent,
|
|
98
|
-
},
|
|
99
|
-
],
|
|
100
|
-
};
|
|
101
|
-
// Build Vercel AI request
|
|
102
|
-
const requestBody = {
|
|
103
|
-
id: requestId, // Run ID for tracking
|
|
104
|
-
messages: [vercelMessage],
|
|
105
|
-
trigger: 'submit-message',
|
|
106
|
-
// Optional fields based on Pydantic AI's Vercel adapter
|
|
107
|
-
...(options?.tools && { tools: options.tools }),
|
|
108
|
-
// Model override for per-request model selection
|
|
109
|
-
...(options?.model && { model: options.model }),
|
|
110
|
-
// Builtin tools / MCP tools to enable
|
|
111
|
-
...(options?.builtinTools &&
|
|
112
|
-
options.builtinTools.length > 0 && {
|
|
113
|
-
builtinTools: options.builtinTools,
|
|
114
|
-
}),
|
|
115
|
-
// Skills to enable
|
|
116
|
-
...(options?.skills &&
|
|
117
|
-
options.skills.length > 0 && {
|
|
118
|
-
skills: options.skills,
|
|
119
|
-
}),
|
|
120
|
-
// Connected identities with access tokens
|
|
121
|
-
...(options?.identities &&
|
|
122
|
-
options.identities.length > 0 && {
|
|
123
|
-
identities: options.identities,
|
|
124
|
-
}),
|
|
125
|
-
};
|
|
126
|
-
if (options?.model) {
|
|
127
|
-
console.log('[VercelAIAdapter] Sending with model:', options.model);
|
|
128
|
-
}
|
|
129
|
-
if (options?.builtinTools && options.builtinTools.length > 0) {
|
|
130
|
-
console.log('[VercelAIAdapter] Sending with builtinTools:', options.builtinTools);
|
|
131
|
-
}
|
|
132
|
-
if (options?.skills && options.skills.length > 0) {
|
|
133
|
-
console.log('[VercelAIAdapter] Sending with skills:', options.skills);
|
|
134
|
-
}
|
|
135
|
-
if (options?.identities && options.identities.length > 0) {
|
|
136
|
-
console.log('[VercelAIAdapter] Sending with identities:', options.identities.map(i => i.provider));
|
|
137
|
-
}
|
|
138
|
-
// Merge custom headers with defaults
|
|
139
|
-
const headers = {
|
|
140
|
-
'Content-Type': 'application/json',
|
|
141
|
-
Accept: 'text/event-stream',
|
|
142
|
-
...this.vercelConfig.headers,
|
|
143
|
-
};
|
|
144
|
-
// Add auth token if provided
|
|
145
|
-
if (this.vercelConfig.authToken) {
|
|
146
|
-
headers['Authorization'] = `token ${this.vercelConfig.authToken}`;
|
|
147
|
-
}
|
|
148
|
-
const response = await fetch(this.vercelConfig.baseUrl, {
|
|
149
|
-
method: 'POST',
|
|
150
|
-
headers,
|
|
151
|
-
body: JSON.stringify(requestBody),
|
|
152
|
-
signal: this.abortController.signal,
|
|
153
|
-
mode: this.vercelConfig.fetchOptions?.mode,
|
|
154
|
-
credentials: this.vercelConfig.fetchOptions?.credentials,
|
|
155
|
-
});
|
|
156
|
-
if (!response.ok) {
|
|
157
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
158
|
-
}
|
|
159
|
-
if (!response.body) {
|
|
160
|
-
throw new Error('Response body is null');
|
|
161
|
-
}
|
|
162
|
-
// Parse SSE stream
|
|
163
|
-
await this.parseSSEStream(response.body);
|
|
164
|
-
}
|
|
165
|
-
catch (error) {
|
|
166
|
-
if (error.name !== 'AbortError') {
|
|
167
|
-
console.error('[VercelAIAdapter] Send error:', error);
|
|
168
|
-
throw error;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
finally {
|
|
172
|
-
this.abortController = null;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Parse SSE stream from Vercel AI
|
|
177
|
-
*/
|
|
178
|
-
async parseSSEStream(stream) {
|
|
179
|
-
const reader = stream.getReader();
|
|
180
|
-
const decoder = new TextDecoder();
|
|
181
|
-
let buffer = '';
|
|
182
|
-
let currentMessageId = generateMessageId();
|
|
183
|
-
let accumulatedText = '';
|
|
184
|
-
try {
|
|
185
|
-
while (true) {
|
|
186
|
-
const { done, value } = await reader.read();
|
|
187
|
-
if (done) {
|
|
188
|
-
// Stream ended - emit final message if we have accumulated text
|
|
189
|
-
if (accumulatedText) {
|
|
190
|
-
const message = createAssistantMessage(accumulatedText);
|
|
191
|
-
message.id = currentMessageId;
|
|
192
|
-
this.emit({
|
|
193
|
-
type: 'message',
|
|
194
|
-
message,
|
|
195
|
-
timestamp: new Date(),
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
break;
|
|
199
|
-
}
|
|
200
|
-
buffer += decoder.decode(value, { stream: true });
|
|
201
|
-
const lines = buffer.split('\n');
|
|
202
|
-
buffer = lines.pop() || '';
|
|
203
|
-
for (const line of lines) {
|
|
204
|
-
if (!line.trim() || line.startsWith(':')) {
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
// Log raw line for debugging
|
|
208
|
-
console.debug('[VercelAIAdapter] SSE line:', line);
|
|
209
|
-
if (line.startsWith('data: ')) {
|
|
210
|
-
const data = line.slice(6);
|
|
211
|
-
if (data === '[DONE]') {
|
|
212
|
-
// Stream complete
|
|
213
|
-
if (accumulatedText) {
|
|
214
|
-
const message = createAssistantMessage(accumulatedText);
|
|
215
|
-
message.id = currentMessageId;
|
|
216
|
-
this.emit({
|
|
217
|
-
type: 'message',
|
|
218
|
-
message,
|
|
219
|
-
timestamp: new Date(),
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
try {
|
|
225
|
-
const event = JSON.parse(data);
|
|
226
|
-
console.debug('[VercelAIAdapter] Parsed event:', event);
|
|
227
|
-
// Handle Vercel AI event types
|
|
228
|
-
// Server sends: {"type":"text-delta","delta":"Hello","id":"..."}
|
|
229
|
-
if (event.type === 'text-delta' && event.delta) {
|
|
230
|
-
accumulatedText += event.delta;
|
|
231
|
-
// Emit 'message' event with accumulated content for useChat
|
|
232
|
-
const message = createAssistantMessage(accumulatedText);
|
|
233
|
-
message.id = currentMessageId;
|
|
234
|
-
this.emit({
|
|
235
|
-
type: 'message',
|
|
236
|
-
message,
|
|
237
|
-
timestamp: new Date(),
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
else if (event.type === 'text-start') {
|
|
241
|
-
// New text block starting
|
|
242
|
-
currentMessageId = event.id || generateMessageId();
|
|
243
|
-
accumulatedText = '';
|
|
244
|
-
}
|
|
245
|
-
else if (event.type === 'finish' || event.type === 'end-step') {
|
|
246
|
-
if (accumulatedText) {
|
|
247
|
-
const message = createAssistantMessage(accumulatedText);
|
|
248
|
-
message.id = currentMessageId;
|
|
249
|
-
this.emit({
|
|
250
|
-
type: 'message',
|
|
251
|
-
message,
|
|
252
|
-
timestamp: new Date(),
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
// Extract and emit usage data from finish events
|
|
256
|
-
if (event.usage) {
|
|
257
|
-
const usage = event.usage;
|
|
258
|
-
this.emit({
|
|
259
|
-
type: 'message',
|
|
260
|
-
usage: {
|
|
261
|
-
promptTokens: usage.promptTokens ?? 0,
|
|
262
|
-
completionTokens: usage.completionTokens ?? 0,
|
|
263
|
-
totalTokens: usage.totalTokens ??
|
|
264
|
-
(usage.promptTokens ?? 0) +
|
|
265
|
-
(usage.completionTokens ?? 0),
|
|
266
|
-
},
|
|
267
|
-
timestamp: new Date(),
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
else if (event.type === 'error') {
|
|
272
|
-
const errorMessage = event.error ||
|
|
273
|
-
event.errorText ||
|
|
274
|
-
event.message ||
|
|
275
|
-
event.detail ||
|
|
276
|
-
'Unknown server error';
|
|
277
|
-
console.error('[VercelAIAdapter] Server error event:', event);
|
|
278
|
-
this.emit({
|
|
279
|
-
type: 'error',
|
|
280
|
-
error: new Error(errorMessage),
|
|
281
|
-
timestamp: new Date(),
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
catch (parseError) {
|
|
286
|
-
console.error('[VercelAIAdapter] Failed to parse SSE data:', parseError);
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
finally {
|
|
293
|
-
reader.releaseLock();
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* Send tool result (not supported in Vercel AI adapter)
|
|
298
|
-
*/
|
|
299
|
-
async sendToolResult(_toolCallId, _result) {
|
|
300
|
-
throw new Error('Tool result not supported in Vercel AI adapter');
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Request permission (not supported in Vercel AI)
|
|
304
|
-
*/
|
|
305
|
-
async requestPermission(_permission) {
|
|
306
|
-
return true;
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Stop generation
|
|
310
|
-
*/
|
|
311
|
-
stopGeneration() {
|
|
312
|
-
this.abortController?.abort();
|
|
313
|
-
this.abortController = null;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool exports for chat component.
|
|
3
|
-
*
|
|
4
|
-
* @module components/chat/tools
|
|
5
|
-
*/
|
|
6
|
-
export { ToolExecutor, createToolExecutor, type ToolExecutionContext, } from './ToolExecutor';
|
|
7
|
-
export type { ToolDefinition, FrontendToolDefinition, BackendToolDefinition, ToolLocation, ToolParameter, ToolRenderStatus, ToolRenderProps, ToolRenderAndWaitProps, ToolCallRequest, ToolExecutionResult, ToolRegistryEntry, } from '../types/tool';
|
|
8
|
-
export { isFrontendTool, isBackendTool, hasHitlRender } from '../types/tool';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Tool exports for chat component.
|
|
7
|
-
*
|
|
8
|
-
* @module components/chat/tools
|
|
9
|
-
*/
|
|
10
|
-
export { ToolExecutor, createToolExecutor, } from './ToolExecutor';
|
|
11
|
-
export { isFrontendTool, isBackendTool, hasHitlRender } from '../types/tool';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core types for chat component.
|
|
3
|
-
*
|
|
4
|
-
* @module components/chat/types
|
|
5
|
-
*/
|
|
6
|
-
export * from './message';
|
|
7
|
-
export * from './tool';
|
|
8
|
-
export * from './inference';
|
|
9
|
-
export * from './protocol';
|
|
10
|
-
export * from './middleware';
|
|
11
|
-
export * from './extension';
|
|
12
|
-
export * from './execution';
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Core types for chat component.
|
|
7
|
-
*
|
|
8
|
-
* @module components/chat/types
|
|
9
|
-
*/
|
|
10
|
-
// Re-export all types
|
|
11
|
-
export * from './message';
|
|
12
|
-
export * from './tool';
|
|
13
|
-
export * from './inference';
|
|
14
|
-
export * from './protocol';
|
|
15
|
-
export * from './middleware';
|
|
16
|
-
export * from './extension';
|
|
17
|
-
export * from './execution';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { SparklinesProps } from './types';
|
|
3
|
-
/**
|
|
4
|
-
* Sparklines Component
|
|
5
|
-
*
|
|
6
|
-
* A lightweight, composable sparkline chart component.
|
|
7
|
-
* Renders an SVG container and processes data into points for child components.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```tsx
|
|
11
|
-
* <Sparklines data={[1, 2, 3, 4, 5]} width={100} height={30}>
|
|
12
|
-
* <SparklinesLine color="#0969da" />
|
|
13
|
-
* </Sparklines>
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
export declare const Sparklines: React.FC<SparklinesProps>;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2025-2026 Datalayer, Inc.
|
|
4
|
-
* Distributed under the terms of the Modified BSD License.
|
|
5
|
-
*/
|
|
6
|
-
import React, { useMemo } from 'react';
|
|
7
|
-
import { dataToPoints } from './dataProcessing';
|
|
8
|
-
/**
|
|
9
|
-
* Sparklines Component
|
|
10
|
-
*
|
|
11
|
-
* A lightweight, composable sparkline chart component.
|
|
12
|
-
* Renders an SVG container and processes data into points for child components.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```tsx
|
|
16
|
-
* <Sparklines data={[1, 2, 3, 4, 5]} width={100} height={30}>
|
|
17
|
-
* <SparklinesLine color="#0969da" />
|
|
18
|
-
* </Sparklines>
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export const Sparklines = ({ data = [], width = 240, height = 60, svgWidth, svgHeight, preserveAspectRatio = 'none', margin = 2, style, min, max, limit, children, }) => {
|
|
22
|
-
// Convert data to points
|
|
23
|
-
const points = useMemo(() => {
|
|
24
|
-
if (data.length === 0) {
|
|
25
|
-
return [];
|
|
26
|
-
}
|
|
27
|
-
return dataToPoints({
|
|
28
|
-
data,
|
|
29
|
-
limit,
|
|
30
|
-
width,
|
|
31
|
-
height,
|
|
32
|
-
margin,
|
|
33
|
-
max,
|
|
34
|
-
min,
|
|
35
|
-
});
|
|
36
|
-
}, [data, limit, width, height, margin, max, min]);
|
|
37
|
-
if (data.length === 0) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
// Build SVG props
|
|
41
|
-
const svgProps = {
|
|
42
|
-
style,
|
|
43
|
-
viewBox: `0 0 ${width} ${height}`,
|
|
44
|
-
preserveAspectRatio,
|
|
45
|
-
};
|
|
46
|
-
if (svgWidth && svgWidth > 0) {
|
|
47
|
-
svgProps.width = svgWidth;
|
|
48
|
-
}
|
|
49
|
-
if (svgHeight && svgHeight > 0) {
|
|
50
|
-
svgProps.height = svgHeight;
|
|
51
|
-
}
|
|
52
|
-
return (_jsx("svg", { ...svgProps, children: React.Children.map(children, child => {
|
|
53
|
-
if (React.isValidElement(child)) {
|
|
54
|
-
return React.cloneElement(child, {
|
|
55
|
-
data,
|
|
56
|
-
points,
|
|
57
|
-
width,
|
|
58
|
-
height,
|
|
59
|
-
margin,
|
|
60
|
-
...child.props,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return child;
|
|
64
|
-
}) }));
|
|
65
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Sparklines Line Component
|
|
4
|
-
*
|
|
5
|
-
* Renders a line chart within a Sparklines container.
|
|
6
|
-
*/
|
|
7
|
-
export const SparklinesLine = ({ points = [], height = 60, margin = 2, color = '#0969da', style = {}, }) => {
|
|
8
|
-
if (!points || points.length === 0) {
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
// Convert points to polyline format
|
|
12
|
-
const linePoints = points.map(p => `${p.x},${p.y}`).join(' ');
|
|
13
|
-
// Create fill area by closing the path
|
|
14
|
-
const closePolyPoints = [
|
|
15
|
-
{ x: points[points.length - 1].x, y: height - margin },
|
|
16
|
-
{ x: margin, y: height - margin },
|
|
17
|
-
{ x: margin, y: points[0].y },
|
|
18
|
-
];
|
|
19
|
-
const fillPoints = points
|
|
20
|
-
.concat(closePolyPoints)
|
|
21
|
-
.map(p => `${p.x},${p.y}`)
|
|
22
|
-
.join(' ');
|
|
23
|
-
const lineStyle = {
|
|
24
|
-
stroke: color || style.stroke || 'slategray',
|
|
25
|
-
strokeWidth: style.strokeWidth || '1.5',
|
|
26
|
-
strokeLinejoin: 'round',
|
|
27
|
-
strokeLinecap: 'round',
|
|
28
|
-
fill: 'none',
|
|
29
|
-
};
|
|
30
|
-
const fillStyle = {
|
|
31
|
-
stroke: 'none',
|
|
32
|
-
strokeWidth: '0',
|
|
33
|
-
fillOpacity: style.fillOpacity || '0.1',
|
|
34
|
-
fill: style.fill || color || 'slategray',
|
|
35
|
-
};
|
|
36
|
-
return (_jsxs("g", { children: [_jsx("polyline", { points: fillPoints, style: fillStyle }), _jsx("polyline", { points: linePoints, style: lineStyle })] }));
|
|
37
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get minimum value from array
|
|
3
|
-
*/
|
|
4
|
-
export declare const min: (data: number[]) => number;
|
|
5
|
-
/**
|
|
6
|
-
* Get maximum value from array
|
|
7
|
-
*/
|
|
8
|
-
export declare const max: (data: number[]) => number;
|
|
9
|
-
/**
|
|
10
|
-
* Convert data array to SVG points
|
|
11
|
-
*/
|
|
12
|
-
export interface DataToPointsOptions {
|
|
13
|
-
data: number[];
|
|
14
|
-
limit?: number;
|
|
15
|
-
width?: number;
|
|
16
|
-
height?: number;
|
|
17
|
-
margin?: number;
|
|
18
|
-
max?: number;
|
|
19
|
-
min?: number;
|
|
20
|
-
}
|
|
21
|
-
export interface Point {
|
|
22
|
-
x: number;
|
|
23
|
-
y: number;
|
|
24
|
-
}
|
|
25
|
-
export declare const dataToPoints: ({ data, limit, width, height, margin, max: maxVal, min: minVal, }: DataToPointsOptions) => Point[];
|