@artooi/agents-web-components 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/LICENSE +21 -0
  3. package/README.md +4397 -2
  4. package/dist/agents-web-components.bundle.js +5708 -0
  5. package/dist/agents-web-components.bundle.js.map +7 -0
  6. package/dist/bundle.d.ts +3 -0
  7. package/dist/bundle.d.ts.map +1 -0
  8. package/dist/chat.d.ts +3 -0
  9. package/dist/chat.d.ts.map +1 -0
  10. package/dist/chat.js +16373 -0
  11. package/dist/chat.js.map +7 -0
  12. package/dist/chunk-ARNLFGCC.js +7715 -0
  13. package/dist/chunk-ARNLFGCC.js.map +7 -0
  14. package/dist/constants.d.ts +575 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/core/activity_registration.d.ts +19 -0
  17. package/dist/core/activity_registration.d.ts.map +1 -0
  18. package/dist/core/activity_registry.d.ts +46 -0
  19. package/dist/core/activity_registry.d.ts.map +1 -0
  20. package/dist/core/activity_renderer.d.ts +20 -0
  21. package/dist/core/activity_renderer.d.ts.map +1 -0
  22. package/dist/core/ag_ui_chat.d.ts +836 -0
  23. package/dist/core/ag_ui_chat.d.ts.map +1 -0
  24. package/dist/core/agui_client.d.ts +370 -0
  25. package/dist/core/agui_client.d.ts.map +1 -0
  26. package/dist/core/attachment.d.ts +42 -0
  27. package/dist/core/attachment.d.ts.map +1 -0
  28. package/dist/core/chat_registry.d.ts +23 -0
  29. package/dist/core/chat_registry.d.ts.map +1 -0
  30. package/dist/core/client_seed.d.ts +27 -0
  31. package/dist/core/client_seed.d.ts.map +1 -0
  32. package/dist/core/conversation_store.d.ts +195 -0
  33. package/dist/core/conversation_store.d.ts.map +1 -0
  34. package/dist/core/create_http_agent.d.ts +57 -0
  35. package/dist/core/create_http_agent.d.ts.map +1 -0
  36. package/dist/core/define_chat.d.ts +13 -0
  37. package/dist/core/define_chat.d.ts.map +1 -0
  38. package/dist/core/events/attachments_detail.d.ts +9 -0
  39. package/dist/core/events/attachments_detail.d.ts.map +1 -0
  40. package/dist/core/events/bar_height_detail.d.ts +6 -0
  41. package/dist/core/events/bar_height_detail.d.ts.map +1 -0
  42. package/dist/core/events/custom_agent_detail.d.ts +8 -0
  43. package/dist/core/events/custom_agent_detail.d.ts.map +1 -0
  44. package/dist/core/events/dock_width_detail.d.ts +8 -0
  45. package/dist/core/events/dock_width_detail.d.ts.map +1 -0
  46. package/dist/core/events/feedback_detail.d.ts +28 -0
  47. package/dist/core/events/feedback_detail.d.ts.map +1 -0
  48. package/dist/core/events/invalidate_detail.d.ts +16 -0
  49. package/dist/core/events/invalidate_detail.d.ts.map +1 -0
  50. package/dist/core/events/maximize_detail.d.ts +5 -0
  51. package/dist/core/events/maximize_detail.d.ts.map +1 -0
  52. package/dist/core/events/run_finished_detail.d.ts +36 -0
  53. package/dist/core/events/run_finished_detail.d.ts.map +1 -0
  54. package/dist/core/events/state_detail.d.ts +5 -0
  55. package/dist/core/events/state_detail.d.ts.map +1 -0
  56. package/dist/core/events/submit_detail.d.ts +8 -0
  57. package/dist/core/events/submit_detail.d.ts.map +1 -0
  58. package/dist/core/events/thread_detail.d.ts +27 -0
  59. package/dist/core/events/thread_detail.d.ts.map +1 -0
  60. package/dist/core/events/thread_title_detail.d.ts +8 -0
  61. package/dist/core/events/thread_title_detail.d.ts.map +1 -0
  62. package/dist/core/events/toggle_detail.d.ts +5 -0
  63. package/dist/core/events/toggle_detail.d.ts.map +1 -0
  64. package/dist/core/events/tool_run.d.ts +11 -0
  65. package/dist/core/events/tool_run.d.ts.map +1 -0
  66. package/dist/core/events/unread_detail.d.ts +11 -0
  67. package/dist/core/events/unread_detail.d.ts.map +1 -0
  68. package/dist/core/message_role.d.ts +4 -0
  69. package/dist/core/message_role.d.ts.map +1 -0
  70. package/dist/core/read_flag.d.ts +11 -0
  71. package/dist/core/read_flag.d.ts.map +1 -0
  72. package/dist/core/read_json_attribute.d.ts +15 -0
  73. package/dist/core/read_json_attribute.d.ts.map +1 -0
  74. package/dist/core/read_max_tool_rounds.d.ts +9 -0
  75. package/dist/core/read_max_tool_rounds.d.ts.map +1 -0
  76. package/dist/core/remote_conversation_store.d.ts +71 -0
  77. package/dist/core/remote_conversation_store.d.ts.map +1 -0
  78. package/dist/core/run_handlers.d.ts +85 -0
  79. package/dist/core/run_handlers.d.ts.map +1 -0
  80. package/dist/core/run_index.d.ts +58 -0
  81. package/dist/core/run_index.d.ts.map +1 -0
  82. package/dist/core/storage_scope.d.ts +118 -0
  83. package/dist/core/storage_scope.d.ts.map +1 -0
  84. package/dist/core/tool_outcome.d.ts +27 -0
  85. package/dist/core/tool_outcome.d.ts.map +1 -0
  86. package/dist/core/transcribe_audio.d.ts +32 -0
  87. package/dist/core/transcribe_audio.d.ts.map +1 -0
  88. package/dist/core/upload_attachment.d.ts +44 -0
  89. package/dist/core/upload_attachment.d.ts.map +1 -0
  90. package/dist/core/utils.d.ts +117 -0
  91. package/dist/core/utils.d.ts.map +1 -0
  92. package/dist/dom/animations.d.ts +122 -0
  93. package/dist/dom/animations.d.ts.map +1 -0
  94. package/dist/dom/dom_driver.d.ts +28 -0
  95. package/dist/dom/dom_driver.d.ts.map +1 -0
  96. package/dist/dom/highlight_overlay.d.ts +39 -0
  97. package/dist/dom/highlight_overlay.d.ts.map +1 -0
  98. package/dist/dom/native_setter.d.ts +5 -0
  99. package/dist/dom/native_setter.d.ts.map +1 -0
  100. package/dist/dom/ring_color.d.ts +16 -0
  101. package/dist/dom/ring_color.d.ts.map +1 -0
  102. package/dist/dom/utils.d.ts +3 -0
  103. package/dist/dom/utils.d.ts.map +1 -0
  104. package/dist/index.d.ts +62 -0
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +223 -0
  107. package/dist/index.js.map +7 -0
  108. package/dist/skills/fill_template.d.ts +16 -0
  109. package/dist/skills/fill_template.d.ts.map +1 -0
  110. package/dist/skills/parse_skills.d.ts +8 -0
  111. package/dist/skills/parse_skills.d.ts.map +1 -0
  112. package/dist/skills/skill.d.ts +33 -0
  113. package/dist/skills/skill.d.ts.map +1 -0
  114. package/dist/skills/skill_catalog.d.ts +69 -0
  115. package/dist/skills/skill_catalog.d.ts.map +1 -0
  116. package/dist/skills/skill_name_from.d.ts +12 -0
  117. package/dist/skills/skill_name_from.d.ts.map +1 -0
  118. package/dist/tools/chat_surface_tools.d.ts +77 -0
  119. package/dist/tools/chat_surface_tools.d.ts.map +1 -0
  120. package/dist/tools/client_tool_registry.d.ts +58 -0
  121. package/dist/tools/client_tool_registry.d.ts.map +1 -0
  122. package/dist/tools/is_destructive.d.ts +14 -0
  123. package/dist/tools/is_destructive.d.ts.map +1 -0
  124. package/dist/tools/is_navigates.d.ts +9 -0
  125. package/dist/tools/is_navigates.d.ts.map +1 -0
  126. package/dist/tools/page_action_tools.d.ts +30 -0
  127. package/dist/tools/page_action_tools.d.ts.map +1 -0
  128. package/dist/tools/page_map.d.ts +16 -0
  129. package/dist/tools/page_map.d.ts.map +1 -0
  130. package/dist/tools/page_state.d.ts +27 -0
  131. package/dist/tools/page_state.d.ts.map +1 -0
  132. package/dist/tools/parse_tool_catalog.d.ts +21 -0
  133. package/dist/tools/parse_tool_catalog.d.ts.map +1 -0
  134. package/dist/tools/route_map.d.ts +37 -0
  135. package/dist/tools/route_map.d.ts.map +1 -0
  136. package/dist/tools/tool_catalog.d.ts +86 -0
  137. package/dist/tools/tool_catalog.d.ts.map +1 -0
  138. package/dist/tools/tool_dispatch.d.ts +82 -0
  139. package/dist/tools/tool_dispatch.d.ts.map +1 -0
  140. package/dist/ui/charts/chart_block.d.ts +57 -0
  141. package/dist/ui/charts/chart_block.d.ts.map +1 -0
  142. package/dist/ui/charts/chart_spec_from.d.ts +12 -0
  143. package/dist/ui/charts/chart_spec_from.d.ts.map +1 -0
  144. package/dist/ui/charts/chart_styles.d.ts +2 -0
  145. package/dist/ui/charts/chart_styles.d.ts.map +1 -0
  146. package/dist/ui/charts/chart_tool.d.ts +15 -0
  147. package/dist/ui/charts/chart_tool.d.ts.map +1 -0
  148. package/dist/ui/composer/attachment_styles.d.ts +2 -0
  149. package/dist/ui/composer/attachment_styles.d.ts.map +1 -0
  150. package/dist/ui/composer/attachment_tray.d.ts +53 -0
  151. package/dist/ui/composer/attachment_tray.d.ts.map +1 -0
  152. package/dist/ui/composer/auto_grow.d.ts +10 -0
  153. package/dist/ui/composer/auto_grow.d.ts.map +1 -0
  154. package/dist/ui/composer/build_composer.d.ts +32 -0
  155. package/dist/ui/composer/build_composer.d.ts.map +1 -0
  156. package/dist/ui/composer/composer_attachments.d.ts +57 -0
  157. package/dist/ui/composer/composer_attachments.d.ts.map +1 -0
  158. package/dist/ui/composer/composer_styles.d.ts +2 -0
  159. package/dist/ui/composer/composer_styles.d.ts.map +1 -0
  160. package/dist/ui/composer/composer_voice.d.ts +48 -0
  161. package/dist/ui/composer/composer_voice.d.ts.map +1 -0
  162. package/dist/ui/composer/skill_styles.d.ts +2 -0
  163. package/dist/ui/composer/skill_styles.d.ts.map +1 -0
  164. package/dist/ui/composer/skills_menu.d.ts +34 -0
  165. package/dist/ui/composer/skills_menu.d.ts.map +1 -0
  166. package/dist/ui/composer/voice_input.d.ts +46 -0
  167. package/dist/ui/composer/voice_input.d.ts.map +1 -0
  168. package/dist/ui/excerpts/attach_copy_buttons.d.ts +13 -0
  169. package/dist/ui/excerpts/attach_copy_buttons.d.ts.map +1 -0
  170. package/dist/ui/excerpts/copy_payload.d.ts +30 -0
  171. package/dist/ui/excerpts/copy_payload.d.ts.map +1 -0
  172. package/dist/ui/excerpts/page_quote_offer.d.ts +33 -0
  173. package/dist/ui/excerpts/page_quote_offer.d.ts.map +1 -0
  174. package/dist/ui/excerpts/place_offer.d.ts +9 -0
  175. package/dist/ui/excerpts/place_offer.d.ts.map +1 -0
  176. package/dist/ui/excerpts/quote_selection.d.ts +66 -0
  177. package/dist/ui/excerpts/quote_selection.d.ts.map +1 -0
  178. package/dist/ui/excerpts/transcript_quote_offer.d.ts +57 -0
  179. package/dist/ui/excerpts/transcript_quote_offer.d.ts.map +1 -0
  180. package/dist/ui/fill_ui_string.d.ts +32 -0
  181. package/dist/ui/fill_ui_string.d.ts.map +1 -0
  182. package/dist/ui/history/checkpoint_menu.d.ts +41 -0
  183. package/dist/ui/history/checkpoint_menu.d.ts.map +1 -0
  184. package/dist/ui/history/conversation_history.d.ts +317 -0
  185. package/dist/ui/history/conversation_history.d.ts.map +1 -0
  186. package/dist/ui/history/history_styles.d.ts +2 -0
  187. package/dist/ui/history/history_styles.d.ts.map +1 -0
  188. package/dist/ui/history/relative_time.d.ts +23 -0
  189. package/dist/ui/history/relative_time.d.ts.map +1 -0
  190. package/dist/ui/history/thread_drawer.d.ts +64 -0
  191. package/dist/ui/history/thread_drawer.d.ts.map +1 -0
  192. package/dist/ui/history/utils.d.ts +2 -0
  193. package/dist/ui/history/utils.d.ts.map +1 -0
  194. package/dist/ui/interrupts/approval_card.d.ts +64 -0
  195. package/dist/ui/interrupts/approval_card.d.ts.map +1 -0
  196. package/dist/ui/interrupts/approval_styles.d.ts +2 -0
  197. package/dist/ui/interrupts/approval_styles.d.ts.map +1 -0
  198. package/dist/ui/interrupts/confirmation_card.d.ts +51 -0
  199. package/dist/ui/interrupts/confirmation_card.d.ts.map +1 -0
  200. package/dist/ui/interrupts/confirmation_styles.d.ts +2 -0
  201. package/dist/ui/interrupts/confirmation_styles.d.ts.map +1 -0
  202. package/dist/ui/interrupts/pending_decision.d.ts +22 -0
  203. package/dist/ui/interrupts/pending_decision.d.ts.map +1 -0
  204. package/dist/ui/interrupts/question_card.d.ts +49 -0
  205. package/dist/ui/interrupts/question_card.d.ts.map +1 -0
  206. package/dist/ui/interrupts/question_styles.d.ts +2 -0
  207. package/dist/ui/interrupts/question_styles.d.ts.map +1 -0
  208. package/dist/ui/place/place.d.ts +17 -0
  209. package/dist/ui/place/place.d.ts.map +1 -0
  210. package/dist/ui/place/place_chip.d.ts +26 -0
  211. package/dist/ui/place/place_chip.d.ts.map +1 -0
  212. package/dist/ui/place/place_from_route.d.ts +9 -0
  213. package/dist/ui/place/place_from_route.d.ts.map +1 -0
  214. package/dist/ui/place/place_styles.d.ts +2 -0
  215. package/dist/ui/place/place_styles.d.ts.map +1 -0
  216. package/dist/ui/placement/clamp_launcher.d.ts +20 -0
  217. package/dist/ui/placement/clamp_launcher.d.ts.map +1 -0
  218. package/dist/ui/placement/clamp_panel.d.ts +13 -0
  219. package/dist/ui/placement/clamp_panel.d.ts.map +1 -0
  220. package/dist/ui/placement/collapse_styles.d.ts +2 -0
  221. package/dist/ui/placement/collapse_styles.d.ts.map +1 -0
  222. package/dist/ui/placement/dock_styles.d.ts +2 -0
  223. package/dist/ui/placement/dock_styles.d.ts.map +1 -0
  224. package/dist/ui/placement/embedded_styles.d.ts +2 -0
  225. package/dist/ui/placement/embedded_styles.d.ts.map +1 -0
  226. package/dist/ui/placement/launcher_drag.d.ts +49 -0
  227. package/dist/ui/placement/launcher_drag.d.ts.map +1 -0
  228. package/dist/ui/placement/launcher_placement.d.ts +77 -0
  229. package/dist/ui/placement/launcher_placement.d.ts.map +1 -0
  230. package/dist/ui/placement/launcher_styles.d.ts +2 -0
  231. package/dist/ui/placement/launcher_styles.d.ts.map +1 -0
  232. package/dist/ui/placement/page_styles.d.ts +2 -0
  233. package/dist/ui/placement/page_styles.d.ts.map +1 -0
  234. package/dist/ui/placement/panel_drag.d.ts +40 -0
  235. package/dist/ui/placement/panel_drag.d.ts.map +1 -0
  236. package/dist/ui/placement/panel_placement.d.ts +173 -0
  237. package/dist/ui/placement/panel_placement.d.ts.map +1 -0
  238. package/dist/ui/placement/place_widget.d.ts +31 -0
  239. package/dist/ui/placement/place_widget.d.ts.map +1 -0
  240. package/dist/ui/placement/preset_styles.d.ts +2 -0
  241. package/dist/ui/placement/preset_styles.d.ts.map +1 -0
  242. package/dist/ui/placement/resize_handle.d.ts +78 -0
  243. package/dist/ui/placement/resize_handle.d.ts.map +1 -0
  244. package/dist/ui/placement/resize_styles.d.ts +2 -0
  245. package/dist/ui/placement/resize_styles.d.ts.map +1 -0
  246. package/dist/ui/placement/sidebar_styles.d.ts +2 -0
  247. package/dist/ui/placement/sidebar_styles.d.ts.map +1 -0
  248. package/dist/ui/placement/small_viewport_styles.d.ts +2 -0
  249. package/dist/ui/placement/small_viewport_styles.d.ts.map +1 -0
  250. package/dist/ui/placement/surface_for.d.ts +93 -0
  251. package/dist/ui/placement/surface_for.d.ts.map +1 -0
  252. package/dist/ui/progress/prettify_tool_name.d.ts +11 -0
  253. package/dist/ui/progress/prettify_tool_name.d.ts.map +1 -0
  254. package/dist/ui/progress/run_announcer.d.ts +41 -0
  255. package/dist/ui/progress/run_announcer.d.ts.map +1 -0
  256. package/dist/ui/progress/run_notice.d.ts +21 -0
  257. package/dist/ui/progress/run_notice.d.ts.map +1 -0
  258. package/dist/ui/progress/run_notice_styles.d.ts +2 -0
  259. package/dist/ui/progress/run_notice_styles.d.ts.map +1 -0
  260. package/dist/ui/progress/subagent_panel.d.ts +101 -0
  261. package/dist/ui/progress/subagent_panel.d.ts.map +1 -0
  262. package/dist/ui/progress/subagent_progress.d.ts +57 -0
  263. package/dist/ui/progress/subagent_progress.d.ts.map +1 -0
  264. package/dist/ui/progress/subagent_update.d.ts +28 -0
  265. package/dist/ui/progress/subagent_update.d.ts.map +1 -0
  266. package/dist/ui/progress/thoughts_block.d.ts +57 -0
  267. package/dist/ui/progress/thoughts_block.d.ts.map +1 -0
  268. package/dist/ui/progress/thoughts_styles.d.ts +2 -0
  269. package/dist/ui/progress/thoughts_styles.d.ts.map +1 -0
  270. package/dist/ui/progress/tool_call_card.d.ts +167 -0
  271. package/dist/ui/progress/tool_call_card.d.ts.map +1 -0
  272. package/dist/ui/progress/tool_group_styles.d.ts +2 -0
  273. package/dist/ui/progress/tool_group_styles.d.ts.map +1 -0
  274. package/dist/ui/progress/tool_step_group.d.ts +50 -0
  275. package/dist/ui/progress/tool_step_group.d.ts.map +1 -0
  276. package/dist/ui/progress/tool_step_styles.d.ts +2 -0
  277. package/dist/ui/progress/tool_step_styles.d.ts.map +1 -0
  278. package/dist/ui/shell/adopt_styles.d.ts +28 -0
  279. package/dist/ui/shell/adopt_styles.d.ts.map +1 -0
  280. package/dist/ui/shell/build_header.d.ts +45 -0
  281. package/dist/ui/shell/build_header.d.ts.map +1 -0
  282. package/dist/ui/shell/build_launcher.d.ts +33 -0
  283. package/dist/ui/shell/build_launcher.d.ts.map +1 -0
  284. package/dist/ui/shell/collapse_glyph.d.ts +14 -0
  285. package/dist/ui/shell/collapse_glyph.d.ts.map +1 -0
  286. package/dist/ui/shell/frame_styles.d.ts +2 -0
  287. package/dist/ui/shell/frame_styles.d.ts.map +1 -0
  288. package/dist/ui/shell/glyph_slot.d.ts +7 -0
  289. package/dist/ui/shell/glyph_slot.d.ts.map +1 -0
  290. package/dist/ui/shell/header_button.d.ts +11 -0
  291. package/dist/ui/shell/header_button.d.ts.map +1 -0
  292. package/dist/ui/shell/icon_element.d.ts +12 -0
  293. package/dist/ui/shell/icon_element.d.ts.map +1 -0
  294. package/dist/ui/shell/is_unread_badge_enabled.d.ts +10 -0
  295. package/dist/ui/shell/is_unread_badge_enabled.d.ts.map +1 -0
  296. package/dist/ui/shell/read_launcher_icon_url.d.ts +8 -0
  297. package/dist/ui/shell/read_launcher_icon_url.d.ts.map +1 -0
  298. package/dist/ui/shell/theme_styles.d.ts +2 -0
  299. package/dist/ui/shell/theme_styles.d.ts.map +1 -0
  300. package/dist/ui/shell/token_styles.d.ts +2 -0
  301. package/dist/ui/shell/token_styles.d.ts.map +1 -0
  302. package/dist/ui/styles.d.ts +2 -0
  303. package/dist/ui/styles.d.ts.map +1 -0
  304. package/dist/ui/themes/classic_styles.d.ts +2 -0
  305. package/dist/ui/themes/classic_styles.d.ts.map +1 -0
  306. package/dist/ui/themes/classic_tokens.d.ts +2 -0
  307. package/dist/ui/themes/classic_tokens.d.ts.map +1 -0
  308. package/dist/ui/themes/code_tokens.d.ts +2 -0
  309. package/dist/ui/themes/code_tokens.d.ts.map +1 -0
  310. package/dist/ui/themes/ledger_styles.d.ts +2 -0
  311. package/dist/ui/themes/ledger_styles.d.ts.map +1 -0
  312. package/dist/ui/themes/ledger_tokens.d.ts +2 -0
  313. package/dist/ui/themes/ledger_tokens.d.ts.map +1 -0
  314. package/dist/ui/themes/modern_styles.d.ts +2 -0
  315. package/dist/ui/themes/modern_styles.d.ts.map +1 -0
  316. package/dist/ui/themes/quiet_styles.d.ts +2 -0
  317. package/dist/ui/themes/quiet_styles.d.ts.map +1 -0
  318. package/dist/ui/themes/scheme_styles.d.ts +2 -0
  319. package/dist/ui/themes/scheme_styles.d.ts.map +1 -0
  320. package/dist/ui/themes/soft_styles.d.ts +2 -0
  321. package/dist/ui/themes/soft_styles.d.ts.map +1 -0
  322. package/dist/ui/themes/soft_tokens.d.ts +2 -0
  323. package/dist/ui/themes/soft_tokens.d.ts.map +1 -0
  324. package/dist/ui/themes/theme_hosts.d.ts +15 -0
  325. package/dist/ui/themes/theme_hosts.d.ts.map +1 -0
  326. package/dist/ui/transcript/answer_actions.d.ts +50 -0
  327. package/dist/ui/transcript/answer_actions.d.ts.map +1 -0
  328. package/dist/ui/transcript/answer_stream.d.ts +56 -0
  329. package/dist/ui/transcript/answer_stream.d.ts.map +1 -0
  330. package/dist/ui/transcript/attachment_chip_styles.d.ts +2 -0
  331. package/dist/ui/transcript/attachment_chip_styles.d.ts.map +1 -0
  332. package/dist/ui/transcript/attachment_chips.d.ts +21 -0
  333. package/dist/ui/transcript/attachment_chips.d.ts.map +1 -0
  334. package/dist/ui/transcript/build_transcript.d.ts +21 -0
  335. package/dist/ui/transcript/build_transcript.d.ts.map +1 -0
  336. package/dist/ui/transcript/greeting_styles.d.ts +2 -0
  337. package/dist/ui/transcript/greeting_styles.d.ts.map +1 -0
  338. package/dist/ui/transcript/groups_tool_steps.d.ts +13 -0
  339. package/dist/ui/transcript/groups_tool_steps.d.ts.map +1 -0
  340. package/dist/ui/transcript/message_action_styles.d.ts +2 -0
  341. package/dist/ui/transcript/message_action_styles.d.ts.map +1 -0
  342. package/dist/ui/transcript/message_actions.d.ts +74 -0
  343. package/dist/ui/transcript/message_actions.d.ts.map +1 -0
  344. package/dist/ui/transcript/message_styles.d.ts +2 -0
  345. package/dist/ui/transcript/message_styles.d.ts.map +1 -0
  346. package/dist/ui/transcript/render_markdown.d.ts +40 -0
  347. package/dist/ui/transcript/render_markdown.d.ts.map +1 -0
  348. package/dist/ui/transcript/render_or_warn.d.ts +16 -0
  349. package/dist/ui/transcript/render_or_warn.d.ts.map +1 -0
  350. package/dist/ui/transcript/reveal_words.d.ts +8 -0
  351. package/dist/ui/transcript/reveal_words.d.ts.map +1 -0
  352. package/dist/ui/transcript/starter_chips.d.ts +21 -0
  353. package/dist/ui/transcript/starter_chips.d.ts.map +1 -0
  354. package/dist/ui/transcript/stick_to_bottom.d.ts +55 -0
  355. package/dist/ui/transcript/stick_to_bottom.d.ts.map +1 -0
  356. package/dist/ui/transcript/suggestion_chips.d.ts +29 -0
  357. package/dist/ui/transcript/suggestion_chips.d.ts.map +1 -0
  358. package/dist/ui/transcript/transcript.d.ts +196 -0
  359. package/dist/ui/transcript/transcript.d.ts.map +1 -0
  360. package/dist/ui/transcript/transcript_styles.d.ts +2 -0
  361. package/dist/ui/transcript/transcript_styles.d.ts.map +1 -0
  362. package/dist/ui/ui_strings.d.ts +352 -0
  363. package/dist/ui/ui_strings.d.ts.map +1 -0
  364. package/dist/version.d.ts +2 -0
  365. package/dist/version.d.ts.map +1 -0
  366. package/package.json +86 -3
  367. package/src/bundle.ts +2 -0
  368. package/src/chat.ts +2 -0
  369. package/src/constants.ts +650 -0
  370. package/src/core/activity_registration.ts +19 -0
  371. package/src/core/activity_registry.ts +133 -0
  372. package/src/core/activity_renderer.ts +19 -0
  373. package/src/core/ag_ui_chat.ts +3966 -0
  374. package/src/core/agui_client.ts +1028 -0
  375. package/src/core/attachment.ts +62 -0
  376. package/src/core/chat_registry.ts +53 -0
  377. package/src/core/client_seed.ts +27 -0
  378. package/src/core/conversation_store.ts +478 -0
  379. package/src/core/create_http_agent.ts +97 -0
  380. package/src/core/define_chat.ts +25 -0
  381. package/src/core/events/attachments_detail.ts +9 -0
  382. package/src/core/events/bar_height_detail.ts +5 -0
  383. package/src/core/events/custom_agent_detail.ts +7 -0
  384. package/src/core/events/dock_width_detail.ts +7 -0
  385. package/src/core/events/feedback_detail.ts +27 -0
  386. package/src/core/events/invalidate_detail.ts +15 -0
  387. package/src/core/events/maximize_detail.ts +4 -0
  388. package/src/core/events/run_finished_detail.ts +36 -0
  389. package/src/core/events/state_detail.ts +4 -0
  390. package/src/core/events/submit_detail.ts +8 -0
  391. package/src/core/events/thread_detail.ts +26 -0
  392. package/src/core/events/thread_title_detail.ts +7 -0
  393. package/src/core/events/toggle_detail.ts +4 -0
  394. package/src/core/events/tool_run.ts +10 -0
  395. package/src/core/events/unread_detail.ts +10 -0
  396. package/src/core/message_role.ts +4 -0
  397. package/src/core/read_flag.ts +13 -0
  398. package/src/core/read_json_attribute.ts +30 -0
  399. package/src/core/read_max_tool_rounds.ts +13 -0
  400. package/src/core/remote_conversation_store.ts +279 -0
  401. package/src/core/run_handlers.ts +524 -0
  402. package/src/core/run_index.ts +114 -0
  403. package/src/core/storage_scope.ts +291 -0
  404. package/src/core/tool_outcome.ts +39 -0
  405. package/src/core/transcribe_audio.ts +76 -0
  406. package/src/core/upload_attachment.ts +130 -0
  407. package/src/core/utils.ts +230 -0
  408. package/src/dom/animations.ts +341 -0
  409. package/src/dom/dom_driver.ts +91 -0
  410. package/src/dom/highlight_overlay.ts +204 -0
  411. package/src/dom/native_setter.ts +40 -0
  412. package/src/dom/ring_color.ts +206 -0
  413. package/src/dom/utils.ts +5 -0
  414. package/src/index.ts +220 -0
  415. package/src/skills/fill_template.ts +31 -0
  416. package/src/skills/parse_skills.ts +31 -0
  417. package/src/skills/skill.ts +32 -0
  418. package/src/skills/skill_catalog.ts +172 -0
  419. package/src/skills/skill_name_from.ts +19 -0
  420. package/src/tools/chat_surface_tools.ts +183 -0
  421. package/src/tools/client_tool_registry.ts +80 -0
  422. package/src/tools/is_destructive.ts +17 -0
  423. package/src/tools/is_navigates.ts +12 -0
  424. package/src/tools/page_action_tools.ts +123 -0
  425. package/src/tools/page_map.ts +26 -0
  426. package/src/tools/page_state.ts +57 -0
  427. package/src/tools/parse_tool_catalog.ts +41 -0
  428. package/src/tools/route_map.ts +132 -0
  429. package/src/tools/tool_catalog.ts +334 -0
  430. package/src/tools/tool_dispatch.ts +453 -0
  431. package/src/ui/charts/chart_block.ts +519 -0
  432. package/src/ui/charts/chart_spec_from.ts +125 -0
  433. package/src/ui/charts/chart_styles.ts +63 -0
  434. package/src/ui/charts/chart_tool.ts +72 -0
  435. package/src/ui/composer/attachment_styles.ts +71 -0
  436. package/src/ui/composer/attachment_tray.ts +295 -0
  437. package/src/ui/composer/auto_grow.ts +12 -0
  438. package/src/ui/composer/build_composer.ts +114 -0
  439. package/src/ui/composer/composer_attachments.ts +324 -0
  440. package/src/ui/composer/composer_styles.ts +177 -0
  441. package/src/ui/composer/composer_voice.ts +93 -0
  442. package/src/ui/composer/skill_styles.ts +120 -0
  443. package/src/ui/composer/skills_menu.ts +188 -0
  444. package/src/ui/composer/voice_input.ts +282 -0
  445. package/src/ui/excerpts/attach_copy_buttons.ts +73 -0
  446. package/src/ui/excerpts/copy_payload.ts +156 -0
  447. package/src/ui/excerpts/page_quote_offer.ts +203 -0
  448. package/src/ui/excerpts/place_offer.ts +24 -0
  449. package/src/ui/excerpts/quote_selection.ts +345 -0
  450. package/src/ui/excerpts/transcript_quote_offer.ts +175 -0
  451. package/src/ui/fill_ui_string.ts +41 -0
  452. package/src/ui/history/checkpoint_menu.ts +300 -0
  453. package/src/ui/history/conversation_history.ts +1169 -0
  454. package/src/ui/history/history_styles.ts +492 -0
  455. package/src/ui/history/relative_time.ts +50 -0
  456. package/src/ui/history/thread_drawer.ts +471 -0
  457. package/src/ui/history/utils.ts +11 -0
  458. package/src/ui/interrupts/approval_card.ts +202 -0
  459. package/src/ui/interrupts/approval_styles.ts +52 -0
  460. package/src/ui/interrupts/confirmation_card.ts +138 -0
  461. package/src/ui/interrupts/confirmation_styles.ts +114 -0
  462. package/src/ui/interrupts/pending_decision.ts +33 -0
  463. package/src/ui/interrupts/question_card.ts +213 -0
  464. package/src/ui/interrupts/question_styles.ts +73 -0
  465. package/src/ui/place/place.ts +16 -0
  466. package/src/ui/place/place_chip.ts +146 -0
  467. package/src/ui/place/place_from_route.ts +27 -0
  468. package/src/ui/place/place_styles.ts +108 -0
  469. package/src/ui/placement/clamp_launcher.ts +38 -0
  470. package/src/ui/placement/clamp_panel.ts +30 -0
  471. package/src/ui/placement/collapse_styles.ts +472 -0
  472. package/src/ui/placement/dock_styles.ts +116 -0
  473. package/src/ui/placement/embedded_styles.ts +14 -0
  474. package/src/ui/placement/launcher_drag.ts +206 -0
  475. package/src/ui/placement/launcher_placement.ts +133 -0
  476. package/src/ui/placement/launcher_styles.ts +189 -0
  477. package/src/ui/placement/page_styles.ts +47 -0
  478. package/src/ui/placement/panel_drag.ts +138 -0
  479. package/src/ui/placement/panel_placement.ts +1975 -0
  480. package/src/ui/placement/place_widget.ts +64 -0
  481. package/src/ui/placement/preset_styles.ts +49 -0
  482. package/src/ui/placement/resize_handle.ts +229 -0
  483. package/src/ui/placement/resize_styles.ts +201 -0
  484. package/src/ui/placement/sidebar_styles.ts +113 -0
  485. package/src/ui/placement/small_viewport_styles.ts +70 -0
  486. package/src/ui/placement/surface_for.ts +183 -0
  487. package/src/ui/progress/prettify_tool_name.ts +16 -0
  488. package/src/ui/progress/run_announcer.ts +67 -0
  489. package/src/ui/progress/run_notice.ts +61 -0
  490. package/src/ui/progress/run_notice_styles.ts +52 -0
  491. package/src/ui/progress/subagent_panel.ts +227 -0
  492. package/src/ui/progress/subagent_progress.ts +200 -0
  493. package/src/ui/progress/subagent_update.ts +89 -0
  494. package/src/ui/progress/thoughts_block.ts +165 -0
  495. package/src/ui/progress/thoughts_styles.ts +74 -0
  496. package/src/ui/progress/tool_call_card.ts +429 -0
  497. package/src/ui/progress/tool_group_styles.ts +313 -0
  498. package/src/ui/progress/tool_step_group.ts +317 -0
  499. package/src/ui/progress/tool_step_styles.ts +486 -0
  500. package/src/ui/shell/adopt_styles.ts +34 -0
  501. package/src/ui/shell/build_header.ts +121 -0
  502. package/src/ui/shell/build_launcher.ts +79 -0
  503. package/src/ui/shell/collapse_glyph.ts +42 -0
  504. package/src/ui/shell/frame_styles.ts +147 -0
  505. package/src/ui/shell/glyph_slot.ts +12 -0
  506. package/src/ui/shell/header_button.ts +22 -0
  507. package/src/ui/shell/icon_element.ts +33 -0
  508. package/src/ui/shell/is_unread_badge_enabled.ts +11 -0
  509. package/src/ui/shell/read_launcher_icon_url.ts +9 -0
  510. package/src/ui/shell/theme_styles.ts +11 -0
  511. package/src/ui/shell/token_styles.ts +480 -0
  512. package/src/ui/styles.ts +110 -0
  513. package/src/ui/themes/classic_styles.ts +32 -0
  514. package/src/ui/themes/classic_tokens.ts +51 -0
  515. package/src/ui/themes/code_tokens.ts +21 -0
  516. package/src/ui/themes/ledger_styles.ts +169 -0
  517. package/src/ui/themes/ledger_tokens.ts +33 -0
  518. package/src/ui/themes/modern_styles.ts +80 -0
  519. package/src/ui/themes/quiet_styles.ts +118 -0
  520. package/src/ui/themes/scheme_styles.ts +26 -0
  521. package/src/ui/themes/soft_styles.ts +149 -0
  522. package/src/ui/themes/soft_tokens.ts +29 -0
  523. package/src/ui/themes/theme_hosts.ts +14 -0
  524. package/src/ui/transcript/answer_actions.ts +165 -0
  525. package/src/ui/transcript/answer_stream.ts +123 -0
  526. package/src/ui/transcript/attachment_chip_styles.ts +116 -0
  527. package/src/ui/transcript/attachment_chips.ts +82 -0
  528. package/src/ui/transcript/build_transcript.ts +67 -0
  529. package/src/ui/transcript/greeting_styles.ts +171 -0
  530. package/src/ui/transcript/groups_tool_steps.ts +16 -0
  531. package/src/ui/transcript/message_action_styles.ts +155 -0
  532. package/src/ui/transcript/message_actions.ts +234 -0
  533. package/src/ui/transcript/message_styles.ts +262 -0
  534. package/src/ui/transcript/render_markdown.ts +181 -0
  535. package/src/ui/transcript/render_or_warn.ts +22 -0
  536. package/src/ui/transcript/reveal_words.ts +41 -0
  537. package/src/ui/transcript/starter_chips.ts +42 -0
  538. package/src/ui/transcript/stick_to_bottom.ts +126 -0
  539. package/src/ui/transcript/suggestion_chips.ts +73 -0
  540. package/src/ui/transcript/transcript.ts +555 -0
  541. package/src/ui/transcript/transcript_styles.ts +153 -0
  542. package/src/ui/ui_strings.ts +550 -0
  543. package/src/version.ts +1 -0
