@solidxai/core-ui 0.1.19-beta.0 → 0.1.19-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) 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/core/chatter/SolidChatter.d.ts.map +1 -1
  11. package/dist/components/core/chatter/SolidChatter.js +2 -1
  12. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  13. package/dist/components/core/chatter/SolidChatter.tsx +2 -0
  14. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +2 -0
  15. package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
  16. package/dist/components/core/chatter/SolidChatterMessageBox.js +7 -4
  17. package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
  18. package/dist/components/core/chatter/SolidChatterMessageBox.tsx +8 -3
  19. package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts +5 -0
  20. package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts.map +1 -0
  21. package/dist/components/core/chatter/SolidChatterMessageWidget.js +85 -0
  22. package/dist/components/core/chatter/SolidChatterMessageWidget.js.map +1 -0
  23. package/dist/components/core/chatter/SolidChatterMessageWidget.tsx +59 -0
  24. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  25. package/dist/components/core/common/SolidGlobalSearchElement.js +6 -5
  26. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  27. package/dist/components/core/common/SolidGlobalSearchElement.tsx +6 -5
  28. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts +11 -0
  29. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts.map +1 -0
  30. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js +102 -0
  31. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js.map +1 -0
  32. package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.tsx +129 -0
  33. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts +4 -0
  34. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts.map +1 -0
  35. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js +29 -0
  36. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js.map +1 -0
  37. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.module.css +226 -0
  38. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.tsx +57 -0
  39. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts +4 -0
  40. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -0
  41. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +33 -0
  42. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -0
  43. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +47 -0
  44. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts +5 -0
  45. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts.map +1 -0
  46. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js +59 -0
  47. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js.map +1 -0
  48. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.tsx +82 -0
  49. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts +17 -0
  50. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts.map +1 -0
  51. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js +258 -0
  52. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js.map +1 -0
  53. package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx +286 -0
  54. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  55. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +102 -62
  56. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  57. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +116 -106
  58. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts +6 -0
  59. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts.map +1 -0
  60. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js +37 -0
  61. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js.map +1 -0
  62. package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.tsx +89 -0
  63. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts +3 -0
  64. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts.map +1 -0
  65. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js +18 -0
  66. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js.map +1 -0
  67. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.tsx +51 -0
  68. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts +10 -0
  69. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts.map +1 -0
  70. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js +63 -0
  71. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js.map +1 -0
  72. package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.tsx +111 -0
  73. package/dist/components/core/field/FieldListViewData.d.ts.map +1 -1
  74. package/dist/components/core/field/FieldListViewData.js +29 -9
  75. package/dist/components/core/field/FieldListViewData.js.map +1 -1
  76. package/dist/components/core/field/FieldListViewData.tsx +7 -6
  77. package/dist/components/core/form/SolidFormView.d.ts +1 -0
  78. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  79. package/dist/components/core/form/SolidFormView.js +49 -48
  80. package/dist/components/core/form/SolidFormView.js.map +1 -1
  81. package/dist/components/core/form/SolidFormView.tsx +4 -3
  82. package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
  83. package/dist/components/core/form/fields/SolidPasswordField.js +13 -1
  84. package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
  85. package/dist/components/core/form/fields/SolidPasswordField.tsx +14 -3
  86. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  87. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  88. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  89. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  90. package/dist/components/core/kanban/KanbanBoard.tsx +5 -1
  91. package/dist/components/core/kanban/KanbanCard.d.ts +3 -0
  92. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  93. package/dist/components/core/kanban/KanbanCard.js +5 -4
  94. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  95. package/dist/components/core/kanban/KanbanCard.tsx +31 -11
  96. package/dist/components/core/kanban/KanbanColumn.d.ts +5 -1
  97. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  98. package/dist/components/core/kanban/KanbanColumn.js +14 -3
  99. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  100. package/dist/components/core/kanban/KanbanColumn.tsx +43 -3
  101. package/dist/components/core/kanban/SolidKanbanView.d.ts +2 -0
  102. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  103. package/dist/components/core/kanban/SolidKanbanView.js +90 -52
  104. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  105. package/dist/components/core/kanban/SolidKanbanView.tsx +93 -13
  106. package/dist/components/core/list/SolidDataTable.d.ts +2 -1
  107. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  108. package/dist/components/core/list/SolidDataTable.js +2 -2
  109. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  110. package/dist/components/core/list/SolidDataTable.tsx +3 -0
  111. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  112. package/dist/components/core/list/SolidListView.js +114 -57
  113. package/dist/components/core/list/SolidListView.js.map +1 -1
  114. package/dist/components/core/list/SolidListView.tsx +71 -7
  115. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
  116. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +14 -0
  117. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
  118. package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +13 -0
  119. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts +3 -0
  120. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts.map +1 -0
  121. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js +51 -0
  122. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js.map +1 -0
  123. package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.tsx +60 -0
  124. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts +4 -0
  125. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts.map +1 -0
  126. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js +24 -0
  127. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js.map +1 -0
  128. package/dist/components/core/list/widgets/SolidIconNameListViewWidget.tsx +32 -0
  129. package/dist/components/core/model/ModelListViewData.d.ts.map +1 -1
  130. package/dist/components/core/model/ModelListViewData.js +6 -23
  131. package/dist/components/core/model/ModelListViewData.js.map +1 -1
  132. package/dist/components/core/model/ModelListViewData.tsx +1 -48
  133. package/dist/components/core/solid-agent/AgentModelIndicator.d.ts +5 -0
  134. package/dist/components/core/solid-agent/AgentModelIndicator.d.ts.map +1 -0
  135. package/dist/components/core/solid-agent/AgentModelIndicator.js +14 -0
  136. package/dist/components/core/solid-agent/AgentModelIndicator.js.map +1 -0
  137. package/dist/components/core/solid-agent/AgentModelIndicator.tsx +40 -0
  138. package/dist/components/core/solid-agent/AgentSignIn.d.ts +12 -0
  139. package/dist/components/core/solid-agent/AgentSignIn.d.ts.map +1 -0
  140. package/dist/components/core/solid-agent/AgentSignIn.js +82 -0
  141. package/dist/components/core/solid-agent/AgentSignIn.js.map +1 -0
  142. package/dist/components/core/solid-agent/AgentSignIn.tsx +91 -0
  143. package/dist/components/core/solid-agent/SolidAgent.module.css +596 -0
  144. package/dist/components/core/solid-agent/SolidAgentChat.d.ts +30 -0
  145. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -0
  146. package/dist/components/core/solid-agent/SolidAgentChat.js +300 -0
  147. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -0
  148. package/dist/components/core/solid-agent/SolidAgentChat.tsx +451 -0
  149. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +44 -0
  150. package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -0
  151. package/dist/components/core/solid-agent/SolidAgentEmbedded.js +46 -0
  152. package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -0
  153. package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +87 -0
  154. package/dist/components/core/solid-agent/SolidAgentHost.d.ts +8 -0
  155. package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -0
  156. package/dist/components/core/solid-agent/SolidAgentHost.js +152 -0
  157. package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -0
  158. package/dist/components/core/solid-agent/SolidAgentHost.tsx +164 -0
  159. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts +16 -0
  160. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -0
  161. package/dist/components/core/solid-agent/SolidAgentMarkdown.js +161 -0
  162. package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -0
  163. package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +133 -0
  164. package/dist/components/core/solid-agent/SolidAgentMount.d.ts +3 -0
  165. package/dist/components/core/solid-agent/SolidAgentMount.d.ts.map +1 -0
  166. package/dist/components/core/solid-agent/SolidAgentMount.js +62 -0
  167. package/dist/components/core/solid-agent/SolidAgentMount.js.map +1 -0
  168. package/dist/components/core/solid-agent/SolidAgentMount.tsx +31 -0
  169. package/dist/components/core/solid-agent/SolidXAIIcon.d.ts +5 -0
  170. package/dist/components/core/solid-agent/SolidXAIIcon.d.ts.map +1 -0
  171. package/dist/components/core/solid-agent/SolidXAIIcon.js +7 -0
  172. package/dist/components/core/solid-agent/SolidXAIIcon.js.map +1 -0
  173. package/dist/components/core/solid-agent/SolidXAIIcon.tsx +6 -0
  174. package/dist/components/core/solid-agent/agentAttachments.d.ts +20 -0
  175. package/dist/components/core/solid-agent/agentAttachments.d.ts.map +1 -0
  176. package/dist/components/core/solid-agent/agentAttachments.js +184 -0
  177. package/dist/components/core/solid-agent/agentAttachments.js.map +1 -0
  178. package/dist/components/core/solid-agent/agentAttachments.ts +119 -0
  179. package/dist/components/core/solid-agent/agentEvents.d.ts +34 -0
  180. package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -0
  181. package/dist/components/core/solid-agent/agentEvents.js +282 -0
  182. package/dist/components/core/solid-agent/agentEvents.js.map +1 -0
  183. package/dist/components/core/solid-agent/agentEvents.ts +292 -0
  184. package/dist/components/core/solid-agent/agentFormat.d.ts +18 -0
  185. package/dist/components/core/solid-agent/agentFormat.d.ts.map +1 -0
  186. package/dist/components/core/solid-agent/agentFormat.js +179 -0
  187. package/dist/components/core/solid-agent/agentFormat.js.map +1 -0
  188. package/dist/components/core/solid-agent/agentFormat.ts +160 -0
  189. package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts +9 -0
  190. package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts.map +1 -0
  191. package/dist/components/core/solid-agent/client/agentAttachmentMedia.js +129 -0
  192. package/dist/components/core/solid-agent/client/agentAttachmentMedia.js.map +1 -0
  193. package/dist/components/core/solid-agent/client/agentAttachmentMedia.ts +69 -0
  194. package/dist/components/core/solid-agent/client/agentAuth.d.ts +63 -0
  195. package/dist/components/core/solid-agent/client/agentAuth.d.ts.map +1 -0
  196. package/dist/components/core/solid-agent/client/agentAuth.js +307 -0
  197. package/dist/components/core/solid-agent/client/agentAuth.js.map +1 -0
  198. package/dist/components/core/solid-agent/client/agentAuth.ts +222 -0
  199. package/dist/components/core/solid-agent/client/agentRest.d.ts +30 -0
  200. package/dist/components/core/solid-agent/client/agentRest.d.ts.map +1 -0
  201. package/dist/components/core/solid-agent/client/agentRest.js +178 -0
  202. package/dist/components/core/solid-agent/client/agentRest.js.map +1 -0
  203. package/dist/components/core/solid-agent/client/agentRest.ts +100 -0
  204. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +48 -0
  205. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -0
  206. package/dist/components/core/solid-agent/client/agentRuntime.js +406 -0
  207. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -0
  208. package/dist/components/core/solid-agent/client/agentRuntime.ts +226 -0
  209. package/dist/components/core/solid-agent/client/agentSocket.d.ts +46 -0
  210. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -0
  211. package/dist/components/core/solid-agent/client/agentSocket.js +535 -0
  212. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -0
  213. package/dist/components/core/solid-agent/client/agentSocket.ts +276 -0
  214. package/dist/components/core/solid-agent/client/agentUrls.d.ts +11 -0
  215. package/dist/components/core/solid-agent/client/agentUrls.d.ts.map +1 -0
  216. package/dist/components/core/solid-agent/client/agentUrls.js +18 -0
  217. package/dist/components/core/solid-agent/client/agentUrls.js.map +1 -0
  218. package/dist/components/core/solid-agent/client/agentUrls.ts +19 -0
  219. package/dist/components/core/solid-agent/composer/AgentComposer.d.ts +21 -0
  220. package/dist/components/core/solid-agent/composer/AgentComposer.d.ts.map +1 -0
  221. package/dist/components/core/solid-agent/composer/AgentComposer.js +219 -0
  222. package/dist/components/core/solid-agent/composer/AgentComposer.js.map +1 -0
  223. package/dist/components/core/solid-agent/composer/AgentComposer.tsx +241 -0
  224. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts +8 -0
  225. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -0
  226. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +87 -0
  227. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -0
  228. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +58 -0
  229. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +20 -0
  230. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -0
  231. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +103 -0
  232. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -0
  233. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +60 -0
  234. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +11 -0
  235. package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -0
  236. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +21 -0
  237. package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -0
  238. package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +266 -0
  239. package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts +15 -0
  240. package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts.map +1 -0
  241. package/dist/components/core/solid-agent/processes/agentHubProcessApi.js +122 -0
  242. package/dist/components/core/solid-agent/processes/agentHubProcessApi.js.map +1 -0
  243. package/dist/components/core/solid-agent/processes/agentHubProcessApi.ts +64 -0
  244. package/dist/components/core/solid-agent/sdk/solidAgent.d.ts +39 -0
  245. package/dist/components/core/solid-agent/sdk/solidAgent.d.ts.map +1 -0
  246. package/dist/components/core/solid-agent/sdk/solidAgent.js +44 -0
  247. package/dist/components/core/solid-agent/sdk/solidAgent.js.map +1 -0
  248. package/dist/components/core/solid-agent/sdk/solidAgent.ts +56 -0
  249. package/dist/components/core/solid-agent/thread/AgentThread.d.ts +17 -0
  250. package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -0
  251. package/dist/components/core/solid-agent/thread/AgentThread.js +166 -0
  252. package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -0
  253. package/dist/components/core/solid-agent/thread/AgentThread.tsx +248 -0
  254. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +36 -0
  255. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -0
  256. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +148 -0
  257. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -0
  258. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +116 -0
  259. package/dist/components/core/solid-agent/thread/inlineWidget.d.ts +8 -0
  260. package/dist/components/core/solid-agent/thread/inlineWidget.d.ts.map +1 -0
  261. package/dist/components/core/solid-agent/thread/inlineWidget.js +30 -0
  262. package/dist/components/core/solid-agent/thread/inlineWidget.js.map +1 -0
  263. package/dist/components/core/solid-agent/thread/inlineWidget.ts +27 -0
  264. package/dist/components/core/solid-agent/types.d.ts +155 -0
  265. package/dist/components/core/solid-agent/types.d.ts.map +1 -0
  266. package/dist/components/core/solid-agent/types.js +31 -0
  267. package/dist/components/core/solid-agent/types.js.map +1 -0
  268. package/dist/components/core/solid-agent/types.ts +148 -0
  269. package/dist/components/core/solid-agent/useAdminInputContext.d.ts +4 -0
  270. package/dist/components/core/solid-agent/useAdminInputContext.d.ts.map +1 -0
  271. package/dist/components/core/solid-agent/useAdminInputContext.js +49 -0
  272. package/dist/components/core/solid-agent/useAdminInputContext.js.map +1 -0
  273. package/dist/components/core/solid-agent/useAdminInputContext.ts +52 -0
  274. package/dist/components/core/solid-agent/useAgentAuth.d.ts +14 -0
  275. package/dist/components/core/solid-agent/useAgentAuth.d.ts.map +1 -0
  276. package/dist/components/core/solid-agent/useAgentAuth.js +88 -0
  277. package/dist/components/core/solid-agent/useAgentAuth.js.map +1 -0
  278. package/dist/components/core/solid-agent/useAgentAuth.ts +40 -0
  279. package/dist/components/core/solid-agent/useAgentAvailability.d.ts +19 -0
  280. package/dist/components/core/solid-agent/useAgentAvailability.d.ts.map +1 -0
  281. package/dist/components/core/solid-agent/useAgentAvailability.js +109 -0
  282. package/dist/components/core/solid-agent/useAgentAvailability.js.map +1 -0
  283. package/dist/components/core/solid-agent/useAgentAvailability.ts +80 -0
  284. package/dist/components/core/solid-agent/useAgentChat.d.ts +22 -0
  285. package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -0
  286. package/dist/components/core/solid-agent/useAgentChat.js +45 -0
  287. package/dist/components/core/solid-agent/useAgentChat.js.map +1 -0
  288. package/dist/components/core/solid-agent/useAgentChat.ts +57 -0
  289. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +7 -0
  290. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -0
  291. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +15 -0
  292. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -0
  293. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +24 -0
  294. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts +7 -0
  295. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts.map +1 -0
  296. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +15 -0
  297. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -0
  298. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +28 -0
  299. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts +4 -0
  300. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts.map +1 -0
  301. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +20 -0
  302. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -0
  303. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +8 -0
  304. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts +7 -0
  305. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts.map +1 -0
  306. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +11 -0
  307. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -0
  308. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +16 -0
  309. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts +7 -0
  310. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts.map +1 -0
  311. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +67 -0
  312. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -0
  313. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +135 -0
  314. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts +7 -0
  315. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts.map +1 -0
  316. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +24 -0
  317. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -0
  318. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +17 -0
  319. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts +8 -0
  320. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -0
  321. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +30 -0
  322. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -0
  323. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +77 -0
  324. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts +7 -0
  325. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts.map +1 -0
  326. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +40 -0
  327. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -0
  328. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +57 -0
  329. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts +4 -0
  330. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts.map +1 -0
  331. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +13 -0
  332. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -0
  333. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +19 -0
  334. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts +7 -0
  335. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts.map +1 -0
  336. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +55 -0
  337. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -0
  338. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +81 -0
  339. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts +4 -0
  340. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts.map +1 -0
  341. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +15 -0
  342. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -0
  343. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +30 -0
  344. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts +4 -0
  345. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts.map +1 -0
  346. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +15 -0
  347. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -0
  348. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +21 -0
  349. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts +7 -0
  350. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts.map +1 -0
  351. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +21 -0
  352. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -0
  353. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +33 -0
  354. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts +4 -0
  355. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts.map +1 -0
  356. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +11 -0
  357. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -0
  358. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +9 -0
  359. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts +15 -0
  360. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts.map +1 -0
  361. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +26 -0
  362. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -0
  363. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +42 -0
  364. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts +7 -0
  365. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts.map +1 -0
  366. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +41 -0
  367. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -0
  368. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +69 -0
  369. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts +7 -0
  370. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts.map +1 -0
  371. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +23 -0
  372. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -0
  373. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +40 -0
  374. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts +4 -0
  375. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts.map +1 -0
  376. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +32 -0
  377. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -0
  378. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +55 -0
  379. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts +7 -0
  380. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts.map +1 -0
  381. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +17 -0
  382. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -0
  383. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +31 -0
  384. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts +12 -0
  385. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts.map +1 -0
  386. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js +17 -0
  387. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js.map +1 -0
  388. package/dist/components/core/solid-agent/widgets/chatWidgetUtils.ts +19 -0
  389. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +909 -0
  390. package/dist/components/core/solid-ai/SolidAiChat.js +1 -1
  391. package/dist/components/core/solid-ai/SolidAiChat.js.map +1 -1
  392. package/dist/components/core/solid-ai/SolidAiChat.tsx +2 -2
  393. package/dist/components/layout/AdminLayout.d.ts.map +1 -1
  394. package/dist/components/layout/AdminLayout.js +2 -1
  395. package/dist/components/layout/AdminLayout.js.map +1 -1
  396. package/dist/components/layout/AdminLayout.tsx +2 -0
  397. package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
  398. package/dist/components/shad-cn-ui/SolidAutocomplete.js +2 -2
  399. package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
  400. package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +19 -15
  401. package/dist/components/shad-cn-ui/SolidDialog.d.ts +2 -1
  402. package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
  403. package/dist/components/shad-cn-ui/SolidDialog.js +2 -2
  404. package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
  405. package/dist/components/shad-cn-ui/SolidDialog.tsx +3 -0
  406. package/dist/components/shad-cn-ui/SolidIconPicker.d.ts +7 -0
  407. package/dist/components/shad-cn-ui/SolidIconPicker.d.ts.map +1 -0
  408. package/dist/components/shad-cn-ui/SolidIconPicker.js +43 -0
  409. package/dist/components/shad-cn-ui/SolidIconPicker.js.map +1 -0
  410. package/dist/components/shad-cn-ui/SolidIconPicker.tsx +73 -0
  411. package/dist/components/shad-cn-ui/index.d.ts +1 -0
  412. package/dist/components/shad-cn-ui/index.d.ts.map +1 -1
  413. package/dist/components/shad-cn-ui/index.js +1 -0
  414. package/dist/components/shad-cn-ui/index.js.map +1 -1
  415. package/dist/components/shad-cn-ui/index.ts +1 -0
  416. package/dist/constants/allowed-ai-models.d.ts +8 -0
  417. package/dist/constants/allowed-ai-models.d.ts.map +1 -0
  418. package/dist/constants/allowed-ai-models.js +33 -0
  419. package/dist/constants/allowed-ai-models.js.map +1 -0
  420. package/dist/constants/allowed-ai-models.ts +39 -0
  421. package/dist/helpers/hydrateRelationRules.d.ts.map +1 -1
  422. package/dist/helpers/hydrateRelationRules.js +3 -1
  423. package/dist/helpers/hydrateRelationRules.js.map +1 -1
  424. package/dist/helpers/hydrateRelationRules.ts +5 -1
  425. package/dist/helpers/registry.d.ts +4 -2
  426. package/dist/helpers/registry.d.ts.map +1 -1
  427. package/dist/helpers/registry.js +75 -12
  428. package/dist/helpers/registry.js.map +1 -1
  429. package/dist/helpers/registry.ts +73 -16
  430. package/dist/helpers/updatePasswordField.d.ts.map +1 -1
  431. package/dist/helpers/updatePasswordField.js +21 -15
  432. package/dist/helpers/updatePasswordField.js.map +1 -1
  433. package/dist/helpers/updatePasswordField.ts +6 -1
  434. package/dist/index.d.ts +21 -5
  435. package/dist/index.d.ts.map +1 -1
  436. package/dist/index.js +16 -3
  437. package/dist/index.js.map +1 -1
  438. package/dist/index.ts +34 -3
  439. package/dist/redux/api/fieldApi.js +1 -1
  440. package/dist/redux/api/fieldApi.js.map +1 -1
  441. package/dist/redux/api/fieldApi.ts +2 -2
  442. package/dist/redux/api/modelApi.d.ts +13 -13
  443. package/dist/redux/api/modelApi.d.ts.map +1 -1
  444. package/dist/redux/api/modelApi.js +15 -15
  445. package/dist/redux/api/modelApi.js.map +1 -1
  446. package/dist/redux/api/modelApi.ts +12 -15
  447. package/dist/redux/features/agentSlice.d.ts +34 -0
  448. package/dist/redux/features/agentSlice.d.ts.map +1 -0
  449. package/dist/redux/features/agentSlice.js +92 -0
  450. package/dist/redux/features/agentSlice.js.map +1 -0
  451. package/dist/redux/features/agentSlice.ts +119 -0
  452. package/dist/redux/store/defaultStoreConfig.d.ts +11 -10
  453. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  454. package/dist/redux/store/defaultStoreConfig.js +2 -0
  455. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  456. package/dist/redux/store/defaultStoreConfig.ts +2 -0
  457. package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
  458. package/dist/redux/store/solidEntityApiPool.js +7 -0
  459. package/dist/redux/store/solidEntityApiPool.js.map +1 -1
  460. package/dist/redux/store/solidEntityApiPool.ts +6 -0
  461. package/dist/resources/globals.css +109 -1
  462. package/dist/resources/solid-custom.css +295 -0
  463. package/dist/resources/solid-tailwind-generated.css +1 -1
  464. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.css +47 -0
  465. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts +12 -0
  466. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts.map +1 -0
  467. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js +80 -0
  468. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js.map +1 -0
  469. package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.tsx +123 -0
  470. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +110 -0
  471. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts +3 -0
  472. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -0
  473. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +702 -0
  474. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -0
  475. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +630 -0
  476. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.css +303 -0
  477. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts +3 -0
  478. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -0
  479. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +330 -0
  480. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -0
  481. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +460 -0
  482. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +125 -0
  483. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts +3 -0
  484. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -0
  485. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +295 -0
  486. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -0
  487. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +275 -0
  488. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +11 -11
  489. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +1 -1
  490. package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +15 -15
  491. package/dist/routes/pages/embed/AgentEmbedPage.d.ts +3 -0
  492. package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -0
  493. package/dist/routes/pages/embed/AgentEmbedPage.js +170 -0
  494. package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -0
  495. package/dist/routes/pages/embed/AgentEmbedPage.module.css +195 -0
  496. package/dist/routes/pages/embed/AgentEmbedPage.tsx +169 -0
  497. package/dist/routes/solidRoutes.d.ts.map +1 -1
  498. package/dist/routes/solidRoutes.js +8 -0
  499. package/dist/routes/solidRoutes.js.map +1 -1
  500. package/dist/routes/solidRoutes.tsx +8 -0
  501. package/dist/types/extension-registry.d.ts +4 -0
  502. package/dist/types/extension-registry.d.ts.map +1 -1
  503. package/dist/types/extension-registry.js +7 -0
  504. package/dist/types/extension-registry.js.map +1 -1
  505. package/dist/types/extension-registry.ts +7 -0
  506. package/dist/types/index.d.ts +4 -0
  507. package/dist/types/list-row-action.d.ts +2 -0
  508. package/dist/types/list-row-action.d.ts.map +1 -1
  509. package/dist/types/list-row-action.js.map +1 -1
  510. package/dist/types/list-row-action.ts +3 -0
  511. package/dist/types/solid-core.d.ts +36 -0
  512. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentToolSessionsPanel.js","sourceRoot":"","sources":["../../../../../../src/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport qs from \"qs\";\nimport { AlertCircle, Clock3, RefreshCw, Search } from \"lucide-react\";\nimport { createSolidEntityApi } from \"../../../../../redux/api/solidEntityApi\";\nimport { SolidAutocomplete, SolidDialog, SolidDialogDescription, SolidDialogHeader, SolidDialogTitle, SolidInput, SolidSelect } from \"../../../../shad-cn-ui\";\nimport { AgentEventOutcomeListWidget, getAgentEventFailure } from \"../agentEvent/list/AgentEventOutcomeListWidget\";\nimport \"../../../../../routes/pages/admin/core/AgentToolRegistryEditorPage.css\";\n\ntype AgentOption = { id: number | string; name?: string; title?: string };\ntype SessionRecord = {\n id: number;\n sessionId?: string;\n startedAt?: string | null;\n endedAt?: string | null;\n status?: string | null;\n agent?: AgentOption | number | string | null;\n [key: string]: any;\n};\n\nfunction unwrapRecords(result: any): any[] {\n return Array.isArray(result?.records) ? result.records : [];\n}\n\nfunction ago(value?: string | null): string {\n if (!value) return \"Start time unknown\";\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return \"Start time unknown\";\n const seconds = Math.max(0, Math.floor((Date.now() - date.getTime()) / 1000));\n if (seconds < 60) return \"Started just now\";\n if (seconds < 3600) return `Started ${Math.floor(seconds / 60)}m ago`;\n if (seconds < 86400) return `Started ${Math.floor(seconds / 3600)}h ago`;\n const days = Math.floor(seconds / 86400);\n return days < 30 ? `Started ${days}d ago` : `Started ${date.toLocaleDateString()}`;\n}\n\nfunction agentName(session: SessionRecord, agents: AgentOption[]): string {\n const relation = session.agent;\n const id = relation && typeof relation === \"object\" ? relation.id : relation;\n const agent = agents.find((item) => String(item.id) === String(id));\n if (agent) return agent.name ?? agent.title ?? \"Unnamed agent\";\n if (relation && typeof relation === \"object\") return relation.name ?? relation.title ?? \"Unnamed agent\";\n return \"Unknown agent\";\n}\n\nfunction sessionQuery(agentId: number | string, processId?: number): string {\n const processFilter = processId == null ? \"\" : `&filters[process][id][$eq]=${encodeURIComponent(String(processId))}`;\n return `offset=0&limit=1000&populate[0]=agent&sort[0]=startedAt%3Adesc&filters[agent][id][$eq]=${encodeURIComponent(String(agentId))}${processFilter}`;\n}\n\nfunction eventsQuery(sessionId: number, offset: number, limit: number, eventType: string, search: string): string {\n const conditions: Record<string, any>[] = [{ session: { $eq: sessionId } }];\n if (eventType !== \"all\") conditions.push({ eventType: { $eq: eventType } });\n if (search.trim()) conditions.push({ $or: [\"eventType\", \"toolName\", \"content\", \"toolOutput\", \"eventData\"]\n .map((field) => ({ [field]: { $containsi: search.trim() } })) });\n return qs.stringify({\n offset, limit, sort: [\"createdAt:asc\", \"id:asc\"], filters: { $and: conditions },\n fields: [\"id\", \"createdAt\", \"eventType\", \"toolName\", \"cost\", \"inputTokens\", \"outputTokens\", \"toolReturncode\", \"toolOutput\", \"eventData\"],\n });\n}\n\ntype Props = { agents?: AgentOption[]; agentId?: number | string; agentLabel?: string; processId?: number; processLabel?: string };\nconst EMPTY_AGENTS: AgentOption[] = [];\nconst EVENT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\nconst EventFormView = React.lazy(() => import(\"../../../form/SolidFormView\"));\n\nexport function AgentSessionsPanel({ agents, agentId, agentLabel, processId, processLabel }: Props) {\n const linkedAgents = agents ?? EMPTY_AGENTS;\n const scopedAgents = React.useMemo(() => agentId != null\n ? [{ id: agentId, name: agentLabel ?? \"Agent\" }]\n : linkedAgents, [agentId, agentLabel, linkedAgents]);\n const sessionApi = React.useMemo(() => createSolidEntityApi(\"agentSession\"), []);\n const eventApi = React.useMemo(() => createSolidEntityApi(\"agentEvent\"), []);\n const [fetchSessions] = sessionApi.useLazyGetSolidEntitiesQuery();\n const [sessions, setSessions] = React.useState<SessionRecord[]>([]);\n const [selectedAgent, setSelectedAgent] = React.useState<{ id: string; label: string } | null>(null);\n const [selectedSessionId, setSelectedSessionId] = React.useState<number | null>(null);\n const [selectedEventId, setSelectedEventId] = React.useState<number | null>(null);\n const eventsTableRef = React.useRef<HTMLDivElement>(null);\n const [isLoadingSessions, setIsLoadingSessions] = React.useState(false);\n const [sessionsError, setSessionsError] = React.useState(false);\n const [eventTypeFilter, setEventTypeFilter] = React.useState(\"all\");\n const [outcomeFilter, setOutcomeFilter] = React.useState(\"all\");\n const [eventSearch, setEventSearch] = React.useState(\"\");\n const [eventSearchQuery, setEventSearchQuery] = React.useState(\"\");\n const [eventPagination, setEventPagination] = React.useState({ scope: \"\", page: 1 });\n const [eventPageSize, setEventPageSize] = React.useState(25);\n const eventPageSizeId = React.useId();\n const [sessionSearch, setSessionSearch] = React.useState(\"\");\n const [sessionRefreshVersion, setSessionRefreshVersion] = React.useState(0);\n const eventScope = JSON.stringify([selectedSessionId, eventTypeFilter, eventSearchQuery]);\n const currentEventPage = eventPagination.scope === eventScope ? eventPagination.page : 1;\n const eventFirst = (currentEventPage - 1) * eventPageSize;\n const eventResult = eventApi.useGetSolidEntitiesQuery(\n selectedSessionId == null ? \"\" : eventsQuery(selectedSessionId, eventFirst, eventPageSize, eventTypeFilter, eventSearchQuery),\n { skip: selectedSessionId == null });\n const eventTypesResult = eventApi.useGetSolidEntitiesQuery(qs.stringify({\n groupBy: [\"eventType\"], sort: [\"eventType:asc\"], filters: { session: { $eq: selectedSessionId } },\n }), { skip: selectedSessionId == null });\n const events = unwrapRecords(eventResult.currentData);\n const totalEvents = Number(eventResult.currentData?.meta?.totalRecords ?? 0);\n const eventPageCount = Math.max(1, Math.ceil(totalEvents / eventPageSize));\n const isLoadingEvents = eventResult.isFetching || eventSearch.trim() !== eventSearchQuery;\n const eventsError = eventResult.isError;\n const agentOptions = React.useMemo(() => linkedAgents.map((agent) => ({\n id: String(agent.id),\n label: agent.name ?? agent.title ?? `Agent ${agent.id}`,\n })), [linkedAgents]);\n const linkedAgentKey = agentOptions.map((agent) => agent.id).join(\",\");\n\n React.useEffect(() => {\n let alive = true;\n const requestedAgents = agentId != null ? scopedAgents : selectedAgent ? scopedAgents.filter((agent) => String(agent.id) === selectedAgent.id) : scopedAgents;\n if (!requestedAgents.length) {\n setSessions([]);\n setSelectedSessionId(null);\n return;\n }\n setIsLoadingSessions(true);\n setSessionsError(false);\n void Promise.all(requestedAgents.map(async (agent) => {\n const result = await fetchSessions(sessionQuery(agent.id, processId), false).unwrap();\n return unwrapRecords(result).map((item) => ({\n ...item,\n agent: item.agent && typeof item.agent === \"object\" ? item.agent : agent,\n } as SessionRecord));\n })).then((groups) => {\n if (!alive) return;\n const unique = new Map<string, SessionRecord>();\n groups.flat().forEach((session) => unique.set(String(session.id), session));\n const ordered = Array.from(unique.values()).sort((a, b) => new Date(b.startedAt ?? 0).getTime() - new Date(a.startedAt ?? 0).getTime());\n setSessions(ordered);\n setSelectedSessionId((current) => ordered.some((session) => session.id === current) ? current : ordered[0]?.id ?? null);\n }).catch(() => {\n if (alive) {\n setSessions([]);\n setSelectedSessionId(null);\n setSessionsError(true);\n }\n }).finally(() => alive && setIsLoadingSessions(false));\n return () => { alive = false; };\n }, [agentId, fetchSessions, linkedAgentKey, processId, scopedAgents, selectedAgent, sessionRefreshVersion]);\n\n React.useEffect(() => {\n const timer = window.setTimeout(() => setEventSearchQuery(eventSearch.trim()), 300);\n return () => window.clearTimeout(timer);\n }, [eventSearch]);\n\n const eventTypes = Array.from(new Set([\n ...((eventTypesResult.currentData?.groupMeta ?? []) as any[]).map((group) => String(group.groupValue ?? \"\")),\n ...events.map((event) => String(event.eventType ?? \"\")),\n eventTypeFilter === \"all\" ? \"\" : eventTypeFilter,\n ].filter(Boolean))).sort();\n const visibleEvents = events.filter((event) => outcomeFilter === \"all\"\n || Boolean(getAgentEventFailure(event)) === (outcomeFilter === \"failure\"));\n React.useEffect(() => {\n if (!isLoadingEvents && eventResult.currentData && currentEventPage > eventPageCount) {\n setEventPagination({ scope: eventScope, page: eventPageCount });\n }\n }, [isLoadingEvents, eventResult.currentData, currentEventPage, eventPageCount, eventScope]);\n React.useEffect(() => {\n if (eventsTableRef.current) eventsTableRef.current.scrollTop = 0;\n }, [currentEventPage, eventPageSize, selectedSessionId, eventSearch, eventTypeFilter, outcomeFilter]);\n const selectedSession = sessions.find((session) => session.id === selectedSessionId);\n const visibleSessions = React.useMemo(() => {\n const query = sessionSearch.trim().toLowerCase();\n if (!query) return sessions;\n return sessions.filter((session) => [session.sessionId, session.id, session.status, agentName(session, scopedAgents)]\n .some((value) => String(value ?? \"\").toLowerCase().includes(query)));\n }, [scopedAgents, sessionSearch, sessions]);\n\n return (\n <section className=\"agent-tool-editor__sessions\" aria-label=\"Sessions and events\">\n <aside className=\"agent-tool-editor__sessions-sidebar\">\n <header className=\"agent-tool-editor__sessions-sidebar-head\">\n <div><div className=\"agent-tool-editor__sessions-heading\"><h2>Sessions</h2><button type=\"button\" className={`agent-tool-editor__refresh${isLoadingSessions ? \" is-loading\" : \"\"}`} aria-label=\"Refresh sessions\" title=\"Refresh sessions\" disabled={isLoadingSessions} onClick={() => setSessionRefreshVersion((version) => version + 1)}><RefreshCw size={13} /></button><span>{visibleSessions.length}{visibleSessions.length !== sessions.length ? ` / ${sessions.length}` : \"\"}</span></div></div>\n <p>{processId != null ? `In ${processLabel ?? `process #${processId}`}.` : agentId != null ? \"Browse activity for this agent.\" : \"Browse activity across linked agents.\"}</p>\n {agentId == null && linkedAgents.length > 1 && <label className=\"agent-tool-editor__sessions-agent-filter\"><span>Agent</span>\n <SolidAutocomplete\n value={selectedAgent ? [selectedAgent] : []}\n suggestions={agentOptions}\n field=\"label\"\n multiple\n maxVisibleChips={1}\n dropdown\n forceSelection\n portal\n placeholder=\"All linked agents\"\n onChange={(event: any) => setSelectedAgent(Array.isArray(event.value) ? event.value[0] ?? null : null)}\n />\n </label>}\n <label className=\"agent-tool-editor__session-search\"><span className=\"sr-only\">Find a session</span><Search size={14} /><SolidInput value={sessionSearch} placeholder=\"Find session or agent…\" onChange={(event: any) => setSessionSearch(event.target.value)} /></label>\n </header>\n <div className=\"agent-tool-editor__session-list\" role=\"listbox\" aria-label=\"Sessions\">\n {isLoadingSessions ? <p className=\"agent-tool-editor__sessions-message\">Loading sessions…</p>\n : sessionsError ? <p className=\"agent-tool-editor__sessions-message agent-tool-editor__sessions-message--error\"><AlertCircle size={15} /> Could not load sessions.</p>\n : sessions.length === 0 ? <p className=\"agent-tool-editor__sessions-message\">{processId != null ? \"No sessions assigned to this process. Older unassigned sessions remain in the Sessions tab.\" : \"No sessions found for linked agents.\"}</p>\n : visibleSessions.length === 0 ? <p className=\"agent-tool-editor__sessions-message\">No sessions match this search.</p>\n : visibleSessions.map((session) => {\n const sessionLabel = session.sessionId ?? String(session.id);\n const rawStatus = String(session.status ?? \"\").toLowerCase();\n const statusLabel = rawStatus === \"active\" ? \"Idle\"\n : rawStatus === \"awaiting_input\" ? \"Awaiting input\"\n : rawStatus === \"awaiting_approval\" ? \"Awaiting approval\"\n : rawStatus ? rawStatus.replace(/[_-]+/g, \" \") : session.endedAt ? \"Ended\" : \"Open\";\n return <button\n type=\"button\"\n role=\"option\"\n aria-selected={session.id === selectedSessionId}\n className={`agent-tool-editor__session-item${session.id === selectedSessionId ? \" is-selected\" : \"\"}`}\n key={session.id}\n onClick={() => setSelectedSessionId(session.id)}\n title={sessionLabel}\n >\n <span className=\"agent-tool-editor__session-item-id\" title={sessionLabel}>{sessionLabel}</span>\n <span className=\"agent-tool-editor__session-item-meta\"><span><Clock3 size={12} /> {ago(session.startedAt)}</span><span className={`agent-tool-editor__session-status${rawStatus === \"running\" ? \" is-running\" : rawStatus === \"active\" ? \" is-idle\" : \"\"}`}>{statusLabel}</span></span>\n {agentId == null && <small>{agentName(session, scopedAgents)}</small>}\n </button>;\n })}\n </div>\n </aside>\n\n <div className=\"agent-tool-editor__session-events\">\n <header className=\"agent-tool-editor__events-head\">\n <div className=\"agent-tool-editor__events-title\">\n <div><div className=\"agent-tool-editor__heading-with-refresh\"><h2>Events</h2><button type=\"button\" className={`agent-tool-editor__refresh${isLoadingEvents ? \" is-loading\" : \"\"}`} aria-label=\"Refresh events\" title=\"Refresh events\" disabled={!selectedSessionId || isLoadingEvents} onClick={() => { void eventResult.refetch(); void eventTypesResult.refetch(); }}><RefreshCw size={13} /></button></div><p>{selectedSession ? `${selectedSession.sessionId ?? selectedSession.id} · ${agentName(selectedSession, scopedAgents)}` : \"Select a session to inspect its events.\"}</p></div>\n <span>{outcomeFilter === \"all\" ? totalEvents : `${visibleEvents.length} / ${events.length} on page`}</span>\n </div>\n <div className=\"agent-tool-editor__event-filters\">\n <label><span>Event type</span><select value={eventTypeFilter} onChange={(event: React.ChangeEvent<HTMLSelectElement>) => setEventTypeFilter(event.target.value)}>\n <option value=\"all\">All types</option>{eventTypes.map((eventType) => <option key={eventType} value={eventType}>{eventType}</option>)}\n </select></label>\n <label><span>Outcome (current page)</span><select value={outcomeFilter} onChange={(event: React.ChangeEvent<HTMLSelectElement>) => setOutcomeFilter(event.target.value)}>\n <option value=\"all\">All outcomes</option><option value=\"success\">Success</option><option value=\"failure\">Failure</option>\n </select></label>\n <label className=\"agent-tool-editor__event-search\"><span>Search events</span><span className=\"agent-tool-editor__event-search-control\"><Search size={15} /><SolidInput value={eventSearch} placeholder=\"Search events…\" onChange={(event: React.ChangeEvent<HTMLInputElement>) => setEventSearch(event.target.value)} /></span></label>\n <nav className=\"agent-tool-editor__event-pagination\" aria-label=\"Event pagination\">\n <div className=\"solid-paginator-meta flex items-center gap-2\">\n <label className=\"solid-paginator-label\" htmlFor={eventPageSizeId}>Rows</label>\n <SolidSelect id={eventPageSizeId} value={eventPageSize} className=\"solid-paginator-select\"\n options={EVENT_PAGE_SIZE_OPTIONS.map((value) => ({ label: String(value), value }))}\n native={false} menuPlacement=\"bottom\" disabled={isLoadingEvents || eventsError}\n onChange={({ value }) => { setEventPageSize(Number(value)); setEventPagination({ scope: eventScope, page: 1 }); }} />\n <span className=\"solid-paginator-report\" aria-live=\"polite\">{isLoadingEvents ? \"Loading…\" : `${events.length ? eventFirst + 1 : 0} - ${events.length ? Math.min(eventFirst + events.length, totalEvents) : 0} of ${totalEvents}`}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button type=\"button\" className=\"solid-paginator-btn\" aria-label=\"Previous event page\" disabled={isLoadingEvents || eventsError || currentEventPage === 1} onClick={() => setEventPagination({ scope: eventScope, page: currentEventPage - 1 })}>Previous</button>\n <button type=\"button\" className=\"solid-paginator-btn\" aria-label=\"Next event page\" disabled={isLoadingEvents || eventsError || currentEventPage >= eventPageCount} onClick={() => setEventPagination({ scope: eventScope, page: currentEventPage + 1 })}>Next</button>\n </div>\n </nav>\n </div>\n </header>\n <div className=\"agent-tool-editor__events-table-wrap\" ref={eventsTableRef}>\n {isLoadingEvents ? <p className=\"agent-tool-editor__sessions-message\">Loading events…</p>\n : eventsError ? <p className=\"agent-tool-editor__sessions-message agent-tool-editor__sessions-message--error\"><AlertCircle size={15} /> Could not load events for this session.</p>\n : !selectedSession ? <p className=\"agent-tool-editor__sessions-message\">Choose a session from the left to view its events.</p>\n : visibleEvents.length === 0 ? <p className=\"agent-tool-editor__sessions-message\">{events.length ? \"No events on this page match the outcome filter.\" : \"No events match these filters.\"}</p>\n : <table className=\"agent-tool-editor__events-table\">\n <thead><tr><th>Time</th><th>Event type</th><th>Tool</th><th>Cost</th><th>Tokens</th></tr></thead>\n <tbody>{visibleEvents.map((event) => <tr key={event.id} className=\"agent-tool-editor__event-row\"\n onClick={(click) => { if (!(click.target as Element).closest(\"button, a\")) setSelectedEventId(event.id); }}>\n <td><button type=\"button\" className=\"agent-tool-editor__event-open\" aria-label={`View ${event.eventType || \"event\"} #${event.id}`} onClick={() => setSelectedEventId(event.id)}>\n {event.createdAt ? new Date(event.createdAt).toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\" }) : \"—\"}\n </button></td>\n <td><AgentEventOutcomeListWidget rowData={event} fieldMetadata={{ name: \"eventType\" } as any} solidListViewMetaData={{}} column={{ attrs: {} }} /></td>\n <td>{event.toolName || \"—\"}</td>\n <td>{event.cost == null ? \"—\" : Number(event.cost).toLocaleString(undefined, { maximumFractionDigits: 6 })}</td>\n <td>{event.inputTokens || event.outputTokens ? `${event.inputTokens ?? 0} / ${event.outputTokens ?? 0}` : \"—\"}</td>\n </tr>)}</tbody>\n </table>}\n </div>\n </div>\n <SolidDialog open={selectedEventId != null} onOpenChange={(open) => { if (!open) setSelectedEventId(null); }}\n className=\"solid-dialog solid-inline-relation-dialog\" style={{ width: \"min(70rem, 95vw)\" }} showHeader={false}>\n <SolidDialogHeader className=\"solid-sr-only\">\n <SolidDialogTitle>Event #{selectedEventId}</SolidDialogTitle>\n <SolidDialogDescription>View the selected event's details and data.</SolidDialogDescription>\n </SolidDialogHeader>\n {selectedEventId != null && <React.Suspense fallback={<p className=\"agent-tool-editor__sessions-message\">Loading event…</p>}>\n <EventFormView key={selectedEventId} moduleName=\"solid-core\" modelName=\"agentEvent\" id={String(selectedEventId)} embeded viewMode=\"view\" handlePopupClose={() => setSelectedEventId(null)} />\n </React.Suspense>}\n </SolidDialog>\n </section>\n );\n}\n\nexport const AgentToolSessionsPanel = AgentSessionsPanel;\n"]}
@@ -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