@vertesia/ui 1.5.0 → 1.6.0-dev.20260918.061604Z

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 (336) hide show
  1. package/README.md +125 -0
  2. package/lib/boot/branding.d.ts +58 -0
  3. package/lib/boot/branding.d.ts.map +1 -0
  4. package/lib/boot/branding.js +62 -0
  5. package/lib/boot/branding.js.map +1 -0
  6. package/lib/boot/index.d.ts +27 -0
  7. package/lib/boot/index.d.ts.map +1 -0
  8. package/lib/boot/index.js +325 -0
  9. package/lib/boot/index.js.map +1 -0
  10. package/lib/boot/vite.d.ts +63 -0
  11. package/lib/boot/vite.d.ts.map +1 -0
  12. package/lib/boot/vite.js +108 -0
  13. package/lib/boot/vite.js.map +1 -0
  14. package/lib/core/components/shadcn/button.d.ts.map +1 -1
  15. package/lib/core/components/shadcn/button.js +1 -2
  16. package/lib/core/components/shadcn/button.js.map +1 -1
  17. package/lib/core/components/shadcn/filters/filter-styles.d.ts +1 -1
  18. package/lib/core/components/shadcn/filters/filter-styles.d.ts.map +1 -1
  19. package/lib/core/components/shadcn/filters/filter-styles.js +4 -4
  20. package/lib/core/components/shadcn/label.js +1 -1
  21. package/lib/core/components/shadcn/label.js.map +1 -1
  22. package/lib/env/index.d.ts +32 -1
  23. package/lib/env/index.d.ts.map +1 -1
  24. package/lib/env/index.js +55 -3
  25. package/lib/env/index.js.map +1 -1
  26. package/lib/features/agent/PayloadBuilder.d.ts +4 -0
  27. package/lib/features/agent/PayloadBuilder.d.ts.map +1 -1
  28. package/lib/features/agent/PayloadBuilder.js +6 -1
  29. package/lib/features/agent/PayloadBuilder.js.map +1 -1
  30. package/lib/features/agent/chat/AgentRunFeedback.d.ts +66 -0
  31. package/lib/features/agent/chat/AgentRunFeedback.d.ts.map +1 -0
  32. package/lib/features/agent/chat/AgentRunFeedback.js +298 -0
  33. package/lib/features/agent/chat/AgentRunFeedback.js.map +1 -0
  34. package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
  35. package/lib/features/agent/chat/ModernAgentConversation.js +7 -5
  36. package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
  37. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +3 -1
  38. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
  39. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +11 -10
  40. package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
  41. package/lib/features/agent/chat/ModernAgentOutput/Header.d.ts.map +1 -1
  42. package/lib/features/agent/chat/ModernAgentOutput/Header.js.map +1 -1
  43. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts +3 -1
  44. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.d.ts.map +1 -1
  45. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +28 -7
  46. package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
  47. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.d.ts.map +1 -1
  48. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js +2 -0
  49. package/lib/features/agent/chat/ModernAgentOutput/SummaryConversation.js.map +1 -1
  50. package/lib/features/agent/chat/hooks/useAgentPlans.d.ts +1 -1
  51. package/lib/features/agent/chat/hooks/useAgentPlans.d.ts.map +1 -1
  52. package/lib/features/agent/chat/hooks/useAgentPlans.js +5 -5
  53. package/lib/features/agent/chat/hooks/useAgentPlans.js.map +1 -1
  54. package/lib/features/agent/chat/index.d.ts +1 -0
  55. package/lib/features/agent/chat/index.d.ts.map +1 -1
  56. package/lib/features/agent/chat/index.js +1 -0
  57. package/lib/features/agent/chat/index.js.map +1 -1
  58. package/lib/features/facets/AgentRunnerFacetsNav.d.ts +8 -0
  59. package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
  60. package/lib/features/facets/AgentRunnerFacetsNav.js +12 -0
  61. package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
  62. package/lib/features/permissions/UserPermissionsProvider.d.ts +15 -1
  63. package/lib/features/permissions/UserPermissionsProvider.d.ts.map +1 -1
  64. package/lib/features/permissions/UserPermissionsProvider.js +20 -12
  65. package/lib/features/permissions/UserPermissionsProvider.js.map +1 -1
  66. package/lib/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
  67. package/lib/features/store/objects/search/DocumentSearchContext.js +6 -1
  68. package/lib/features/store/objects/search/DocumentSearchContext.js.map +1 -1
  69. package/lib/features/store/objects/selection/SelectionActions.js +1 -1
  70. package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
  71. package/lib/features/store/types/TypeRegistry.d.ts +130 -0
  72. package/lib/features/store/types/TypeRegistry.d.ts.map +1 -1
  73. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts +130 -0
  74. package/lib/features/store/types/search/ObjectTypeSearchContext.d.ts.map +1 -1
  75. package/lib/i18n/index.d.ts +5 -4
  76. package/lib/i18n/index.d.ts.map +1 -1
  77. package/lib/i18n/index.js +16 -2
  78. package/lib/i18n/index.js.map +1 -1
  79. package/lib/i18n/locales/ar.json +30 -0
  80. package/lib/i18n/locales/de.json +30 -0
  81. package/lib/i18n/locales/en.json +30 -0
  82. package/lib/i18n/locales/es.json +30 -0
  83. package/lib/i18n/locales/fr.json +30 -0
  84. package/lib/i18n/locales/it.json +30 -0
  85. package/lib/i18n/locales/ja.json +30 -0
  86. package/lib/i18n/locales/ko.json +30 -0
  87. package/lib/i18n/locales/pt.json +30 -0
  88. package/lib/i18n/locales/ru.json +30 -0
  89. package/lib/i18n/locales/tr.json +30 -0
  90. package/lib/i18n/locales/zh-TW.json +30 -0
  91. package/lib/i18n/locales/zh.json +30 -0
  92. package/lib/layout/ErrorPage.js +1 -1
  93. package/lib/layout/ErrorPage.js.map +1 -1
  94. package/lib/layout/Navbar.d.ts.map +1 -1
  95. package/lib/layout/Navbar.js +3 -2
  96. package/lib/layout/Navbar.js.map +1 -1
  97. package/lib/session/UserSession.d.ts.map +1 -1
  98. package/lib/session/UserSession.js +2 -3
  99. package/lib/session/UserSession.js.map +1 -1
  100. package/lib/session/UserSessionProvider.d.ts +2 -1
  101. package/lib/session/UserSessionProvider.d.ts.map +1 -1
  102. package/lib/session/UserSessionProvider.js +13 -4
  103. package/lib/session/UserSessionProvider.js.map +1 -1
  104. package/lib/session/auth/composable.d.ts.map +1 -1
  105. package/lib/session/auth/composable.js +88 -3
  106. package/lib/session/auth/composable.js.map +1 -1
  107. package/lib/session/auth/domainRouting.d.ts +22 -12
  108. package/lib/session/auth/domainRouting.d.ts.map +1 -1
  109. package/lib/session/auth/domainRouting.js +35 -21
  110. package/lib/session/auth/domainRouting.js.map +1 -1
  111. package/lib/session/auth/firebase.d.ts.map +1 -1
  112. package/lib/session/auth/firebase.js +10 -0
  113. package/lib/session/auth/firebase.js.map +1 -1
  114. package/lib/session/auth/useAuthState.d.ts +9 -4
  115. package/lib/session/auth/useAuthState.d.ts.map +1 -1
  116. package/lib/session/auth/useAuthState.js +9 -4
  117. package/lib/session/auth/useAuthState.js.map +1 -1
  118. package/lib/session/index.d.ts.map +1 -1
  119. package/lib/session/index.js +3 -1
  120. package/lib/session/index.js.map +1 -1
  121. package/lib/shell/AuthScreenPreview.d.ts +12 -0
  122. package/lib/shell/AuthScreenPreview.d.ts.map +1 -0
  123. package/lib/shell/AuthScreenPreview.js +140 -0
  124. package/lib/shell/AuthScreenPreview.js.map +1 -0
  125. package/lib/shell/BrandedAuthScreens.d.ts +19 -0
  126. package/lib/shell/BrandedAuthScreens.d.ts.map +1 -0
  127. package/lib/shell/BrandedAuthScreens.js +64 -0
  128. package/lib/shell/BrandedAuthScreens.js.map +1 -0
  129. package/lib/shell/SplashScreen.d.ts +13 -2
  130. package/lib/shell/SplashScreen.d.ts.map +1 -1
  131. package/lib/shell/SplashScreen.js +20 -19
  132. package/lib/shell/SplashScreen.js.map +1 -1
  133. package/lib/shell/VertesiaShell.d.ts +15 -4
  134. package/lib/shell/VertesiaShell.d.ts.map +1 -1
  135. package/lib/shell/VertesiaShell.js +8 -3
  136. package/lib/shell/VertesiaShell.js.map +1 -1
  137. package/lib/shell/apps/StandaloneApp.js +5 -1
  138. package/lib/shell/apps/StandaloneApp.js.map +1 -1
  139. package/lib/shell/index.d.ts +6 -0
  140. package/lib/shell/index.d.ts.map +1 -1
  141. package/lib/shell/index.js +5 -0
  142. package/lib/shell/index.js.map +1 -1
  143. package/lib/shell/login/SignInAuthPending.js +1 -1
  144. package/lib/shell/login/SignInAuthPending.js.map +1 -1
  145. package/lib/shell/login/SignInEmailStep.d.ts.map +1 -1
  146. package/lib/shell/login/SignInEmailStep.js +2 -2
  147. package/lib/shell/login/SignInEmailStep.js.map +1 -1
  148. package/lib/shell/login/SignInFlow.d.ts +68 -0
  149. package/lib/shell/login/SignInFlow.d.ts.map +1 -0
  150. package/lib/shell/login/SignInFlow.js +108 -0
  151. package/lib/shell/login/SignInFlow.js.map +1 -0
  152. package/lib/shell/login/SignInIcons.d.ts +1 -1
  153. package/lib/shell/login/SignInIcons.d.ts.map +1 -1
  154. package/lib/shell/login/SignInPageShell.d.ts +13 -0
  155. package/lib/shell/login/SignInPageShell.d.ts.map +1 -0
  156. package/lib/shell/login/SignInPageShell.js +14 -0
  157. package/lib/shell/login/SignInPageShell.js.map +1 -0
  158. package/lib/shell/login/SignInPrimitives.d.ts +3 -3
  159. package/lib/shell/login/SignInPrimitives.d.ts.map +1 -1
  160. package/lib/shell/login/SignInPrimitives.js +13 -11
  161. package/lib/shell/login/SignInPrimitives.js.map +1 -1
  162. package/lib/shell/login/SignInRestrictedEnvStep.d.ts +5 -0
  163. package/lib/shell/login/SignInRestrictedEnvStep.d.ts.map +1 -1
  164. package/lib/shell/login/SignInRestrictedEnvStep.js +8 -4
  165. package/lib/shell/login/SignInRestrictedEnvStep.js.map +1 -1
  166. package/lib/shell/login/SigninScreen.d.ts +38 -3
  167. package/lib/shell/login/SigninScreen.d.ts.map +1 -1
  168. package/lib/shell/login/SigninScreen.js +33 -86
  169. package/lib/shell/login/SigninScreen.js.map +1 -1
  170. package/lib/shell/login/SignupForm.d.ts +3 -1
  171. package/lib/shell/login/SignupForm.d.ts.map +1 -1
  172. package/lib/shell/login/SignupForm.js +7 -3
  173. package/lib/shell/login/SignupForm.js.map +1 -1
  174. package/lib/shell/login/signInUtils.d.ts +12 -1
  175. package/lib/shell/login/signInUtils.d.ts.map +1 -1
  176. package/lib/shell/login/signInUtils.js +34 -11
  177. package/lib/shell/login/signInUtils.js.map +1 -1
  178. package/lib/vertesia-ui-boot.js +237 -0
  179. package/lib/vertesia-ui-boot.js.map +1 -0
  180. package/lib/vertesia-ui-core.js +88 -46
  181. package/lib/vertesia-ui-core.js.map +1 -1
  182. package/lib/vertesia-ui-env.js +1 -1
  183. package/lib/vertesia-ui-env.js.map +1 -1
  184. package/lib/vertesia-ui-features.js +350 -317
  185. package/lib/vertesia-ui-features.js.map +1 -1
  186. package/lib/vertesia-ui-i18n.B3NFclwl.chunk.js +5 -0
  187. package/lib/vertesia-ui-i18n.B3NFclwl.chunk.js.map +1 -0
  188. package/lib/vertesia-ui-i18n.BWSrNIxc.chunk.js +5 -0
  189. package/lib/vertesia-ui-i18n.BWSrNIxc.chunk.js.map +1 -0
  190. package/lib/vertesia-ui-i18n.BWvWeB1p.chunk.js +5 -0
  191. package/lib/vertesia-ui-i18n.BWvWeB1p.chunk.js.map +1 -0
  192. package/lib/vertesia-ui-i18n.BZCXvTC1.chunk.js +5 -0
  193. package/lib/vertesia-ui-i18n.BZCXvTC1.chunk.js.map +1 -0
  194. package/lib/vertesia-ui-i18n.BbJMvFZW.chunk.js +5 -0
  195. package/lib/vertesia-ui-i18n.BbJMvFZW.chunk.js.map +1 -0
  196. package/lib/vertesia-ui-i18n.CE5ldwpt.chunk.js +5 -0
  197. package/lib/vertesia-ui-i18n.CE5ldwpt.chunk.js.map +1 -0
  198. package/lib/vertesia-ui-i18n.CMC0IShY.chunk.js +5 -0
  199. package/lib/vertesia-ui-i18n.CMC0IShY.chunk.js.map +1 -0
  200. package/lib/vertesia-ui-i18n.CkcRqBKU.chunk.js +5 -0
  201. package/lib/vertesia-ui-i18n.CkcRqBKU.chunk.js.map +1 -0
  202. package/lib/vertesia-ui-i18n.D-Mq1sw_.chunk.js +5 -0
  203. package/lib/vertesia-ui-i18n.D-Mq1sw_.chunk.js.map +1 -0
  204. package/lib/vertesia-ui-i18n.DkK68-A-.chunk.js +5 -0
  205. package/lib/vertesia-ui-i18n.DkK68-A-.chunk.js.map +1 -0
  206. package/lib/vertesia-ui-i18n.XE_dcCg6.chunk.js +5 -0
  207. package/lib/vertesia-ui-i18n.XE_dcCg6.chunk.js.map +1 -0
  208. package/lib/vertesia-ui-i18n.js +2 -2
  209. package/lib/vertesia-ui-i18n.js.map +1 -1
  210. package/lib/vertesia-ui-i18n.qgNqMPvK.chunk.js +5 -0
  211. package/lib/vertesia-ui-i18n.qgNqMPvK.chunk.js.map +1 -0
  212. package/lib/vertesia-ui-layout.js +43 -19
  213. package/lib/vertesia-ui-layout.js.map +1 -1
  214. package/lib/vertesia-ui-rich-text.js +123 -74
  215. package/lib/vertesia-ui-rich-text.js.map +1 -1
  216. package/lib/vertesia-ui-router.js.map +1 -1
  217. package/lib/vertesia-ui-session.js +1 -1
  218. package/lib/vertesia-ui-session.js.map +1 -1
  219. package/lib/vertesia-ui-shell.js +87 -33
  220. package/lib/vertesia-ui-shell.js.map +1 -1
  221. package/lib/vertesia-ui-widgets.js +154 -98
  222. package/lib/vertesia-ui-widgets.js.map +1 -1
  223. package/lib/widgets/xml-viewer/hooks/useCollapsible.d.ts +1 -1
  224. package/llms.txt +6 -2
  225. package/package.json +45 -36
  226. package/src/__tests__/a11y.test.tsx +25 -0
  227. package/src/__tests__/theme.test.ts +91 -0
  228. package/src/boot/branding.test.ts +72 -0
  229. package/src/boot/branding.ts +108 -0
  230. package/src/boot/index.test.ts +216 -0
  231. package/src/boot/index.ts +356 -0
  232. package/src/boot/vite.test.ts +93 -0
  233. package/src/boot/vite.ts +118 -0
  234. package/src/core/components/shadcn/button.tsx +1 -2
  235. package/src/core/components/shadcn/filters/filter-styles.ts +4 -4
  236. package/src/core/components/shadcn/label.tsx +1 -1
  237. package/src/env/index.test.ts +127 -0
  238. package/src/env/index.ts +73 -3
  239. package/src/features/agent/PayloadBuilder.tsx +10 -1
  240. package/src/features/agent/chat/AgentRunFeedback.test.tsx +347 -0
  241. package/src/features/agent/chat/AgentRunFeedback.tsx +465 -0
  242. package/src/features/agent/chat/ModernAgentConversation.test.tsx +1 -1
  243. package/src/features/agent/chat/ModernAgentConversation.tsx +52 -47
  244. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.test.tsx +145 -0
  245. package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +42 -24
  246. package/src/features/agent/chat/ModernAgentOutput/Header.tsx +4 -0
  247. package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +38 -5
  248. package/src/features/agent/chat/ModernAgentOutput/SummaryConversation.ts +2 -0
  249. package/src/features/agent/chat/ModernAgentOutput/utils.test.ts +14 -0
  250. package/src/features/agent/chat/hooks/useAgentPlans.test.ts +52 -0
  251. package/src/features/agent/chat/hooks/useAgentPlans.ts +5 -5
  252. package/src/features/agent/chat/hooks/useFileProcessing.test.tsx +0 -5
  253. package/src/features/agent/chat/index.ts +6 -0
  254. package/src/features/facets/AgentRunnerFacetsNav.tsx +26 -0
  255. package/src/features/permissions/UserPermissionsProvider.test.tsx +50 -1
  256. package/src/features/permissions/UserPermissionsProvider.tsx +82 -44
  257. package/src/features/store/objects/search/DocumentSearchContext.ts +8 -3
  258. package/src/features/store/objects/selection/SelectionActions.tsx +4 -1
  259. package/src/i18n/index.tsx +25 -2
  260. package/src/i18n/locales/ar.json +30 -0
  261. package/src/i18n/locales/de.json +30 -0
  262. package/src/i18n/locales/en.json +30 -0
  263. package/src/i18n/locales/es.json +30 -0
  264. package/src/i18n/locales/fr.json +30 -0
  265. package/src/i18n/locales/it.json +30 -0
  266. package/src/i18n/locales/ja.json +30 -0
  267. package/src/i18n/locales/ko.json +30 -0
  268. package/src/i18n/locales/pt.json +30 -0
  269. package/src/i18n/locales/ru.json +30 -0
  270. package/src/i18n/locales/tr.json +30 -0
  271. package/src/i18n/locales/zh-TW.json +30 -0
  272. package/src/i18n/locales/zh.json +30 -0
  273. package/src/layout/ErrorPage.tsx +1 -1
  274. package/src/layout/Navbar.test.tsx +58 -0
  275. package/src/layout/Navbar.tsx +5 -2
  276. package/src/router/path.test.ts +5 -5
  277. package/src/session/UserSession.ts +2 -4
  278. package/src/session/UserSessionProvider.strict-mode.test.tsx +44 -0
  279. package/src/session/UserSessionProvider.test.ts +62 -1
  280. package/src/session/UserSessionProvider.tsx +12 -4
  281. package/src/session/auth/composable.renewal.test.ts +170 -0
  282. package/src/session/auth/composable.test.ts +23 -1
  283. package/src/session/auth/composable.ts +101 -2
  284. package/src/session/auth/domainRouting.test.ts +35 -65
  285. package/src/session/auth/domainRouting.ts +51 -34
  286. package/src/session/auth/firebase.test.ts +25 -0
  287. package/src/session/auth/firebase.ts +10 -0
  288. package/src/session/auth/useAuthState.ts +11 -4
  289. package/src/session/index.ts +3 -1
  290. package/src/shell/AuthScreenPreview.test.tsx +44 -0
  291. package/src/shell/AuthScreenPreview.tsx +228 -0
  292. package/src/shell/BrandedAuthScreens.test.tsx +181 -0
  293. package/src/shell/BrandedAuthScreens.tsx +117 -0
  294. package/src/shell/SplashScreen.test.tsx +37 -0
  295. package/src/shell/SplashScreen.tsx +44 -39
  296. package/src/shell/VertesiaShell.tsx +49 -22
  297. package/src/shell/apps/StandaloneApp.tsx +5 -1
  298. package/src/shell/index.tsx +6 -0
  299. package/src/shell/login/SignInAuthPending.tsx +3 -3
  300. package/src/shell/login/SignInEmailStep.test.tsx +32 -0
  301. package/src/shell/login/SignInEmailStep.tsx +13 -9
  302. package/src/shell/login/SignInFlow.tsx +213 -0
  303. package/src/shell/login/SignInPageShell.tsx +62 -0
  304. package/src/shell/login/SignInPrimitives.tsx +14 -11
  305. package/src/shell/login/SignInRestrictedEnvStep.tsx +19 -7
  306. package/src/shell/login/SigninScreen.test.tsx +104 -0
  307. package/src/shell/login/SigninScreen.tsx +115 -145
  308. package/src/shell/login/SignupForm.tsx +8 -3
  309. package/src/shell/login/signInUtils.ts +42 -9
  310. package/src/widgets/markdown/CollaborativeMarkdownRenderer.test.tsx +11 -3
  311. package/src/widgets/markdown/markdown.css +21 -21
  312. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js +0 -5
  313. package/lib/vertesia-ui-i18n.BfN7iOHb.chunk.js.map +0 -1
  314. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js +0 -5
  315. package/lib/vertesia-ui-i18n.BjH2zEZw.chunk.js.map +0 -1
  316. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js +0 -5
  317. package/lib/vertesia-ui-i18n.BjSwAZXl.chunk.js.map +0 -1
  318. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js +0 -5
  319. package/lib/vertesia-ui-i18n.C7PUm5Au.chunk.js.map +0 -1
  320. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js +0 -5
  321. package/lib/vertesia-ui-i18n.CF_1mUS5.chunk.js.map +0 -1
  322. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js +0 -5
  323. package/lib/vertesia-ui-i18n.ChfUl3_-.chunk.js.map +0 -1
  324. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js +0 -5
  325. package/lib/vertesia-ui-i18n.D-Sk-5d1.chunk.js.map +0 -1
  326. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js +0 -5
  327. package/lib/vertesia-ui-i18n.D4rnu1_S.chunk.js.map +0 -1
  328. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js +0 -5
  329. package/lib/vertesia-ui-i18n.DDf0-laK.chunk.js.map +0 -1
  330. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js +0 -5
  331. package/lib/vertesia-ui-i18n.DN79y06J.chunk.js.map +0 -1
  332. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js +0 -5
  333. package/lib/vertesia-ui-i18n.DWLIciYQ.chunk.js.map +0 -1
  334. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js +0 -5
  335. package/lib/vertesia-ui-i18n.DvF_YaAJ.chunk.js.map +0 -1
  336. package/src/session/auth/authState.test.ts +0 -35
