@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
package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentToolSessionsPanel.js","sourceRoot":"","sources":["../../../../../../src/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport qs from \"qs\";\nimport { AlertCircle, Clock3, RefreshCw, Search } from \"lucide-react\";\nimport { createSolidEntityApi } from \"../../../../../redux/api/solidEntityApi\";\nimport { SolidAutocomplete, SolidDialog, SolidDialogDescription, SolidDialogHeader, SolidDialogTitle, SolidInput, SolidSelect } from \"../../../../shad-cn-ui\";\nimport { AgentEventOutcomeListWidget, getAgentEventFailure } from \"../agentEvent/list/AgentEventOutcomeListWidget\";\nimport \"../../../../../routes/pages/admin/core/AgentToolRegistryEditorPage.css\";\n\ntype AgentOption = { id: number | string; name?: string; title?: string };\ntype SessionRecord = {\n id: number;\n sessionId?: string;\n startedAt?: string | null;\n endedAt?: string | null;\n status?: string | null;\n agent?: AgentOption | number | string | null;\n [key: string]: any;\n};\n\nfunction unwrapRecords(result: any): any[] {\n return Array.isArray(result?.records) ? result.records : [];\n}\n\nfunction ago(value?: string | null): string {\n if (!value) return \"Start time unknown\";\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return \"Start time unknown\";\n const seconds = Math.max(0, Math.floor((Date.now() - date.getTime()) / 1000));\n if (seconds < 60) return \"Started just now\";\n if (seconds < 3600) return `Started ${Math.floor(seconds / 60)}m ago`;\n if (seconds < 86400) return `Started ${Math.floor(seconds / 3600)}h ago`;\n const days = Math.floor(seconds / 86400);\n return days < 30 ? `Started ${days}d ago` : `Started ${date.toLocaleDateString()}`;\n}\n\nfunction agentName(session: SessionRecord, agents: AgentOption[]): string {\n const relation = session.agent;\n const id = relation && typeof relation === \"object\" ? relation.id : relation;\n const agent = agents.find((item) => String(item.id) === String(id));\n if (agent) return agent.name ?? agent.title ?? \"Unnamed agent\";\n if (relation && typeof relation === \"object\") return relation.name ?? relation.title ?? \"Unnamed agent\";\n return \"Unknown agent\";\n}\n\nfunction sessionQuery(agentId: number | string, processId?: number): string {\n const processFilter = processId == null ? \"\" : `&filters[process][id][$eq]=${encodeURIComponent(String(processId))}`;\n return `offset=0&limit=1000&populate[0]=agent&sort[0]=startedAt%3Adesc&filters[agent][id][$eq]=${encodeURIComponent(String(agentId))}${processFilter}`;\n}\n\nfunction eventsQuery(sessionId: number, offset: number, limit: number, eventType: string, search: string): string {\n const conditions: Record<string, any>[] = [{ session: { $eq: sessionId } }];\n if (eventType !== \"all\") conditions.push({ eventType: { $eq: eventType } });\n if (search.trim()) conditions.push({ $or: [\"eventType\", \"toolName\", \"content\", \"toolOutput\", \"eventData\"]\n .map((field) => ({ [field]: { $containsi: search.trim() } })) });\n return qs.stringify({\n offset, limit, sort: [\"createdAt:asc\", \"id:asc\"], filters: { $and: conditions },\n fields: [\"id\", \"createdAt\", \"eventType\", \"toolName\", \"cost\", \"inputTokens\", \"outputTokens\", \"toolReturncode\", \"toolOutput\", \"eventData\"],\n });\n}\n\ntype Props = { agents?: AgentOption[]; agentId?: number | string; agentLabel?: string; processId?: number; processLabel?: string };\nconst EMPTY_AGENTS: AgentOption[] = [];\nconst EVENT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\nconst EventFormView = React.lazy(() => import(\"../../../form/SolidFormView\"));\n\nexport function AgentSessionsPanel({ agents, agentId, agentLabel, processId, processLabel }: Props) {\n const linkedAgents = agents ?? EMPTY_AGENTS;\n const scopedAgents = React.useMemo(() => agentId != null\n ? [{ id: agentId, name: agentLabel ?? \"Agent\" }]\n : linkedAgents, [agentId, agentLabel, linkedAgents]);\n const sessionApi = React.useMemo(() => createSolidEntityApi(\"agentSession\"), []);\n const eventApi = React.useMemo(() => createSolidEntityApi(\"agentEvent\"), []);\n const [fetchSessions] = sessionApi.useLazyGetSolidEntitiesQuery();\n const [sessions, setSessions] = React.useState<SessionRecord[]>([]);\n const [selectedAgent, setSelectedAgent] = React.useState<{ id: string; label: string } | null>(null);\n const [selectedSessionId, setSelectedSessionId] = React.useState<number | null>(null);\n const [selectedEventId, setSelectedEventId] = React.useState<number | null>(null);\n const eventsTableRef = React.useRef<HTMLDivElement>(null);\n const [isLoadingSessions, setIsLoadingSessions] = React.useState(false);\n const [sessionsError, setSessionsError] = React.useState(false);\n const [eventTypeFilter, setEventTypeFilter] = React.useState(\"all\");\n const [outcomeFilter, setOutcomeFilter] = React.useState(\"all\");\n const [eventSearch, setEventSearch] = React.useState(\"\");\n const [eventSearchQuery, setEventSearchQuery] = React.useState(\"\");\n const [eventPagination, setEventPagination] = React.useState({ scope: \"\", page: 1 });\n const [eventPageSize, setEventPageSize] = React.useState(25);\n const eventPageSizeId = React.useId();\n const [sessionSearch, setSessionSearch] = React.useState(\"\");\n const [sessionRefreshVersion, setSessionRefreshVersion] = React.useState(0);\n const eventScope = JSON.stringify([selectedSessionId, eventTypeFilter, eventSearchQuery]);\n const currentEventPage = eventPagination.scope === eventScope ? eventPagination.page : 1;\n const eventFirst = (currentEventPage - 1) * eventPageSize;\n const eventResult = eventApi.useGetSolidEntitiesQuery(\n selectedSessionId == null ? \"\" : eventsQuery(selectedSessionId, eventFirst, eventPageSize, eventTypeFilter, eventSearchQuery),\n { skip: selectedSessionId == null });\n const eventTypesResult = eventApi.useGetSolidEntitiesQuery(qs.stringify({\n groupBy: [\"eventType\"], sort: [\"eventType:asc\"], filters: { session: { $eq: selectedSessionId } },\n }), { skip: selectedSessionId == null });\n const events = unwrapRecords(eventResult.currentData);\n const totalEvents = Number(eventResult.currentData?.meta?.totalRecords ?? 0);\n const eventPageCount = Math.max(1, Math.ceil(totalEvents / eventPageSize));\n const isLoadingEvents = eventResult.isFetching || eventSearch.trim() !== eventSearchQuery;\n const eventsError = eventResult.isError;\n const agentOptions = React.useMemo(() => linkedAgents.map((agent) => ({\n id: String(agent.id),\n label: agent.name ?? agent.title ?? `Agent ${agent.id}`,\n })), [linkedAgents]);\n const linkedAgentKey = agentOptions.map((agent) => agent.id).join(\",\");\n\n React.useEffect(() => {\n let alive = true;\n const requestedAgents = agentId != null ? scopedAgents : selectedAgent ? scopedAgents.filter((agent) => String(agent.id) === selectedAgent.id) : scopedAgents;\n if (!requestedAgents.length) {\n setSessions([]);\n setSelectedSessionId(null);\n return;\n }\n setIsLoadingSessions(true);\n setSessionsError(false);\n void Promise.all(requestedAgents.map(async (agent) => {\n const result = await fetchSessions(sessionQuery(agent.id, processId), false).unwrap();\n return unwrapRecords(result).map((item) => ({\n ...item,\n agent: item.agent && typeof item.agent === \"object\" ? item.agent : agent,\n } as SessionRecord));\n })).then((groups) => {\n if (!alive) return;\n const unique = new Map<string, SessionRecord>();\n groups.flat().forEach((session) => unique.set(String(session.id), session));\n const ordered = Array.from(unique.values()).sort((a, b) => new Date(b.startedAt ?? 0).getTime() - new Date(a.startedAt ?? 0).getTime());\n setSessions(ordered);\n setSelectedSessionId((current) => ordered.some((session) => session.id === current) ? current : ordered[0]?.id ?? null);\n }).catch(() => {\n if (alive) {\n setSessions([]);\n setSelectedSessionId(null);\n setSessionsError(true);\n }\n }).finally(() => alive && setIsLoadingSessions(false));\n return () => { alive = false; };\n }, [agentId, fetchSessions, linkedAgentKey, processId, scopedAgents, selectedAgent, sessionRefreshVersion]);\n\n React.useEffect(() => {\n const timer = window.setTimeout(() => setEventSearchQuery(eventSearch.trim()), 300);\n return () => window.clearTimeout(timer);\n }, [eventSearch]);\n\n const eventTypes = Array.from(new Set([\n ...((eventTypesResult.currentData?.groupMeta ?? []) as any[]).map((group) => String(group.groupValue ?? \"\")),\n ...events.map((event) => String(event.eventType ?? \"\")),\n eventTypeFilter === \"all\" ? \"\" : eventTypeFilter,\n ].filter(Boolean))).sort();\n const visibleEvents = events.filter((event) => outcomeFilter === \"all\"\n || Boolean(getAgentEventFailure(event)) === (outcomeFilter === \"failure\"));\n React.useEffect(() => {\n if (!isLoadingEvents && eventResult.currentData && currentEventPage > eventPageCount) {\n setEventPagination({ scope: eventScope, page: eventPageCount });\n }\n }, [isLoadingEvents, eventResult.currentData, currentEventPage, eventPageCount, eventScope]);\n React.useEffect(() => {\n if (eventsTableRef.current) eventsTableRef.current.scrollTop = 0;\n }, [currentEventPage, eventPageSize, selectedSessionId, eventSearch, eventTypeFilter, outcomeFilter]);\n const selectedSession = sessions.find((session) => session.id === selectedSessionId);\n const visibleSessions = React.useMemo(() => {\n const query = sessionSearch.trim().toLowerCase();\n if (!query) return sessions;\n return sessions.filter((session) => [session.sessionId, session.id, session.status, agentName(session, scopedAgents)]\n .some((value) => String(value ?? \"\").toLowerCase().includes(query)));\n }, [scopedAgents, sessionSearch, sessions]);\n\n return (\n <section className=\"agent-tool-editor__sessions\" aria-label=\"Sessions and events\">\n <aside className=\"agent-tool-editor__sessions-sidebar\">\n <header className=\"agent-tool-editor__sessions-sidebar-head\">\n <div><div className=\"agent-tool-editor__sessions-heading\"><h2>Sessions</h2><button type=\"button\" className={`agent-tool-editor__refresh${isLoadingSessions ? \" is-loading\" : \"\"}`} aria-label=\"Refresh sessions\" title=\"Refresh sessions\" disabled={isLoadingSessions} onClick={() => setSessionRefreshVersion((version) => version + 1)}><RefreshCw size={13} /></button><span>{visibleSessions.length}{visibleSessions.length !== sessions.length ? ` / ${sessions.length}` : \"\"}</span></div></div>\n <p>{processId != null ? `In ${processLabel ?? `process #${processId}`}.` : agentId != null ? \"Browse activity for this agent.\" : \"Browse activity across linked agents.\"}</p>\n {agentId == null && linkedAgents.length > 1 && <label className=\"agent-tool-editor__sessions-agent-filter\"><span>Agent</span>\n <SolidAutocomplete\n value={selectedAgent ? [selectedAgent] : []}\n suggestions={agentOptions}\n field=\"label\"\n multiple\n maxVisibleChips={1}\n dropdown\n forceSelection\n portal\n placeholder=\"All linked agents\"\n onChange={(event: any) => setSelectedAgent(Array.isArray(event.value) ? event.value[0] ?? null : null)}\n />\n </label>}\n <label className=\"agent-tool-editor__session-search\"><span className=\"sr-only\">Find a session</span><Search size={14} /><SolidInput value={sessionSearch} placeholder=\"Find session or agent…\" onChange={(event: any) => setSessionSearch(event.target.value)} /></label>\n </header>\n <div className=\"agent-tool-editor__session-list\" role=\"listbox\" aria-label=\"Sessions\">\n {isLoadingSessions ? <p className=\"agent-tool-editor__sessions-message\">Loading sessions…</p>\n : sessionsError ? <p className=\"agent-tool-editor__sessions-message agent-tool-editor__sessions-message--error\"><AlertCircle size={15} /> Could not load sessions.</p>\n : sessions.length === 0 ? <p className=\"agent-tool-editor__sessions-message\">{processId != null ? \"No sessions assigned to this process. Older unassigned sessions remain in the Sessions tab.\" : \"No sessions found for linked agents.\"}</p>\n : visibleSessions.length === 0 ? <p className=\"agent-tool-editor__sessions-message\">No sessions match this search.</p>\n : visibleSessions.map((session) => {\n const sessionLabel = session.sessionId ?? String(session.id);\n const rawStatus = String(session.status ?? \"\").toLowerCase();\n const statusLabel = rawStatus === \"active\" ? \"Idle\"\n : rawStatus === \"awaiting_input\" ? \"Awaiting input\"\n : rawStatus === \"awaiting_approval\" ? \"Awaiting approval\"\n : rawStatus ? rawStatus.replace(/[_-]+/g, \" \") : session.endedAt ? \"Ended\" : \"Open\";\n return <button\n type=\"button\"\n role=\"option\"\n aria-selected={session.id === selectedSessionId}\n className={`agent-tool-editor__session-item${session.id === selectedSessionId ? \" is-selected\" : \"\"}`}\n key={session.id}\n onClick={() => setSelectedSessionId(session.id)}\n title={sessionLabel}\n >\n <span className=\"agent-tool-editor__session-item-id\" title={sessionLabel}>{sessionLabel}</span>\n <span className=\"agent-tool-editor__session-item-meta\"><span><Clock3 size={12} /> {ago(session.startedAt)}</span><span className={`agent-tool-editor__session-status${rawStatus === \"running\" ? \" is-running\" : rawStatus === \"active\" ? \" is-idle\" : \"\"}`}>{statusLabel}</span></span>\n {agentId == null && <small>{agentName(session, scopedAgents)}</small>}\n </button>;\n })}\n </div>\n </aside>\n\n <div className=\"agent-tool-editor__session-events\">\n <header className=\"agent-tool-editor__events-head\">\n <div className=\"agent-tool-editor__events-title\">\n <div><div className=\"agent-tool-editor__heading-with-refresh\"><h2>Events</h2><button type=\"button\" className={`agent-tool-editor__refresh${isLoadingEvents ? \" is-loading\" : \"\"}`} aria-label=\"Refresh events\" title=\"Refresh events\" disabled={!selectedSessionId || isLoadingEvents} onClick={() => { void eventResult.refetch(); void eventTypesResult.refetch(); }}><RefreshCw size={13} /></button></div><p>{selectedSession ? `${selectedSession.sessionId ?? selectedSession.id} · ${agentName(selectedSession, scopedAgents)}` : \"Select a session to inspect its events.\"}</p></div>\n <span>{outcomeFilter === \"all\" ? totalEvents : `${visibleEvents.length} / ${events.length} on page`}</span>\n </div>\n <div className=\"agent-tool-editor__event-filters\">\n <label><span>Event type</span><select value={eventTypeFilter} onChange={(event: React.ChangeEvent<HTMLSelectElement>) => setEventTypeFilter(event.target.value)}>\n <option value=\"all\">All types</option>{eventTypes.map((eventType) => <option key={eventType} value={eventType}>{eventType}</option>)}\n </select></label>\n <label><span>Outcome (current page)</span><select value={outcomeFilter} onChange={(event: React.ChangeEvent<HTMLSelectElement>) => setOutcomeFilter(event.target.value)}>\n <option value=\"all\">All outcomes</option><option value=\"success\">Success</option><option value=\"failure\">Failure</option>\n </select></label>\n <label className=\"agent-tool-editor__event-search\"><span>Search events</span><span className=\"agent-tool-editor__event-search-control\"><Search size={15} /><SolidInput value={eventSearch} placeholder=\"Search events…\" onChange={(event: React.ChangeEvent<HTMLInputElement>) => setEventSearch(event.target.value)} /></span></label>\n <nav className=\"agent-tool-editor__event-pagination\" aria-label=\"Event pagination\">\n <div className=\"solid-paginator-meta flex items-center gap-2\">\n <label className=\"solid-paginator-label\" htmlFor={eventPageSizeId}>Rows</label>\n <SolidSelect id={eventPageSizeId} value={eventPageSize} className=\"solid-paginator-select\"\n options={EVENT_PAGE_SIZE_OPTIONS.map((value) => ({ label: String(value), value }))}\n native={false} menuPlacement=\"bottom\" disabled={isLoadingEvents || eventsError}\n onChange={({ value }) => { setEventPageSize(Number(value)); setEventPagination({ scope: eventScope, page: 1 }); }} />\n <span className=\"solid-paginator-report\" aria-live=\"polite\">{isLoadingEvents ? \"Loading…\" : `${events.length ? eventFirst + 1 : 0} - ${events.length ? Math.min(eventFirst + events.length, totalEvents) : 0} of ${totalEvents}`}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button type=\"button\" className=\"solid-paginator-btn\" aria-label=\"Previous event page\" disabled={isLoadingEvents || eventsError || currentEventPage === 1} onClick={() => setEventPagination({ scope: eventScope, page: currentEventPage - 1 })}>Previous</button>\n <button type=\"button\" className=\"solid-paginator-btn\" aria-label=\"Next event page\" disabled={isLoadingEvents || eventsError || currentEventPage >= eventPageCount} onClick={() => setEventPagination({ scope: eventScope, page: currentEventPage + 1 })}>Next</button>\n </div>\n </nav>\n </div>\n </header>\n <div className=\"agent-tool-editor__events-table-wrap\" ref={eventsTableRef}>\n {isLoadingEvents ? <p className=\"agent-tool-editor__sessions-message\">Loading events…</p>\n : eventsError ? <p className=\"agent-tool-editor__sessions-message agent-tool-editor__sessions-message--error\"><AlertCircle size={15} /> Could not load events for this session.</p>\n : !selectedSession ? <p className=\"agent-tool-editor__sessions-message\">Choose a session from the left to view its events.</p>\n : visibleEvents.length === 0 ? <p className=\"agent-tool-editor__sessions-message\">{events.length ? \"No events on this page match the outcome filter.\" : \"No events match these filters.\"}</p>\n : <table className=\"agent-tool-editor__events-table\">\n <thead><tr><th>Time</th><th>Event type</th><th>Tool</th><th>Cost</th><th>Tokens</th></tr></thead>\n <tbody>{visibleEvents.map((event) => <tr key={event.id} className=\"agent-tool-editor__event-row\"\n onClick={(click) => { if (!(click.target as Element).closest(\"button, a\")) setSelectedEventId(event.id); }}>\n <td><button type=\"button\" className=\"agent-tool-editor__event-open\" aria-label={`View ${event.eventType || \"event\"} #${event.id}`} onClick={() => setSelectedEventId(event.id)}>\n {event.createdAt ? new Date(event.createdAt).toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }) : \"—\"}\n </button></td>\n <td><AgentEventOutcomeListWidget rowData={event} fieldMetadata={{ name: \"eventType\" } as any} solidListViewMetaData={{}} column={{ attrs: {} }} /></td>\n <td>{event.toolName || \"—\"}</td>\n <td>{event.cost == null ? \"—\" : Number(event.cost).toLocaleString(undefined, { maximumFractionDigits: 6 })}</td>\n <td>{event.inputTokens || event.outputTokens ? `${event.inputTokens ?? 0} / ${event.outputTokens ?? 0}` : \"—\"}</td>\n </tr>)}</tbody>\n </table>}\n </div>\n </div>\n <SolidDialog open={selectedEventId != null} onOpenChange={(open) => { if (!open) setSelectedEventId(null); }}\n className=\"solid-dialog solid-inline-relation-dialog\" style={{ width: \"min(70rem, 95vw)\" }} showHeader={false}>\n <SolidDialogHeader className=\"solid-sr-only\">\n <SolidDialogTitle>Event #{selectedEventId}</SolidDialogTitle>\n <SolidDialogDescription>View the selected event's details and data.</SolidDialogDescription>\n </SolidDialogHeader>\n {selectedEventId != null && <React.Suspense fallback={<p className=\"agent-tool-editor__sessions-message\">Loading event…</p>}>\n <EventFormView key={selectedEventId} moduleName=\"solid-core\" modelName=\"agentEvent\" id={String(selectedEventId)} embeded viewMode=\"view\" handlePopupClose={() => setSelectedEventId(null)} />\n </React.Suspense>}\n </SolidDialog>\n </section>\n );\n}\n\nexport const AgentToolSessionsPanel = AgentSessionsPanel;\n"]}
|
package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import qs from "qs";
|
|
3
|
+
import { AlertCircle, Clock3, RefreshCw, Search } from "lucide-react";
|
|
4
|
+
import { createSolidEntityApi } from "../../../../../redux/api/solidEntityApi";
|
|
5
|
+
import { SolidAutocomplete, SolidDialog, SolidDialogDescription, SolidDialogHeader, SolidDialogTitle, SolidInput, SolidSelect } from "../../../../shad-cn-ui";
|
|
6
|
+
import { AgentEventOutcomeListWidget, getAgentEventFailure } from "../agentEvent/list/AgentEventOutcomeListWidget";
|
|
7
|
+
import "../../../../../routes/pages/admin/core/AgentToolRegistryEditorPage.css";
|
|
8
|
+
|
|
9
|
+
type AgentOption = { id: number | string; name?: string; title?: string };
|
|
10
|
+
type SessionRecord = {
|
|
11
|
+
id: number;
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
startedAt?: string | null;
|
|
14
|
+
endedAt?: string | null;
|
|
15
|
+
status?: string | null;
|
|
16
|
+
agent?: AgentOption | number | string | null;
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
function unwrapRecords(result: any): any[] {
|
|
21
|
+
return Array.isArray(result?.records) ? result.records : [];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function ago(value?: string | null): string {
|
|
25
|
+
if (!value) return "Start time unknown";
|
|
26
|
+
const date = new Date(value);
|
|
27
|
+
if (Number.isNaN(date.getTime())) return "Start time unknown";
|
|
28
|
+
const seconds = Math.max(0, Math.floor((Date.now() - date.getTime()) / 1000));
|
|
29
|
+
if (seconds < 60) return "Started just now";
|
|
30
|
+
if (seconds < 3600) return `Started ${Math.floor(seconds / 60)}m ago`;
|
|
31
|
+
if (seconds < 86400) return `Started ${Math.floor(seconds / 3600)}h ago`;
|
|
32
|
+
const days = Math.floor(seconds / 86400);
|
|
33
|
+
return days < 30 ? `Started ${days}d ago` : `Started ${date.toLocaleDateString()}`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function agentName(session: SessionRecord, agents: AgentOption[]): string {
|
|
37
|
+
const relation = session.agent;
|
|
38
|
+
const id = relation && typeof relation === "object" ? relation.id : relation;
|
|
39
|
+
const agent = agents.find((item) => String(item.id) === String(id));
|
|
40
|
+
if (agent) return agent.name ?? agent.title ?? "Unnamed agent";
|
|
41
|
+
if (relation && typeof relation === "object") return relation.name ?? relation.title ?? "Unnamed agent";
|
|
42
|
+
return "Unknown agent";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function sessionQuery(agentId: number | string, processId?: number): string {
|
|
46
|
+
const processFilter = processId == null ? "" : `&filters[process][id][$eq]=${encodeURIComponent(String(processId))}`;
|
|
47
|
+
return `offset=0&limit=1000&populate[0]=agent&sort[0]=startedAt%3Adesc&filters[agent][id][$eq]=${encodeURIComponent(String(agentId))}${processFilter}`;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function eventsQuery(sessionId: number, offset: number, limit: number, eventType: string, search: string): string {
|
|
51
|
+
const conditions: Record<string, any>[] = [{ session: { $eq: sessionId } }];
|
|
52
|
+
if (eventType !== "all") conditions.push({ eventType: { $eq: eventType } });
|
|
53
|
+
if (search.trim()) conditions.push({ $or: ["eventType", "toolName", "content", "toolOutput", "eventData"]
|
|
54
|
+
.map((field) => ({ [field]: { $containsi: search.trim() } })) });
|
|
55
|
+
return qs.stringify({
|
|
56
|
+
offset, limit, sort: ["createdAt:asc", "id:asc"], filters: { $and: conditions },
|
|
57
|
+
fields: ["id", "createdAt", "eventType", "toolName", "cost", "inputTokens", "outputTokens", "toolReturncode", "toolOutput", "eventData"],
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
type Props = { agents?: AgentOption[]; agentId?: number | string; agentLabel?: string; processId?: number; processLabel?: string };
|
|
62
|
+
const EMPTY_AGENTS: AgentOption[] = [];
|
|
63
|
+
const EVENT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
|
|
64
|
+
const EventFormView = React.lazy(() => import("../../../form/SolidFormView"));
|
|
65
|
+
|
|
66
|
+
export function AgentSessionsPanel({ agents, agentId, agentLabel, processId, processLabel }: Props) {
|
|
67
|
+
const linkedAgents = agents ?? EMPTY_AGENTS;
|
|
68
|
+
const scopedAgents = React.useMemo(() => agentId != null
|
|
69
|
+
? [{ id: agentId, name: agentLabel ?? "Agent" }]
|
|
70
|
+
: linkedAgents, [agentId, agentLabel, linkedAgents]);
|
|
71
|
+
const sessionApi = React.useMemo(() => createSolidEntityApi("agentSession"), []);
|
|
72
|
+
const eventApi = React.useMemo(() => createSolidEntityApi("agentEvent"), []);
|
|
73
|
+
const [fetchSessions] = sessionApi.useLazyGetSolidEntitiesQuery();
|
|
74
|
+
const [sessions, setSessions] = React.useState<SessionRecord[]>([]);
|
|
75
|
+
const [selectedAgent, setSelectedAgent] = React.useState<{ id: string; label: string } | null>(null);
|
|
76
|
+
const [selectedSessionId, setSelectedSessionId] = React.useState<number | null>(null);
|
|
77
|
+
const [selectedEventId, setSelectedEventId] = React.useState<number | null>(null);
|
|
78
|
+
const eventsTableRef = React.useRef<HTMLDivElement>(null);
|
|
79
|
+
const [isLoadingSessions, setIsLoadingSessions] = React.useState(false);
|
|
80
|
+
const [sessionsError, setSessionsError] = React.useState(false);
|
|
81
|
+
const [eventTypeFilter, setEventTypeFilter] = React.useState("all");
|
|
82
|
+
const [outcomeFilter, setOutcomeFilter] = React.useState("all");
|
|
83
|
+
const [eventSearch, setEventSearch] = React.useState("");
|
|
84
|
+
const [eventSearchQuery, setEventSearchQuery] = React.useState("");
|
|
85
|
+
const [eventPagination, setEventPagination] = React.useState({ scope: "", page: 1 });
|
|
86
|
+
const [eventPageSize, setEventPageSize] = React.useState(25);
|
|
87
|
+
const eventPageSizeId = React.useId();
|
|
88
|
+
const [sessionSearch, setSessionSearch] = React.useState("");
|
|
89
|
+
const [sessionRefreshVersion, setSessionRefreshVersion] = React.useState(0);
|
|
90
|
+
const eventScope = JSON.stringify([selectedSessionId, eventTypeFilter, eventSearchQuery]);
|
|
91
|
+
const currentEventPage = eventPagination.scope === eventScope ? eventPagination.page : 1;
|
|
92
|
+
const eventFirst = (currentEventPage - 1) * eventPageSize;
|
|
93
|
+
const eventResult = eventApi.useGetSolidEntitiesQuery(
|
|
94
|
+
selectedSessionId == null ? "" : eventsQuery(selectedSessionId, eventFirst, eventPageSize, eventTypeFilter, eventSearchQuery),
|
|
95
|
+
{ skip: selectedSessionId == null });
|
|
96
|
+
const eventTypesResult = eventApi.useGetSolidEntitiesQuery(qs.stringify({
|
|
97
|
+
groupBy: ["eventType"], sort: ["eventType:asc"], filters: { session: { $eq: selectedSessionId } },
|
|
98
|
+
}), { skip: selectedSessionId == null });
|
|
99
|
+
const events = unwrapRecords(eventResult.currentData);
|
|
100
|
+
const totalEvents = Number(eventResult.currentData?.meta?.totalRecords ?? 0);
|
|
101
|
+
const eventPageCount = Math.max(1, Math.ceil(totalEvents / eventPageSize));
|
|
102
|
+
const isLoadingEvents = eventResult.isFetching || eventSearch.trim() !== eventSearchQuery;
|
|
103
|
+
const eventsError = eventResult.isError;
|
|
104
|
+
const agentOptions = React.useMemo(() => linkedAgents.map((agent) => ({
|
|
105
|
+
id: String(agent.id),
|
|
106
|
+
label: agent.name ?? agent.title ?? `Agent ${agent.id}`,
|
|
107
|
+
})), [linkedAgents]);
|
|
108
|
+
const linkedAgentKey = agentOptions.map((agent) => agent.id).join(",");
|
|
109
|
+
|
|
110
|
+
React.useEffect(() => {
|
|
111
|
+
let alive = true;
|
|
112
|
+
const requestedAgents = agentId != null ? scopedAgents : selectedAgent ? scopedAgents.filter((agent) => String(agent.id) === selectedAgent.id) : scopedAgents;
|
|
113
|
+
if (!requestedAgents.length) {
|
|
114
|
+
setSessions([]);
|
|
115
|
+
setSelectedSessionId(null);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
setIsLoadingSessions(true);
|
|
119
|
+
setSessionsError(false);
|
|
120
|
+
void Promise.all(requestedAgents.map(async (agent) => {
|
|
121
|
+
const result = await fetchSessions(sessionQuery(agent.id, processId), false).unwrap();
|
|
122
|
+
return unwrapRecords(result).map((item) => ({
|
|
123
|
+
...item,
|
|
124
|
+
agent: item.agent && typeof item.agent === "object" ? item.agent : agent,
|
|
125
|
+
} as SessionRecord));
|
|
126
|
+
})).then((groups) => {
|
|
127
|
+
if (!alive) return;
|
|
128
|
+
const unique = new Map<string, SessionRecord>();
|
|
129
|
+
groups.flat().forEach((session) => unique.set(String(session.id), session));
|
|
130
|
+
const ordered = Array.from(unique.values()).sort((a, b) => new Date(b.startedAt ?? 0).getTime() - new Date(a.startedAt ?? 0).getTime());
|
|
131
|
+
setSessions(ordered);
|
|
132
|
+
setSelectedSessionId((current) => ordered.some((session) => session.id === current) ? current : ordered[0]?.id ?? null);
|
|
133
|
+
}).catch(() => {
|
|
134
|
+
if (alive) {
|
|
135
|
+
setSessions([]);
|
|
136
|
+
setSelectedSessionId(null);
|
|
137
|
+
setSessionsError(true);
|
|
138
|
+
}
|
|
139
|
+
}).finally(() => alive && setIsLoadingSessions(false));
|
|
140
|
+
return () => { alive = false; };
|
|
141
|
+
}, [agentId, fetchSessions, linkedAgentKey, processId, scopedAgents, selectedAgent, sessionRefreshVersion]);
|
|
142
|
+
|
|
143
|
+
React.useEffect(() => {
|
|
144
|
+
const timer = window.setTimeout(() => setEventSearchQuery(eventSearch.trim()), 300);
|
|
145
|
+
return () => window.clearTimeout(timer);
|
|
146
|
+
}, [eventSearch]);
|
|
147
|
+
|
|
148
|
+
const eventTypes = Array.from(new Set([
|
|
149
|
+
...((eventTypesResult.currentData?.groupMeta ?? []) as any[]).map((group) => String(group.groupValue ?? "")),
|
|
150
|
+
...events.map((event) => String(event.eventType ?? "")),
|
|
151
|
+
eventTypeFilter === "all" ? "" : eventTypeFilter,
|
|
152
|
+
].filter(Boolean))).sort();
|
|
153
|
+
const visibleEvents = events.filter((event) => outcomeFilter === "all"
|
|
154
|
+
|| Boolean(getAgentEventFailure(event)) === (outcomeFilter === "failure"));
|
|
155
|
+
React.useEffect(() => {
|
|
156
|
+
if (!isLoadingEvents && eventResult.currentData && currentEventPage > eventPageCount) {
|
|
157
|
+
setEventPagination({ scope: eventScope, page: eventPageCount });
|
|
158
|
+
}
|
|
159
|
+
}, [isLoadingEvents, eventResult.currentData, currentEventPage, eventPageCount, eventScope]);
|
|
160
|
+
React.useEffect(() => {
|
|
161
|
+
if (eventsTableRef.current) eventsTableRef.current.scrollTop = 0;
|
|
162
|
+
}, [currentEventPage, eventPageSize, selectedSessionId, eventSearch, eventTypeFilter, outcomeFilter]);
|
|
163
|
+
const selectedSession = sessions.find((session) => session.id === selectedSessionId);
|
|
164
|
+
const visibleSessions = React.useMemo(() => {
|
|
165
|
+
const query = sessionSearch.trim().toLowerCase();
|
|
166
|
+
if (!query) return sessions;
|
|
167
|
+
return sessions.filter((session) => [session.sessionId, session.id, session.status, agentName(session, scopedAgents)]
|
|
168
|
+
.some((value) => String(value ?? "").toLowerCase().includes(query)));
|
|
169
|
+
}, [scopedAgents, sessionSearch, sessions]);
|
|
170
|
+
|
|
171
|
+
return (
|
|
172
|
+
<section className="agent-tool-editor__sessions" aria-label="Sessions and events">
|
|
173
|
+
<aside className="agent-tool-editor__sessions-sidebar">
|
|
174
|
+
<header className="agent-tool-editor__sessions-sidebar-head">
|
|
175
|
+
<div><div className="agent-tool-editor__sessions-heading"><h2>Sessions</h2><button type="button" className={`agent-tool-editor__refresh${isLoadingSessions ? " is-loading" : ""}`} aria-label="Refresh sessions" title="Refresh sessions" disabled={isLoadingSessions} onClick={() => setSessionRefreshVersion((version) => version + 1)}><RefreshCw size={13} /></button><span>{visibleSessions.length}{visibleSessions.length !== sessions.length ? ` / ${sessions.length}` : ""}</span></div></div>
|
|
176
|
+
<p>{processId != null ? `In ${processLabel ?? `process #${processId}`}.` : agentId != null ? "Browse activity for this agent." : "Browse activity across linked agents."}</p>
|
|
177
|
+
{agentId == null && linkedAgents.length > 1 && <label className="agent-tool-editor__sessions-agent-filter"><span>Agent</span>
|
|
178
|
+
<SolidAutocomplete
|
|
179
|
+
value={selectedAgent ? [selectedAgent] : []}
|
|
180
|
+
suggestions={agentOptions}
|
|
181
|
+
field="label"
|
|
182
|
+
multiple
|
|
183
|
+
maxVisibleChips={1}
|
|
184
|
+
dropdown
|
|
185
|
+
forceSelection
|
|
186
|
+
portal
|
|
187
|
+
placeholder="All linked agents"
|
|
188
|
+
onChange={(event: any) => setSelectedAgent(Array.isArray(event.value) ? event.value[0] ?? null : null)}
|
|
189
|
+
/>
|
|
190
|
+
</label>}
|
|
191
|
+
<label className="agent-tool-editor__session-search"><span className="sr-only">Find a session</span><Search size={14} /><SolidInput value={sessionSearch} placeholder="Find session or agent…" onChange={(event: any) => setSessionSearch(event.target.value)} /></label>
|
|
192
|
+
</header>
|
|
193
|
+
<div className="agent-tool-editor__session-list" role="listbox" aria-label="Sessions">
|
|
194
|
+
{isLoadingSessions ? <p className="agent-tool-editor__sessions-message">Loading sessions…</p>
|
|
195
|
+
: sessionsError ? <p className="agent-tool-editor__sessions-message agent-tool-editor__sessions-message--error"><AlertCircle size={15} /> Could not load sessions.</p>
|
|
196
|
+
: sessions.length === 0 ? <p className="agent-tool-editor__sessions-message">{processId != null ? "No sessions assigned to this process. Older unassigned sessions remain in the Sessions tab." : "No sessions found for linked agents."}</p>
|
|
197
|
+
: visibleSessions.length === 0 ? <p className="agent-tool-editor__sessions-message">No sessions match this search.</p>
|
|
198
|
+
: visibleSessions.map((session) => {
|
|
199
|
+
const sessionLabel = session.sessionId ?? String(session.id);
|
|
200
|
+
const rawStatus = String(session.status ?? "").toLowerCase();
|
|
201
|
+
const statusLabel = rawStatus === "active" ? "Idle"
|
|
202
|
+
: rawStatus === "awaiting_input" ? "Awaiting input"
|
|
203
|
+
: rawStatus === "awaiting_approval" ? "Awaiting approval"
|
|
204
|
+
: rawStatus ? rawStatus.replace(/[_-]+/g, " ") : session.endedAt ? "Ended" : "Open";
|
|
205
|
+
return <button
|
|
206
|
+
type="button"
|
|
207
|
+
role="option"
|
|
208
|
+
aria-selected={session.id === selectedSessionId}
|
|
209
|
+
className={`agent-tool-editor__session-item${session.id === selectedSessionId ? " is-selected" : ""}`}
|
|
210
|
+
key={session.id}
|
|
211
|
+
onClick={() => setSelectedSessionId(session.id)}
|
|
212
|
+
title={sessionLabel}
|
|
213
|
+
>
|
|
214
|
+
<span className="agent-tool-editor__session-item-id" title={sessionLabel}>{sessionLabel}</span>
|
|
215
|
+
<span className="agent-tool-editor__session-item-meta"><span><Clock3 size={12} /> {ago(session.startedAt)}</span><span className={`agent-tool-editor__session-status${rawStatus === "running" ? " is-running" : rawStatus === "active" ? " is-idle" : ""}`}>{statusLabel}</span></span>
|
|
216
|
+
{agentId == null && <small>{agentName(session, scopedAgents)}</small>}
|
|
217
|
+
</button>;
|
|
218
|
+
})}
|
|
219
|
+
</div>
|
|
220
|
+
</aside>
|
|
221
|
+
|
|
222
|
+
<div className="agent-tool-editor__session-events">
|
|
223
|
+
<header className="agent-tool-editor__events-head">
|
|
224
|
+
<div className="agent-tool-editor__events-title">
|
|
225
|
+
<div><div className="agent-tool-editor__heading-with-refresh"><h2>Events</h2><button type="button" className={`agent-tool-editor__refresh${isLoadingEvents ? " is-loading" : ""}`} aria-label="Refresh events" title="Refresh events" disabled={!selectedSessionId || isLoadingEvents} onClick={() => { void eventResult.refetch(); void eventTypesResult.refetch(); }}><RefreshCw size={13} /></button></div><p>{selectedSession ? `${selectedSession.sessionId ?? selectedSession.id} · ${agentName(selectedSession, scopedAgents)}` : "Select a session to inspect its events."}</p></div>
|
|
226
|
+
<span>{outcomeFilter === "all" ? totalEvents : `${visibleEvents.length} / ${events.length} on page`}</span>
|
|
227
|
+
</div>
|
|
228
|
+
<div className="agent-tool-editor__event-filters">
|
|
229
|
+
<label><span>Event type</span><select value={eventTypeFilter} onChange={(event: React.ChangeEvent<HTMLSelectElement>) => setEventTypeFilter(event.target.value)}>
|
|
230
|
+
<option value="all">All types</option>{eventTypes.map((eventType) => <option key={eventType} value={eventType}>{eventType}</option>)}
|
|
231
|
+
</select></label>
|
|
232
|
+
<label><span>Outcome (current page)</span><select value={outcomeFilter} onChange={(event: React.ChangeEvent<HTMLSelectElement>) => setOutcomeFilter(event.target.value)}>
|
|
233
|
+
<option value="all">All outcomes</option><option value="success">Success</option><option value="failure">Failure</option>
|
|
234
|
+
</select></label>
|
|
235
|
+
<label className="agent-tool-editor__event-search"><span>Search events</span><span className="agent-tool-editor__event-search-control"><Search size={15} /><SolidInput value={eventSearch} placeholder="Search events…" onChange={(event: React.ChangeEvent<HTMLInputElement>) => setEventSearch(event.target.value)} /></span></label>
|
|
236
|
+
<nav className="agent-tool-editor__event-pagination" aria-label="Event pagination">
|
|
237
|
+
<div className="solid-paginator-meta flex items-center gap-2">
|
|
238
|
+
<label className="solid-paginator-label" htmlFor={eventPageSizeId}>Rows</label>
|
|
239
|
+
<SolidSelect id={eventPageSizeId} value={eventPageSize} className="solid-paginator-select"
|
|
240
|
+
options={EVENT_PAGE_SIZE_OPTIONS.map((value) => ({ label: String(value), value }))}
|
|
241
|
+
native={false} menuPlacement="bottom" disabled={isLoadingEvents || eventsError}
|
|
242
|
+
onChange={({ value }) => { setEventPageSize(Number(value)); setEventPagination({ scope: eventScope, page: 1 }); }} />
|
|
243
|
+
<span className="solid-paginator-report" aria-live="polite">{isLoadingEvents ? "Loading…" : `${events.length ? eventFirst + 1 : 0} - ${events.length ? Math.min(eventFirst + events.length, totalEvents) : 0} of ${totalEvents}`}</span>
|
|
244
|
+
</div>
|
|
245
|
+
<div className="solid-paginator-actions flex items-center gap-2">
|
|
246
|
+
<button type="button" className="solid-paginator-btn" aria-label="Previous event page" disabled={isLoadingEvents || eventsError || currentEventPage === 1} onClick={() => setEventPagination({ scope: eventScope, page: currentEventPage - 1 })}>Previous</button>
|
|
247
|
+
<button type="button" className="solid-paginator-btn" aria-label="Next event page" disabled={isLoadingEvents || eventsError || currentEventPage >= eventPageCount} onClick={() => setEventPagination({ scope: eventScope, page: currentEventPage + 1 })}>Next</button>
|
|
248
|
+
</div>
|
|
249
|
+
</nav>
|
|
250
|
+
</div>
|
|
251
|
+
</header>
|
|
252
|
+
<div className="agent-tool-editor__events-table-wrap" ref={eventsTableRef}>
|
|
253
|
+
{isLoadingEvents ? <p className="agent-tool-editor__sessions-message">Loading events…</p>
|
|
254
|
+
: eventsError ? <p className="agent-tool-editor__sessions-message agent-tool-editor__sessions-message--error"><AlertCircle size={15} /> Could not load events for this session.</p>
|
|
255
|
+
: !selectedSession ? <p className="agent-tool-editor__sessions-message">Choose a session from the left to view its events.</p>
|
|
256
|
+
: visibleEvents.length === 0 ? <p className="agent-tool-editor__sessions-message">{events.length ? "No events on this page match the outcome filter." : "No events match these filters."}</p>
|
|
257
|
+
: <table className="agent-tool-editor__events-table">
|
|
258
|
+
<thead><tr><th>Time</th><th>Event type</th><th>Tool</th><th>Cost</th><th>Tokens</th></tr></thead>
|
|
259
|
+
<tbody>{visibleEvents.map((event) => <tr key={event.id} className="agent-tool-editor__event-row"
|
|
260
|
+
onClick={(click) => { if (!(click.target as Element).closest("button, a")) setSelectedEventId(event.id); }}>
|
|
261
|
+
<td><button type="button" className="agent-tool-editor__event-open" aria-label={`View ${event.eventType || "event"} #${event.id}`} onClick={() => setSelectedEventId(event.id)}>
|
|
262
|
+
{event.createdAt ? new Date(event.createdAt).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" }) : "—"}
|
|
263
|
+
</button></td>
|
|
264
|
+
<td><AgentEventOutcomeListWidget rowData={event} fieldMetadata={{ name: "eventType" } as any} solidListViewMetaData={{}} column={{ attrs: {} }} /></td>
|
|
265
|
+
<td>{event.toolName || "—"}</td>
|
|
266
|
+
<td>{event.cost == null ? "—" : Number(event.cost).toLocaleString(undefined, { maximumFractionDigits: 6 })}</td>
|
|
267
|
+
<td>{event.inputTokens || event.outputTokens ? `${event.inputTokens ?? 0} / ${event.outputTokens ?? 0}` : "—"}</td>
|
|
268
|
+
</tr>)}</tbody>
|
|
269
|
+
</table>}
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
<SolidDialog open={selectedEventId != null} onOpenChange={(open) => { if (!open) setSelectedEventId(null); }}
|
|
273
|
+
className="solid-dialog solid-inline-relation-dialog" style={{ width: "min(70rem, 95vw)" }} showHeader={false}>
|
|
274
|
+
<SolidDialogHeader className="solid-sr-only">
|
|
275
|
+
<SolidDialogTitle>Event #{selectedEventId}</SolidDialogTitle>
|
|
276
|
+
<SolidDialogDescription>View the selected event's details and data.</SolidDialogDescription>
|
|
277
|
+
</SolidDialogHeader>
|
|
278
|
+
{selectedEventId != null && <React.Suspense fallback={<p className="agent-tool-editor__sessions-message">Loading event…</p>}>
|
|
279
|
+
<EventFormView key={selectedEventId} moduleName="solid-core" modelName="agentEvent" id={String(selectedEventId)} embeded viewMode="view" handlePopupClose={() => setSelectedEventId(null)} />
|
|
280
|
+
</React.Suspense>}
|
|
281
|
+
</SolidDialog>
|
|
282
|
+
</section>
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export const AgentToolSessionsPanel = AgentSessionsPanel;
|
package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteModelRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"DeleteModelRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAqB1F,QAAA,MAAM,oBAAoB,UAAW,oCAAoC,4CA4HxE,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js
CHANGED
|
@@ -34,91 +34,131 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
import { jsx as _jsx,
|
|
37
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
38
38
|
import { closePopup } from "../../../../../../redux/features/popupSlice";
|
|
39
|
-
import { useState } from "react";
|
|
39
|
+
import { useEffect, useState } from "react";
|
|
40
40
|
import { useDispatch } from "react-redux";
|
|
41
41
|
import { showToast } from "../../../../../../redux/features/toastSlice";
|
|
42
|
-
import {
|
|
43
|
-
import { createSolidEntityApi } from "../../../../../../redux/api/solidEntityApi";
|
|
42
|
+
import { useApplyDeleteModelMutation, usePreviewDeleteModelMutation } from "../../../../../../redux/api/modelApi";
|
|
44
43
|
import { ERROR_MESSAGES } from "../../../../../../constants/error-messages";
|
|
45
|
-
import { SolidButton, SolidCheckbox } from "../../../../../shad-cn-ui";
|
|
44
|
+
import { SolidButton, SolidCheckbox, SolidSpinner } from "../../../../../shad-cn-ui";
|
|
46
45
|
import { pingBackendAvailability } from "../../../../../../helpers/waitForBackendAvailability";
|
|
47
46
|
import { backendHealthMonitor } from "../../../../../../helpers/backendHealthMonitor";
|
|
48
|
-
|
|
47
|
+
import { Check, Copy } from "lucide-react";
|
|
48
|
+
var displayInventoryItem = function (item) {
|
|
49
|
+
if (!item.startsWith("/"))
|
|
50
|
+
return item;
|
|
51
|
+
var sourceIndex = item.lastIndexOf("/src/");
|
|
52
|
+
if (sourceIndex >= 0)
|
|
53
|
+
return item.slice(sourceIndex + 1);
|
|
54
|
+
return item.split("/").slice(-2).join("/");
|
|
55
|
+
};
|
|
49
56
|
var DeleteModelRowAction = function (event) {
|
|
50
|
-
var _a
|
|
51
|
-
var _b = useState(false), isApplying = _b[0], setIsApplying = _b[1];
|
|
57
|
+
var _a, _b, _c;
|
|
52
58
|
var dispatch = useDispatch();
|
|
53
|
-
var
|
|
54
|
-
var
|
|
55
|
-
var
|
|
56
|
-
var
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
var _d = useState(null), preview = _d[0], setPreview = _d[1];
|
|
60
|
+
var _e = useState(null), previewError = _e[0], setPreviewError = _e[1];
|
|
61
|
+
var _f = useState(false), isConfirmed = _f[0], setIsConfirmed = _f[1];
|
|
62
|
+
var _g = useState(false), copiedDdl = _g[0], setCopiedDdl = _g[1];
|
|
63
|
+
var _h = usePreviewDeleteModelMutation(), loadPreview = _h[0], isLoadingPreview = _h[1].isLoading;
|
|
64
|
+
var _j = useApplyDeleteModelMutation(), applyDelete = _j[0], isApplying = _j[1].isLoading;
|
|
65
|
+
var refreshPreview = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
66
|
+
var result, error_1;
|
|
67
|
+
var _a;
|
|
68
|
+
return __generator(this, function (_b) {
|
|
69
|
+
switch (_b.label) {
|
|
61
70
|
case 0:
|
|
62
|
-
|
|
71
|
+
setPreview(null);
|
|
72
|
+
setPreviewError(null);
|
|
73
|
+
setIsConfirmed(false);
|
|
74
|
+
_b.label = 1;
|
|
75
|
+
case 1:
|
|
76
|
+
_b.trys.push([1, 3, , 4]);
|
|
77
|
+
return [4 /*yield*/, loadPreview(event.rowData.id).unwrap()];
|
|
78
|
+
case 2:
|
|
79
|
+
result = _b.sent();
|
|
80
|
+
setPreview(result);
|
|
81
|
+
return [3 /*break*/, 4];
|
|
82
|
+
case 3:
|
|
83
|
+
error_1 = _b.sent();
|
|
84
|
+
setPreviewError(((_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.data) === null || _a === void 0 ? void 0 : _a.message) || (error_1 === null || error_1 === void 0 ? void 0 : error_1.error) || ERROR_MESSAGES.ERROR_OCCURED);
|
|
85
|
+
return [3 /*break*/, 4];
|
|
86
|
+
case 4: return [2 /*return*/];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}); };
|
|
90
|
+
useEffect(function () { void refreshPreview(); }, [event.rowData.id]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
91
|
+
var automaticChanges = (_a = preview === null || preview === void 0 ? void 0 : preview.changes.filter(function (change) { return change.category !== 'Manual follow-up' && change.count > 0; })) !== null && _a !== void 0 ? _a : [];
|
|
92
|
+
var automaticItemCount = automaticChanges.reduce(function (total, change) { return total + change.count; }, 0);
|
|
93
|
+
var manualFollowUp = preview === null || preview === void 0 ? void 0 : preview.changes.find(function (change) { return change.category === 'Manual follow-up'; });
|
|
94
|
+
var tableName = (_c = (_b = manualFollowUp === null || manualFollowUp === void 0 ? void 0 : manualFollowUp.items[0]) === null || _b === void 0 ? void 0 : _b.replace(/ database table$/, '')) !== null && _c !== void 0 ? _c : '';
|
|
95
|
+
var quotedTableName = tableName.split('.').map(function (part) { return "\"".concat(part.replace(/"/g, '""'), "\""); }).join('.');
|
|
96
|
+
var dropTableStatement = tableName ? "DROP TABLE IF EXISTS ".concat(quotedTableName, ";") : '';
|
|
97
|
+
var copyDropStatement = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
98
|
+
var _a;
|
|
99
|
+
return __generator(this, function (_b) {
|
|
100
|
+
switch (_b.label) {
|
|
101
|
+
case 0:
|
|
102
|
+
if (!dropTableStatement)
|
|
63
103
|
return [2 /*return*/];
|
|
64
|
-
|
|
65
|
-
setIsApplying(true);
|
|
66
|
-
_d.label = 1;
|
|
104
|
+
_b.label = 1;
|
|
67
105
|
case 1:
|
|
68
|
-
|
|
69
|
-
return [4 /*yield*/,
|
|
106
|
+
_b.trys.push([1, 3, , 4]);
|
|
107
|
+
return [4 /*yield*/, navigator.clipboard.writeText(dropTableStatement)];
|
|
70
108
|
case 2:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
ERROR_MESSAGES.ERROR_OCCURED;
|
|
76
|
-
dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.DELETE_FAIELD, detail: message }));
|
|
77
|
-
return [3 /*break*/, 6];
|
|
109
|
+
_b.sent();
|
|
110
|
+
setCopiedDdl(true);
|
|
111
|
+
window.setTimeout(function () { return setCopiedDdl(false); }, 1800);
|
|
112
|
+
return [3 /*break*/, 4];
|
|
78
113
|
case 3:
|
|
114
|
+
_a = _b.sent();
|
|
115
|
+
setPreviewError('Unable to copy the DROP TABLE statement. Select and copy it manually.');
|
|
116
|
+
return [3 /*break*/, 4];
|
|
117
|
+
case 4: return [2 /*return*/];
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}); };
|
|
121
|
+
var deleteModelHandler = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
122
|
+
var isBackendAvailable, error_2, updatedPreview;
|
|
123
|
+
var _a, _b;
|
|
124
|
+
return __generator(this, function (_c) {
|
|
125
|
+
switch (_c.label) {
|
|
126
|
+
case 0:
|
|
127
|
+
if (!preview || !isConfirmed || isApplying)
|
|
128
|
+
return [2 /*return*/];
|
|
129
|
+
_c.label = 1;
|
|
130
|
+
case 1:
|
|
131
|
+
_c.trys.push([1, 4, , 5]);
|
|
132
|
+
return [4 /*yield*/, applyDelete({ id: event.rowData.id, planHash: preview.planHash }).unwrap()];
|
|
133
|
+
case 2:
|
|
134
|
+
_c.sent();
|
|
79
135
|
dispatch(showToast({ severity: 'success', summary: ERROR_MESSAGES.MODEL_DELETE, detail: ERROR_MESSAGES.MODEL_DELETE_SUCCESSFULLY(event.rowData.singularName) }));
|
|
80
|
-
return [4 /*yield*/, new Promise(function (resolve) { return window.setTimeout(resolve, DELETE_MODEL_DIALOG_DISMISS_DELAY_MS); })];
|
|
81
|
-
case 4:
|
|
82
|
-
_d.sent();
|
|
83
136
|
dispatch(closePopup());
|
|
84
137
|
return [4 /*yield*/, pingBackendAvailability()];
|
|
85
|
-
case
|
|
86
|
-
isBackendAvailable =
|
|
87
|
-
if (isBackendAvailable)
|
|
138
|
+
case 3:
|
|
139
|
+
isBackendAvailable = _c.sent();
|
|
140
|
+
if (isBackendAvailable)
|
|
88
141
|
backendHealthMonitor.reportSuccess();
|
|
142
|
+
else
|
|
143
|
+
backendHealthMonitor.reportFailure({ status: "FETCH_ERROR", message: "Unable to reach the server. Reconnecting..." });
|
|
144
|
+
return [3 /*break*/, 5];
|
|
145
|
+
case 4:
|
|
146
|
+
error_2 = _c.sent();
|
|
147
|
+
updatedPreview = (_a = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _a === void 0 ? void 0 : _a.preview;
|
|
148
|
+
if (updatedPreview) {
|
|
149
|
+
setPreview(updatedPreview);
|
|
150
|
+
setIsConfirmed(false);
|
|
151
|
+
setPreviewError('The inventory changed since it was reviewed. Please review the updated changes and confirm again.');
|
|
89
152
|
}
|
|
90
153
|
else {
|
|
91
|
-
|
|
92
|
-
status: "FETCH_ERROR",
|
|
93
|
-
message: "Unable to reach the server. Reconnecting...",
|
|
94
|
-
});
|
|
154
|
+
setPreviewError(((_b = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _b === void 0 ? void 0 : _b.message) || (error_2 === null || error_2 === void 0 ? void 0 : error_2.error) || ERROR_MESSAGES.NETWORK_OR_SERVER_ERROR);
|
|
95
155
|
}
|
|
96
|
-
|
|
97
|
-
case
|
|
98
|
-
case 7:
|
|
99
|
-
err_1 = _d.sent();
|
|
100
|
-
console.error("catch error", err_1);
|
|
101
|
-
dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.ERROR, detail: ERROR_MESSAGES.NETWORK_OR_SERVER_ERROR }));
|
|
102
|
-
return [3 /*break*/, 9];
|
|
103
|
-
case 8:
|
|
104
|
-
setIsApplying(false);
|
|
105
|
-
return [7 /*endfinally*/];
|
|
106
|
-
case 9: return [2 /*return*/];
|
|
156
|
+
return [3 /*break*/, 5];
|
|
157
|
+
case 5: return [2 /*return*/];
|
|
107
158
|
}
|
|
108
159
|
});
|
|
109
160
|
}); };
|
|
110
|
-
|
|
111
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".entity.ts"), description: 'The TypeORM entity definition for this model. Deleting it removes the model’s schema mapping', intervention: 'Automatic' },
|
|
112
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".create.dto.ts"), description: 'DTO defining the payload for creating a new record of this model', intervention: 'Automatic' },
|
|
113
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".update.dto.ts"), description: 'DTO defining the payload for updating an existing record of this model', intervention: 'Automatic' },
|
|
114
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".repository.ts"), description: 'Custom repository encapsulating database operations for this model', intervention: 'Automatic' },
|
|
115
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".service.ts"), description: 'Service layer containing business logic and interactions for this model', intervention: 'Automatic' },
|
|
116
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".controller.ts"), description: 'Controller exposing API endpoints related to this model', intervention: 'Automatic' },
|
|
117
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), ".module.ts"), description: 'Module declaration that wires together the controller, service, and repository. All imports and references to the deleted model are removed automatically', intervention: 'Automatic' },
|
|
118
|
-
{ file: "".concat(kebabCase(event.rowData.singularName), "-metadata.json"), description: 'Remove references to this model in the model metadata, menu, action & view sections', intervention: 'Automatic' },
|
|
119
|
-
{ file: '-', description: 'Drop database table. Removes the database table from the DB, this is a very risky step. Best to review all relations to other models etc and then do this manually', intervention: 'Manual (X)', manual: true },
|
|
120
|
-
];
|
|
121
|
-
return (_jsxs("div", { className: "solid-delete-model-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-delete-model-popup__head", children: _jsxs("div", { children: [_jsx("h3", { className: "solid-filter-dialog-title", children: "Delete Model" }), _jsx("p", { className: "solid-filter-dialog-subtitle m-0", children: "Review the impacted files carefully before applying this delete action." })] }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-delete-model-popup__body", children: [_jsx("p", { className: "solid-delete-model-popup__intro", children: "Deleting a model should be done carefully. The following files will be impacted as part of deleting this model." }), _jsx("div", { className: "solid-delete-model-popup__table-wrap", children: _jsxs("table", { className: "solid-delete-model-popup__table", children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "File Name" }), _jsx("th", { children: "Description" }), _jsx("th", { children: "Intervention" })] }) }), _jsx("tbody", { children: rows.map(function (row) { return (_jsxs("tr", { children: [_jsx("td", { className: "solid-delete-model-popup__file", children: row.file }), _jsx("td", { children: row.description }), _jsx("td", { className: row.manual ? "solid-delete-model-popup__intervention is-manual" : "solid-delete-model-popup__intervention", children: row.intervention })] }, "".concat(row.file, "-").concat(row.intervention))); }) })] }) }), _jsx("div", { className: "solid-delete-model-popup__confirm", children: _jsx(SolidCheckbox, { id: "delete-model-confirmation", name: "confirm", checked: isConfirmed, onChange: function () { return setIsConfirmed(!isConfirmed); }, label: "I confirm that #9 (drop database table) will be done by me manually after the automatic steps above are applied." }) }), _jsxs("div", { className: "solid-delete-model-popup__actions", children: [_jsx(SolidButton, { size: "small", disabled: !isConfirmed || isApplying, loading: isApplying, autoFocus: true, onClick: deleteModelHandler, children: "Apply" }), _jsx(SolidButton, { size: "small", variant: "outline", disabled: isApplying, onClick: function () { return dispatch(closePopup()); }, children: "Cancel" })] })] })] }));
|
|
161
|
+
return (_jsxs("div", { className: "solid-delete-model-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-delete-model-popup__head", children: _jsxs("div", { children: [_jsxs("h3", { className: "solid-filter-dialog-title", children: ["Delete ", event.rowData.displayName || event.rowData.singularName] }), _jsx("p", { className: "solid-filter-dialog-subtitle m-0", children: "Review the automatic cleanup before deleting this model." })] }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-delete-model-popup__body", children: [isLoadingPreview && _jsx("div", { className: "flex justify-center p-4", children: _jsx(SolidSpinner, {}) }), previewError && _jsx("div", { role: "alert", className: "text-sm text-destructive mb-3", children: previewError }), preview && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "solid-delete-model-popup__summary", "aria-label": "Deletion impact summary", children: [_jsxs("div", { children: [_jsx("strong", { children: automaticItemCount }), _jsx("span", { children: "automatic changes" })] }), _jsxs("div", { children: [_jsx("strong", { children: automaticChanges.length }), _jsx("span", { children: "areas affected" })] })] }), _jsxs("div", { className: "solid-delete-model-popup__inventory", "aria-label": "Automatic deletion changes", children: [automaticChanges.map(function (change, index) { return (_jsxs("details", { className: "solid-delete-model-popup__change", children: [_jsxs("summary", { children: [_jsx("span", { className: "solid-delete-model-popup__change-name", children: change.category }), _jsx("span", { className: "solid-delete-model-popup__change-description", children: change.description }), _jsx("span", { className: "solid-delete-model-popup__count", children: change.count })] }), change.items.length > 0 && (_jsx("ul", { className: "solid-delete-model-popup__items", children: change.items.map(function (item, itemIndex) { return _jsx("li", { title: item, children: displayInventoryItem(item) }, "".concat(item, "-").concat(itemIndex)); }) }))] }, "".concat(change.category, "-").concat(index))); }), automaticChanges.length === 0 && _jsx("p", { className: "solid-delete-model-popup__empty", children: "No related automatic cleanup was found." })] }), manualFollowUp && manualFollowUp.count > 0 && (_jsxs("aside", { className: "solid-delete-model-popup__manual", children: [_jsx("strong", { children: "Manual follow-up" }), _jsx("span", { children: manualFollowUp.description }), dropTableStatement && _jsxs("div", { className: "solid-delete-model-popup__ddl", children: [_jsx("code", { children: dropTableStatement }), _jsx("button", { type: "button", className: "solid-delete-model-popup__copy-ddl", onClick: copyDropStatement, "aria-label": copiedDdl ? 'DDL copied' : 'Copy DROP TABLE statement', title: copiedDdl ? 'Copied' : 'Copy SQL', children: copiedDdl ? _jsx(Check, { size: 13 }) : _jsx(Copy, { size: 13 }) })] })] }))] }))] }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-delete-model-popup__footer", children: [preview && _jsx("div", { className: "solid-delete-model-popup__confirm", children: _jsx(SolidCheckbox, { id: "delete-model-confirmation", name: "confirm", checked: isConfirmed, onChange: function () { return setIsConfirmed(!isConfirmed); }, label: "I reviewed the automatic changes above and understand the database table drop is a separate manual step." }) }), _jsxs("div", { className: "solid-delete-model-popup__actions", children: [_jsx(SolidButton, { size: "small", variant: "destructive", disabled: !preview || !isConfirmed || isApplying || isLoadingPreview, loading: isApplying, autoFocus: true, onClick: deleteModelHandler, children: "Delete model" }), _jsx(SolidButton, { size: "small", variant: "outline", disabled: isApplying, onClick: function () { return dispatch(closePopup()); }, children: "Cancel" })] })] })] }));
|
|
122
162
|
};
|
|
123
163
|
export default DeleteModelRowAction;
|
|
124
164
|
//# sourceMappingURL=DeleteModelRowAction.js.map
|