@solidxai/core-ui 0.1.20-beta.0 → 0.1.20-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 (252) hide show
  1. package/dist/components/common/Link.d.ts.map +1 -1
  2. package/dist/components/common/Link.js +2 -1
  3. package/dist/components/common/Link.js.map +1 -1
  4. package/dist/components/common/Link.tsx +2 -1
  5. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +1 -0
  6. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  7. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +109 -23
  8. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +155 -34
  10. package/dist/components/core/chatter/SolidChatter.js +2 -2
  11. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  12. package/dist/components/core/chatter/SolidChatter.tsx +2 -2
  13. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +20 -19
  14. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  15. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +16 -16
  16. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -1
  17. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +36 -9
  18. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -1
  19. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +78 -7
  20. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +1 -0
  21. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -1
  22. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +1 -1
  23. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -1
  24. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +1 -1
  25. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts +4 -0
  26. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts.map +1 -0
  27. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js +131 -0
  28. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js.map +1 -0
  29. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx +151 -0
  30. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts +4 -0
  31. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts.map +1 -0
  32. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js +13 -0
  33. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js.map +1 -0
  34. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx +20 -0
  35. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  36. package/dist/components/core/form/SolidFormView.js +4 -0
  37. package/dist/components/core/form/SolidFormView.js.map +1 -1
  38. package/dist/components/core/form/SolidFormView.tsx +4 -0
  39. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  40. package/dist/components/core/kanban/SolidKanbanView.js +50 -15
  41. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  42. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -3
  43. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  44. package/dist/components/core/list/SolidListView.js +16 -3
  45. package/dist/components/core/list/SolidListView.js.map +1 -1
  46. package/dist/components/core/list/SolidListView.tsx +16 -2
  47. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  48. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -1
  49. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  50. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -1
  51. package/dist/components/core/module/ModulePackageDialog.css +102 -0
  52. package/dist/components/core/module/ModulePackageDialog.d.ts +2 -1
  53. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -1
  54. package/dist/components/core/module/ModulePackageDialog.js +216 -68
  55. package/dist/components/core/module/ModulePackageDialog.js.map +1 -1
  56. package/dist/components/core/module/ModulePackageDialog.tsx +356 -76
  57. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
  58. package/dist/components/core/solid-agent/SolidAgentChat.js +9 -3
  59. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
  60. package/dist/components/core/solid-agent/SolidAgentChat.tsx +9 -4
  61. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -1
  62. package/dist/components/core/solid-agent/SolidAgentMarkdown.js +25 -6
  63. package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -1
  64. package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +15 -1
  65. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +5 -0
  66. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
  67. package/dist/components/core/solid-agent/client/agentRuntime.js +77 -20
  68. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
  69. package/dist/components/core/solid-agent/client/agentRuntime.ts +29 -1
  70. package/dist/components/core/solid-agent/client/agentSocket.d.ts +5 -1
  71. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
  72. package/dist/components/core/solid-agent/client/agentSocket.js +27 -4
  73. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
  74. package/dist/components/core/solid-agent/client/agentSocket.ts +14 -3
  75. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +2 -2
  76. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
  77. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +5 -5
  78. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +2 -0
  79. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
  80. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +2 -2
  81. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
  82. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +4 -4
  83. package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -1
  84. package/dist/components/core/solid-agent/thread/AgentThread.js +61 -26
  85. package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -1
  86. package/dist/components/core/solid-agent/thread/AgentThread.tsx +74 -40
  87. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +2 -1
  88. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -1
  89. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +2 -1
  90. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -1
  91. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +3 -1
  92. package/dist/components/core/solid-agent/types.d.ts +3 -0
  93. package/dist/components/core/solid-agent/types.d.ts.map +1 -1
  94. package/dist/components/core/solid-agent/types.js +0 -9
  95. package/dist/components/core/solid-agent/types.js.map +1 -1
  96. package/dist/components/core/solid-agent/types.ts +4 -2
  97. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +1 -1
  98. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -1
  99. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +5 -2
  100. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -1
  101. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +11 -5
  102. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +3 -0
  103. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -1
  104. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +4 -0
  105. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +3 -0
  106. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -1
  107. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +4 -0
  108. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +3 -0
  109. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -1
  110. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +4 -0
  111. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +3 -0
  112. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -1
  113. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +4 -0
  114. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +3 -0
  115. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -1
  116. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +4 -0
  117. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +3 -0
  118. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
  119. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +4 -0
  120. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +3 -0
  121. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -1
  122. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +4 -0
  123. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +3 -0
  124. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -1
  125. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +4 -0
  126. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +3 -0
  127. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -1
  128. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +4 -0
  129. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +19 -0
  130. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -1
  131. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +20 -0
  132. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +3 -0
  133. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -1
  134. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +4 -0
  135. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +3 -0
  136. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -1
  137. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +4 -0
  138. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +3 -0
  139. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -1
  140. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +4 -0
  141. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +3 -0
  142. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -1
  143. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +4 -0
  144. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +3 -0
  145. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -1
  146. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +4 -0
  147. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +3 -0
  148. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -1
  149. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +4 -0
  150. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +3 -0
  151. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -1
  152. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +4 -0
  153. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +3 -0
  154. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -1
  155. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +4 -0
  156. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +9 -1
  157. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  158. package/dist/components/core/users/CreateUser.js +23 -8
  159. package/dist/components/core/users/CreateUser.js.map +1 -1
  160. package/dist/components/core/users/CreateUser.tsx +10 -6
  161. package/dist/components/layout/AdminTopHeader.js +2 -2
  162. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  163. package/dist/components/layout/AdminTopHeader.tsx +2 -2
  164. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  165. package/dist/components/layout/AppSidebar.js +21 -5
  166. package/dist/components/layout/AppSidebar.js.map +1 -1
  167. package/dist/components/layout/AppSidebar.tsx +24 -6
  168. package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
  169. package/dist/components/layout/SolidAiStudioLayout.js +3 -4
  170. package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
  171. package/dist/components/layout/SolidAiStudioLayout.tsx +3 -4
  172. package/dist/components/layout/user-profile-menu.js +10 -10
  173. package/dist/components/layout/user-profile-menu.js.map +1 -1
  174. package/dist/components/layout/user-profile-menu.tsx +3 -3
  175. package/dist/components/shad-cn-ui/SolidLightbox.d.ts +2 -1
  176. package/dist/components/shad-cn-ui/SolidLightbox.d.ts.map +1 -1
  177. package/dist/components/shad-cn-ui/SolidLightbox.js +11 -4
  178. package/dist/components/shad-cn-ui/SolidLightbox.js.map +1 -1
  179. package/dist/components/shad-cn-ui/SolidLightbox.tsx +14 -1
  180. package/dist/helpers/modelViewPersistence.d.ts +2 -0
  181. package/dist/helpers/modelViewPersistence.d.ts.map +1 -1
  182. package/dist/helpers/modelViewPersistence.js +72 -0
  183. package/dist/helpers/modelViewPersistence.js.map +1 -1
  184. package/dist/helpers/modelViewPersistence.ts +79 -0
  185. package/dist/helpers/registry.d.ts +6 -2
  186. package/dist/helpers/registry.d.ts.map +1 -1
  187. package/dist/helpers/registry.js +68 -3
  188. package/dist/helpers/registry.js.map +1 -1
  189. package/dist/helpers/registry.ts +62 -4
  190. package/dist/hooks/useModelsDevModels.d.ts +43 -0
  191. package/dist/hooks/useModelsDevModels.d.ts.map +1 -0
  192. package/dist/hooks/useModelsDevModels.js +81 -0
  193. package/dist/hooks/useModelsDevModels.js.map +1 -0
  194. package/dist/hooks/useModelsDevModels.ts +106 -0
  195. package/dist/hooks/useRouter.d.ts.map +1 -1
  196. package/dist/hooks/useRouter.js +3 -2
  197. package/dist/hooks/useRouter.js.map +1 -1
  198. package/dist/hooks/useRouter.ts +3 -2
  199. package/dist/index.d.ts +2 -2
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +1 -1
  202. package/dist/index.js.map +1 -1
  203. package/dist/index.ts +4 -1
  204. package/dist/modules/solidUiModule.d.ts +3 -2
  205. package/dist/modules/solidUiModule.d.ts.map +1 -1
  206. package/dist/modules/solidUiModule.js +1 -1
  207. package/dist/modules/solidUiModule.js.map +1 -1
  208. package/dist/modules/solidUiModule.ts +5 -1
  209. package/dist/redux/api/moduleApi.d.ts +12 -2
  210. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  211. package/dist/redux/api/moduleApi.js +33 -3
  212. package/dist/redux/api/moduleApi.js.map +1 -1
  213. package/dist/redux/api/moduleApi.ts +17 -2
  214. package/dist/redux/api/solidChatterMessageApi.d.ts +3 -1
  215. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  216. package/dist/redux/api/solidChatterMessageApi.js +9 -1
  217. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  218. package/dist/redux/api/solidChatterMessageApi.ts +9 -1
  219. package/dist/redux/store/defaultStoreConfig.d.ts +9 -1
  220. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  221. package/dist/resources/globals.css +30 -0
  222. package/dist/resources/solid-custom.css +10 -6
  223. package/dist/resources/solid-tailwind-generated.css +1 -1
  224. package/dist/routes/AppEventListener.js +1 -1
  225. package/dist/routes/AppEventListener.js.map +1 -1
  226. package/dist/routes/AppEventListener.tsx +1 -1
  227. package/dist/routes/pages/admin/core/AgentPersonaHistory.css +130 -0
  228. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts +7 -0
  229. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts.map +1 -0
  230. package/dist/routes/pages/admin/core/AgentPersonaHistory.js +228 -0
  231. package/dist/routes/pages/admin/core/AgentPersonaHistory.js.map +1 -0
  232. package/dist/routes/pages/admin/core/AgentPersonaHistory.tsx +234 -0
  233. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +6 -14
  234. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
  235. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +186 -146
  236. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
  237. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +170 -118
  238. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts +2 -0
  239. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -0
  240. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +108 -0
  241. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -0
  242. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +96 -0
  243. package/dist/routes/solidRoutes.d.ts.map +1 -1
  244. package/dist/routes/solidRoutes.js +2 -0
  245. package/dist/routes/solidRoutes.js.map +1 -1
  246. package/dist/routes/solidRoutes.tsx +2 -0
  247. package/dist/types/extension-registry.d.ts +12 -0
  248. package/dist/types/extension-registry.d.ts.map +1 -1
  249. package/dist/types/extension-registry.js.map +1 -1
  250. package/dist/types/extension-registry.ts +15 -0
  251. package/dist/types/solid-core.d.ts +2 -0
  252. package/package.json +2 -1
@@ -22,6 +22,7 @@ export declare class SolidChatWidgetErrorBoundary extends React.Component<ErrorB
22
22
  type SolidAgentChatItemProps = {
23
23
  item: AgentChatItem;
24
24
  agentContext?: AgentContext;
25
+ showMessageMeta?: boolean;
25
26
  onReply: (widgetId: string, widget: string, value: unknown) => void;
26
27
  onPrompt: (text: string) => void;
27
28
  };
