@solidxai/core-ui 0.1.19-beta.0 → 0.1.19
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,34 @@
|
|
|
1
|
+
import { type AgentChatEvent, type AgentChatItem, type AgentCommand, type AgentWireFrame } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Turns agent events into thread items. Used by agentSlice for live socket frames and by the
|
|
4
|
+
* history loader for stored events, so both render identically.
|
|
5
|
+
*
|
|
6
|
+
* Rule: if `event_data.widget` is present the event becomes (or updates) a widget item rendered
|
|
7
|
+
* by that registered widget; otherwise the `event_type` switch below decides what, if anything,
|
|
8
|
+
* to add, and the thread renders it with the default widget for its type.
|
|
9
|
+
*/
|
|
10
|
+
/** The slice of chat state this reducer reads and writes (agentSlice state satisfies it). */
|
|
11
|
+
export type AgentThreadState = {
|
|
12
|
+
items: AgentChatItem[];
|
|
13
|
+
sessionId: string | null;
|
|
14
|
+
historySessionId: string | null;
|
|
15
|
+
commands: AgentCommand[];
|
|
16
|
+
working: boolean;
|
|
17
|
+
thinking: boolean;
|
|
18
|
+
authError: string | null;
|
|
19
|
+
liveToolId: string | null;
|
|
20
|
+
streamingId: string | null;
|
|
21
|
+
turnStreamed: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare function createThreadState(): AgentThreadState;
|
|
24
|
+
/** Accepts `{ event_type, event_data }` (current) and `{ type, data }` (legacy) frames. */
|
|
25
|
+
export declare function normalizeAgentFrame(frame: AgentWireFrame): AgentChatEvent;
|
|
26
|
+
export declare const nextItemId: (prefix: string) => string;
|
|
27
|
+
/**
|
|
28
|
+
* Applies one event. `replay` is true when rebuilding from stored history: user messages then
|
|
29
|
+
* come from the event stream (live ones are added locally when the user sends them).
|
|
30
|
+
*/
|
|
31
|
+
export declare function applyAgentEvent(state: AgentThreadState, event: AgentChatEvent, replay?: boolean, at?: number): void;
|
|
32
|
+
/** Rebuilds thread items from stored session events (`/api/agent/sessions/{id}/messages`). */
|
|
33
|
+
export declare function historyToItems(rows: any[]): AgentChatItem[];
|
|
34
|
+
//# sourceMappingURL=agentEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentEvents.d.ts","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/agentEvents.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAE3H;;;;;;;GAOG;AAEH,6FAA6F;AAC7F,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,gBAAgB,CAapD;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAKzE;AAGD,eAAO,MAAM,UAAU,WAAY,MAAM,WAAuC,CAAC;AA0DjF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAQ,EAAE,EAAE,SAAa,QAsK9G;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,aAAa,EAAE,CAU3D"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
import { describeToolArgs, isLlmMetadata, parseToolResult } from "./agentFormat";
|
|
22
|
+
import { AgentEventTypes } from "./types";
|
|
23
|
+
export function createThreadState() {
|
|
24
|
+
return {
|
|
25
|
+
items: [],
|
|
26
|
+
sessionId: null,
|
|
27
|
+
historySessionId: null,
|
|
28
|
+
commands: [],
|
|
29
|
+
working: false,
|
|
30
|
+
thinking: false,
|
|
31
|
+
authError: null,
|
|
32
|
+
liveToolId: null,
|
|
33
|
+
streamingId: null,
|
|
34
|
+
turnStreamed: false,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/** Accepts `{ event_type, event_data }` (current) and `{ type, data }` (legacy) frames. */
|
|
38
|
+
export function normalizeAgentFrame(frame) {
|
|
39
|
+
var _a, _b, _c, _d;
|
|
40
|
+
var eventType = (_b = (_a = frame.event_type) !== null && _a !== void 0 ? _a : frame.type) !== null && _b !== void 0 ? _b : "";
|
|
41
|
+
var raw = (_d = (_c = frame.event_data) !== null && _c !== void 0 ? _c : frame.data) !== null && _d !== void 0 ? _d : {};
|
|
42
|
+
var eventData = typeof raw === "object" && raw !== null ? raw : { value: raw };
|
|
43
|
+
return { eventType: eventType, eventData: eventData, frame: frame };
|
|
44
|
+
}
|
|
45
|
+
var seq = 0;
|
|
46
|
+
export var nextItemId = function (prefix) { return "".concat(prefix, "-").concat(Date.now(), "-").concat(++seq); };
|
|
47
|
+
function findItem(state, id) {
|
|
48
|
+
var _a;
|
|
49
|
+
return id ? (_a = state.items.find(function (item) { return item.id === id; })) !== null && _a !== void 0 ? _a : null : null;
|
|
50
|
+
}
|
|
51
|
+
function freezeLiveTool(state) {
|
|
52
|
+
var tool = findItem(state, state.liveToolId);
|
|
53
|
+
if (tool)
|
|
54
|
+
tool.live = false;
|
|
55
|
+
state.liveToolId = null;
|
|
56
|
+
}
|
|
57
|
+
function stopStreaming(state) {
|
|
58
|
+
var streaming = findItem(state, state.streamingId);
|
|
59
|
+
if (streaming)
|
|
60
|
+
streaming.live = false;
|
|
61
|
+
state.streamingId = null;
|
|
62
|
+
}
|
|
63
|
+
function endTurn(state) {
|
|
64
|
+
freezeLiveTool(state);
|
|
65
|
+
stopStreaming(state);
|
|
66
|
+
state.working = false;
|
|
67
|
+
state.thinking = false;
|
|
68
|
+
}
|
|
69
|
+
function lastAssistantText(state) {
|
|
70
|
+
for (var i = state.items.length - 1; i >= 0; i--) {
|
|
71
|
+
var item = state.items[i];
|
|
72
|
+
if (item.eventType === AgentEventTypes.llmComplete && !item.widget)
|
|
73
|
+
return item.eventData.content;
|
|
74
|
+
if (item.eventType === AgentEventTypes.userMessage)
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
function pushAssistantText(state, content, at) {
|
|
80
|
+
freezeLiveTool(state);
|
|
81
|
+
state.items.push({ id: nextItemId("llm"), at: at, eventType: AgentEventTypes.llmComplete, eventData: { content: content } });
|
|
82
|
+
}
|
|
83
|
+
/** Adds or updates the widget item named by `event_data.widget`. */
|
|
84
|
+
function applyWidgetEvent(state, event, at) {
|
|
85
|
+
var _a, _b;
|
|
86
|
+
var eventType = event.eventType, eventData = event.eventData;
|
|
87
|
+
var widgetId = (_b = (_a = eventData.widgetId) !== null && _a !== void 0 ? _a : eventData.widget_id) !== null && _b !== void 0 ? _b : nextItemId(eventType || "widget");
|
|
88
|
+
var existing = state.items.find(function (item) { return item.widgetId === widgetId; });
|
|
89
|
+
if (existing) {
|
|
90
|
+
if (existing.final)
|
|
91
|
+
return;
|
|
92
|
+
existing.eventType = eventType;
|
|
93
|
+
existing.eventData = eventData;
|
|
94
|
+
existing.widget = eventData.widget;
|
|
95
|
+
existing.final = !!eventData.final;
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
freezeLiveTool(state);
|
|
99
|
+
stopStreaming(state);
|
|
100
|
+
state.items.push({ id: nextItemId("w"), at: at, eventType: eventType, eventData: eventData, widget: eventData.widget, widgetId: widgetId, final: !!eventData.final });
|
|
101
|
+
state.thinking = false;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Applies one event. `replay` is true when rebuilding from stored history: user messages then
|
|
105
|
+
* come from the event stream (live ones are added locally when the user sends them).
|
|
106
|
+
*/
|
|
107
|
+
export function applyAgentEvent(state, event, replay, at) {
|
|
108
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2;
|
|
109
|
+
if (replay === void 0) { replay = false; }
|
|
110
|
+
if (at === void 0) { at = Date.now(); }
|
|
111
|
+
var eventType = event.eventType, eventData = event.eventData, frame = event.frame;
|
|
112
|
+
var hasWidget = typeof eventData.widget === "string" && eventData.widget.length > 0;
|
|
113
|
+
if (hasWidget) {
|
|
114
|
+
applyWidgetEvent(state, event, at);
|
|
115
|
+
// Widget events still close the turn when they are end-of-turn events.
|
|
116
|
+
switch (eventType) {
|
|
117
|
+
case AgentEventTypes.turnComplete:
|
|
118
|
+
case AgentEventTypes.turnCompleteLegacy:
|
|
119
|
+
case AgentEventTypes.executionCancelled:
|
|
120
|
+
case AgentEventTypes.executionCancelledLegacy:
|
|
121
|
+
case AgentEventTypes.agentError:
|
|
122
|
+
case AgentEventTypes.error:
|
|
123
|
+
endTurn(state);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
switch (eventType) {
|
|
129
|
+
case AgentEventTypes.sessionStarted: {
|
|
130
|
+
var sessionId = (_b = (_a = frame.session_id) !== null && _a !== void 0 ? _a : eventData.session_id) !== null && _b !== void 0 ? _b : null;
|
|
131
|
+
state.sessionId = sessionId;
|
|
132
|
+
state.historySessionId = (_d = (_c = frame.history_session_id) !== null && _c !== void 0 ? _c : eventData.history_session_id) !== null && _d !== void 0 ? _d : sessionId;
|
|
133
|
+
var commands = (_e = frame.commands) !== null && _e !== void 0 ? _e : eventData.commands;
|
|
134
|
+
if (Array.isArray(commands))
|
|
135
|
+
state.commands = commands;
|
|
136
|
+
state.authError = null;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case AgentEventTypes.sessionEnded:
|
|
140
|
+
state.sessionId = null;
|
|
141
|
+
break;
|
|
142
|
+
case AgentEventTypes.userMessage:
|
|
143
|
+
if (replay) {
|
|
144
|
+
var content = (_g = (_f = eventData.content) !== null && _f !== void 0 ? _f : frame.content) !== null && _g !== void 0 ? _g : "";
|
|
145
|
+
var attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];
|
|
146
|
+
if (content || attachments.length) {
|
|
147
|
+
// agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.
|
|
148
|
+
var replayEventData = attachments.length
|
|
149
|
+
? { content: content, attachments: attachments, agentEventId: (_h = eventData.agentEventId) !== null && _h !== void 0 ? _h : frame.id }
|
|
150
|
+
: { content: content };
|
|
151
|
+
state.items.push({ id: nextItemId("u"), at: at, eventType: eventType, eventData: replayEventData });
|
|
152
|
+
}
|
|
153
|
+
state.liveToolId = null;
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
case AgentEventTypes.agentStarted:
|
|
157
|
+
case AgentEventTypes.stepStarted:
|
|
158
|
+
if (!replay) {
|
|
159
|
+
state.working = true;
|
|
160
|
+
if (!state.liveToolId)
|
|
161
|
+
state.thinking = true;
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
case AgentEventTypes.stepComplete:
|
|
165
|
+
case AgentEventTypes.agentComplete:
|
|
166
|
+
freezeLiveTool(state);
|
|
167
|
+
break;
|
|
168
|
+
case AgentEventTypes.toolCalling: {
|
|
169
|
+
freezeLiveTool(state);
|
|
170
|
+
stopStreaming(state);
|
|
171
|
+
var toolName = (_k = (_j = eventData.tool_name) !== null && _j !== void 0 ? _j : frame.tool_name) !== null && _k !== void 0 ? _k : "tool";
|
|
172
|
+
var args = (_l = eventData.arguments) !== null && _l !== void 0 ? _l : {};
|
|
173
|
+
var id = nextItemId("tool");
|
|
174
|
+
state.items.push({
|
|
175
|
+
id: id,
|
|
176
|
+
at: at,
|
|
177
|
+
eventType: eventType,
|
|
178
|
+
eventData: { tool_name: toolName, arguments: args, summary: describeToolArgs(args, toolName) },
|
|
179
|
+
live: !replay,
|
|
180
|
+
});
|
|
181
|
+
state.liveToolId = id;
|
|
182
|
+
state.thinking = false;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
case AgentEventTypes.toolProgress: {
|
|
186
|
+
var tool = findItem(state, state.liveToolId);
|
|
187
|
+
if (!tool)
|
|
188
|
+
break;
|
|
189
|
+
var label_1 = (_m = eventData.label) !== null && _m !== void 0 ? _m : "";
|
|
190
|
+
var status_1 = eventData.status === "success" || eventData.status === "done" ? "done" : "running";
|
|
191
|
+
var progress = (_o = tool.eventData.progress) !== null && _o !== void 0 ? _o : [];
|
|
192
|
+
var index_1 = progress.findIndex(function (step) { return step.label === label_1; });
|
|
193
|
+
var step_1 = { label: label_1, status: status_1, duration_ms: (_p = eventData.duration_ms) !== null && _p !== void 0 ? _p : (_q = progress[index_1]) === null || _q === void 0 ? void 0 : _q.duration_ms };
|
|
194
|
+
tool.eventData = __assign(__assign({}, tool.eventData), { progress: index_1 >= 0 ? progress.map(function (entry, i) { return (i === index_1 ? step_1 : entry); }) : __spreadArray(__spreadArray([], progress, true), [step_1], false) });
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
case AgentEventTypes.toolResult: {
|
|
198
|
+
var tool = findItem(state, state.liveToolId);
|
|
199
|
+
if (tool) {
|
|
200
|
+
var output = (_s = (_r = eventData.output) !== null && _r !== void 0 ? _r : frame.content) !== null && _s !== void 0 ? _s : "";
|
|
201
|
+
var parsed = output ? parseToolResult(String(output)) : null;
|
|
202
|
+
tool.eventData = __assign(__assign(__assign({}, tool.eventData), { duration_ms: (_t = eventData.duration_ms) !== null && _t !== void 0 ? _t : frame.duration_ms }), (parsed ? { status: parsed.status, output: parsed.text, output_raw: String(output) } : {}));
|
|
203
|
+
}
|
|
204
|
+
freezeLiveTool(state);
|
|
205
|
+
if (!replay)
|
|
206
|
+
state.thinking = true;
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
case AgentEventTypes.llmToken: {
|
|
210
|
+
var delta = (_u = eventData.delta) !== null && _u !== void 0 ? _u : "";
|
|
211
|
+
if (!delta)
|
|
212
|
+
break;
|
|
213
|
+
freezeLiveTool(state);
|
|
214
|
+
state.thinking = false;
|
|
215
|
+
state.turnStreamed = true;
|
|
216
|
+
var streaming = findItem(state, state.streamingId);
|
|
217
|
+
if (streaming) {
|
|
218
|
+
streaming.eventData = __assign(__assign({}, streaming.eventData), { content: "".concat((_v = streaming.eventData.content) !== null && _v !== void 0 ? _v : "").concat(delta) });
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
var id = nextItemId("stream");
|
|
222
|
+
state.items.push({ id: id, at: at, eventType: AgentEventTypes.llmComplete, eventData: { content: delta }, live: true });
|
|
223
|
+
state.streamingId = id;
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
case AgentEventTypes.llmComplete: {
|
|
228
|
+
var content = (_x = (_w = eventData.content) !== null && _w !== void 0 ? _w : frame.content) !== null && _x !== void 0 ? _x : "";
|
|
229
|
+
var streamed = findItem(state, state.streamingId);
|
|
230
|
+
stopStreaming(state);
|
|
231
|
+
if (!content || isLlmMetadata(content))
|
|
232
|
+
break;
|
|
233
|
+
if (streamed)
|
|
234
|
+
streamed.eventData = __assign(__assign({}, streamed.eventData), { content: content }); // authoritative final text
|
|
235
|
+
else if (lastAssistantText(state) !== content)
|
|
236
|
+
pushAssistantText(state, content, at);
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
case AgentEventTypes.turnComplete:
|
|
240
|
+
case AgentEventTypes.turnCompleteLegacy: {
|
|
241
|
+
var content = (_z = (_y = eventData.content) !== null && _y !== void 0 ? _y : frame.content) !== null && _z !== void 0 ? _z : "";
|
|
242
|
+
if (content && !state.turnStreamed && !isLlmMetadata(content) && lastAssistantText(state) !== content) {
|
|
243
|
+
pushAssistantText(state, content, at);
|
|
244
|
+
}
|
|
245
|
+
endTurn(state);
|
|
246
|
+
state.turnStreamed = false;
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
case AgentEventTypes.executionCancelled:
|
|
250
|
+
case AgentEventTypes.executionCancelledLegacy:
|
|
251
|
+
endTurn(state);
|
|
252
|
+
state.items.push({ id: nextItemId("cancel"), at: at, eventType: AgentEventTypes.executionCancelled, eventData: { message: (_0 = eventData.message) !== null && _0 !== void 0 ? _0 : "Stopped." } });
|
|
253
|
+
break;
|
|
254
|
+
case AgentEventTypes.agentError:
|
|
255
|
+
case AgentEventTypes.error: {
|
|
256
|
+
var message = (_2 = (_1 = eventData.error) !== null && _1 !== void 0 ? _1 : frame.content) !== null && _2 !== void 0 ? _2 : "Unknown error";
|
|
257
|
+
endTurn(state);
|
|
258
|
+
if (!replay && /unauthori[sz]ed|access token|lacks required permission/i.test(message))
|
|
259
|
+
state.authError = message;
|
|
260
|
+
state.items.push({ id: nextItemId("err"), at: at, eventType: AgentEventTypes.agentError, eventData: { error: message } });
|
|
261
|
+
break;
|
|
262
|
+
}
|
|
263
|
+
default:
|
|
264
|
+
// Bookkeeping events (LlmRequest, SkillActivation, ...) are not rendered without a widget.
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/** Rebuilds thread items from stored session events (`/api/agent/sessions/{id}/messages`). */
|
|
269
|
+
export function historyToItems(rows) {
|
|
270
|
+
var _a;
|
|
271
|
+
var state = createThreadState();
|
|
272
|
+
for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
|
|
273
|
+
var row = rows_1[_i];
|
|
274
|
+
var frame = __assign(__assign({}, row), { event_type: (_a = row.event_type) !== null && _a !== void 0 ? _a : (row.role === "user" ? AgentEventTypes.userMessage : row.role === "assistant" ? AgentEventTypes.llmComplete : "") });
|
|
275
|
+
var at = row.timestamp ? new Date(row.timestamp).getTime() : Date.now();
|
|
276
|
+
applyAgentEvent(state, normalizeAgentFrame(frame), true, at);
|
|
277
|
+
}
|
|
278
|
+
freezeLiveTool(state);
|
|
279
|
+
stopStreaming(state);
|
|
280
|
+
return state.items;
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=agentEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentEvents.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/agentEvents.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,eAAe,EAAmF,MAAM,SAAS,CAAC;AAyB3H,MAAM,UAAU,iBAAiB;IAC7B,OAAO;QACH,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,IAAI;QACtB,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;KACtB,CAAC;AACN,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,KAAqB;;IACrD,IAAM,SAAS,GAAG,MAAA,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC;IACvD,IAAM,GAAG,GAAG,MAAA,MAAA,KAAK,CAAC,UAAU,mCAAI,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC;IACjD,IAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACjF,OAAO,EAAE,SAAS,WAAA,EAAE,SAAS,WAAA,EAAE,KAAK,OAAA,EAAE,CAAC;AAC3C,CAAC;AAED,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,MAAc,IAAK,OAAA,UAAG,MAAM,cAAI,IAAI,CAAC,GAAG,EAAE,cAAI,EAAE,GAAG,CAAE,EAAlC,CAAkC,CAAC;AAEjF,SAAS,QAAQ,CAAC,KAAuB,EAAE,EAAiB;;IACxD,OAAO,EAAE,CAAC,CAAC,CAAC,MAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,EAAE,KAAK,EAAE,EAAd,CAAc,CAAC,mCAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,KAAuB;IAC3C,IAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IAC5B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AAC5B,CAAC;AAED,SAAS,aAAa,CAAC,KAAuB;IAC1C,IAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,SAAS;QAAE,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAC7B,CAAC;AAED,SAAS,OAAO,CAAC,KAAuB;IACpC,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAuB;IAC9C,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9C,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAClG,IAAI,IAAI,CAAC,SAAS,KAAK,eAAe,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;KACxE;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAuB,EAAE,OAAe,EAAE,EAAU;IAC3E,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,IAAA,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,OAAO,SAAA,EAAE,EAAE,CAAC,CAAC;AACpH,CAAC;AAED,oEAAoE;AACpE,SAAS,gBAAgB,CAAC,KAAuB,EAAE,KAAqB,EAAE,EAAU;;IACxE,IAAA,SAAS,GAAgB,KAAK,UAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAW;IACvC,IAAM,QAAQ,GAAW,MAAA,MAAA,SAAS,CAAC,QAAQ,mCAAI,SAAS,CAAC,SAAS,mCAAI,UAAU,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC;IACxG,IAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAA1B,CAA0B,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE;QACV,IAAI,QAAQ,CAAC,KAAK;YAAE,OAAO;QAC3B,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACnC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;QACnC,OAAO;KACV;IACD,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAA,EAAE,SAAS,WAAA,EAAE,SAAS,WAAA,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,UAAA,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAClI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAAuB,EAAE,KAAqB,EAAE,MAAc,EAAE,EAAe;;IAA/B,uBAAA,EAAA,cAAc;IAAE,mBAAA,EAAA,KAAK,IAAI,CAAC,GAAG,EAAE;IACnG,IAAA,SAAS,GAAuB,KAAK,UAA5B,EAAE,SAAS,GAAY,KAAK,UAAjB,EAAE,KAAK,GAAK,KAAK,MAAV,CAAW;IAC9C,IAAM,SAAS,GAAG,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtF,IAAI,SAAS,EAAE;QACX,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACnC,uEAAuE;QACvE,QAAQ,SAAS,EAAE;YACf,KAAK,eAAe,CAAC,YAAY,CAAC;YAClC,KAAK,eAAe,CAAC,kBAAkB,CAAC;YACxC,KAAK,eAAe,CAAC,kBAAkB,CAAC;YACxC,KAAK,eAAe,CAAC,wBAAwB,CAAC;YAC9C,KAAK,eAAe,CAAC,UAAU,CAAC;YAChC,KAAK,eAAe,CAAC,KAAK;gBACtB,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,MAAM;SACb;QACD,OAAO;KACV;IAED,QAAQ,SAAS,EAAE;QACf,KAAK,eAAe,CAAC,cAAc,CAAC,CAAC;YACjC,IAAM,SAAS,GAAG,MAAA,MAAA,KAAK,CAAC,UAAU,mCAAI,SAAS,CAAC,UAAU,mCAAI,IAAI,CAAC;YACnE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;YAC5B,KAAK,CAAC,gBAAgB,GAAG,MAAA,MAAA,KAAK,CAAC,kBAAkB,mCAAI,SAAS,CAAC,kBAAkB,mCAAI,SAAS,CAAC;YAC/F,IAAM,QAAQ,GAAG,MAAA,KAAK,CAAC,QAAQ,mCAAI,SAAS,CAAC,QAAQ,CAAC;YACtD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACvD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YACvB,MAAM;SACT;QAED,KAAK,eAAe,CAAC,YAAY;YAC7B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YACvB,MAAM;QAEV,KAAK,eAAe,CAAC,WAAW;YAC5B,IAAI,MAAM,EAAE;gBACR,IAAM,OAAO,GAAG,MAAA,MAAA,SAAS,CAAC,OAAO,mCAAI,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;gBACzD,IAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE;oBAC/B,uFAAuF;oBACvF,IAAM,eAAe,GAAG,WAAW,CAAC,MAAM;wBACtC,CAAC,CAAC,EAAE,OAAO,SAAA,EAAE,WAAW,aAAA,EAAE,YAAY,EAAE,MAAA,SAAS,CAAC,YAAY,mCAAI,KAAK,CAAC,EAAE,EAAE;wBAC5E,CAAC,CAAC,EAAE,OAAO,SAAA,EAAE,CAAC;oBAClB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,IAAA,EAAE,SAAS,WAAA,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;iBACxF;gBACD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;aAC3B;YACD,MAAM;QAEV,KAAK,eAAe,CAAC,YAAY,CAAC;QAClC,KAAK,eAAe,CAAC,WAAW;YAC5B,IAAI,CAAC,MAAM,EAAE;gBACT,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,KAAK,CAAC,UAAU;oBAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;aAChD;YACD,MAAM;QAEV,KAAK,eAAe,CAAC,YAAY,CAAC;QAClC,KAAK,eAAe,CAAC,aAAa;YAC9B,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,MAAM;QAEV,KAAK,eAAe,CAAC,WAAW,CAAC,CAAC;YAC9B,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,IAAM,QAAQ,GAAG,MAAA,MAAA,SAAS,CAAC,SAAS,mCAAI,KAAK,CAAC,SAAS,mCAAI,MAAM,CAAC;YAClE,IAAM,IAAI,GAAG,MAAA,SAAS,CAAC,SAAS,mCAAI,EAAE,CAAC;YACvC,IAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC9B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,EAAE,IAAA;gBACF,EAAE,IAAA;gBACF,SAAS,WAAA;gBACT,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;gBAC9F,IAAI,EAAE,CAAC,MAAM;aAChB,CAAC,CAAC;YACH,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;YACtB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,MAAM;SACT;QAED,KAAK,eAAe,CAAC,YAAY,CAAC,CAAC;YAC/B,IAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI;gBAAE,MAAM;YACjB,IAAM,OAAK,GAAG,MAAA,SAAS,CAAC,KAAK,mCAAI,EAAE,CAAC;YACpC,IAAM,QAAM,GAAG,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAClG,IAAM,QAAQ,GAAU,MAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,mCAAI,EAAE,CAAC;YACtD,IAAM,OAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,KAAK,KAAK,OAAK,EAApB,CAAoB,CAAC,CAAC;YACjE,IAAM,MAAI,GAAG,EAAE,KAAK,SAAA,EAAE,MAAM,UAAA,EAAE,WAAW,EAAE,MAAA,SAAS,CAAC,WAAW,mCAAI,MAAA,QAAQ,CAAC,OAAK,CAAC,0CAAE,WAAW,EAAE,CAAC;YACnG,IAAI,CAAC,SAAS,yBAAQ,IAAI,CAAC,SAAS,KAAE,QAAQ,EAAE,OAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,OAAK,CAAC,CAAC,CAAC,MAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAA5B,CAA4B,CAAC,CAAC,CAAC,iCAAK,QAAQ,UAAE,MAAI,SAAC,GAAE,CAAC;YAC9I,MAAM;SACT;QAED,KAAK,eAAe,CAAC,UAAU,CAAC,CAAC;YAC7B,IAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,IAAI,EAAE;gBACN,IAAM,MAAM,GAAG,MAAA,MAAA,SAAS,CAAC,MAAM,mCAAI,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;gBACvD,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/D,IAAI,CAAC,SAAS,kCACP,IAAI,CAAC,SAAS,KACjB,WAAW,EAAE,MAAA,SAAS,CAAC,WAAW,mCAAI,KAAK,CAAC,WAAW,KACpD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChG,CAAC;aACL;YACD,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,MAAM;gBAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACnC,MAAM;SACT;QAED,KAAK,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAM,KAAK,GAAW,MAAA,SAAS,CAAC,KAAK,mCAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK;gBAAE,MAAM;YAClB,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;YAC1B,IAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,SAAS,yBAAQ,SAAS,CAAC,SAAS,KAAE,OAAO,EAAE,UAAG,MAAA,SAAS,CAAC,SAAS,CAAC,OAAO,mCAAI,EAAE,SAAG,KAAK,CAAE,GAAE,CAAC;aAC7G;iBAAM;gBACH,IAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAChC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAA,EAAE,EAAE,IAAA,EAAE,SAAS,EAAE,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChH,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;aAC1B;YACD,MAAM;SACT;QAED,KAAK,eAAe,CAAC,WAAW,CAAC,CAAC;YAC9B,IAAM,OAAO,GAAW,MAAA,MAAA,SAAS,CAAC,OAAO,mCAAI,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;YACjE,IAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACpD,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;gBAAE,MAAM;YAC9C,IAAI,QAAQ;gBAAE,QAAQ,CAAC,SAAS,yBAAQ,QAAQ,CAAC,SAAS,KAAE,OAAO,SAAA,GAAE,CAAC,CAAC,2BAA2B;iBAC7F,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,OAAO;gBAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACrF,MAAM;SACT;QAED,KAAK,eAAe,CAAC,YAAY,CAAC;QAClC,KAAK,eAAe,CAAC,kBAAkB,CAAC,CAAC;YACrC,IAAM,OAAO,GAAW,MAAA,MAAA,SAAS,CAAC,OAAO,mCAAI,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;YACjE,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE;gBACnG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;aACzC;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;YAC3B,MAAM;SACT;QAED,KAAK,eAAe,CAAC,kBAAkB,CAAC;QACxC,KAAK,eAAe,CAAC,wBAAwB;YACzC,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAA,EAAE,SAAS,EAAE,eAAe,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAA,SAAS,CAAC,OAAO,mCAAI,UAAU,EAAE,EAAE,CAAC,CAAC;YAC3J,MAAM;QAEV,KAAK,eAAe,CAAC,UAAU,CAAC;QAChC,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC;YACxB,IAAM,OAAO,GAAW,MAAA,MAAA,SAAS,CAAC,KAAK,mCAAI,KAAK,CAAC,OAAO,mCAAI,eAAe,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,IAAI,CAAC,MAAM,IAAI,yDAAyD,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;YAClH,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,IAAA,EAAE,SAAS,EAAE,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACtH,MAAM;SACT;QAED;YACI,2FAA2F;YAC3F,MAAM;KACb;AACL,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,IAAW;;IACtC,IAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,KAAkB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE;QAAnB,IAAM,GAAG,aAAA;QACV,IAAM,KAAK,yBAAwB,GAAG,KAAE,UAAU,EAAE,MAAA,GAAG,CAAC,UAAU,mCAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC;QAC1L,IAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1E,eAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;KAChE;IACD,cAAc,CAAC,KAAK,CAAC,CAAC;IACtB,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,KAAK,CAAC;AACvB,CAAC","sourcesContent":["import { describeToolArgs, isLlmMetadata, parseToolResult } from \"./agentFormat\";\nimport { AgentEventTypes, type AgentChatEvent, type AgentChatItem, type AgentCommand, type AgentWireFrame } from \"./types\";\n\n/**\n * Turns agent events into thread items. Used by agentSlice for live socket frames and by the\n * history loader for stored events, so both render identically.\n *\n * Rule: if `event_data.widget` is present the event becomes (or updates) a widget item rendered\n * by that registered widget; otherwise the `event_type` switch below decides what, if anything,\n * to add, and the thread renders it with the default widget for its type.\n */\n\n/** The slice of chat state this reducer reads and writes (agentSlice state satisfies it). */\nexport type AgentThreadState = {\n items: AgentChatItem[];\n sessionId: string | null;\n historySessionId: string | null;\n commands: AgentCommand[];\n working: boolean;\n thinking: boolean;\n authError: string | null;\n liveToolId: string | null;\n streamingId: string | null;\n turnStreamed: boolean;\n};\n\nexport function createThreadState(): AgentThreadState {\n return {\n items: [],\n sessionId: null,\n historySessionId: null,\n commands: [],\n working: false,\n thinking: false,\n authError: null,\n liveToolId: null,\n streamingId: null,\n turnStreamed: false,\n };\n}\n\n/** Accepts `{ event_type, event_data }` (current) and `{ type, data }` (legacy) frames. */\nexport function normalizeAgentFrame(frame: AgentWireFrame): AgentChatEvent {\n const eventType = frame.event_type ?? frame.type ?? \"\";\n const raw = frame.event_data ?? frame.data ?? {};\n const eventData = typeof raw === \"object\" && raw !== null ? raw : { value: raw };\n return { eventType, eventData, frame };\n}\n\nlet seq = 0;\nexport const nextItemId = (prefix: string) => `${prefix}-${Date.now()}-${++seq}`;\n\nfunction findItem(state: AgentThreadState, id: string | null) {\n return id ? state.items.find((item) => item.id === id) ?? null : null;\n}\n\nfunction freezeLiveTool(state: AgentThreadState) {\n const tool = findItem(state, state.liveToolId);\n if (tool) tool.live = false;\n state.liveToolId = null;\n}\n\nfunction stopStreaming(state: AgentThreadState) {\n const streaming = findItem(state, state.streamingId);\n if (streaming) streaming.live = false;\n state.streamingId = null;\n}\n\nfunction endTurn(state: AgentThreadState) {\n freezeLiveTool(state);\n stopStreaming(state);\n state.working = false;\n state.thinking = false;\n}\n\nfunction lastAssistantText(state: AgentThreadState): string | undefined {\n for (let i = state.items.length - 1; i >= 0; i--) {\n const item = state.items[i];\n if (item.eventType === AgentEventTypes.llmComplete && !item.widget) return item.eventData.content;\n if (item.eventType === AgentEventTypes.userMessage) return undefined;\n }\n return undefined;\n}\n\nfunction pushAssistantText(state: AgentThreadState, content: string, at: number) {\n freezeLiveTool(state);\n state.items.push({ id: nextItemId(\"llm\"), at, eventType: AgentEventTypes.llmComplete, eventData: { content } });\n}\n\n/** Adds or updates the widget item named by `event_data.widget`. */\nfunction applyWidgetEvent(state: AgentThreadState, event: AgentChatEvent, at: number) {\n const { eventType, eventData } = event;\n const widgetId: string = eventData.widgetId ?? eventData.widget_id ?? nextItemId(eventType || \"widget\");\n const existing = state.items.find((item) => item.widgetId === widgetId);\n if (existing) {\n if (existing.final) return;\n existing.eventType = eventType;\n existing.eventData = eventData;\n existing.widget = eventData.widget;\n existing.final = !!eventData.final;\n return;\n }\n freezeLiveTool(state);\n stopStreaming(state);\n state.items.push({ id: nextItemId(\"w\"), at, eventType, eventData, widget: eventData.widget, widgetId, final: !!eventData.final });\n state.thinking = false;\n}\n\n/**\n * Applies one event. `replay` is true when rebuilding from stored history: user messages then\n * come from the event stream (live ones are added locally when the user sends them).\n */\nexport function applyAgentEvent(state: AgentThreadState, event: AgentChatEvent, replay = false, at = Date.now()) {\n const { eventType, eventData, frame } = event;\n const hasWidget = typeof eventData.widget === \"string\" && eventData.widget.length > 0;\n\n if (hasWidget) {\n applyWidgetEvent(state, event, at);\n // Widget events still close the turn when they are end-of-turn events.\n switch (eventType) {\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy:\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n case AgentEventTypes.agentError:\n case AgentEventTypes.error:\n endTurn(state);\n break;\n }\n return;\n }\n\n switch (eventType) {\n case AgentEventTypes.sessionStarted: {\n const sessionId = frame.session_id ?? eventData.session_id ?? null;\n state.sessionId = sessionId;\n state.historySessionId = frame.history_session_id ?? eventData.history_session_id ?? sessionId;\n const commands = frame.commands ?? eventData.commands;\n if (Array.isArray(commands)) state.commands = commands;\n state.authError = null;\n break;\n }\n\n case AgentEventTypes.sessionEnded:\n state.sessionId = null;\n break;\n\n case AgentEventTypes.userMessage:\n if (replay) {\n const content = eventData.content ?? frame.content ?? \"\";\n const attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];\n if (content || attachments.length) {\n // agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.\n const replayEventData = attachments.length\n ? { content, attachments, agentEventId: eventData.agentEventId ?? frame.id }\n : { content };\n state.items.push({ id: nextItemId(\"u\"), at, eventType, eventData: replayEventData });\n }\n state.liveToolId = null;\n }\n break;\n\n case AgentEventTypes.agentStarted:\n case AgentEventTypes.stepStarted:\n if (!replay) {\n state.working = true;\n if (!state.liveToolId) state.thinking = true;\n }\n break;\n\n case AgentEventTypes.stepComplete:\n case AgentEventTypes.agentComplete:\n freezeLiveTool(state);\n break;\n\n case AgentEventTypes.toolCalling: {\n freezeLiveTool(state);\n stopStreaming(state);\n const toolName = eventData.tool_name ?? frame.tool_name ?? \"tool\";\n const args = eventData.arguments ?? {};\n const id = nextItemId(\"tool\");\n state.items.push({\n id,\n at,\n eventType,\n eventData: { tool_name: toolName, arguments: args, summary: describeToolArgs(args, toolName) },\n live: !replay,\n });\n state.liveToolId = id;\n state.thinking = false;\n break;\n }\n\n case AgentEventTypes.toolProgress: {\n const tool = findItem(state, state.liveToolId);\n if (!tool) break;\n const label = eventData.label ?? \"\";\n const status = eventData.status === \"success\" || eventData.status === \"done\" ? \"done\" : \"running\";\n const progress: any[] = tool.eventData.progress ?? [];\n const index = progress.findIndex((step) => step.label === label);\n const step = { label, status, duration_ms: eventData.duration_ms ?? progress[index]?.duration_ms };\n tool.eventData = { ...tool.eventData, progress: index >= 0 ? progress.map((entry, i) => (i === index ? step : entry)) : [...progress, step] };\n break;\n }\n\n case AgentEventTypes.toolResult: {\n const tool = findItem(state, state.liveToolId);\n if (tool) {\n const output = eventData.output ?? frame.content ?? \"\";\n const parsed = output ? parseToolResult(String(output)) : null;\n tool.eventData = {\n ...tool.eventData,\n duration_ms: eventData.duration_ms ?? frame.duration_ms,\n ...(parsed ? { status: parsed.status, output: parsed.text, output_raw: String(output) } : {}),\n };\n }\n freezeLiveTool(state);\n if (!replay) state.thinking = true;\n break;\n }\n\n case AgentEventTypes.llmToken: {\n const delta: string = eventData.delta ?? \"\";\n if (!delta) break;\n freezeLiveTool(state);\n state.thinking = false;\n state.turnStreamed = true;\n const streaming = findItem(state, state.streamingId);\n if (streaming) {\n streaming.eventData = { ...streaming.eventData, content: `${streaming.eventData.content ?? \"\"}${delta}` };\n } else {\n const id = nextItemId(\"stream\");\n state.items.push({ id, at, eventType: AgentEventTypes.llmComplete, eventData: { content: delta }, live: true });\n state.streamingId = id;\n }\n break;\n }\n\n case AgentEventTypes.llmComplete: {\n const content: string = eventData.content ?? frame.content ?? \"\";\n const streamed = findItem(state, state.streamingId);\n stopStreaming(state);\n if (!content || isLlmMetadata(content)) break;\n if (streamed) streamed.eventData = { ...streamed.eventData, content }; // authoritative final text\n else if (lastAssistantText(state) !== content) pushAssistantText(state, content, at);\n break;\n }\n\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy: {\n const content: string = eventData.content ?? frame.content ?? \"\";\n if (content && !state.turnStreamed && !isLlmMetadata(content) && lastAssistantText(state) !== content) {\n pushAssistantText(state, content, at);\n }\n endTurn(state);\n state.turnStreamed = false;\n break;\n }\n\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n endTurn(state);\n state.items.push({ id: nextItemId(\"cancel\"), at, eventType: AgentEventTypes.executionCancelled, eventData: { message: eventData.message ?? \"Stopped.\" } });\n break;\n\n case AgentEventTypes.agentError:\n case AgentEventTypes.error: {\n const message: string = eventData.error ?? frame.content ?? \"Unknown error\";\n endTurn(state);\n if (!replay && /unauthori[sz]ed|access token|lacks required permission/i.test(message)) state.authError = message;\n state.items.push({ id: nextItemId(\"err\"), at, eventType: AgentEventTypes.agentError, eventData: { error: message } });\n break;\n }\n\n default:\n // Bookkeeping events (LlmRequest, SkillActivation, ...) are not rendered without a widget.\n break;\n }\n}\n\n/** Rebuilds thread items from stored session events (`/api/agent/sessions/{id}/messages`). */\nexport function historyToItems(rows: any[]): AgentChatItem[] {\n const state = createThreadState();\n for (const row of rows) {\n const frame: AgentWireFrame = { ...row, event_type: row.event_type ?? (row.role === \"user\" ? AgentEventTypes.userMessage : row.role === \"assistant\" ? AgentEventTypes.llmComplete : \"\") };\n const at = row.timestamp ? new Date(row.timestamp).getTime() : Date.now();\n applyAgentEvent(state, normalizeAgentFrame(frame), true, at);\n }\n freezeLiveTool(state);\n stopStreaming(state);\n return state.items;\n}\n"]}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { describeToolArgs, isLlmMetadata, parseToolResult } from "./agentFormat";
|
|
2
|
+
import { AgentEventTypes, type AgentChatEvent, type AgentChatItem, type AgentCommand, type AgentWireFrame } from "./types";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Turns agent events into thread items. Used by agentSlice for live socket frames and by the
|
|
6
|
+
* history loader for stored events, so both render identically.
|
|
7
|
+
*
|
|
8
|
+
* Rule: if `event_data.widget` is present the event becomes (or updates) a widget item rendered
|
|
9
|
+
* by that registered widget; otherwise the `event_type` switch below decides what, if anything,
|
|
10
|
+
* to add, and the thread renders it with the default widget for its type.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
/** The slice of chat state this reducer reads and writes (agentSlice state satisfies it). */
|
|
14
|
+
export type AgentThreadState = {
|
|
15
|
+
items: AgentChatItem[];
|
|
16
|
+
sessionId: string | null;
|
|
17
|
+
historySessionId: string | null;
|
|
18
|
+
commands: AgentCommand[];
|
|
19
|
+
working: boolean;
|
|
20
|
+
thinking: boolean;
|
|
21
|
+
authError: string | null;
|
|
22
|
+
liveToolId: string | null;
|
|
23
|
+
streamingId: string | null;
|
|
24
|
+
turnStreamed: boolean;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export function createThreadState(): AgentThreadState {
|
|
28
|
+
return {
|
|
29
|
+
items: [],
|
|
30
|
+
sessionId: null,
|
|
31
|
+
historySessionId: null,
|
|
32
|
+
commands: [],
|
|
33
|
+
working: false,
|
|
34
|
+
thinking: false,
|
|
35
|
+
authError: null,
|
|
36
|
+
liveToolId: null,
|
|
37
|
+
streamingId: null,
|
|
38
|
+
turnStreamed: false,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Accepts `{ event_type, event_data }` (current) and `{ type, data }` (legacy) frames. */
|
|
43
|
+
export function normalizeAgentFrame(frame: AgentWireFrame): AgentChatEvent {
|
|
44
|
+
const eventType = frame.event_type ?? frame.type ?? "";
|
|
45
|
+
const raw = frame.event_data ?? frame.data ?? {};
|
|
46
|
+
const eventData = typeof raw === "object" && raw !== null ? raw : { value: raw };
|
|
47
|
+
return { eventType, eventData, frame };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
let seq = 0;
|
|
51
|
+
export const nextItemId = (prefix: string) => `${prefix}-${Date.now()}-${++seq}`;
|
|
52
|
+
|
|
53
|
+
function findItem(state: AgentThreadState, id: string | null) {
|
|
54
|
+
return id ? state.items.find((item) => item.id === id) ?? null : null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function freezeLiveTool(state: AgentThreadState) {
|
|
58
|
+
const tool = findItem(state, state.liveToolId);
|
|
59
|
+
if (tool) tool.live = false;
|
|
60
|
+
state.liveToolId = null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function stopStreaming(state: AgentThreadState) {
|
|
64
|
+
const streaming = findItem(state, state.streamingId);
|
|
65
|
+
if (streaming) streaming.live = false;
|
|
66
|
+
state.streamingId = null;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function endTurn(state: AgentThreadState) {
|
|
70
|
+
freezeLiveTool(state);
|
|
71
|
+
stopStreaming(state);
|
|
72
|
+
state.working = false;
|
|
73
|
+
state.thinking = false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function lastAssistantText(state: AgentThreadState): string | undefined {
|
|
77
|
+
for (let i = state.items.length - 1; i >= 0; i--) {
|
|
78
|
+
const item = state.items[i];
|
|
79
|
+
if (item.eventType === AgentEventTypes.llmComplete && !item.widget) return item.eventData.content;
|
|
80
|
+
if (item.eventType === AgentEventTypes.userMessage) return undefined;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function pushAssistantText(state: AgentThreadState, content: string, at: number) {
|
|
86
|
+
freezeLiveTool(state);
|
|
87
|
+
state.items.push({ id: nextItemId("llm"), at, eventType: AgentEventTypes.llmComplete, eventData: { content } });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Adds or updates the widget item named by `event_data.widget`. */
|
|
91
|
+
function applyWidgetEvent(state: AgentThreadState, event: AgentChatEvent, at: number) {
|
|
92
|
+
const { eventType, eventData } = event;
|
|
93
|
+
const widgetId: string = eventData.widgetId ?? eventData.widget_id ?? nextItemId(eventType || "widget");
|
|
94
|
+
const existing = state.items.find((item) => item.widgetId === widgetId);
|
|
95
|
+
if (existing) {
|
|
96
|
+
if (existing.final) return;
|
|
97
|
+
existing.eventType = eventType;
|
|
98
|
+
existing.eventData = eventData;
|
|
99
|
+
existing.widget = eventData.widget;
|
|
100
|
+
existing.final = !!eventData.final;
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
freezeLiveTool(state);
|
|
104
|
+
stopStreaming(state);
|
|
105
|
+
state.items.push({ id: nextItemId("w"), at, eventType, eventData, widget: eventData.widget, widgetId, final: !!eventData.final });
|
|
106
|
+
state.thinking = false;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Applies one event. `replay` is true when rebuilding from stored history: user messages then
|
|
111
|
+
* come from the event stream (live ones are added locally when the user sends them).
|
|
112
|
+
*/
|
|
113
|
+
export function applyAgentEvent(state: AgentThreadState, event: AgentChatEvent, replay = false, at = Date.now()) {
|
|
114
|
+
const { eventType, eventData, frame } = event;
|
|
115
|
+
const hasWidget = typeof eventData.widget === "string" && eventData.widget.length > 0;
|
|
116
|
+
|
|
117
|
+
if (hasWidget) {
|
|
118
|
+
applyWidgetEvent(state, event, at);
|
|
119
|
+
// Widget events still close the turn when they are end-of-turn events.
|
|
120
|
+
switch (eventType) {
|
|
121
|
+
case AgentEventTypes.turnComplete:
|
|
122
|
+
case AgentEventTypes.turnCompleteLegacy:
|
|
123
|
+
case AgentEventTypes.executionCancelled:
|
|
124
|
+
case AgentEventTypes.executionCancelledLegacy:
|
|
125
|
+
case AgentEventTypes.agentError:
|
|
126
|
+
case AgentEventTypes.error:
|
|
127
|
+
endTurn(state);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
switch (eventType) {
|
|
134
|
+
case AgentEventTypes.sessionStarted: {
|
|
135
|
+
const sessionId = frame.session_id ?? eventData.session_id ?? null;
|
|
136
|
+
state.sessionId = sessionId;
|
|
137
|
+
state.historySessionId = frame.history_session_id ?? eventData.history_session_id ?? sessionId;
|
|
138
|
+
const commands = frame.commands ?? eventData.commands;
|
|
139
|
+
if (Array.isArray(commands)) state.commands = commands;
|
|
140
|
+
state.authError = null;
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
case AgentEventTypes.sessionEnded:
|
|
145
|
+
state.sessionId = null;
|
|
146
|
+
break;
|
|
147
|
+
|
|
148
|
+
case AgentEventTypes.userMessage:
|
|
149
|
+
if (replay) {
|
|
150
|
+
const content = eventData.content ?? frame.content ?? "";
|
|
151
|
+
const attachments = Array.isArray(eventData.attachments) ? eventData.attachments : [];
|
|
152
|
+
if (content || attachments.length) {
|
|
153
|
+
// agentEventId lets the UI fetch the stored attachment files (agentEvent media) later.
|
|
154
|
+
const replayEventData = attachments.length
|
|
155
|
+
? { content, attachments, agentEventId: eventData.agentEventId ?? frame.id }
|
|
156
|
+
: { content };
|
|
157
|
+
state.items.push({ id: nextItemId("u"), at, eventType, eventData: replayEventData });
|
|
158
|
+
}
|
|
159
|
+
state.liveToolId = null;
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
|
|
163
|
+
case AgentEventTypes.agentStarted:
|
|
164
|
+
case AgentEventTypes.stepStarted:
|
|
165
|
+
if (!replay) {
|
|
166
|
+
state.working = true;
|
|
167
|
+
if (!state.liveToolId) state.thinking = true;
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
|
|
171
|
+
case AgentEventTypes.stepComplete:
|
|
172
|
+
case AgentEventTypes.agentComplete:
|
|
173
|
+
freezeLiveTool(state);
|
|
174
|
+
break;
|
|
175
|
+
|
|
176
|
+
case AgentEventTypes.toolCalling: {
|
|
177
|
+
freezeLiveTool(state);
|
|
178
|
+
stopStreaming(state);
|
|
179
|
+
const toolName = eventData.tool_name ?? frame.tool_name ?? "tool";
|
|
180
|
+
const args = eventData.arguments ?? {};
|
|
181
|
+
const id = nextItemId("tool");
|
|
182
|
+
state.items.push({
|
|
183
|
+
id,
|
|
184
|
+
at,
|
|
185
|
+
eventType,
|
|
186
|
+
eventData: { tool_name: toolName, arguments: args, summary: describeToolArgs(args, toolName) },
|
|
187
|
+
live: !replay,
|
|
188
|
+
});
|
|
189
|
+
state.liveToolId = id;
|
|
190
|
+
state.thinking = false;
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
case AgentEventTypes.toolProgress: {
|
|
195
|
+
const tool = findItem(state, state.liveToolId);
|
|
196
|
+
if (!tool) break;
|
|
197
|
+
const label = eventData.label ?? "";
|
|
198
|
+
const status = eventData.status === "success" || eventData.status === "done" ? "done" : "running";
|
|
199
|
+
const progress: any[] = tool.eventData.progress ?? [];
|
|
200
|
+
const index = progress.findIndex((step) => step.label === label);
|
|
201
|
+
const step = { label, status, duration_ms: eventData.duration_ms ?? progress[index]?.duration_ms };
|
|
202
|
+
tool.eventData = { ...tool.eventData, progress: index >= 0 ? progress.map((entry, i) => (i === index ? step : entry)) : [...progress, step] };
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
case AgentEventTypes.toolResult: {
|
|
207
|
+
const tool = findItem(state, state.liveToolId);
|
|
208
|
+
if (tool) {
|
|
209
|
+
const output = eventData.output ?? frame.content ?? "";
|
|
210
|
+
const parsed = output ? parseToolResult(String(output)) : null;
|
|
211
|
+
tool.eventData = {
|
|
212
|
+
...tool.eventData,
|
|
213
|
+
duration_ms: eventData.duration_ms ?? frame.duration_ms,
|
|
214
|
+
...(parsed ? { status: parsed.status, output: parsed.text, output_raw: String(output) } : {}),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
freezeLiveTool(state);
|
|
218
|
+
if (!replay) state.thinking = true;
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
case AgentEventTypes.llmToken: {
|
|
223
|
+
const delta: string = eventData.delta ?? "";
|
|
224
|
+
if (!delta) break;
|
|
225
|
+
freezeLiveTool(state);
|
|
226
|
+
state.thinking = false;
|
|
227
|
+
state.turnStreamed = true;
|
|
228
|
+
const streaming = findItem(state, state.streamingId);
|
|
229
|
+
if (streaming) {
|
|
230
|
+
streaming.eventData = { ...streaming.eventData, content: `${streaming.eventData.content ?? ""}${delta}` };
|
|
231
|
+
} else {
|
|
232
|
+
const id = nextItemId("stream");
|
|
233
|
+
state.items.push({ id, at, eventType: AgentEventTypes.llmComplete, eventData: { content: delta }, live: true });
|
|
234
|
+
state.streamingId = id;
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
case AgentEventTypes.llmComplete: {
|
|
240
|
+
const content: string = eventData.content ?? frame.content ?? "";
|
|
241
|
+
const streamed = findItem(state, state.streamingId);
|
|
242
|
+
stopStreaming(state);
|
|
243
|
+
if (!content || isLlmMetadata(content)) break;
|
|
244
|
+
if (streamed) streamed.eventData = { ...streamed.eventData, content }; // authoritative final text
|
|
245
|
+
else if (lastAssistantText(state) !== content) pushAssistantText(state, content, at);
|
|
246
|
+
break;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
case AgentEventTypes.turnComplete:
|
|
250
|
+
case AgentEventTypes.turnCompleteLegacy: {
|
|
251
|
+
const content: string = eventData.content ?? frame.content ?? "";
|
|
252
|
+
if (content && !state.turnStreamed && !isLlmMetadata(content) && lastAssistantText(state) !== content) {
|
|
253
|
+
pushAssistantText(state, content, at);
|
|
254
|
+
}
|
|
255
|
+
endTurn(state);
|
|
256
|
+
state.turnStreamed = false;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
case AgentEventTypes.executionCancelled:
|
|
261
|
+
case AgentEventTypes.executionCancelledLegacy:
|
|
262
|
+
endTurn(state);
|
|
263
|
+
state.items.push({ id: nextItemId("cancel"), at, eventType: AgentEventTypes.executionCancelled, eventData: { message: eventData.message ?? "Stopped." } });
|
|
264
|
+
break;
|
|
265
|
+
|
|
266
|
+
case AgentEventTypes.agentError:
|
|
267
|
+
case AgentEventTypes.error: {
|
|
268
|
+
const message: string = eventData.error ?? frame.content ?? "Unknown error";
|
|
269
|
+
endTurn(state);
|
|
270
|
+
if (!replay && /unauthori[sz]ed|access token|lacks required permission/i.test(message)) state.authError = message;
|
|
271
|
+
state.items.push({ id: nextItemId("err"), at, eventType: AgentEventTypes.agentError, eventData: { error: message } });
|
|
272
|
+
break;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
default:
|
|
276
|
+
// Bookkeeping events (LlmRequest, SkillActivation, ...) are not rendered without a widget.
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/** Rebuilds thread items from stored session events (`/api/agent/sessions/{id}/messages`). */
|
|
282
|
+
export function historyToItems(rows: any[]): AgentChatItem[] {
|
|
283
|
+
const state = createThreadState();
|
|
284
|
+
for (const row of rows) {
|
|
285
|
+
const frame: AgentWireFrame = { ...row, event_type: row.event_type ?? (row.role === "user" ? AgentEventTypes.userMessage : row.role === "assistant" ? AgentEventTypes.llmComplete : "") };
|
|
286
|
+
const at = row.timestamp ? new Date(row.timestamp).getTime() : Date.now();
|
|
287
|
+
applyAgentEvent(state, normalizeAgentFrame(frame), true, at);
|
|
288
|
+
}
|
|
289
|
+
freezeLiveTool(state);
|
|
290
|
+
stopStreaming(state);
|
|
291
|
+
return state.items;
|
|
292
|
+
}
|