@vertesia/ui 0.67.0 → 0.68.0

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 (283) hide show
  1. package/lib/esm/core/components/Badge.js +1 -1
  2. package/lib/esm/core/components/Badge.js.map +1 -1
  3. package/lib/esm/core/components/FormItem.js +2 -2
  4. package/lib/esm/core/components/FormItem.js.map +1 -1
  5. package/lib/esm/core/components/InputList.js +2 -2
  6. package/lib/esm/core/components/InputList.js.map +1 -1
  7. package/lib/esm/core/components/shadcn/checkbox.js +1 -1
  8. package/lib/esm/core/components/shadcn/checkbox.js.map +1 -1
  9. package/lib/esm/core/components/shadcn/command.js +1 -1
  10. package/lib/esm/core/components/shadcn/command.js.map +1 -1
  11. package/lib/esm/core/components/shadcn/dialog.js +6 -6
  12. package/lib/esm/core/components/shadcn/dialog.js.map +1 -1
  13. package/lib/esm/core/components/shadcn/filters/DynamicLabel.js.map +1 -1
  14. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js +129 -0
  15. package/lib/esm/core/components/shadcn/filters/comboBox/DateCombobox.js.map +1 -0
  16. package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js +46 -0
  17. package/lib/esm/core/components/shadcn/filters/comboBox/SelectCombobox.js.map +1 -0
  18. package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js +23 -0
  19. package/lib/esm/core/components/shadcn/filters/comboBox/StringListCombobox.js.map +1 -0
  20. package/lib/esm/core/components/shadcn/filters/comboBox/TextCombobox.js +28 -0
  21. package/lib/esm/core/components/shadcn/filters/comboBox/TextCombobox.js.map +1 -0
  22. package/lib/esm/core/components/shadcn/filters/comboBox/comboBox.js +5 -0
  23. package/lib/esm/core/components/shadcn/filters/comboBox/comboBox.js.map +1 -0
  24. package/lib/esm/core/components/shadcn/filters/filter/SelectFilter.js +101 -0
  25. package/lib/esm/core/components/shadcn/filters/filter/SelectFilter.js.map +1 -0
  26. package/lib/esm/core/components/shadcn/filters/{stringListFilter.js → filter/StringListFilter.js} +3 -3
  27. package/lib/esm/core/components/shadcn/filters/filter/StringListFilter.js.map +1 -0
  28. package/lib/esm/core/components/shadcn/filters/{textFilter.js → filter/TextFilter.js} +4 -4
  29. package/lib/esm/core/components/shadcn/filters/filter/TextFilter.js.map +1 -0
  30. package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js +161 -0
  31. package/lib/esm/core/components/shadcn/filters/filter/dateFilter.js.map +1 -0
  32. package/lib/esm/core/components/shadcn/filters/filter-styles.js +88 -0
  33. package/lib/esm/core/components/shadcn/filters/filter-styles.js.map +1 -0
  34. package/lib/esm/core/components/shadcn/filters/filterBar.js +128 -87
  35. package/lib/esm/core/components/shadcn/filters/filterBar.js.map +1 -1
  36. package/lib/esm/core/components/shadcn/filters/filters.js +7 -6
  37. package/lib/esm/core/components/shadcn/filters/filters.js.map +1 -1
  38. package/lib/esm/core/components/shadcn/filters/index.js +1 -1
  39. package/lib/esm/core/components/shadcn/filters/index.js.map +1 -1
  40. package/lib/esm/core/components/shadcn/filters/types.js.map +1 -1
  41. package/lib/esm/core/components/toast/NotificationPanel.js +24 -18
  42. package/lib/esm/core/components/toast/NotificationPanel.js.map +1 -1
  43. package/lib/esm/features/agent/PayloadBuilder.js +47 -27
  44. package/lib/esm/features/agent/PayloadBuilder.js.map +1 -1
  45. package/lib/esm/features/agent/chat/ModernAgentConversation.js +9 -3
  46. package/lib/esm/features/agent/chat/ModernAgentConversation.js.map +1 -1
  47. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +7 -6
  48. package/lib/esm/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  49. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js +12 -1
  50. package/lib/esm/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  51. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js +2 -1
  52. package/lib/esm/features/agent/chat/ModernAgentOutput/SlidingMessages.js.map +1 -1
  53. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js +10 -4
  54. package/lib/esm/features/agent/chat/ModernAgentOutput/utils.js.map +1 -1
  55. package/lib/esm/features/facets/DocumentsFacetsNav.js +133 -0
  56. package/lib/esm/features/facets/DocumentsFacetsNav.js.map +1 -0
  57. package/lib/esm/features/facets/RunsFacetsNav.js +125 -0
  58. package/lib/esm/features/facets/RunsFacetsNav.js.map +1 -0
  59. package/lib/esm/features/facets/VFacetsNav.js +4 -113
  60. package/lib/esm/features/facets/VFacetsNav.js.map +1 -1
  61. package/lib/esm/features/facets/VStringFacet.js +6 -4
  62. package/lib/esm/features/facets/VStringFacet.js.map +1 -1
  63. package/lib/esm/features/facets/VTypeFacet.js +4 -5
  64. package/lib/esm/features/facets/VTypeFacet.js.map +1 -1
  65. package/lib/esm/features/facets/VUserFacet.js +1 -1
  66. package/lib/esm/features/facets/VUserFacet.js.map +1 -1
  67. package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js +98 -0
  68. package/lib/esm/features/facets/WorkflowExecutionsFacetsNav.js.map +1 -0
  69. package/lib/esm/features/facets/index.js +3 -2
  70. package/lib/esm/features/facets/index.js.map +1 -1
  71. package/lib/esm/features/store/collections/CollectionsTable.js +1 -1
  72. package/lib/esm/features/store/collections/CollectionsTable.js.map +1 -1
  73. package/lib/esm/features/store/collections/CreateCollection.js +10 -9
  74. package/lib/esm/features/store/collections/CreateCollection.js.map +1 -1
  75. package/lib/esm/features/store/collections/EditCollectionView.js +10 -9
  76. package/lib/esm/features/store/collections/EditCollectionView.js.map +1 -1
  77. package/lib/esm/features/store/collections/SelectCollection.js +1 -1
  78. package/lib/esm/features/store/collections/SelectCollection.js.map +1 -1
  79. package/lib/esm/features/store/objects/DocumentPreviewPanel.js +0 -1
  80. package/lib/esm/features/store/objects/DocumentPreviewPanel.js.map +1 -1
  81. package/lib/esm/features/store/objects/DocumentSearchResults.js +37 -2
  82. package/lib/esm/features/store/objects/DocumentSearchResults.js.map +1 -1
  83. package/lib/esm/features/store/objects/components/ContentOverview.js +0 -2
  84. package/lib/esm/features/store/objects/components/ContentOverview.js.map +1 -1
  85. package/lib/esm/features/store/objects/components/SelectDocument.js +2 -2
  86. package/lib/esm/features/store/objects/components/SelectDocument.js.map +1 -1
  87. package/lib/esm/features/store/objects/components/VectorSearchWidget.js +1 -1
  88. package/lib/esm/features/store/objects/components/VectorSearchWidget.js.map +1 -1
  89. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js +16 -4
  90. package/lib/esm/features/store/objects/selection/actions/AddToCollectionAction.js.map +1 -1
  91. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js +72 -37
  92. package/lib/esm/features/store/objects/upload/DocumentUploadModal.js.map +1 -1
  93. package/lib/esm/features/store/types/ObjectSchemaEditor.js +15 -0
  94. package/lib/esm/features/store/types/ObjectSchemaEditor.js.map +1 -1
  95. package/lib/esm/features/user/UserInfo.js +8 -8
  96. package/lib/esm/features/user/UserInfo.js.map +1 -1
  97. package/lib/esm/router/HistoryNavigator.js +2 -2
  98. package/lib/esm/router/HistoryNavigator.js.map +1 -1
  99. package/lib/esm/shell/SplashScreen.js +19 -0
  100. package/lib/esm/shell/SplashScreen.js.map +1 -0
  101. package/lib/esm/shell/VertesiaShell.js +10 -0
  102. package/lib/esm/shell/VertesiaShell.js.map +1 -0
  103. package/lib/esm/shell/index.js +7 -0
  104. package/lib/esm/shell/index.js.map +1 -0
  105. package/lib/esm/shell/login/EnterpriseSigninButton.js +81 -0
  106. package/lib/esm/shell/login/EnterpriseSigninButton.js.map +1 -0
  107. package/lib/esm/shell/login/GitHubSignInButton.js +24 -0
  108. package/lib/esm/shell/login/GitHubSignInButton.js.map +1 -0
  109. package/lib/esm/shell/login/GoogleSignInButton.js +25 -0
  110. package/lib/esm/shell/login/GoogleSignInButton.js.map +1 -0
  111. package/lib/esm/shell/login/InviteAcceptModal.js +45 -0
  112. package/lib/esm/shell/login/InviteAcceptModal.js.map +1 -0
  113. package/lib/esm/shell/login/MicrosoftSigninButton.js +19 -0
  114. package/lib/esm/shell/login/MicrosoftSigninButton.js.map +1 -0
  115. package/lib/esm/shell/login/PreviewIcon.js +23 -0
  116. package/lib/esm/shell/login/PreviewIcon.js.map +1 -0
  117. package/lib/esm/shell/login/SignInModal.js +9 -0
  118. package/lib/esm/shell/login/SignInModal.js.map +1 -0
  119. package/lib/esm/shell/login/SigninScreen.js +64 -0
  120. package/lib/esm/shell/login/SigninScreen.js.map +1 -0
  121. package/lib/esm/shell/login/SignupForm.js +91 -0
  122. package/lib/esm/shell/login/SignupForm.js.map +1 -0
  123. package/lib/esm/shell/login/TerminalLogin.js +179 -0
  124. package/lib/esm/shell/login/TerminalLogin.js.map +1 -0
  125. package/lib/esm/shell/login/UserInfo.js +40 -0
  126. package/lib/esm/shell/login/UserInfo.js.map +1 -0
  127. package/lib/esm/shell/login/UserSessionMenu.js +31 -0
  128. package/lib/esm/shell/login/UserSessionMenu.js.map +1 -0
  129. package/lib/esm/shell/utils.js +6 -0
  130. package/lib/esm/shell/utils.js.map +1 -0
  131. package/lib/esm/widgets/SvgIcon.js +36 -0
  132. package/lib/esm/widgets/SvgIcon.js.map +1 -0
  133. package/lib/esm/widgets/index.js +7 -6
  134. package/lib/esm/widgets/index.js.map +1 -1
  135. package/lib/esm/widgets/upload/UploadSummary.js +1 -1
  136. package/lib/esm/widgets/upload/UploadSummary.js.map +1 -1
  137. package/lib/tsconfig.tsbuildinfo +1 -1
  138. package/lib/types/core/components/FormItem.d.ts +2 -1
  139. package/lib/types/core/components/shadcn/dialog.d.ts +2 -1
  140. package/lib/types/core/components/shadcn/filters/DynamicLabel.d.ts +1 -1
  141. package/lib/types/core/components/shadcn/filters/comboBox/DateCombobox.d.ts +5 -0
  142. package/lib/types/core/components/shadcn/filters/comboBox/SelectCombobox.d.ts +8 -0
  143. package/lib/types/core/components/shadcn/filters/comboBox/StringListCombobox.d.ts +5 -0
  144. package/lib/types/core/components/shadcn/filters/comboBox/TextCombobox.d.ts +5 -0
  145. package/lib/types/core/components/shadcn/filters/comboBox/comboBox.d.ts +4 -0
  146. package/lib/types/core/components/shadcn/filters/{selectFilter.d.ts → filter/SelectFilter.d.ts} +2 -2
  147. package/lib/types/core/components/shadcn/filters/{stringListFilter.d.ts → filter/StringListFilter.d.ts} +1 -1
  148. package/lib/types/core/components/shadcn/filters/{textFilter.d.ts → filter/TextFilter.d.ts} +1 -1
  149. package/lib/types/core/components/shadcn/filters/{dateFilter.d.ts → filter/dateFilter.d.ts} +1 -1
  150. package/lib/types/core/components/shadcn/filters/filter-styles.d.ts +1 -0
  151. package/lib/types/core/components/shadcn/filters/filterBar.d.ts +14 -4
  152. package/lib/types/core/components/shadcn/filters/index.d.ts +1 -1
  153. package/lib/types/core/components/shadcn/filters/types.d.ts +2 -0
  154. package/lib/types/features/agent/PayloadBuilder.d.ts +17 -8
  155. package/lib/types/features/agent/chat/ModernAgentOutput/utils.d.ts +2 -1
  156. package/lib/types/features/facets/DocumentsFacetsNav.d.ts +16 -0
  157. package/lib/types/features/facets/RunsFacetsNav.d.ts +18 -0
  158. package/lib/types/features/facets/VFacetsNav.d.ts +1 -1
  159. package/lib/types/features/facets/VStringFacet.d.ts +6 -2
  160. package/lib/types/features/facets/VTypeFacet.d.ts +3 -1
  161. package/lib/types/features/facets/WorkflowExecutionsFacetsNav.d.ts +13 -0
  162. package/lib/types/features/facets/index.d.ts +3 -2
  163. package/lib/types/shell/SplashScreen.d.ts +4 -0
  164. package/lib/types/shell/VertesiaShell.d.ts +7 -0
  165. package/lib/types/shell/index.d.ts +6 -0
  166. package/lib/types/shell/login/EnterpriseSigninButton.d.ts +5 -0
  167. package/lib/types/shell/login/GitHubSignInButton.d.ts +5 -0
  168. package/lib/types/shell/login/GoogleSignInButton.d.ts +5 -0
  169. package/lib/types/shell/login/InviteAcceptModal.d.ts +1 -0
  170. package/lib/types/shell/login/MicrosoftSigninButton.d.ts +5 -0
  171. package/lib/types/shell/login/PreviewIcon.d.ts +5 -0
  172. package/lib/types/shell/login/SignInModal.d.ts +6 -0
  173. package/lib/types/shell/login/SigninScreen.d.ts +8 -0
  174. package/lib/types/shell/login/SignupForm.d.ts +7 -0
  175. package/lib/types/shell/login/TerminalLogin.d.ts +1 -0
  176. package/lib/types/shell/login/UserInfo.d.ts +5 -0
  177. package/lib/types/shell/login/UserSessionMenu.d.ts +8 -0
  178. package/lib/types/shell/utils.d.ts +1 -0
  179. package/lib/types/widgets/SvgIcon.d.ts +6 -0
  180. package/lib/types/widgets/index.d.ts +7 -6
  181. package/lib/vertesia-ui-core.js +1 -1
  182. package/lib/vertesia-ui-core.js.map +1 -1
  183. package/lib/vertesia-ui-features.js +1 -1
  184. package/lib/vertesia-ui-features.js.map +1 -1
  185. package/lib/vertesia-ui-router.js +1 -1
  186. package/lib/vertesia-ui-router.js.map +1 -1
  187. package/lib/vertesia-ui-shell.js +2 -0
  188. package/lib/vertesia-ui-shell.js.map +1 -0
  189. package/lib/vertesia-ui-widgets.js +1 -1
  190. package/lib/vertesia-ui-widgets.js.map +1 -1
  191. package/package.json +14 -6
  192. package/src/core/components/Badge.tsx +12 -8
  193. package/src/core/components/FormItem.tsx +4 -3
  194. package/src/core/components/InputList.tsx +21 -17
  195. package/src/core/components/shadcn/checkbox.tsx +2 -2
  196. package/src/core/components/shadcn/command.tsx +1 -1
  197. package/src/core/components/shadcn/dialog.tsx +18 -9
  198. package/src/core/components/shadcn/filters/DynamicLabel.tsx +1 -2
  199. package/src/core/components/shadcn/filters/comboBox/DateCombobox.tsx +211 -0
  200. package/src/core/components/shadcn/filters/{comboBox.tsx → comboBox/SelectCombobox.tsx} +8 -192
  201. package/src/core/components/shadcn/filters/comboBox/StringListCombobox.tsx +76 -0
  202. package/src/core/components/shadcn/filters/comboBox/TextCombobox.tsx +81 -0
  203. package/src/core/components/shadcn/filters/comboBox/comboBox.tsx +4 -0
  204. package/src/core/components/shadcn/filters/filter/SelectFilter.tsx +161 -0
  205. package/src/core/components/shadcn/filters/{stringListFilter.tsx → filter/StringListFilter.tsx} +7 -7
  206. package/src/core/components/shadcn/filters/{textFilter.tsx → filter/TextFilter.tsx} +17 -11
  207. package/src/core/components/shadcn/filters/filter/dateFilter.tsx +256 -0
  208. package/src/core/components/shadcn/filters/filter-styles.ts +87 -0
  209. package/src/core/components/shadcn/filters/filterBar.tsx +208 -152
  210. package/src/core/components/shadcn/filters/filters.tsx +7 -5
  211. package/src/core/components/shadcn/filters/index.ts +1 -1
  212. package/src/core/components/shadcn/filters/types.ts +2 -0
  213. package/src/core/components/toast/NotificationPanel.tsx +38 -22
  214. package/src/features/agent/PayloadBuilder.tsx +56 -31
  215. package/src/features/agent/chat/ModernAgentConversation.tsx +10 -4
  216. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +7 -6
  217. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +12 -1
  218. package/src/features/agent/chat/ModernAgentOutput/SlidingMessages.tsx +2 -1
  219. package/src/features/agent/chat/ModernAgentOutput/utils.ts +12 -4
  220. package/src/features/facets/DocumentsFacetsNav.tsx +171 -0
  221. package/src/features/facets/RunsFacetsNav.tsx +166 -0
  222. package/src/features/facets/VFacetsNav.tsx +10 -126
  223. package/src/features/facets/VStringFacet.tsx +10 -4
  224. package/src/features/facets/VTypeFacet.tsx +6 -5
  225. package/src/features/facets/VUserFacet.tsx +5 -3
  226. package/src/features/facets/WorkflowExecutionsFacetsNav.tsx +132 -0
  227. package/src/features/facets/index.ts +5 -2
  228. package/src/features/store/collections/CollectionsTable.tsx +3 -2
  229. package/src/features/store/collections/CreateCollection.tsx +17 -15
  230. package/src/features/store/collections/EditCollectionView.tsx +19 -16
  231. package/src/features/store/collections/SelectCollection.tsx +1 -1
  232. package/src/features/store/objects/DocumentPreviewPanel.tsx +0 -1
  233. package/src/features/store/objects/DocumentSearchResults.tsx +80 -11
  234. package/src/features/store/objects/components/ContentOverview.tsx +0 -2
  235. package/src/features/store/objects/components/SelectDocument.tsx +2 -2
  236. package/src/features/store/objects/components/VectorSearchWidget.tsx +2 -2
  237. package/src/features/store/objects/selection/actions/AddToCollectionAction.tsx +40 -19
  238. package/src/features/store/objects/upload/DocumentUploadModal.tsx +160 -214
  239. package/src/features/store/types/ObjectSchemaEditor.tsx +15 -0
  240. package/src/features/user/UserInfo.tsx +17 -14
  241. package/src/router/HistoryNavigator.ts +2 -2
  242. package/src/shell/SplashScreen.tsx +41 -0
  243. package/src/shell/VertesiaShell.tsx +27 -0
  244. package/src/shell/index.tsx +6 -0
  245. package/src/shell/login/EnterpriseSigninButton.tsx +106 -0
  246. package/src/shell/login/GitHubSignInButton.tsx +40 -0
  247. package/src/shell/login/GoogleSignInButton.tsx +36 -0
  248. package/src/shell/login/InviteAcceptModal.tsx +78 -0
  249. package/src/shell/login/MicrosoftSigninButton.tsx +30 -0
  250. package/src/shell/login/PreviewIcon.tsx +29 -0
  251. package/src/shell/login/SignInModal.tsx +28 -0
  252. package/src/shell/login/SigninScreen.tsx +162 -0
  253. package/src/shell/login/SignupForm.tsx +178 -0
  254. package/src/shell/login/TerminalLogin.tsx +299 -0
  255. package/src/shell/login/UserInfo.tsx +76 -0
  256. package/src/shell/login/UserSessionMenu.tsx +81 -0
  257. package/src/shell/utils.tsx +7 -0
  258. package/src/widgets/SvgIcon.tsx +44 -0
  259. package/src/widgets/index.ts +7 -6
  260. package/src/widgets/upload/UploadSummary.tsx +3 -4
  261. package/lib/esm/core/components/shadcn/filters/comboBox.js +0 -101
  262. package/lib/esm/core/components/shadcn/filters/comboBox.js.map +0 -1
  263. package/lib/esm/core/components/shadcn/filters/dateFilter.js +0 -36
  264. package/lib/esm/core/components/shadcn/filters/dateFilter.js.map +0 -1
  265. package/lib/esm/core/components/shadcn/filters/selectFilter.js +0 -67
  266. package/lib/esm/core/components/shadcn/filters/selectFilter.js.map +0 -1
  267. package/lib/esm/core/components/shadcn/filters/stringListFilter.js.map +0 -1
  268. package/lib/esm/core/components/shadcn/filters/textFilter.js.map +0 -1
  269. package/lib/esm/features/facets/InteractionFacet.js +0 -39
  270. package/lib/esm/features/facets/InteractionFacet.js.map +0 -1
  271. package/lib/esm/features/facets/TypeOptions.js +0 -19
  272. package/lib/esm/features/facets/TypeOptions.js.map +0 -1
  273. package/lib/esm/features/facets/UserFacet.js +0 -33
  274. package/lib/esm/features/facets/UserFacet.js.map +0 -1
  275. package/lib/types/core/components/shadcn/filters/comboBox.d.ts +0 -22
  276. package/lib/types/features/facets/InteractionFacet.d.ts +0 -9
  277. package/lib/types/features/facets/TypeOptions.d.ts +0 -3
  278. package/lib/types/features/facets/UserFacet.d.ts +0 -11
  279. package/src/core/components/shadcn/filters/dateFilter.tsx +0 -82
  280. package/src/core/components/shadcn/filters/selectFilter.tsx +0 -110
  281. package/src/features/facets/InteractionFacet.tsx +0 -53
  282. package/src/features/facets/TypeOptions.tsx +0 -22
  283. package/src/features/facets/UserFacet.tsx +0 -61