@@ -32,5 +33,5 @@ type SolidAgentChatItemProps = {
32
33
  * through the extension registry, so a UI module can register new chat widgets or override a
33
34
  * default by registering the same name.
34
35
  */
35
- export declare const SolidAgentChatItem: ({ item, agentContext, onReply, onPrompt }: SolidAgentChatItemProps) => import("react/jsx-runtime").JSX.Element;
36
+ export declare const SolidAgentChatItem: ({ item, agentContext, showMessageMeta, onReply, onPrompt }: SolidAgentChatItemProps) => import("react/jsx-runtime").JSX.Element;
36
37
  //# sourceMappingURL=SolidAgentChatItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidAgentChatItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/SolidAgentChatItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,4FAA4F;AAC5F,eAAO,MAAM,wBAAwB,cAAe,MAAM,KAAG,MAuB5D,CAAC;AAUF,KAAK,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AACxG,KAAK,kBAAkB,GAAG;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAAC;AAElD,2FAA2F;AAC3F,qBAAa,4BAA6B,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACrG,KAAK,EAAE,kBAAkB,CAAmB;IAE5C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIjE,iBAAiB,CAAC,KAAK,EAAE,KAAK;IAI9B,kBAAkB,CAAC,IAAI,EAAE,kBAAkB;IAK3C,MAAM;CAST;AAED,KAAK,uBAAuB,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,8CAA+C,uBAAuB,4CA2BpG,CAAC"}
1
+ {"version":3,"file":"SolidAgentChatItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/SolidAgentChatItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,4FAA4F;AAC5F,eAAO,MAAM,wBAAwB,cAAe,MAAM,KAAG,MAuB5D,CAAC;AAUF,KAAK,kBAAkB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC;AACxG,KAAK,kBAAkB,GAAG;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,CAAC;AAElD,2FAA2F;AAC3F,qBAAa,4BAA6B,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACrG,KAAK,EAAE,kBAAkB,CAAmB;IAE5C,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIjE,iBAAiB,CAAC,KAAK,EAAE,KAAK;IAI9B,kBAAkB,CAAC,IAAI,EAAE,kBAAkB;IAK3C,MAAM;CAST;AAED,KAAK,uBAAuB,GAAG;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,+DAAgE,uBAAuB,4CA4BrH,CAAC"}
@@ -124,7 +124,7 @@ export { SolidChatWidgetErrorBoundary };
124
124
  */
125
125
  export var SolidAgentChatItem = function (_a) {
126
126
  var _b, _c, _d, _e, _f;
127
- var item = _a.item, agentContext = _a.agentContext, onReply = _a.onReply, onPrompt = _a.onPrompt;
127
+ var item = _a.item, agentContext = _a.agentContext, showMessageMeta = _a.showMessageMeta, onReply = _a.onReply, onPrompt = _a.onPrompt;
128
128
  var isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);
129
129
  var content = (_b = item.eventData) === null || _b === void 0 ? void 0 : _b.content;
130
130
  var inline = useMemo(function () { return (isText ? parseWidgetContent(content) : null); }, [isText, content]);
@@ -139,6 +139,7 @@ export var SolidAgentChatItem = function (_a) {
139
139
  live: !!item.live,
140
140
  final: !!item.final,
141
141
  timestamp: item.at,
142
+ showMessageMeta: showMessageMeta,
142
143
  reply: function (value) { return onReply(widgetId, widgetName, value); },
143
144
  sendPrompt: onPrompt,
144
145
  agentContext: agentContext,
@@ -1 +1 @@
1
- {"version":3,"file":"SolidAgentChatItem.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/SolidAgentChatItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo } from \"react\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport styles from \"../SolidAgent.module.css\";\nimport { AgentEventTypes, type AgentChatItem, type AgentContext } from \"../types\";\nimport { parseWidgetContent } from \"./inlineWidget\";\n\nexport { parseWidgetContent, type InlineChatWidget } from \"./inlineWidget\";\n\n/** Registry name of the widget that renders an event when `event_data.widget` is absent. */\nexport const getDefaultChatWidgetName = (eventType: string): string => {\n switch (eventType) {\n case AgentEventTypes.userMessage:\n return \"DefaultUserMessageChatWidget\";\n case AgentEventTypes.llmToken:\n case AgentEventTypes.llmComplete:\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy:\n return \"DefaultAssistantMessageChatWidget\";\n case AgentEventTypes.toolCalling:\n return \"DefaultToolCallChatWidget\";\n case AgentEventTypes.agentError:\n case AgentEventTypes.error:\n return \"DefaultErrorChatWidget\";\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n return \"DefaultNoticeChatWidget\";\n case AgentEventTypes.agentStarted:\n case AgentEventTypes.stepStarted:\n return \"DefaultThinkingChatWidget\";\n default:\n return \"DefaultUnknownChatWidget\";\n }\n};\n\n/** Assistant text events whose content may carry a widget as JSON (see parseWidgetContent). */\nconst TEXT_EVENT_TYPES = new Set<string>([\n AgentEventTypes.llmToken,\n AgentEventTypes.llmComplete,\n AgentEventTypes.turnComplete,\n AgentEventTypes.turnCompleteLegacy,\n]);\n\ntype ErrorBoundaryProps = { widget: string; eventData: Record<string, any>; children: React.ReactNode };\ntype ErrorBoundaryState = { error: Error | null };\n\n/** Keeps a throwing widget inside its own bubble; the rest of the thread keeps working. */\nexport class SolidChatWidgetErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n componentDidCatch(error: Error) {\n console.error(`[solidAgent] chat widget \"${this.props.widget}\" failed to render`, error);\n }\n\n componentDidUpdate(prev: ErrorBoundaryProps) {\n // A later update of the same widget gets a fresh attempt.\n if (this.state.error && prev.eventData !== this.props.eventData) this.setState({ error: null });\n }\n\n render() {\n if (!this.state.error) return this.props.children;\n return (\n <div className={styles.widgetFallback} role=\"alert\">\n <span>The “{this.props.widget}” widget failed to render.</span>\n <pre className={styles.pre} style={{ maxHeight: 180 }}>{JSON.stringify(this.props.eventData, null, 2)}</pre>\n </div>\n );\n }\n}\n\ntype SolidAgentChatItemProps = {\n item: AgentChatItem;\n agentContext?: AgentContext;\n onReply: (widgetId: string, widget: string, value: unknown) => void;\n onPrompt: (text: string) => void;\n};\n\n/**\n * Renders one thread item. The widget named in `event_data.widget` wins; then a widget the agent\n * sent as its text reply (`{\"widgetName\", \"data\"}`, see parseWidgetContent; a reply that does not\n * parse renders as text, unchanged); otherwise the default widget for the event type. All resolve\n * through the extension registry, so a UI module can register new chat widgets or override a\n * default by registering the same name.\n */\nexport const SolidAgentChatItem = ({ item, agentContext, onReply, onPrompt }: SolidAgentChatItemProps) => {\n const isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);\n const content = item.eventData?.content;\n const inline = useMemo(() => (isText ? parseWidgetContent(content) : null), [isText, content]);\n\n const widgetName = item.widget ?? inline?.widget ?? getDefaultChatWidgetName(item.eventType);\n const DynamicWidget = getExtensionComponent(widgetName) ?? getExtensionComponent(\"DefaultUnknownChatWidget\");\n const widgetId = item.widgetId ?? item.id;\n const eventData = inline ? inline.data : item.eventData;\n\n const widgetProps: SolidChatWidgetProps = {\n eventType: item.eventType,\n eventData,\n widgetId,\n live: !!item.live,\n final: !!item.final,\n timestamp: item.at,\n reply: (value: unknown) => onReply(widgetId, widgetName, value),\n sendPrompt: onPrompt,\n agentContext,\n };\n\n return (\n <SolidChatWidgetErrorBoundary widget={widgetName} eventData={eventData}>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </SolidChatWidgetErrorBoundary>\n );\n};\n"]}
1
+ {"version":3,"file":"SolidAgentChatItem.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/thread/SolidAgentChatItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo } from \"react\";\nimport { getExtensionComponent } from \"../../../../helpers/registry\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport styles from \"../SolidAgent.module.css\";\nimport { AgentEventTypes, type AgentChatItem, type AgentContext } from \"../types\";\nimport { parseWidgetContent } from \"./inlineWidget\";\n\nexport { parseWidgetContent, type InlineChatWidget } from \"./inlineWidget\";\n\n/** Registry name of the widget that renders an event when `event_data.widget` is absent. */\nexport const getDefaultChatWidgetName = (eventType: string): string => {\n switch (eventType) {\n case AgentEventTypes.userMessage:\n return \"DefaultUserMessageChatWidget\";\n case AgentEventTypes.llmToken:\n case AgentEventTypes.llmComplete:\n case AgentEventTypes.turnComplete:\n case AgentEventTypes.turnCompleteLegacy:\n return \"DefaultAssistantMessageChatWidget\";\n case AgentEventTypes.toolCalling:\n return \"DefaultToolCallChatWidget\";\n case AgentEventTypes.agentError:\n case AgentEventTypes.error:\n return \"DefaultErrorChatWidget\";\n case AgentEventTypes.executionCancelled:\n case AgentEventTypes.executionCancelledLegacy:\n return \"DefaultNoticeChatWidget\";\n case AgentEventTypes.agentStarted:\n case AgentEventTypes.stepStarted:\n return \"DefaultThinkingChatWidget\";\n default:\n return \"DefaultUnknownChatWidget\";\n }\n};\n\n/** Assistant text events whose content may carry a widget as JSON (see parseWidgetContent). */\nconst TEXT_EVENT_TYPES = new Set<string>([\n AgentEventTypes.llmToken,\n AgentEventTypes.llmComplete,\n AgentEventTypes.turnComplete,\n AgentEventTypes.turnCompleteLegacy,\n]);\n\ntype ErrorBoundaryProps = { widget: string; eventData: Record<string, any>; children: React.ReactNode };\ntype ErrorBoundaryState = { error: Error | null };\n\n/** Keeps a throwing widget inside its own bubble; the rest of the thread keeps working. */\nexport class SolidChatWidgetErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = { error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { error };\n }\n\n componentDidCatch(error: Error) {\n console.error(`[solidAgent] chat widget \"${this.props.widget}\" failed to render`, error);\n }\n\n componentDidUpdate(prev: ErrorBoundaryProps) {\n // A later update of the same widget gets a fresh attempt.\n if (this.state.error && prev.eventData !== this.props.eventData) this.setState({ error: null });\n }\n\n render() {\n if (!this.state.error) return this.props.children;\n return (\n <div className={styles.widgetFallback} role=\"alert\">\n <span>The “{this.props.widget}” widget failed to render.</span>\n <pre className={styles.pre} style={{ maxHeight: 180 }}>{JSON.stringify(this.props.eventData, null, 2)}</pre>\n </div>\n );\n }\n}\n\ntype SolidAgentChatItemProps = {\n item: AgentChatItem;\n agentContext?: AgentContext;\n showMessageMeta?: boolean;\n onReply: (widgetId: string, widget: string, value: unknown) => void;\n onPrompt: (text: string) => void;\n};\n\n/**\n * Renders one thread item. The widget named in `event_data.widget` wins; then a widget the agent\n * sent as its text reply (`{\"widgetName\", \"data\"}`, see parseWidgetContent; a reply that does not\n * parse renders as text, unchanged); otherwise the default widget for the event type. All resolve\n * through the extension registry, so a UI module can register new chat widgets or override a\n * default by registering the same name.\n */\nexport const SolidAgentChatItem = ({ item, agentContext, showMessageMeta, onReply, onPrompt }: SolidAgentChatItemProps) => {\n const isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);\n const content = item.eventData?.content;\n const inline = useMemo(() => (isText ? parseWidgetContent(content) : null), [isText, content]);\n\n const widgetName = item.widget ?? inline?.widget ?? getDefaultChatWidgetName(item.eventType);\n const DynamicWidget = getExtensionComponent(widgetName) ?? getExtensionComponent(\"DefaultUnknownChatWidget\");\n const widgetId = item.widgetId ?? item.id;\n const eventData = inline ? inline.data : item.eventData;\n\n const widgetProps: SolidChatWidgetProps = {\n eventType: item.eventType,\n eventData,\n widgetId,\n live: !!item.live,\n final: !!item.final,\n timestamp: item.at,\n showMessageMeta,\n reply: (value: unknown) => onReply(widgetId, widgetName, value),\n sendPrompt: onPrompt,\n agentContext,\n };\n\n return (\n <SolidChatWidgetErrorBoundary widget={widgetName} eventData={eventData}>\n {DynamicWidget && <DynamicWidget {...widgetProps} />}\n </SolidChatWidgetErrorBoundary>\n );\n};\n"]}
@@ -75,6 +75,7 @@ export class SolidChatWidgetErrorBoundary extends React.Component<ErrorBoundaryP
75
75
  type SolidAgentChatItemProps = {
76
76
  item: AgentChatItem;
77
77
  agentContext?: AgentContext;
78
+ showMessageMeta?: boolean;
78
79
  onReply: (widgetId: string, widget: string, value: unknown) => void;
79
80
  onPrompt: (text: string) => void;
80
81
  };
