@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,8 @@
1
+ /**
2
+ * The single mount point of the SolidX Agent in the admin shell (rendered by AdminLayout).
3
+ * Shows the floating bubble and the chat window; hidden unless the `solidAgentEnabled` setting
4
+ * is on, `solidxAgentBackendUrl` is set and the user has agent:invoke. Ctrl/Cmd+J toggles the window,
5
+ * Esc inside it minimizes back to the bubble.
6
+ */
7
+ export default function SolidAgentHost(): import("react/jsx-runtime").JSX.Element | null;
8
+ //# sourceMappingURL=SolidAgentHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidAgentHost.d.ts","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/SolidAgentHost.tsx"],"names":[],"mappings":"AAiCA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,mDA4HrC"}
@@ -0,0 +1,152 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import { useCallback, useEffect, useRef, useState } from "react";
14
+ import { useDispatch, useSelector } from "react-redux";
15
+ import { Sparkles } from "lucide-react";
16
+ import styles from "./SolidAgent.module.css";
17
+ import { agentModeChanged, agentOpenRequested } from "../../../redux/features/agentSlice";
18
+ import { SolidAgentChat } from "./SolidAgentChat";
19
+ import { useAgentAvailability } from "./useAgentAvailability";
20
+ import { useAdminInputContext } from "./useAdminInputContext";
21
+ var PREFS_KEY = "solid-agent.window";
22
+ var MIN_DOCK = 360;
23
+ var MAX_DOCK = 720;
24
+ function readPrefs() {
25
+ var _a;
26
+ try {
27
+ var parsed = JSON.parse((_a = localStorage.getItem(PREFS_KEY)) !== null && _a !== void 0 ? _a : "{}");
28
+ var mode = ["compact", "docked", "maximized"].includes(parsed.mode) ? parsed.mode : undefined;
29
+ return { dockWidth: Number(parsed.dockWidth) || 420, open: parsed.open === true, mode: mode };
30
+ }
31
+ catch (_b) {
32
+ return { dockWidth: 420 };
33
+ }
34
+ }
35
+ function writePrefs(prefs) {
36
+ try {
37
+ localStorage.setItem(PREFS_KEY, JSON.stringify(__assign(__assign({}, readPrefs()), prefs)));
38
+ }
39
+ catch (_a) {
40
+ // ignore
41
+ }
42
+ }
43
+ /**
44
+ * The single mount point of the SolidX Agent in the admin shell (rendered by AdminLayout).
45
+ * Shows the floating bubble and the chat window; hidden unless the `solidAgentEnabled` setting
46
+ * is on, `solidxAgentBackendUrl` is set and the user has agent:invoke. Ctrl/Cmd+J toggles the window,
47
+ * Esc inside it minimizes back to the bubble.
48
+ */
49
+ export default function SolidAgentHost() {
50
+ var _a;
51
+ var dispatch = useDispatch();
52
+ var _b = useAgentAvailability(), ready = _b.ready, enabled = _b.enabled, agentUrl = _b.agentUrl, canUse = _b.canUse;
53
+ var inputContext = useAdminInputContext();
54
+ var agent = useSelector(function (state) { return state.solidAgent; });
55
+ var _c = useState(function () { return readPrefs().dockWidth; }), dockWidth = _c[0], setDockWidth = _c[1];
56
+ var prefsHydrated = useRef(false);
57
+ var skipNextPrefsWrite = useRef(false);
58
+ var windowRef = useRef(null);
59
+ var openerRef = useRef(null);
60
+ var available = ready && enabled && canUse && !!agentUrl && !!agent;
61
+ var mode = (_a = agent === null || agent === void 0 ? void 0 : agent.mode) !== null && _a !== void 0 ? _a : "bubble";
62
+ var isOpen = available && mode !== "bubble";
63
+ // Restore the last visible presentation after the host has verified this user's access.
64
+ useEffect(function () {
65
+ if (!ready || !available || prefsHydrated.current)
66
+ return;
67
+ prefsHydrated.current = true;
68
+ var prefs = readPrefs();
69
+ if (prefs.open && prefs.mode) {
70
+ if (mode !== prefs.mode)
71
+ skipNextPrefsWrite.current = true;
72
+ dispatch(agentModeChanged(prefs.mode));
73
+ }
74
+ }, [ready, available, dispatch, mode]);
75
+ // Keep visibility and presentation in localStorage. When closed, retain the last mode so
76
+ // the preference still records how the window had been presented.
77
+ useEffect(function () {
78
+ if (!prefsHydrated.current || !available)
79
+ return;
80
+ if (skipNextPrefsWrite.current) {
81
+ skipNextPrefsWrite.current = false;
82
+ return;
83
+ }
84
+ if (mode !== "bubble")
85
+ writePrefs({ open: true, mode: mode });
86
+ else
87
+ writePrefs({ open: false });
88
+ }, [available, mode]);
89
+ var toggle = useCallback(function () {
90
+ if (!available)
91
+ return;
92
+ if (isOpen)
93
+ dispatch(agentModeChanged("bubble"));
94
+ else {
95
+ openerRef.current = document.activeElement;
96
+ dispatch(agentOpenRequested());
97
+ }
98
+ }, [available, isOpen, dispatch]);
99
+ // Ctrl/Cmd + J toggles the chat from anywhere in the admin app.
100
+ useEffect(function () {
101
+ if (!available)
102
+ return;
103
+ var onKey = function (event) {
104
+ if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey && event.key.toLowerCase() === "j") {
105
+ event.preventDefault();
106
+ toggle();
107
+ }
108
+ };
109
+ window.addEventListener("keydown", onKey);
110
+ return function () { return window.removeEventListener("keydown", onKey); };
111
+ }, [available, toggle]);
112
+ // Docked mode pushes the admin shell over instead of covering it.
113
+ useEffect(function () {
114
+ var docked = isOpen && mode === "docked";
115
+ document.body.classList.toggle("solid-agent-docked", docked);
116
+ document.documentElement.style.setProperty("--solid-agent-docked-width", "".concat(dockWidth, "px"));
117
+ return function () { return document.body.classList.remove("solid-agent-docked"); };
118
+ }, [isOpen, mode, dockWidth]);
119
+ // Focus returns to whatever opened the chat when it is minimized.
120
+ useEffect(function () {
121
+ if (!isOpen && openerRef.current instanceof HTMLElement) {
122
+ openerRef.current.focus();
123
+ openerRef.current = null;
124
+ }
125
+ }, [isOpen]);
126
+ var startResize = function (event) {
127
+ event.preventDefault();
128
+ var onMove = function (move) {
129
+ setDockWidth(Math.max(MIN_DOCK, Math.min(MAX_DOCK, window.innerWidth - move.clientX)));
130
+ };
131
+ var onUp = function () {
132
+ window.removeEventListener("pointermove", onMove);
133
+ window.removeEventListener("pointerup", onUp);
134
+ setDockWidth(function (width) {
135
+ writePrefs({ dockWidth: width });
136
+ return width;
137
+ });
138
+ };
139
+ window.addEventListener("pointermove", onMove);
140
+ window.addEventListener("pointerup", onUp);
141
+ };
142
+ if (!available || !agentUrl)
143
+ return null;
144
+ var frameClass = mode === "docked" ? styles.docked : mode === "maximized" ? styles.maximized : styles.compact;
145
+ return (_jsx("div", { className: styles.root, children: isOpen ? (_jsxs("div", { ref: windowRef, className: "".concat(styles.window, " ").concat(frameClass), style: mode === "docked" ? { width: dockWidth } : undefined, role: "complementary", "aria-label": "SolidX Agent", onKeyDown: function (event) {
146
+ if (event.key === "Escape") {
147
+ event.stopPropagation();
148
+ dispatch(agentModeChanged("bubble"));
149
+ }
150
+ }, children: [mode === "docked" && _jsx("div", { className: styles.resizeHandle, onPointerDown: startResize, "aria-hidden": "true" }), _jsx(SolidAgentChat, { agentUrl: agentUrl, inputContext: inputContext })] })) : (_jsxs("button", { type: "button", className: styles.bubble, onClick: toggle, "aria-label": "Open the SolidX Agent (Ctrl+J)", title: "SolidX Agent (Ctrl+J)", children: [_jsx(Sparkles, { size: 22 }), (agent === null || agent === void 0 ? void 0 : agent.working) && _jsx("span", { className: styles.bubbleBadge, "aria-label": "Agent is working" })] })) }));
151
+ }
152
+ //# sourceMappingURL=SolidAgentHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidAgentHost.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/SolidAgentHost.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Sparkles } from \"lucide-react\";\nimport styles from \"./SolidAgent.module.css\";\nimport { agentModeChanged, agentOpenRequested, type AgentState } from \"../../../redux/features/agentSlice\";\nimport { SolidAgentChat } from \"./SolidAgentChat\";\nimport { useAgentAvailability } from \"./useAgentAvailability\";\nimport { useAdminInputContext } from \"./useAdminInputContext\";\nimport type { AgentMode } from \"./types\";\n\nconst PREFS_KEY = \"solid-agent.window\";\nconst MIN_DOCK = 360;\nconst MAX_DOCK = 720;\ntype WindowPrefs = { dockWidth: number; open?: boolean; mode?: Exclude<AgentMode, \"bubble\"> };\n\nfunction readPrefs(): WindowPrefs {\n try {\n const parsed = JSON.parse(localStorage.getItem(PREFS_KEY) ?? \"{}\");\n const mode = [\"compact\", \"docked\", \"maximized\"].includes(parsed.mode) ? parsed.mode as WindowPrefs[\"mode\"] : undefined;\n return { dockWidth: Number(parsed.dockWidth) || 420, open: parsed.open === true, mode };\n } catch {\n return { dockWidth: 420 };\n }\n}\n\nfunction writePrefs(prefs: Partial<WindowPrefs>) {\n try {\n localStorage.setItem(PREFS_KEY, JSON.stringify({ ...readPrefs(), ...prefs }));\n } catch {\n // ignore\n }\n}\n\n/**\n * The single mount point of the SolidX Agent in the admin shell (rendered by AdminLayout).\n * Shows the floating bubble and the chat window; hidden unless the `solidAgentEnabled` setting\n * is on, `solidxAgentBackendUrl` is set and the user has agent:invoke. Ctrl/Cmd+J toggles the window,\n * Esc inside it minimizes back to the bubble.\n */\nexport default function SolidAgentHost() {\n const dispatch = useDispatch();\n const { ready, enabled, agentUrl, canUse } = useAgentAvailability();\n const inputContext = useAdminInputContext();\n const agent = useSelector((state: any) => state.solidAgent as AgentState | undefined);\n const [dockWidth, setDockWidth] = useState(() => readPrefs().dockWidth);\n const prefsHydrated = useRef(false);\n const skipNextPrefsWrite = useRef(false);\n const windowRef = useRef<HTMLDivElement>(null);\n const openerRef = useRef<Element | null>(null);\n\n const available = ready && enabled && canUse && !!agentUrl && !!agent;\n const mode = agent?.mode ?? \"bubble\";\n const isOpen = available && mode !== \"bubble\";\n\n // Restore the last visible presentation after the host has verified this user's access.\n useEffect(() => {\n if (!ready || !available || prefsHydrated.current) return;\n prefsHydrated.current = true;\n const prefs = readPrefs();\n if (prefs.open && prefs.mode) {\n if (mode !== prefs.mode) skipNextPrefsWrite.current = true;\n dispatch(agentModeChanged(prefs.mode));\n }\n }, [ready, available, dispatch, mode]);\n\n // Keep visibility and presentation in localStorage. When closed, retain the last mode so\n // the preference still records how the window had been presented.\n useEffect(() => {\n if (!prefsHydrated.current || !available) return;\n if (skipNextPrefsWrite.current) {\n skipNextPrefsWrite.current = false;\n return;\n }\n if (mode !== \"bubble\") writePrefs({ open: true, mode });\n else writePrefs({ open: false });\n }, [available, mode]);\n\n const toggle = useCallback(() => {\n if (!available) return;\n if (isOpen) dispatch(agentModeChanged(\"bubble\"));\n else {\n openerRef.current = document.activeElement;\n dispatch(agentOpenRequested());\n }\n }, [available, isOpen, dispatch]);\n\n // Ctrl/Cmd + J toggles the chat from anywhere in the admin app.\n useEffect(() => {\n if (!available) return;\n const onKey = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey && event.key.toLowerCase() === \"j\") {\n event.preventDefault();\n toggle();\n }\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [available, toggle]);\n\n // Docked mode pushes the admin shell over instead of covering it.\n useEffect(() => {\n const docked = isOpen && mode === \"docked\";\n document.body.classList.toggle(\"solid-agent-docked\", docked);\n document.documentElement.style.setProperty(\"--solid-agent-docked-width\", `${dockWidth}px`);\n return () => document.body.classList.remove(\"solid-agent-docked\");\n }, [isOpen, mode, dockWidth]);\n\n // Focus returns to whatever opened the chat when it is minimized.\n useEffect(() => {\n if (!isOpen && openerRef.current instanceof HTMLElement) {\n openerRef.current.focus();\n openerRef.current = null;\n }\n }, [isOpen]);\n\n const startResize = (event: React.PointerEvent) => {\n event.preventDefault();\n const onMove = (move: PointerEvent) => {\n setDockWidth(Math.max(MIN_DOCK, Math.min(MAX_DOCK, window.innerWidth - move.clientX)));\n };\n const onUp = () => {\n window.removeEventListener(\"pointermove\", onMove);\n window.removeEventListener(\"pointerup\", onUp);\n setDockWidth((width) => {\n writePrefs({ dockWidth: width });\n return width;\n });\n };\n window.addEventListener(\"pointermove\", onMove);\n window.addEventListener(\"pointerup\", onUp);\n };\n\n if (!available || !agentUrl) return null;\n\n const frameClass = mode === \"docked\" ? styles.docked : mode === \"maximized\" ? styles.maximized : styles.compact;\n\n return (\n <div className={styles.root}>\n {isOpen ? (\n <div\n ref={windowRef}\n className={`${styles.window} ${frameClass}`}\n style={mode === \"docked\" ? { width: dockWidth } : undefined}\n role=\"complementary\"\n aria-label=\"SolidX Agent\"\n onKeyDown={(event) => {\n if (event.key === \"Escape\") {\n event.stopPropagation();\n dispatch(agentModeChanged(\"bubble\"));\n }\n }}\n >\n {mode === \"docked\" && <div className={styles.resizeHandle} onPointerDown={startResize} aria-hidden=\"true\" />}\n <SolidAgentChat agentUrl={agentUrl} inputContext={inputContext} />\n </div>\n ) : (\n <button type=\"button\" className={styles.bubble} onClick={toggle} aria-label=\"Open the SolidX Agent (Ctrl+J)\" title=\"SolidX Agent (Ctrl+J)\">\n <Sparkles size={22} />\n {agent?.working && <span className={styles.bubbleBadge} aria-label=\"Agent is working\" />}\n </button>\n )}\n </div>\n );\n}\n"]}
@@ -0,0 +1,164 @@
1
+ import React, { useCallback, useEffect, useRef, useState } from "react";
2
+ import { useDispatch, useSelector } from "react-redux";
3
+ import { Sparkles } from "lucide-react";
4
+ import styles from "./SolidAgent.module.css";
5
+ import { agentModeChanged, agentOpenRequested, type AgentState } from "../../../redux/features/agentSlice";
6
+ import { SolidAgentChat } from "./SolidAgentChat";
7
+ import { useAgentAvailability } from "./useAgentAvailability";
8
+ import { useAdminInputContext } from "./useAdminInputContext";
9
+ import type { AgentMode } from "./types";
10
+
11
+ const PREFS_KEY = "solid-agent.window";
12
+ const MIN_DOCK = 360;
13
+ const MAX_DOCK = 720;
14
+ type WindowPrefs = { dockWidth: number; open?: boolean; mode?: Exclude<AgentMode, "bubble"> };
15
+
16
+ function readPrefs(): WindowPrefs {
17
+ try {
18
+ const parsed = JSON.parse(localStorage.getItem(PREFS_KEY) ?? "{}");
19
+ const mode = ["compact", "docked", "maximized"].includes(parsed.mode) ? parsed.mode as WindowPrefs["mode"] : undefined;
20
+ return { dockWidth: Number(parsed.dockWidth) || 420, open: parsed.open === true, mode };
21
+ } catch {
22
+ return { dockWidth: 420 };
23
+ }
24
+ }
25
+
26
+ function writePrefs(prefs: Partial<WindowPrefs>) {
27
+ try {
28
+ localStorage.setItem(PREFS_KEY, JSON.stringify({ ...readPrefs(), ...prefs }));
29
+ } catch {
30
+ // ignore
31
+ }
32
+ }
33
+
34
+ /**
35
+ * The single mount point of the SolidX Agent in the admin shell (rendered by AdminLayout).
36
+ * Shows the floating bubble and the chat window; hidden unless the `solidAgentEnabled` setting
37
+ * is on, `solidxAgentBackendUrl` is set and the user has agent:invoke. Ctrl/Cmd+J toggles the window,
38
+ * Esc inside it minimizes back to the bubble.
39
+ */
40
+ export default function SolidAgentHost() {
41
+ const dispatch = useDispatch();
42
+ const { ready, enabled, agentUrl, canUse } = useAgentAvailability();
43
+ const inputContext = useAdminInputContext();
44
+ const agent = useSelector((state: any) => state.solidAgent as AgentState | undefined);
45
+ const [dockWidth, setDockWidth] = useState(() => readPrefs().dockWidth);
46
+ const prefsHydrated = useRef(false);
47
+ const skipNextPrefsWrite = useRef(false);
48
+ const windowRef = useRef<HTMLDivElement>(null);
49
+ const openerRef = useRef<Element | null>(null);
50
+
51
+ const available = ready && enabled && canUse && !!agentUrl && !!agent;
52
+ const mode = agent?.mode ?? "bubble";
53
+ const isOpen = available && mode !== "bubble";
54
+
55
+ // Restore the last visible presentation after the host has verified this user's access.
56
+ useEffect(() => {
57
+ if (!ready || !available || prefsHydrated.current) return;
58
+ prefsHydrated.current = true;
59
+ const prefs = readPrefs();
60
+ if (prefs.open && prefs.mode) {
61
+ if (mode !== prefs.mode) skipNextPrefsWrite.current = true;
62
+ dispatch(agentModeChanged(prefs.mode));
63
+ }
64
+ }, [ready, available, dispatch, mode]);
65
+
66
+ // Keep visibility and presentation in localStorage. When closed, retain the last mode so
67
+ // the preference still records how the window had been presented.
68
+ useEffect(() => {
69
+ if (!prefsHydrated.current || !available) return;
70
+ if (skipNextPrefsWrite.current) {
71
+ skipNextPrefsWrite.current = false;
72
+ return;
73
+ }
74
+ if (mode !== "bubble") writePrefs({ open: true, mode });
75
+ else writePrefs({ open: false });
76
+ }, [available, mode]);
77
+
78
+ const toggle = useCallback(() => {
79
+ if (!available) return;
80
+ if (isOpen) dispatch(agentModeChanged("bubble"));
81
+ else {
82
+ openerRef.current = document.activeElement;
83
+ dispatch(agentOpenRequested());
84
+ }
85
+ }, [available, isOpen, dispatch]);
86
+
87
+ // Ctrl/Cmd + J toggles the chat from anywhere in the admin app.
88
+ useEffect(() => {
89
+ if (!available) return;
90
+ const onKey = (event: KeyboardEvent) => {
91
+ if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey && event.key.toLowerCase() === "j") {
92
+ event.preventDefault();
93
+ toggle();
94
+ }
95
+ };
96
+ window.addEventListener("keydown", onKey);
97
+ return () => window.removeEventListener("keydown", onKey);
98
+ }, [available, toggle]);
99
+
100
+ // Docked mode pushes the admin shell over instead of covering it.
101
+ useEffect(() => {
102
+ const docked = isOpen && mode === "docked";
103
+ document.body.classList.toggle("solid-agent-docked", docked);
104
+ document.documentElement.style.setProperty("--solid-agent-docked-width", `${dockWidth}px`);
105
+ return () => document.body.classList.remove("solid-agent-docked");
106
+ }, [isOpen, mode, dockWidth]);
107
+
108
+ // Focus returns to whatever opened the chat when it is minimized.
109
+ useEffect(() => {
110
+ if (!isOpen && openerRef.current instanceof HTMLElement) {
111
+ openerRef.current.focus();
112
+ openerRef.current = null;
113
+ }
114
+ }, [isOpen]);
115
+
116
+ const startResize = (event: React.PointerEvent) => {
117
+ event.preventDefault();
118
+ const onMove = (move: PointerEvent) => {
119
+ setDockWidth(Math.max(MIN_DOCK, Math.min(MAX_DOCK, window.innerWidth - move.clientX)));
120
+ };
121
+ const onUp = () => {
122
+ window.removeEventListener("pointermove", onMove);
123
+ window.removeEventListener("pointerup", onUp);
124
+ setDockWidth((width) => {
125
+ writePrefs({ dockWidth: width });
126
+ return width;
127
+ });
128
+ };
129
+ window.addEventListener("pointermove", onMove);
130
+ window.addEventListener("pointerup", onUp);
131
+ };
132
+
133
+ if (!available || !agentUrl) return null;
134
+
135
+ const frameClass = mode === "docked" ? styles.docked : mode === "maximized" ? styles.maximized : styles.compact;
136
+
137
+ return (
138
+ <div className={styles.root}>
139
+ {isOpen ? (
140
+ <div
141
+ ref={windowRef}
142
+ className={`${styles.window} ${frameClass}`}
143
+ style={mode === "docked" ? { width: dockWidth } : undefined}
144
+ role="complementary"
145
+ aria-label="SolidX Agent"
146
+ onKeyDown={(event) => {
147
+ if (event.key === "Escape") {
148
+ event.stopPropagation();
149
+ dispatch(agentModeChanged("bubble"));
150
+ }
151
+ }}
152
+ >
153
+ {mode === "docked" && <div className={styles.resizeHandle} onPointerDown={startResize} aria-hidden="true" />}
154
+ <SolidAgentChat agentUrl={agentUrl} inputContext={inputContext} />
155
+ </div>
156
+ ) : (
157
+ <button type="button" className={styles.bubble} onClick={toggle} aria-label="Open the SolidX Agent (Ctrl+J)" title="SolidX Agent (Ctrl+J)">
158
+ <Sparkles size={22} />
159
+ {agent?.working && <span className={styles.bubbleBadge} aria-label="Agent is working" />}
160
+ </button>
161
+ )}
162
+ </div>
163
+ );
164
+ }
@@ -0,0 +1,16 @@
1
+ /** Only http(s), mailto and in-app paths are followed; anything else (javascript:, data:) is dropped. */
2
+ export declare function safeHref(href?: string): string | undefined;
3
+ /** Icon-only copy button (toolbar style), used by the code / diff widgets. */
4
+ export declare function SolidAgentCopyButton({ text, label }: {
5
+ text: string;
6
+ label?: string;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ /** Small copy button shown under a message bubble on hover. */
9
+ export declare function SolidAgentMessageCopyButton({ text }: {
10
+ text: string;
11
+ }): import("react/jsx-runtime").JSX.Element;
12
+ /** Markdown for agent text. Raw HTML in the source is never rendered (react-markdown default). */
13
+ export declare function SolidAgentMarkdown({ text }: {
14
+ text: string;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=SolidAgentMarkdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidAgentMarkdown.d.ts","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/SolidAgentMarkdown.tsx"],"names":[],"mappings":"AAOA,yGAAyG;AACzG,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1D;AAWD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAmBrF;AAED,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CAmBrE;AA0DD,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CAQ5D"}
@@ -0,0 +1,161 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ var __rest = (this && this.__rest) || function (s, e) {
49
+ var t = {};
50
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
51
+ t[p] = s[p];
52
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
53
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
54
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
55
+ t[p[i]] = s[p[i]];
56
+ }
57
+ return t;
58
+ };
59
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
60
+ import { useState } from "react";
61
+ import ReactMarkdown from "react-markdown";
62
+ import remarkGfm from "remark-gfm";
63
+ import { Check, Copy } from "lucide-react";
64
+ import styles from "./SolidAgent.module.css";
65
+ import widgetStyles from "./widgets/solidChatWidgets.module.css";
66
+ /** Only http(s), mailto and in-app paths are followed; anything else (javascript:, data:) is dropped. */
67
+ export function safeHref(href) {
68
+ if (!href)
69
+ return undefined;
70
+ if (/^(https?:|mailto:)/i.test(href) || href.startsWith("/") || href.startsWith("#"))
71
+ return href;
72
+ return undefined;
73
+ }
74
+ function copyText(text, done) {
75
+ return __awaiter(this, void 0, void 0, function () {
76
+ var _a;
77
+ return __generator(this, function (_b) {
78
+ switch (_b.label) {
79
+ case 0:
80
+ _b.trys.push([0, 2, , 3]);
81
+ return [4 /*yield*/, navigator.clipboard.writeText(text)];
82
+ case 1:
83
+ _b.sent();
84
+ done();
85
+ return [3 /*break*/, 3];
86
+ case 2:
87
+ _a = _b.sent();
88
+ return [3 /*break*/, 3];
89
+ case 3: return [2 /*return*/];
90
+ }
91
+ });
92
+ });
93
+ }
94
+ /** Icon-only copy button (toolbar style), used by the code / diff widgets. */
95
+ export function SolidAgentCopyButton(_a) {
96
+ var text = _a.text, label = _a.label;
97
+ var _b = useState(false), copied = _b[0], setCopied = _b[1];
98
+ return (_jsx("button", { type: "button", className: styles.iconBtn, "aria-label": label !== null && label !== void 0 ? label : "Copy", title: copied ? "Copied" : label !== null && label !== void 0 ? label : "Copy", onClick: function (event) {
99
+ event.stopPropagation();
100
+ void copyText(text, function () {
101
+ setCopied(true);
102
+ setTimeout(function () { return setCopied(false); }, 1600);
103
+ });
104
+ }, children: copied ? _jsx(Check, { size: 14 }) : _jsx(Copy, { size: 14 }) }));
105
+ }
106
+ /** Small copy button shown under a message bubble on hover. */
107
+ export function SolidAgentMessageCopyButton(_a) {
108
+ var text = _a.text;
109
+ var _b = useState(false), copied = _b[0], setCopied = _b[1];
110
+ return (_jsx("button", { type: "button", className: widgetStyles.CopyBtn, title: "Copy", "aria-label": "Copy message", onClick: function (event) {
111
+ event.stopPropagation();
112
+ void copyText(text, function () {
113
+ setCopied(true);
114
+ setTimeout(function () { return setCopied(false); }, 2000);
115
+ });
116
+ }, children: copied ? _jsx(Check, { size: 11 }) : _jsx(Copy, { size: 11 }) }));
117
+ }
118
+ function CodeBlock(_a) {
119
+ var _b;
120
+ var className = _a.className, children = _a.children;
121
+ var _c = useState(false), copied = _c[0], setCopied = _c[1];
122
+ var code = String(children !== null && children !== void 0 ? children : "").replace(/\n$/, "");
123
+ var lang = (_b = className === null || className === void 0 ? void 0 : className.replace("language-", "")) !== null && _b !== void 0 ? _b : "";
124
+ return (_jsxs("div", { className: widgetStyles.CodeBlockWrapper, children: [_jsxs("div", { className: widgetStyles.CodeBlockHeader, children: [_jsx("span", { className: widgetStyles.CodeLang, children: lang || "code" }), _jsxs("button", { type: "button", className: widgetStyles.CodeCopyBtn, onClick: function () {
125
+ return void copyText(code, function () {
126
+ setCopied(true);
127
+ setTimeout(function () { return setCopied(false); }, 2000);
128
+ });
129
+ }, children: [copied ? _jsx(Check, { size: 11 }) : _jsx(Copy, { size: 11 }), copied ? "Copied" : "Copy"] })] }), _jsx("pre", { className: widgetStyles.CodePre, children: _jsx("code", { children: code }) })] }));
130
+ }
131
+ var markdownComponents = {
132
+ code: function (_a) {
133
+ var className = _a.className, children = _a.children, rest = __rest(_a, ["className", "children"]);
134
+ // Only named fenced blocks (```lang) become a code block; everything else is inline code.
135
+ if (!/language-/.test(className || ""))
136
+ return _jsx("code", __assign({ className: widgetStyles.InlineCode }, rest, { children: children }));
137
+ return _jsx(CodeBlock, { className: className, children: children });
138
+ },
139
+ pre: function (_a) {
140
+ var children = _a.children;
141
+ return _jsx(_Fragment, { children: children });
142
+ },
143
+ table: function (_a) {
144
+ var children = _a.children;
145
+ return _jsx("div", { className: widgetStyles.MarkdownTableWrapper, children: _jsx("table", { children: children }) });
146
+ },
147
+ a: function (_a) {
148
+ var href = _a.href, children = _a.children;
149
+ var safe = safeHref(href);
150
+ if (!safe)
151
+ return _jsx("span", { children: children });
152
+ var external = /^https?:/i.test(safe);
153
+ return (_jsx("a", { href: safe, className: widgetStyles.MarkdownLink, target: external ? "_blank" : undefined, rel: external ? "noopener noreferrer" : undefined, children: children }));
154
+ },
155
+ };
156
+ /** Markdown for agent text. Raw HTML in the source is never rendered (react-markdown default). */
157
+ export function SolidAgentMarkdown(_a) {
158
+ var text = _a.text;
159
+ return (_jsx("div", { className: widgetStyles.MarkdownRoot, children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], components: markdownComponents, children: text }) }));
160
+ }
161
+ //# sourceMappingURL=SolidAgentMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidAgentMarkdown.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/SolidAgentMarkdown.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { Check, Copy } from \"lucide-react\";\nimport styles from \"./SolidAgent.module.css\";\nimport widgetStyles from \"./widgets/solidChatWidgets.module.css\";\n\n/** Only http(s), mailto and in-app paths are followed; anything else (javascript:, data:) is dropped. */\nexport function safeHref(href?: string): string | undefined {\n if (!href) return undefined;\n if (/^(https?:|mailto:)/i.test(href) || href.startsWith(\"/\") || href.startsWith(\"#\")) return href;\n return undefined;\n}\n\nasync function copyText(text: string, done: () => void) {\n try {\n await navigator.clipboard.writeText(text);\n done();\n } catch {\n // Clipboard blocked; the text stays selectable.\n }\n}\n\n/** Icon-only copy button (toolbar style), used by the code / diff widgets. */\nexport function SolidAgentCopyButton({ text, label }: { text: string; label?: string }) {\n const [copied, setCopied] = useState(false);\n return (\n <button\n type=\"button\"\n className={styles.iconBtn}\n aria-label={label ?? \"Copy\"}\n title={copied ? \"Copied\" : label ?? \"Copy\"}\n onClick={(event) => {\n event.stopPropagation();\n void copyText(text, () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 1600);\n });\n }}\n >\n {copied ? <Check size={14} /> : <Copy size={14} />}\n </button>\n );\n}\n\n/** Small copy button shown under a message bubble on hover. */\nexport function SolidAgentMessageCopyButton({ text }: { text: string }) {\n const [copied, setCopied] = useState(false);\n return (\n <button\n type=\"button\"\n className={widgetStyles.CopyBtn}\n title=\"Copy\"\n aria-label=\"Copy message\"\n onClick={(event) => {\n event.stopPropagation();\n void copyText(text, () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n }}\n >\n {copied ? <Check size={11} /> : <Copy size={11} />}\n </button>\n );\n}\n\nfunction CodeBlock({ className, children }: { className?: string; children?: React.ReactNode }) {\n const [copied, setCopied] = useState(false);\n const code = String(children ?? \"\").replace(/\\n$/, \"\");\n const lang = className?.replace(\"language-\", \"\") ?? \"\";\n return (\n <div className={widgetStyles.CodeBlockWrapper}>\n <div className={widgetStyles.CodeBlockHeader}>\n <span className={widgetStyles.CodeLang}>{lang || \"code\"}</span>\n <button\n type=\"button\"\n className={widgetStyles.CodeCopyBtn}\n onClick={() =>\n void copyText(code, () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n })\n }\n >\n {copied ? <Check size={11} /> : <Copy size={11} />}\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n </div>\n <pre className={widgetStyles.CodePre}><code>{code}</code></pre>\n </div>\n );\n}\n\nconst markdownComponents = {\n code({ className, children, ...rest }: any) {\n // Only named fenced blocks (```lang) become a code block; everything else is inline code.\n if (!/language-/.test(className || \"\")) return <code className={widgetStyles.InlineCode} {...rest}>{children}</code>;\n return <CodeBlock className={className}>{children}</CodeBlock>;\n },\n pre({ children }: any) {\n return <>{children}</>;\n },\n table({ children }: any) {\n return <div className={widgetStyles.MarkdownTableWrapper}><table>{children}</table></div>;\n },\n a({ href, children }: any) {\n const safe = safeHref(href);\n if (!safe) return <span>{children}</span>;\n const external = /^https?:/i.test(safe);\n return (\n <a\n href={safe}\n className={widgetStyles.MarkdownLink}\n target={external ? \"_blank\" : undefined}\n rel={external ? \"noopener noreferrer\" : undefined}\n >\n {children}\n </a>\n );\n },\n};\n\n/** Markdown for agent text. Raw HTML in the source is never rendered (react-markdown default). */\nexport function SolidAgentMarkdown({ text }: { text: string }) {\n return (\n <div className={widgetStyles.MarkdownRoot}>\n <ReactMarkdown remarkPlugins={[remarkGfm]} components={markdownComponents}>\n {text}\n </ReactMarkdown>\n </div>\n );\n}\n"]}