@@ -8,10 +8,12 @@ import React, { createContext, useContext, useEffect, useState } from "react";
8
8
 
9
9
  export interface ConversationWorkflowPayload {
10
10
  interaction?: Interaction | undefined;
11
- environment?: ExecutionEnvironmentRef | undefined;
12
- model?: string;
13
- prompt_data?: JSONObject | undefined,
14
- tools: string[],
11
+ config: {
12
+ environment?: ExecutionEnvironmentRef | undefined;
13
+ model?: string;
14
+ }
15
+ data?: JSONObject | undefined,
16
+ tool_names: string[],
15
17
  }
16
18
 
17
19
  export class PayloadBuilder implements ConversationWorkflowPayload {
@@ -19,6 +21,7 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
19
21
  _debug_mode: boolean = false;
20
22
  _collection: string | undefined;
21
23
  _start: boolean = false;
24
+ _preserveRunValues: boolean = false;
22
25
 
23
26
  payload: ConversationWorkflowPayload;
24
27
  private _interactionParamsSchema?: JSONSchema4 | null;
@@ -29,8 +32,10 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
29
32
 
30
33
  constructor(public vertesia: VertesiaClient, public updateState: (data: PayloadBuilder) => void) {
31
34
  this.payload = {
32
- model: '',
33
- tools: [],
35
+ config: {
36
+ model: '',
37
+ },
38
+ tool_names: [],
34
39
  }
35
40
  }
36
41
 
@@ -48,6 +53,7 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
48
53
  builder._inputValidator = this._inputValidator;
49
54
  builder._start = this._start;
50
55
  builder._collection = this._collection;
56
+ builder._preserveRunValues = this._preserveRunValues;
51
57
  return builder;
52
58
  }
