@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
+ /**
2
+ * Draw a {@link ChartSpec} as SVG.
3
+ *
4
+ * Every node is built with `createElement`, never parsed from a string, so this
5
+ * path never reaches the markdown sanitiser and cannot be widened by model
6
+ * output. That is the argument for taking a *spec* rather than markup: the model
7
+ * chooses the numbers, this module chooses the DOM. It is why a chart can be
8
+ * shown on a surface that keeps `img` off by default, a model-controlled URL
9
+ * being a zero-click exfiltration channel.
10
+ *
11
+ * Hand-rolled rather than a charting library, and the difference is not
12
+ * marginal: the whole renderer costs single-digit kilobytes where a library
13
+ * costs roughly half this bundle again, in a component distributed over a CDN.
14
+ *
15
+ * **The drawing is sized in CSS pixels, not scaled to them.** An SVG with a
16
+ * fixed viewBox and `width: 100%` is a picture the browser magnifies: widen the
17
+ * panel and every stroke, every label and the whole frame grow with it. So the
18
+ * geometry is computed for the width the block actually has, one user unit to
19
+ * one CSS pixel, and recomputed when that width changes -- a 10px label is
20
+ * 10px at every size the block is given.
21
+ *
22
+ * How wide the block is allowed to get is the stylesheet's question, not this
23
+ * module's, and the answer there is that a chart stops at its own width rather
24
+ * than stretching with the panel, the way a message does. The two halves are
25
+ * separate on purpose: this one keeps a chart from being magnified, that one
26
+ * keeps it from being stretched, and a host that raises the cap gets a bigger
27
+ * chart with the same 10px labels rather than a magnified one.
28
+ */
29
+ /** One named series of numbers. */
30
+ export interface ChartSeries {
31
+ readonly label: string;
32
+ readonly points: readonly number[];
33
+ }
34
+ /** How a spec is drawn. */
35
+ export type ChartKind = "bar" | "line" | "pie" | "scatter" | "stacked";
36
+ /** A chart, as data. */
37
+ export interface ChartSpec {
38
+ readonly kind: ChartKind;
39
+ readonly title?: string;
40
+ readonly labels: readonly string[];
41
+ readonly series: readonly ChartSeries[];
42
+ }
43
+ /** The colour for series `index`, wrapping when there are more series than colours. */
44
+ export declare function seriesColor(index: number): string;
45
+ /**
46
+ * Render one spec as a self-contained block, or `null` when it says nothing.
47
+ *
48
+ * A spec with no labels or no series is not drawn: an empty frame reads as
49
+ * "there is no data" when the truth is "the caller sent nothing", and the two
50
+ * deserve different answers.
51
+ *
52
+ * The block returned is already drawn at {@link DEFAULT_WIDTH} and redraws
53
+ * itself once it is in a document and knows how wide it really is, so a caller
54
+ * appends it exactly as before and never has to say how big it should be.
55
+ */
56
+ export declare function renderChart(spec: ChartSpec): HTMLDivElement | null;
57
+ //# sourceMappingURL=chart_block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart_block.d.ts","sourceRoot":"","sources":["../../../src/ui/charts/chart_block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,2BAA2B;AAC3B,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvE,wBAAwB;AACxB,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAgED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD;AAkWD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,cAAc,GAAG,IAAI,CAsClE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Narrow untrusted input into a {@link ChartSpec}.
3
+ *
4
+ * Both arrival routes are untrusted in the same way — a model writes one, a
5
+ * server the other — so neither is taken on shape. Kept out of the renderer
6
+ * because the renderer's job is drawing, and a value that reaches it has
7
+ * already been vouched for.
8
+ */
9
+ import type { ChartSpec } from "./chart_block.js";
10
+ /** A well-formed spec, or `null` for anything that cannot be drawn honestly. */
11
+ export declare function chartSpecFrom(value: unknown): ChartSpec | null;
12
+ //# sourceMappingURL=chart_spec_from.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart_spec_from.d.ts","sourceRoot":"","sources":["../../../src/ui/charts/chart_spec_from.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,kBAAkB,CAAC;AA6E7D,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAqC9D"}
@@ -0,0 +1,2 @@
1
+ export declare const CHART_STYLES: string;
2
+ //# sourceMappingURL=chart_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/charts/chart_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,EAAE,MA6D1B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The built-in `render_chart` tool: the agent-called route to a chart.
3
+ *
4
+ * A thin thing on purpose. It carries no `handler` of its own beyond reporting
5
+ * back to the model, because everything it does is drawing — which lives in
6
+ * `render`, the half the component replays. A consumer wanting charts gets this
7
+ * without writing a renderer; a consumer wanting something else writes their own
8
+ * tool against the same seam.
9
+ */
10
+ import type { ClientTool } from "../../tools/client_tool_registry.js";
11
+ /** The name the built-in chart tool registers under. */
12
+ export declare const CHART_TOOL_NAME = "render_chart";
13
+ /** The built-in chart tool. */
14
+ export declare function createChartTool(): ClientTool;
15
+ //# sourceMappingURL=chart_tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart_tool.d.ts","sourceRoot":"","sources":["../../../src/ui/charts/chart_tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAItE,wDAAwD;AACxD,eAAO,MAAM,eAAe,iBAAiB,CAAC;AAgB9C,+BAA+B;AAC/B,wBAAgB,eAAe,IAAI,UAAU,CAuC5C"}
@@ -0,0 +1,2 @@
1
+ export declare const ATTACHMENT_STYLES: string;
2
+ //# sourceMappingURL=attachment_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/attachment_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,EAAE,MAqE/B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { AttachmentRef } from "../../core/attachment.js";
2
+ import type { UploadHandler } from "../../core/upload_attachment.js";
3
+ import { type UiStrings } from "../ui_strings.js";
4
+ /** Config the host ({@link AgUiChat}) hands the tray. */
5
+ export interface AttachmentTrayConfig {
6
+ /** Upload one file, reporting `0..1` progress; resolves to a durable ref. */
7
+ readonly upload: UploadHandler;
8
+ /** Client-side size cap in bytes (`0` = no cap). The server stays authoritative. */
9
+ readonly maxBytes: number;
10
+ /** Client-side accept list (`<input accept>` syntax; `""` = any). */
11
+ readonly accept: string;
12
+ /** Fired when the set of attachments changes (add / settle / remove). */
13
+ readonly onChange?: () => void;
14
+ /** Localized strings; defaults to the English {@link DEFAULT_UI_STRINGS}. */
15
+ readonly strings?: UiStrings;
16
+ }
17
+ /**
18
+ * The composer's pending-attachments tray: a chip per picked file with a
19
+ * progress bar while it uploads, settling to a ready chip holding the durable
20
+ * ref or an error chip with retry. A stateful view like {@link ThreadDrawer}:
21
+ * the host appends {@link element}, calls {@link add} on pick or drop, reads
22
+ * {@link readyRefs} on send, and clears it.
23
+ *
24
+ * Client-side size and type guards reject a bad file into an error chip without
25
+ * uploading, for instant feedback, but the server stays the authority.
26
+ */
27
+ export declare class AttachmentTray {
28
+ #private;
29
+ /** The tray root; append above the input row. Hidden while empty. */
30
+ readonly element: HTMLDivElement;
31
+ constructor(config: AttachmentTrayConfig);
32
+ /** Queue a file: reject oversize/disallowed into an error chip, else upload. */
33
+ add(file: File): void;
34
+ /** The durable refs of every chip that finished uploading. */
35
+ readyRefs(): readonly AttachmentRef[];
36
+ /** Whether any chip is still uploading (a send would drop nothing if false). */
37
+ hasPending(): boolean;
38
+ /** How many chips are still uploading — the count a send-time notice names. */
39
+ pendingCount(): number;
40
+ /** Whether the tray holds no chips. */
41
+ isEmpty(): boolean;
42
+ /** Drop the settled (ready / error) chips, leaving any still uploading. */
43
+ clearReady(): void;
44
+ /** Drop every chip (a reset / new-chat), aborting any in-flight upload. */
45
+ clear(): void;
46
+ /**
47
+ * Abort every in-flight upload without touching the rendered chips — the
48
+ * teardown path when the host element is removed mid-upload, so a cancelled
49
+ * transfer doesn't orphan a server-side file.
50
+ */
51
+ dispose(): void;
52
+ }
53
+ //# sourceMappingURL=attachment_tray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_tray.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/attachment_tray.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIrE,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKtE,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;CAC9B;AAcD;;;;;;;;;GASG;AACH,qBAAa,cAAc;;IACzB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IAMjC,YAAY,MAAM,EAAE,oBAAoB,EAOvC;IAED,gFAAgF;IAChF,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAsBpB;IAED,8DAA8D;IAC9D,SAAS,IAAI,SAAS,aAAa,EAAE,CAQpC;IAED,gFAAgF;IAChF,UAAU,IAAI,OAAO,CAEpB;IAED,+EAA+E;IAC/E,YAAY,IAAI,MAAM,CAErB;IAED,uCAAuC;IACvC,OAAO,IAAI,OAAO,CAEjB;IAED,2EAA2E;IAC3E,UAAU,IAAI,IAAI,CAGjB;IAED,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAMZ;IAED;;;;OAIG;IACH,OAAO,IAAI,IAAI,CAId;CAqIF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Size the field to its content: one row when empty, growing with what is
3
+ * typed until the CSS ceiling takes over and it scrolls.
4
+ *
5
+ * Resetting to `auto` first is what makes it shrink again — `scrollHeight`
6
+ * never reports less than the current height, so measuring without the reset
7
+ * would ratchet the composer taller and never back down.
8
+ */
9
+ export declare function autoGrow(input: HTMLTextAreaElement): void;
10
+ //# sourceMappingURL=auto_grow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto_grow.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/auto_grow.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAGzD"}
@@ -0,0 +1,32 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /** The composer's parts, owned by the element, and what they call back into. */
3
+ export interface ComposerOptions {
4
+ readonly input: HTMLTextAreaElement;
5
+ readonly send: HTMLButtonElement;
6
+ readonly attachButton: HTMLButtonElement;
7
+ readonly fileInput: HTMLInputElement;
8
+ readonly voiceSlot: HTMLElement;
9
+ /** The place chip; sits in the tool row between the voice slot and Send. */
10
+ readonly place: HTMLElement;
11
+ /** The line saying what the composer still needs; sits above the input. */
12
+ readonly hint: HTMLElement;
13
+ /** The queued-message row; sits above the input beside the tray. */
14
+ readonly queuedRow: HTMLElement;
15
+ /** Where the attachment tray mounts; sits above the input. */
16
+ readonly attachSlot: HTMLElement;
17
+ readonly strings: UiStrings;
18
+ readonly signal: AbortSignal;
19
+ readonly onKeydown: (event: KeyboardEvent) => void;
20
+ readonly onInput: () => void;
21
+ /** Send while idle, Stop while a run is in flight: the element decides. */
22
+ readonly onSend: () => void;
23
+ readonly onFilesPicked: () => void;
24
+ }
25
+ /**
26
+ * Build the composer row -- the field, and the tool row under it with the
27
+ * attach and voice controls, the place chip and Send -- and ready the composer surfaces the
28
+ * element mounts above it: the hint, the queued row and the attachment slot.
29
+ * Returns the row; the element places it and the surfaces.
30
+ */
31
+ export declare function buildComposer(options: ComposerOptions): HTMLElement;
32
+ //# sourceMappingURL=build_composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_composer.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/build_composer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,gFAAgF;AAChF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,CA+EnE"}
@@ -0,0 +1,57 @@
1
+ import { type UploadHandler } from "../../core/upload_attachment.js";
2
+ import type { UiStrings } from "../ui_strings.js";
3
+ import { AttachmentTray } from "./attachment_tray.js";
4
+ /** What the composer's attachments need from the element that owns them. */
5
+ export interface ComposerAttachmentsHost {
6
+ /** The custom element: its upload attributes, and where the event is dispatched. */
7
+ readonly element: HTMLElement;
8
+ /** The chat shell, which a file can be dropped or pasted anywhere on. */
9
+ readonly chat: HTMLElement;
10
+ /** Where the tray mounts, above the composer. */
11
+ readonly slot: HTMLElement;
12
+ /** The hidden multi-file input the paperclip opens. */
13
+ readonly fileInput: HTMLInputElement;
14
+ /** The paperclip, revealed once uploads are possible. */
15
+ readonly button: HTMLButtonElement;
16
+ /** The resolved string table. */
17
+ readonly strings: () => UiStrings;
18
+ /** The host's `uploadHandler`, read when the tray is wired. */
19
+ readonly uploadHandler: () => UploadHandler | null;
20
+ /** The headers a request to `url` carries. */
21
+ readonly headersFor: (url: string) => Record<string, string>;
22
+ /** The cookie policy every request carries, when one is configured. */
23
+ readonly credentialsOption: () => {
24
+ credentials?: RequestCredentials;
25
+ };
26
+ }
27
+ /**
28
+ * Files handed to the composer: the tray they upload through, and the four
29
+ * ways into it -- the picker, a drop, a paste, and a host's `attachFile`.
30
+ *
31
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
32
+ * instance.
33
+ */
34
+ export declare class ComposerAttachments {
35
+ #private;
36
+ constructor(host: ComposerAttachmentsHost);
37
+ /** The tray, once uploads are wired; `null` while the chat is text-only. */
38
+ get tray(): AttachmentTray | null;
39
+ /**
40
+ * Enable the composer's file-upload tray when uploads are possible — either a
41
+ * custom `uploadHandler` is set or `data-attachments-url` provides the
42
+ * built-in multipart endpoint: reveal the 📎 button, wire the hidden file
43
+ * input + drag-and-drop, and mount the tray. With neither, the affordance
44
+ * stays hidden and the chat degrades to text-only.
45
+ *
46
+ * Called on every connect, so it starts by taking down the tray the last
47
+ * connection mounted: that one was disposed when the element left, and the
48
+ * attributes that decide whether there is a tray at all may have changed
49
+ * since. The shell outlives a connection, so its listeners go under `signal`.
50
+ */
51
+ wire(signal: AbortSignal): void;
52
+ /** The queueing behind `AgUiChat.attachFile`, whose doc is the contract. */
53
+ attach(file: File): boolean;
54
+ /** Queue every file from the picker into the tray, then reset the input. */
55
+ onFilesPicked(): void;
56
+ }
57
+ //# sourceMappingURL=composer_attachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer_attachments.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/composer_attachments.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,iCAAiC,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,4EAA4E;AAC5E,MAAM,WAAW,uBAAuB;IACtC,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACnD,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,uEAAuE;IACvE,QAAQ,CAAC,iBAAiB,EAAE,MAAM;QAAE,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE,CAAC;CACxE;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;;IAK9B,YAAY,IAAI,EAAE,uBAAuB,EAExC;IAED,4EAA4E;IAC5E,IAAI,IAAI,IAAI,cAAc,GAAG,IAAI,CAEhC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CA4B9B;IAED,4EAA4E;IAC5E,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAM1B;IAED,4EAA4E;IAC5E,aAAa,IAAI,IAAI,CAUpB;CA2KF"}
@@ -0,0 +1,2 @@
1
+ export declare const COMPOSER_STYLES: string;
2
+ //# sourceMappingURL=composer_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/composer_styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,EAAE,MA8K7B,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { type TranscribeHandler } from "../../core/transcribe_audio.js";
2
+ import type { UiStrings } from "../ui_strings.js";
3
+ /** What the composer's mic needs from the element that owns it. */
4
+ export interface ComposerVoiceHost {
5
+ /** The custom element, whose `data-transcribe-url` names the built-in endpoint. */
6
+ readonly element: HTMLElement;
7
+ /** Where the mic button mounts, in the composer's tool row. */
8
+ readonly slot: HTMLElement;
9
+ /** The composer a transcript is written into. */
10
+ readonly input: HTMLTextAreaElement;
11
+ /** The resolved string table. */
12
+ readonly strings: () => UiStrings;
13
+ /** The host's `transcribeHandler`, read when the mic is wired. */
14
+ readonly transcribeHandler: () => TranscribeHandler | null;
15
+ /** The headers a request to `url` carries. */
16
+ readonly headersFor: (url: string) => Record<string, string>;
17
+ /** The cookie policy every request carries, when one is configured. */
18
+ readonly credentialsOption: () => {
19
+ credentials?: RequestCredentials;
20
+ };
21
+ /** React to the composer's value changing, as typing does. */
22
+ readonly onInput: () => void;
23
+ }
24
+ /**
25
+ * The composer's mic: mounted when transcription is possible, and what a
26
+ * transcript does to the composer.
27
+ *
28
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
29
+ * instance.
30
+ */
31
+ export declare class ComposerVoice {
32
+ #private;
33
+ constructor(host: ComposerVoiceHost);
34
+ /**
35
+ * Reveal the composer's 🎤 mic button when transcription is possible — either
36
+ * a custom `transcribeHandler` is set or `data-transcribe-url` provides the
37
+ * built-in POST endpoint. The control records via `MediaRecorder` and drops
38
+ * the transcript into the composer; with neither configured the mic stays
39
+ * hidden and the chat is text-only.
40
+ *
41
+ * Called on every connect, so it starts by taking down the mic the last
42
+ * connection mounted, which was released when the element left.
43
+ */
44
+ wire(): void;
45
+ /** Release the mic, so the browser's recording indicator clears. */
46
+ dispose(): void;
47
+ }
48
+ //# sourceMappingURL=composer_voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer_voice.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/composer_voice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAmB,MAAM,gCAAgC,CAAC;AACzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAC3D,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,uEAAuE;IACvE,QAAQ,CAAC,iBAAiB,EAAE,MAAM;QAAE,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE,CAAC;IACvE,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;;IAKxB,YAAY,IAAI,EAAE,iBAAiB,EAElC;IAED;;;;;;;;;OASG;IACH,IAAI,IAAI,IAAI,CAcX;IAED,oEAAoE;IACpE,OAAO,IAAI,IAAI,CAEd;CAuBF"}
@@ -0,0 +1,2 @@
1
+ export declare const SKILL_STYLES: string;
2
+ //# sourceMappingURL=skill_styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill_styles.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/skill_styles.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,EAAE,MAsH1B,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Skill } from "../../skills/skill.js";
2
+ /**
3
+ * The two skill surfaces over a single catalog: a chips row (the `chip: true`
4
+ * subset) and a slash-command palette (all skills, filtered). Both opt-in.
5
+ * Pure DOM; the host appends {@link chips} and {@link palette}, feeds input via
6
+ * {@link onInput} / {@link onKeydown}, and acts on {@link onPick}.
7
+ */
8
+ export declare class SkillsMenu {
9
+ #private;
10
+ /** Chips row — append above the input. Hidden unless chips are enabled and present. */
11
+ readonly chips: HTMLDivElement;
12
+ /** The `/`-command dropdown — append in the input area. Hidden until opened. */
13
+ readonly palette: HTMLDivElement;
14
+ constructor(onPick: (skill: Skill) => void);
15
+ /** Replace the catalog (both surfaces re-derive from it). */
16
+ setSkills(skills: readonly Skill[]): void;
17
+ enableChips(enabled: boolean): void;
18
+ enableSlash(enabled: boolean): void;
19
+ /** Whether the palette is currently open. */
20
+ isOpen(): boolean;
21
+ /**
22
+ * React to an input value change: open + filter the palette when slash mode
23
+ * is on and the value starts with `/`, otherwise close it.
24
+ */
25
+ onInput(value: string): void;
26
+ /**
27
+ * Handle a keydown while the palette is open. Returns ``true`` when consumed
28
+ * (the host should `preventDefault` and skip its own handling).
29
+ */
30
+ onKeydown(event: KeyboardEvent): boolean;
31
+ /** Close the palette. */
32
+ close(): void;
33
+ }
34
+ //# sourceMappingURL=skills_menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills_menu.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/skills_menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD;;;;;GAKG;AACH,qBAAa,UAAU;;IACrB,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IASjC,YAAY,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAWzC;IAED,6DAA6D;IAC7D,SAAS,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,IAAI,CAGxC;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAGlC;IAED,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAElC;IAED,6CAA6C;IAC7C,MAAM,IAAI,OAAO,CAEhB;IAED;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM3B;IAED;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAyBvC;IAED,yBAAyB;IACzB,KAAK,IAAI,IAAI,CAGZ;CAsFF"}
@@ -0,0 +1,46 @@
1
+ import type { TranscribeHandler } from "../../core/transcribe_audio.js";
2
+ import { type UiStrings } from "../ui_strings.js";
3
+ /** Construction options for {@link VoiceInput}. */
4
+ export interface VoiceInputOptions {
5
+ /** Turns a recorded clip into text (the built-in or a custom transport). */
6
+ readonly transcribe: TranscribeHandler;
7
+ /** Called with the transcript when a recording transcribes successfully. */
8
+ readonly onText: (text: string) => void;
9
+ /** UI string table (labels/tooltips). */
10
+ readonly strings?: UiStrings;
11
+ }
12
+ /**
13
+ * The composer's voice-input control: a mic button that records via
14
+ * `MediaRecorder`, then POSTs the clip through a {@link TranscribeHandler} and
15
+ * hands the transcript back via `onText`.
16
+ *
17
+ * Click to start recording, which prompts for mic permission, and again to stop
18
+ * and transcribe. The button reflects its `idle` / `recording` / `transcribing`
19
+ * state on `data-state` for theming and is exposed as `part="voice-button"`; a
20
+ * capture or transcription failure returns it to idle and surfaces the message
21
+ * on its tooltip.
22
+ *
23
+ * Pure DOM. The host mounts {@link element} in the input row.
24
+ */
25
+ export declare class VoiceInput {
26
+ #private;
27
+ /** The mic button; mount this in the composer. */
28
+ readonly element: HTMLButtonElement;
29
+ constructor(options: VoiceInputOptions);
30
+ /** Start recording when idle, stop (and transcribe) when recording. */
31
+ toggle(): Promise<void>;
32
+ /**
33
+ * Tear the control down, for a host element removed mid-recording or handed
34
+ * to the next principal. Stops any live `MediaRecorder`, releases the mic
35
+ * tracks so the browser's recording indicator clears, and suppresses the
36
+ * pending transcription — a disconnected control must not fire `onText` into
37
+ * a detached element.
38
+ *
39
+ * Disposal is final: nothing un-disposes an instance, and the host's next
40
+ * wiring builds a new one. So the disposed flag alone tells a continuation
41
+ * that outlived the control from a live one, and a clip already posted when this runs is
42
+ * dropped whenever its answer arrives.
43
+ */
44
+ dispose(): void;
45
+ }
46
+ //# sourceMappingURL=voice_input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice_input.d.ts","sourceRoot":"","sources":["../../../src/ui/composer/voice_input.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAoBtE,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,yCAAyC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,UAAU;;IACrB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAepC,YAAY,OAAO,EAAE,iBAAiB,EAmBrC;IAED,uEAAuE;IACjE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAS5B;IAsFD;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,IAAI,CAQd;CAiFF"}
@@ -0,0 +1,13 @@
1
+ import type { UiStrings } from "../ui_strings.js";
2
+ /**
3
+ * Give every fenced code block in `root` a copy button.
4
+ *
5
+ * Call only on finished bubbles: the streaming bubble reassigns its `innerHTML`
6
+ * on every delta, so a button attached mid-stream is discarded and rebuilt for
7
+ * each one.
8
+ *
9
+ * Idempotent — a bubble already processed is skipped, so a re-render or a second
10
+ * call cannot stack buttons.
11
+ */
12
+ export declare function attachCopyButtons(root: ParentNode, strings: UiStrings): void;
13
+ //# sourceMappingURL=attach_copy_buttons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach_copy_buttons.d.ts","sourceRoot":"","sources":["../../../src/ui/excerpts/attach_copy_buttons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAS5E"}
@@ -0,0 +1,30 @@
1
+ /** What a copied message puts on the clipboard, in both flavours. */
2
+ export interface CopyPayload {
3
+ /** The plain-text flavour, structured so a table survives a paste. */
4
+ readonly text: string;
5
+ /** The rich flavour, so a table pastes as a table. */
6
+ readonly html: string;
7
+ }
8
+ /**
9
+ * What to copy from one rendered message, in both clipboard flavours.
10
+ *
11
+ * `textContent` was the obvious answer and the wrong one. It concatenates every
12
+ * descendant with no separator at all, so a markdown table arrives as one run
13
+ * of digits with the headers welded to the first row -- unusable in a
14
+ * spreadsheet, and unreadable anywhere. Lists lose their bullets the same way,
15
+ * and paragraphs run together.
16
+ *
17
+ * So the plain flavour is serialised structurally: table rows become tab
18
+ * separated lines, which is the format spreadsheets parse on paste, and blocks
19
+ * and list items get their own lines. The rich flavour carries the markup, so a
20
+ * target that understands it -- a document, a chat client, a spreadsheet --
21
+ * gets the real table rather than a reconstruction of one.
22
+ *
23
+ * Both are taken from a **clone with the component's own buttons removed**. The
24
+ * code-block copy buttons are appended inside their own `pre`, so they are
25
+ * descendants of the bubble and `textContent` was picking their label up: a
26
+ * message containing a code block copied with the word for Copy sitting in the
27
+ * middle of it.
28
+ */
29
+ export declare function copyPayload(root: Element): CopyPayload;
30
+ //# sourceMappingURL=copy_payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy_payload.d.ts","sourceRoot":"","sources":["../../../src/ui/excerpts/copy_payload.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA+BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAQtD"}
@@ -0,0 +1,33 @@
1
+ /** A live page-side offer. */
2
+ export interface PageQuoteOffer {
3
+ /** The button itself, for a host that wants to style or inspect it. */
4
+ readonly element: HTMLButtonElement;
5
+ /** Stop offering: every listener removed, the button and its styles gone. */
6
+ detach(): void;
7
+ }
8
+ /** What {@link attachQuoteOffer} needs to know. */
9
+ export interface PageQuoteOfferOptions {
10
+ /** Where a selection is worth offering to quote. */
11
+ within: HTMLElement;
12
+ /** What the offer says. */
13
+ label: string;
14
+ /**
15
+ * A subtree to stay out of -- the chat widget itself.
16
+ *
17
+ * Its transcript runs this same gesture on the inside, so without this a
18
+ * selection there would be offered twice and quoted twice.
19
+ */
20
+ exclude: Node;
21
+ /** Take the offer. */
22
+ onQuote: (text: string) => void;
23
+ }
24
+ /**
25
+ * Offer to quote what the user selects inside `within`.
26
+ *
27
+ * Nothing is quoted until the offer is taken -- which is the whole point. An
28
+ * automatic version of this is easy to write and horrible to use: every drag
29
+ * made to read, to copy, or to fix a typo silently appends to whatever the user
30
+ * was in the middle of typing.
31
+ */
32
+ export declare function attachQuoteOffer(options: PageQuoteOfferOptions): PageQuoteOffer;
33
+ //# sourceMappingURL=page_quote_offer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page_quote_offer.d.ts","sourceRoot":"","sources":["../../../src/ui/excerpts/page_quote_offer.ts"],"names":[],"mappings":"AAqDA,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,6EAA6E;IAC7E,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,MAAM,EAAE,WAAW,CAAC;IACpB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,EAAE,IAAI,CAAC;IACd,sBAAsB;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAgG/E"}
@@ -0,0 +1,9 @@
1
+ /** The box an offer is positioned in: its top-left corner and width, in viewport pixels. */
2
+ export interface OfferBox {
3
+ readonly top: number;
4
+ readonly left: number;
5
+ readonly width: number;
6
+ }
7
+ /** Float the offer beside `rect`, above it when there is room and inside `box` horizontally. */
8
+ export declare function placeOffer(button: HTMLButtonElement, rect: DOMRect, box: OfferBox): void;
9
+ //# sourceMappingURL=place_offer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"place_offer.d.ts","sourceRoot":"","sources":["../../../src/ui/excerpts/place_offer.ts"],"names":[],"mappings":"AAGA,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,gGAAgG;AAChG,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,CAYxF"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Reading a text selection out of the shadow tree, and shaping it for the
3
+ * composer.
4
+ *
5
+ * Selection is the one DOM API shadow encapsulation genuinely broke, and it
6
+ * broke it in two different directions. WebKit rescopes a selection made inside
7
+ * a shadow tree to the **host** element, so `document.getSelection()` reports
8
+ * the whole widget and none of the words; Chromium exposes the shadow nodes
9
+ * directly, so the same call reports exactly the words. `getComposedRanges` is
10
+ * the settled answer to both -- it hands back real endpoints for each shadow
11
+ * root it is *given permission to see* -- but it is recent enough that the
12
+ * direct read has to stay behind it.
13
+ */
14
+ /**
15
+ * The longest quotation put into the composer, in characters.
16
+ *
17
+ * A cap rather than no cap because the point of a quotation is to say *which*
18
+ * part of an answer the next question is about. Select-all-then-quote is a
19
+ * gesture the transcript already answers -- it is the whole conversation, which
20
+ * the model has -- and pasting it back costs the user tokens to say nothing.
21
+ */
22
+ export declare const MAX_QUOTE_CHARS = 500;
23
+ /** A selection worth offering to quote. */
24
+ export interface QuotableSelection {
25
+ /** The selected text, trimmed. Never empty. */
26
+ readonly text: string;
27
+ /**
28
+ * One **line** of the selection, for placing the affordance beside it.
29
+ *
30
+ * Deliberately not the selection's bounding box. See {@link lineToHangFrom}:
31
+ * the union of a selection spanning several elements has a centre with no
32
+ * selected text anywhere near it.
33
+ */
34
+ readonly rect: DOMRect;
35
+ }
36
+ /** Where a gesture ended, in viewport coordinates. */
37
+ export interface Point {
38
+ readonly x: number;
39
+ readonly y: number;
40
+ }
41
+ /**
42
+ * The current selection, when it lies wholly inside `container`.
43
+ *
44
+ * `roots` are the shadow roots the read is allowed to look inside, in the shape
45
+ * `getComposedRanges` itself takes. Pass the one holding `container` for a
46
+ * selection made in a shadow tree, or nothing at all for one made in the page.
47
+ *
48
+ * `near` is where the gesture ended, when a pointer made it -- it decides which
49
+ * line of a multi-line selection the offer is hung from.
50
+ *
51
+ * `null` for no selection, a collapsed one, whitespace only, or one that
52
+ * starts or ends outside `container` -- a drag that ran off the transcript and
53
+ * into the page is not a quotation from the transcript.
54
+ */
55
+ export declare function quotableSelection(container: HTMLElement, roots?: readonly ShadowRoot[], near?: Point): QuotableSelection | null;
56
+ /**
57
+ * Wrap `text` as a markdown blockquote, ready to be followed by a question.
58
+ *
59
+ * Markdown rather than a bespoke fence because the transcript renders markdown
60
+ * and the server reads markdown: a quotation that survives both ends without a
61
+ * convention to agree on first. The trailing blank line is what leaves the
62
+ * caret on a fresh paragraph, which is the whole point of quoting into a
63
+ * composer rather than sending straight away.
64
+ */
65
+ export declare function asQuote(text: string): string;
66
+ //# sourceMappingURL=quote_selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quote_selection.d.ts","sourceRoot":"","sources":["../../../src/ui/excerpts/quote_selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,sDAAsD;AACtD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,WAAW,EACtB,KAAK,GAAE,SAAS,UAAU,EAAO,EACjC,IAAI,CAAC,EAAE,KAAK,GACX,iBAAiB,GAAG,IAAI,CAqB1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAa5C"}