@@ -86,7 +87,7 @@ type SolidAgentChatItemProps = {
86
87
  * through the extension registry, so a UI module can register new chat widgets or override a
87
88
  * default by registering the same name.
88
89
  */
89
- export const SolidAgentChatItem = ({ item, agentContext, onReply, onPrompt }: SolidAgentChatItemProps) => {
90
+ export const SolidAgentChatItem = ({ item, agentContext, showMessageMeta, onReply, onPrompt }: SolidAgentChatItemProps) => {
90
91
  const isText = !item.widget && TEXT_EVENT_TYPES.has(item.eventType);
91
92
  const content = item.eventData?.content;
92
93
  const inline = useMemo(() => (isText ? parseWidgetContent(content) : null), [isText, content]);
@@ -103,6 +104,7 @@ export const SolidAgentChatItem = ({ item, agentContext, onReply, onPrompt }: So
103
104
  live: !!item.live,
104
105
  final: !!item.final,
105
106
  timestamp: item.at,
107
+ showMessageMeta,
106
108
  reply: (value: unknown) => onReply(widgetId, widgetName, value),
107
109
  sendPrompt: onPrompt,
108
110
  agentContext,
@@ -1,3 +1,4 @@
1
+ import type { AgentChatWidgetMetadata } from "../../../types/extension-registry";
1
2
  /**
2
3
  * Shared types for the SolidX Agent chat (launcher, window, thread).
3
4
  *
@@ -111,9 +112,11 @@ export type AgentUploadedAttachment = {
111
112
  };
112
113
  export type AgentAction = {
113
114
  action: "start_session";
115
+ widget_catalog?: AgentChatWidgetMetadata[];
114
116
  } | {
115
117
  action: "resume_session";
116
118
  session_id: string;
119
+ widget_catalog?: AgentChatWidgetMetadata[];
117
120
  } | {
118
121
  action: "message";
119
122
  session_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/types.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,3 @@
1
- /**
2
- * Shared types for the SolidX Agent chat (launcher, window, thread).
3
- *
4
- * Wire format: every agent payload carries `event_type` and `event_data`. When
5
- * `event_data.widget` names a registered chat widget, that widget renders the event;
6
- * otherwise the event is rendered by the default widget for its `event_type`.
7
- * (Legacy frames `{ type, data }` are normalised to the same shape.)
8
- * The widget contract itself (SolidChatWidgetProps) lives in types/solid-core.d.ts.
9
- */
10
1
  /** Event types the chat knows by name. Anything else is still rendered (via its widget or the fallback). */
11
2
  export var AgentEventTypes = {
12
3
  sessionStarted: "session_started",
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiDH,4GAA4G;AAC5G,MAAM,CAAC,IAAM,eAAe,GAAG;IAC3B,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,eAAe;IACnC,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,qBAAqB;IAC/C,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACR,CAAC","sourcesContent":["/**\n * Shared types for the SolidX Agent chat (launcher, window, thread).\n *\n * Wire format: every agent payload carries `event_type` and `event_data`. When\n * `event_data.widget` names a registered chat widget, that widget renders the event;\n * otherwise the event is rendered by the default widget for its `event_type`.\n * (Legacy frames `{ type, data }` are normalised to the same shape.)\n * The widget contract itself (SolidChatWidgetProps) lives in types/solid-core.d.ts.\n */\n\n/** Page context passed with a prompt so the agent knows where the user is. */\nexport type AgentContext = {\n module?: string;\n model?: string;\n recordId?: string | number;\n route?: string;\n [key: string]: unknown;\n};\n\nexport type AgentMode = \"bubble\" | \"compact\" | \"docked\" | \"maximized\";\n\n/**\n * Which agent backend a chat talks to: \"solidx\" (setting solidxAgentBackendUrl; the floating\n * launcher) or \"agentHub\" (setting solidxAgentHubBackendUrl).\n */\nexport type AgentRuntimeType = \"solidx\" | \"agentHub\";\nexport type AgentModelAssignment = { provider: string; model: string } | null;\nexport type AgentModelAssignments = { reasoning: AgentModelAssignment; fast: AgentModelAssignment };\n/** @deprecated Use AgentRuntimeType. */\nexport type AgentType = AgentRuntimeType;\n\nexport type AgentConnection = \"idle\" | \"connecting\" | \"open\" | \"reconnecting\" | \"offline\";\n\n/** A slash command advertised by the agent in `session_started`. */\nexport type AgentCommand = { name: string; description?: string };\n\n// ── Inbound ───────────────────────────────────────────────────────────────────\n\n/** A frame as it arrives on the socket or from session history (before normalisation). */\nexport type AgentWireFrame = {\n event_type?: string;\n event_data?: Record<string, any>;\n type?: string;\n data?: Record<string, any>;\n session_id?: string;\n history_session_id?: string;\n [key: string]: any;\n};\n\n/** The normalised event every reducer and widget works with. */\nexport type AgentChatEvent = {\n eventType: string;\n eventData: Record<string, any>;\n /** Top-level fields of the frame (session_id, history_session_id, commands, ...). */\n frame: AgentWireFrame;\n};\n\n/** Event types the chat knows by name. Anything else is still rendered (via its widget or the fallback). */\nexport const AgentEventTypes = {\n sessionStarted: \"session_started\",\n sessionEnded: \"session_ended\",\n userMessage: \"UserMessage\",\n agentStarted: \"AgentStarted\",\n stepStarted: \"StepStarted\",\n stepComplete: \"StepComplete\",\n llmToken: \"LlmToken\",\n llmComplete: \"LlmComplete\",\n toolCalling: \"ToolCalling\",\n toolProgress: \"ToolProgress\",\n toolResult: \"ToolResult\",\n turnComplete: \"TurnCompleteEvent\",\n turnCompleteLegacy: \"turn_complete\",\n agentComplete: \"AgentComplete\",\n executionCancelled: \"ExecutionCancelled\",\n executionCancelledLegacy: \"execution_cancelled\",\n agentError: \"AgentError\",\n error: \"error\",\n} as const;\n\n// ── Outbound ──────────────────────────────────────────────────────────────────\n\nexport type WidgetReply = { widgetId: string; value: unknown };\n\n/** A file sent inline with a message: text files as text, images base64-encoded (no data: prefix). */\nexport type AgentAttachmentPayload = {\n name: string;\n mimeType: string;\n size: number;\n encoding: \"text\" | \"base64\";\n content: string;\n};\n\n/** What the thread shows for an attachment (history only has name/type/size). */\nexport type AgentAttachmentMeta = {\n mediaId?: number;\n name: string;\n mimeType: string;\n size: number;\n /** data: URL for image thumbnails of files attached in this browser session. */\n previewUrl?: string;\n /** Stored copy in Solid media storage (resolved when a conversation is reopened). */\n url?: string;\n};\n\nexport type AgentAttachment = { payload: AgentAttachmentPayload; meta: AgentAttachmentMeta; file: File };\nexport type AgentUploadedAttachment = { id: number; name: string; mimeType: string; size: number };\n\nexport type AgentAction =\n | { action: \"start_session\" }\n | { action: \"resume_session\"; session_id: string }\n | {\n action: \"message\";\n session_id: string;\n content: string;\n context?: AgentContext;\n inputs?: Record<string, unknown>;\n widget_reply?: WidgetReply | null;\n attachments?: AgentAttachmentPayload[] | AgentUploadedAttachment[];\n }\n | { action: \"cancel\"; session_id: string }\n | { action: \"end_session\"; session_id: string };\n\n// ── Thread items ──────────────────────────────────────────────────────────────\n\n/**\n * One rendered entry in the thread. `eventData` is the (accumulated) event payload handed to\n * the widget; `widget` is set when the agent named one, otherwise the default for `eventType`.\n */\nexport type AgentChatItem = {\n id: string;\n at: number;\n eventType: string;\n eventData: Record<string, any>;\n widget?: string;\n widgetId?: string;\n /** Live items (a running tool, a streaming reply) are still updating. */\n live?: boolean;\n /** A final widget accepts no more updates or replies. */\n final?: boolean;\n};\n\n/** Options for `solidAgent.open`. */\nexport type SolidAgentOpenOptions = {\n prompt?: string;\n autoSend?: boolean;\n context?: AgentContext;\n mode?: Exclude<AgentMode, \"bubble\">;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/core/solid-agent/types.ts"],"names":[],"mappings":"AA2DA,4GAA4G;AAC5G,MAAM,CAAC,IAAM,eAAe,GAAG;IAC3B,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,mBAAmB;IACjC,kBAAkB,EAAE,eAAe;IACnC,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,qBAAqB;IAC/C,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACR,CAAC","sourcesContent":["import type { AgentChatWidgetMetadata } from \"../../../types/extension-registry\";\n\n/**\n * Shared types for the SolidX Agent chat (launcher, window, thread).\n *\n * Wire format: every agent payload carries `event_type` and `event_data`. When\n * `event_data.widget` names a registered chat widget, that widget renders the event;\n * otherwise the event is rendered by the default widget for its `event_type`.\n * (Legacy frames `{ type, data }` are normalised to the same shape.)\n * The widget contract itself (SolidChatWidgetProps) lives in types/solid-core.d.ts.\n */\n\n/** Page context passed with a prompt so the agent knows where the user is. */\nexport type AgentContext = {\n module?: string;\n model?: string;\n recordId?: string | number;\n route?: string;\n [key: string]: unknown;\n};\n\nexport type AgentMode = \"bubble\" | \"compact\" | \"docked\" | \"maximized\";\n\n/**\n * Which agent backend a chat talks to: \"solidx\" (setting solidxAgentBackendUrl; the floating\n * launcher) or \"agentHub\" (setting solidxAgentHubBackendUrl).\n */\nexport type AgentRuntimeType = \"solidx\" | \"agentHub\";\nexport type AgentModelAssignment = { provider: string; model: string } | null;\nexport type AgentModelAssignments = { reasoning: AgentModelAssignment; fast: AgentModelAssignment };\n/** @deprecated Use AgentRuntimeType. */\nexport type AgentType = AgentRuntimeType;\n\nexport type AgentConnection = \"idle\" | \"connecting\" | \"open\" | \"reconnecting\" | \"offline\";\n\n/** A slash command advertised by the agent in `session_started`. */\nexport type AgentCommand = { name: string; description?: string };\n\n// ── Inbound ───────────────────────────────────────────────────────────────────\n\n/** A frame as it arrives on the socket or from session history (before normalisation). */\nexport type AgentWireFrame = {\n event_type?: string;\n event_data?: Record<string, any>;\n type?: string;\n data?: Record<string, any>;\n session_id?: string;\n history_session_id?: string;\n [key: string]: any;\n};\n\n/** The normalised event every reducer and widget works with. */\nexport type AgentChatEvent = {\n eventType: string;\n eventData: Record<string, any>;\n /** Top-level fields of the frame (session_id, history_session_id, commands, ...). */\n frame: AgentWireFrame;\n};\n\n/** Event types the chat knows by name. Anything else is still rendered (via its widget or the fallback). */\nexport const AgentEventTypes = {\n sessionStarted: \"session_started\",\n sessionEnded: \"session_ended\",\n userMessage: \"UserMessage\",\n agentStarted: \"AgentStarted\",\n stepStarted: \"StepStarted\",\n stepComplete: \"StepComplete\",\n llmToken: \"LlmToken\",\n llmComplete: \"LlmComplete\",\n toolCalling: \"ToolCalling\",\n toolProgress: \"ToolProgress\",\n toolResult: \"ToolResult\",\n turnComplete: \"TurnCompleteEvent\",\n turnCompleteLegacy: \"turn_complete\",\n agentComplete: \"AgentComplete\",\n executionCancelled: \"ExecutionCancelled\",\n executionCancelledLegacy: \"execution_cancelled\",\n agentError: \"AgentError\",\n error: \"error\",\n} as const;\n\n// ── Outbound ──────────────────────────────────────────────────────────────────\n\nexport type WidgetReply = { widgetId: string; value: unknown };\n\n/** A file sent inline with a message: text files as text, images base64-encoded (no data: prefix). */\nexport type AgentAttachmentPayload = {\n name: string;\n mimeType: string;\n size: number;\n encoding: \"text\" | \"base64\";\n content: string;\n};\n\n/** What the thread shows for an attachment (history only has name/type/size). */\nexport type AgentAttachmentMeta = {\n mediaId?: number;\n name: string;\n mimeType: string;\n size: number;\n /** data: URL for image thumbnails of files attached in this browser session. */\n previewUrl?: string;\n /** Stored copy in Solid media storage (resolved when a conversation is reopened). */\n url?: string;\n};\n\nexport type AgentAttachment = { payload: AgentAttachmentPayload; meta: AgentAttachmentMeta; file: File };\nexport type AgentUploadedAttachment = { id: number; name: string; mimeType: string; size: number };\n\nexport type AgentAction =\n | { action: \"start_session\"; widget_catalog?: AgentChatWidgetMetadata[] }\n | { action: \"resume_session\"; session_id: string; widget_catalog?: AgentChatWidgetMetadata[] }\n | {\n action: \"message\";\n session_id: string;\n content: string;\n context?: AgentContext;\n inputs?: Record<string, unknown>;\n widget_reply?: WidgetReply | null;\n attachments?: AgentAttachmentPayload[] | AgentUploadedAttachment[];\n }\n | { action: \"cancel\"; session_id: string }\n | { action: \"end_session\"; session_id: string };\n\n// ── Thread items ──────────────────────────────────────────────────────────────\n\n/**\n * One rendered entry in the thread. `eventData` is the (accumulated) event payload handed to\n * the widget; `widget` is set when the agent named one, otherwise the default for `eventType`.\n */\nexport type AgentChatItem = {\n id: string;\n at: number;\n eventType: string;\n eventData: Record<string, any>;\n widget?: string;\n widgetId?: string;\n /** Live items (a running tool, a streaming reply) are still updating. */\n live?: boolean;\n /** A final widget accepts no more updates or replies. */\n final?: boolean;\n};\n\n/** Options for `solidAgent.open`. */\nexport type SolidAgentOpenOptions = {\n prompt?: string;\n autoSend?: boolean;\n context?: AgentContext;\n mode?: Exclude<AgentMode, \"bubble\">;\n};\n"]}
@@ -1,3 +1,5 @@
1
+ import type { AgentChatWidgetMetadata } from "../../../types/extension-registry";
2
+
1
3
  /**
2
4
  * Shared types for the SolidX Agent chat (launcher, window, thread).
3
5
  *
@@ -106,8 +108,8 @@ export type AgentAttachment = { payload: AgentAttachmentPayload; meta: AgentAtta
106
108
  export type AgentUploadedAttachment = { id: number; name: string; mimeType: string; size: number };
107
109
 
108
110
  export type AgentAction =
109
- | { action: "start_session" }
110
- | { action: "resume_session"; session_id: string }
111
+ | { action: "start_session"; widget_catalog?: AgentChatWidgetMetadata[] }
112
+ | { action: "resume_session"; session_id: string; widget_catalog?: AgentChatWidgetMetadata[] }
111
113
  | {
112
114
  action: "message";
113
115
  session_id: string;
@@ -3,5 +3,5 @@ import { SolidChatWidgetProps } from "../../../../types/solid-core";
3
3
  * Default widget for `LlmComplete` / streamed `LlmToken` / `TurnCompleteEvent` text: the agent's
4
4
  * reply as markdown in a bordered bubble, with a blinking cursor while it streams.
5
5
  */
6
- export declare const DefaultAssistantMessageChatWidget: ({ eventData, live, timestamp }: SolidChatWidgetProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const DefaultAssistantMessageChatWidget: ({ eventData, live, timestamp, showMessageMeta }: SolidChatWidgetProps) => import("react/jsx-runtime").JSX.Element;
7
7
  //# sourceMappingURL=DefaultAssistantMessageChatWidget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultAssistantMessageChatWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE;;;GAGG;AACH,eAAO,MAAM,iCAAiC,mCAAoC,oBAAoB,4CAcrG,CAAC"}
1
+ {"version":3,"file":"DefaultAssistantMessageChatWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE;;;GAGG;AACH,eAAO,MAAM,iCAAiC,oDAA4D,oBAAoB,4CAgB7H,CAAC"}
@@ -8,8 +8,11 @@ import { formatChatTime } from "./chatWidgetUtils";
8
8
  */
9
9
  export var DefaultAssistantMessageChatWidget = function (_a) {
10
10
  var _b;
11
- var eventData = _a.eventData, live = _a.live, timestamp = _a.timestamp;
11
+ var eventData = _a.eventData, live = _a.live, timestamp = _a.timestamp, _c = _a.showMessageMeta, showMessageMeta = _c === void 0 ? true : _c;
12
12
  var content = String((_b = eventData.content) !== null && _b !== void 0 ? _b : "");
13
- return (_jsxs("div", { className: styles.BubbleGroup, children: [_jsxs("div", { className: "".concat(styles.Bubble, " ").concat(styles.BubbleAssistant, " ").concat(live ? styles.BubbleStreaming : ""), children: [_jsx(SolidAgentMarkdown, { text: content }), live && _jsx("span", { className: styles.StreamingCursor })] }), _jsxs("div", { className: "".concat(styles.BubbleMeta, " ").concat(styles.BubbleMetaAssistant), children: [_jsx("span", { className: styles.Timestamp, children: formatChatTime(timestamp) }), _jsx(SolidAgentMessageCopyButton, { text: content })] })] }));
13
+ return (_jsxs("div", { className: styles.BubbleGroup, children: [_jsxs("div", { className: "".concat(styles.Bubble, " ").concat(styles.BubbleAssistant, " ").concat(live ? styles.BubbleStreaming : ""), children: [_jsx(SolidAgentMarkdown, { text: content }), live && _jsx("span", { className: styles.StreamingCursor })] }), showMessageMeta && (_jsxs("div", { className: "".concat(styles.BubbleMeta, " ").concat(styles.BubbleMetaAssistant), children: [_jsx("span", { className: styles.Timestamp, children: formatChatTime(timestamp) }), _jsx(SolidAgentMessageCopyButton, { text: content })] }))] }));
14
14
  };
15
+ Object.assign(DefaultAssistantMessageChatWidget, { getExtensionMetadata: function () { return ({
16
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
17
+ }); } });
15
18
  //# sourceMappingURL=DefaultAssistantMessageChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultAssistantMessageChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,EAAoD;;QAAlD,SAAS,eAAA,EAAE,IAAI,UAAA,EAAE,SAAS,eAAA;IAC1E,IAAM,OAAO,GAAG,MAAM,CAAC,MAAA,SAAS,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,WAAW,aAC9B,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,MAAM,cAAI,MAAM,CAAC,eAAe,cAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAE,aAC9F,KAAC,kBAAkB,IAAC,IAAI,EAAE,OAAO,GAAI,EACpC,IAAI,IAAI,eAAM,SAAS,EAAE,MAAM,CAAC,eAAe,GAAI,IAClD,EACN,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,UAAU,cAAI,MAAM,CAAC,mBAAmB,CAAE,aAChE,eAAM,SAAS,EAAE,MAAM,CAAC,SAAS,YAAG,cAAc,CAAC,SAAS,CAAC,GAAQ,EACrE,KAAC,2BAA2B,IAAC,IAAI,EAAE,OAAO,GAAI,IAC5C,IACJ,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidAgentMarkdown, SolidAgentMessageCopyButton } from \"../SolidAgentMarkdown\";\nimport { formatChatTime } from \"./chatWidgetUtils\";\n\n/**\n * Default widget for `LlmComplete` / streamed `LlmToken` / `TurnCompleteEvent` text: the agent's\n * reply as markdown in a bordered bubble, with a blinking cursor while it streams.\n */\nexport const DefaultAssistantMessageChatWidget = ({ eventData, live, timestamp }: SolidChatWidgetProps) => {\n const content = String(eventData.content ?? \"\");\n return (\n <div className={styles.BubbleGroup}>\n <div className={`${styles.Bubble} ${styles.BubbleAssistant} ${live ? styles.BubbleStreaming : \"\"}`}>\n <SolidAgentMarkdown text={content} />\n {live && <span className={styles.StreamingCursor} />}\n </div>\n <div className={`${styles.BubbleMeta} ${styles.BubbleMetaAssistant}`}>\n <span className={styles.Timestamp}>{formatChatTime(timestamp)}</span>\n <SolidAgentMessageCopyButton text={content} />\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DefaultAssistantMessageChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,IAAM,iCAAiC,GAAG,UAAC,EAA4E;;QAA1E,SAAS,eAAA,EAAE,IAAI,UAAA,EAAE,SAAS,eAAA,EAAE,uBAAsB,EAAtB,eAAe,mBAAG,IAAI,KAAA;IAClG,IAAM,OAAO,GAAG,MAAM,CAAC,MAAA,SAAS,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,WAAW,aAC9B,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,MAAM,cAAI,MAAM,CAAC,eAAe,cAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAE,aAC9F,KAAC,kBAAkB,IAAC,IAAI,EAAE,OAAO,GAAI,EACpC,IAAI,IAAI,eAAM,SAAS,EAAE,MAAM,CAAC,eAAe,GAAI,IAClD,EACL,eAAe,IAAI,CAChB,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,UAAU,cAAI,MAAM,CAAC,mBAAmB,CAAE,aAChE,eAAM,SAAS,EAAE,MAAM,CAAC,SAAS,YAAG,cAAc,CAAC,SAAS,CAAC,GAAQ,EACrE,KAAC,2BAA2B,IAAC,IAAI,EAAE,OAAO,GAAI,IAC5C,CACT,IACC,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,iCAAiC,EAAE,EAAE,oBAAoB,EAAE,cAAM,OAAA,CAAC;QAC5E,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,EAAE;KACtE,CAAC,EAF6E,CAE7E,EAAE,CAAC,CAAC","sourcesContent":["import styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidAgentMarkdown, SolidAgentMessageCopyButton } from \"../SolidAgentMarkdown\";\nimport { formatChatTime } from \"./chatWidgetUtils\";\n\n/**\n * Default widget for `LlmComplete` / streamed `LlmToken` / `TurnCompleteEvent` text: the agent's\n * reply as markdown in a bordered bubble, with a blinking cursor while it streams.\n */\nexport const DefaultAssistantMessageChatWidget = ({ eventData, live, timestamp, showMessageMeta = true }: SolidChatWidgetProps) => {\n const content = String(eventData.content ?? \"\");\n return (\n <div className={styles.BubbleGroup}>\n <div className={`${styles.Bubble} ${styles.BubbleAssistant} ${live ? styles.BubbleStreaming : \"\"}`}>\n <SolidAgentMarkdown text={content} />\n {live && <span className={styles.StreamingCursor} />}\n </div>\n {showMessageMeta && (\n <div className={`${styles.BubbleMeta} ${styles.BubbleMetaAssistant}`}>\n <span className={styles.Timestamp}>{formatChatTime(timestamp)}</span>\n <SolidAgentMessageCopyButton text={content} />\n </div>\n )}\n </div>\n );\n};\n\nObject.assign(DefaultAssistantMessageChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -7,7 +7,7 @@ import { formatChatTime } from "./chatWidgetUtils";
7
7
  * Default widget for `LlmComplete` / streamed `LlmToken` / `TurnCompleteEvent` text: the agent's
8
8
  * reply as markdown in a bordered bubble, with a blinking cursor while it streams.
9
9
  */
10
- export const DefaultAssistantMessageChatWidget = ({ eventData, live, timestamp }: SolidChatWidgetProps) => {
10
+ export const DefaultAssistantMessageChatWidget = ({ eventData, live, timestamp, showMessageMeta = true }: SolidChatWidgetProps) => {
11
11
  const content = String(eventData.content ?? "");
12
12
  return (
13
13
  <div className={styles.BubbleGroup}>
@@ -15,10 +15,16 @@ export const DefaultAssistantMessageChatWidget = ({ eventData, live, timestamp }
15
15
  <SolidAgentMarkdown text={content} />
16
16
  {live && <span className={styles.StreamingCursor} />}
17
17
  </div>
18
- <div className={`${styles.BubbleMeta} ${styles.BubbleMetaAssistant}`}>
19
- <span className={styles.Timestamp}>{formatChatTime(timestamp)}</span>
20
- <SolidAgentMessageCopyButton text={content} />
21
- </div>
18
+ {showMessageMeta && (
19
+ <div className={`${styles.BubbleMeta} ${styles.BubbleMetaAssistant}`}>
20
+ <span className={styles.Timestamp}>{formatChatTime(timestamp)}</span>
21
+ <SolidAgentMessageCopyButton text={content} />
22
+ </div>
23
+ )}
22
24
  </div>
23
25
  );
24
26
  };
27
+
28
+ Object.assign(DefaultAssistantMessageChatWidget, { getExtensionMetadata: () => ({
29
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
30
+ }) });
@@ -12,4 +12,7 @@ export var DefaultErrorChatWidget = function (_a) {
12
12
  var data = getChatWidgetData(eventData);
13
13
  return (_jsxs("div", { className: styles.ErrorBubble, role: "alert", children: [_jsx("div", { className: styles.ErrorIcon, children: _jsx(AlertCircle, { size: 13 }) }), _jsxs("div", { className: styles.ErrorContent, children: [_jsx("p", { className: styles.ErrorTitle, children: "Error" }), _jsx("p", { className: styles.ErrorText, children: (_c = (_b = data.error) !== null && _b !== void 0 ? _b : data.message) !== null && _c !== void 0 ? _c : "Unknown error" }), data.retryPrompt && (_jsx("button", { type: "button", className: styles.CodeCopyBtn, style: { marginTop: 6, paddingLeft: 0 }, onClick: function () { return sendPrompt(data.retryPrompt); }, children: "Retry" }))] })] }));
14
14
  };
15
+ Object.assign(DefaultErrorChatWidget, { getExtensionMetadata: function () { return ({
16
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
17
+ }); } });
15
18
  //# sourceMappingURL=DefaultErrorChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultErrorChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,IAAM,sBAAsB,GAAG,UAAC,EAA+C;;QAA7C,SAAS,eAAA,EAAE,UAAU,gBAAA;IAC1D,IAAM,IAAI,GAAG,iBAAiB,CAA6D,SAAS,CAAC,CAAC;IACtG,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAC,OAAO,aAC5C,cAAK,SAAS,EAAE,MAAM,CAAC,SAAS,YAC5B,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,GACvB,EACN,eAAK,SAAS,EAAE,MAAM,CAAC,YAAY,aAC/B,YAAG,SAAS,EAAE,MAAM,CAAC,UAAU,sBAAW,EAC1C,YAAG,SAAS,EAAE,MAAM,CAAC,SAAS,YAAG,MAAA,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,OAAO,mCAAI,eAAe,GAAK,EAClF,IAAI,CAAC,WAAW,IAAI,CACjB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,WAAY,CAAC,EAA7B,CAA6B,sBAEjI,CACZ,IACC,IACJ,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { AlertCircle } from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { getChatWidgetData } from \"./chatWidgetUtils\";\n\n/**\n * Default widget for `AgentError` / `error`: red \"Error\" bubble. Also usable by name (\"error\")\n * with `{ message, retryPrompt }`; Retry posts `retryPrompt` as a new user message.\n */\nexport const DefaultErrorChatWidget = ({ eventData, sendPrompt }: SolidChatWidgetProps) => {\n const data = getChatWidgetData<{ error?: string; message?: string; retryPrompt?: string }>(eventData);\n return (\n <div className={styles.ErrorBubble} role=\"alert\">\n <div className={styles.ErrorIcon}>\n <AlertCircle size={13} />\n </div>\n <div className={styles.ErrorContent}>\n <p className={styles.ErrorTitle}>Error</p>\n <p className={styles.ErrorText}>{data.error ?? data.message ?? \"Unknown error\"}</p>\n {data.retryPrompt && (\n <button type=\"button\" className={styles.CodeCopyBtn} style={{ marginTop: 6, paddingLeft: 0 }} onClick={() => sendPrompt(data.retryPrompt!)}>\n Retry\n </button>\n )}\n </div>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DefaultErrorChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,IAAM,sBAAsB,GAAG,UAAC,EAA+C;;QAA7C,SAAS,eAAA,EAAE,UAAU,gBAAA;IAC1D,IAAM,IAAI,GAAG,iBAAiB,CAA6D,SAAS,CAAC,CAAC;IACtG,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAC,OAAO,aAC5C,cAAK,SAAS,EAAE,MAAM,CAAC,SAAS,YAC5B,KAAC,WAAW,IAAC,IAAI,EAAE,EAAE,GAAI,GACvB,EACN,eAAK,SAAS,EAAE,MAAM,CAAC,YAAY,aAC/B,YAAG,SAAS,EAAE,MAAM,CAAC,UAAU,sBAAW,EAC1C,YAAG,SAAS,EAAE,MAAM,CAAC,SAAS,YAAG,MAAA,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,OAAO,mCAAI,eAAe,GAAK,EAClF,IAAI,CAAC,WAAW,IAAI,CACjB,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,WAAY,CAAC,EAA7B,CAA6B,sBAEjI,CACZ,IACC,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,oBAAoB,EAAE,cAAM,OAAA,CAAC;QACjE,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,EAAE;KACtE,CAAC,EAFkE,CAElE,EAAE,CAAC,CAAC","sourcesContent":["import { AlertCircle } from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { getChatWidgetData } from \"./chatWidgetUtils\";\n\n/**\n * Default widget for `AgentError` / `error`: red \"Error\" bubble. Also usable by name (\"error\")\n * with `{ message, retryPrompt }`; Retry posts `retryPrompt` as a new user message.\n */\nexport const DefaultErrorChatWidget = ({ eventData, sendPrompt }: SolidChatWidgetProps) => {\n const data = getChatWidgetData<{ error?: string; message?: string; retryPrompt?: string }>(eventData);\n return (\n <div className={styles.ErrorBubble} role=\"alert\">\n <div className={styles.ErrorIcon}>\n <AlertCircle size={13} />\n </div>\n <div className={styles.ErrorContent}>\n <p className={styles.ErrorTitle}>Error</p>\n <p className={styles.ErrorText}>{data.error ?? data.message ?? \"Unknown error\"}</p>\n {data.retryPrompt && (\n <button type=\"button\" className={styles.CodeCopyBtn} style={{ marginTop: 6, paddingLeft: 0 }} onClick={() => sendPrompt(data.retryPrompt!)}>\n Retry\n </button>\n )}\n </div>\n </div>\n );\n};\n\nObject.assign(DefaultErrorChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -26,3 +26,7 @@ export const DefaultErrorChatWidget = ({ eventData, sendPrompt }: SolidChatWidge
26
26
  </div>
27
27
  );
28
28
  };
29
+
30
+ Object.assign(DefaultErrorChatWidget, { getExtensionMetadata: () => ({
31
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
32
+ }) });
@@ -17,4 +17,7 @@ export var DefaultNoticeChatWidget = function (props) {
17
17
  var message = String((_b = (_a = props.eventData.message) !== null && _a !== void 0 ? _a : props.eventData.content) !== null && _b !== void 0 ? _b : "Execution stopped by user.");
18
18
  return _jsx(DefaultAssistantMessageChatWidget, __assign({}, props, { live: false, eventData: { content: message } }));
19
19
  };
20
+ Object.assign(DefaultNoticeChatWidget, { getExtensionMetadata: function () { return ({
21
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
22
+ }); } });
20
23
  //# sourceMappingURL=DefaultNoticeChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultNoticeChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAExF,wGAAwG;AACxG,MAAM,CAAC,IAAM,uBAAuB,GAAG,UAAC,KAA2B;;IAC/D,IAAM,OAAO,GAAG,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,SAAS,CAAC,OAAO,mCAAI,KAAK,CAAC,SAAS,CAAC,OAAO,mCAAI,4BAA4B,CAAC,CAAC;IAC3G,OAAO,KAAC,iCAAiC,eAAK,KAAK,IAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1G,CAAC,CAAC","sourcesContent":["import { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { DefaultAssistantMessageChatWidget } from \"./DefaultAssistantMessageChatWidget\";\n\n/** Default widget for `ExecutionCancelled`: shown as an agent bubble (\"Execution stopped by user.\"). */\nexport const DefaultNoticeChatWidget = (props: SolidChatWidgetProps) => {\n const message = String(props.eventData.message ?? props.eventData.content ?? \"Execution stopped by user.\");\n return <DefaultAssistantMessageChatWidget {...props} live={false} eventData={{ content: message }} />;\n};\n"]}
1
+ {"version":3,"file":"DefaultNoticeChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAExF,wGAAwG;AACxG,MAAM,CAAC,IAAM,uBAAuB,GAAG,UAAC,KAA2B;;IAC/D,IAAM,OAAO,GAAG,MAAM,CAAC,MAAA,MAAA,KAAK,CAAC,SAAS,CAAC,OAAO,mCAAI,KAAK,CAAC,SAAS,CAAC,OAAO,mCAAI,4BAA4B,CAAC,CAAC;IAC3G,OAAO,KAAC,iCAAiC,eAAK,KAAK,IAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAC1G,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,oBAAoB,EAAE,cAAM,OAAA,CAAC;QAClE,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,EAAE;KACtE,CAAC,EAFmE,CAEnE,EAAE,CAAC,CAAC","sourcesContent":["import { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { DefaultAssistantMessageChatWidget } from \"./DefaultAssistantMessageChatWidget\";\n\n/** Default widget for `ExecutionCancelled`: shown as an agent bubble (\"Execution stopped by user.\"). */\nexport const DefaultNoticeChatWidget = (props: SolidChatWidgetProps) => {\n const message = String(props.eventData.message ?? props.eventData.content ?? \"Execution stopped by user.\");\n return <DefaultAssistantMessageChatWidget {...props} live={false} eventData={{ content: message }} />;\n};\n\nObject.assign(DefaultNoticeChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -6,3 +6,7 @@ export const DefaultNoticeChatWidget = (props: SolidChatWidgetProps) => {
6
6
  const message = String(props.eventData.message ?? props.eventData.content ?? "Execution stopped by user.");
7
7
  return <DefaultAssistantMessageChatWidget {...props} live={false} eventData={{ content: message }} />;
8
8
  };
9
+
10
+ Object.assign(DefaultNoticeChatWidget, { getExtensionMetadata: () => ({
11
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
12
+ }) });
@@ -8,4 +8,7 @@ import styles from "./solidChatWidgets.module.css";
8
8
  export var DefaultThinkingChatWidget = function (_props) {
9
9
  return (_jsxs("div", { className: styles.ThinkingBubble, role: "status", children: [_jsx(Sparkles, { size: 14, className: styles.ThinkingSparkle, "aria-hidden": "true" }), _jsx("span", { className: styles.ThinkingLabel, children: "Thinking\u2026" })] }));
10
10
  };
11
+ Object.assign(DefaultThinkingChatWidget, { getExtensionMetadata: function () { return ({
12
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
13
+ }); } });
11
14
  //# sourceMappingURL=DefaultThinkingChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultThinkingChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAGnD;;;GAGG;AACH,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,MAA4B;IAClE,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,EAAC,QAAQ,aAChD,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,eAAe,iBAAc,MAAM,GAAG,EAC5E,eAAM,SAAS,EAAE,MAAM,CAAC,aAAa,+BAAkB,IACrD,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import { Sparkles } from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\n\n/**\n * Default widget for an active `AgentStarted` / `StepStarted`: a compact shimmer status,\n * rendered by the thread only while the agent is thinking.\n */\nexport const DefaultThinkingChatWidget = (_props: SolidChatWidgetProps) => {\n return (\n <div className={styles.ThinkingBubble} role=\"status\">\n <Sparkles size={14} className={styles.ThinkingSparkle} aria-hidden=\"true\" />\n <span className={styles.ThinkingLabel}>Thinking…</span>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DefaultThinkingChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,MAAM,MAAM,+BAA+B,CAAC;AAGnD;;;GAGG;AACH,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,MAA4B;IAClE,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,EAAC,QAAQ,aAChD,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,eAAe,iBAAc,MAAM,GAAG,EAC5E,eAAM,SAAS,EAAE,MAAM,CAAC,aAAa,+BAAkB,IACrD,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,oBAAoB,EAAE,cAAM,OAAA,CAAC;QACpE,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,EAAE;KACtE,CAAC,EAFqE,CAErE,EAAE,CAAC,CAAC","sourcesContent":["import { Sparkles } from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\n\n/**\n * Default widget for an active `AgentStarted` / `StepStarted`: a compact shimmer status,\n * rendered by the thread only while the agent is thinking.\n */\nexport const DefaultThinkingChatWidget = (_props: SolidChatWidgetProps) => {\n return (\n <div className={styles.ThinkingBubble} role=\"status\">\n <Sparkles size={14} className={styles.ThinkingSparkle} aria-hidden=\"true\" />\n <span className={styles.ThinkingLabel}>Thinking…</span>\n </div>\n );\n};\n\nObject.assign(DefaultThinkingChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -14,3 +14,7 @@ export const DefaultThinkingChatWidget = (_props: SolidChatWidgetProps) => {
14
14
  </div>
15
15
  );
16
16
  };
17
+
18
+ Object.assign(DefaultThinkingChatWidget, { getExtensionMetadata: () => ({
19
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
20
+ }) });
@@ -64,4 +64,7 @@ export var DefaultToolCallChatWidget = function (_a) {
64
64
  var ToolIcon = getToolIcon(toolName, args);
65
65
  return (_jsxs("div", { className: "".concat(styles.ToolCard, " ").concat((_e = CARD_CLASS[status]) !== null && _e !== void 0 ? _e : styles.ToolCardDone), children: [_jsxs("button", { type: "button", className: styles.ToolCardHeaderBtn, onClick: expandable ? function () { return setExpanded(function (value) { return !value; }); } : undefined, "data-expandable": expandable ? "true" : undefined, "aria-expanded": expandable ? expanded : undefined, children: [_jsx(StatusIcon, { status: status }), _jsx(ToolIcon, { size: 12, className: styles.ToolCardToolIcon }), _jsx("span", { className: styles.ToolCardName, children: live ? "Invoking ".concat(toolDisplayName(toolName, args), "\u2026") : toolDisplayName(toolName, args) }), eventData.summary && _jsx("span", { className: styles.ToolCardDesc, title: eventData.summary, children: eventData.summary }), _jsx("span", { className: styles.ToolCardBadge, children: toolCategory(toolName) }), eventData.duration_ms != null && _jsx("span", { className: styles.ToolCardDuration, children: formatDuration(eventData.duration_ms) }), expandable && _jsx(ChevronRight, { size: 11, className: "".concat(styles.ToolCardChevron, " ").concat(expanded ? styles.ToolCardChevronOpen : "") })] }), progress.length > 0 && (_jsx("div", { className: styles.ToolCardProgress, children: progress.map(function (step, index) { return (_jsxs("div", { className: "".concat(styles.ToolProgressItem, " ").concat(step.status === "running" ? styles.ToolProgressRunning : styles.ToolProgressDone), children: [step.status === "running" ? _jsx(Loader2, { size: 10, className: styles.Spin }) : _jsx(CheckCircle2, { size: 10 }), _jsx("span", { className: styles.ToolProgressLabel, children: step.label }), step.duration_ms != null && step.status === "done" && (_jsx("span", { className: styles.ToolProgressDuration, children: formatDuration(step.duration_ms) }))] }, index)); }) })), expanded && (_jsxs("div", { className: styles.ToolCardExpandable, children: [hasArgs && (_jsxs("div", { className: styles.ToolCardOutput, children: [_jsx("div", { className: styles.ToolOutputHeader, children: _jsx("span", { children: "Arguments" }) }), _jsx("pre", { className: styles.ToolOutputText, children: JSON.stringify(args, null, 2) })] })), output && (_jsxs("div", { className: styles.ToolCardOutput, children: [_jsx("div", { className: styles.ToolOutputHeader, children: _jsx("span", { children: "Result" }) }), _jsx("pre", { className: "".concat(styles.ToolOutputText, " ").concat(status === "warning" ? styles.ToolOutputWarning : status === "error" ? styles.ToolOutputError : ""), children: output })] }))] }))] }));
66
66
  };
67
+ Object.assign(DefaultToolCallChatWidget, { getExtensionMetadata: function () { return ({
68
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
69
+ }); } });
67
70
  //# sourceMappingURL=DefaultToolCallChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultToolCallChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport {\n AlertTriangle,\n CheckCircle2,\n ChevronRight,\n CloudUpload,\n Cog,\n File,\n FilePen,\n FilePlus,\n Folder,\n Loader2,\n Pencil,\n Search,\n Terminal,\n XCircle,\n type LucideIcon,\n} from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { formatDuration, toolCategory, toolDisplayName } from \"../agentFormat\";\n\ntype ToolStatus = \"running\" | \"success\" | \"warning\" | \"error\";\ntype ToolProgressStep = { label: string; status: \"running\" | \"done\"; duration_ms?: number };\n\n/** Icon for a tool, by name / filesystem action / category (same mapping as the agent-ui). */\nfunction getToolIcon(name: string, args?: Record<string, unknown>): LucideIcon {\n if (name === \"bash\") return Terminal;\n if (name === \"filesystem_tool\" && typeof args?.action === \"string\") {\n if (args.action === \"read\") return File;\n if (args.action === \"search\") return Search;\n if (args.action === \"edit\") return Pencil;\n if (args.action === \"write\") return FilePlus;\n }\n switch (toolCategory(name)) {\n case \"Context\":\n return Search;\n case \"Build\":\n return FilePen;\n case \"Deploy\":\n return CloudUpload;\n case \"Files\":\n return Folder;\n default:\n return Cog;\n }\n}\n\nconst CARD_CLASS: Record<ToolStatus, string> = {\n running: styles.ToolCardRunning,\n success: styles.ToolCardDone,\n warning: styles.ToolCardWarning,\n error: styles.ToolCardError,\n};\n\nfunction StatusIcon({ status }: { status: ToolStatus }) {\n if (status === \"running\") return <Loader2 size={13} className={`${styles.ToolCardStatusIcon} ${styles.Spin}`} />;\n if (status === \"warning\") return <AlertTriangle size={13} className={styles.ToolCardStatusWarning} />;\n if (status === \"error\") return <XCircle size={13} className={styles.ToolCardStatusError} />;\n return <CheckCircle2 size={13} className={styles.ToolCardStatusDone} />;\n}\n\n/**\n * Default widget for `ToolCalling`: the tool card. `ToolProgress` sub-steps show under the\n * header; `ToolResult` sets the status and duration. Expanding shows the Arguments and Result.\n */\nexport const DefaultToolCallChatWidget = ({ eventData, live }: SolidChatWidgetProps) => {\n const [expanded, setExpanded] = useState(false);\n const toolName: string = eventData.tool_name ?? \"tool\";\n const args: Record<string, unknown> | undefined = eventData.arguments;\n const progress: ToolProgressStep[] = Array.isArray(eventData.progress) ? eventData.progress : [];\n const status: ToolStatus = live ? \"running\" : (eventData.status as ToolStatus) ?? \"success\";\n const output: string | undefined = eventData.output_raw ?? eventData.output;\n const hasArgs = !!args && Object.keys(args).length > 0;\n const expandable = (hasArgs || !!output) && status !== \"running\";\n const ToolIcon = getToolIcon(toolName, args);\n\n return (\n <div className={`${styles.ToolCard} ${CARD_CLASS[status] ?? styles.ToolCardDone}`}>\n <button\n type=\"button\"\n className={styles.ToolCardHeaderBtn}\n onClick={expandable ? () => setExpanded((value) => !value) : undefined}\n data-expandable={expandable ? \"true\" : undefined}\n aria-expanded={expandable ? expanded : undefined}\n >\n <StatusIcon status={status} />\n <ToolIcon size={12} className={styles.ToolCardToolIcon} />\n <span className={styles.ToolCardName}>{live ? `Invoking ${toolDisplayName(toolName, args)}…` : toolDisplayName(toolName, args)}</span>\n {eventData.summary && <span className={styles.ToolCardDesc} title={eventData.summary}>{eventData.summary}</span>}\n <span className={styles.ToolCardBadge}>{toolCategory(toolName)}</span>\n {eventData.duration_ms != null && <span className={styles.ToolCardDuration}>{formatDuration(eventData.duration_ms)}</span>}\n {expandable && <ChevronRight size={11} className={`${styles.ToolCardChevron} ${expanded ? styles.ToolCardChevronOpen : \"\"}`} />}\n </button>\n\n {/* Progress sub-steps: always visible */}\n {progress.length > 0 && (\n <div className={styles.ToolCardProgress}>\n {progress.map((step, index) => (\n <div key={index} className={`${styles.ToolProgressItem} ${step.status === \"running\" ? styles.ToolProgressRunning : styles.ToolProgressDone}`}>\n {step.status === \"running\" ? <Loader2 size={10} className={styles.Spin} /> : <CheckCircle2 size={10} />}\n <span className={styles.ToolProgressLabel}>{step.label}</span>\n {step.duration_ms != null && step.status === \"done\" && (\n <span className={styles.ToolProgressDuration}>{formatDuration(step.duration_ms)}</span>\n )}\n </div>\n ))}\n </div>\n )}\n\n {expanded && (\n <div className={styles.ToolCardExpandable}>\n {hasArgs && (\n <div className={styles.ToolCardOutput}>\n <div className={styles.ToolOutputHeader}>\n <span>Arguments</span>\n </div>\n <pre className={styles.ToolOutputText}>{JSON.stringify(args, null, 2)}</pre>\n </div>\n )}\n {output && (\n <div className={styles.ToolCardOutput}>\n <div className={styles.ToolOutputHeader}>\n <span>Result</span>\n </div>\n <pre className={`${styles.ToolOutputText} ${status === \"warning\" ? styles.ToolOutputWarning : status === \"error\" ? styles.ToolOutputError : \"\"}`}>\n {output}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DefaultToolCallChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport {\n AlertTriangle,\n CheckCircle2,\n ChevronRight,\n CloudUpload,\n Cog,\n File,\n FilePen,\n FilePlus,\n Folder,\n Loader2,\n Pencil,\n Search,\n Terminal,\n XCircle,\n type LucideIcon,\n} from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { formatDuration, toolCategory, toolDisplayName } from \"../agentFormat\";\n\ntype ToolStatus = \"running\" | \"success\" | \"warning\" | \"error\";\ntype ToolProgressStep = { label: string; status: \"running\" | \"done\"; duration_ms?: number };\n\n/** Icon for a tool, by name / filesystem action / category (same mapping as the agent-ui). */\nfunction getToolIcon(name: string, args?: Record<string, unknown>): LucideIcon {\n if (name === \"bash\") return Terminal;\n if (name === \"filesystem_tool\" && typeof args?.action === \"string\") {\n if (args.action === \"read\") return File;\n if (args.action === \"search\") return Search;\n if (args.action === \"edit\") return Pencil;\n if (args.action === \"write\") return FilePlus;\n }\n switch (toolCategory(name)) {\n case \"Context\":\n return Search;\n case \"Build\":\n return FilePen;\n case \"Deploy\":\n return CloudUpload;\n case \"Files\":\n return Folder;\n default:\n return Cog;\n }\n}\n\nconst CARD_CLASS: Record<ToolStatus, string> = {\n running: styles.ToolCardRunning,\n success: styles.ToolCardDone,\n warning: styles.ToolCardWarning,\n error: styles.ToolCardError,\n};\n\nfunction StatusIcon({ status }: { status: ToolStatus }) {\n if (status === \"running\") return <Loader2 size={13} className={`${styles.ToolCardStatusIcon} ${styles.Spin}`} />;\n if (status === \"warning\") return <AlertTriangle size={13} className={styles.ToolCardStatusWarning} />;\n if (status === \"error\") return <XCircle size={13} className={styles.ToolCardStatusError} />;\n return <CheckCircle2 size={13} className={styles.ToolCardStatusDone} />;\n}\n\n/**\n * Default widget for `ToolCalling`: the tool card. `ToolProgress` sub-steps show under the\n * header; `ToolResult` sets the status and duration. Expanding shows the Arguments and Result.\n */\nexport const DefaultToolCallChatWidget = ({ eventData, live }: SolidChatWidgetProps) => {\n const [expanded, setExpanded] = useState(false);\n const toolName: string = eventData.tool_name ?? \"tool\";\n const args: Record<string, unknown> | undefined = eventData.arguments;\n const progress: ToolProgressStep[] = Array.isArray(eventData.progress) ? eventData.progress : [];\n const status: ToolStatus = live ? \"running\" : (eventData.status as ToolStatus) ?? \"success\";\n const output: string | undefined = eventData.output_raw ?? eventData.output;\n const hasArgs = !!args && Object.keys(args).length > 0;\n const expandable = (hasArgs || !!output) && status !== \"running\";\n const ToolIcon = getToolIcon(toolName, args);\n\n return (\n <div className={`${styles.ToolCard} ${CARD_CLASS[status] ?? styles.ToolCardDone}`}>\n <button\n type=\"button\"\n className={styles.ToolCardHeaderBtn}\n onClick={expandable ? () => setExpanded((value) => !value) : undefined}\n data-expandable={expandable ? \"true\" : undefined}\n aria-expanded={expandable ? expanded : undefined}\n >\n <StatusIcon status={status} />\n <ToolIcon size={12} className={styles.ToolCardToolIcon} />\n <span className={styles.ToolCardName}>{live ? `Invoking ${toolDisplayName(toolName, args)}…` : toolDisplayName(toolName, args)}</span>\n {eventData.summary && <span className={styles.ToolCardDesc} title={eventData.summary}>{eventData.summary}</span>}\n <span className={styles.ToolCardBadge}>{toolCategory(toolName)}</span>\n {eventData.duration_ms != null && <span className={styles.ToolCardDuration}>{formatDuration(eventData.duration_ms)}</span>}\n {expandable && <ChevronRight size={11} className={`${styles.ToolCardChevron} ${expanded ? styles.ToolCardChevronOpen : \"\"}`} />}\n </button>\n\n {/* Progress sub-steps: always visible */}\n {progress.length > 0 && (\n <div className={styles.ToolCardProgress}>\n {progress.map((step, index) => (\n <div key={index} className={`${styles.ToolProgressItem} ${step.status === \"running\" ? styles.ToolProgressRunning : styles.ToolProgressDone}`}>\n {step.status === \"running\" ? <Loader2 size={10} className={styles.Spin} /> : <CheckCircle2 size={10} />}\n <span className={styles.ToolProgressLabel}>{step.label}</span>\n {step.duration_ms != null && step.status === \"done\" && (\n <span className={styles.ToolProgressDuration}>{formatDuration(step.duration_ms)}</span>\n )}\n </div>\n ))}\n </div>\n )}\n\n {expanded && (\n <div className={styles.ToolCardExpandable}>\n {hasArgs && (\n <div className={styles.ToolCardOutput}>\n <div className={styles.ToolOutputHeader}>\n <span>Arguments</span>\n </div>\n <pre className={styles.ToolOutputText}>{JSON.stringify(args, null, 2)}</pre>\n </div>\n )}\n {output && (\n <div className={styles.ToolCardOutput}>\n <div className={styles.ToolOutputHeader}>\n <span>Result</span>\n </div>\n <pre className={`${styles.ToolOutputText} ${status === \"warning\" ? styles.ToolOutputWarning : status === \"error\" ? styles.ToolOutputError : \"\"}`}>\n {output}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nObject.assign(DefaultToolCallChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -133,3 +133,7 @@ export const DefaultToolCallChatWidget = ({ eventData, live }: SolidChatWidgetPr
133
133
  </div>
134
134
  );
135
135
  };
136
+
137
+ Object.assign(DefaultToolCallChatWidget, { getExtensionMetadata: () => ({
138
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
139
+ }) });
@@ -21,4 +21,7 @@ export var DefaultUnknownChatWidget = function (props) {
21
21
  var label = ((_a = props.eventData) === null || _a === void 0 ? void 0 : _a.widget) ? "Unknown widget: ".concat(props.eventData.widget) : "Unhandled event: ".concat(props.eventType);
22
22
  return (_jsxs("div", { className: styles.widgetFallback, children: [_jsx("span", { children: label }), _jsx(SolidJsonChatWidget, __assign({}, props, { eventData: { title: "Event data", data: props.eventData } }))] }));
23
23
  };
24
+ Object.assign(DefaultUnknownChatWidget, { getExtensionMetadata: function () { return ({
25
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
26
+ }); } });
24
27
  //# sourceMappingURL=DefaultUnknownChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultUnknownChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAC,KAA2B;;IAChE,IAAM,KAAK,GAAG,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,MAAM,EAAC,CAAC,CAAC,0BAAmB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,2BAAoB,KAAK,CAAC,SAAS,CAAE,CAAC;IAC5H,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,cAAc,aACjC,yBAAO,KAAK,GAAQ,EACpB,KAAC,mBAAmB,eAAK,KAAK,IAAE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,IAC3F,CACT,CAAC;AACN,CAAC,CAAC","sourcesContent":["import styles from \"../SolidAgent.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidJsonChatWidget } from \"./SolidJsonChatWidget\";\n\n/**\n * Fallback when `event_data.widget` names a widget that is not registered, or an event type has\n * no default widget: the payload is shown as collapsible JSON so nothing silently disappears.\n */\nexport const DefaultUnknownChatWidget = (props: SolidChatWidgetProps) => {\n const label = props.eventData?.widget ? `Unknown widget: ${props.eventData.widget}` : `Unhandled event: ${props.eventType}`;\n return (\n <div className={styles.widgetFallback}>\n <span>{label}</span>\n <SolidJsonChatWidget {...props} eventData={{ title: \"Event data\", data: props.eventData }} />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DefaultUnknownChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAC,KAA2B;;IAChE,IAAM,KAAK,GAAG,CAAA,MAAA,KAAK,CAAC,SAAS,0CAAE,MAAM,EAAC,CAAC,CAAC,0BAAmB,KAAK,CAAC,SAAS,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,2BAAoB,KAAK,CAAC,SAAS,CAAE,CAAC;IAC5H,OAAO,CACH,eAAK,SAAS,EAAE,MAAM,CAAC,cAAc,aACjC,yBAAO,KAAK,GAAQ,EACpB,KAAC,mBAAmB,eAAK,KAAK,IAAE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,IAC3F,CACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,cAAM,OAAA,CAAC;QACnE,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,EAAE;KACtE,CAAC,EAFoE,CAEpE,EAAE,CAAC,CAAC","sourcesContent":["import styles from \"../SolidAgent.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidJsonChatWidget } from \"./SolidJsonChatWidget\";\n\n/**\n * Fallback when `event_data.widget` names a widget that is not registered, or an event type has\n * no default widget: the payload is shown as collapsible JSON so nothing silently disappears.\n */\nexport const DefaultUnknownChatWidget = (props: SolidChatWidgetProps) => {\n const label = props.eventData?.widget ? `Unknown widget: ${props.eventData.widget}` : `Unhandled event: ${props.eventType}`;\n return (\n <div className={styles.widgetFallback}>\n <span>{label}</span>\n <SolidJsonChatWidget {...props} eventData={{ title: \"Event data\", data: props.eventData }} />\n </div>\n );\n};\n\nObject.assign(DefaultUnknownChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -15,3 +15,7 @@ export const DefaultUnknownChatWidget = (props: SolidChatWidgetProps) => {
15
15
  </div>
16
16
  );
