@solidxai/core-ui 0.1.19-beta.0 → 0.1.19-beta.1
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 +19 -0
- package/dist/components/common/SolidPopupContainer.d.ts.map +1 -1
- package/dist/components/common/SolidPopupContainer.js +3 -2
- package/dist/components/common/SolidPopupContainer.js.map +1 -1
- package/dist/components/common/SolidPopupContainer.tsx +3 -2
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +4 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +11 -5
- package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatter.js +2 -1
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +2 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +2 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js +7 -4
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +8 -3
- package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts +5 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts.map +1 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.js +85 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.js.map +1 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.tsx +59 -0
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +6 -5
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +6 -5
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts +11 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js +102 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.tsx +129 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js +29 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.module.css +226 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.tsx +57 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +33 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +47 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts +5 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js +59 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.tsx +82 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts +17 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js +258 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx +286 -0
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +102 -62
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +116 -106
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts +6 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js +37 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.tsx +89 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts +3 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js +18 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.tsx +51 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts +10 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js +63 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.tsx +111 -0
- package/dist/components/core/field/FieldListViewData.d.ts.map +1 -1
- package/dist/components/core/field/FieldListViewData.js +29 -9
- package/dist/components/core/field/FieldListViewData.js.map +1 -1
- package/dist/components/core/field/FieldListViewData.tsx +7 -6
- package/dist/components/core/form/SolidFormView.d.ts +1 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +49 -48
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +4 -3
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.js +13 -1
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.tsx +14 -3
- package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +5 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +3 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +5 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +31 -11
- package/dist/components/core/kanban/KanbanColumn.d.ts +5 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +14 -3
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +43 -3
- package/dist/components/core/kanban/SolidKanbanView.d.ts +2 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +90 -52
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +93 -13
- package/dist/components/core/list/SolidDataTable.d.ts +2 -1
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +2 -2
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +3 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +114 -57
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +71 -7
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +14 -0
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +13 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js +51 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js.map +1 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.tsx +60 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts +4 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js +24 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.tsx +32 -0
- package/dist/components/core/model/ModelListViewData.d.ts.map +1 -1
- package/dist/components/core/model/ModelListViewData.js +6 -23
- package/dist/components/core/model/ModelListViewData.js.map +1 -1
- package/dist/components/core/model/ModelListViewData.tsx +1 -48
- package/dist/components/core/solid-agent/AgentModelIndicator.d.ts +5 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.d.ts.map +1 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.js +14 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.js.map +1 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.tsx +40 -0
- package/dist/components/core/solid-agent/AgentSignIn.d.ts +12 -0
- package/dist/components/core/solid-agent/AgentSignIn.d.ts.map +1 -0
- package/dist/components/core/solid-agent/AgentSignIn.js +82 -0
- package/dist/components/core/solid-agent/AgentSignIn.js.map +1 -0
- package/dist/components/core/solid-agent/AgentSignIn.tsx +91 -0
- package/dist/components/core/solid-agent/SolidAgent.module.css +596 -0
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts +30 -0
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentChat.js +300 -0
- package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentChat.tsx +451 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +44 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.js +46 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +87 -0
- package/dist/components/core/solid-agent/SolidAgentHost.d.ts +8 -0
- package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentHost.js +152 -0
- package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentHost.tsx +164 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts +16 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js +161 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +133 -0
- package/dist/components/core/solid-agent/SolidAgentMount.d.ts +3 -0
- package/dist/components/core/solid-agent/SolidAgentMount.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMount.js +62 -0
- package/dist/components/core/solid-agent/SolidAgentMount.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMount.tsx +31 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.d.ts +5 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.js +7 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.js.map +1 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.tsx +6 -0
- package/dist/components/core/solid-agent/agentAttachments.d.ts +20 -0
- package/dist/components/core/solid-agent/agentAttachments.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentAttachments.js +184 -0
- package/dist/components/core/solid-agent/agentAttachments.js.map +1 -0
- package/dist/components/core/solid-agent/agentAttachments.ts +119 -0
- package/dist/components/core/solid-agent/agentEvents.d.ts +34 -0
- package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentEvents.js +282 -0
- package/dist/components/core/solid-agent/agentEvents.js.map +1 -0
- package/dist/components/core/solid-agent/agentEvents.ts +292 -0
- package/dist/components/core/solid-agent/agentFormat.d.ts +18 -0
- package/dist/components/core/solid-agent/agentFormat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentFormat.js +179 -0
- package/dist/components/core/solid-agent/agentFormat.js.map +1 -0
- package/dist/components/core/solid-agent/agentFormat.ts +160 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts +9 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.js +129 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.ts +69 -0
- package/dist/components/core/solid-agent/client/agentAuth.d.ts +63 -0
- package/dist/components/core/solid-agent/client/agentAuth.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentAuth.js +307 -0
- package/dist/components/core/solid-agent/client/agentAuth.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentAuth.ts +222 -0
- package/dist/components/core/solid-agent/client/agentRest.d.ts +30 -0
- package/dist/components/core/solid-agent/client/agentRest.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentRest.js +178 -0
- package/dist/components/core/solid-agent/client/agentRest.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentRest.ts +100 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts +48 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentRuntime.js +406 -0
- package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentRuntime.ts +226 -0
- package/dist/components/core/solid-agent/client/agentSocket.d.ts +46 -0
- package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentSocket.js +535 -0
- package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentSocket.ts +276 -0
- package/dist/components/core/solid-agent/client/agentUrls.d.ts +11 -0
- package/dist/components/core/solid-agent/client/agentUrls.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentUrls.js +18 -0
- package/dist/components/core/solid-agent/client/agentUrls.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentUrls.ts +19 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.d.ts +21 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.d.ts.map +1 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.js +219 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.js.map +1 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.tsx +241 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts +8 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +87 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +58 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +20 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +103 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +60 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +11 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +21 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +266 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts +15 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts.map +1 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.js +122 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.js.map +1 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.ts +64 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.d.ts +39 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.d.ts.map +1 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.js +44 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.js.map +1 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.ts +56 -0
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts +17 -0
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/AgentThread.js +166 -0
- package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -0
- package/dist/components/core/solid-agent/thread/AgentThread.tsx +248 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +36 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +148 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +116 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.d.ts +8 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.js +30 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.js.map +1 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.ts +27 -0
- package/dist/components/core/solid-agent/types.d.ts +155 -0
- package/dist/components/core/solid-agent/types.d.ts.map +1 -0
- package/dist/components/core/solid-agent/types.js +31 -0
- package/dist/components/core/solid-agent/types.js.map +1 -0
- package/dist/components/core/solid-agent/types.ts +148 -0
- package/dist/components/core/solid-agent/useAdminInputContext.d.ts +4 -0
- package/dist/components/core/solid-agent/useAdminInputContext.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAdminInputContext.js +49 -0
- package/dist/components/core/solid-agent/useAdminInputContext.js.map +1 -0
- package/dist/components/core/solid-agent/useAdminInputContext.ts +52 -0
- package/dist/components/core/solid-agent/useAgentAuth.d.ts +14 -0
- package/dist/components/core/solid-agent/useAgentAuth.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentAuth.js +88 -0
- package/dist/components/core/solid-agent/useAgentAuth.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentAuth.ts +40 -0
- package/dist/components/core/solid-agent/useAgentAvailability.d.ts +19 -0
- package/dist/components/core/solid-agent/useAgentAvailability.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentAvailability.js +109 -0
- package/dist/components/core/solid-agent/useAgentAvailability.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentAvailability.ts +80 -0
- package/dist/components/core/solid-agent/useAgentChat.d.ts +22 -0
- package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentChat.js +45 -0
- package/dist/components/core/solid-agent/useAgentChat.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentChat.ts +57 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +24 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +28 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +20 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +8 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +11 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +16 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +67 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +135 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +24 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +17 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts +8 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +30 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +77 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +40 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +57 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +13 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +19 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +55 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +81 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +30 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +21 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +21 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +33 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +11 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +9 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts +15 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +26 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +42 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +41 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +69 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +23 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +40 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +32 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +55 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +17 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +31 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts +12 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js +17 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.ts +19 -0
- package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +909 -0
- package/dist/components/core/solid-ai/SolidAiChat.js +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.js.map +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.tsx +2 -2
- package/dist/components/layout/AdminLayout.d.ts.map +1 -1
- package/dist/components/layout/AdminLayout.js +2 -1
- package/dist/components/layout/AdminLayout.js.map +1 -1
- package/dist/components/layout/AdminLayout.tsx +2 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +2 -2
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +19 -15
- package/dist/components/shad-cn-ui/SolidDialog.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.js +2 -2
- package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.tsx +3 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.d.ts +7 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.js +43 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.tsx +73 -0
- package/dist/components/shad-cn-ui/index.d.ts +1 -0
- package/dist/components/shad-cn-ui/index.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/index.js +1 -0
- package/dist/components/shad-cn-ui/index.js.map +1 -1
- package/dist/components/shad-cn-ui/index.ts +1 -0
- package/dist/constants/allowed-ai-models.d.ts +8 -0
- package/dist/constants/allowed-ai-models.d.ts.map +1 -0
- package/dist/constants/allowed-ai-models.js +33 -0
- package/dist/constants/allowed-ai-models.js.map +1 -0
- package/dist/constants/allowed-ai-models.ts +39 -0
- package/dist/helpers/hydrateRelationRules.d.ts.map +1 -1
- package/dist/helpers/hydrateRelationRules.js +3 -1
- package/dist/helpers/hydrateRelationRules.js.map +1 -1
- package/dist/helpers/hydrateRelationRules.ts +5 -1
- package/dist/helpers/registry.d.ts +4 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +75 -12
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +73 -16
- package/dist/helpers/updatePasswordField.d.ts.map +1 -1
- package/dist/helpers/updatePasswordField.js +21 -15
- package/dist/helpers/updatePasswordField.js.map +1 -1
- package/dist/helpers/updatePasswordField.ts +6 -1
- package/dist/index.d.ts +21 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/index.ts +34 -3
- package/dist/redux/api/fieldApi.js +1 -1
- package/dist/redux/api/fieldApi.js.map +1 -1
- package/dist/redux/api/fieldApi.ts +2 -2
- package/dist/redux/api/modelApi.d.ts +13 -13
- package/dist/redux/api/modelApi.d.ts.map +1 -1
- package/dist/redux/api/modelApi.js +15 -15
- package/dist/redux/api/modelApi.js.map +1 -1
- package/dist/redux/api/modelApi.ts +12 -15
- package/dist/redux/features/agentSlice.d.ts +34 -0
- package/dist/redux/features/agentSlice.d.ts.map +1 -0
- package/dist/redux/features/agentSlice.js +92 -0
- package/dist/redux/features/agentSlice.js.map +1 -0
- package/dist/redux/features/agentSlice.ts +119 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +11 -10
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +2 -0
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +2 -0
- package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
- package/dist/redux/store/solidEntityApiPool.js +7 -0
- package/dist/redux/store/solidEntityApiPool.js.map +1 -1
- package/dist/redux/store/solidEntityApiPool.ts +6 -0
- package/dist/resources/globals.css +109 -1
- package/dist/resources/solid-custom.css +295 -0
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.css +47 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts +12 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js +80 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.tsx +123 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +110 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +702 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +630 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.css +303 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +330 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +460 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +125 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +295 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +275 -0
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +11 -11
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +15 -15
- package/dist/routes/pages/embed/AgentEmbedPage.d.ts +3 -0
- package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -0
- package/dist/routes/pages/embed/AgentEmbedPage.js +170 -0
- package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -0
- package/dist/routes/pages/embed/AgentEmbedPage.module.css +195 -0
- package/dist/routes/pages/embed/AgentEmbedPage.tsx +169 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +8 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +8 -0
- package/dist/types/extension-registry.d.ts +4 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js +7 -0
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +7 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/list-row-action.d.ts +2 -0
- package/dist/types/list-row-action.d.ts.map +1 -1
- package/dist/types/list-row-action.js.map +1 -1
- package/dist/types/list-row-action.ts +3 -0
- package/dist/types/solid-core.d.ts +36 -0
- package/package.json +1 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import React, { useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
2
|
+
import { CheckCircle2, ChevronDown, LoaderCircle } from "lucide-react";
|
|
3
|
+
import styles from "../SolidAgent.module.css";
|
|
4
|
+
import widgetStyles from "../widgets/solidChatWidgets.module.css";
|
|
5
|
+
import { SolidXAIIcon } from "../SolidXAIIcon";
|
|
6
|
+
import { AgentEventTypes, type AgentChatItem, type AgentContext } from "../types";
|
|
7
|
+
import { SolidAgentChatItem } from "./SolidAgentChatItem";
|
|
8
|
+
|
|
9
|
+
type Props = {
|
|
10
|
+
items: AgentChatItem[];
|
|
11
|
+
thinking: boolean;
|
|
12
|
+
working?: boolean;
|
|
13
|
+
hasMore: boolean;
|
|
14
|
+
context?: AgentContext;
|
|
15
|
+
emptyState?: React.ReactNode;
|
|
16
|
+
onLoadOlder: () => void;
|
|
17
|
+
onReply: (widgetId: string, widget: string, value: unknown) => void;
|
|
18
|
+
onPrompt: (text: string) => void;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
type ItemGroup = { kind: "user"; item: AgentChatItem } | { kind: "agent"; key: string; items: AgentChatItem[] };
|
|
22
|
+
|
|
23
|
+
const isUserItem = (item: AgentChatItem) => item.eventType === AgentEventTypes.userMessage && !item.widget;
|
|
24
|
+
const ASSISTANT_MESSAGE_TYPES = new Set<string>([
|
|
25
|
+
AgentEventTypes.llmToken,
|
|
26
|
+
AgentEventTypes.llmComplete,
|
|
27
|
+
AgentEventTypes.turnComplete,
|
|
28
|
+
AgentEventTypes.turnCompleteLegacy,
|
|
29
|
+
]);
|
|
30
|
+
|
|
31
|
+
const isAssistantMessage = (item: AgentChatItem) => !item.widget && ASSISTANT_MESSAGE_TYPES.has(item.eventType);
|
|
32
|
+
|
|
33
|
+
/** Consecutive agent items form one turn (one avatar); each user message stands alone. */
|
|
34
|
+
function groupItems(items: AgentChatItem[]): ItemGroup[] {
|
|
35
|
+
const groups: ItemGroup[] = [];
|
|
36
|
+
let turn: AgentChatItem[] = [];
|
|
37
|
+
let turnKey = "initial-agent-turn";
|
|
38
|
+
const flush = () => {
|
|
39
|
+
if (turn.length) groups.push({ kind: "agent", key: turnKey, items: turn });
|
|
40
|
+
turn = [];
|
|
41
|
+
};
|
|
42
|
+
for (const item of items) {
|
|
43
|
+
if (isUserItem(item)) {
|
|
44
|
+
flush();
|
|
45
|
+
groups.push({ kind: "user", item });
|
|
46
|
+
turnKey = `after-${item.id}`;
|
|
47
|
+
} else {
|
|
48
|
+
turn.push(item);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
flush();
|
|
52
|
+
return groups;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function AgentActivityDisclosure({
|
|
56
|
+
turnKey,
|
|
57
|
+
items,
|
|
58
|
+
detailItems,
|
|
59
|
+
working,
|
|
60
|
+
showSummary,
|
|
61
|
+
renderItem,
|
|
62
|
+
}: {
|
|
63
|
+
turnKey: string;
|
|
64
|
+
items: AgentChatItem[];
|
|
65
|
+
detailItems: AgentChatItem[];
|
|
66
|
+
working: boolean;
|
|
67
|
+
showSummary: boolean;
|
|
68
|
+
renderItem: (item: AgentChatItem) => React.ReactNode;
|
|
69
|
+
}) {
|
|
70
|
+
const [expanded, setExpanded] = useState(false);
|
|
71
|
+
const [now, setNow] = useState(() => Date.now());
|
|
72
|
+
const hasLiveTimer = useRef(working);
|
|
73
|
+
const startTime = useRef(working ? Date.now() : (items[0]?.at || Date.now()));
|
|
74
|
+
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (!working) {
|
|
77
|
+
if (hasLiveTimer.current) setNow(Date.now());
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
hasLiveTimer.current = true;
|
|
81
|
+
const timer = window.setInterval(() => setNow(Date.now()), 1000);
|
|
82
|
+
return () => window.clearInterval(timer);
|
|
83
|
+
}, [working]);
|
|
84
|
+
|
|
85
|
+
const toolCount = items.filter((item) => item.eventType === AgentEventTypes.toolCalling).length;
|
|
86
|
+
const activeDuration = Math.max(0, Math.floor((now - startTime.current) / 1000));
|
|
87
|
+
const recordedDuration = items.length > 1
|
|
88
|
+
? Math.max(0, Math.floor((items[items.length - 1].at - items[0].at) / 1000))
|
|
89
|
+
: 0;
|
|
90
|
+
const seconds = hasLiveTimer.current ? activeDuration : recordedDuration;
|
|
91
|
+
const durationLabel = `${seconds}s`;
|
|
92
|
+
const summary = working
|
|
93
|
+
? `Working · ${toolCount ? `${toolCount} tool${toolCount === 1 ? "" : "s"} · ` : ""}${durationLabel}`
|
|
94
|
+
: toolCount
|
|
95
|
+
? `${toolCount} tool${toolCount === 1 ? "" : "s"} called · took ${durationLabel}`
|
|
96
|
+
: `Activity · took ${durationLabel}`;
|
|
97
|
+
const panelId = `agent-activity-${turnKey.replace(/[^a-zA-Z0-9_-]/g, "-")}`;
|
|
98
|
+
|
|
99
|
+
return (
|
|
100
|
+
<section className={`${widgetStyles.ActivityGroup} ${showSummary ? "" : widgetStyles.ActivityTimerOnly}`} aria-label={showSummary ? "Agent activity" : undefined}>
|
|
101
|
+
{showSummary && (
|
|
102
|
+
<>
|
|
103
|
+
{detailItems.length > 0 ? <button
|
|
104
|
+
type="button"
|
|
105
|
+
className={widgetStyles.ActivitySummary}
|
|
106
|
+
aria-expanded={expanded}
|
|
107
|
+
aria-controls={panelId}
|
|
108
|
+
onClick={() => setExpanded((value) => !value)}
|
|
109
|
+
>
|
|
110
|
+
{working
|
|
111
|
+
? <LoaderCircle size={15} className={widgetStyles.ActivitySpinner} aria-hidden="true" />
|
|
112
|
+
: <CheckCircle2 size={15} className={widgetStyles.ActivityComplete} aria-hidden="true" />}
|
|
113
|
+
<span className={widgetStyles.ActivitySummaryText}>{summary}</span>
|
|
114
|
+
<ChevronDown size={15} className={`${widgetStyles.ActivityChevron} ${expanded ? widgetStyles.ActivityChevronOpen : ""}`} aria-hidden="true" />
|
|
115
|
+
</button> : <div className={widgetStyles.ActivitySummary} role="status">
|
|
116
|
+
{working
|
|
117
|
+
? <LoaderCircle size={15} className={widgetStyles.ActivitySpinner} aria-hidden="true" />
|
|
118
|
+
: <CheckCircle2 size={15} className={widgetStyles.ActivityComplete} aria-hidden="true" />}
|
|
119
|
+
<span className={widgetStyles.ActivitySummaryText}>{summary}</span>
|
|
120
|
+
</div>}
|
|
121
|
+
{expanded && (
|
|
122
|
+
<div id={panelId} className={widgetStyles.ActivityDetails}>
|
|
123
|
+
{detailItems.map(renderItem)}
|
|
124
|
+
</div>
|
|
125
|
+
)}
|
|
126
|
+
</>
|
|
127
|
+
)}
|
|
128
|
+
</section>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** Renders thread items; sticks to the bottom while new content streams unless the user scrolled up. */
|
|
133
|
+
export function AgentThread({ items, thinking, working = thinking, hasMore, context, emptyState, onLoadOlder, onReply, onPrompt }: Props) {
|
|
134
|
+
const scrollRef = useRef<HTMLDivElement>(null);
|
|
135
|
+
const pinned = useRef(true);
|
|
136
|
+
const prevHeight = useRef(0);
|
|
137
|
+
const prevFirstId = useRef<string | undefined>(undefined);
|
|
138
|
+
|
|
139
|
+
useLayoutEffect(() => {
|
|
140
|
+
const el = scrollRef.current;
|
|
141
|
+
if (!el) return;
|
|
142
|
+
const firstId = items[0]?.id;
|
|
143
|
+
if (prevFirstId.current && firstId !== prevFirstId.current && prevHeight.current) {
|
|
144
|
+
// Older history was prepended: keep the viewport where it was.
|
|
145
|
+
el.scrollTop = el.scrollHeight - prevHeight.current;
|
|
146
|
+
} else if (pinned.current) {
|
|
147
|
+
el.scrollTop = el.scrollHeight;
|
|
148
|
+
}
|
|
149
|
+
prevFirstId.current = firstId;
|
|
150
|
+
prevHeight.current = el.scrollHeight;
|
|
151
|
+
}, [items]);
|
|
152
|
+
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
const el = scrollRef.current;
|
|
155
|
+
if (!el) return;
|
|
156
|
+
const onScroll = () => {
|
|
157
|
+
pinned.current = el.scrollHeight - el.scrollTop - el.clientHeight < 48;
|
|
158
|
+
prevHeight.current = el.scrollHeight;
|
|
159
|
+
};
|
|
160
|
+
el.addEventListener("scroll", onScroll, { passive: true });
|
|
161
|
+
return () => el.removeEventListener("scroll", onScroll);
|
|
162
|
+
}, []);
|
|
163
|
+
|
|
164
|
+
if (!items.length && !thinking && emptyState) {
|
|
165
|
+
return <div className={styles.thread}>{emptyState}</div>;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const groups = groupItems(items);
|
|
169
|
+
const lastGroup = groups[groups.length - 1];
|
|
170
|
+
if (working && (!lastGroup || lastGroup.kind === "user")) {
|
|
171
|
+
groups.push({
|
|
172
|
+
kind: "agent",
|
|
173
|
+
key: lastGroup?.kind === "user" ? `after-${lastGroup.item.id}` : "working-turn",
|
|
174
|
+
items: [],
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
const renderItem = (item: AgentChatItem) => (
|
|
178
|
+
<SolidAgentChatItem key={item.id} item={item} agentContext={context} onReply={onReply} onPrompt={onPrompt} />
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
return (
|
|
182
|
+
<div ref={scrollRef} className={styles.thread} role="log" aria-live="polite" aria-relevant="additions">
|
|
183
|
+
{hasMore && (
|
|
184
|
+
<button type="button" className={`${styles.btn} ${styles.loadMore}`} onClick={onLoadOlder}>
|
|
185
|
+
Load earlier messages
|
|
186
|
+
</button>
|
|
187
|
+
)}
|
|
188
|
+
{groups.map((group) => {
|
|
189
|
+
if (group.kind === "user") return renderItem(group.item);
|
|
190
|
+
|
|
191
|
+
const isCurrentTurn = working && group === groups[groups.length - 1];
|
|
192
|
+
const latestTool = isCurrentTurn
|
|
193
|
+
? [...group.items].reverse().find((item) => item.eventType === AgentEventTypes.toolCalling && item.live)
|
|
194
|
+
: undefined;
|
|
195
|
+
const currentActivity = latestTool ?? (isCurrentTurn
|
|
196
|
+
? [...group.items].reverse().find((item) => item.eventType === AgentEventTypes.toolCalling)
|
|
197
|
+
: undefined);
|
|
198
|
+
const activityItems = group.items.filter((item) => !isAssistantMessage(item));
|
|
199
|
+
const detailItems = activityItems.filter((item) => item !== currentActivity);
|
|
200
|
+
const activitySet = new Set(group.items.filter((item) => !isAssistantMessage(item)));
|
|
201
|
+
const showIdleThinkingStatus = isCurrentTurn && thinking && activityItems.length === 0;
|
|
202
|
+
let activityRendered = false;
|
|
203
|
+
const turnContent = [
|
|
204
|
+
...(showIdleThinkingStatus ? [
|
|
205
|
+
<AgentActivityDisclosure
|
|
206
|
+
key={`activity-${group.key}`}
|
|
207
|
+
turnKey={group.key}
|
|
208
|
+
items={activityItems}
|
|
209
|
+
detailItems={detailItems}
|
|
210
|
+
working={isCurrentTurn}
|
|
211
|
+
showSummary
|
|
212
|
+
renderItem={renderItem}
|
|
213
|
+
/>,
|
|
214
|
+
] : []),
|
|
215
|
+
...group.items.flatMap((item) => {
|
|
216
|
+
if (activitySet.has(item)) {
|
|
217
|
+
if (activityRendered) return [];
|
|
218
|
+
activityRendered = true;
|
|
219
|
+
return [
|
|
220
|
+
<AgentActivityDisclosure
|
|
221
|
+
key={`activity-${group.key}`}
|
|
222
|
+
turnKey={group.key}
|
|
223
|
+
items={activityItems}
|
|
224
|
+
detailItems={detailItems}
|
|
225
|
+
working={isCurrentTurn}
|
|
226
|
+
showSummary={detailItems.length > 0 || currentActivity !== undefined}
|
|
227
|
+
renderItem={renderItem}
|
|
228
|
+
/>,
|
|
229
|
+
...(currentActivity ? [renderItem(currentActivity)] : []),
|
|
230
|
+
];
|
|
231
|
+
}
|
|
232
|
+
if (item === currentActivity) return [];
|
|
233
|
+
return [renderItem(item)];
|
|
234
|
+
}),
|
|
235
|
+
];
|
|
236
|
+
|
|
237
|
+
return (
|
|
238
|
+
<div key={group.key} className={widgetStyles.AiTurnGroup}>
|
|
239
|
+
<div className={`${widgetStyles.Avatar} ${widgetStyles.AvatarAi}`}>
|
|
240
|
+
<SolidXAIIcon size={14} />
|
|
241
|
+
</div>
|
|
242
|
+
<div className={widgetStyles.AiTurnContent}>{turnContent}</div>
|
|
243
|
+
</div>
|
|
244
|
+
);
|
|
245
|
+
})}
|
|
246
|
+
</div>
|
|
247
|
+
);
|
|
248
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { type AgentChatItem, type AgentContext } from "../types";
|
|
3
|
+
export { parseWidgetContent, type InlineChatWidget } from "./inlineWidget";
|
|
4
|
+
/** Registry name of the widget that renders an event when `event_data.widget` is absent. */
|
|
5
|
+
export declare const getDefaultChatWidgetName: (eventType: string) => string;
|
|
6
|
+
type ErrorBoundaryProps = {
|
|
7
|
+
widget: string;
|
|
8
|
+
eventData: Record<string, any>;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
};
|
|
11
|
+
type ErrorBoundaryState = {
|
|
12
|
+
error: Error | null;
|
|
13
|
+
};
|
|
14
|
+
/** Keeps a throwing widget inside its own bubble; the rest of the thread keeps working. */
|
|
15
|
+
export declare class SolidChatWidgetErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
16
|
+
state: ErrorBoundaryState;
|
|
17
|
+
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
18
|
+
componentDidCatch(error: Error): void;
|
|
19
|
+
componentDidUpdate(prev: ErrorBoundaryProps): void;
|
|
20
|
+
render(): string | number | boolean | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode> | null | undefined;
|
|
21
|
+
}
|
|
22
|
+
type SolidAgentChatItemProps = {
|
|
23
|
+
item: AgentChatItem;
|
|
24
|
+
agentContext?: AgentContext;
|
|
25
|
+
onReply: (widgetId: string, widget: string, value: unknown) => void;
|
|
26
|
+
onPrompt: (text: string) => void;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Renders one thread item. The widget named in `event_data.widget` wins; then a widget the agent
|
|
30
|
+
* sent as its text reply (`{"widgetName", "data"}`, see parseWidgetContent; a reply that does not
|
|
31
|
+
* parse renders as text, unchanged); otherwise the default widget for the event type. All resolve
|
|
32
|
+
* through the extension registry, so a UI module can register new chat widgets or override a
|
|
33
|
+
* default by registering the same name.
|
|
34
|
+
*/
|
|
35
|
+
export declare const SolidAgentChatItem: ({ item, agentContext, onReply, onPrompt }: SolidAgentChatItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
//# sourceMappingURL=SolidAgentChatItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidAgentChatItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/SolidAgentChatItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,4FAA4F;AAC5F,eAAO,MAAM,wBAAwB,cAAe,MAAM,KAAG,MAuB5D,CAAC;AAUF,KAAK,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AACxG,KAAK,kBAAkB,GAAG;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAAC;AAElD,2FAA2F;AAC3F,qBAAa,4BAA6B,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACrG,KAAK,EAAE,kBAAkB,CAAmB;IAE5C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIjE,iBAAiB,CAAC,KAAK,EAAE,KAAK;IAI9B,kBAAkB,CAAC,IAAI,EAAE,kBAAkB;IAK3C,MAAM;CAST;AAED,KAAK,uBAAuB,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,8CAA+C,uBAAuB,4CA2BpG,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
28
|
+
import React, { useMemo } from "react";
|
|
29
|
+
import { getExtensionComponent } from "../../../../helpers/registry";
|
|
30
|
+
import styles from "../SolidAgent.module.css";
|
|
31
|
+
import { AgentEventTypes } from "../types";
|
|
32
|
+
import { parseWidgetContent } from "./inlineWidget";
|
|
33
|
+
export { parseWidgetContent } from "./inlineWidget";
|
|
34
|
+
/** Registry name of the widget that renders an event when `event_data.widget` is absent. */
|
|
35
|
+
export var getDefaultChatWidgetName = function (eventType) {
|
|
36
|
+
switch (eventType) {
|
|
37
|
+
case AgentEventTypes.userMessage:
|
|
38
|
+
return "DefaultUserMessageChatWidget";
|
|
39
|
+
case AgentEventTypes.llmToken:
|
|
40
|
+
case AgentEventTypes.llmComplete:
|
|
41
|
+
case AgentEventTypes.turnComplete:
|
|
42
|
+
case AgentEventTypes.turnCompleteLegacy:
|
|
43
|
+
return "DefaultAssistantMessageChatWidget";
|
|
44
|
+
case AgentEventTypes.toolCalling:
|
|
45
|
+
return "DefaultToolCallChatWidget";
|
|
46
|
+
case AgentEventTypes.agentError:
|
|
47
|
+
case AgentEventTypes.error:
|
|
48
|
+
return "DefaultErrorChatWidget";
|
|
49
|
+
case AgentEventTypes.executionCancelled:
|
|
50
|
+
case AgentEventTypes.executionCancelledLegacy:
|
|
51
|
+
return "DefaultNoticeChatWidget";
|
|
52
|
+
case AgentEventTypes.agentStarted:
|
|
53
|
+
case AgentEventTypes.stepStarted:
|
|
54
|
+
return "DefaultThinkingChatWidget";
|
|
55
|
+
default:
|
|
56
|
+
return "DefaultUnknownChatWidget";
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
/** Assistant text events whose content may carry a widget as JSON (see parseWidgetContent). */
|
|
60
|
+
var TEXT_EVENT_TYPES = new Set([
|
|
61
|
+
AgentEventTypes.llmToken,
|
|
62
|
+
AgentEventTypes.llmComplete,
|
|
63
|
+
AgentEventTypes.turnComplete,
|
|
64
|
+
AgentEventTypes.turnCompleteLegacy,
|
|
65
|
+
]);
|
|
66
|
+
/** Keeps a throwing widget inside its own bubble; the rest of the thread keeps working. */
|
|
67
|
+
var SolidChatWidgetErrorBoundary = /** @class */ (function (_super) {
|
|
68
|
+
__extends(SolidChatWidgetErrorBoundary, _super);
|
|
69
|
+
function SolidChatWidgetErrorBoundary() {
|
|
70
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
71
|
+
Object.defineProperty(_this, "state", {
|
|
72
|
+
enumerable: true,
|
|
73
|
+
configurable: true,
|
|
74
|
+
writable: true,
|
|
75
|
+
value: { error: null }
|
|
76
|
+
});
|
|
77
|
+
return _this;
|
|
78
|
+
}
|
|
79
|
+
Object.defineProperty(SolidChatWidgetErrorBoundary, "getDerivedStateFromError", {
|
|
80
|
+
enumerable: false,
|
|
81
|
+
configurable: true,
|
|
82
|
+
writable: true,
|
|
83
|
+
value: function (error) {
|
|
84
|
+
return { error: error };
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
Object.defineProperty(SolidChatWidgetErrorBoundary.prototype, "componentDidCatch", {
|
|
88
|
+
enumerable: false,
|
|
89
|
+
configurable: true,
|
|
90
|
+
writable: true,
|
|
91
|
+
value: function (error) {
|
|
92
|
+
console.error("[solidAgent] chat widget \"".concat(this.props.widget, "\" failed to render"), error);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
Object.defineProperty(SolidChatWidgetErrorBoundary.prototype, "componentDidUpdate", {
|
|
96
|
+
enumerable: false,
|
|
97
|
+
configurable: true,
|
|
98
|
+
writable: true,
|
|
99
|
+
value: function (prev) {
|
|
100
|
+
// A later update of the same widget gets a fresh attempt.
|
|
101
|
+
if (this.state.error && prev.eventData !== this.props.eventData)
|
|
102
|
+
this.setState({ error: null });
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
Object.defineProperty(SolidChatWidgetErrorBoundary.prototype, "render", {
|
|
106
|
+
enumerable: false,
|
|
107
|
+
configurable: true,
|
|
108
|
+
writable: true,
|
|
109
|
+
value: function () {
|
|
110
|
+
if (!this.state.error)
|
|
111
|
+
return this.props.children;
|
|
112
|
+
return (_jsxs("div", { className: styles.widgetFallback, role: "alert", children: [_jsxs("span", { children: ["The \u201C", this.props.widget, "\u201D widget failed to render."] }), _jsx("pre", { className: styles.pre, style: { maxHeight: 180 }, children: JSON.stringify(this.props.eventData, null, 2) })] }));
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
return SolidChatWidgetErrorBoundary;
|
|
116
|
+
}(React.Component));
|
|
117
|
+
export { SolidChatWidgetErrorBoundary };
|
|
118
|
+
/**
|
|
119
|
+
* Renders one thread item. The widget named in `event_data.widget` wins; then a widget the agent
|
|
120
|
+
* sent as its text reply (`{"widgetName", "data"}`, see parseWidgetContent; a reply that does not
|
|
121
|
+
* parse renders as text, unchanged); otherwise the default widget for the event type. All resolve
|
|
122
|
+
* through the extension registry, so a UI module can register new chat widgets or override a
|
|
123
|
+
* default by registering the same name.
|
|
124
|
+
*/
|
|
125
|
+
export var SolidAgentChatItem = function (_a) {
|
|
126
|
+
var _b, _c, _d, _e, _f;
|
|
127
|
+
var item = _a.item, agentContext = _a.agentContext, onReply = _a.onReply, onPrompt = _a.onPrompt;
|
|
128
|
+
var isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);
|
|
129
|
+
var content = (_b = item.eventData) === null || _b === void 0 ? void 0 : _b.content;
|
|
130
|
+
var inline = useMemo(function () { return (isText ? parseWidgetContent(content) : null); }, [isText, content]);
|
|
131
|
+
var widgetName = (_d = (_c = item.widget) !== null && _c !== void 0 ? _c : inline === null || inline === void 0 ? void 0 : inline.widget) !== null && _d !== void 0 ? _d : getDefaultChatWidgetName(item.eventType);
|
|
132
|
+
var DynamicWidget = (_e = getExtensionComponent(widgetName)) !== null && _e !== void 0 ? _e : getExtensionComponent("DefaultUnknownChatWidget");
|
|
133
|
+
var widgetId = (_f = item.widgetId) !== null && _f !== void 0 ? _f : item.id;
|
|
134
|
+
var eventData = inline ? inline.data : item.eventData;
|
|
135
|
+
var widgetProps = {
|
|
136
|
+
eventType: item.eventType,
|
|
137
|
+
eventData: eventData,
|
|
138
|
+
widgetId: widgetId,
|
|
139
|
+
live: !!item.live,
|
|
140
|
+
final: !!item.final,
|
|
141
|
+
timestamp: item.at,
|
|
142
|
+
reply: function (value) { return onReply(widgetId, widgetName, value); },
|
|
143
|
+
sendPrompt: onPrompt,
|
|
144
|
+
agentContext: agentContext,
|
|
145
|
+
};
|
|
146
|
+
return (_jsx(SolidChatWidgetErrorBoundary, { widget: widgetName, eventData: eventData, children: DynamicWidget && _jsx(DynamicWidget, __assign({}, widgetProps)) }));
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=SolidAgentChatItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolidAgentChatItem.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/SolidAgentChatItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo } from \"react\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport styles from \"../SolidAgent.module.css\";\nimport { AgentEventTypes, type AgentChatItem, type AgentContext } from \"../types\";\nimport { parseWidgetContent } from \"./inlineWidget\";\n\nexport { parseWidgetContent, type InlineChatWidget } from \"./inlineWidget\";\n\n/** Registry name of the widget that renders an event when `event_data.widget` is absent. */\nexport const getDefaultChatWidgetName = (eventType: string): string => {\n switch (eventType) {\n case AgentEventTypes.userMessage:\n return \"DefaultUserMessageChatWidget\";\n case AgentEventTypes.llmToken:\n case AgentEventTypes.llmComplete:\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy:\n return \"DefaultAssistantMessageChatWidget\";\n case AgentEventTypes.toolCalling:\n return \"DefaultToolCallChatWidget\";\n case AgentEventTypes.agentError:\n case AgentEventTypes.error:\n return \"DefaultErrorChatWidget\";\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n return \"DefaultNoticeChatWidget\";\n case AgentEventTypes.agentStarted:\n case AgentEventTypes.stepStarted:\n return \"DefaultThinkingChatWidget\";\n default:\n return \"DefaultUnknownChatWidget\";\n }\n};\n\n/** Assistant text events whose content may carry a widget as JSON (see parseWidgetContent). */\nconst TEXT_EVENT_TYPES = new Set<string>([\n AgentEventTypes.llmToken,\n AgentEventTypes.llmComplete,\n AgentEventTypes.turnComplete,\n AgentEventTypes.turnCompleteLegacy,\n]);\n\ntype ErrorBoundaryProps = { widget: string; eventData: Record<string, any>; children: React.ReactNode };\ntype ErrorBoundaryState = { error: Error | null };\n\n/** Keeps a throwing widget inside its own bubble; the rest of the thread keeps working. */\nexport class SolidChatWidgetErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n componentDidCatch(error: Error) {\n console.error(`[solidAgent] chat widget \"${this.props.widget}\" failed to render`, error);\n }\n\n componentDidUpdate(prev: ErrorBoundaryProps) {\n // A later update of the same widget gets a fresh attempt.\n if (this.state.error && prev.eventData !== this.props.eventData) this.setState({ error: null });\n }\n\n render() {\n if (!this.state.error) return this.props.children;\n return (\n <div className={styles.widgetFallback} role=\"alert\">\n <span>The “{this.props.widget}” widget failed to render.</span>\n <pre className={styles.pre} style={{ maxHeight: 180 }}>{JSON.stringify(this.props.eventData, null, 2)}</pre>\n </div>\n );\n }\n}\n\ntype SolidAgentChatItemProps = {\n item: AgentChatItem;\n agentContext?: AgentContext;\n onReply: (widgetId: string, widget: string, value: unknown) => void;\n onPrompt: (text: string) => void;\n};\n\n/**\n * Renders one thread item. The widget named in `event_data.widget` wins; then a widget the agent\n * sent as its text reply (`{\"widgetName\", \"data\"}`, see parseWidgetContent; a reply that does not\n * parse renders as text, unchanged); otherwise the default widget for the event type. All resolve\n * through the extension registry, so a UI module can register new chat widgets or override a\n * default by registering the same name.\n */\nexport const SolidAgentChatItem = ({ item, agentContext, onReply, onPrompt }: SolidAgentChatItemProps) => {\n const isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);\n const content = item.eventData?.content;\n const inline = useMemo(() => (isText ? parseWidgetContent(content) : null), [isText, content]);\n\n const widgetName = item.widget ?? inline?.widget ?? getDefaultChatWidgetName(item.eventType);\n const DynamicWidget = getExtensionComponent(widgetName) ?? getExtensionComponent(\"DefaultUnknownChatWidget\");\n const widgetId = item.widgetId ?? item.id;\n const eventData = inline ? inline.data : item.eventData;\n\n const widgetProps: SolidChatWidgetProps = {\n eventType: item.eventType,\n eventData,\n widgetId,\n live: !!item.live,\n final: !!item.final,\n timestamp: item.at,\n reply: (value: unknown) => onReply(widgetId, widgetName, value),\n sendPrompt: onPrompt,\n agentContext,\n };\n\n return (\n <SolidChatWidgetErrorBoundary widget={widgetName} eventData={eventData}>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </SolidChatWidgetErrorBoundary>\n );\n};\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import React, { useMemo } from "react";
|
|
2
|
+
import { getExtensionComponent } from "../../../../helpers/registry";
|
|
3
|
+
import { SolidChatWidgetProps } from "../../../../types/solid-core";
|
|
4
|
+
import styles from "../SolidAgent.module.css";
|
|
5
|
+
import { AgentEventTypes, type AgentChatItem, type AgentContext } from "../types";
|
|
6
|
+
import { parseWidgetContent } from "./inlineWidget";
|
|
7
|
+
|
|
8
|
+
export { parseWidgetContent, type InlineChatWidget } from "./inlineWidget";
|
|
9
|
+
|
|
10
|
+
/** Registry name of the widget that renders an event when `event_data.widget` is absent. */
|
|
11
|
+
export const getDefaultChatWidgetName = (eventType: string): string => {
|
|
12
|
+
switch (eventType) {
|
|
13
|
+
case AgentEventTypes.userMessage:
|
|
14
|
+
return "DefaultUserMessageChatWidget";
|
|
15
|
+
case AgentEventTypes.llmToken:
|
|
16
|
+
case AgentEventTypes.llmComplete:
|
|
17
|
+
case AgentEventTypes.turnComplete:
|
|
18
|
+
case AgentEventTypes.turnCompleteLegacy:
|
|
19
|
+
return "DefaultAssistantMessageChatWidget";
|
|
20
|
+
case AgentEventTypes.toolCalling:
|
|
21
|
+
return "DefaultToolCallChatWidget";
|
|
22
|
+
case AgentEventTypes.agentError:
|
|
23
|
+
case AgentEventTypes.error:
|
|
24
|
+
return "DefaultErrorChatWidget";
|
|
25
|
+
case AgentEventTypes.executionCancelled:
|
|
26
|
+
case AgentEventTypes.executionCancelledLegacy:
|
|
27
|
+
return "DefaultNoticeChatWidget";
|
|
28
|
+
case AgentEventTypes.agentStarted:
|
|
29
|
+
case AgentEventTypes.stepStarted:
|
|
30
|
+
return "DefaultThinkingChatWidget";
|
|
31
|
+
default:
|
|
32
|
+
return "DefaultUnknownChatWidget";
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/** Assistant text events whose content may carry a widget as JSON (see parseWidgetContent). */
|
|
37
|
+
const TEXT_EVENT_TYPES = new Set<string>([
|
|
38
|
+
AgentEventTypes.llmToken,
|
|
39
|
+
AgentEventTypes.llmComplete,
|
|
40
|
+
AgentEventTypes.turnComplete,
|
|
41
|
+
AgentEventTypes.turnCompleteLegacy,
|
|
42
|
+
]);
|
|
43
|
+
|
|
44
|
+
type ErrorBoundaryProps = { widget: string; eventData: Record<string, any>; children: React.ReactNode };
|
|
45
|
+
type ErrorBoundaryState = { error: Error | null };
|
|
46
|
+
|
|
47
|
+
/** Keeps a throwing widget inside its own bubble; the rest of the thread keeps working. */
|
|
48
|
+
export class SolidChatWidgetErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
49
|
+
state: ErrorBoundaryState = { error: null };
|
|
50
|
+
|
|
51
|
+
static getDerivedStateFromError(error: Error): ErrorBoundaryState {
|
|
52
|
+
return { error };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
componentDidCatch(error: Error) {
|
|
56
|
+
console.error(`[solidAgent] chat widget "${this.props.widget}" failed to render`, error);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
componentDidUpdate(prev: ErrorBoundaryProps) {
|
|
60
|
+
// A later update of the same widget gets a fresh attempt.
|
|
61
|
+
if (this.state.error && prev.eventData !== this.props.eventData) this.setState({ error: null });
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
render() {
|
|
65
|
+
if (!this.state.error) return this.props.children;
|
|
66
|
+
return (
|
|
67
|
+
<div className={styles.widgetFallback} role="alert">
|
|
68
|
+
<span>The “{this.props.widget}” widget failed to render.</span>
|
|
69
|
+
<pre className={styles.pre} style={{ maxHeight: 180 }}>{JSON.stringify(this.props.eventData, null, 2)}</pre>
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
type SolidAgentChatItemProps = {
|
|
76
|
+
item: AgentChatItem;
|
|
77
|
+
agentContext?: AgentContext;
|
|
78
|
+
onReply: (widgetId: string, widget: string, value: unknown) => void;
|
|
79
|
+
onPrompt: (text: string) => void;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Renders one thread item. The widget named in `event_data.widget` wins; then a widget the agent
|
|
84
|
+
* sent as its text reply (`{"widgetName", "data"}`, see parseWidgetContent; a reply that does not
|
|
85
|
+
* parse renders as text, unchanged); otherwise the default widget for the event type. All resolve
|
|
86
|
+
* through the extension registry, so a UI module can register new chat widgets or override a
|
|
87
|
+
* default by registering the same name.
|
|
88
|
+
*/
|
|
89
|
+
export const SolidAgentChatItem = ({ item, agentContext, onReply, onPrompt }: SolidAgentChatItemProps) => {
|
|
90
|
+
const isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);
|
|
91
|
+
const content = item.eventData?.content;
|
|
92
|
+
const inline = useMemo(() => (isText ? parseWidgetContent(content) : null), [isText, content]);
|
|
93
|
+
|
|
94
|
+
const widgetName = item.widget ?? inline?.widget ?? getDefaultChatWidgetName(item.eventType);
|
|
95
|
+
const DynamicWidget = getExtensionComponent(widgetName) ?? getExtensionComponent("DefaultUnknownChatWidget");
|
|
96
|
+
const widgetId = item.widgetId ?? item.id;
|
|
97
|
+
const eventData = inline ? inline.data : item.eventData;
|
|
98
|
+
|
|
99
|
+
const widgetProps: SolidChatWidgetProps = {
|
|
100
|
+
eventType: item.eventType,
|
|
101
|
+
eventData,
|
|
102
|
+
widgetId,
|
|
103
|
+
live: !!item.live,
|
|
104
|
+
final: !!item.final,
|
|
105
|
+
timestamp: item.at,
|
|
106
|
+
reply: (value: unknown) => onReply(widgetId, widgetName, value),
|
|
107
|
+
sendPrompt: onPrompt,
|
|
108
|
+
agentContext,
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
return (
|
|
112
|
+
<SolidChatWidgetErrorBoundary widget={widgetName} eventData={eventData}>
|
|
113
|
+
{DynamicWidget && <DynamicWidget {...widgetProps} />}
|
|
114
|
+
</SolidChatWidgetErrorBoundary>
|
|
115
|
+
);
|
|
116
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** A widget the agent sent as its text reply: `{"widgetName": "...", "data": {...} | "<json>"}`. */
|
|
2
|
+
export type InlineChatWidget = {
|
|
3
|
+
widget: string;
|
|
4
|
+
data: Record<string, any>;
|
|
5
|
+
};
|
|
6
|
+
/** Returns the widget in a reply, or null when the reply is not that JSON (it then renders as text). */
|
|
7
|
+
export declare function parseWidgetContent(content: unknown): InlineChatWidget | null;
|
|
8
|
+
//# sourceMappingURL=inlineWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/inlineWidget.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAAC;AAE7E,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAsB5E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Returns the widget in a reply, or null when the reply is not that JSON (it then renders as text). */
|
|
2
|
+
export function parseWidgetContent(content) {
|
|
3
|
+
if (typeof content !== "string")
|
|
4
|
+
return null;
|
|
5
|
+
try {
|
|
6
|
+
var parsed = JSON.parse(content);
|
|
7
|
+
if (typeof (parsed === null || parsed === void 0 ? void 0 : parsed.widgetName) !== "string")
|
|
8
|
+
return null;
|
|
9
|
+
var data = parsed.data;
|
|
10
|
+
if (typeof data === "string") {
|
|
11
|
+
try {
|
|
12
|
+
data = JSON.parse(data);
|
|
13
|
+
}
|
|
14
|
+
catch (_a) {
|
|
15
|
+
// Assistant markdown envelopes carry the markdown itself as a string.
|
|
16
|
+
if (parsed.widgetName === "markdown")
|
|
17
|
+
data = { text: data };
|
|
18
|
+
else
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (!data || typeof data !== "object" || Array.isArray(data))
|
|
23
|
+
return null;
|
|
24
|
+
return { widget: parsed.widgetName, data: data };
|
|
25
|
+
}
|
|
26
|
+
catch (_b) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=inlineWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlineWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/inlineWidget.ts"],"names":[],"mappings":"AAGA,wGAAwG;AACxG,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IAC/C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI;QACA,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAA,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAExD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC1B,IAAI;gBACA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC3B;YAAC,WAAM;gBACJ,sEAAsE;gBACtE,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU;oBAAE,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;oBACvD,OAAO,IAAI,CAAC;aACpB;SACJ;QAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,MAAA,EAAE,CAAC;KAC9C;IAAC,WAAM;QACJ,OAAO,IAAI,CAAC;KACf;AACL,CAAC","sourcesContent":["/** A widget the agent sent as its text reply: `{\"widgetName\": \"...\", \"data\": {...} | \"<json>\"}`. */\nexport type InlineChatWidget = { widget: string; data: Record<string, any> };\n\n/** Returns the widget in a reply, or null when the reply is not that JSON (it then renders as text). */\nexport function parseWidgetContent(content: unknown): InlineChatWidget | null {\n if (typeof content !== \"string\") return null;\n try {\n const parsed = JSON.parse(content);\n if (typeof parsed?.widgetName !== \"string\") return null;\n\n let data = parsed.data;\n if (typeof data === \"string\") {\n try {\n data = JSON.parse(data);\n } catch {\n // Assistant markdown envelopes carry the markdown itself as a string.\n if (parsed.widgetName === \"markdown\") data = { text: data };\n else return null;\n }\n }\n\n if (!data || typeof data !== \"object\" || Array.isArray(data)) return null;\n return { widget: parsed.widgetName, data };\n } catch {\n return null;\n }\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** A widget the agent sent as its text reply: `{"widgetName": "...", "data": {...} | "<json>"}`. */
|
|
2
|
+
export type InlineChatWidget = { widget: string; data: Record<string, any> };
|
|
3
|
+
|
|
4
|
+
/** Returns the widget in a reply, or null when the reply is not that JSON (it then renders as text). */
|
|
5
|
+
export function parseWidgetContent(content: unknown): InlineChatWidget | null {
|
|
6
|
+
if (typeof content !== "string") return null;
|
|
7
|
+
try {
|
|
8
|
+
const parsed = JSON.parse(content);
|
|
9
|
+
if (typeof parsed?.widgetName !== "string") return null;
|
|
10
|
+
|
|
11
|
+
let data = parsed.data;
|
|
12
|
+
if (typeof data === "string") {
|
|
13
|
+
try {
|
|
14
|
+
data = JSON.parse(data);
|
|
15
|
+
} catch {
|
|
16
|
+
// Assistant markdown envelopes carry the markdown itself as a string.
|
|
17
|
+
if (parsed.widgetName === "markdown") data = { text: data };
|
|
18
|
+
else return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!data || typeof data !== "object" || Array.isArray(data)) return null;
|
|
23
|
+
return { widget: parsed.widgetName, data };
|
|
24
|
+
} catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|