53
59
 
@@ -97,18 +103,18 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
97
103
  this._interactionParamsSchema = mergePromptsSchema(this.interaction as PopulatedInteraction) as JSONSchema4;
98
104
  // Reset the validator when schema changes
99
105
  this._inputValidator = undefined;
100
- if (interaction) {
106
+ if (interaction && !this._preserveRunValues) {
101
107
  if (interaction.environment) {
102
108
  if (typeof interaction.environment === 'string') {
103
109
  this.vertesia.environments.retrieve(interaction.environment).then((environment) => this.environment = environment);
104
110
  } else {
105
- this.payload.environment = interaction.environment;
111
+ this.payload.config.environment = interaction.environment;
106
112
  }
107
113
  }
108
114
  if (interaction.model) {
109
- this.payload.model = interaction.model;
115
+ this.payload.config.model = interaction.model;
110
116
  } else {
111
- this.payload.model = this.environment?.default_model && supportsToolUse(this.environment.default_model, this.environment.provider)
117
+ this.payload.config.model = this.environment?.default_model && supportsToolUse(this.environment.default_model, this.environment.provider)
112
118
  ? this.environment.default_model : undefined;
113
119
  }
114
120
  }
@@ -117,44 +123,50 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
117
123
  }
118
124
 
119
125
  get environment() {
120
- return this.payload.environment;
126
+ return this.payload.config.environment;
121
127
  }