@@ -0,0 +1,2 @@
1
+ export declare const THEME_STYLES: string;
2
+ //# sourceMappingURL=theme_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/shell/theme_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,EAAE,MAS1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const TOKEN_STYLES: string;
2
+ //# sourceMappingURL=token_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/shell/token_styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,EAAE,MA6d1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const STYLES: string;
2
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/ui/styles.ts"],"names":[],"mappings":"AAyDA,eAAO,MAAM,MAAM,EAAE,MAoDX,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CLASSIC_STYLES: string;
2
+ //# sourceMappingURL=classic_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classic_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/classic_styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAE,MA6B5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CLASSIC_TOKENS: string;
2
+ //# sourceMappingURL=classic_tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classic_tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/classic_tokens.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAE,MAgD5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const CODE_TOKENS: string;
2
+ //# sourceMappingURL=code_tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code_tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/code_tokens.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,EAAE,MAkBzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const LEDGER_STYLES: string;
2
+ //# sourceMappingURL=ledger_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/ledger_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,EAAE,MAuK3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const LEDGER_TOKENS: string;
2
+ //# sourceMappingURL=ledger_tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger_tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/ledger_tokens.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,EAAE,MA+B3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const MODERN_STYLES: string;
2
+ //# sourceMappingURL=modern_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modern_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/modern_styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,EAAE,MA2E3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const QUIET_STYLES: string;
2
+ //# sourceMappingURL=quiet_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quiet_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/quiet_styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,EAAE,MAiH1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const SCHEME_STYLES: string;
2
+ //# sourceMappingURL=scheme_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheme_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/scheme_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,EAAE,MAwB3B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const SOFT_STYLES: string;
2
+ //# sourceMappingURL=soft_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/soft_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,EAAE,MAmJzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const SOFT_TOKENS: string;
2
+ //# sourceMappingURL=soft_tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft_tokens.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/soft_tokens.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,EAAE,MA2BzB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The host selectors theme rules hang off, as one record so every theme
3
+ * module spells them the same way.
4
+ *
5
+ * Classic and code keep today's structure, so the structural rules the newer
6
+ * themes share apply to every element that wears neither. Quiet is the
7
+ * default, so its own structure applies to every element that wears no other
8
+ * built-in theme -- including one whose theme is a word the library does not
9
+ * know, which is how a host's own named theme starts from Quiet.
10
+ */
11
+ export declare const THEME_HOST: {
12
+ readonly modern: ':host(:not([theme~="classic"], [theme~="code"]))';
13
+ readonly quiet: ':host(:not([theme~="classic"], [theme~="code"], [theme~="soft"], [theme~="ledger"]))';
14
+ };
15
+ //# sourceMappingURL=theme_hosts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme_hosts.d.ts","sourceRoot":"","sources":["../../../src/ui/themes/theme_hosts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU;aACrB,MAAM,EAAE,kDAAkD;aAC1D,KAAK,EAAE,sFAAsF;CACrF,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { AgUiMessageIds } from "../../core/agui_client.js";
2
+ import type { UiStrings } from "../ui_strings.js";
3
+ /** What the answer actions need from the element that owns them. */
4
+ export interface AnswerActionsHost {
5
+ /** The custom element: its `data-message-actions`, and where feedback is dispatched. */
6
+ readonly element: HTMLElement;
7
+ /** The resolved string table. */
8
+ readonly strings: () => UiStrings;
9
+ /** Retry the last turn, as the element's public `retryLastTurn` does. */
10
+ readonly retry: () => void;
11
+ /** The element's current conversation thread. */
12
+ readonly threadId: () => string;
13
+ /** Follow the transcript's foot, as every site that adds to it does. */
14
+ readonly follow: () => void;
15
+ }
16
+ /** A finished bubble that is not an answer, and so carries no rating. */
17
+ interface Unrateable {
18
+ readonly rateable: false;
19
+ }
20
+ /**
21
+ * The action row under a finished answer -- copy, retry, feedback -- and the
22
+ * one row currently holding Retry.
23
+ *
24
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
25
+ * instance.
26
+ */
27
+ export declare class AnswerActions {
28
+ #private;
29
+ constructor(host: AnswerActionsHost);
30
+ /** Forget the row holding Retry, with the transcript it was in. */
31
+ forget(): void;
32
+ /**
33
+ * Give a finished assistant bubble its action row, and hand it Retry.
34
+ *
35
+ * Every finished bubble gets copy and feedback -- both are safe on a message
36
+ * of any age. Retry moves to the newest, because it is the only one where
37
+ * re-running answers the same question rather than rewriting history.
38
+ *
39
+ * `data-message-actions` subtracts from that. The row is built only when
40
+ * something survives to go in it: an empty row still takes its margin, still
41
+ * answers to the `message-actions` part, and still reads to a screen reader
42
+ * as a group of actions with none in it.
43
+ *
44
+ * `message` names the answer, which is what a rating is filed under; a bubble
45
+ * that is not an answer says so instead, and has no id to give.
46
+ */
47
+ attach(bubble: HTMLDivElement, message: AgUiMessageIds | Unrateable): void;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=answer_actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer_actions.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/answer_actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAIhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC;IAClC,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;IAChC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,yEAAyE;AACzE,UAAU,UAAU;IAClB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;;IAWxB,YAAY,IAAI,EAAE,iBAAiB,EAElC;IAED,mEAAmE;IACnE,MAAM,IAAI,IAAI,CAEb;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI,CAuDzE;CAwCF"}
@@ -0,0 +1,56 @@
1
+ /** What the streamed answer needs from the element that owns it. */
2
+ export interface AnswerStreamHost {
3
+ /** Append an empty assistant bubble to the transcript, and return it. */
4
+ readonly openBubble: () => HTMLDivElement;
5
+ /** The element's `allowImages`, read per render. */
6
+ readonly allowImages: () => boolean;
7
+ /** Keep the transcript at its foot, if the reader is there. */
8
+ readonly follow: () => void;
9
+ }
10
+ /**
11
+ * The assistant answer currently streaming: the bubble it streams into, the
12
+ * text the next frame will draw, and how many deltas it arrived in.
13
+ *
14
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
15
+ * instance.
16
+ */
17
+ export declare class AnswerStream {
18
+ #private;
19
+ constructor(host: AnswerStreamHost);
20
+ /** Text deltas the current answer has arrived in so far. */
21
+ get deltas(): number;
22
+ /**
23
+ * Count one delta received. Counted per delta received, not per render: the
24
+ * word reveal asks whether the answer *arrived* progressively, which
25
+ * coalescing renders must not change the answer to.
26
+ */
27
+ countDelta(): void;
28
+ /**
29
+ * Queue a render of the answer so far, at most one per frame.
30
+ *
31
+ * Each `TEXT_MESSAGE_CONTENT` event carries the *whole* accumulated answer,
32
+ * and drawing it means marked + DOMPurify over the entire document and a
33
+ * wholesale replacement of the bubble's subtree. Once per token that is
34
+ * quadratic in the answer's length — a long answer is agent-controlled, so
35
+ * an ordinary run becomes a progressively stalling tab — and every rebuild
36
+ * takes any selection or focus inside the bubble with it.
37
+ *
38
+ * A frame is the right grain: it is the fastest anything on screen can
39
+ * change anyway, so a burst of tokens costs one parse and the text still
40
+ * appears to flow rather than in visible chunks.
41
+ */
42
+ queue(buffer: string): void;
43
+ /** Render `buffer` into the streaming bubble now, dropping any queued frame. */
44
+ into(buffer: string): HTMLDivElement;
45
+ /**
46
+ * Close the current answer's streaming bubble.
47
+ *
48
+ * Draws a queued render first. A run that ends without a text end — a
49
+ * cancel, an error, a round boundary — leaves the last delta sitting in the
50
+ * queue, and simply dropping the bubble here would strand it: the partial
51
+ * answer the user stopped mid-sentence would lose its final tokens, or be an
52
+ * empty bubble above the stopped note.
53
+ */
54
+ end(): void;
55
+ }
56
+ //# sourceMappingURL=answer_stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer_stream.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/answer_stream.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,cAAc,CAAC;IAC1C,oDAAoD;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;;IAcvB,YAAY,IAAI,EAAE,gBAAgB,EAEjC;IAED,4DAA4D;IAC5D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;OAIG;IACH,UAAU,IAAI,IAAI,CAEjB;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAU1B;IAED,gFAAgF;IAChF,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAYnC;IAED;;;;;;;;OAQG;IACH,GAAG,IAAI,IAAI,CAKV;CAgBF"}
@@ -0,0 +1,2 @@
1
+ export declare const ATTACHMENT_CHIP_STYLES: string;
2
+ //# sourceMappingURL=attachment_chip_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_chip_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/attachment_chip_styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,EAAE,MAgHpC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { AttachmentRef } from "../../core/attachment.js";
2
+ /**
3
+ * Render the read-only attachment chips on a sent user message bubble and on
4
+ * restored history — one chip per ref with a type icon, filename, and human
5
+ * size. Static: no progress and no remove, both of which live in the composer
6
+ * tray.
7
+ */
8
+ export declare function renderAttachmentChips(refs: readonly AttachmentRef[]): HTMLDivElement;
9
+ /**
10
+ * A coarse type mark for a chip — image, PDF, text document, or generic file —
11
+ * as inline SVG markup rather than a character, so it matches the composer's
12
+ * SVG buttons in weight and takes the glyph size and `currentColor`, which
13
+ * emoji do not.
14
+ *
15
+ * The MIME string only selects among author-written constants and is never
16
+ * interpolated into one, so the result is safe to assign as markup.
17
+ */
18
+ export declare function iconFor(mime: string): string;
19
+ /** A compact human-readable byte size (e.g. `1.2 MB`). */
20
+ export declare function formatBytes(bytes: number): string;
21
+ //# sourceMappingURL=attachment_chips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_chips.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/attachment_chips.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG,cAAc,CAQpF;AA4BD;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW5C;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAajD"}
@@ -0,0 +1,21 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /** The transcript's parts, owned by the element, and what fills them. */
3
+ export interface TranscriptOptions {
4
+ readonly messages: HTMLElement;
5
+ readonly jumpButton: HTMLButtonElement;
6
+ readonly emptyWrap: HTMLElement;
7
+ /** The greeting's text node, kept by the element so a new user name updates it. */
8
+ readonly greetingText: HTMLElement;
9
+ /** The starter chips, or `null` when the host configured none. */
10
+ readonly starters: HTMLElement | null;
11
+ readonly strings: UiStrings;
12
+ }
13
+ /**
14
+ * Ready the message list, its jump-to-latest control and the empty state.
15
+ *
16
+ * The empty state is built but not put into the list: the element mounts the
17
+ * scroller, the quote offer and the announcer first and appends it after, so
18
+ * the scroller's observers see the list fill exactly as they always have.
19
+ */
20
+ export declare function buildTranscript(options: TranscriptOptions): void;
21
+ //# sourceMappingURL=build_transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_transcript.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/build_transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,mFAAmF;IACnF,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CA6ChE"}
@@ -0,0 +1,2 @@
1
+ export declare const GREETING_STYLES: string;
2
+ //# sourceMappingURL=greeting_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greeting_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/greeting_styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,EAAE,MAwK7B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ToolDisplayMode } from "../progress/tool_call_card.js";
2
+ /**
3
+ * Whether a new tool call folds into a step group, given the element's
4
+ * `toolDisplay`.
5
+ *
6
+ * The display mode alone decides, whatever the theme: `grouped` (the default,
7
+ * and what an unknown value reads as) folds, and the four card modes keep
8
+ * per-call cards. Asked as each card is built, so switching to `grouped`
9
+ * folds only the calls drawn afterwards; switching away flattens the groups
10
+ * already drawn, which the shadow CSS does from the host attribute.
11
+ */
12
+ export declare function groupsToolSteps(mode: ToolDisplayMode): boolean;
13
+ //# sourceMappingURL=groups_tool_steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups_tool_steps.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/groups_tool_steps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,2 @@
1
+ export declare const MESSAGE_ACTION_STYLES: string;
2
+ //# sourceMappingURL=message_action_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message_action_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/message_action_styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,EAAE,MAuJnC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /** What an action bar can do, beyond copying. */
3
+ export interface MessageActionsOptions {
4
+ /** Localized strings. */
5
+ strings: UiStrings;
6
+ /**
7
+ * The text Copy puts on the clipboard. Absent means no copy button.
8
+ *
9
+ * A function rather than a string because a bubble's content is rewritten
10
+ * while it streams. Each button's option is also the statement that the
11
+ * button belongs, so no second flag can disagree with it.
12
+ */
13
+ text?: () => string;
14
+ /**
15
+ * The rich flavour to copy alongside `text`, as an HTML fragment. Absent
16
+ * means plain text only.
17
+ *
18
+ * It is what makes a copied table paste as a table: a spreadsheet or a chat
19
+ * client reads `text/html` when offered and falls back to the plain flavour.
20
+ */
21
+ html?: () => string;
22
+ /**
23
+ * Report a rating for this message. Absent means no feedback buttons.
24
+ *
25
+ * The component stores nothing: a rating is the host's to keep, and a
26
+ * write-only table nobody reads is not worth a schema.
27
+ */
28
+ onFeedback?: (rating: "up" | "down") => void;
29
+ }
30
+ /**
31
+ * Give one finished message bubble its row of actions.
32
+ *
33
+ * **Finished** is load-bearing. A streaming bubble reassigns its `innerHTML` on
34
+ * every delta, so anything attached mid-stream is discarded and rebuilt for
35
+ * each one -- the same constraint `attachCopyButtons` records, one level up.
36
+ *
37
+ * Retry is deliberately **not** here: it belongs to the last turn only, so the
38
+ * element owns it and moves it as the transcript grows. Everything on this bar
39
+ * is safe to offer on any message, however old.
40
+ *
41
+ * Idempotent -- a bubble already given a bar is skipped, so a re-render or a
42
+ * second call cannot stack rows.
43
+ *
44
+ * Passing neither `text` nor `onFeedback` builds an empty row; the element
45
+ * skips the call when a host has turned both off.
46
+ */
47
+ export declare function attachMessageActions(bubble: HTMLElement, options: MessageActionsOptions): void;
48
+ /**
49
+ * The empty action row on `bubble`, created if it has none yet.
50
+ *
51
+ * Shared so a bubble that wants *only* Retry -- a failed run, which has nothing
52
+ * worth copying and nothing to rate -- gets the same row, the same part name
53
+ * and the same accessible grouping as every other message, rather than a
54
+ * second thing that looks like one.
55
+ */
56
+ export declare function messageActionBar(bubble: HTMLElement, strings: UiStrings): HTMLElement;
57
+ /**
58
+ * Build one action button, labelled for screen readers rather than by glyph.
59
+ *
60
+ * `icon` is icon markup rather than a text glyph: the copy mark in particular
61
+ * has no font behind it on most systems.
62
+ *
63
+ * The label is carried three ways, and each has a reader the others miss:
64
+ * `aria-label` for assistive technology, `title` for the browser's own
65
+ * tooltip, and `data-tooltip` for the one this component draws. The last is
66
+ * not redundant with the second -- a `title` never appears on keyboard focus,
67
+ * so without it a keyboard user has no way to see what the control does.
68
+ *
69
+ * The icon sits in its own part, so a host can restyle or replace it. A slot
70
+ * would be the better channel and cannot be used here: these repeat once per
71
+ * message, and a named slot can only be filled once.
72
+ */
73
+ export declare function messageActionButton(modifier: string, label: string, icon: string): HTMLButtonElement;
74
+ //# sourceMappingURL=message_actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message_actions.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/message_actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlD,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAe9F;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,GAAG,WAAW,CAmBrF;AAQD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,iBAAiB,CAcnB"}
@@ -0,0 +1,2 @@
1
+ export declare const MESSAGE_STYLES: string;
2
+ //# sourceMappingURL=message_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/message_styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,EAAE,MAmQ5B,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { type Config } from "dompurify";
2
+ /**
3
+ * The sanitiser's declared allowlist — and, because {@link harden} runs inside
4
+ * the sanitiser rather than after it, its *effective* one too.
5
+ *
6
+ * `ALLOW_DATA_ATTR` and `ALLOW_ARIA_ATTR` default to `true`, which would admit
7
+ * every `data-*` and `aria-*` attribute on top of the five named above. Both
8
+ * matter here: the cards drive their resolved / expanded / status appearance off
9
+ * `[data-resolved]`, `[data-status]` and `[data-expanded]`, and an `aria-label`
10
+ * on model output makes a screen reader announce something other than what is on
11
+ * screen. Turning them off is what makes the declared list the real one.
12
+ *
13
+ * Exported so a test can assert the returned markup is a fixed point of it.
14
+ */
15
+ export declare const SANITIZE_CONFIG: Config;
16
+ /** {@link SANITIZE_CONFIG} plus the images a host opts into. */
17
+ export declare const SANITIZE_CONFIG_WITH_IMAGES: Config;
18
+ /** Options for {@link renderMarkdown}. */
19
+ export interface RenderMarkdownOptions {
20
+ /**
21
+ * Permit `<img>` tags (and their `src`/`alt`/`width`/`height` attributes) in
22
+ * the sanitised output. Off by default; see the exfiltration note on the
23
+ * allowlist above. Only enable for trusted content sources.
24
+ */
25
+ readonly allowImages?: boolean;
26
+ }
27
+ /**
28
+ * Render markdown (and any embedded raw HTML) to a sanitised HTML string.
29
+ *
30
+ * Markdown syntax and literal HTML share one path: `marked` emits HTML, then
31
+ * DOMPurify strips everything outside {@link SANITIZE_CONFIG} — scripts, event
32
+ * handlers, `javascript:` URLs, `data-*`/`aria-*`, and every class but a code
33
+ * fence's `language-*` hint. Links come out with `target="_blank"` and
34
+ * `rel="noopener noreferrer"`.
35
+ *
36
+ * The returned string is the sanitiser's own output, trimmed. Nothing edits it
37
+ * afterwards, so what a caller inserts is what DOMPurify approved.
38
+ */
39
+ export declare function renderMarkdown(text: string, options?: RenderMarkdownOptions): string;
40
+ //# sourceMappingURL=render_markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_markdown.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/render_markdown.ts"],"names":[],"mappings":"AAEA,OAAkB,EAAE,KAAK,MAAM,EAA8B,MAAM,WAAW,CAAC;AA6D/E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,MAK7B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,EAAE,MAIzC,CAAC;AAgEF,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAMpF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Call a consumer's renderer, turning a throw into "nothing drawn".
3
+ *
4
+ * `render` is consumer code -- a host's activity renderer, a tool's `render` --
5
+ * and both call sites run inside the history replay, where a throw abandons the
6
+ * loop and takes every later turn of the transcript with it -- silently, and
7
+ * again on every reload. One thing that fails to draw is worth losing; the rest
8
+ * of the conversation is not. Reported so the failure is findable rather than
9
+ * merely survived.
10
+ *
11
+ * @param render - The consumer's renderer, already bound to its input.
12
+ * @param subject - What was being drawn, for the warning: `tool <name>` or
13
+ * `activity <type>`.
14
+ */
15
+ export declare function renderOrWarn(render: () => Node | null, subject: string): Node | null;
16
+ //# sourceMappingURL=render_or_warn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_or_warn.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/render_or_warn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAOpF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Wrap each word under ``root`` in `<span class="word" style="--ag-ui-word-index: N">`
3
+ * so CSS can reveal them one-by-one (staggered by the index). Whitespace is
4
+ * preserved as plain text. Used for the `word` text-animation mode on a
5
+ * completed assistant message; pure DOM, idempotent enough to re-run.
6
+ */
7
+ export declare function wrapWords(root: HTMLElement): void;
8
+ //# sourceMappingURL=reveal_words.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reveal_words.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/reveal_words.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAuBjD"}
@@ -0,0 +1,21 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /**
3
+ * The prompts offered on an empty transcript, from `element`'s `data-starters`.
4
+ *
5
+ * Different from the suggestion chips a run pushes, which are follow-ups to
6
+ * something already said. These answer the blank-page question instead, and
7
+ * they are the host's rather than the model's -- only the host knows what its
8
+ * page is for. Shares the renderer, the count and the length limit, because
9
+ * two rows of prompt chips that behaved differently would be the harder
10
+ * thing to explain.
11
+ *
12
+ * Read once at connect: it is content for a state the widget is in before
13
+ * anything happens, and a host that wants it to change has `slot="empty"`.
14
+ *
15
+ * Parses the attribute itself rather than through the element's JSON attribute
16
+ * reader, because the warning is its own: it says no starters are shown and
17
+ * gives an example of the shape, where the shared one says a built-in default
18
+ * is in use, which for this attribute there is not.
19
+ */
20
+ export declare function renderStarterChips(element: Element, strings: UiStrings, onPick: (prompt: string) => void): HTMLElement | null;
21
+ //# sourceMappingURL=starter_chips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starter_chips.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/starter_chips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAC/B,WAAW,GAAG,IAAI,CAgBpB"}
@@ -0,0 +1,55 @@
1
+ /** A transcript that follows new content, unless the reader has other ideas. */
2
+ export interface StickToBottom {
3
+ /**
4
+ * New content arrived. Scrolls to the bottom only while following, so
5
+ * reading older messages during a run is no longer undone on the next token.
6
+ */
7
+ readonly follow: () => void;
8
+ /** Go to the bottom and resume following, whatever the reader was doing. */
9
+ readonly jump: () => void;
10
+ /** Whether the transcript is currently following new content. */
11
+ readonly following: () => boolean;
12
+ readonly dispose: () => void;
13
+ }
14
+ export interface StickToBottomOptions {
15
+ /** The scrolling element -- the message list. */
16
+ readonly viewport: HTMLElement;
17
+ /**
18
+ * Called whenever the answer to "should a jump-to-latest affordance show?"
19
+ * changes. True means the reader has scrolled away *and* has since missed
20
+ * something; scrolling up through a settled transcript is not a reason to
21
+ * nag.
22
+ */
23
+ readonly onMissedContent: (missed: boolean) => void;
24
+ }
25
+ /**
26
+ * Follow the foot of a scrolling transcript, and stop when the reader scrolls
27
+ * away.
28
+ *
29
+ * Before this, eleven separate sites assigned `scrollTop = scrollHeight`
30
+ * unconditionally and nothing anywhere listened for a `scroll` event -- so
31
+ * nothing knew the reader had scrolled up, and scrolling back through a run was
32
+ * undone by the next token. Stick-to-bottom with a jump-to-latest affordance is
33
+ * a named primitive elsewhere for exactly this reason: shadcn ships it as
34
+ * `MessageScroller`, AI Elements as `ConversationScrollButton`.
35
+ *
36
+ * **Telling a reader's scroll from our own is the whole problem**, and the
37
+ * answer here is that it does not have to be told. A programmatic scroll only
38
+ * ever happens while already following, and it lands at the bottom, so the
39
+ * `scroll` event it provokes recomputes "at the bottom" as true and changes
40
+ * nothing. A reader's scroll is the only kind that can move the answer.
41
+ *
42
+ * A `ResizeObserver` covers the case scroll events cannot see: the *viewport*
43
+ * changing size. Resizing the panel, or the keyboard opening on a phone, moves
44
+ * the foot without anything scrolling and without any content arriving, so a
45
+ * pinned transcript would silently come unpinned.
46
+ *
47
+ * ⚠ It does **not** cover content that grows after insertion -- an image
48
+ * decoding, a chart laying out. A `ResizeObserver` on a scroll container does
49
+ * not fire when its `scrollHeight` changes, so catching that means observing
50
+ * every child, and the payoff is one late nudge in a case the reader can fix by
51
+ * scrolling. Insertion itself is covered: every site that adds to the
52
+ * transcript calls {@link StickToBottom.follow}.
53
+ */
54
+ export declare function createStickToBottom({ viewport, onMissedContent, }: StickToBottomOptions): StickToBottom;
55
+ //# sourceMappingURL=stick_to_bottom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stick_to_bottom.d.ts","sourceRoot":"","sources":["../../../src/ui/transcript/stick_to_bottom.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,eAAe,GAChB,EAAE,oBAAoB,GAAG,aAAa,CA0DtC"}
@@ -0,0 +1,29 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /**
3
+ * Most prompts one push may draw.
4
+ *
5
+ * **Keep in step with `MAX_SUGGESTIONS` in django-ag-ui's
6
+ * `agent/suggestions_activity.py`**, which raises past it. Mirroring is the
7
+ * whole point: this side silently draws no more than its limit and has no
8
+ * channel to report the difference, so a producer that does not know the same
9
+ * number ships suggestions that never appear. That is the hole the chart bounds
10
+ * exist to close, and it was found there by shipping it.
11
+ */
12
+ export declare const MAX_SUGGESTIONS = 4;
13
+ /** Longest one prompt may be. Mirrored for the same reason as the count. */
14
+ export declare const MAX_SUGGESTION_CHARS = 120;
15
+ /** The `prompts` a `suggestions` activity carries, or `null` when it carries none. */
16
+ export declare function suggestionPrompts(content: unknown): string[] | null;
17
+ /**
18
+ * Draw follow-up prompts as chips that send themselves when clicked.
19
+ *
20
+ * Returns `null` when nothing survives, which is the registry's signal to draw
21
+ * nothing rather than an empty row -- the same contract the chart renderer uses
22
+ * for a spec it cannot draw.
23
+ *
24
+ * Buttons rather than links or list items: each one performs an action in the
25
+ * page, and the thing it sends is the label, so the accessible name is the
26
+ * prompt itself and needs no `aria-label` restating it.
27
+ */
28
+ export declare function renderSuggestionChips(content: unknown, strings: UiStrings, onPick: (prompt: string) => void): HTMLElement | null;
29
+ //# sourceMappingURL=suggestion_chips.d.ts.map