17
17
  };
18
+
19
+ Object.assign(DefaultUnknownChatWidget, { getExtensionMetadata: () => ({
20
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
21
+ }) });
@@ -27,4 +27,7 @@ export var DefaultUserMessageChatWidget = function (_a) {
27
27
  return (_jsx("li", { title: file.name, children: file.url ? (_jsx("a", { className: styles.MessageAttachmentFile, href: file.url, target: "_blank", rel: "noopener noreferrer", children: chip })) : (_jsx("span", { className: styles.MessageAttachmentFile, children: chip })) }, index));
28
28
  }) })), content && (_jsx("div", { className: "".concat(styles.Bubble, " ").concat(styles.BubbleUser), children: _jsx("p", { className: styles.UserText, children: content }) })), _jsxs("div", { className: "".concat(styles.BubbleMeta, " ").concat(styles.BubbleMetaUser), children: [_jsx("span", { className: styles.Timestamp, children: formatChatTime(timestamp) }), content && _jsx(SolidAgentMessageCopyButton, { text: content })] })] }), zoom && (_jsx("div", { className: styles.AttachmentLightbox, role: "dialog", "aria-label": "Image preview", onClick: function () { return setZoom(null); }, children: _jsx("img", { src: zoom, alt: "" }) }))] }));
29
29
  };