@@ -0,0 +1,66 @@
1
+ import { type AgentMessage, type AgentRunFeedbackEntry, type AgentRunFeedbackPayload, type AgentRunFeedbackRating, type AgentRunFeedbackReasonCode, type AgentRunFeedbackStatus } from '@vertesia/common';
2
+ import { type ReactNode } from 'react';
3
+ export declare function agentRunFeedbackReasonCodes(rating: AgentRunFeedbackRating): AgentRunFeedbackReasonCode[];
4
+ /**
5
+ * Opaque identifier of one message inside its run, used as the feedback `message_id`. Agent
6
+ * messages carry no id of their own; the workstream plus the timestamp is what the transcript
7
+ * itself keys on.
8
+ */
9
+ export declare function agentMessageFeedbackId(message: Pick<AgentMessage, 'workstream_id' | 'timestamp'>): string;
10
+ /**
11
+ * Whether a transcript message can carry a rating. Only a final answer can: while an answer is
12
+ * still streaming, the transcript shows a placeholder stamped with the browser clock, and a
13
+ * rating keyed to that timestamp would never match the answer the worker eventually posts, so
14
+ * the same answer would end up rated twice.
15
+ */
16
+ export declare function isAgentMessageRatable(message: Pick<AgentMessage, 'type' | 'details'>): boolean;
17
+ /**
18
+ * The current user's active rating per scope. A replaced entry is history; among the rest the
19
+ * latest `rated_at` wins, which is also what the server's one-vote-per-scope rule keeps.
20
+ */
21
+ export declare function activeRatingsByScope(agentRunId: string, entries: readonly AgentRunFeedbackEntry[] | undefined, principalRef: string | undefined): Map<string, AgentRunFeedbackRating>;
22
+ /**
23
+ * Loads the ratings the current user already gave on `agentRunId` and hands them to every
24
+ * {@link AgentRunFeedback} rendered underneath, so the thumbs survive a reload of the
25
+ * conversation. One read per run, however many messages carry a control.
26
+ *
27
+ * Without a provider the controls still work; they just start blank.
28
+ */
29
+ export declare function AgentRunFeedbackProvider({ agentRunId, children }: {
30
+ agentRunId: string;
31
+ children: ReactNode;
32
+ }): import("react").JSX.Element;
33
+ export interface AgentRunFeedbackProps {
34
+ /** The run being rated. */
35
+ agentRunId: string;
36
+ /** Rate one message rather than the run as a whole. */
37
+ messageId?: string;
38
+ /** Position of the rated message in the run. Sent alongside or instead of `messageId`. */
39
+ messageSeq?: number;
40
+ /** `compact` matches the icon-button sizing used by the conversation header's compact variant. */
41
+ variant?: 'full' | 'compact';
42
+ /** `inline` fades the control until the pointer is over the message it belongs to. */
43
+ tone?: 'default' | 'inline';
44
+ className?: string;
45
+ /** Called after every accepted round trip, with what the server said it did with the rating. */
46
+ onRecorded?: (payload: AgentRunFeedbackPayload, status: AgentRunFeedbackStatus) => void;
47
+ }
48
+ /**
49
+ * Thumbs up / thumbs down on an agent run.
50
+ *
51
+ * The click records the rating on its own, immediately — that is the signal being collected, and
52
+ * making the user fill a form first would cost most of it. Nothing opens on its own: once the
53
+ * rating is in, a quiet "Tell us more" link appears next to the thumbs, and only that opens the
54
+ * detail dialog for the reason code and an optional comment. Submitting it sends a revision of the
55
+ * same rating, which the server supersedes the first one with.
56
+ *
57
+ * Every submission carries a fresh `feedback_id`: it is the server's idempotency key, so a retried
58
+ * request cannot count twice, and a second vote by the same user on the same scope replaces the
59
+ * first (`replaced`) rather than adding to it. Both `recorded` and `replaced` mean the rating is in.
60
+ *
61
+ * The outcome is read from the response's `status`, not from the HTTP code: a deployment that does
62
+ * not collect ratings answers 200 with `disabled` and has counted nothing. Saying "thanks" there
63
+ * would be a lie, so the control says the rating was not recorded and stops offering itself.
64
+ */
65
+ export declare function AgentRunFeedback({ agentRunId, messageId, messageSeq, variant, tone, className, onRecorded, }: AgentRunFeedbackProps): import("react").JSX.Element | null;
66
+ //# sourceMappingURL=AgentRunFeedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRunFeedback.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/chat/AgentRunFeedback.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,YAAY,EAEjB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC9B,MAAM,kBAAkB,CAAC;AAiB1B,OAAO,EAAiB,KAAK,SAAS,EAAoD,MAAM,OAAO,CAAC;AAyBxG,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,sBAAsB,GAAG,0BAA0B,EAAE,CAExG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,GAAG,WAAW,CAAC,GAAG,MAAM,CAEzG;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAI9F;AAqDD;;;GAGG;AACH,wBAAgB,oBAAoB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,qBAAqB,EAAE,GAAG,SAAS,EACrD,YAAY,EAAE,MAAM,GAAG,SAAS,GACjC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAUrC;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BA2C7G;AAED,MAAM,WAAW,qBAAqB;IAClC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,sFAAsF;IACtF,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC3F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,EAC7B,UAAU,EACV,SAAS,EACT,UAAU,EACV,OAAgB,EAChB,IAAgB,EAChB,SAAS,EACT,UAAU,GACb,EAAE,qBAAqB,sCAgOvB"}
@@ -0,0 +1,298 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { AGENT_RUN_FEEDBACK_COMMENT_MAX_LENGTH, AgentMessageType, } from '@vertesia/common';
3
+ import { Button, cn, FormItem, Modal, ModalBody, ModalFooter, ModalTitle, SelectBox, Textarea, useToast, VTooltip, } from '@vertesia/ui/core';
4
+ import { useUITranslation } from '@vertesia/ui/i18n';
5
+ import { useUserSession } from '@vertesia/ui/session';
6
+ import { ThumbsDown, ThumbsUp } from 'lucide-react';
7
+ import { createContext, useContext, useEffect, useMemo, useRef, useState } from 'react';
8
+ /**
9
+ * Which rating each reason code belongs to.
10
+ *
11
+ * Written as a `Record` over the published enum on purpose: adding a code to
12
+ * `AgentRunFeedbackReasonCode` breaks this file until someone decides where it belongs, so the
13
+ * picker can never silently stop offering a code the API accepts. `other` is offered on both sides.
14
+ */
15
+ const REASON_CODE_RATINGS = {
16
+ accurate: ['up'],
17
+ helpful: ['up'],
18
+ fast: ['up'],
19
+ well_explained: ['up'],
20
+ wrong_result: ['down'],
21
+ incomplete: ['down'],
22
+ misunderstood_request: ['down'],
23
+ too_slow: ['down'],
24
+ tool_failure: ['down'],
25
+ unsafe_action: ['down'],
26
+ other: ['up', 'down'],
27
+ };
28
+ const REASON_CODES = Object.keys(REASON_CODE_RATINGS);
29
+ export function agentRunFeedbackReasonCodes(rating) {
30
+ return REASON_CODES.filter((code) => REASON_CODE_RATINGS[code].includes(rating));
31
+ }
32
+ /**
33
+ * Opaque identifier of one message inside its run, used as the feedback `message_id`. Agent
34
+ * messages carry no id of their own; the workstream plus the timestamp is what the transcript
35
+ * itself keys on.
36
+ */
37
+ export function agentMessageFeedbackId(message) {
38
+ return `${message.workstream_id || 'main'}:${message.timestamp}`;
39
+ }
40
+ /**
41
+ * Whether a transcript message can carry a rating. Only a final answer can: while an answer is
42
+ * still streaming, the transcript shows a placeholder stamped with the browser clock, and a
43
+ * rating keyed to that timestamp would never match the answer the worker eventually posts, so
44
+ * the same answer would end up rated twice.
45
+ */
46
+ export function isAgentMessageRatable(message) {
47
+ if (message.type !== AgentMessageType.ANSWER)
48
+ return false;
49
+ const details = message.details;
50
+ return details?.source !== 'streaming_summary';
51
+ }
52
+ /** Idempotency key for one submission; the server counts a retried id once. */
53
+ function newFeedbackId() {
54
+ if (typeof crypto !== 'undefined' && 'randomUUID' in crypto)
55
+ return crypto.randomUUID();
56
+ return `fb-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
57
+ }
58
+ /** `recorded` and `replaced` both mean the rating is in; only `disabled` is a non-outcome. */
59
+ function isAccepted(status) {
60
+ return status === 'recorded' || status === 'replaced';
61
+ }
62
+ function scopeKeyOf({ agentRunId, messageId, messageSeq }) {
63
+ return `${agentRunId}|${messageId ?? ''}|${messageSeq ?? ''}`;
64
+ }
65
+ function entryScopeKey(agentRunId, entry) {
66
+ return scopeKeyOf({ agentRunId, messageId: entry.message_id, messageSeq: entry.message_seq });
67
+ }
68
+ const AgentRunFeedbackContext = createContext(null);
69
+ /**
70
+ * The server stores the rater as a principal ref (`user:<id>`), the same string the auth layer
71
+ * builds from the token: `user_id` when the token carries one, else `sub`.
72
+ */
73
+ function currentPrincipalRef(user) {
74
+ const id = user?.user_id ?? user?.sub;
75
+ return id ? `user:${id}` : undefined;
76
+ }
77
+ /**
78
+ * The current user's active rating per scope. A replaced entry is history; among the rest the
79
+ * latest `rated_at` wins, which is also what the server's one-vote-per-scope rule keeps.
80
+ */
81
+ export function activeRatingsByScope(agentRunId, entries, principalRef) {
82
+ const latest = new Map();
83
+ if (!principalRef)
84
+ return new Map();
85
+ for (const entry of entries ?? []) {
86
+ if (entry.user_id !== principalRef || entry.replaced_at)
87
+ continue;
88
+ const key = entryScopeKey(agentRunId, entry);
89
+ const seen = latest.get(key);
90
+ if (!seen || seen.rated_at < entry.rated_at)
91
+ latest.set(key, entry);
92
+ }
93
+ return new Map(Array.from(latest, ([key, entry]) => [key, entry.rating]));
94
+ }
95
+ /**
96
+ * Loads the ratings the current user already gave on `agentRunId` and hands them to every
97
+ * {@link AgentRunFeedback} rendered underneath, so the thumbs survive a reload of the
98
+ * conversation. One read per run, however many messages carry a control.
99
+ *
100
+ * Without a provider the controls still work; they just start blank.
101
+ */
102
+ export function AgentRunFeedbackProvider({ agentRunId, children }) {
103
+ const { client, user } = useUserSession();
104
+ const principalRef = currentPrincipalRef(user);
105
+ const [loaded, setLoaded] = useState();
106
+ const [remembered, setRemembered] = useState(() => new Map());
107
+ // Read through a ref: the run is re-read when the run or the user changes, not whenever the
108
+ // session hands out a new client object.
109
+ const clientRef = useRef(client);
110
+ clientRef.current = client;
111
+ useEffect(() => {
112
+ let cancelled = false;
113
+ // The run document carries the retained entries; a failure here only costs the hydration,
114
+ // never the ability to rate.
115
+ clientRef.current.agents
116
+ .retrieve(agentRunId)
117
+ .then((run) => {
118
+ if (cancelled)
119
+ return;
120
+ setLoaded({ agentRunId, ratings: activeRatingsByScope(agentRunId, run.feedback, principalRef) });
121
+ })
122
+ .catch(() => {
123
+ if (!cancelled)
124
+ setLoaded({ agentRunId, ratings: new Map() });
125
+ });
126
+ return () => {
127
+ cancelled = true;
128
+ };
129
+ }, [agentRunId, principalRef]);
130
+ const value = useMemo(() => ({
131
+ agentRunId,
132
+ ratingFor: (scope) => {
133
+ const key = scopeKeyOf(scope);
134
+ return remembered.get(key) ?? (loaded?.agentRunId === agentRunId ? loaded.ratings.get(key) : undefined);
135
+ },
136
+ remember: (scope, rating) => {
137
+ setRemembered((previous) => new Map(previous).set(scopeKeyOf(scope), rating));
138
+ },
139
+ }), [agentRunId, loaded, remembered]);
140
+ return _jsx(AgentRunFeedbackContext.Provider, { value: value, children: children });
141
+ }
142
+ /**
143
+ * Thumbs up / thumbs down on an agent run.
144
+ *
145
+ * The click records the rating on its own, immediately — that is the signal being collected, and
146
+ * making the user fill a form first would cost most of it. Nothing opens on its own: once the
147
+ * rating is in, a quiet "Tell us more" link appears next to the thumbs, and only that opens the
148
+ * detail dialog for the reason code and an optional comment. Submitting it sends a revision of the
149
+ * same rating, which the server supersedes the first one with.
150
+ *
151
+ * Every submission carries a fresh `feedback_id`: it is the server's idempotency key, so a retried
152
+ * request cannot count twice, and a second vote by the same user on the same scope replaces the
153
+ * first (`replaced`) rather than adding to it. Both `recorded` and `replaced` mean the rating is in.
154
+ *
155
+ * The outcome is read from the response's `status`, not from the HTTP code: a deployment that does
156
+ * not collect ratings answers 200 with `disabled` and has counted nothing. Saying "thanks" there
157
+ * would be a lie, so the control says the rating was not recorded and stops offering itself.
158
+ */
159
+ export function AgentRunFeedback({ agentRunId, messageId, messageSeq, variant = 'full', tone = 'default', className, onRecorded, }) {
160
+ const { t } = useUITranslation();
161
+ const { client } = useUserSession();
162
+ const toast = useToast();
163
+ const hydration = useContext(AgentRunFeedbackContext);
164
+ const [ownRating, setOwnRating] = useState();
165
+ // What this session recorded wins over what the run document said at load time; a stored
166
+ // rating from a previous session fills in when nothing was clicked here yet.
167
+ const rating = ownRating ??
168
+ (hydration?.agentRunId === agentRunId ? hydration.ratingFor({ agentRunId, messageId, messageSeq }) : undefined);
169
+ const [pendingRating, setPendingRating] = useState();
170
+ const [isUnavailable, setIsUnavailable] = useState(false);
171
+ const [isDetailOpen, setIsDetailOpen] = useState(false);
172
+ const [isSubmittingDetail, setIsSubmittingDetail] = useState(false);
173
+ const [reasonCode, setReasonCode] = useState();
174
+ const [comment, setComment] = useState('');
175
+ const scope = messageId !== undefined || messageSeq !== undefined ? 'message' : 'run';
176
+ /**
177
+ * The subject this control is rating. Every piece of state below belongs to it and to nothing
178
+ * else, so when it changes they all have to go.
179
+ *
180
+ * Without this the component kept its rating, its reason code, its comment and its open dialog
181
+ * across a switch to a different run: the previous conversation's thumb stayed lit on the new
182
+ * one, and submitting a dialog left open across the switch sent the old comment against the new
183
+ * run's id — `send` reads `agentRunId` at call time, so the request went to the new run
184
+ * carrying text written about the old one. A parent that remounts per run hid it; the component
185
+ * is exported from `@vertesia/ui` and cannot assume one does.
186
+ *
187
+ * Reset during render, which is React's documented way to adjust state when a prop changes: it
188
+ * re-renders before committing, so nothing paints with the stale value the way a `useEffect`
189
+ * reset would.
190
+ */
191
+ const scopeKey = `${agentRunId}|${messageId ?? ''}|${messageSeq ?? ''}`;
192
+ const [lastScopeKey, setLastScopeKey] = useState(scopeKey);
193
+ const currentScopeKey = useRef(scopeKey);
194
+ if (lastScopeKey !== scopeKey) {
195
+ setLastScopeKey(scopeKey);
196
+ currentScopeKey.current = scopeKey;
197
+ setOwnRating(undefined);
198
+ setPendingRating(undefined);
199
+ setIsDetailOpen(false);
200
+ setIsSubmittingDetail(false);
201
+ setReasonCode(undefined);
202
+ setComment('');
203
+ // `isUnavailable` is NOT reset: `disabled` is a property of the deployment, not of the run,
204
+ // so a control that has already learned the pipeline is off stays hidden rather than
205
+ // re-offering itself on every switch and collecting clicks nothing records.
206
+ }
207
+ const send = async (value, detail) => {
208
+ const payload = {
209
+ feedback_id: newFeedbackId(),
210
+ rating: value,
211
+ ...(detail && reasonCode !== undefined ? { reason_code: reasonCode } : {}),
212
+ ...(detail && comment.trim().length > 0 ? { comment: comment.trim() } : {}),
213
+ ...(messageId !== undefined ? { message_id: messageId } : {}),
214
+ ...(messageSeq !== undefined ? { message_seq: messageSeq } : {}),
215
+ };
216
+ // Captured before the await: a response that lands after the user has moved to another run
217
+ // describes a subject this control is no longer showing, and applying it would light a
218
+ // thumb for a rating given somewhere else.
219
+ const sentScopeKey = scopeKey;
220
+ try {
221
+ const response = await client.agents.recordFeedback(agentRunId, payload);
222
+ if (sentScopeKey !== currentScopeKey.current)
223
+ return undefined;
224
+ if (isAccepted(response.status)) {
225
+ onRecorded?.(payload, response.status);
226
+ setOwnRating(value);
227
+ hydration?.remember({ agentRunId, messageId, messageSeq }, value);
228
+ return response.status;
229
+ }
230
+ // `disabled` means this deployment collects no ratings; there is nothing to retry, so
231
+ // the control removes itself rather than inviting a second useless click.
232
+ setIsUnavailable(response.status === 'disabled');
233
+ toast({
234
+ status: 'info',
235
+ title: t('agent.feedback.notRecorded'),
236
+ description: t(`agent.feedback.status.${response.status}`),
237
+ duration: 4000,
238
+ });
239
+ return response.status;
240
+ }
241
+ catch (error) {
242
+ if (sentScopeKey !== currentScopeKey.current)
243
+ return undefined;
244
+ toast({
245
+ status: 'error',
246
+ title: t('agent.feedback.failed'),
247
+ description: error instanceof Error ? error.message : String(error),
248
+ duration: 4000,
249
+ });
250
+ return undefined;
251
+ }
252
+ };
253
+ const handleRate = async (value) => {
254
+ if (pendingRating)
255
+ return;
256
+ setPendingRating(value);
257
+ try {
258
+ await send(value, false);
259
+ }
260
+ finally {
261
+ setPendingRating(undefined);
262
+ }
263
+ };
264
+ const openDetail = () => {
265
+ if (!rating)
266
+ return;
267
+ setIsDetailOpen(true);
268
+ };
269
+ const handleSubmitDetail = async () => {
270
+ if (!rating)
271
+ return;
272
+ setIsSubmittingDetail(true);
273
+ try {
274
+ const status = await send(rating, true);
275
+ if (status && isAccepted(status)) {
276
+ setIsDetailOpen(false);
277
+ toast({ status: 'success', title: t('agent.feedback.thanks'), duration: 2000 });
278
+ }
279
+ }
280
+ finally {
281
+ setIsSubmittingDetail(false);
282
+ }
283
+ };
284
+ if (isUnavailable)
285
+ return null;
286
+ const isCompact = variant === 'compact';
287
+ const upLabel = scope === 'message' ? t('agent.feedback.rateMessageUp') : t('agent.feedback.rateRunUp');
288
+ const downLabel = scope === 'message' ? t('agent.feedback.rateMessageDown') : t('agent.feedback.rateRunDown');
289
+ const thumb = (value, label, Icon) => (_jsx(VTooltip, { description: label, asChild: true, children: _jsx(Button, { type: "button", variant: "ghost", size: isCompact ? 'icon' : 'xs', "aria-label": label, "aria-pressed": rating === value, disabled: pendingRating !== undefined, onClick: () => void handleRate(value), className: cn('transition-colors duration-200 rounded-md', isCompact && 'size-8 rounded-lg', rating === value && (value === 'up' ? 'text-success' : 'text-destructive')), children: _jsx(Icon, { className: "size-4" }) }) }));
290
+ return (_jsxs("div", { className: cn('flex items-center gap-0.5',
291
+ // Inline under an answer the control should not compete with the text: it sits
292
+ // faded until the pointer is over the message, and stays visible once a rating is
293
+ // in so the user can find "Tell us more" again.
294
+ tone === 'inline' &&
295
+ !rating &&
296
+ 'opacity-40 transition-opacity duration-200 group-hover:opacity-100 focus-within:opacity-100', className), children: [thumb('up', upLabel, ThumbsUp), thumb('down', downLabel, ThumbsDown), rating && !isDetailOpen && (_jsx(Button, { type: "button", variant: "ghost", size: "xs", onClick: openDetail, className: "ms-1 text-xs text-muted hover:text-foreground", children: t('agent.feedback.tellUsMore') })), _jsxs(Modal, { isOpen: isDetailOpen, onClose: () => setIsDetailOpen(false), size: "md", disableCloseOnClickOutside: true, children: [_jsx(ModalTitle, { children: t('agent.feedback.detailTitle') }), _jsx(ModalBody, { children: _jsxs("div", { className: "flex flex-col gap-4", children: [_jsx("p", { className: "text-sm text-muted", children: t('agent.feedback.detailHelp') }), _jsx(FormItem, { label: t('agent.feedback.reasonLabel'), children: _jsx(SelectBox, { options: rating ? agentRunFeedbackReasonCodes(rating) : [], value: reasonCode, onChange: setReasonCode, optionLabel: (code) => t(`agent.feedback.reason.${code}`), placeholder: t('agent.feedback.reasonPlaceholder'), "aria-label": t('agent.feedback.reasonLabel'), isClearable: true }) }), _jsx(FormItem, { label: t('agent.feedback.commentLabel'), helpText: t('agent.feedback.commentHelp'), children: _jsx(Textarea, { value: comment, onChange: (e) => setComment(e.target.value), maxLength: AGENT_RUN_FEEDBACK_COMMENT_MAX_LENGTH, minLines: 3, maxLines: 8, placeholder: t('agent.feedback.commentPlaceholder') }) })] }) }), _jsxs(ModalFooter, { children: [_jsx(Button, { variant: "ghost", onClick: () => setIsDetailOpen(false), disabled: isSubmittingDetail, children: t('agent.feedback.skip') }), _jsx(Button, { onClick: () => void handleSubmitDetail(), isLoading: isSubmittingDetail, disabled: isSubmittingDetail || (reasonCode === undefined && comment.trim().length === 0), children: t('agent.feedback.submit') })] })] })] }));
297
+ }
298
+ //# sourceMappingURL=AgentRunFeedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRunFeedback.js","sourceRoot":"","sources":["../../../../src/features/agent/chat/AgentRunFeedback.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModernAgentConversation.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/chat/ModernAgentConversation.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModernAgentConversation.d.ts","sourceRoot":"","sources":["../../../../src/features/agent/chat/ModernAgentConversation.tsx"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { AgentApprovalModeSelector } from './AgentApprovalModeSelector';
12
12
  import { AgentChatPlaybackControls } from './AgentChatPlaybackControls';
13
13
  import { AgentRequestInputOverlay } from './AgentRequestInputOverlay';
14
14
  import { AgentRightPanel } from './AgentRightPanel.js';
15
+ import { AgentRunFeedbackProvider } from './AgentRunFeedback';
15
16
  import { AnimatedThinkingDots, PulsatingCircle } from './AnimatedThinkingDots';
16
17
  import { extractFilesFromClipboard } from './clipboardFiles.js';
17
18
  import { useAgentPlans } from './hooks/useAgentPlans.js';
@@ -711,7 +712,7 @@ acceptedFileTypes, maxFiles = 5, hideHeader = false, hideFileUpload = false, hid
711
712
  allowWorkflowControl,
712
713
  onAgentWorkingChange, agentRunId: startedAgentRunId, title: title, pendingStartMessage: pendingStartMessage ?? undefined, pendingStartTimestamp: pendingStartTimestamp ?? undefined, initialToolApprovalMode: toolApprovalMode }));
713
714
  }
714
- return (_jsx("div", { className: cn('flex flex-col items-center bg-background', isCompactStartView && !isExpandedStartComposer ? '' : 'h-full', className), children: _jsxs("div", { className: cn('relative flex w-full flex-col overflow-hidden border-0', isCompactStartView && !isExpandedStartComposer ? '' : 'h-full', fullWidth ? '' : 'max-w-4xl'), onDragEnter: canStageFiles ? handleDragEnter : undefined, onDragOver: canStageFiles ? handleDragOver : undefined, onDragLeave: canStageFiles ? handleDragLeave : undefined, onDrop: canStageFiles ? handleDrop : undefined, children: [canStageFiles && isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-info-background z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-info font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to stage for upload"] }) })), canStageFiles && (_jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptedFileTypes, onChange: handleFileInputChange, className: "hidden" })), !hideHeader && (_jsxs("div", { className: "flex items-center justify-between border-b border-border/60 bg-background px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "p-1", children: _jsx(Cpu, { className: "size-3.5 text-muted" }) }), _jsx("span", { className: "text-sm font-medium text-foreground", children: resolvedTitle })] }), onClose && !isModal && (_jsx(Button, { size: "xs", variant: "ghost", onClick: onClose, title: t('agent.close'), className: "text-muted hover:text-foreground", children: _jsx(XIcon, { className: "size-4" }) }))] })), _jsx("div", { className: cn('flex flex-col items-center justify-end bg-background px-4', isCompactStartView ? 'shrink-0 pt-3' : 'flex-1 overflow-y-auto'), children: pendingStartMessage && pendingStartTimestamp ? (_jsx(PendingStartConversation, { message: pendingStartMessage, startedAt: pendingStartTimestamp })) : (_jsx("div", { className: cn('mx-auto flex w-full max-w-3xl flex-col justify-end', isCompactStartView ? '' : 'min-h-full py-8'), children: initialMessage && (_jsx("div", { className: "text-[15px] leading-relaxed text-foreground/80", children: initialMessage })) })) }), _jsx("div", { className: cn('bg-background px-4 pb-safe-area-4 pt-2', isExpandedStartComposer ? 'flex min-h-0 flex-1 flex-col' : 'shrink-0'), children: _jsxs("div", { className: cn('mx-auto flex max-w-3xl flex-col gap-3 rounded-2xl border border-border/70 bg-mixer-muted/15 p-3 shadow-lg shadow-black/5', isExpandedStartComposer && 'min-h-0 w-full flex-1', inputContainerClassName), children: [canStageFiles && stagedFiles.length > 0 && (_jsxs("div", { className: "flex flex-wrap gap-2", children: [visibleStagedFiles.map((file, index) => (_jsxs("div", { className: "flex items-center gap-1.5 rounded-md bg-attention/10 px-2 py-1 text-sm text-attention", title: t('agent.fileStagedTooltip'), children: [_jsx(FileTextIcon, { className: "size-3.5" }), _jsx("span", { className: "max-w-[120px] truncate", children: file.name }), _jsx("span", { className: "text-xs opacity-70", children: t('agent.staged') }), _jsx(Button, { variant: "unstyled", "aria-label": `Remove staged file ${file.name}`, onClick: () => removeStagedFile(index), className: "ms-1 rounded p-0.5 hover:bg-attention/20", children: _jsx(XIcon, { className: "size-3" }) })] }, `${file.name}-${file.size}-${file.lastModified}`))), stagedFiles.length > COLLAPSED_STAGED_FILE_COUNT && (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", "aria-expanded": areStagedFilesExpanded, onClick: () => setAreStagedFilesExpanded((expanded) => !expanded), className: "h-8 shrink-0 gap-1 rounded-xl px-2.5 text-xs text-muted", children: [!areStagedFilesExpanded && _jsxs("span", { children: ["+", hiddenStagedFileCount] }), areStagedFilesExpanded ? t('agent.showLess') : t('agent.showMore'), _jsx(ChevronDown, { className: cn('size-3.5 transition-transform', areStagedFilesExpanded && 'rotate-180'), "aria-hidden": "true" })] }))] })), _jsx(Textarea, { ref: inputRef, value: inputValue, onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, onPaste: handlePaste, placeholder: resolvedPlaceholder, disabled: isSending, rows: 2, className: cn('min-h-[72px] resize-none border-0 bg-transparent px-0 py-0 text-sm leading-6 shadow-none focus-visible:ring-0',
715
+ return (_jsx("div", { className: cn('flex flex-col items-center bg-background', isCompactStartView && !isExpandedStartComposer ? '' : 'h-full', className), children: _jsxs("div", { className: cn('relative flex w-full flex-col overflow-hidden border-0', isCompactStartView && !isExpandedStartComposer ? '' : 'h-full', fullWidth ? '' : 'max-w-4xl'), onDragEnter: canStageFiles ? handleDragEnter : undefined, onDragOver: canStageFiles ? handleDragOver : undefined, onDragLeave: canStageFiles ? handleDragLeave : undefined, onDrop: canStageFiles ? handleDrop : undefined, children: [canStageFiles && isDragOver && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-info z-50 pointer-events-none rounded-lg", children: _jsxs("div", { className: "text-info font-medium flex items-center gap-2 text-lg", children: [_jsx(UploadIcon, { className: "size-6" }), "Drop files to stage for upload"] }) })), canStageFiles && (_jsx("input", { ref: fileInputRef, type: "file", multiple: true, accept: acceptedFileTypes, onChange: handleFileInputChange, className: "hidden" })), !hideHeader && (_jsxs("div", { className: "flex items-center justify-between border-b border-border/60 bg-background px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "p-1", children: _jsx(Cpu, { className: "size-3.5 text-muted" }) }), _jsx("span", { className: "text-sm font-medium text-foreground", children: resolvedTitle })] }), onClose && !isModal && (_jsx(Button, { size: "xs", variant: "ghost", onClick: onClose, title: t('agent.close'), className: "text-muted hover:text-foreground", children: _jsx(XIcon, { className: "size-4" }) }))] })), _jsx("div", { className: cn('flex flex-col items-center justify-end bg-background px-4', isCompactStartView ? 'shrink-0 pt-3' : 'flex-1 overflow-y-auto'), children: pendingStartMessage && pendingStartTimestamp ? (_jsx(PendingStartConversation, { message: pendingStartMessage, startedAt: pendingStartTimestamp })) : (_jsx("div", { className: cn('mx-auto flex w-full max-w-3xl flex-col justify-end', isCompactStartView ? '' : 'min-h-full py-8'), children: initialMessage && (_jsx("div", { className: "text-[15px] leading-relaxed text-foreground/80", children: initialMessage })) })) }), _jsx("div", { className: cn('bg-background px-4 pb-safe-area-4 pt-2', isExpandedStartComposer ? 'flex min-h-0 flex-1 flex-col' : 'shrink-0'), children: _jsxs("div", { className: cn('mx-auto flex max-w-3xl flex-col gap-3 rounded-2xl border border-border/70 bg-mixer-muted/15 p-3 shadow-lg shadow-black/5', isExpandedStartComposer && 'min-h-0 w-full flex-1', inputContainerClassName), children: [canStageFiles && stagedFiles.length > 0 && (_jsxs("div", { className: "flex flex-wrap gap-2", children: [visibleStagedFiles.map((file, index) => (_jsxs("div", { className: "flex items-center gap-1.5 rounded-md bg-attention/10 px-2 py-1 text-sm text-attention", title: t('agent.fileStagedTooltip'), children: [_jsx(FileTextIcon, { className: "size-3.5" }), _jsx("span", { className: "max-w-[120px] truncate", children: file.name }), _jsx("span", { className: "text-xs opacity-70", children: t('agent.staged') }), _jsx(Button, { variant: "unstyled", "aria-label": `Remove staged file ${file.name}`, onClick: () => removeStagedFile(index), className: "ms-1 rounded p-0.5 hover:bg-attention/20", children: _jsx(XIcon, { className: "size-3" }) })] }, `${file.name}-${file.size}-${file.lastModified}`))), stagedFiles.length > COLLAPSED_STAGED_FILE_COUNT && (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", "aria-expanded": areStagedFilesExpanded, onClick: () => setAreStagedFilesExpanded((expanded) => !expanded), className: "h-8 shrink-0 gap-1 rounded-xl px-2.5 text-xs text-muted", children: [!areStagedFilesExpanded && _jsxs("span", { children: ["+", hiddenStagedFileCount] }), areStagedFilesExpanded ? t('agent.showLess') : t('agent.showMore'), _jsx(ChevronDown, { className: cn('size-3.5 transition-transform', areStagedFilesExpanded && 'rotate-180'), "aria-hidden": "true" })] }))] })), _jsx(Textarea, { ref: inputRef, value: inputValue, onChange: (e) => setInputValue(e.target.value), onKeyDown: handleKeyDown, onPaste: handlePaste, placeholder: resolvedPlaceholder, disabled: isSending, rows: 2, className: cn('min-h-[72px] resize-none border-0 bg-transparent px-0 py-0 text-sm leading-6 shadow-none focus-visible:ring-0',
715
716
  // The expanded composer is a fixed-height flex box (adjustTextareaHeight
716
717
  // pins it to 100%), so it has to scroll its own overflow. The auto-growing
717
718
  // variant hides overflow because it resizes to fit instead.
@@ -764,7 +765,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
764
765
  // Extracted hooks
765
766
  // ────────────────────────────────────────────
766
767
  const { messages, streamingMessages, isCompleted, initialHistoryStatus, debugChunkFlash, addOptimisticMessage, updateOptimisticMessageStatus, reconnect: reconnectStream, agentRunStatus, workflowRunId, serverFileUpdates, } = useAgentStream(client, agentRunId, onMessage);
767
- const { plans, activePlanIndex, setActivePlanIndex, workstreamStatusMap, showInput, showSlidingPanel, setShowSlidingPanel, } = useAgentPlans(messages, interactive, isModal);
768
+ const { plans, activePlanIndex, setActivePlanIndex, workstreamStatusMap, showInput, showSlidingPanel, setShowSlidingPanel, } = useAgentPlans(messages, interactive);
768
769
  const { openDocuments, activeDocumentId, isDocPanelOpen, docRefreshKey, closeDocPanel: handleCloseDocPanel, selectDocument, openDocInPanel, updateDocumentTitle, } = useDocumentPanel(messages);
769
770
  const deliveredArtifactRefs = useMemo(() => collectDeliveredArtifactRefs(messages), [messages]);
770
771
  const { processingFiles, hasProcessingFiles, handleFileUpload, removeProcessingFile, clearProcessingFiles } = useFileProcessing(client, agentRunId, serverFileUpdates, toast, deliveredArtifactRefs);
@@ -1057,7 +1058,8 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
1057
1058
  const handleChangePlan = useCallback((index) => {
1058
1059
  setActivePlanIndex(index);
1059
1060
  }, [setActivePlanIndex]);
1060
- const [rightPanelTab, setRightPanelTab] = useState(conversationContent || conversationTab ? 'conversation' : 'plan');
1061
+ const [rightPanelTab, setRightPanelTab] = useState(conversationContent || conversationTab ? 'conversation' : undefined);
1062
+ const defaultRightPanelTab = plans.length > 0 || panelWorkstreams.length === 0 ? 'plan' : 'workstreams';
1061
1063
  const [selectedArtifactPath, setSelectedArtifactPath] = useState(null);
1062
1064
  const [rightPanelWidth, setRightPanelWidth] = useState(400);
1063
1065
  const [isRightPanelResizing, setIsRightPanelResizing] = useState(false);
@@ -1771,7 +1773,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
1771
1773
  ? 'w-full flex-1 min-h-[50vh]'
1772
1774
  : fullWidth
1773
1775
  ? 'flex-1 w-full'
1774
- : `flex-1 mx-auto ${!isModal ? 'max-w-4xl' : ''}`), children: [!hideHeader && headerVariant === 'compact' && (_jsx("div", { className: "flex flex-shrink-0 justify-end border-b border-border/60 px-2 py-1 lg:hidden", children: renderConversationHeader('compact') })), !hideHeader && headerVariant !== 'compact' && (_jsx("div", { className: "flex-shrink-0", children: renderConversationHeader(headerVariant) })), isPlaybackEnabled && (_jsx("div", { className: "flex flex-shrink-0 justify-end px-2 py-1.5", children: _jsx(AgentChatPlaybackControls, { cursor: clampedPlaybackCursor, messages: playbackSourceMessages, onChangeCursor: handleChangePlaybackCursor }) })), messages.length === 0 && !effectiveIsCompleted && pendingStartMessage && pendingStartTimestamp ? (_jsx(PendingStartConversation, { message: pendingStartMessage, startedAt: pendingStartTimestamp })) : (_jsx(AllMessagesMixed, { messages: renderedMessages, workstreamSourceMessages: renderedWorkstreamSourceMessages, bottomRef: bottomRef, isCompleted: displayedIsCompleted, plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, showPlanPanel: showRightPanelProp && showSlidingPanel, onTogglePlanPanel: handleTogglePlanPanel, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, taskLabels: taskLabels, streamingMessages: displayedStreamingMessages, onSendMessage: isPlaybackLive ? handleSendMessage : undefined, onOpenArtifact: showArtifacts ? handleOpenArtifact : undefined, messageItemClassNames: messageItemClassNames, messageStyleOverrides: messageStyleOverrides, toolCallGroupClassNames: toolCallGroupClassNames, hideToolCallsInViewMode: hideToolCallsInViewMode, streamingMessageClassNames: streamingMessageClassNames, batchProgressPanelClassNames: batchProgressPanelClassNames, artifactRunId: agentRunId, viewMode: viewMode, hideWorkstreamTabs: hideWorkstreamTabs, workingIndicatorClassName: workingIndicatorClassName, messageListClassName: messageListClassName, StoreLinkComponent: effectiveStoreLinkComponent, CollectionLinkComponent: CollectionLinkComponent, prependFriendlyMessage: prependFriendlyMessage, initialRequestData: initialRequestData, initialRequestSchema: initialRequestSchema, initialRequestTitle: initialRequestTitle, initialRequestTemplate: initialRequestTemplate, showInitialRequest: initialHistoryStatus === 'empty' && messages.length === 0, hiddenMessageTypes: hiddenMessageTypes, disableAutoScroll: !isPlaybackLive, renderRequestInputControls: !shouldShowRequestInputOverlay, activeWorkstream: activeWorkstream, onActiveWorkstreamChange: setActiveWorkstream })), shouldShowRequestInputOverlay ? (_jsx(AgentRequestInputOverlay, { message: pendingRequestInputMessage, onSendMessage: isPlaybackLive ? handleSendMessage : undefined, onMcpConnected: isPlaybackLive ? handleMcpConnected : undefined, disabled: isUploading || !isPlaybackLive, isLoading: isSending || isUploading })) : isViewingPlaybackHistory && playbackActiveWorkstreams.length > 0 ? (_jsx("div", { className: "flex-shrink-0 pb-safe-area", children: _jsx(ActiveWorkstreamsSummary, { activeWorkstreams: playbackActiveWorkstreams, onSelectWorkstream: setActiveWorkstream }) })) : (shouldRenderLiveMessageInputArea && (_jsx("div", { className: "flex-shrink-0 pb-safe-area", children: isFailed ? (
1776
+ : `flex-1 mx-auto ${!isModal ? 'max-w-4xl' : ''}`), children: [!hideHeader && headerVariant === 'compact' && (_jsx("div", { className: "flex flex-shrink-0 justify-end border-b border-border/60 px-2 py-1 lg:hidden", children: renderConversationHeader('compact') })), !hideHeader && headerVariant !== 'compact' && (_jsx("div", { className: "flex-shrink-0", children: renderConversationHeader(headerVariant) })), isPlaybackEnabled && (_jsx("div", { className: "flex flex-shrink-0 justify-end px-2 py-1.5", children: _jsx(AgentChatPlaybackControls, { cursor: clampedPlaybackCursor, messages: playbackSourceMessages, onChangeCursor: handleChangePlaybackCursor }) })), messages.length === 0 && !effectiveIsCompleted && pendingStartMessage && pendingStartTimestamp ? (_jsx(PendingStartConversation, { message: pendingStartMessage, startedAt: pendingStartTimestamp })) : (_jsx(AgentRunFeedbackProvider, { agentRunId: agentRunId, children: _jsx(AllMessagesMixed, { messages: renderedMessages, workstreamSourceMessages: renderedWorkstreamSourceMessages, bottomRef: bottomRef, isCompleted: displayedIsCompleted, plan: getActivePlan.plan, workstreamStatus: getActivePlan.workstreamStatus, showPlanPanel: showRightPanelProp && showSlidingPanel, onTogglePlanPanel: handleTogglePlanPanel, plans: plans, activePlanIndex: activePlanIndex, onChangePlan: handleChangePlan, taskLabels: taskLabels, streamingMessages: displayedStreamingMessages, onSendMessage: isPlaybackLive ? handleSendMessage : undefined, onOpenArtifact: showArtifacts ? handleOpenArtifact : undefined, messageItemClassNames: messageItemClassNames, messageStyleOverrides: messageStyleOverrides, toolCallGroupClassNames: toolCallGroupClassNames, hideToolCallsInViewMode: hideToolCallsInViewMode, streamingMessageClassNames: streamingMessageClassNames, batchProgressPanelClassNames: batchProgressPanelClassNames, artifactRunId: agentRunId, agentRunId: agentRunId, viewMode: viewMode, hideWorkstreamTabs: hideWorkstreamTabs, workingIndicatorClassName: workingIndicatorClassName, messageListClassName: messageListClassName, StoreLinkComponent: effectiveStoreLinkComponent, CollectionLinkComponent: CollectionLinkComponent, prependFriendlyMessage: prependFriendlyMessage, initialRequestData: initialRequestData, initialRequestSchema: initialRequestSchema, initialRequestTitle: initialRequestTitle, initialRequestTemplate: initialRequestTemplate, showInitialRequest: initialHistoryStatus === 'empty' && messages.length === 0, hiddenMessageTypes: hiddenMessageTypes, disableAutoScroll: !isPlaybackLive, renderRequestInputControls: !shouldShowRequestInputOverlay, activeWorkstream: activeWorkstream, onActiveWorkstreamChange: setActiveWorkstream }) })), shouldShowRequestInputOverlay ? (_jsx(AgentRequestInputOverlay, { message: pendingRequestInputMessage, onSendMessage: isPlaybackLive ? handleSendMessage : undefined, onMcpConnected: isPlaybackLive ? handleMcpConnected : undefined, disabled: isUploading || !isPlaybackLive, isLoading: isSending || isUploading })) : isViewingPlaybackHistory && playbackActiveWorkstreams.length > 0 ? (_jsx("div", { className: "flex-shrink-0 pb-safe-area", children: _jsx(ActiveWorkstreamsSummary, { activeWorkstreams: playbackActiveWorkstreams, onSelectWorkstream: setActiveWorkstream }) })) : (shouldRenderLiveMessageInputArea && (_jsx("div", { className: "flex-shrink-0 pb-safe-area", children: isFailed ? (
1775
1777
  // FAILED takes priority over every other branch so the composer can
1776
1778
  // never render for a failed run. Use the caller's action when provided,
1777
1779
  // otherwise fall back to the default failed message box.
@@ -1819,7 +1821,7 @@ workingIndicatorClassName, messageListClassName, StoreLinkComponent, CollectionL
1819
1821
  // Conversation content
1820
1822
  conversationContent: conversationTab ? conversationAreaJsx : conversationContent,
1821
1823
  // Panel control
1822
- onClose: handleCloseRightPanel, defaultTab: rightPanelTab, activeTab: rightPanelTab, onTabChange: setRightPanelTab }) })] })), _jsxs(Modal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), children: [_jsx(ModalTitle, { children: "Export conversation as PDF" }), _jsxs(ModalBody, { children: [_jsx("p", { className: "mb-2", children: "This will open your browser's print dialog with the current conversation." }), _jsx("p", { className: "text-sm text-muted", children: "To save a PDF, choose \"Save as PDF\" or a similar option in the print dialog." })] }), _jsxs(ModalFooter, { align: "right", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setIsPdfModalOpen(false), children: "Cancel" }), _jsx(Button, { size: "sm", onClick: handleConfirmExportPdf, children: "Open print dialog" })] })] })] }) }) }));
1824
+ onClose: handleCloseRightPanel, defaultTab: rightPanelTab ?? defaultRightPanelTab, activeTab: rightPanelTab ?? defaultRightPanelTab, onTabChange: setRightPanelTab }) })] })), _jsxs(Modal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), children: [_jsx(ModalTitle, { children: "Export conversation as PDF" }), _jsxs(ModalBody, { children: [_jsx("p", { className: "mb-2", children: "This will open your browser's print dialog with the current conversation." }), _jsx("p", { className: "text-sm text-muted", children: "To save a PDF, choose \"Save as PDF\" or a similar option in the print dialog." })] }), _jsxs(ModalFooter, { align: "right", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setIsPdfModalOpen(false), children: "Cancel" }), _jsx(Button, { size: "sm", onClick: handleConfirmExportPdf, children: "Open print dialog" })] })] })] }) }) }));
1823
1825
  // Wrap with FusionFragmentProvider when fusionData is provided
1824
1826
  // This enables fusion-fragment code blocks to display data and supports
1825
1827
  // agent-mode interactions where clicking editable fields sends messages