@solidxai/core-ui 0.1.18 → 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.
Files changed (571) hide show
  1. package/README.md +19 -0
  2. package/dist/components/common/SolidPopupContainer.d.ts.map +1 -1
  3. package/dist/components/common/SolidPopupContainer.js +3 -2
  4. package/dist/components/common/SolidPopupContainer.js.map +1 -1
  5. package/dist/components/common/SolidPopupContainer.tsx +3 -2
  6. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  7. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +4 -1
  8. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +11 -5
  10. package/dist/components/common/SolidThemeLink.d.ts.map +1 -1
  11. package/dist/components/common/SolidThemeLink.js +2 -2
  12. package/dist/components/common/SolidThemeLink.js.map +1 -1
  13. package/dist/components/common/SolidThemeLink.tsx +5 -2
  14. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  15. package/dist/components/core/chatter/SolidChatter.js +2 -1
  16. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  17. package/dist/components/core/chatter/SolidChatter.tsx +2 -0
  18. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  19. package/dist/components/core/chatter/SolidChatterHeader.js +2 -1
  20. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  21. package/dist/components/core/chatter/SolidChatterHeader.tsx +6 -4
  22. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +2 -0
  23. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  24. package/dist/components/core/chatter/SolidChatterMessageBox.js +7 -4
  25. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  26. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +8 -3
  27. package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts +5 -0
  28. package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts.map +1 -0
  29. package/dist/components/core/chatter/SolidChatterMessageWidget.js +85 -0
  30. package/dist/components/core/chatter/SolidChatterMessageWidget.js.map +1 -0
  31. package/dist/components/core/chatter/SolidChatterMessageWidget.tsx +59 -0
  32. package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts +2 -1
  33. package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts.map +1 -1
  34. package/dist/components/core/common/SolidCollectionRowActionMenuItems.js +3 -2
  35. package/dist/components/core/common/SolidCollectionRowActionMenuItems.js.map +1 -1
  36. package/dist/components/core/common/SolidCollectionRowActionMenuItems.tsx +5 -3
  37. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  38. package/dist/components/core/common/SolidGlobalSearchElement.js +35 -18
  39. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  40. package/dist/components/core/common/SolidGlobalSearchElement.tsx +40 -15
  41. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.d.ts.map +1 -1
  42. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js +2 -2
  43. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js.map +1 -1
  44. package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.tsx +6 -6
  45. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts +11 -0
  46. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts.map +1 -0
  47. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js +102 -0
  48. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js.map +1 -0
  49. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.tsx +129 -0
  50. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts +4 -0
  51. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts.map +1 -0
  52. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js +29 -0
  53. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js.map +1 -0
  54. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.module.css +226 -0
  55. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.tsx +57 -0
  56. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts +4 -0
  57. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -0
  58. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +33 -0
  59. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -0
  60. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +47 -0
  61. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts +5 -0
  62. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts.map +1 -0
  63. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js +59 -0
  64. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js.map +1 -0
  65. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.tsx +82 -0
  66. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts +17 -0
  67. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts.map +1 -0
  68. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js +258 -0
  69. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js.map +1 -0
  70. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx +286 -0
  71. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  72. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +102 -62
  73. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  74. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +116 -106
  75. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts +6 -0
  76. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts.map +1 -0
  77. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js +37 -0
  78. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js.map +1 -0
  79. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.tsx +89 -0
  80. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts +3 -0
  81. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts.map +1 -0
  82. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js +18 -0
  83. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js.map +1 -0
  84. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.tsx +51 -0
  85. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts +10 -0
  86. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts.map +1 -0
  87. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js +63 -0
  88. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js.map +1 -0
  89. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.tsx +111 -0
  90. package/dist/components/core/field/FieldListViewData.d.ts.map +1 -1
  91. package/dist/components/core/field/FieldListViewData.js +29 -9
  92. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  93. package/dist/components/core/field/FieldListViewData.tsx +7 -6
  94. package/dist/components/core/form/SolidFormView.d.ts +1 -0
  95. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  96. package/dist/components/core/form/SolidFormView.js +49 -48
  97. package/dist/components/core/form/SolidFormView.js.map +1 -1
  98. package/dist/components/core/form/SolidFormView.tsx +4 -3
  99. package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
  100. package/dist/components/core/form/fields/SolidDecimalField.js +12 -9
  101. package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
  102. package/dist/components/core/form/fields/SolidDecimalField.tsx +11 -8
  103. package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
  104. package/dist/components/core/form/fields/SolidIntegerField.js +16 -14
  105. package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
  106. package/dist/components/core/form/fields/SolidIntegerField.tsx +13 -10
  107. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  108. package/dist/components/core/form/fields/SolidPasswordField.js +13 -1
  109. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  110. package/dist/components/core/form/fields/SolidPasswordField.tsx +14 -3
  111. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  112. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  113. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  114. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  115. package/dist/components/core/kanban/KanbanBoard.tsx +5 -1
  116. package/dist/components/core/kanban/KanbanCard.d.ts +3 -0
  117. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  118. package/dist/components/core/kanban/KanbanCard.js +5 -4
  119. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  120. package/dist/components/core/kanban/KanbanCard.tsx +31 -11
  121. package/dist/components/core/kanban/KanbanColumn.d.ts +5 -1
  122. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  123. package/dist/components/core/kanban/KanbanColumn.js +14 -3
  124. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  125. package/dist/components/core/kanban/KanbanColumn.tsx +43 -3
  126. package/dist/components/core/kanban/SolidKanbanView.d.ts +2 -0
  127. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  128. package/dist/components/core/kanban/SolidKanbanView.js +90 -52
  129. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  130. package/dist/components/core/kanban/SolidKanbanView.tsx +93 -13
  131. package/dist/components/core/list/SolidDataTable.d.ts +2 -1
  132. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  133. package/dist/components/core/list/SolidDataTable.js +4 -2
  134. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  135. package/dist/components/core/list/SolidDataTable.tsx +4 -0
  136. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  137. package/dist/components/core/list/SolidListView.js +197 -96
  138. package/dist/components/core/list/SolidListView.js.map +1 -1
  139. package/dist/components/core/list/SolidListView.tsx +96 -37
  140. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
  141. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +14 -0
  142. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  143. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +13 -0
  144. package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
  145. package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
  146. package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +2 -1
  147. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  148. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +1 -0
  149. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  150. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +1 -0
  151. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts +3 -0
  152. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts.map +1 -0
  153. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js +51 -0
  154. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js.map +1 -0
  155. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.tsx +60 -0
  156. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts +4 -0
  157. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts.map +1 -0
  158. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js +24 -0
  159. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js.map +1 -0
  160. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.tsx +32 -0
  161. package/dist/components/core/model/ModelListViewData.d.ts.map +1 -1
  162. package/dist/components/core/model/ModelListViewData.js +6 -23
  163. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  164. package/dist/components/core/model/ModelListViewData.tsx +1 -48
  165. package/dist/components/core/module/CreateModule.css +42 -0
  166. package/dist/components/core/module/CreateModule.js +1 -1
  167. package/dist/components/core/module/CreateModule.js.map +1 -1
  168. package/dist/components/core/module/CreateModule.tsx +5 -5
  169. package/dist/components/core/solid-agent/AgentModelIndicator.d.ts +5 -0
  170. package/dist/components/core/solid-agent/AgentModelIndicator.d.ts.map +1 -0
  171. package/dist/components/core/solid-agent/AgentModelIndicator.js +14 -0
  172. package/dist/components/core/solid-agent/AgentModelIndicator.js.map +1 -0
  173. package/dist/components/core/solid-agent/AgentModelIndicator.tsx +40 -0
  174. package/dist/components/core/solid-agent/AgentSignIn.d.ts +12 -0
  175. package/dist/components/core/solid-agent/AgentSignIn.d.ts.map +1 -0
  176. package/dist/components/core/solid-agent/AgentSignIn.js +82 -0
  177. package/dist/components/core/solid-agent/AgentSignIn.js.map +1 -0
  178. package/dist/components/core/solid-agent/AgentSignIn.tsx +91 -0
  179. package/dist/components/core/solid-agent/SolidAgent.module.css +596 -0
  180. package/dist/components/core/solid-agent/SolidAgentChat.d.ts +30 -0
  181. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -0
  182. package/dist/components/core/solid-agent/SolidAgentChat.js +300 -0
  183. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -0
  184. package/dist/components/core/solid-agent/SolidAgentChat.tsx +451 -0
  185. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +44 -0
  186. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -0
  187. package/dist/components/core/solid-agent/SolidAgentEmbedded.js +46 -0
  188. package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -0
  189. package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +87 -0
  190. package/dist/components/core/solid-agent/SolidAgentHost.d.ts +8 -0
  191. package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -0
  192. package/dist/components/core/solid-agent/SolidAgentHost.js +152 -0
  193. package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -0
  194. package/dist/components/core/solid-agent/SolidAgentHost.tsx +164 -0
  195. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts +16 -0
  196. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -0
  197. package/dist/components/core/solid-agent/SolidAgentMarkdown.js +161 -0
  198. package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -0
  199. package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +133 -0
  200. package/dist/components/core/solid-agent/SolidAgentMount.d.ts +3 -0
  201. package/dist/components/core/solid-agent/SolidAgentMount.d.ts.map +1 -0
  202. package/dist/components/core/solid-agent/SolidAgentMount.js +62 -0
  203. package/dist/components/core/solid-agent/SolidAgentMount.js.map +1 -0
  204. package/dist/components/core/solid-agent/SolidAgentMount.tsx +31 -0
  205. package/dist/components/core/solid-agent/SolidXAIIcon.d.ts +5 -0
  206. package/dist/components/core/solid-agent/SolidXAIIcon.d.ts.map +1 -0
  207. package/dist/components/core/solid-agent/SolidXAIIcon.js +7 -0
  208. package/dist/components/core/solid-agent/SolidXAIIcon.js.map +1 -0
  209. package/dist/components/core/solid-agent/SolidXAIIcon.tsx +6 -0
  210. package/dist/components/core/solid-agent/agentAttachments.d.ts +20 -0
  211. package/dist/components/core/solid-agent/agentAttachments.d.ts.map +1 -0
  212. package/dist/components/core/solid-agent/agentAttachments.js +184 -0
  213. package/dist/components/core/solid-agent/agentAttachments.js.map +1 -0
  214. package/dist/components/core/solid-agent/agentAttachments.ts +119 -0
  215. package/dist/components/core/solid-agent/agentEvents.d.ts +34 -0
  216. package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -0
  217. package/dist/components/core/solid-agent/agentEvents.js +282 -0
  218. package/dist/components/core/solid-agent/agentEvents.js.map +1 -0
  219. package/dist/components/core/solid-agent/agentEvents.ts +292 -0
  220. package/dist/components/core/solid-agent/agentFormat.d.ts +18 -0
  221. package/dist/components/core/solid-agent/agentFormat.d.ts.map +1 -0
  222. package/dist/components/core/solid-agent/agentFormat.js +179 -0
  223. package/dist/components/core/solid-agent/agentFormat.js.map +1 -0
  224. package/dist/components/core/solid-agent/agentFormat.ts +160 -0
  225. package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts +9 -0
  226. package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts.map +1 -0
  227. package/dist/components/core/solid-agent/client/agentAttachmentMedia.js +129 -0
  228. package/dist/components/core/solid-agent/client/agentAttachmentMedia.js.map +1 -0
  229. package/dist/components/core/solid-agent/client/agentAttachmentMedia.ts +69 -0
  230. package/dist/components/core/solid-agent/client/agentAuth.d.ts +63 -0
  231. package/dist/components/core/solid-agent/client/agentAuth.d.ts.map +1 -0
  232. package/dist/components/core/solid-agent/client/agentAuth.js +307 -0
  233. package/dist/components/core/solid-agent/client/agentAuth.js.map +1 -0
  234. package/dist/components/core/solid-agent/client/agentAuth.ts +222 -0
  235. package/dist/components/core/solid-agent/client/agentRest.d.ts +30 -0
  236. package/dist/components/core/solid-agent/client/agentRest.d.ts.map +1 -0
  237. package/dist/components/core/solid-agent/client/agentRest.js +178 -0
  238. package/dist/components/core/solid-agent/client/agentRest.js.map +1 -0
  239. package/dist/components/core/solid-agent/client/agentRest.ts +100 -0
  240. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +48 -0
  241. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -0
  242. package/dist/components/core/solid-agent/client/agentRuntime.js +406 -0
  243. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -0
  244. package/dist/components/core/solid-agent/client/agentRuntime.ts +226 -0
  245. package/dist/components/core/solid-agent/client/agentSocket.d.ts +46 -0
  246. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -0
  247. package/dist/components/core/solid-agent/client/agentSocket.js +535 -0
  248. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -0
  249. package/dist/components/core/solid-agent/client/agentSocket.ts +276 -0
  250. package/dist/components/core/solid-agent/client/agentUrls.d.ts +11 -0
  251. package/dist/components/core/solid-agent/client/agentUrls.d.ts.map +1 -0
  252. package/dist/components/core/solid-agent/client/agentUrls.js +18 -0
  253. package/dist/components/core/solid-agent/client/agentUrls.js.map +1 -0
  254. package/dist/components/core/solid-agent/client/agentUrls.ts +19 -0
  255. package/dist/components/core/solid-agent/composer/AgentComposer.d.ts +21 -0
  256. package/dist/components/core/solid-agent/composer/AgentComposer.d.ts.map +1 -0
  257. package/dist/components/core/solid-agent/composer/AgentComposer.js +219 -0
  258. package/dist/components/core/solid-agent/composer/AgentComposer.js.map +1 -0
  259. package/dist/components/core/solid-agent/composer/AgentComposer.tsx +241 -0
  260. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts +8 -0
  261. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -0
  262. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +87 -0
  263. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -0
  264. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +58 -0
  265. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +20 -0
  266. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -0
  267. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +103 -0
  268. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -0
  269. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +60 -0
  270. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +11 -0
  271. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -0
  272. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +21 -0
  273. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -0
  274. package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +266 -0
  275. package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts +15 -0
  276. package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts.map +1 -0
  277. package/dist/components/core/solid-agent/processes/agentHubProcessApi.js +122 -0
  278. package/dist/components/core/solid-agent/processes/agentHubProcessApi.js.map +1 -0
  279. package/dist/components/core/solid-agent/processes/agentHubProcessApi.ts +64 -0
  280. package/dist/components/core/solid-agent/sdk/solidAgent.d.ts +39 -0
  281. package/dist/components/core/solid-agent/sdk/solidAgent.d.ts.map +1 -0
  282. package/dist/components/core/solid-agent/sdk/solidAgent.js +44 -0
  283. package/dist/components/core/solid-agent/sdk/solidAgent.js.map +1 -0
  284. package/dist/components/core/solid-agent/sdk/solidAgent.ts +56 -0
  285. package/dist/components/core/solid-agent/thread/AgentThread.d.ts +17 -0
  286. package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -0
  287. package/dist/components/core/solid-agent/thread/AgentThread.js +166 -0
  288. package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -0
  289. package/dist/components/core/solid-agent/thread/AgentThread.tsx +248 -0
  290. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +36 -0
  291. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -0
  292. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +148 -0
  293. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -0
  294. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +116 -0
  295. package/dist/components/core/solid-agent/thread/inlineWidget.d.ts +8 -0
  296. package/dist/components/core/solid-agent/thread/inlineWidget.d.ts.map +1 -0
  297. package/dist/components/core/solid-agent/thread/inlineWidget.js +30 -0
  298. package/dist/components/core/solid-agent/thread/inlineWidget.js.map +1 -0
  299. package/dist/components/core/solid-agent/thread/inlineWidget.ts +27 -0
  300. package/dist/components/core/solid-agent/types.d.ts +155 -0
  301. package/dist/components/core/solid-agent/types.d.ts.map +1 -0
  302. package/dist/components/core/solid-agent/types.js +31 -0
  303. package/dist/components/core/solid-agent/types.js.map +1 -0
  304. package/dist/components/core/solid-agent/types.ts +148 -0
  305. package/dist/components/core/solid-agent/useAdminInputContext.d.ts +4 -0
  306. package/dist/components/core/solid-agent/useAdminInputContext.d.ts.map +1 -0
  307. package/dist/components/core/solid-agent/useAdminInputContext.js +49 -0
  308. package/dist/components/core/solid-agent/useAdminInputContext.js.map +1 -0
  309. package/dist/components/core/solid-agent/useAdminInputContext.ts +52 -0
  310. package/dist/components/core/solid-agent/useAgentAuth.d.ts +14 -0
  311. package/dist/components/core/solid-agent/useAgentAuth.d.ts.map +1 -0
  312. package/dist/components/core/solid-agent/useAgentAuth.js +88 -0
  313. package/dist/components/core/solid-agent/useAgentAuth.js.map +1 -0
  314. package/dist/components/core/solid-agent/useAgentAuth.ts +40 -0
  315. package/dist/components/core/solid-agent/useAgentAvailability.d.ts +19 -0
  316. package/dist/components/core/solid-agent/useAgentAvailability.d.ts.map +1 -0
  317. package/dist/components/core/solid-agent/useAgentAvailability.js +109 -0
  318. package/dist/components/core/solid-agent/useAgentAvailability.js.map +1 -0
  319. package/dist/components/core/solid-agent/useAgentAvailability.ts +80 -0
  320. package/dist/components/core/solid-agent/useAgentChat.d.ts +22 -0
  321. package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -0
  322. package/dist/components/core/solid-agent/useAgentChat.js +45 -0
  323. package/dist/components/core/solid-agent/useAgentChat.js.map +1 -0
  324. package/dist/components/core/solid-agent/useAgentChat.ts +57 -0
  325. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +7 -0
  326. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -0
  327. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +15 -0
  328. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -0
  329. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +24 -0
  330. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts +7 -0
  331. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts.map +1 -0
  332. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +15 -0
  333. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -0
  334. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +28 -0
  335. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts +4 -0
  336. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts.map +1 -0
  337. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +20 -0
  338. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -0
  339. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +8 -0
  340. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts +7 -0
  341. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts.map +1 -0
  342. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +11 -0
  343. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -0
  344. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +16 -0
  345. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts +7 -0
  346. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts.map +1 -0
  347. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +67 -0
  348. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -0
  349. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +135 -0
  350. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts +7 -0
  351. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts.map +1 -0
  352. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +24 -0
  353. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -0
  354. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +17 -0
  355. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts +8 -0
  356. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -0
  357. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +30 -0
  358. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -0
  359. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +77 -0
  360. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts +7 -0
  361. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts.map +1 -0
  362. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +40 -0
  363. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -0
  364. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +57 -0
  365. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts +4 -0
  366. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts.map +1 -0
  367. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +13 -0
  368. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -0
  369. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +19 -0
  370. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts +7 -0
  371. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts.map +1 -0
  372. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +55 -0
  373. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -0
  374. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +81 -0
  375. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts +4 -0
  376. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts.map +1 -0
  377. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +15 -0
  378. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -0
  379. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +30 -0
  380. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts +4 -0
  381. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts.map +1 -0
  382. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +15 -0
  383. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -0
  384. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +21 -0
  385. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts +7 -0
  386. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts.map +1 -0
  387. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +21 -0
  388. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -0
  389. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +33 -0
  390. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts +4 -0
  391. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts.map +1 -0
  392. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +11 -0
  393. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -0
  394. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +9 -0
  395. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts +15 -0
  396. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts.map +1 -0
  397. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +26 -0
  398. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -0
  399. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +42 -0
  400. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts +7 -0
  401. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts.map +1 -0
  402. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +41 -0
  403. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -0
  404. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +69 -0
  405. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts +7 -0
  406. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts.map +1 -0
  407. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +23 -0
  408. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -0
  409. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +40 -0
  410. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts +4 -0
  411. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts.map +1 -0
  412. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +32 -0
  413. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -0
  414. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +55 -0
  415. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts +7 -0
  416. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts.map +1 -0
  417. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +17 -0
  418. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -0
  419. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +31 -0
  420. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts +12 -0
  421. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts.map +1 -0
  422. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js +17 -0
  423. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js.map +1 -0
  424. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.ts +19 -0
  425. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +909 -0
  426. package/dist/components/core/solid-ai/SolidAiChat.js +1 -1
  427. package/dist/components/core/solid-ai/SolidAiChat.js.map +1 -1
  428. package/dist/components/core/solid-ai/SolidAiChat.tsx +2 -2
  429. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  430. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  431. package/dist/components/core/tree/SolidTreeView.tsx +3 -2
  432. package/dist/components/layout/AdminLayout.d.ts.map +1 -1
  433. package/dist/components/layout/AdminLayout.js +2 -1
  434. package/dist/components/layout/AdminLayout.js.map +1 -1
  435. package/dist/components/layout/AdminLayout.tsx +2 -0
  436. package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
  437. package/dist/components/layout/AdminTopHeader.js +7 -3
  438. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  439. package/dist/components/layout/AdminTopHeader.tsx +8 -3
  440. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  441. package/dist/components/shad-cn-ui/SolidAutocomplete.js +2 -2
  442. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  443. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +19 -15
  444. package/dist/components/shad-cn-ui/SolidDialog.d.ts +2 -1
  445. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  446. package/dist/components/shad-cn-ui/SolidDialog.js +2 -2
  447. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  448. package/dist/components/shad-cn-ui/SolidDialog.tsx +3 -0
  449. package/dist/components/shad-cn-ui/SolidIconPicker.d.ts +7 -0
  450. package/dist/components/shad-cn-ui/SolidIconPicker.d.ts.map +1 -0
  451. package/dist/components/shad-cn-ui/SolidIconPicker.js +43 -0
  452. package/dist/components/shad-cn-ui/SolidIconPicker.js.map +1 -0
  453. package/dist/components/shad-cn-ui/SolidIconPicker.tsx +73 -0
  454. package/dist/components/shad-cn-ui/index.d.ts +1 -0
  455. package/dist/components/shad-cn-ui/index.d.ts.map +1 -1
  456. package/dist/components/shad-cn-ui/index.js +1 -0
  457. package/dist/components/shad-cn-ui/index.js.map +1 -1
  458. package/dist/components/shad-cn-ui/index.ts +1 -0
  459. package/dist/constants/allowed-ai-models.d.ts +8 -0
  460. package/dist/constants/allowed-ai-models.d.ts.map +1 -0
  461. package/dist/constants/allowed-ai-models.js +33 -0
  462. package/dist/constants/allowed-ai-models.js.map +1 -0
  463. package/dist/constants/allowed-ai-models.ts +39 -0
  464. package/dist/constants/error-messages.d.ts +2 -0
  465. package/dist/constants/error-messages.d.ts.map +1 -1
  466. package/dist/constants/error-messages.js +3 -0
  467. package/dist/constants/error-messages.js.map +1 -1
  468. package/dist/constants/error-messages.ts +4 -0
  469. package/dist/helpers/hydrateRelationRules.d.ts.map +1 -1
  470. package/dist/helpers/hydrateRelationRules.js +3 -1
  471. package/dist/helpers/hydrateRelationRules.js.map +1 -1
  472. package/dist/helpers/hydrateRelationRules.ts +5 -1
  473. package/dist/helpers/registry.d.ts +4 -2
  474. package/dist/helpers/registry.d.ts.map +1 -1
  475. package/dist/helpers/registry.js +75 -12
  476. package/dist/helpers/registry.js.map +1 -1
  477. package/dist/helpers/registry.ts +73 -16
  478. package/dist/helpers/updatePasswordField.d.ts.map +1 -1
  479. package/dist/helpers/updatePasswordField.js +21 -15
  480. package/dist/helpers/updatePasswordField.js.map +1 -1
  481. package/dist/helpers/updatePasswordField.ts +6 -1
  482. package/dist/index.d.ts +21 -4
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +16 -3
  485. package/dist/index.js.map +1 -1
  486. package/dist/index.ts +38 -3
  487. package/dist/redux/api/fieldApi.js +1 -1
  488. package/dist/redux/api/fieldApi.js.map +1 -1
  489. package/dist/redux/api/fieldApi.ts +2 -2
  490. package/dist/redux/api/modelApi.d.ts +13 -13
  491. package/dist/redux/api/modelApi.d.ts.map +1 -1
  492. package/dist/redux/api/modelApi.js +15 -15
  493. package/dist/redux/api/modelApi.js.map +1 -1
  494. package/dist/redux/api/modelApi.ts +12 -15
  495. package/dist/redux/features/agentSlice.d.ts +34 -0
  496. package/dist/redux/features/agentSlice.d.ts.map +1 -0
  497. package/dist/redux/features/agentSlice.js +92 -0
  498. package/dist/redux/features/agentSlice.js.map +1 -0
  499. package/dist/redux/features/agentSlice.ts +119 -0
  500. package/dist/redux/store/defaultStoreConfig.d.ts +11 -10
  501. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  502. package/dist/redux/store/defaultStoreConfig.js +2 -0
  503. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  504. package/dist/redux/store/defaultStoreConfig.ts +2 -0
  505. package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
  506. package/dist/redux/store/solidEntityApiPool.js +7 -0
  507. package/dist/redux/store/solidEntityApiPool.js.map +1 -1
  508. package/dist/redux/store/solidEntityApiPool.ts +6 -0
  509. package/dist/resources/globals.css +109 -1
  510. package/dist/resources/solid-custom.css +331 -12
  511. package/dist/resources/solid-tailwind-generated.css +1 -1
  512. package/dist/resources/themes/solid-light-modern/theme.css +2 -4
  513. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.css +47 -0
  514. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts +12 -0
  515. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts.map +1 -0
  516. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js +80 -0
  517. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js.map +1 -0
  518. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.tsx +123 -0
  519. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +110 -0
  520. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts +3 -0
  521. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -0
  522. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +702 -0
  523. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -0
  524. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +630 -0
  525. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.css +303 -0
  526. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts +3 -0
  527. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -0
  528. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +330 -0
  529. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -0
  530. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +460 -0
  531. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +125 -0
  532. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts +3 -0
  533. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -0
  534. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +295 -0
  535. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -0
  536. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +275 -0
  537. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +41 -0
  538. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
  539. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +1 -1
  540. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
  541. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +3 -1
  542. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +11 -11
  543. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +1 -1
  544. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +15 -15
  545. package/dist/routes/pages/embed/AgentEmbedPage.d.ts +3 -0
  546. package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -0
  547. package/dist/routes/pages/embed/AgentEmbedPage.js +170 -0
  548. package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -0
  549. package/dist/routes/pages/embed/AgentEmbedPage.module.css +195 -0
  550. package/dist/routes/pages/embed/AgentEmbedPage.tsx +169 -0
  551. package/dist/routes/solidRoutes.d.ts.map +1 -1
  552. package/dist/routes/solidRoutes.js +8 -0
  553. package/dist/routes/solidRoutes.js.map +1 -1
  554. package/dist/routes/solidRoutes.tsx +8 -0
  555. package/dist/types/dashboard.d.ts +4 -0
  556. package/dist/types/dashboard.d.ts.map +1 -1
  557. package/dist/types/dashboard.js.map +1 -1
  558. package/dist/types/dashboard.ts +5 -0
  559. package/dist/types/extension-registry.d.ts +4 -0
  560. package/dist/types/extension-registry.d.ts.map +1 -1
  561. package/dist/types/extension-registry.js +7 -0
  562. package/dist/types/extension-registry.js.map +1 -1
  563. package/dist/types/extension-registry.ts +7 -0
  564. package/dist/types/index.d.ts +4 -0
  565. package/dist/types/list-row-action.d.ts +20 -0
  566. package/dist/types/list-row-action.d.ts.map +1 -0
  567. package/dist/types/list-row-action.js +2 -0
  568. package/dist/types/list-row-action.js.map +1 -0
  569. package/dist/types/list-row-action.ts +21 -0
  570. package/dist/types/solid-core.d.ts +36 -0
  571. package/package.json +1 -1