122
128
  set environment(environment: ExecutionEnvironmentRef | undefined) {
123
- if (environment?.id !== this.payload.environment?.id) {
124
- this.payload.environment = environment;
125
- this.payload.model = environment?.default_model && supportsToolUse(environment.default_model, environment.provider)
126
- ? environment.default_model : undefined;
129
+ if (environment?.id !== this.payload.config.environment?.id) {
130
+ this.payload.config.environment = environment;
131
+ if (!this._preserveRunValues) {
132
+ this.payload.config.model = environment?.default_model && supportsToolUse(environment.default_model, environment.provider)
133
+ ? environment.default_model : undefined;
134
+ }
127
135
 
128
136
  this.onStateChanged();
129
137
  }
130
138
  }
131
139
 
132
140
  get model() {
133
- return this.payload.model;
141
+ return this.payload.config.model;
134
142
  }
135
143
  set model(model: string | undefined) {
136
- if (model !== this.payload.model) {
137
- this.payload.model = model;
144
+ if (model !== this.payload.config.model) {
145
+ this.payload.config.model = model;
138
146
  this.onStateChanged();
139
147
  }
140
148
  }
141
149
 
142
- get tools() {
143
- return this.payload.tools;
150
+ get tool_names() {
151
+ return this.payload.tool_names;
144
152
  }
145
- set tools(tools: string[]) {
146
- this.payload.tools = tools;
153
+ set tool_names(tools: string[]) {
154
+ this.payload.tool_names = tools;
147
155
  this.onStateChanged();
148
156
  }
149
157
 
150
- get prompt_data(): JSONObject | undefined {
151
- return this.payload.prompt_data;
158
+ get data(): JSONObject | undefined {
159
+ return this.payload.data;
152
160
  }
153
- set prompt_data(prompt_data: JSONObject) {
154
- this.payload.prompt_data = prompt_data;
161
+ set data(prompt_data: JSONObject) {
162
+ this.payload.data = prompt_data;
155
163
  this.onStateChanged();
156
164
  }
157
165
 
166
+ get config() {
167
+ return this.payload.config;
168
+ }
169
+
158
170
  set run(run: AsyncExecutionResult | { workflow_id: string; run_id: string }) {
159
171
  console.log("run", run);
160
172
  this.onStateChanged();
@@ -171,6 +183,14 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
171
183
  return this._start;
172
184
  }
173
185
 
186
+ get preserveRunValues(): boolean {
187
+ return this._preserveRunValues;
188
+ }
189
+
190
+ set preserveRunValues(value: boolean) {
191
+ this._preserveRunValues = value;
192
+ }
193
+
174
194
  get interactionParamsSchema(): JSONSchema4 | null | undefined {
175
195
  return this._interactionParamsSchema;
176
196
  }
@@ -187,15 +207,20 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
187
207
  this._interactive = true;
188
208
  this._debug_mode = false;
189
209
  this._collection = undefined;
210
+ this._preserveRunValues = false;
190
211
  this.payload = {
191
- model: '',
192
- tools: [],
212
+ config: {
213
+ environment: undefined,
214
+ model: '',
215
+ },
216
+ tool_names: [],
193
217
  interaction: undefined,
194
- environment: undefined,
195
- prompt_data: undefined
218
+ data: undefined
196
219
  };
197
220
  this._interactionParamsSchema = null;
198
221
  this._inputValidator = undefined;
222
+ this.model = undefined;
223
+ this.environment = undefined;
199
224
 
200
225
  this.onStateChanged();
201
226
 
@@ -219,7 +244,7 @@ export class PayloadBuilder implements ConversationWorkflowPayload {
219
244
  };
220
245
  }
221
246
 
222
- const prompt_data = this.payload.prompt_data || {};
247
+ const prompt_data = this.payload.data || {};
223
248
  const isValid = this._inputValidator.validate(prompt_data);
224
249
 
225
250
  if (!isValid) {
@@ -489,10 +489,16 @@ function ModernAgentConversationInner({
489
489
 
490
490
  const lastMessage = messages[messages.length - 1];
491
491
  if (lastMessage) {
492
- if (interactive) {
493
- setShowInput(true);
494
- } else {
495
- setShowInput(lastMessage.type === AgentMessageType.REQUEST_INPUT);
492
+ if (lastMessage.type === AgentMessageType.TERMINATED) {
493
+ setShowInput(false);
494
+ setWorkflowStatus("TERMINATED");
495
+ }
496
+ else {
497
+ if (interactive) {
498
+ setShowInput(true);
499
+ } else {
500
+ setShowInput(lastMessage.type === AgentMessageType.REQUEST_INPUT);
501
+ }
496
502
  }
497
503
  }
498
504
  }, [messages, plans, activePlanIndex]);
@@ -3,7 +3,7 @@ import React, { useEffect, useMemo, useState } from "react";
3
3
  import InlineSlidingPlanPanel from "./InlineSlidingPlanPanel";
4
4
  import MessageItem from "./MessageItem";
5
5
  import WorkstreamTabs, { extractWorkstreams, filterMessagesByWorkstream } from "./WorkstreamTabs";
6
- import { getWorkstreamId } from "./utils";
6
+ import { DONE_STATES, getWorkstreamId } from "./utils";
7
7
 
8
8
  interface AllMessagesMixedProps {
9
9
  messages: AgentMessage[];
@@ -115,7 +115,8 @@ export default function AllMessagesMixed({
115
115
  statusMap.set(workstreamId, [
116
116
  AgentMessageType.COMPLETE,
117
117
  AgentMessageType.IDLE,
118
- AgentMessageType.REQUEST_INPUT
118
+ AgentMessageType.REQUEST_INPUT,
119
+ AgentMessageType.TERMINATED
119
120
  ].includes(lastMessage.type));
120
121
  }
121
122
  }
@@ -171,7 +172,7 @@ export default function AllMessagesMixed({
171
172
  // Find if this is the latest non-completion message
172
173
  const isLatestNonCompletionMessage = !isCompleted &&
173
174
  index === displayMessages.length - 1 &&
174
- ![AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT].includes(message.type);
175
+ !DONE_STATES.includes(message.type);
175
176
 
176
177
  return (
177
178
  <MessageItem
@@ -186,12 +187,12 @@ export default function AllMessagesMixed({
186
187
  <>
187
188
  {/* Get all messages to display in sliding view */}
188
189
  {(() => {
189
- // First get all permanent messages (ANSWER, QUESTION, COMPLETE, REQUEST_INPUT)
190
+ // First get all permanent messages (ANSWER, QUESTION, COMPLETE, REQUEST_INPUT, TERMINATED)
190
191
  const permanentMessages = displayMessages.filter(msg =>
191
192
  msg.type === AgentMessageType.ANSWER ||
192
193
  msg.type === AgentMessageType.QUESTION ||
193
194
  msg.type === AgentMessageType.COMPLETE ||
194
- msg.type === AgentMessageType.REQUEST_INPUT
195
+ msg.type === AgentMessageType.TERMINATED
195
196
  );
196
197
 
197
198
  // Then get the latest thinking message if not completed
@@ -224,7 +225,7 @@ export default function AllMessagesMixed({
224
225
  return allMessages.map((message, index) => {
225
226
  const isLatestMessage = !isCompleted &&
226
227
  index === allMessages.length - 1 &&
227
- ![AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT].includes(message.type);
228
+ !DONE_STATES.includes(message.type);
228
229
 
229
230
  return (
230
231
  <MessageItem
@@ -44,10 +44,17 @@ export default function MessageItem({ message, showPulsatingCircle = false }: Me
44
44
  case AgentMessageType.COMPLETE:
45
45
  return {
46
46
  ...baseStyle,
47
- containerClass: "bg-white border-l-4 border-l-green-500 shadow-sm",
47
+ containerClass: "bg-white border-l-4 border-l-success shadow-sm",
48
48
  iconComponent: <CheckCircle className="size-4 text-success" />,
49
49
  sender: "Completed",
50
50
  };
51
+ case AgentMessageType.TERMINATED:
52
+ return {
53
+ ...baseStyle,
54
+ containerClass: "bg-white border-l-4 border-l-attention shadow-sm",
55
+ iconComponent: <CheckCircle className="size-4 text-attention" />,
56
+ sender: "Terminated",
57
+ };
51
58
  case AgentMessageType.QUESTION:
52
59
  return {
53
60
  ...baseStyle,
@@ -377,6 +384,8 @@ export default function MessageItem({ message, showPulsatingCircle = false }: Me
377
384
  return "border-l-success bg-success";
378
385
  case AgentMessageType.PLAN:
379
386
  return "border-l-attention bg-attention";
387
+ case AgentMessageType.TERMINATED:
388
+ return "border-l-muted bg-muted";
380
389
  default:
381
390
  return "border-l-indigo-500 dark:border-l-indigo-400 bg-indigo-50/50 dark:bg-indigo-900/10";
382
391
  }
@@ -437,6 +446,8 @@ export default function MessageItem({ message, showPulsatingCircle = false }: Me
437
446
  );
438
447
  case AgentMessageType.COMPLETE:
439
448
  return <CheckCircle className={`size-4 ${iconColor}`} />;
449
+ case AgentMessageType.TERMINATED:
450
+ return <CheckCircle className={`size-4 ${iconColor}`} />;
440
451
  case AgentMessageType.IDLE:
441
452
  return <Clock className={`size-4 ${iconColor}`} />;
442
453
  case AgentMessageType.REQUEST_INPUT:
@@ -27,7 +27,8 @@ function isPermanentMessage(message: AgentMessage): boolean {
27
27
  message.type === AgentMessageType.QUESTION ||
28
28
  message.type === AgentMessageType.COMPLETE ||
29
29
  message.type === AgentMessageType.IDLE ||
30
- message.type === AgentMessageType.REQUEST_INPUT
30
+ message.type === AgentMessageType.REQUEST_INPUT ||
31
+ message.type === AgentMessageType.TERMINATED
31
32
  );
32
33
  }
33
34
 
@@ -17,6 +17,14 @@ export function insertMessageInTimeline(arr: AgentMessage[], m: AgentMessage) {
17
17
  * This function checks the main workstream status to determine if the conversation is complete
18
18
  * For multi-workstream scenarios, we keep streaming until the main workstream is complete
19
19
  */
20
+
21
+ export const DONE_STATES = [
22
+ AgentMessageType.COMPLETE,
23
+ AgentMessageType.IDLE,
24
+ AgentMessageType.REQUEST_INPUT,
25
+ AgentMessageType.TERMINATED,
26
+ ];
27
+
20
28
  export function isInProgress(messages: AgentMessage[]) {
21
29
  if (!messages.length) return true;
22
30
 
@@ -46,7 +54,7 @@ export function isInProgress(messages: AgentMessage[]) {
46
54
  console.log(`[isInProgress] Last message type in only workstream: ${lastMessage.type}`);
47
55
 
48
56
  // Check if this single workstream is completed
49
- if (![AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT].includes(
57
+ if (!DONE_STATES.includes(
50
58
  lastMessage.type
51
59
  )) {
52
60
  console.log("[isInProgress] Only workstream is still in progress");
@@ -71,7 +79,7 @@ export function isInProgress(messages: AgentMessage[]) {
71
79
  const lastMainMessage = mainWorkstreamMsgs[mainWorkstreamMsgs.length - 1];
72
80
  console.log(`[isInProgress] Last message type in main workstream: ${lastMainMessage.type}`);
73
81
 
74
- if (![AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT].includes(
82
+ if (!DONE_STATES.includes(
75
83
  lastMainMessage.type
76
84
  )) {
77
85
  console.log("[isInProgress] Main workstream is still in progress");
@@ -89,7 +97,7 @@ export function isInProgress(messages: AgentMessage[]) {
89
97
  for (const [workstreamId, msgs] of workstreamMessages.entries()) {
90
98
  if (msgs.length > 0) {
91
99
  const lastMessage = msgs[msgs.length - 1];
92
- if (![AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT].includes(
100
+ if (!DONE_STATES.includes(
93
101
  lastMessage.type
94
102
  )) {
95
103
  console.log(`[isInProgress] Workstream ${workstreamId} is still active`);
@@ -168,7 +176,7 @@ export function getWorkstreamStatusMap(messages: AgentMessage[]): Map<string, "p
168
176
  );
169
177
 
170
178
  if (hasCompleteMessage ||
171
- [AgentMessageType.COMPLETE, AgentMessageType.IDLE, AgentMessageType.REQUEST_INPUT].includes(lastMessage.type)) {
179
+ DONE_STATES.includes(lastMessage.type)) {
172
180
  console.log(`[getWorkstreamStatusMap] Marking workstream ${workstreamId} as completed`);
173
181
  statusMap.set(workstreamId, "completed");
174
182
  } else {
@@ -0,0 +1,171 @@
1
+ import { Filter as BaseFilter, FilterProvider, FilterBtn, FilterBar, FilterClear, FilterGroup } from '@vertesia/ui/core';
2
+ import { useUserSession } from '@vertesia/ui/session';
3
+ import { useState } from 'react';
4
+ import { VStringFacet } from './VStringFacet';
5
+ import { VTypeFacet } from './VTypeFacet';
6
+ import { SearchInterface } from './VFacetsNav';
7
+
8
+ interface DocumentsFacetsNavProps {
9
+ facets: {
10
+ type?: any[];
11
+ status?: any[];
12
+ role?: any[];
13
+ location?: any[];
14
+ tags?: string[];
15
+ };
16
+ search: SearchInterface;
17
+ }
18
+
19
+ // Hook to create filter groups for documents
20
+ export function useDocumentFilterGroups(facets: DocumentsFacetsNavProps['facets']): FilterGroup[] {
21
+ const { typeRegistry } = useUserSession();
22
+ const customFilterGroups: FilterGroup[] = [];
23
+
24
+ customFilterGroups.push({
25
+ placeholder: 'Name or ID',
26
+ name: 'name',
27
+ type: 'text',
28
+ options: [],
29
+ });
30
+
31
+ if (facets.type) {
32
+ const typeFilterGroup = VTypeFacet({
33
+ buckets: facets.type || [],
34
+ typeRegistry: typeRegistry,
35
+ type: 'select',
36
+ multiple: true
37
+ });
38
+ customFilterGroups.push(typeFilterGroup);
39
+ }
40
+
41
+ if (facets.status) {
42
+ const statusFilterGroup = VStringFacet({
43
+ search: null as any, // This will be provided by the search context
44
+ buckets: facets.status || [],
45
+ name: 'Status',
46
+ type: 'select',
47
+ multiple: true
48
+ });
49
+ customFilterGroups.push(statusFilterGroup);
50
+ }
51
+
52
+ if (facets.tags) {
53
+ customFilterGroups.push({
54
+ name: 'Tags',
55
+ type: 'stringList',
56
+ options: facets.tags.map((tag: string) => ({
57
+ label: tag,
58
+ value: tag
59
+ }))
60
+ });
61
+ }
62
+
63
+ customFilterGroups.push({
64
+ name: 'created_at',
65
+ placeholder: 'Created Date',
66
+ type: 'date',
67
+ multiple: true,
68
+ options: []
69
+ });
70
+
71
+ customFilterGroups.push({
72
+ name: 'updated_at',
73
+ placeholder: 'Updated Date',
74
+ type: 'date',
75
+ multiple: true,
76
+ options: []
77
+ });
78
+
79
+ return customFilterGroups;
80
+ }
81
+
82
+ // Hook to create filter change handler for documents
83
+ export function useDocumentFilterHandler(search: SearchInterface) {
84
+ return (newFilters: BaseFilter[]) => {
85
+ if (newFilters.length === 0) {
86
+ search.clearFilters();
87
+ return;
88
+ }
89
+
90
+ search.clearFilters(false);
91
+
92
+ newFilters.forEach(filter => {
93
+ if (filter.value && filter.value.length > 0) {
94
+ const filterName = filter.name;
95
+
96
+ let filterValue;
97
+ if (filter.type === 'date' && filter.multiple) {
98
+ // Handle date range filters
99
+ if (Array.isArray(filter.value) && filter.value.length > 0) {
100
+ if (filter.value.length === 1) {
101
+ // Single date - use as both start and end
102
+ const dateValue = typeof filter.value[0] === 'object' ? (filter.value[0] as any).value : filter.value[0];
103
+ filterValue = {
104
+ gte: dateValue,
105
+ lte: dateValue
106
+ };
107
+ } else if (filter.value.length === 2) {
108
+ // Date range - start and end dates
109
+ const startDate = typeof filter.value[0] === 'object' ? (filter.value[0] as any).value : filter.value[0];
110
+ const endDate = typeof filter.value[1] === 'object' ? (filter.value[1] as any).value : filter.value[1];
111
+ filterValue = {
112
+ gte: startDate,
113
+ lte: endDate
114
+ };
115
+ }
116
+ }
117
+ } else if (filter.multiple) {
118
+ filterValue = Array.isArray(filter.value)
119
+ ? filter.value.map((v: any) => typeof v === 'object' && v.value ? v.value : v)
120
+ : [typeof filter.value === 'object' && (filter.value as any).value ? (filter.value as any).value : filter.value];
121
+ } else {
122
+ // Single value - don't wrap in array
123
+ filterValue = Array.isArray(filter.value) && filter.value[0] && typeof filter.value[0] === 'object'
124
+ ? (filter.value[0] as any).value
125
+ : Array.isArray(filter.value) && filter.value[0]
126
+ ? filter.value[0]
127
+ : filter.value;
128
+ }
129
+
130
+ if (filterName === 'name') {
131
+ search.query.search_term = filterValue;
132
+ search.query.name = filterValue;
133
+ } else {
134
+ search.query[filterName] = filterValue;
135
+ }
136
+ }
137
+ });
138
+
139
+ search.search();
140
+ };
141
+ }
142
+
143
+ // Legacy component for backward compatibility
144
+ export function DocumentsFacetsNav({
145
+ facets,
146
+ search,
147
+ }: DocumentsFacetsNavProps) {
148
+ const [filters, setFilters] = useState<BaseFilter[]>([]);
149
+ const filterGroups = useDocumentFilterGroups(facets);
150
+ const handleFilterLogic = useDocumentFilterHandler(search);
151
+
152
+ const handleFilterChange: React.Dispatch<React.SetStateAction<BaseFilter[]>> = (value) => {
153
+ const newFilters = typeof value === 'function' ? value(filters) : value;
154
+ setFilters(newFilters);
155
+ handleFilterLogic(newFilters);
156
+ };
157
+
158
+ return (
159
+ <FilterProvider
160
+ filterGroups={filterGroups}
161
+ filters={filters}
162
+ setFilters={handleFilterChange}
163
+ >
164
+ <div className="flex gap-2 items-center">
165
+ <FilterBtn />
166
+ <FilterBar />
167
+ <FilterClear />
168
+ </div>
169
+ </FilterProvider>
170
+ );
171
+ }