@solidxai/core-ui 0.1.19-beta.0 → 0.1.19-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/components/common/SolidPopupContainer.d.ts.map +1 -1
- package/dist/components/common/SolidPopupContainer.js +3 -2
- package/dist/components/common/SolidPopupContainer.js.map +1 -1
- package/dist/components/common/SolidPopupContainer.tsx +3 -2
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +4 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +11 -5
- package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatter.js +2 -1
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +2 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +2 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js +7 -4
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +8 -3
- package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts +5 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts.map +1 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.js +85 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.js.map +1 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.tsx +59 -0
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +6 -5
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +6 -5
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts +11 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js +102 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.tsx +129 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js +29 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.module.css +226 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.tsx +57 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +33 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +47 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts +5 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js +59 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.tsx +82 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts +17 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js +258 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx +286 -0
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +102 -62
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +116 -106
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts +6 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js +37 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.tsx +89 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts +3 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js +18 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.tsx +51 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts +10 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js +63 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.tsx +111 -0
- package/dist/components/core/field/FieldListViewData.d.ts.map +1 -1
- package/dist/components/core/field/FieldListViewData.js +29 -9
- package/dist/components/core/field/FieldListViewData.js.map +1 -1
- package/dist/components/core/field/FieldListViewData.tsx +7 -6
- package/dist/components/core/form/SolidFormView.d.ts +1 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +49 -48
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +4 -3
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.js +13 -1
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.tsx +14 -3
- package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +5 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +3 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +5 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +31 -11
- package/dist/components/core/kanban/KanbanColumn.d.ts +5 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +14 -3
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +43 -3
- package/dist/components/core/kanban/SolidKanbanView.d.ts +2 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +90 -52
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +93 -13
- package/dist/components/core/list/SolidDataTable.d.ts +2 -1
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +2 -2
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +3 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +114 -57
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +71 -7
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +14 -0
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +13 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js +51 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js.map +1 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.tsx +60 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts +4 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js +24 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.tsx +32 -0
- package/dist/components/core/model/ModelListViewData.d.ts.map +1 -1
- package/dist/components/core/model/ModelListViewData.js +6 -23
- package/dist/components/core/model/ModelListViewData.js.map +1 -1
- package/dist/components/core/model/ModelListViewData.tsx +1 -48
- package/dist/components/core/solid-agent/AgentModelIndicator.d.ts +5 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.d.ts.map +1 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.js +14 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.js.map +1 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.tsx +40 -0
- package/dist/components/core/solid-agent/AgentSignIn.d.ts +12 -0
- package/dist/components/core/solid-agent/AgentSignIn.d.ts.map +1 -0
- package/dist/components/core/solid-agent/AgentSignIn.js +82 -0
- package/dist/components/core/solid-agent/AgentSignIn.js.map +1 -0
- package/dist/components/core/solid-agent/AgentSignIn.tsx +91 -0
- package/dist/components/core/solid-agent/SolidAgent.module.css +596 -0
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts +30 -0
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentChat.js +300 -0
- package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentChat.tsx +451 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +44 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.js +46 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +87 -0
- package/dist/components/core/solid-agent/SolidAgentHost.d.ts +8 -0
- package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentHost.js +152 -0
- package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentHost.tsx +164 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts +16 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js +161 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +133 -0
- package/dist/components/core/solid-agent/SolidAgentMount.d.ts +3 -0
- package/dist/components/core/solid-agent/SolidAgentMount.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMount.js +62 -0
- package/dist/components/core/solid-agent/SolidAgentMount.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMount.tsx +31 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.d.ts +5 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.js +7 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.js.map +1 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.tsx +6 -0
- package/dist/components/core/solid-agent/agentAttachments.d.ts +20 -0
- package/dist/components/core/solid-agent/agentAttachments.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentAttachments.js +184 -0
- package/dist/components/core/solid-agent/agentAttachments.js.map +1 -0
- package/dist/components/core/solid-agent/agentAttachments.ts +119 -0
- package/dist/components/core/solid-agent/agentEvents.d.ts +34 -0
- package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentEvents.js +282 -0
- package/dist/components/core/solid-agent/agentEvents.js.map +1 -0
- package/dist/components/core/solid-agent/agentEvents.ts +292 -0
- package/dist/components/core/solid-agent/agentFormat.d.ts +18 -0
- package/dist/components/core/solid-agent/agentFormat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentFormat.js +179 -0
- package/dist/components/core/solid-agent/agentFormat.js.map +1 -0
- package/dist/components/core/solid-agent/agentFormat.ts +160 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts +9 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.js +129 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.ts +69 -0
- package/dist/components/core/solid-agent/client/agentAuth.d.ts +63 -0
- package/dist/components/core/solid-agent/client/agentAuth.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentAuth.js +307 -0
- package/dist/components/core/solid-agent/client/agentAuth.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentAuth.ts +222 -0
- package/dist/components/core/solid-agent/client/agentRest.d.ts +30 -0
- package/dist/components/core/solid-agent/client/agentRest.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentRest.js +178 -0
- package/dist/components/core/solid-agent/client/agentRest.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentRest.ts +100 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts +48 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentRuntime.js +406 -0
- package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentRuntime.ts +226 -0
- package/dist/components/core/solid-agent/client/agentSocket.d.ts +46 -0
- package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentSocket.js +535 -0
- package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentSocket.ts +276 -0
- package/dist/components/core/solid-agent/client/agentUrls.d.ts +11 -0
- package/dist/components/core/solid-agent/client/agentUrls.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentUrls.js +18 -0
- package/dist/components/core/solid-agent/client/agentUrls.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentUrls.ts +19 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.d.ts +21 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.d.ts.map +1 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.js +219 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.js.map +1 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.tsx +241 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts +8 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +87 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +58 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +20 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +103 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +60 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +11 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +21 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +266 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts +15 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts.map +1 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.js +122 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.js.map +1 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.ts +64 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.d.ts +39 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.d.ts.map +1 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.js +44 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.js.map +1 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.ts +56 -0
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts +17 -0
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/AgentThread.js +166 -0
- package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -0
- package/dist/components/core/solid-agent/thread/AgentThread.tsx +248 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +36 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +148 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +116 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.d.ts +8 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.js +30 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.js.map +1 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.ts +27 -0
- package/dist/components/core/solid-agent/types.d.ts +155 -0
- package/dist/components/core/solid-agent/types.d.ts.map +1 -0
- package/dist/components/core/solid-agent/types.js +31 -0
- package/dist/components/core/solid-agent/types.js.map +1 -0
- package/dist/components/core/solid-agent/types.ts +148 -0
- package/dist/components/core/solid-agent/useAdminInputContext.d.ts +4 -0
- package/dist/components/core/solid-agent/useAdminInputContext.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAdminInputContext.js +49 -0
- package/dist/components/core/solid-agent/useAdminInputContext.js.map +1 -0
- package/dist/components/core/solid-agent/useAdminInputContext.ts +52 -0
- package/dist/components/core/solid-agent/useAgentAuth.d.ts +14 -0
- package/dist/components/core/solid-agent/useAgentAuth.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentAuth.js +88 -0
- package/dist/components/core/solid-agent/useAgentAuth.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentAuth.ts +40 -0
- package/dist/components/core/solid-agent/useAgentAvailability.d.ts +19 -0
- package/dist/components/core/solid-agent/useAgentAvailability.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentAvailability.js +109 -0
- package/dist/components/core/solid-agent/useAgentAvailability.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentAvailability.ts +80 -0
- package/dist/components/core/solid-agent/useAgentChat.d.ts +22 -0
- package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentChat.js +45 -0
- package/dist/components/core/solid-agent/useAgentChat.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentChat.ts +57 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +24 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +28 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +20 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +8 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +11 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +16 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +67 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +135 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +24 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +17 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts +8 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +30 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +77 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +40 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +57 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +13 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +19 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +55 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +81 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +30 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +21 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +21 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +33 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +11 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +9 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts +15 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +26 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +42 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +41 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +69 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +23 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +40 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +32 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +55 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +17 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +31 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts +12 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js +17 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.ts +19 -0
- package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +909 -0
- package/dist/components/core/solid-ai/SolidAiChat.js +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.js.map +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.tsx +2 -2
- package/dist/components/layout/AdminLayout.d.ts.map +1 -1
- package/dist/components/layout/AdminLayout.js +2 -1
- package/dist/components/layout/AdminLayout.js.map +1 -1
- package/dist/components/layout/AdminLayout.tsx +2 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +2 -2
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +19 -15
- package/dist/components/shad-cn-ui/SolidDialog.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.js +2 -2
- package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.tsx +3 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.d.ts +7 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.js +43 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.tsx +73 -0
- package/dist/components/shad-cn-ui/index.d.ts +1 -0
- package/dist/components/shad-cn-ui/index.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/index.js +1 -0
- package/dist/components/shad-cn-ui/index.js.map +1 -1
- package/dist/components/shad-cn-ui/index.ts +1 -0
- package/dist/constants/allowed-ai-models.d.ts +8 -0
- package/dist/constants/allowed-ai-models.d.ts.map +1 -0
- package/dist/constants/allowed-ai-models.js +33 -0
- package/dist/constants/allowed-ai-models.js.map +1 -0
- package/dist/constants/allowed-ai-models.ts +39 -0
- package/dist/helpers/hydrateRelationRules.d.ts.map +1 -1
- package/dist/helpers/hydrateRelationRules.js +3 -1
- package/dist/helpers/hydrateRelationRules.js.map +1 -1
- package/dist/helpers/hydrateRelationRules.ts +5 -1
- package/dist/helpers/registry.d.ts +4 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +75 -12
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +73 -16
- package/dist/helpers/updatePasswordField.d.ts.map +1 -1
- package/dist/helpers/updatePasswordField.js +21 -15
- package/dist/helpers/updatePasswordField.js.map +1 -1
- package/dist/helpers/updatePasswordField.ts +6 -1
- package/dist/index.d.ts +21 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/index.ts +34 -3
- package/dist/redux/api/fieldApi.js +1 -1
- package/dist/redux/api/fieldApi.js.map +1 -1
- package/dist/redux/api/fieldApi.ts +2 -2
- package/dist/redux/api/modelApi.d.ts +13 -13
- package/dist/redux/api/modelApi.d.ts.map +1 -1
- package/dist/redux/api/modelApi.js +15 -15
- package/dist/redux/api/modelApi.js.map +1 -1
- package/dist/redux/api/modelApi.ts +12 -15
- package/dist/redux/features/agentSlice.d.ts +34 -0
- package/dist/redux/features/agentSlice.d.ts.map +1 -0
- package/dist/redux/features/agentSlice.js +92 -0
- package/dist/redux/features/agentSlice.js.map +1 -0
- package/dist/redux/features/agentSlice.ts +119 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +11 -10
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +2 -0
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +2 -0
- package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
- package/dist/redux/store/solidEntityApiPool.js +7 -0
- package/dist/redux/store/solidEntityApiPool.js.map +1 -1
- package/dist/redux/store/solidEntityApiPool.ts +6 -0
- package/dist/resources/globals.css +109 -1
- package/dist/resources/solid-custom.css +295 -0
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.css +47 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts +12 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js +80 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.tsx +123 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +110 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +702 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +630 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.css +303 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +330 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +460 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +125 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +295 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +275 -0
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +11 -11
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +15 -15
- package/dist/routes/pages/embed/AgentEmbedPage.d.ts +3 -0
- package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -0
- package/dist/routes/pages/embed/AgentEmbedPage.js +170 -0
- package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -0
- package/dist/routes/pages/embed/AgentEmbedPage.module.css +195 -0
- package/dist/routes/pages/embed/AgentEmbedPage.tsx +169 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +8 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +8 -0
- package/dist/types/extension-registry.d.ts +4 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js +7 -0
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +7 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/list-row-action.d.ts +2 -0
- package/dist/types/list-row-action.d.ts.map +1 -1
- package/dist/types/list-row-action.js.map +1 -1
- package/dist/types/list-row-action.ts +3 -0
- package/dist/types/solid-core.d.ts +36 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentSkillRegistryEditorPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { ArrowLeft, Plus, RefreshCw, X } from \"lucide-react\";\nimport { useDispatch } from \"react-redux\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { createSolidEntityApi } from \"../../../../redux/api/solidEntityApi\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport { AgentRegistryAuditPanel } from \"./AgentRegistryAuditPanel\";\nimport {\n SolidButton,\n SolidCodeEditor,\n SolidDialog,\n SolidDialogBody,\n SolidIconPicker,\n SolidInput,\n SolidTabGroup,\n} from \"../../../../components/shad-cn-ui\";\nimport \"./AgentSkillRegistryEditorPage.css\";\n\ntype AgentReference = {\n id?: number | string;\n name?: string;\n title?: string;\n agentRegistry?: AgentReference | number | string | null;\n};\n\ntype SkillRecord = {\n id: number;\n name?: string;\n type?: string;\n iconName?: string | null;\n description?: string;\n body?: string;\n tags?: unknown;\n agentSkills?: AgentReference[] | AgentReference | null;\n};\n\nfunction extractEntityRecord(response: unknown): Record<string, any> | undefined {\n let candidate: unknown = response;\n for (let depth = 0; depth < 3; depth += 1) {\n if (!candidate || typeof candidate !== \"object\") return undefined;\n const value = candidate as Record<string, unknown>;\n if (\"id\" in value || \"name\" in value) return value;\n candidate = value.data;\n }\n return candidate && typeof candidate === \"object\" ? candidate as Record<string, any> : undefined;\n}\n\nfunction parseTags(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value.map((tag) => String(tag).trim()).filter(Boolean);\n }\n\n if (typeof value !== \"string\" || !value.trim()) return [];\n\n try {\n const parsed = JSON.parse(value);\n if (Array.isArray(parsed)) {\n return parsed.map((tag) => String(tag).trim()).filter(Boolean);\n }\n } catch {\n return value === \"{}\" ? [] : value.split(\",\").map((tag) => tag.trim()).filter(Boolean);\n }\n\n return [];\n}\n\nfunction formatErrorMessage(value: unknown): string | undefined {\n if (typeof value === \"string\") return value.trim() || undefined;\n if (Array.isArray(value)) {\n const messages = value.map(formatErrorMessage).filter((message): message is string => Boolean(message));\n return messages.length ? messages.join(\"; \") : undefined;\n }\n if (value && typeof value === \"object\") {\n const error = value as Record<string, unknown>;\n return formatErrorMessage(error.message)\n ?? formatErrorMessage(error.constraints)\n ?? formatErrorMessage(error.error);\n }\n return undefined;\n}\n\nfunction getSaveErrorMessage(error: unknown): string {\n if (!error || typeof error !== \"object\") return \"Failed to save skill.\";\n const apiError = error as Record<string, any>;\n // Nest validation details are nested at data.data.message; prefer them over\n // the generic outer \"Bad Request Exception\" message.\n return formatErrorMessage(apiError.data?.data?.message)\n ?? formatErrorMessage(apiError.data?.message)\n ?? formatErrorMessage(apiError.data?.error)\n ?? formatErrorMessage(apiError.message)\n ?? \"Failed to save skill.\";\n}\n\nfunction skillAgents(record?: SkillRecord): AgentReference[] {\n const related = record?.agentSkills;\n const links = Array.isArray(related)\n ? related\n : related\n ? [related]\n : [];\n const seen = new Set<string>();\n\n return links\n .map((link) => link.agentRegistry)\n .filter((agent): agent is AgentReference => Boolean(agent && typeof agent === \"object\"))\n .filter((agent) => {\n const key = String(agent.id ?? agent.name ?? agent.title ?? \"\");\n if (!key || seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\nexport function AgentSkillRegistryEditorPage() {\n const { id = \"\" } = useParams<{ id: string }>();\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const entityApi = React.useMemo(() => createSolidEntityApi(\"agentSkillRegistry\"), []);\n const {\n useCreateSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n } = entityApi;\n\n const { data: response, isLoading, isFetching, refetch } = useGetSolidEntityByIdQuery(\n {\n id,\n qs: \"populate[0]=agentSkills&populate[1]=agentSkills.agentRegistry\",\n },\n { skip: !id || id === \"new\" },\n );\n const [createSkill, { isLoading: isCreating }] = useCreateSolidEntityMutation();\n const [updateSkill, { isLoading: isSaving }] = useUpdateSolidEntityMutation();\n const record = extractEntityRecord(response) as SkillRecord | undefined;\n\n const [activeTab, setActiveTab] = React.useState(\"general\");\n const [name, setName] = React.useState(\"\");\n const [type, setType] = React.useState(\"custom\");\n const [iconName, setIconName] = React.useState(\"\");\n const [description, setDescription] = React.useState(\"\");\n const [body, setBody] = React.useState(\"\");\n const [tags, setTags] = React.useState<string[]>([]);\n const [tagDraft, setTagDraft] = React.useState(\"\");\n const [fieldErrors, setFieldErrors] = React.useState<Record<string, string>>({});\n const [auditRefreshVersion, setAuditRefreshVersion] = React.useState(0);\n const [confirmRefresh, setConfirmRefresh] = React.useState(false);\n const baseline = React.useRef(\"\");\n const currentForm = () => JSON.stringify({ name, type, iconName, description, body, tags, tagDraft });\n\n React.useEffect(() => {\n const nextTags = parseTags(record?.tags);\n setName(record?.name ?? \"\");\n setType(record?.type ?? \"custom\");\n setIconName(record?.iconName ?? \"\");\n setDescription(record?.description ?? \"\");\n setBody(record?.body ?? \"\");\n setTags(nextTags);\n setTagDraft(\"\");\n baseline.current = JSON.stringify({ name: record?.name ?? \"\", type: record?.type ?? \"custom\", iconName: record?.iconName ?? \"\", description: record?.description ?? \"\", body: record?.body ?? \"\", tags: nextTags, tagDraft: \"\" });\n }, [record]);\n\n const isReadOnly = record?.type === \"solidx\";\n const isDirty = Boolean(record?.id) && currentForm() !== baseline.current;\n const requestRefresh = () => isDirty ? setConfirmRefresh(true) : void refetch();\n\n const addTag = () => {\n const nextTag = tagDraft.trim();\n if (!nextTag) return;\n if (!tags.some((tag) => tag.toLowerCase() === nextTag.toLowerCase())) {\n setTags((current) => [...current, nextTag]);\n }\n setTagDraft(\"\");\n setFieldErrors((current) => ({ ...current, tags: \"\" }));\n };\n\n const handleSave = async () => {\n const nextErrors: Record<string, string> = {};\n if (!name.trim()) nextErrors.name = \"Name is required.\";\n if (!type.trim()) nextErrors.type = \"Skill type is required.\";\n if (!description.trim()) nextErrors.description = \"Description is required.\";\n if (!body.trim()) nextErrors.body = \"Skill instructions are required.\";\n if (tags.length === 0) nextErrors.tags = \"At least one tag is required.\";\n\n setFieldErrors(nextErrors);\n if (Object.keys(nextErrors).length > 0) {\n setActiveTab(nextErrors.body ? \"skill\" : \"general\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Missing information\",\n detail: Object.values(nextErrors).join(\" \"),\n }));\n return;\n }\n\n const payload = {\n name: name.trim(),\n type,\n iconName: iconName || null,\n description: description.trim(),\n body,\n tags: JSON.stringify(tags),\n };\n\n try {\n if (record?.id) {\n await updateSkill({ id: record.id, data: payload }).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: \"Saved\",\n detail: \"Skill updated successfully.\",\n }));\n setAuditRefreshVersion((version) => version + 1);\n refetch();\n } else {\n const result: any = await createSkill(payload).unwrap();\n const createdId = result?.data?.id ?? result?.id;\n dispatch(showToast({\n severity: \"success\",\n summary: \"Created\",\n detail: \"Skill created successfully.\",\n }));\n if (createdId) {\n navigate(`/admin/core/solid-core/agent-skill-registry/editor/${createdId}`, {\n replace: true,\n });\n }\n }\n } catch (error: any) {\n const errorDetail = getSaveErrorMessage(error);\n const serverFieldErrors: Record<string, string> = {};\n if (/required|not be empty|cannot be empty|should not be empty/i.test(errorDetail)) {\n for (const field of [\"name\", \"type\", \"description\", \"body\", \"tags\"]) {\n if (!new RegExp(`\\\\b${field}\\\\b`, \"i\").test(errorDetail)) continue;\n serverFieldErrors[field] = `${field === \"body\" ? \"Skill instructions\" : field[0].toUpperCase() + field.slice(1)} is required.`;\n }\n }\n if (Object.keys(serverFieldErrors).length > 0) {\n setFieldErrors(serverFieldErrors);\n setActiveTab(serverFieldErrors.body || serverFieldErrors.tags ? \"skill\" : \"general\");\n }\n dispatch(showToast({\n severity: \"error\",\n summary: \"Save failed\",\n detail: errorDetail,\n }));\n }\n };\n\n const agents = skillAgents(record);\n const tabs = [\n {\n value: \"general\",\n label: \"General Info\",\n content: (\n <fieldset className=\"agent-skill-editor__general\" disabled={isReadOnly}>\n {isReadOnly && <p className=\"agent-skill-editor__readonly-note\">SolidX skills are seeded by the AgentHub runtime and cannot be edited.</p>}\n <div className=\"agent-skill-editor__fields\">\n <label className=\"agent-skill-editor__field\">\n <span>Name <b>*</b></span>\n <SolidInput\n value={name}\n aria-invalid={Boolean(fieldErrors.name)}\n aria-describedby={fieldErrors.name ? \"agent-skill-name-error\" : undefined}\n className={fieldErrors.name ? \"agent-skill-editor__input--invalid\" : undefined}\n onChange={(event) => {\n setName(event.target.value);\n setFieldErrors((current) => ({ ...current, name: \"\" }));\n }}\n />\n {fieldErrors.name && <small id=\"agent-skill-name-error\" className=\"agent-skill-editor__field-error\">{fieldErrors.name}</small>}\n </label>\n <div className=\"agent-skill-editor__field\">\n <span>Icon</span>\n <SolidIconPicker value={iconName} onChange={setIconName} />\n </div>\n <label className=\"agent-skill-editor__field\">\n <span>Description <b>*</b></span>\n <SolidInput\n value={description}\n aria-invalid={Boolean(fieldErrors.description)}\n aria-describedby={fieldErrors.description ? \"agent-skill-description-error\" : undefined}\n className={fieldErrors.description ? \"agent-skill-editor__input--invalid\" : undefined}\n onChange={(event) => {\n setDescription(event.target.value);\n setFieldErrors((current) => ({ ...current, description: \"\" }));\n }}\n />\n {fieldErrors.description && <small id=\"agent-skill-description-error\" className=\"agent-skill-editor__field-error\">{fieldErrors.description}</small>}\n </label>\n </div>\n <label className=\"agent-skill-editor__field\">\n <span>Skill type <b>*</b></span>\n <select\n value={type}\n aria-invalid={Boolean(fieldErrors.type)}\n aria-describedby={fieldErrors.type ? \"agent-skill-type-error\" : undefined}\n className={fieldErrors.type ? \"agent-skill-editor__input--invalid\" : undefined}\n onChange={(event) => {\n setType(event.target.value);\n setFieldErrors((current) => ({ ...current, type: \"\" }));\n }}\n >\n {isReadOnly && <option value=\"solidx\">SolidX</option>}\n <option value=\"thirdparty\">Third Party</option>\n <option value=\"custom\">Custom</option>\n </select>\n {fieldErrors.type && <small id=\"agent-skill-type-error\" className=\"agent-skill-editor__field-error\">{fieldErrors.type}</small>}\n </label>\n <div className=\"agent-skill-editor__field\">\n <span>Tags <b>*</b></span>\n <div className={`agent-skill-editor__tag-input${fieldErrors.tags ? \" agent-skill-editor__tag-input--invalid\" : \"\"}`}>\n {tags.map((tag, index) => (\n <span className=\"agent-skill-editor__tag\" key={`${tag}-${index}`}>\n {tag}\n <button\n type=\"button\"\n aria-label={`Remove ${tag}`}\n onClick={() => {\n setTags((current) => {\n const nextTags = current.filter((_, tagIndex) => tagIndex !== index);\n if (nextTags.length > 0) setFieldErrors((errors) => ({ ...errors, tags: \"\" }));\n return nextTags;\n });\n }}\n >\n <X size={13} />\n </button>\n </span>\n ))}\n <input\n value={tagDraft}\n aria-label=\"Add a tag\"\n placeholder=\"Type a tag and press Enter\"\n onChange={(event) => setTagDraft(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n addTag();\n }\n }}\n />\n <SolidButton type=\"button\" variant=\"secondary\" size=\"small\" onClick={addTag}>\n <Plus size={14} /> Add\n </SolidButton>\n </div>\n {fieldErrors.tags && <small className=\"agent-skill-editor__field-error\">{fieldErrors.tags}</small>}\n <small>Tags are saved as a JSON array.</small>\n </div>\n </fieldset>\n ),\n },\n {\n value: \"skill\",\n label: \"Skill\",\n content: (\n <div className=\"agent-skill-editor__skill\">\n <section className=\"agent-skill-editor__panel\">\n <header>\n <h2>Skill instructions <b>*</b></h2>\n <p>Write the skill's Markdown body here.</p>\n </header>\n <SolidCodeEditor\n value={body}\n onChange={(value) => {\n setBody(value ?? \"\");\n setFieldErrors((current) => ({ ...current, body: \"\" }));\n }}\n language=\"markdown\"\n readOnly={isReadOnly}\n fontSize={11}\n height=\"max(32rem, calc(100dvh - 18rem))\"\n className={`agent-skill-editor__code${fieldErrors.body ? \" agent-skill-editor__code--invalid\" : \"\"}`}\n />\n {fieldErrors.body && <small className=\"agent-skill-editor__field-error agent-skill-editor__body-error\">{fieldErrors.body}</small>}\n </section>\n </div>\n ),\n },\n {\n value: \"agents\",\n label: \"Agents\",\n content: (\n <section className=\"agent-skill-editor__agents\">\n <div>\n <h2>Associated agents</h2>\n <p>Agents linked to this skill. Associations are read-only here.</p>\n </div>\n {isLoading ? (\n <p>Loading associated agents…</p>\n ) : agents.length ? (\n <div className=\"agent-skill-editor__agent-grid\">\n {agents.map((agent, index) => (\n <article className=\"agent-skill-editor__agent-card\" key={String(agent.id ?? agent.name ?? index)}>\n <span>{(agent.name ?? agent.title ?? \"A\").slice(0, 1).toUpperCase()}</span>\n <strong>{agent.name ?? agent.title ?? \"Unnamed agent\"}</strong>\n </article>\n ))}\n </div>\n ) : (\n <div className=\"agent-skill-editor__empty\">No agents are currently associated with this skill.</div>\n )}\n </section>\n ),\n },\n ];\n\n return (\n <main className=\"agent-skill-editor\">\n <header className=\"agent-skill-editor__header\">\n <div>\n <div className=\"agent-skill-editor__heading-with-refresh\"><h1>{record ? \"Edit Skill\" : \"Create Skill\"}</h1>{record?.id && <button type=\"button\" className={`agent-skill-editor__refresh${isFetching ? \" is-loading\" : \"\"}`} aria-label=\"Refresh skill\" title=\"Refresh skill\" disabled={isFetching || isSaving} onClick={requestRefresh}><RefreshCw size={14} /></button>}</div>\n </div>\n <div className=\"agent-skill-editor__actions\">\n <SolidButton variant=\"secondary\" leftIcon={<ArrowLeft size={16} />} onClick={() => navigate(-1)}>\n Back\n </SolidButton>\n {!isReadOnly && (\n <SolidButton loading={isCreating || isSaving} onClick={handleSave}>\n Save Skill\n </SolidButton>\n )}\n </div>\n </header>\n\n <SolidDialog open={confirmRefresh} onOpenChange={setConfirmRefresh} header=\"Discard unsaved changes?\" style={{ width: \"min(28rem, 94vw)\" }}\n footer={<><SolidButton type=\"button\" variant=\"secondary\" onClick={() => setConfirmRefresh(false)}>Cancel</SolidButton><SolidButton type=\"button\" disabled={isFetching} onClick={() => { setConfirmRefresh(false); void refetch(); }}>Refresh and discard</SolidButton></>}>\n <SolidDialogBody><p>You have unsaved changes. Refreshing will discard them and load the latest skill content.</p></SolidDialogBody>\n </SolidDialog>\n\n {isLoading ? (\n <div className=\"agent-skill-editor__loading\">Loading skill…</div>\n ) : record?.id ? (\n <AgentRegistryAuditPanel\n modelSingularName=\"agentSkillRegistry\"\n recordId={record.id}\n refreshVersion={auditRefreshVersion}\n modelUserKey={record.name}\n >\n <SolidTabGroup\n tabs={tabs}\n value={activeTab}\n onValueChange={setActiveTab}\n className=\"agent-skill-editor__tabs\"\n listClassName=\"agent-skill-editor__tab-list\"\n panelClassName=\"agent-skill-editor__tab-panel\"\n />\n </AgentRegistryAuditPanel>\n ) : (\n <SolidTabGroup\n tabs={tabs}\n value={activeTab}\n onValueChange={setActiveTab}\n className=\"agent-skill-editor__tabs\"\n listClassName=\"agent-skill-editor__tab-list\"\n panelClassName=\"agent-skill-editor__tab-panel\"\n />\n )}\n </main>\n );\n}\n"]}
|
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ArrowLeft, Plus, RefreshCw, X } from "lucide-react";
|
|
3
|
+
import { useDispatch } from "react-redux";
|
|
4
|
+
import { useNavigate, useParams } from "react-router-dom";
|
|
5
|
+
import { createSolidEntityApi } from "../../../../redux/api/solidEntityApi";
|
|
6
|
+
import { showToast } from "../../../../redux/features/toastSlice";
|
|
7
|
+
import { AgentRegistryAuditPanel } from "./AgentRegistryAuditPanel";
|
|
8
|
+
import {
|
|
9
|
+
SolidButton,
|
|
10
|
+
SolidCodeEditor,
|
|
11
|
+
SolidDialog,
|
|
12
|
+
SolidDialogBody,
|
|
13
|
+
SolidIconPicker,
|
|
14
|
+
SolidInput,
|
|
15
|
+
SolidTabGroup,
|
|
16
|
+
} from "../../../../components/shad-cn-ui";
|
|
17
|
+
import "./AgentSkillRegistryEditorPage.css";
|
|
18
|
+
|
|
19
|
+
type AgentReference = {
|
|
20
|
+
id?: number | string;
|
|
21
|
+
name?: string;
|
|
22
|
+
title?: string;
|
|
23
|
+
agentRegistry?: AgentReference | number | string | null;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
type SkillRecord = {
|
|
27
|
+
id: number;
|
|
28
|
+
name?: string;
|
|
29
|
+
type?: string;
|
|
30
|
+
iconName?: string | null;
|
|
31
|
+
description?: string;
|
|
32
|
+
body?: string;
|
|
33
|
+
tags?: unknown;
|
|
34
|
+
agentSkills?: AgentReference[] | AgentReference | null;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
function extractEntityRecord(response: unknown): Record<string, any> | undefined {
|
|
38
|
+
let candidate: unknown = response;
|
|
39
|
+
for (let depth = 0; depth < 3; depth += 1) {
|
|
40
|
+
if (!candidate || typeof candidate !== "object") return undefined;
|
|
41
|
+
const value = candidate as Record<string, unknown>;
|
|
42
|
+
if ("id" in value || "name" in value) return value;
|
|
43
|
+
candidate = value.data;
|
|
44
|
+
}
|
|
45
|
+
return candidate && typeof candidate === "object" ? candidate as Record<string, any> : undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function parseTags(value: unknown): string[] {
|
|
49
|
+
if (Array.isArray(value)) {
|
|
50
|
+
return value.map((tag) => String(tag).trim()).filter(Boolean);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (typeof value !== "string" || !value.trim()) return [];
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
const parsed = JSON.parse(value);
|
|
57
|
+
if (Array.isArray(parsed)) {
|
|
58
|
+
return parsed.map((tag) => String(tag).trim()).filter(Boolean);
|
|
59
|
+
}
|
|
60
|
+
} catch {
|
|
61
|
+
return value === "{}" ? [] : value.split(",").map((tag) => tag.trim()).filter(Boolean);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function formatErrorMessage(value: unknown): string | undefined {
|
|
68
|
+
if (typeof value === "string") return value.trim() || undefined;
|
|
69
|
+
if (Array.isArray(value)) {
|
|
70
|
+
const messages = value.map(formatErrorMessage).filter((message): message is string => Boolean(message));
|
|
71
|
+
return messages.length ? messages.join("; ") : undefined;
|
|
72
|
+
}
|
|
73
|
+
if (value && typeof value === "object") {
|
|
74
|
+
const error = value as Record<string, unknown>;
|
|
75
|
+
return formatErrorMessage(error.message)
|
|
76
|
+
?? formatErrorMessage(error.constraints)
|
|
77
|
+
?? formatErrorMessage(error.error);
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function getSaveErrorMessage(error: unknown): string {
|
|
83
|
+
if (!error || typeof error !== "object") return "Failed to save skill.";
|
|
84
|
+
const apiError = error as Record<string, any>;
|
|
85
|
+
// Nest validation details are nested at data.data.message; prefer them over
|
|
86
|
+
// the generic outer "Bad Request Exception" message.
|
|
87
|
+
return formatErrorMessage(apiError.data?.data?.message)
|
|
88
|
+
?? formatErrorMessage(apiError.data?.message)
|
|
89
|
+
?? formatErrorMessage(apiError.data?.error)
|
|
90
|
+
?? formatErrorMessage(apiError.message)
|
|
91
|
+
?? "Failed to save skill.";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function skillAgents(record?: SkillRecord): AgentReference[] {
|
|
95
|
+
const related = record?.agentSkills;
|
|
96
|
+
const links = Array.isArray(related)
|
|
97
|
+
? related
|
|
98
|
+
: related
|
|
99
|
+
? [related]
|
|
100
|
+
: [];
|
|
101
|
+
const seen = new Set<string>();
|
|
102
|
+
|
|
103
|
+
return links
|
|
104
|
+
.map((link) => link.agentRegistry)
|
|
105
|
+
.filter((agent): agent is AgentReference => Boolean(agent && typeof agent === "object"))
|
|
106
|
+
.filter((agent) => {
|
|
107
|
+
const key = String(agent.id ?? agent.name ?? agent.title ?? "");
|
|
108
|
+
if (!key || seen.has(key)) return false;
|
|
109
|
+
seen.add(key);
|
|
110
|
+
return true;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export function AgentSkillRegistryEditorPage() {
|
|
115
|
+
const { id = "" } = useParams<{ id: string }>();
|
|
116
|
+
const navigate = useNavigate();
|
|
117
|
+
const dispatch = useDispatch();
|
|
118
|
+
const entityApi = React.useMemo(() => createSolidEntityApi("agentSkillRegistry"), []);
|
|
119
|
+
const {
|
|
120
|
+
useCreateSolidEntityMutation,
|
|
121
|
+
useGetSolidEntityByIdQuery,
|
|
122
|
+
useUpdateSolidEntityMutation,
|
|
123
|
+
} = entityApi;
|
|
124
|
+
|
|
125
|
+
const { data: response, isLoading, isFetching, refetch } = useGetSolidEntityByIdQuery(
|
|
126
|
+
{
|
|
127
|
+
id,
|
|
128
|
+
qs: "populate[0]=agentSkills&populate[1]=agentSkills.agentRegistry",
|
|
129
|
+
},
|
|
130
|
+
{ skip: !id || id === "new" },
|
|
131
|
+
);
|
|
132
|
+
const [createSkill, { isLoading: isCreating }] = useCreateSolidEntityMutation();
|
|
133
|
+
const [updateSkill, { isLoading: isSaving }] = useUpdateSolidEntityMutation();
|
|
134
|
+
const record = extractEntityRecord(response) as SkillRecord | undefined;
|
|
135
|
+
|
|
136
|
+
const [activeTab, setActiveTab] = React.useState("general");
|
|
137
|
+
const [name, setName] = React.useState("");
|
|
138
|
+
const [type, setType] = React.useState("custom");
|
|
139
|
+
const [iconName, setIconName] = React.useState("");
|
|
140
|
+
const [description, setDescription] = React.useState("");
|
|
141
|
+
const [body, setBody] = React.useState("");
|
|
142
|
+
const [tags, setTags] = React.useState<string[]>([]);
|
|
143
|
+
const [tagDraft, setTagDraft] = React.useState("");
|
|
144
|
+
const [fieldErrors, setFieldErrors] = React.useState<Record<string, string>>({});
|
|
145
|
+
const [auditRefreshVersion, setAuditRefreshVersion] = React.useState(0);
|
|
146
|
+
const [confirmRefresh, setConfirmRefresh] = React.useState(false);
|
|
147
|
+
const baseline = React.useRef("");
|
|
148
|
+
const currentForm = () => JSON.stringify({ name, type, iconName, description, body, tags, tagDraft });
|
|
149
|
+
|
|
150
|
+
React.useEffect(() => {
|
|
151
|
+
const nextTags = parseTags(record?.tags);
|
|
152
|
+
setName(record?.name ?? "");
|
|
153
|
+
setType(record?.type ?? "custom");
|
|
154
|
+
setIconName(record?.iconName ?? "");
|
|
155
|
+
setDescription(record?.description ?? "");
|
|
156
|
+
setBody(record?.body ?? "");
|
|
157
|
+
setTags(nextTags);
|
|
158
|
+
setTagDraft("");
|
|
159
|
+
baseline.current = JSON.stringify({ name: record?.name ?? "", type: record?.type ?? "custom", iconName: record?.iconName ?? "", description: record?.description ?? "", body: record?.body ?? "", tags: nextTags, tagDraft: "" });
|
|
160
|
+
}, [record]);
|
|
161
|
+
|
|
162
|
+
const isReadOnly = record?.type === "solidx";
|
|
163
|
+
const isDirty = Boolean(record?.id) && currentForm() !== baseline.current;
|
|
164
|
+
const requestRefresh = () => isDirty ? setConfirmRefresh(true) : void refetch();
|
|
165
|
+
|
|
166
|
+
const addTag = () => {
|
|
167
|
+
const nextTag = tagDraft.trim();
|
|
168
|
+
if (!nextTag) return;
|
|
169
|
+
if (!tags.some((tag) => tag.toLowerCase() === nextTag.toLowerCase())) {
|
|
170
|
+
setTags((current) => [...current, nextTag]);
|
|
171
|
+
}
|
|
172
|
+
setTagDraft("");
|
|
173
|
+
setFieldErrors((current) => ({ ...current, tags: "" }));
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const handleSave = async () => {
|
|
177
|
+
const nextErrors: Record<string, string> = {};
|
|
178
|
+
if (!name.trim()) nextErrors.name = "Name is required.";
|
|
179
|
+
if (!type.trim()) nextErrors.type = "Skill type is required.";
|
|
180
|
+
if (!description.trim()) nextErrors.description = "Description is required.";
|
|
181
|
+
if (!body.trim()) nextErrors.body = "Skill instructions are required.";
|
|
182
|
+
if (tags.length === 0) nextErrors.tags = "At least one tag is required.";
|
|
183
|
+
|
|
184
|
+
setFieldErrors(nextErrors);
|
|
185
|
+
if (Object.keys(nextErrors).length > 0) {
|
|
186
|
+
setActiveTab(nextErrors.body ? "skill" : "general");
|
|
187
|
+
dispatch(showToast({
|
|
188
|
+
severity: "error",
|
|
189
|
+
summary: "Missing information",
|
|
190
|
+
detail: Object.values(nextErrors).join(" "),
|
|
191
|
+
}));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const payload = {
|
|
196
|
+
name: name.trim(),
|
|
197
|
+
type,
|
|
198
|
+
iconName: iconName || null,
|
|
199
|
+
description: description.trim(),
|
|
200
|
+
body,
|
|
201
|
+
tags: JSON.stringify(tags),
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
try {
|
|
205
|
+
if (record?.id) {
|
|
206
|
+
await updateSkill({ id: record.id, data: payload }).unwrap();
|
|
207
|
+
dispatch(showToast({
|
|
208
|
+
severity: "success",
|
|
209
|
+
summary: "Saved",
|
|
210
|
+
detail: "Skill updated successfully.",
|
|
211
|
+
}));
|
|
212
|
+
setAuditRefreshVersion((version) => version + 1);
|
|
213
|
+
refetch();
|
|
214
|
+
} else {
|
|
215
|
+
const result: any = await createSkill(payload).unwrap();
|
|
216
|
+
const createdId = result?.data?.id ?? result?.id;
|
|
217
|
+
dispatch(showToast({
|
|
218
|
+
severity: "success",
|
|
219
|
+
summary: "Created",
|
|
220
|
+
detail: "Skill created successfully.",
|
|
221
|
+
}));
|
|
222
|
+
if (createdId) {
|
|
223
|
+
navigate(`/admin/core/solid-core/agent-skill-registry/editor/${createdId}`, {
|
|
224
|
+
replace: true,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
} catch (error: any) {
|
|
229
|
+
const errorDetail = getSaveErrorMessage(error);
|
|
230
|
+
const serverFieldErrors: Record<string, string> = {};
|
|
231
|
+
if (/required|not be empty|cannot be empty|should not be empty/i.test(errorDetail)) {
|
|
232
|
+
for (const field of ["name", "type", "description", "body", "tags"]) {
|
|
233
|
+
if (!new RegExp(`\\b${field}\\b`, "i").test(errorDetail)) continue;
|
|
234
|
+
serverFieldErrors[field] = `${field === "body" ? "Skill instructions" : field[0].toUpperCase() + field.slice(1)} is required.`;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (Object.keys(serverFieldErrors).length > 0) {
|
|
238
|
+
setFieldErrors(serverFieldErrors);
|
|
239
|
+
setActiveTab(serverFieldErrors.body || serverFieldErrors.tags ? "skill" : "general");
|
|
240
|
+
}
|
|
241
|
+
dispatch(showToast({
|
|
242
|
+
severity: "error",
|
|
243
|
+
summary: "Save failed",
|
|
244
|
+
detail: errorDetail,
|
|
245
|
+
}));
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
const agents = skillAgents(record);
|
|
250
|
+
const tabs = [
|
|
251
|
+
{
|
|
252
|
+
value: "general",
|
|
253
|
+
label: "General Info",
|
|
254
|
+
content: (
|
|
255
|
+
<fieldset className="agent-skill-editor__general" disabled={isReadOnly}>
|
|
256
|
+
{isReadOnly && <p className="agent-skill-editor__readonly-note">SolidX skills are seeded by the AgentHub runtime and cannot be edited.</p>}
|
|
257
|
+
<div className="agent-skill-editor__fields">
|
|
258
|
+
<label className="agent-skill-editor__field">
|
|
259
|
+
<span>Name <b>*</b></span>
|
|
260
|
+
<SolidInput
|
|
261
|
+
value={name}
|
|
262
|
+
aria-invalid={Boolean(fieldErrors.name)}
|
|
263
|
+
aria-describedby={fieldErrors.name ? "agent-skill-name-error" : undefined}
|
|
264
|
+
className={fieldErrors.name ? "agent-skill-editor__input--invalid" : undefined}
|
|
265
|
+
onChange={(event) => {
|
|
266
|
+
setName(event.target.value);
|
|
267
|
+
setFieldErrors((current) => ({ ...current, name: "" }));
|
|
268
|
+
}}
|
|
269
|
+
/>
|
|
270
|
+
{fieldErrors.name && <small id="agent-skill-name-error" className="agent-skill-editor__field-error">{fieldErrors.name}</small>}
|
|
271
|
+
</label>
|
|
272
|
+
<div className="agent-skill-editor__field">
|
|
273
|
+
<span>Icon</span>
|
|
274
|
+
<SolidIconPicker value={iconName} onChange={setIconName} />
|
|
275
|
+
</div>
|
|
276
|
+
<label className="agent-skill-editor__field">
|
|
277
|
+
<span>Description <b>*</b></span>
|
|
278
|
+
<SolidInput
|
|
279
|
+
value={description}
|
|
280
|
+
aria-invalid={Boolean(fieldErrors.description)}
|
|
281
|
+
aria-describedby={fieldErrors.description ? "agent-skill-description-error" : undefined}
|
|
282
|
+
className={fieldErrors.description ? "agent-skill-editor__input--invalid" : undefined}
|
|
283
|
+
onChange={(event) => {
|
|
284
|
+
setDescription(event.target.value);
|
|
285
|
+
setFieldErrors((current) => ({ ...current, description: "" }));
|
|
286
|
+
}}
|
|
287
|
+
/>
|
|
288
|
+
{fieldErrors.description && <small id="agent-skill-description-error" className="agent-skill-editor__field-error">{fieldErrors.description}</small>}
|
|
289
|
+
</label>
|
|
290
|
+
</div>
|
|
291
|
+
<label className="agent-skill-editor__field">
|
|
292
|
+
<span>Skill type <b>*</b></span>
|
|
293
|
+
<select
|
|
294
|
+
value={type}
|
|
295
|
+
aria-invalid={Boolean(fieldErrors.type)}
|
|
296
|
+
aria-describedby={fieldErrors.type ? "agent-skill-type-error" : undefined}
|
|
297
|
+
className={fieldErrors.type ? "agent-skill-editor__input--invalid" : undefined}
|
|
298
|
+
onChange={(event) => {
|
|
299
|
+
setType(event.target.value);
|
|
300
|
+
setFieldErrors((current) => ({ ...current, type: "" }));
|
|
301
|
+
}}
|
|
302
|
+
>
|
|
303
|
+
{isReadOnly && <option value="solidx">SolidX</option>}
|
|
304
|
+
<option value="thirdparty">Third Party</option>
|
|
305
|
+
<option value="custom">Custom</option>
|
|
306
|
+
</select>
|
|
307
|
+
{fieldErrors.type && <small id="agent-skill-type-error" className="agent-skill-editor__field-error">{fieldErrors.type}</small>}
|
|
308
|
+
</label>
|
|
309
|
+
<div className="agent-skill-editor__field">
|
|
310
|
+
<span>Tags <b>*</b></span>
|
|
311
|
+
<div className={`agent-skill-editor__tag-input${fieldErrors.tags ? " agent-skill-editor__tag-input--invalid" : ""}`}>
|
|
312
|
+
{tags.map((tag, index) => (
|
|
313
|
+
<span className="agent-skill-editor__tag" key={`${tag}-${index}`}>
|
|
314
|
+
{tag}
|
|
315
|
+
<button
|
|
316
|
+
type="button"
|
|
317
|
+
aria-label={`Remove ${tag}`}
|
|
318
|
+
onClick={() => {
|
|
319
|
+
setTags((current) => {
|
|
320
|
+
const nextTags = current.filter((_, tagIndex) => tagIndex !== index);
|
|
321
|
+
if (nextTags.length > 0) setFieldErrors((errors) => ({ ...errors, tags: "" }));
|
|
322
|
+
return nextTags;
|
|
323
|
+
});
|
|
324
|
+
}}
|
|
325
|
+
>
|
|
326
|
+
<X size={13} />
|
|
327
|
+
</button>
|
|
328
|
+
</span>
|
|
329
|
+
))}
|
|
330
|
+
<input
|
|
331
|
+
value={tagDraft}
|
|
332
|
+
aria-label="Add a tag"
|
|
333
|
+
placeholder="Type a tag and press Enter"
|
|
334
|
+
onChange={(event) => setTagDraft(event.target.value)}
|
|
335
|
+
onKeyDown={(event) => {
|
|
336
|
+
if (event.key === "Enter") {
|
|
337
|
+
event.preventDefault();
|
|
338
|
+
addTag();
|
|
339
|
+
}
|
|
340
|
+
}}
|
|
341
|
+
/>
|
|
342
|
+
<SolidButton type="button" variant="secondary" size="small" onClick={addTag}>
|
|
343
|
+
<Plus size={14} /> Add
|
|
344
|
+
</SolidButton>
|
|
345
|
+
</div>
|
|
346
|
+
{fieldErrors.tags && <small className="agent-skill-editor__field-error">{fieldErrors.tags}</small>}
|
|
347
|
+
<small>Tags are saved as a JSON array.</small>
|
|
348
|
+
</div>
|
|
349
|
+
</fieldset>
|
|
350
|
+
),
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
value: "skill",
|
|
354
|
+
label: "Skill",
|
|
355
|
+
content: (
|
|
356
|
+
<div className="agent-skill-editor__skill">
|
|
357
|
+
<section className="agent-skill-editor__panel">
|
|
358
|
+
<header>
|
|
359
|
+
<h2>Skill instructions <b>*</b></h2>
|
|
360
|
+
<p>Write the skill's Markdown body here.</p>
|
|
361
|
+
</header>
|
|
362
|
+
<SolidCodeEditor
|
|
363
|
+
value={body}
|
|
364
|
+
onChange={(value) => {
|
|
365
|
+
setBody(value ?? "");
|
|
366
|
+
setFieldErrors((current) => ({ ...current, body: "" }));
|
|
367
|
+
}}
|
|
368
|
+
language="markdown"
|
|
369
|
+
readOnly={isReadOnly}
|
|
370
|
+
fontSize={11}
|
|
371
|
+
height="max(32rem, calc(100dvh - 18rem))"
|
|
372
|
+
className={`agent-skill-editor__code${fieldErrors.body ? " agent-skill-editor__code--invalid" : ""}`}
|
|
373
|
+
/>
|
|
374
|
+
{fieldErrors.body && <small className="agent-skill-editor__field-error agent-skill-editor__body-error">{fieldErrors.body}</small>}
|
|
375
|
+
</section>
|
|
376
|
+
</div>
|
|
377
|
+
),
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
value: "agents",
|
|
381
|
+
label: "Agents",
|
|
382
|
+
content: (
|
|
383
|
+
<section className="agent-skill-editor__agents">
|
|
384
|
+
<div>
|
|
385
|
+
<h2>Associated agents</h2>
|
|
386
|
+
<p>Agents linked to this skill. Associations are read-only here.</p>
|
|
387
|
+
</div>
|
|
388
|
+
{isLoading ? (
|
|
389
|
+
<p>Loading associated agents…</p>
|
|
390
|
+
) : agents.length ? (
|
|
391
|
+
<div className="agent-skill-editor__agent-grid">
|
|
392
|
+
{agents.map((agent, index) => (
|
|
393
|
+
<article className="agent-skill-editor__agent-card" key={String(agent.id ?? agent.name ?? index)}>
|
|
394
|
+
<span>{(agent.name ?? agent.title ?? "A").slice(0, 1).toUpperCase()}</span>
|
|
395
|
+
<strong>{agent.name ?? agent.title ?? "Unnamed agent"}</strong>
|
|
396
|
+
</article>
|
|
397
|
+
))}
|
|
398
|
+
</div>
|
|
399
|
+
) : (
|
|
400
|
+
<div className="agent-skill-editor__empty">No agents are currently associated with this skill.</div>
|
|
401
|
+
)}
|
|
402
|
+
</section>
|
|
403
|
+
),
|
|
404
|
+
},
|
|
405
|
+
];
|
|
406
|
+
|
|
407
|
+
return (
|
|
408
|
+
<main className="agent-skill-editor">
|
|
409
|
+
<header className="agent-skill-editor__header">
|
|
410
|
+
<div>
|
|
411
|
+
<div className="agent-skill-editor__heading-with-refresh"><h1>{record ? "Edit Skill" : "Create Skill"}</h1>{record?.id && <button type="button" className={`agent-skill-editor__refresh${isFetching ? " is-loading" : ""}`} aria-label="Refresh skill" title="Refresh skill" disabled={isFetching || isSaving} onClick={requestRefresh}><RefreshCw size={14} /></button>}</div>
|
|
412
|
+
</div>
|
|
413
|
+
<div className="agent-skill-editor__actions">
|
|
414
|
+
<SolidButton variant="secondary" leftIcon={<ArrowLeft size={16} />} onClick={() => navigate(-1)}>
|
|
415
|
+
Back
|
|
416
|
+
</SolidButton>
|
|
417
|
+
{!isReadOnly && (
|
|
418
|
+
<SolidButton loading={isCreating || isSaving} onClick={handleSave}>
|
|
419
|
+
Save Skill
|
|
420
|
+
</SolidButton>
|
|
421
|
+
)}
|
|
422
|
+
</div>
|
|
423
|
+
</header>
|
|
424
|
+
|
|
425
|
+
<SolidDialog open={confirmRefresh} onOpenChange={setConfirmRefresh} header="Discard unsaved changes?" style={{ width: "min(28rem, 94vw)" }}
|
|
426
|
+
footer={<><SolidButton type="button" variant="secondary" onClick={() => setConfirmRefresh(false)}>Cancel</SolidButton><SolidButton type="button" disabled={isFetching} onClick={() => { setConfirmRefresh(false); void refetch(); }}>Refresh and discard</SolidButton></>}>
|
|
427
|
+
<SolidDialogBody><p>You have unsaved changes. Refreshing will discard them and load the latest skill content.</p></SolidDialogBody>
|
|
428
|
+
</SolidDialog>
|
|
429
|
+
|
|
430
|
+
{isLoading ? (
|
|
431
|
+
<div className="agent-skill-editor__loading">Loading skill…</div>
|
|
432
|
+
) : record?.id ? (
|
|
433
|
+
<AgentRegistryAuditPanel
|
|
434
|
+
modelSingularName="agentSkillRegistry"
|
|
435
|
+
recordId={record.id}
|
|
436
|
+
refreshVersion={auditRefreshVersion}
|
|
437
|
+
modelUserKey={record.name}
|
|
438
|
+
>
|
|
439
|
+
<SolidTabGroup
|
|
440
|
+
tabs={tabs}
|
|
441
|
+
value={activeTab}
|
|
442
|
+
onValueChange={setActiveTab}
|
|
443
|
+
className="agent-skill-editor__tabs"
|
|
444
|
+
listClassName="agent-skill-editor__tab-list"
|
|
445
|
+
panelClassName="agent-skill-editor__tab-panel"
|
|
446
|
+
/>
|
|
447
|
+
</AgentRegistryAuditPanel>
|
|
448
|
+
) : (
|
|
449
|
+
<SolidTabGroup
|
|
450
|
+
tabs={tabs}
|
|
451
|
+
value={activeTab}
|
|
452
|
+
onValueChange={setActiveTab}
|
|
453
|
+
className="agent-skill-editor__tabs"
|
|
454
|
+
listClassName="agent-skill-editor__tab-list"
|
|
455
|
+
panelClassName="agent-skill-editor__tab-panel"
|
|
456
|
+
/>
|
|
457
|
+
)}
|
|
458
|
+
</main>
|
|
459
|
+
);
|
|
460
|
+
}
|