@@ -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;
@@ -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;AAa1F,QAAA,MAAM,oBAAoB,UAAW,oCAAoC,4CA0HxE,CAAA;AAED,eAAe,oBAAoB,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"}
@@ -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, jsxs as _jsxs } from "react/jsx-runtime";
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 { kebabCase } from "lodash";
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
- var DELETE_MODEL_DIALOG_DISMISS_DELAY_MS = 3000;
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 = useState(false), isConfirmed = _a[0], setIsConfirmed = _a[1];
51
- var _b = useState(false), isApplying = _b[0], setIsApplying = _b[1];
57
+ var _a, _b, _c;
52
58
  var dispatch = useDispatch();
53
- var entityApi = createSolidEntityApi(event.params.modelName);
54
- var useDeleteSolidEntityMutation = entityApi.useDeleteSolidEntityMutation;
55
- var deleteSolidSingleEntiry = useDeleteSolidEntityMutation()[0];
56
- var deleteModelHandler = function () { return __awaiter(void 0, void 0, void 0, function () {
57
- var res, message, isBackendAvailable, err_1;
58
- var _a, _b, _c;
59
- return __generator(this, function (_d) {
60
- switch (_d.label) {
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
- if (isApplying) {
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
- _d.trys.push([1, 7, 8, 9]);
69
- return [4 /*yield*/, deleteSolidSingleEntiry(event.rowData.id)];
106
+ _b.trys.push([1, 3, , 4]);
107
+ return [4 /*yield*/, navigator.clipboard.writeText(dropTableStatement)];
70
108
  case 2:
71
- res = _d.sent();
72
- if (!res.error) return [3 /*break*/, 3];
73
- message = ((_b = (_a = res.error) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) ||
74
- ((_c = res.error) === null || _c === void 0 ? void 0 : _c.error) ||
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 5:
86
- isBackendAvailable = _d.sent();
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
- backendHealthMonitor.reportFailure({
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
- _d.label = 6;
97
- case 6: return [3 /*break*/, 9];
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
- var rows = [
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
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteModelRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { kebabCase } from \"lodash\";\nimport { createSolidEntityApi } from \"../../../../../../redux/api/solidEntityApi\";\nimport { ERROR_MESSAGES } from \"../../../../../../constants/error-messages\";\nimport { SolidButton, SolidCheckbox } from \"../../../../../shad-cn-ui\";\nimport { pingBackendAvailability } from \"../../../../../../helpers/waitForBackendAvailability\";\nimport { backendHealthMonitor } from \"../../../../../../helpers/backendHealthMonitor\";\n\nconst DELETE_MODEL_DIALOG_DISMISS_DELAY_MS = 3_000;\n\nconst DeleteModelRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const [isConfirmed, setIsConfirmed] = useState(false);\n const [isApplying, setIsApplying] = useState(false);\n const dispatch = useDispatch();\n const entityApi = createSolidEntityApi(event.params.modelName);\n const {useDeleteSolidEntityMutation} = entityApi;\n const [deleteSolidSingleEntiry] = useDeleteSolidEntityMutation()\n\n const deleteModelHandler = async () => {\n if (isApplying) {\n return;\n }\n\n setIsApplying(true);\n try {\n const res: any = await deleteSolidSingleEntiry(event.rowData.id);\n \n // console.log('delete model res', res);\n if (res.error) {\n // handle backend or RTK error object\n const message =\n res.error?.data?.message ||\n res.error?.error ||\n ERROR_MESSAGES.ERROR_OCCURED;\n dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.DELETE_FAIELD, detail: message }));\n } else {\n dispatch(showToast({ severity: 'success', summary: ERROR_MESSAGES.MODEL_DELETE, detail: ERROR_MESSAGES.MODEL_DELETE_SUCCESSFULLY(event.rowData.singularName) }));\n await new Promise((resolve) => window.setTimeout(resolve, DELETE_MODEL_DIALOG_DISMISS_DELAY_MS));\n dispatch(closePopup());\n\n const isBackendAvailable = await pingBackendAvailability();\n if (isBackendAvailable) {\n backendHealthMonitor.reportSuccess();\n } else {\n backendHealthMonitor.reportFailure({\n status: \"FETCH_ERROR\",\n message: \"Unable to reach the server. Reconnecting...\",\n });\n }\n }\n } catch (err: any) {\n console.error(\"catch error\", err);\n dispatch(showToast({ severity: 'error', summary: ERROR_MESSAGES.ERROR, detail: ERROR_MESSAGES.NETWORK_OR_SERVER_ERROR }));\n } finally {\n setIsApplying(false);\n }\n }\n\n const rows = [\n { file: `${kebabCase(event.rowData.singularName)}.entity.ts`, description: 'The TypeORM entity definition for this model. Deleting it removes the model’s schema mapping', intervention: 'Automatic' },\n { file: `${kebabCase(event.rowData.singularName)}.create.dto.ts`, description: 'DTO defining the payload for creating a new record of this model', intervention: 'Automatic' },\n { file: `${kebabCase(event.rowData.singularName)}.update.dto.ts`, description: 'DTO defining the payload for updating an existing record of this model', intervention: 'Automatic' },\n { file: `${kebabCase(event.rowData.singularName)}.repository.ts`, description: 'Custom repository encapsulating database operations for this model', intervention: 'Automatic' },\n { file: `${kebabCase(event.rowData.singularName)}.service.ts`, description: 'Service layer containing business logic and interactions for this model', intervention: 'Automatic' },\n { file: `${kebabCase(event.rowData.singularName)}.controller.ts`, description: 'Controller exposing API endpoints related to this model', intervention: 'Automatic' },\n { file: `${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' },\n { file: `${kebabCase(event.rowData.singularName)}-metadata.json`, description: 'Remove references to this model in the model metadata, menu, action & view sections', intervention: 'Automatic' },\n { 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 },\n ];\n\n\n\n return (\n <div className=\"solid-delete-model-popup\">\n <div className=\"solid-filter-dialog-head solid-delete-model-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Delete Model</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">\n Review the impacted files carefully before applying this delete action.\n </p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-delete-model-popup__body\">\n <p className=\"solid-delete-model-popup__intro\">\n Deleting a model should be done carefully. The following files will be impacted as part of deleting this model.\n </p>\n\n <div className=\"solid-delete-model-popup__table-wrap\">\n <table className=\"solid-delete-model-popup__table\">\n <thead>\n <tr>\n <th>File Name</th>\n <th>Description</th>\n <th>Intervention</th>\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => (\n <tr key={`${row.file}-${row.intervention}`}>\n <td className=\"solid-delete-model-popup__file\">{row.file}</td>\n <td>{row.description}</td>\n <td className={row.manual ? \"solid-delete-model-popup__intervention is-manual\" : \"solid-delete-model-popup__intervention\"}>\n {row.intervention}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n\n <div className=\"solid-delete-model-popup__confirm\">\n <SolidCheckbox\n id=\"delete-model-confirmation\"\n name=\"confirm\"\n checked={isConfirmed}\n onChange={() => setIsConfirmed(!isConfirmed)}\n label=\"I confirm that #9 (drop database table) will be done by me manually after the automatic steps above are applied.\"\n />\n </div>\n\n <div className=\"solid-delete-model-popup__actions\">\n <SolidButton size=\"small\" disabled={!isConfirmed || isApplying} loading={isApplying} autoFocus onClick={deleteModelHandler}>\n Apply\n </SolidButton>\n <SolidButton size=\"small\" variant=\"outline\" disabled={isApplying} onClick={() => dispatch(closePopup())}>\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n )\n}\n\nexport default DeleteModelRowAction;\n"]}
1
+ {"version":3,"file":"DeleteModelRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { useApplyDeleteModelMutation, usePreviewDeleteModelMutation } from \"../../../../../../redux/api/modelApi\";\nimport { ERROR_MESSAGES } from \"../../../../../../constants/error-messages\";\nimport { SolidButton, SolidCheckbox, SolidSpinner } from \"../../../../../shad-cn-ui\";\nimport { pingBackendAvailability } from \"../../../../../../helpers/waitForBackendAvailability\";\nimport { backendHealthMonitor } from \"../../../../../../helpers/backendHealthMonitor\";\nimport { Check, Copy } from \"lucide-react\";\n\ntype DeleteChange = { category: string; description: string; count: number; items: string[] };\ntype DeletePreview = { model: { id: number; singularName: string; displayName: string }; planHash: string; changes: DeleteChange[] };\n\nconst displayInventoryItem = (item: string) => {\n if (!item.startsWith(\"/\")) return item;\n const sourceIndex = item.lastIndexOf(\"/src/\");\n if (sourceIndex >= 0) return item.slice(sourceIndex + 1);\n return item.split(\"/\").slice(-2).join(\"/\");\n};\n\nconst DeleteModelRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const [preview, setPreview] = useState<DeletePreview | null>(null);\n const [previewError, setPreviewError] = useState<string | null>(null);\n const [isConfirmed, setIsConfirmed] = useState(false);\n const [copiedDdl, setCopiedDdl] = useState(false);\n const [loadPreview, { isLoading: isLoadingPreview }] = usePreviewDeleteModelMutation();\n const [applyDelete, { isLoading: isApplying }] = useApplyDeleteModelMutation();\n\n const refreshPreview = async () => {\n setPreview(null);\n setPreviewError(null);\n setIsConfirmed(false);\n try {\n const result = await loadPreview(event.rowData.id).unwrap();\n setPreview(result as DeletePreview);\n } catch (error: any) {\n setPreviewError(error?.data?.message || error?.error || ERROR_MESSAGES.ERROR_OCCURED);\n }\n };\n\n useEffect(() => { void refreshPreview(); }, [event.rowData.id]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const automaticChanges = preview?.changes.filter(change => change.category !== 'Manual follow-up' && change.count > 0) ?? [];\n const automaticItemCount = automaticChanges.reduce((total, change) => total + change.count, 0);\n const manualFollowUp = preview?.changes.find(change => change.category === 'Manual follow-up');\n const tableName = manualFollowUp?.items[0]?.replace(/ database table$/, '') ?? '';\n const quotedTableName = tableName.split('.').map(part => `\"${part.replace(/\"/g, '\"\"')}\"`).join('.');\n const dropTableStatement = tableName ? `DROP TABLE IF EXISTS ${quotedTableName};` : '';\n\n const copyDropStatement = async () => {\n if (!dropTableStatement) return;\n try {\n await navigator.clipboard.writeText(dropTableStatement);\n setCopiedDdl(true);\n window.setTimeout(() => setCopiedDdl(false), 1800);\n } catch {\n setPreviewError('Unable to copy the DROP TABLE statement. Select and copy it manually.');\n }\n };\n\n const deleteModelHandler = async () => {\n if (!preview || !isConfirmed || isApplying) return;\n try {\n await applyDelete({ id: event.rowData.id, planHash: preview.planHash }).unwrap();\n dispatch(showToast({ severity: 'success', summary: ERROR_MESSAGES.MODEL_DELETE, detail: ERROR_MESSAGES.MODEL_DELETE_SUCCESSFULLY(event.rowData.singularName) }));\n dispatch(closePopup());\n const isBackendAvailable = await pingBackendAvailability();\n if (isBackendAvailable) backendHealthMonitor.reportSuccess();\n else backendHealthMonitor.reportFailure({ status: \"FETCH_ERROR\", message: \"Unable to reach the server. Reconnecting...\" });\n } catch (error: any) {\n const updatedPreview = error?.data?.preview as DeletePreview | undefined;\n if (updatedPreview) {\n setPreview(updatedPreview);\n setIsConfirmed(false);\n setPreviewError('The inventory changed since it was reviewed. Please review the updated changes and confirm again.');\n } else {\n setPreviewError(error?.data?.message || error?.error || ERROR_MESSAGES.NETWORK_OR_SERVER_ERROR);\n }\n }\n };\n\n return (\n <div className=\"solid-delete-model-popup\">\n <div className=\"solid-filter-dialog-head solid-delete-model-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Delete {event.rowData.displayName || event.rowData.singularName}</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Review the automatic cleanup before deleting this model.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-delete-model-popup__body\">\n {isLoadingPreview && <div className=\"flex justify-center p-4\"><SolidSpinner /></div>}\n {previewError && <div role=\"alert\" className=\"text-sm text-destructive mb-3\">{previewError}</div>}\n {preview && (\n <>\n <div className=\"solid-delete-model-popup__summary\" aria-label=\"Deletion impact summary\">\n <div><strong>{automaticItemCount}</strong><span>automatic changes</span></div>\n <div><strong>{automaticChanges.length}</strong><span>areas affected</span></div>\n </div>\n <div className=\"solid-delete-model-popup__inventory\" aria-label=\"Automatic deletion changes\">\n {automaticChanges.map((change, index) => (\n <details className=\"solid-delete-model-popup__change\" key={`${change.category}-${index}`}>\n <summary>\n <span className=\"solid-delete-model-popup__change-name\">{change.category}</span>\n <span className=\"solid-delete-model-popup__change-description\">{change.description}</span>\n <span className=\"solid-delete-model-popup__count\">{change.count}</span>\n </summary>\n {change.items.length > 0 && (\n <ul className=\"solid-delete-model-popup__items\">\n {change.items.map((item, itemIndex) => <li key={`${item}-${itemIndex}`} title={item}>{displayInventoryItem(item)}</li>)}\n </ul>\n )}\n </details>\n ))}\n {automaticChanges.length === 0 && <p className=\"solid-delete-model-popup__empty\">No related automatic cleanup was found.</p>}\n </div>\n {manualFollowUp && manualFollowUp.count > 0 && (\n <aside className=\"solid-delete-model-popup__manual\">\n <strong>Manual follow-up</strong>\n <span>{manualFollowUp.description}</span>\n {dropTableStatement && <div className=\"solid-delete-model-popup__ddl\">\n <code>{dropTableStatement}</code>\n <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'}>\n {copiedDdl ? <Check size={13} /> : <Copy size={13} />}\n </button>\n </div>}\n </aside>\n )}\n </>\n )}\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-delete-model-popup__footer\">\n {preview && <div className=\"solid-delete-model-popup__confirm\">\n <SolidCheckbox id=\"delete-model-confirmation\" name=\"confirm\" checked={isConfirmed} onChange={() => setIsConfirmed(!isConfirmed)} label=\"I reviewed the automatic changes above and understand the database table drop is a separate manual step.\" />\n </div>}\n <div className=\"solid-delete-model-popup__actions\">\n <SolidButton size=\"small\" variant=\"destructive\" disabled={!preview || !isConfirmed || isApplying || isLoadingPreview} loading={isApplying} autoFocus onClick={deleteModelHandler}>Delete model</SolidButton>\n <SolidButton size=\"small\" variant=\"outline\" disabled={isApplying} onClick={() => dispatch(closePopup())}>Cancel</SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default DeleteModelRowAction;\n"]}