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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/CHANGELOG.md +68 -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,57 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /** What the quote offer needs from the element that owns it. */
3
+ export interface TranscriptQuoteHost {
4
+ /** The custom element: its opt-out attribute, and what a page offer excludes. */
5
+ readonly element: HTMLElement;
6
+ /** The shadow root a transcript selection is read through. */
7
+ readonly root: ShadowRoot;
8
+ /** The transcript, whose selections are offered. */
9
+ readonly messages: HTMLElement;
10
+ /** The transcript's positioning box, which the offer floats inside. */
11
+ readonly messagesWrap: HTMLElement;
12
+ /** The composer a quotation is written into. */
13
+ readonly input: HTMLTextAreaElement;
14
+ /** The resolved string table. */
15
+ readonly strings: () => UiStrings;
16
+ /** Resize the composer to what it now holds. */
17
+ readonly autoGrow: () => void;
18
+ /** The element's public `quote`, so a host that replaced it is the one called. */
19
+ readonly quote: (text: string) => void;
20
+ }
21
+ /**
22
+ * Quoting a selection into the composer: the offer floated beside a selection
23
+ * in the transcript, the same offer over the host page, and the quotation
24
+ * itself.
25
+ *
26
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
27
+ * instance.
28
+ */
29
+ export declare class TranscriptQuoteOffer {
30
+ #private;
31
+ /**
32
+ * Offer to quote the current selection, floated beside it.
33
+ *
34
+ * Shares the transcript's positioning box with the jump button for the same
35
+ * reason: it is positioned against the transcript, and must not scroll away
36
+ * with the words it is pointing at.
37
+ */
38
+ readonly button: HTMLButtonElement;
39
+ constructor(host: TranscriptQuoteHost);
40
+ /** The quotation behind `AgUiChat.quote`, whose doc is the contract. */
41
+ insert(text: string): void;
42
+ /** The offer behind `AgUiChat.offerQuoteInPage`, whose doc is the contract. */
43
+ offerInPage(within: HTMLElement): () => void;
44
+ /**
45
+ * Take the host-page offer down. It listens on the host's document, not on
46
+ * anything of ours, so nothing else would ever take it down.
47
+ */
48
+ detachPageOffer(): void;
49
+ /**
50
+ * Build the offer and listen for settled selections in the transcript.
51
+ *
52
+ * The button and the transcript outlive a connection, so the listeners go
53
+ * under `signal`, which the element aborts when it leaves the document.
54
+ */
55
+ mount(signal: AbortSignal): void;
56
+ }
57
+ //# sourceMappingURL=transcript_quote_offer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript_quote_offer.d.ts","sourceRoot":"","sources":["../../../src/ui/excerpts/transcript_quote_offer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlD,gEAAgE;AAChE,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC;IAClC,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAoB;;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAoC;IAQtE,YAAY,IAAI,EAAE,mBAAmB,EAEpC;IAED,wEAAwE;IACxE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAgBzB;IAED,+EAA+E;IAC/E,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,CAe3C;IAED;;;OAGG;IACH,eAAe,IAAI,IAAI,CAGtB;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAoC/B;CAiCF"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Fill the `{token}` placeholders of a string-table template.
3
+ *
4
+ * Every string-table template goes through here rather than through
5
+ * `template.replace("{token}", value)`, which was wrong in two ways at once:
6
+ *
7
+ * - **A string replacement interprets dollar patterns in the value.** `$&`
8
+ * inserts the matched token, and `` $` `` and `$'` the text either side of it,
9
+ * so a queued message reading `costs $& more` was labelled
10
+ * `Do not send "costs {text} more"`. Several of these values are text a user
11
+ * or a server wrote -- a queued message, a tool name, a skill title, an
12
+ * agent name -- so the value has to land verbatim. A replacer function's
13
+ * return value is never interpreted, which is the whole fix.
14
+ * - **A string pattern replaces only the first occurrence**, so a translation
15
+ * that uses a token twice was left half filled.
16
+ *
17
+ * One pass over the template, so a value that itself contains a `{token}` is
18
+ * inserted as written rather than filled in turn: a skill titled
19
+ * `Fill {fields}` stays that, where chained replacements filled it twice.
20
+ *
21
+ * A token with no entry in `values` is left as written. Every call site passes
22
+ * the tokens its key documents, so that is a translation carrying a token the
23
+ * call site does not know, and printing it is more honest than dropping it.
24
+ * `skills/fill_template.ts` is the prompt-side counterpart, and its contract is
25
+ * different on purpose: a prompt reports what it could not fill so a send can
26
+ * be refused.
27
+ *
28
+ * @param template - A string-table value, e.g. `strings.removeQueued`.
29
+ * @param values - The value for each token the template's key documents.
30
+ */
31
+ export declare function fillUiString(template: string, values: Readonly<Record<string, string | number>>): string;
32
+ //# sourceMappingURL=fill_ui_string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill_ui_string.d.ts","sourceRoot":"","sources":["../../src/ui/fill_ui_string.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,GAChD,MAAM,CAIR"}
@@ -0,0 +1,41 @@
1
+ import type { RunRow } from "../../core/run_index.js";
2
+ import { type UiStrings } from "../ui_strings.js";
3
+ import { type RelativeTimeFormatter } from "./relative_time.js";
4
+ /** How the host continues a picked run. */
5
+ export type CheckpointVerb = "resume" | "fork";
6
+ /**
7
+ * The checkpoint panel: continuable runs, each offering **resume** or **fork**.
8
+ *
9
+ * Deliberately separate from the thread drawer: a thread is a conversation you
10
+ * switch to, a checkpoint is a run you continue from, and one thread holds
11
+ * many. One list would make "resume" read as "open", when resuming starts a new
12
+ * run seeded from a snapshot.
13
+ *
14
+ * The host feeds only rows the server marked `continuable`, a run without a
15
+ * snapshot having nothing to resume from. Pure DOM, like {@link SkillsMenu}:
16
+ * append {@link element}, toggle it, feed {@link setRuns}, act on
17
+ * {@link onPick}.
18
+ */
19
+ export declare class CheckpointMenu {
20
+ #private;
21
+ /** The panel root. Append to the chat shell; hidden until opened. */
22
+ readonly element: HTMLDivElement;
23
+ constructor(onPick: (runId: string, verb: CheckpointVerb) => void, strings?: UiStrings);
24
+ /** Replace the rows. The host passes only `continuable` runs. */
25
+ setRuns(runs: readonly RunRow[]): void;
26
+ /** Re-localize a panel built before the host's strings resolved. */
27
+ /**
28
+ * Replace the timestamp formatter, or restore the built-in with `null`.
29
+ *
30
+ * The built-in is deliberately locale-neutral -- there is no `Intl` anywhere
31
+ * in this component, so it never disagrees with a host's own formatting by
32
+ * guessing a locale. That is a defensible default and a poor requirement, so
33
+ * this is the way out.
34
+ */
35
+ setRelativeTimeFormatter(format: RelativeTimeFormatter | null): void;
36
+ setStrings(strings: UiStrings): void;
37
+ open(): void;
38
+ close(): void;
39
+ get open_(): boolean;
40
+ }
41
+ //# sourceMappingURL=checkpoint_menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint_menu.d.ts","sourceRoot":"","sources":["../../../src/ui/history/checkpoint_menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,qBAAqB,EAAgB,MAAM,oBAAoB,CAAC;AAG9E,2CAA2C;AAC3C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqB/C;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;;IACzB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAWjC,YACE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,EACrD,OAAO,GAAE,SAA8B,EA+BxC;IAED,iEAAiE;IACjE,OAAO,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAGrC;IAED,oEAAoE;IACpE;;;;;;;OAOG;IACH,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAEnE;IASD,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAKnC;IAED,IAAI,IAAI,IAAI,CAcX;IAED,KAAK,IAAI,IAAI,CAOZ;IAqCD,IAAI,KAAK,IAAI,OAAO,CAEnB;CAoHF"}
@@ -0,0 +1,317 @@
1
+ import { type Message } from "@ag-ui/core";
2
+ import type { ActivityRegistry } from "../../core/activity_registry.js";
3
+ import type { AgUiClient } from "../../core/agui_client.js";
4
+ import type { ClientSeed } from "../../core/client_seed.js";
5
+ import type { ClientConversationStore, NavigationCheckpoint, ThreadMeta } from "../../core/conversation_store.js";
6
+ import type { ThreadDetail } from "../../core/events/thread_detail.js";
7
+ import type { MessageRole } from "../../core/message_role.js";
8
+ import { RunIndex } from "../../core/run_index.js";
9
+ import type { ToolCatalog } from "../../tools/tool_catalog.js";
10
+ import type { AnswerActions } from "../transcript/answer_actions.js";
11
+ import type { Transcript } from "../transcript/transcript.js";
12
+ import type { UiStrings } from "../ui_strings.js";
13
+ import type { CheckpointMenu, CheckpointVerb } from "./checkpoint_menu.js";
14
+ import type { RelativeTimeFormatter } from "./relative_time.js";
15
+ import type { ThreadDrawer } from "./thread_drawer.js";
16
+ /** What conversation history needs from the element that owns it. */
17
+ export interface ConversationHistoryHost {
18
+ /**
19
+ * The custom element: the attributes history reads and stamps, and the
20
+ * `this` a host's `agentFactory` and `navigationResult` are called with.
21
+ */
22
+ readonly element: HTMLElement;
23
+ /** The conversation list, which the element builds and renders. */
24
+ readonly drawer: ThreadDrawer;
25
+ /** The checkpoint panel, which the element builds and renders. */
26
+ readonly checkpoints: CheckpointMenu;
27
+ /** The transcript a restored conversation is replayed into. */
28
+ readonly transcript: Transcript;
29
+ /** The action row under each finished answer. */
30
+ readonly actions: AnswerActions;
31
+ /** The activity renderers, which redraw a restored activity. */
32
+ readonly activities: ActivityRegistry;
33
+ /** The frontend tools, whose renderers a restored call is redrawn with. */
34
+ readonly tools: ToolCatalog;
35
+ /** The composer, whose text a continuation sends. */
36
+ readonly input: HTMLTextAreaElement;
37
+ /** The one-line hint above the composer. */
38
+ readonly hint: HTMLDivElement;
39
+ /** The resolved string table. */
40
+ readonly strings: () => UiStrings;
41
+ /** The element's `conversationStore`, read per use. */
42
+ readonly conversationStore: () => ClientConversationStore;
43
+ /** The element's `formatRelativeTime`. */
44
+ readonly formatRelativeTime: () => RelativeTimeFormatter | null;
45
+ /** The element's `navigationResult`. */
46
+ readonly navigationResult: () => (checkpoint: NavigationCheckpoint) => unknown;
47
+ /** The request headers, having first reported the destination if it is foreign. */
48
+ readonly headersFor: (url: string) => Record<string, string>;
49
+ /** The configured cookie policy as `fetch` spells it. */
50
+ readonly requestCredentials: () => RequestCredentials | undefined;
51
+ /** The element's `appendMessage`, which a restored bubble opens through. */
52
+ readonly appendMessage: (role: MessageRole, content: string) => HTMLDivElement;
53
+ /**
54
+ * Draw a turn the user sent and dispatch the submit event, as the element's
55
+ * own send does before it starts a run.
56
+ */
57
+ readonly announceTurn: (content: string) => void;
58
+ /**
59
+ * Record a turn taken from the composer for arrow-key recall, as the
60
+ * element's own send records one.
61
+ */
62
+ readonly recordTurn: (content: string) => void;
63
+ /** Resize the composer to its content. */
64
+ readonly autoGrow: () => void;
65
+ /**
66
+ * A continuation has ended, whether or not it ever ran.
67
+ *
68
+ * The composer parks a turn typed while one is in flight, and learns a run
69
+ * has settled from its own events -- which never arrive for a continuation
70
+ * that failed before starting one. Without this, such a turn stayed parked
71
+ * with nothing left to release it.
72
+ */
73
+ readonly continuationEnded: () => void;
74
+ /** The conversation's own client, or `null` until one is built. */
75
+ readonly client: () => AgUiClient | null;
76
+ /** The conversation's own client, built on first use. */
77
+ readonly ensureClient: () => AgUiClient;
78
+ /**
79
+ * A client from the same construction as the conversation's own, differing
80
+ * only in what `seed` says. A continuation's comes from here so that nothing
81
+ * added to one can be missing from the other.
82
+ */
83
+ readonly buildClient: (seed: ClientSeed) => AgUiClient;
84
+ /**
85
+ * Forget the conversation's own client, so the next one is built from
86
+ * {@link ConversationHistory.restored}. Nothing is cancelled: this is for a
87
+ * client that is not running.
88
+ */
89
+ readonly releaseClient: () => void;
90
+ /**
91
+ * Whether an interaction is in flight, which the composer owns: from the
92
+ * moment a send or a retry is taken, or a restore starts loading, not only
93
+ * once its run has started.
94
+ */
95
+ readonly running: () => boolean;
96
+ /**
97
+ * Hold the composer as a send holds it from the moment it is taken: the
98
+ * built-in Send parks its turn, a Retry and a pick refuse. Let go of when the
99
+ * run starts, by a Stop, or by {@link RunHold.release}.
100
+ *
101
+ * A host's send refuses too, unless `restored` is given: then the hold is a
102
+ * restore's with no run to resume, and a host's send waits for `restored` to
103
+ * settle and sends after it, with the conversation drawn. `restored` settles
104
+ * once that restore has ended, or has been stopped, and never rejects.
105
+ */
106
+ readonly holdRun: (restored: Promise<void> | null) => RunHold;
107
+ /** Stop the in-flight run. */
108
+ readonly cancelRun: () => void;
109
+ /** Drop the in-memory run and transcript, leaving the thread untouched. */
110
+ readonly resetState: () => void;
111
+ /** Swap the composer between Send and Stop, which the composer owns. */
112
+ readonly setRunning: (running: boolean) => void;
113
+ /**
114
+ * Say the conversation on screen changed, once its transcript is replaced.
115
+ * The element fills in the thread it replaced, which it last reported.
116
+ */
117
+ readonly threadChanged: (threadId: string, reason: ThreadDetail["reason"]) => void;
118
+ /** Hear the rows the conversation list was just given, for the title on screen. */
119
+ readonly threadsListed: (threads: readonly ThreadMeta[]) => void;
120
+ /** A thread was deleted, so whatever the element kept about it goes too. */
121
+ readonly threadDeleted: (threadId: string) => void;
122
+ }
123
+ /**
124
+ * A hold {@link ConversationHistoryHost.holdRun} took.
125
+ *
126
+ * It says nothing about whether the restore that took it was stopped. A
127
+ * restore asks its generation that, because a host's send that waited on a
128
+ * restore with no run to resume takes the hold over from it, and a restore
129
+ * stopped by a newer one finds that one's hold in its place -- see
130
+ * {@link ConversationHistory.rehydrate}.
131
+ */
132
+ interface RunHold {
133
+ /**
134
+ * Let go, if nothing else has, and send what the composer parked behind it,
135
+ * because no run is going to settle and send it.
136
+ */
137
+ readonly release: () => void;
138
+ }
139
+ /**
140
+ * Which conversation is on screen, and how one gets there: restoring it from
141
+ * the store, switching to another from the conversation list, and continuing
142
+ * a run from the checkpoint panel.
143
+ *
144
+ * The one writer of the active thread's id and of the messages a restore
145
+ * seeded the next client with. The element reads both when it builds its
146
+ * client, and asks for a transition -- adopt the store's thread, mint a new
147
+ * one -- rather than writing either. Clearing the run, the transcript and the
148
+ * composer around a transition stays the element's, because it spans every
149
+ * part of it; history calls back for that.
150
+ *
151
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
152
+ * instance.
153
+ */
154
+ export declare class ConversationHistory {
155
+ #private;
156
+ constructor(host: ConversationHistoryHost);
157
+ /** The active thread's id. */
158
+ get threadId(): string;
159
+ /** The conversation as last written, for seeding the next client. */
160
+ get restored(): readonly Message[];
161
+ /** The checkpoint continuation in flight, or `null` when none is running. */
162
+ get continuation(): AgUiClient | null;
163
+ /** Point at the thread the store says is active. */
164
+ adoptActiveThread(): void;
165
+ /** Make a freshly minted thread the active one. */
166
+ startThread(): void;
167
+ /**
168
+ * Stop the checkpoint continuation in flight, if there is one.
169
+ *
170
+ * A continuation runs on a client of its own, which the element never held,
171
+ * so Stop cancelled the conversation's client and left this one streaming:
172
+ * the button read Stop and did nothing, and New chat, a thread switch or
173
+ * removing the element carried on drawing the resumed answer into whatever
174
+ * came next. The element calls this wherever it stops its own run.
175
+ */
176
+ stopContinuation(): void;
177
+ /** Forget the messages the last restore seeded, with the rest of the run. */
178
+ forgetRestored(): void;
179
+ /** Delete the active thread if nothing was ever sent in it. */
180
+ reapUnsent(): void;
181
+ /** The run index, built once from `data-runs-url`; `null` when unset. */
182
+ runs(): RunIndex | null;
183
+ /** Open the conversation list, dismissing the checkpoint panel. */
184
+ openThreads(): void;
185
+ /** Open the checkpoint panel, dismissing the conversation list. */
186
+ openCheckpoints(): void;
187
+ /**
188
+ * Switch the active conversation to an existing thread and replay it.
189
+ *
190
+ * A call for the thread a switch is already loading is handed that switch's
191
+ * own promise, so it settles when the thread is drawn rather than at once,
192
+ * before the replay.
193
+ *
194
+ * A store that rejects the load leaves the element on the thread it was on:
195
+ * the switch has already cleared the transcript, so it points back at the
196
+ * old thread and draws it again, saying nothing, and then rejects with the
197
+ * store's error. Left as it was, the element named a thread it was not
198
+ * showing and never reported it.
199
+ */
200
+ switchThread(threadId: string): Promise<void>;
201
+ /** Rename a thread, then reload the list that shows its title. */
202
+ renameThread(threadId: string, title: string): void;
203
+ /** Delete a thread; if it was the active one, fall back to a fresh chat. */
204
+ deleteThread(threadId: string): void;
205
+ /** Reload the drawer's thread list, marking the active thread. */
206
+ refreshDrawer(): Promise<void>;
207
+ /**
208
+ * Continue `runId` as a **new** run, seeded server-side from its snapshot.
209
+ *
210
+ * Uses a short-lived agent pointed at the resume / fork endpoint and seeded
211
+ * with no history, because those endpoints supply the prior turns from the
212
+ * snapshot and re-sending them would duplicate. A separate agent makes that
213
+ * structural and mints the fresh `run_id` the endpoints also require.
214
+ *
215
+ * Built by the same construction as the conversation's own client, so the
216
+ * continuation streams into the same transcript the user is looking at and
217
+ * runs under the same state, tools and bounds. It is the run in flight while
218
+ * it lasts: {@link stopContinuation} is how the element's Stop reaches it.
219
+ *
220
+ * What it adds joins the conversation. Its saves write the conversation on
221
+ * screen ahead of its exchange, and each one hands that whole list to the
222
+ * next client the element builds, so the next ordinary message is sent with
223
+ * the exchange it follows. The conversation's own client never held it, and
224
+ * was sending without it.
225
+ */
226
+ continueRun(runId: string, verb: CheckpointVerb): Promise<void>;
227
+ /**
228
+ * Restore the conversation from the store on mount, then — if a navigating
229
+ * tool reloaded the page mid-run — resume the loop by supplying that tool's
230
+ * result from the page we landed on.
231
+ *
232
+ * Any other call the stored run left unanswered is answered on the way in, as
233
+ * not finished, because no run is left to answer it.
234
+ *
235
+ * **What the store holds after a reload mid-run.** The run loop persists a
236
+ * round when its stream ends, which is *before* it asks about a gated call,
237
+ * runs a frontend tool, or collects a server-side approval. A reload in that
238
+ * window leaves the round's calls stored with no result, and the request that
239
+ * would have produced one died with the page.
240
+ *
241
+ * **Why not finished, and not declined.** Stop declines an open card because
242
+ * pressing it is a person answering the question. A reload answers nothing, and
243
+ * the stored shape is the same whether the round waited on a person or on a
244
+ * handler the reload killed, so declined would be unproven for the first and
245
+ * false for the second. A marker saved while a card is open could tell them
246
+ * apart, but every host store would have to round-trip it, and a store that
247
+ * dropped it would fall back to this wording anyway -- which is true of both.
248
+ *
249
+ * The answers come from the same helper the client runs before each request,
250
+ * so a restored card and the result the next request carries cannot disagree.
251
+ * Giving them to the replay, rather than leaving the client to add them, is
252
+ * what settles each card from its result. The checkpointed call is excluded,
253
+ * because the resume path answers it from the page the reload landed on; that
254
+ * exclusion is held by "resumes with the landed page's result, and its card says
255
+ * so" in `ag_ui_chat_reload_mid_run.test.ts`.
256
+ *
257
+ * **Every restore holds the composer from before the load.** Until the
258
+ * store answers, the conversation's client can only be seeded from nothing.
259
+ * With a remote store that is a real request, and a send, a Retry or a pick
260
+ * in it was refused by nothing: each built the conversation's client before
261
+ * the conversation had loaded, so a send went out carrying none of it, its
262
+ * first save replaced the stored one, and the replay then drew the stored
263
+ * conversation under the new turn. The client stayed cached without it, so
264
+ * every later turn went out without it too. So the composer is held as a
265
+ * send holds it: what was typed parks and goes out after the replay, and a
266
+ * Retry and a pick are refused -- a Retry has nothing on screen to retry, and
267
+ * after the load it would re-ask the previous visit's last question.
268
+ *
269
+ * **A host's send waits for a restore with no run to resume.** It is
270
+ * usually a prompt fired as the element mounts, which no host could time
271
+ * against a load nothing announces, and refusing it would lose the turn.
272
+ * So it waits for this restore to end, taking the hold over as it does,
273
+ * and then sends with the conversation drawn above it; what the built-in
274
+ * Send parked goes out after its run. Stopped while it waits, it is dropped,
275
+ * as a send stopped by its own submit listener is.
276
+ *
277
+ * **A restore that resumes refuses a host's send instead.** The resume is a
278
+ * run, and the restore ends by starting it, so a send that waited would only
279
+ * reach that run and be refused there. The resume gives way to nothing: what
280
+ * was typed parks behind the resumed run and goes out after its answer.
281
+ *
282
+ * The other way round, the resume standing down for the send, was rejected.
283
+ * The send that got in first had already gone out without the conversation,
284
+ * so standing down kept that loss, and it also dropped the run the navigation
285
+ * was part of, which the user asked for before the reload: the agent stopped
286
+ * halfway through the task, with the navigating call never answered.
287
+ *
288
+ * **A restore stops where it was stopped, held or not.** New chat, a thread
289
+ * switch, a `user-key` handover, a newer restore or the element leaving the
290
+ * page can each come while the store answers, and from host code the restore
291
+ * runs itself: the activity and tool renderers each replayed message draws
292
+ * through, and `navigationResult`. From then on it draws nothing more and
293
+ * resumes nothing. The hold cannot say so, because a host's send that
294
+ * waited may hold it by then. So the restore asks its generation, which clearing
295
+ * the conversation moves on as a newer restore does, and asks it after the
296
+ * load, after each replayed message -- as a Retry asks after each one -- and
297
+ * once more before the resume. Stopped by anything but the element leaving
298
+ * the page, it also forgets the checkpoint it loaded, since that was a Stop
299
+ * for the run it would have resumed -- unless what replaced it is a restore
300
+ * of the same conversation, still current, which answers for that run
301
+ * instead; see `#forgetStopped`.
302
+ *
303
+ * `reason` is what the thread event this restore ends with reports as why
304
+ * the conversation changed. A restore that is stopped reports nothing, and
305
+ * neither does one given `null`, which draws the thread already reported.
306
+ */
307
+ rehydrate(reason: ThreadDetail["reason"] | null): Promise<void>;
308
+ /**
309
+ * Replay a restored message: text bubbles *and* tool activity. An assistant
310
+ * turn may carry `toolCalls` (rendered as cards) and/or text; a `tool` turn
311
+ * carries a result that settles the matching card. So a refreshed page shows
312
+ * the full transcript — tool calls and their results — not just the prose.
313
+ */
314
+ replay(message: Message): void;
315
+ }
316
+ export {};
317
+ //# sourceMappingURL=conversation_history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation_history.d.ts","sourceRoot":"","sources":["../../../src/ui/history/conversation_history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const HISTORY_STYLES: string;
2
+ //# sourceMappingURL=history_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/history/history_styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,EAAE,MAwe5B,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type UiStrings } from "../ui_strings.js";
2
+ /**
3
+ * A compact relative timestamp for a thread row — e.g. `"just now"`, `"5m ago"`,
4
+ * `"3h ago"`, `"2d ago"`, `"4w ago"`.
5
+ *
6
+ * `now` is injectable so callers and tests can pin the reference point. A
7
+ * future timestamp (clock skew) and a non-finite one (an unparseable or missing
8
+ * `updated_at`, arriving as `NaN`) both read as `justNow`, rather than
9
+ * rendering a nonsense age. Unit words come from {@link UiStrings} with `{n}`
10
+ * filled in here; the bucketing stays integer-rounded and locale-neutral.
11
+ */
12
+ export declare function relativeTime(timestamp: number, now?: number, strings?: UiStrings): string;
13
+ /**
14
+ * A host's replacement for {@link relativeTime}.
15
+ *
16
+ * Takes an epoch-milliseconds timestamp and returns the text a row shows.
17
+ * `Intl.RelativeTimeFormat` is the obvious implementation and is deliberately
18
+ * *not* the default: a component that guessed a locale would disagree with the
19
+ * host page's own formatting, and being wrong in a second language is worse
20
+ * than being neutral in one.
21
+ */
22
+ export type RelativeTimeFormatter = (timestamp: number) => string;
23
+ //# sourceMappingURL=relative_time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative_time.d.ts","sourceRoot":"","sources":["../../../src/ui/history/relative_time.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEtE;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAmB,EACxB,OAAO,GAAE,SAA8B,GACtC,MAAM,CAqBR;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC"}
@@ -0,0 +1,64 @@
1
+ import type { ThreadMeta } from "../../core/conversation_store.js";
2
+ import { type UiStrings } from "../ui_strings.js";
3
+ import { type RelativeTimeFormatter } from "./relative_time.js";
4
+ /**
5
+ * How many conversations there have to be before the filter appears.
6
+ *
7
+ * A search box above a list you can already read in one glance is a control
8
+ * asking to be used on nothing.
9
+ */
10
+ export declare const FILTER_FROM = 8;
11
+ /**
12
+ * When the search box shows: from {@link FILTER_FROM} conversations (`auto`),
13
+ * over any list (`always`), or not at all (`never`).
14
+ */
15
+ export type ThreadsSearch = "auto" | "always" | "never";
16
+ /** Actions the host ({@link AgUiChat}) wires to the drawer's rows. */
17
+ export interface ThreadDrawerCallbacks {
18
+ /** A row was picked — load that thread and make it active. */
19
+ readonly onSelect: (threadId: string) => void;
20
+ /** The "New chat" action — start a fresh thread. */
21
+ readonly onNew: () => void;
22
+ /** A row was renamed to `title`. */
23
+ readonly onRename: (threadId: string, title: string) => void;
24
+ /** A row was deleted (after the inline confirm). */
25
+ readonly onDelete: (threadId: string) => void;
26
+ }
27
+ /**
28
+ * The chat-history drawer: a slide-over listing the user's threads (title,
29
+ * relative time, preview), with select / new / rename / delete actions and an
30
+ * empty state. Pure DOM, like {@link SkillsMenu}: the host appends
31
+ * {@link element}, toggles it, feeds rows via {@link setThreads}, and acts on
32
+ * the callbacks.
33
+ *
34
+ * A view only — it never mutates the store. After a callback the host updates
35
+ * the store and calls {@link setThreads} to refresh. All visible text comes
36
+ * from {@link UiStrings}; {@link setStrings} re-localizes a drawer built before
37
+ * its strings resolved.
38
+ */
39
+ export declare class ThreadDrawer {
40
+ #private;
41
+ /** The drawer root (backdrop + panel). Append to the chat shell; hidden until opened. */
42
+ readonly element: HTMLDivElement;
43
+ constructor(callbacks: ThreadDrawerCallbacks, strings?: UiStrings);
44
+ /** Re-localize the drawer's chrome and rows (the host calls this on connect). */
45
+ /**
46
+ * Replace the timestamp formatter, or restore the built-in with `null`.
47
+ *
48
+ * The built-in is deliberately locale-neutral -- there is no `Intl` anywhere
49
+ * in this component, so it never disagrees with a host's own formatting by
50
+ * guessing a locale. That is a defensible default and a poor requirement, so
51
+ * this is the way out.
52
+ */
53
+ setRelativeTimeFormatter(format: RelativeTimeFormatter | null): void;
54
+ setStrings(strings: UiStrings): void;
55
+ isOpen(): boolean;
56
+ open(): void;
57
+ close(): void;
58
+ toggle(): void;
59
+ /** Choose when the search box shows; the host's `data-threads-search`. */
60
+ setSearchMode(mode: ThreadsSearch): void;
61
+ /** Render the rows (or the empty state), highlighting the active thread. */
62
+ setThreads(threads: readonly ThreadMeta[], activeId: string): void;
63
+ }
64
+ //# sourceMappingURL=thread_drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread_drawer.d.ts","sourceRoot":"","sources":["../../../src/ui/history/thread_drawer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,qBAAqB,EAAgB,MAAM,oBAAoB,CAAC;AAG9E;;;;;GAKG;AACH,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAIxD,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,oCAAoC;IACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,YAAY;;IACvB,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAsBjC,YAAY,SAAS,EAAE,qBAAqB,EAAE,OAAO,GAAE,SAA8B,EA2EpF;IAED,iFAAiF;IACjF;;;;;;;OAOG;IACH,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAEnE;IASD,UAAU,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAUnC;IAED,MAAM,IAAI,OAAO,CAEhB;IAED,IAAI,IAAI,IAAI,CAWX;IAED,KAAK,IAAI,IAAI,CAOZ;IAED,MAAM,IAAI,IAAI,CAMb;IAgCD,0EAA0E;IAC1E,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAGvC;IAED,4EAA4E;IAC5E,UAAU,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIjE;CAyNF"}
@@ -0,0 +1,2 @@
1
+ export declare function openerElement(root: Document | ShadowRoot): Element | null;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ui/history/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,IAAI,CAUzE"}
@@ -0,0 +1,64 @@
1
+ import { type UiStrings } from "../ui_strings.js";
2
+ /** What the inline approval card displays for one server-side-tool interrupt. */
3
+ export interface ApprovalRequest {
4
+ /**
5
+ * Human-readable prompt from the AG-UI interrupt (e.g.
6
+ * `Approve delete_thing({…})?`). Falls back to the generic
7
+ * {@link UiStrings.approvalPrompt} when the interrupt carries no message.
8
+ */
9
+ message?: string;
10
+ /** Tool name, surfaced as a `data-tool-name` attribute for styling/tests. */
11
+ toolName?: string;
12
+ /**
13
+ * The call's arguments, shown for editing when {@link ApprovalOptions.onEdit}
14
+ * is set. Omitted when the interrupt names no call whose arguments are known.
15
+ */
16
+ args?: Record<string, unknown>;
17
+ }
18
+ /** Options for {@link requestApproval}. */
19
+ export interface ApprovalOptions {
20
+ /**
21
+ * Aborting this signal resolves the card as denied, with buttons disabled and
22
+ * `data-resolved="denied"` — how a Stop control dismisses a pending approval.
23
+ */
24
+ signal?: AbortSignal;
25
+ /** Localized strings; defaults to the English {@link DEFAULT_UI_STRINGS}. */
26
+ strings?: UiStrings;
27
+ /**
28
+ * Offer the call's arguments for editing, and receive what the user approved.
29
+ *
30
+ * Called **only** on approval, and only when the text parses and differs from
31
+ * what was proposed -- an untouched call resolves as a plain approval, so a
32
+ * server sees `editedArgs` exactly when something was actually edited.
33
+ *
34
+ * Absent means no editor, which is deliberate: AG-UI gates this on the
35
+ * agent's own `approveWithEdits` capability, and a card that let a user
36
+ * rewrite arguments a server will discard is worse than one that does not
37
+ * offer to.
38
+ */
39
+ onEdit?: (args: Record<string, unknown>) => void;
40
+ }
41
+ /**
42
+ * A fully custom renderer for a server-side-tool approval, set via
43
+ * `AgUiChat.approvalRenderer`. Receives the {@link ApprovalRequest} and an
44
+ * `AbortSignal` that fires when the run is stopped, and resolves `true` to
45
+ * approve or `false` to deny. Replaces the built-in {@link requestApproval}
46
+ * card entirely, the host owning the DOM; to restyle the built-in card instead,
47
+ * use the `strings` and `::part()` seams.
48
+ */
49
+ export type ApprovalRenderer = (request: ApprovalRequest, options: {
50
+ signal: AbortSignal;
51
+ }) => Promise<boolean>;
52
+ /**
53
+ * Append an inline approval card to `host` and resolve `true` to run a gated
54
+ * server-side tool or `false` to deny it.
55
+ *
56
+ * Distinct from the client-tool confirmation card
57
+ * ({@link requestConfirmation}): a gated server tool defers instead of
58
+ * executing, so the run finishes on an AG-UI interrupt the client answers with
59
+ * `resume[]`, and this is the browser half of that loop. Unlike the
60
+ * confirmation card, this one stays in the transcript as a resolved record,
61
+ * buttons disabled and `data-resolved` set.
62
+ */
63
+ export declare function requestApproval(host: Node & ParentNode, request: ApprovalRequest, options?: ApprovalOptions): Promise<boolean>;
64
+ //# sourceMappingURL=approval_card.d.ts.map