30
+ Object.assign(DefaultUserMessageChatWidget, { getExtensionMetadata: function () { return ({
31
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
32
+ }); } });
30
33
  //# sourceMappingURL=DefaultUserMessageChatWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultUserMessageChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport { FileText, ImageIcon, User } from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidAgentMessageCopyButton } from \"../SolidAgentMarkdown\";\nimport { formatFileSize } from \"../agentAttachments\";\nimport type { AgentAttachmentMeta } from \"../types\";\nimport { asArray, formatChatTime } from \"./chatWidgetUtils\";\n\n/**\n * Default widget for `UserMessage`: dark right-aligned bubble with avatar, time and copy on hover.\n * Attachments show above the bubble: image thumbnails (click to enlarge) or file chips.\n * History only carries attachment metadata, so reloaded images show as chips.\n */\nexport const DefaultUserMessageChatWidget = ({ eventData, timestamp }: SolidChatWidgetProps) => {\n const content = String(eventData.content ?? \"\");\n const attachments = asArray<AgentAttachmentMeta>(eventData.attachments);\n const [zoom, setZoom] = useState<string | null>(null);\n\n return (\n <div className={`${styles.Row} ${styles.RowUser}`}>\n {/* Avatar first in DOM → rightmost with row-reverse */}\n <div className={`${styles.Avatar} ${styles.AvatarUser}`}>\n <User size={12} />\n </div>\n <div className={styles.BubbleGroup}>\n {attachments.length > 0 && (\n <ul className={styles.MessageAttachments} aria-label=\"Attachments\">\n {attachments.map((file, index) => {\n // previewUrl: attached in this browser session; url: stored copy (history).\n const imageSrc = file.mimeType?.startsWith(\"image/\") ? file.previewUrl ?? file.url : undefined;\n if (imageSrc) {\n return (\n <li key={index}>\n <button type=\"button\" className={styles.MessageAttachmentImageBtn} onClick={() => setZoom(imageSrc)} title={file.name}>\n <img className={styles.MessageAttachmentImage} src={imageSrc} alt={file.name} />\n </button>\n </li>\n );\n }\n const chip = (\n <>\n {file.mimeType?.startsWith(\"image/\") ? <ImageIcon size={13} /> : <FileText size={13} />}\n <span className={styles.MessageAttachmentName}>{file.name}</span>\n <span className={styles.MessageAttachmentSize}>{formatFileSize(file.size ?? 0)}</span>\n </>\n );\n return (\n <li key={index} title={file.name}>\n {file.url ? (\n <a className={styles.MessageAttachmentFile} href={file.url} target=\"_blank\" rel=\"noopener noreferrer\">{chip}</a>\n ) : (\n <span className={styles.MessageAttachmentFile}>{chip}</span>\n )}\n </li>\n );\n })}\n </ul>\n )}\n {content && (\n <div className={`${styles.Bubble} ${styles.BubbleUser}`}>\n <p className={styles.UserText}>{content}</p>\n </div>\n )}\n <div className={`${styles.BubbleMeta} ${styles.BubbleMetaUser}`}>\n <span className={styles.Timestamp}>{formatChatTime(timestamp)}</span>\n {content && <SolidAgentMessageCopyButton text={content} />}\n </div>\n </div>\n {zoom && (\n <div className={styles.AttachmentLightbox} role=\"dialog\" aria-label=\"Image preview\" onClick={() => setZoom(null)}>\n <img src={zoom} alt=\"\" />\n </div>\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DefaultUserMessageChatWidget.js","sourceRoot":"","sources":["../../../../../src/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport { FileText, ImageIcon, User } from \"lucide-react\";\nimport styles from \"./solidChatWidgets.module.css\";\nimport { SolidChatWidgetProps } from \"../../../../types/solid-core\";\nimport { SolidAgentMessageCopyButton } from \"../SolidAgentMarkdown\";\nimport { formatFileSize } from \"../agentAttachments\";\nimport type { AgentAttachmentMeta } from \"../types\";\nimport { asArray, formatChatTime } from \"./chatWidgetUtils\";\n\n/**\n * Default widget for `UserMessage`: dark right-aligned bubble with avatar, time and copy on hover.\n * Attachments show above the bubble: image thumbnails (click to enlarge) or file chips.\n * History only carries attachment metadata, so reloaded images show as chips.\n */\nexport const DefaultUserMessageChatWidget = ({ eventData, timestamp }: SolidChatWidgetProps) => {\n const content = String(eventData.content ?? \"\");\n const attachments = asArray<AgentAttachmentMeta>(eventData.attachments);\n const [zoom, setZoom] = useState<string | null>(null);\n\n return (\n <div className={`${styles.Row} ${styles.RowUser}`}>\n {/* Avatar first in DOM → rightmost with row-reverse */}\n <div className={`${styles.Avatar} ${styles.AvatarUser}`}>\n <User size={12} />\n </div>\n <div className={styles.BubbleGroup}>\n {attachments.length > 0 && (\n <ul className={styles.MessageAttachments} aria-label=\"Attachments\">\n {attachments.map((file, index) => {\n // previewUrl: attached in this browser session; url: stored copy (history).\n const imageSrc = file.mimeType?.startsWith(\"image/\") ? file.previewUrl ?? file.url : undefined;\n if (imageSrc) {\n return (\n <li key={index}>\n <button type=\"button\" className={styles.MessageAttachmentImageBtn} onClick={() => setZoom(imageSrc)} title={file.name}>\n <img className={styles.MessageAttachmentImage} src={imageSrc} alt={file.name} />\n </button>\n </li>\n );\n }\n const chip = (\n <>\n {file.mimeType?.startsWith(\"image/\") ? <ImageIcon size={13} /> : <FileText size={13} />}\n <span className={styles.MessageAttachmentName}>{file.name}</span>\n <span className={styles.MessageAttachmentSize}>{formatFileSize(file.size ?? 0)}</span>\n </>\n );\n return (\n <li key={index} title={file.name}>\n {file.url ? (\n <a className={styles.MessageAttachmentFile} href={file.url} target=\"_blank\" rel=\"noopener noreferrer\">{chip}</a>\n ) : (\n <span className={styles.MessageAttachmentFile}>{chip}</span>\n )}\n </li>\n );\n })}\n </ul>\n )}\n {content && (\n <div className={`${styles.Bubble} ${styles.BubbleUser}`}>\n <p className={styles.UserText}>{content}</p>\n </div>\n )}\n <div className={`${styles.BubbleMeta} ${styles.BubbleMetaUser}`}>\n <span className={styles.Timestamp}>{formatChatTime(timestamp)}</span>\n {content && <SolidAgentMessageCopyButton text={content} />}\n </div>\n </div>\n {zoom && (\n <div className={styles.AttachmentLightbox} role=\"dialog\" aria-label=\"Image preview\" onClick={() => setZoom(null)}>\n <img src={zoom} alt=\"\" />\n </div>\n )}\n </div>\n );\n};\n\nObject.assign(DefaultUserMessageChatWidget, { getExtensionMetadata: () => ({\n chatInteraction: { role: \"event-renderer\", agentSelectable: false },\n}) });\n"]}
@@ -75,3 +75,7 @@ export const DefaultUserMessageChatWidget = ({ eventData, timestamp }: SolidChat
75
75
  </div>
76
76
  );
77
77
  };
78
+
79
+ Object.assign(DefaultUserMessageChatWidget, { getExtensionMetadata: () => ({
80
+ chatInteraction: { role: "event-renderer", agentSelectable: false },
81
+ }) });
@@ -37,4 +37,7 @@ export var SolidChecklistChatWidget = function (_a) {
37
37
  reply(Array.from(checked));
38
38
  }, children: (_b = data.submitLabel) !== null && _b !== void 0 ? _b : "Continue" }) }))] }));
39
39
  };
40
+ Object.assign(SolidChecklistChatWidget, { getExtensionMetadata: function () { return ({
41
+ agentWidget: { name: "checklist", description: "Present several items the user can tick or confirm.", propsSchema: { type: "object", properties: { title: { type: "string" }, items: { type: "array", items: { type: "object", properties: { id: { type: "string" }, label: { type: "string" }, checked: { type: "boolean" }, description: { type: "string" } }, required: ["label"] } }, submitLabel: { type: "string" } } } },
42
+ }); } });
40
43
  //# sourceMappingURL=SolidChecklistChatWidget.js.map