@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,472 @@
1
+ // Collapsing and expanding: the animation toward the launcher, the in-flow
2
+ // and page placements that collapse differently or not at all, and the two
3
+ // collapse-to targets: the bottom bar, and the host's own (hidden here, with
4
+ // the conversation list beside the host's button).
5
+ export const COLLAPSE_STYLES: string = `
6
+ /* ── Collapse ───────────────────────────────────────────────────────────────
7
+ Collapsing shrinks the widget to the round floating launcher: the panel
8
+ scales toward the launcher's corner and fades, the launcher pops in from the
9
+ same point. Both halves are transform and opacity only, so the morph runs on
10
+ the compositor and never reflows the host page.
11
+
12
+ The host box keeps its expanded size, since animating it would animate
13
+ layout and a dragged --ag-ui-width would fight the launcher's own size.
14
+ Nothing paints there once the panel is gone, so the box only has to stop
15
+ swallowing clicks: pointer events go to none and the launcher takes them.
16
+
17
+ Two placements do not use it: "sidebar" slides to its rail (below), and
18
+ "embedded" keeps its header bar, having no corner for a floating circle that
19
+ would escape the host's layout. "page" has no collapsed state at all. */
20
+ :host([collapsed]) {
21
+ pointer-events: none;
22
+ /* A collapsed host has to be allowed to shrink, and in the layout hosts
23
+ actually use it is not. Every collapse path here works by letting the host
24
+ size to its content -- the in-flow ones set height: auto, the floating one
25
+ leaves only the launcher -- and a flex or grid parent whose align-items is
26
+ the default stretch value overrides all of it. The panel then hides and the box
27
+ it occupied stays: a header bar over several hundred pixels of nothing.
28
+ Every known consumer hit this, because putting the element in a flex column
29
+ beside the page content is the obvious way to embed it. */
30
+ align-self: start;
31
+ }
32
+
33
+ :host([collapsed]) .chat {
34
+ opacity: 0;
35
+ transform: scale(0.94);
36
+ visibility: hidden;
37
+ }
38
+
39
+ /* visibility keeps the panel out of the tab order and the a11y tree at rest
40
+ without display:none killing the transition. It interpolates so any progress
41
+ below 1 still counts as visible: the panel stays on screen for the whole
42
+ collapse, flips hidden exactly at the end, and on expand is visible from the
43
+ first frame. */
44
+ .chat {
45
+ transform-origin: bottom right;
46
+ transition:
47
+ opacity var(--_motion) var(--_ease),
48
+ transform var(--_motion) var(--_ease),
49
+ visibility var(--_motion) var(--_ease);
50
+ }
51
+
52
+ :host([placement="bottom-left"]) .chat {
53
+ transform-origin: bottom left;
54
+ }
55
+
56
+ /* Once the launcher has been dragged the element places itself, and stamps the
57
+ corner it chose to open away from. The morph has to start at that same
58
+ corner: scaling out of the one the placement originally guessed reads as the
59
+ panel leaping across the screen before it opens.
60
+
61
+ Equal specificity to the placement rule above, so source order is what lets
62
+ the stamped value win -- the same arrangement the resize grip uses, and the
63
+ same trap. Write these with = on the whole hyphenated token; a ~= would match
64
+ whitespace-separated words and so could never match at all. */
65
+ :host([data-expand-corner="top-left"]) .chat {
66
+ transform-origin: top left;
67
+ }
68
+
69
+ :host([data-expand-corner="top-right"]) .chat {
70
+ transform-origin: top right;
71
+ }
72
+
73
+ :host([data-expand-corner="bottom-left"]) .chat {
74
+ transform-origin: bottom left;
75
+ }
76
+
77
+ :host([data-expand-corner="bottom-right"]) .chat {
78
+ transform-origin: bottom right;
79
+ }
80
+
81
+ /* The in-flow placement keeps the original collapse: hide the body, let the
82
+ host shrink to the header bar. */
83
+ :host([collapsed][placement="embedded"]) {
84
+ height: auto;
85
+ max-height: none;
86
+ pointer-events: auto;
87
+ }
88
+
89
+ :host([collapsed][placement="embedded"]) .chat {
90
+ opacity: 1;
91
+ transform: none;
92
+ visibility: visible;
93
+ }
94
+
95
+ /* It keeps the header bar, so the launcher must stay out of the way: an
96
+ embedded host is position: static, which would let an absolutely-positioned
97
+ circle escape the layout and land against whatever the page positions. */
98
+ :host([collapsed][placement="embedded"]) .launcher {
99
+ visibility: hidden;
100
+ opacity: 0;
101
+ }
102
+
103
+ :host([collapsed][placement="embedded"]) .messages-wrap,
104
+ :host([collapsed][placement="embedded"]) .messages,
105
+ :host([collapsed][placement="embedded"]) .input-row,
106
+ :host([collapsed][placement="embedded"]) slot[name="above-composer"],
107
+ :host([collapsed][placement="embedded"]) .skill-chips,
108
+ :host([collapsed][placement="embedded"]) .skill-palette,
109
+ :host([collapsed][placement="embedded"]) .skill-hint {
110
+ display: none;
111
+ }
112
+
113
+ /* The above-composer slot is in the list above because it is the host's content
114
+ against the composer: a bare slot has no box of its own, so hiding the input
115
+ row alone left the slotted row showing under the header bar. Its sibling slot
116
+ below the composer is a footer and is left to the host. */
117
+
118
+ /* The page placement has no collapsed state, so it offers no control for one.
119
+ A dedicated route has no "away" to go to: shrinking it left a strip of
120
+ application chrome fixed over a route that no longer had an owner, and this
121
+ is the one placement where the launcher that would bring it back is hidden.
122
+
123
+ Hiding the control is only half of it. The state has another way in -- the
124
+ attribute can be written straight onto the element, and a value stored under
125
+ a different placement is restored on connect -- and the JS guards that catch
126
+ those cannot see an attribute set directly. So the placement neutralises the
127
+ state here as well: with the collapse rules above no longer naming "page", an
128
+ unguarded collapsed attribute would otherwise fall through to the generic
129
+ rule that scales the panel away and drops pointer events, leaving nothing on
130
+ screen and no launcher to press. */
131
+ :host([placement="page"]) .header-btn--collapse {
132
+ display: none;
133
+ }
134
+
135
+ :host([placement="page"][collapsed]) {
136
+ pointer-events: auto;
137
+ align-self: auto;
138
+ }
139
+
140
+ :host([placement="page"][collapsed]) .chat {
141
+ opacity: 1;
142
+ transform: none;
143
+ visibility: visible;
144
+ }
145
+
146
+ /* ── Bottom bar (collapse-to="bar") ──────────────────────────────────────────
147
+ The round launcher drawn as a strip along the bottom edge: the title, the
148
+ unread badge and a running mark, with a history button beside it. The
149
+ wrapper draws no box anywhere else, so the launcher lays out against the
150
+ host as it always has; under the bar it is fixed to the bottom of the
151
+ viewport, outside the host's box, which sits where the panel opens.
152
+
153
+ Here rather than with the launcher because it restyles the launcher's
154
+ collapsed and pressed states, which this module follows in the cascade.
155
+ The strip stays drawn while the panel is open on a wide viewport, as the
156
+ way to minimise it; the phone block hides it then. */
157
+ .dock-bar {
158
+ display: contents;
159
+ }
160
+
161
+ .bar-history,
162
+ .bar-place {
163
+ display: none;
164
+ }
165
+
166
+ :host([data-collapsed-to="bar"]) .dock-bar {
167
+ position: fixed;
168
+ inset: auto var(--_viewport-inset-right) var(--_viewport-inset-bottom) var(--_viewport-inset-left);
169
+ display: flex;
170
+ align-items: center;
171
+ justify-content: flex-end;
172
+ gap: 4px;
173
+ box-sizing: border-box;
174
+ min-height: 40px;
175
+ padding: 4px 8px;
176
+ border-top: 1px solid var(--_border);
177
+ background: var(--_bg);
178
+ color: var(--_fg);
179
+ pointer-events: auto;
180
+ }
181
+
182
+ /* A left-hand chat keeps its side: its controls and its panel at the left end. */
183
+ :host([data-collapsed-to="bar"][placement="bottom-left"]) .dock-bar {
184
+ justify-content: flex-start;
185
+ }
186
+
187
+ /* The launcher as the strip's title button. Its resting state hides it behind
188
+ an open panel; the bar keeps it on screen, so every part of that state is
189
+ restated, and the hover and press scales are cancelled at the weight of the
190
+ rules that set them. The title truncates rather than taking a fixed width,
191
+ leaving room beside it for whatever a later release adds to the row. */
192
+ :host([data-collapsed-to="bar"]) .launcher {
193
+ position: static;
194
+ inset: auto;
195
+ flex: 0 1 auto;
196
+ justify-content: flex-start;
197
+ gap: 8px;
198
+ width: auto;
199
+ min-width: 0;
200
+ max-width: 100%;
201
+ height: auto;
202
+ min-height: 32px;
203
+ padding: 4px 10px;
204
+ border-radius: 8px;
205
+ background: transparent;
206
+ color: var(--_fg);
207
+ box-shadow: none;
208
+ touch-action: manipulation;
209
+ opacity: 1;
210
+ transform: none;
211
+ visibility: visible;
212
+ }
213
+
214
+ :host([data-collapsed-to="bar"]) .launcher:hover {
215
+ background: var(--_wash);
216
+ }
217
+
218
+ /* Bare at rest, like the history button beside it. The themes frame the
219
+ round launcher with a border or a shadow at the weight of the rule above
220
+ and later in the cascade, so the child combinator on the bar is there for
221
+ weight, not scope: the launcher is always the bar's direct child. */
222
+ :host([data-collapsed-to="bar"]) .dock-bar > .launcher {
223
+ border: 0;
224
+ box-shadow: none;
225
+ }
226
+
227
+ :host([data-collapsed-to="bar"][collapsed]) .launcher:hover,
228
+ :host([data-collapsed-to="bar"][collapsed]) .launcher:active {
229
+ transform: none;
230
+ }
231
+
232
+ :host([data-collapsed-to="bar"]) .launcher .icon-holder {
233
+ flex: none;
234
+ width: 18px;
235
+ height: 18px;
236
+ }
237
+
238
+ :host([data-collapsed-to="bar"]) .rail-label {
239
+ display: block;
240
+ min-width: 0;
241
+ overflow: hidden;
242
+ font-size: 0.9em;
243
+ font-weight: 600;
244
+ white-space: nowrap;
245
+ text-overflow: ellipsis;
246
+ }
247
+
248
+ /* The place beside the title, secondary text that truncates first so the
249
+ history button never leaves the strip. Its shrink factor is large so that
250
+ it gives way before the title does, which is the strip's first word.
251
+ Withheld places keep the chip's
252
+ dashed, struck-through look: the bar must not claim the page is sent. */
253
+ :host([data-collapsed-to="bar"]) .bar-place {
254
+ display: inline-flex;
255
+ flex: 0 100 auto;
256
+ gap: 6px;
257
+ min-width: 0;
258
+ overflow: hidden;
259
+ padding: 2px 0;
260
+ border-bottom: 1px solid transparent;
261
+ color: var(--_muted);
262
+ font-size: 0.85em;
263
+ line-height: 1.2;
264
+ }
265
+
266
+ :host([data-collapsed-to="bar"]) .bar-place[hidden],
267
+ :host([data-collapsed-to="bar"]) .bar-place .place-detail[hidden] {
268
+ display: none;
269
+ }
270
+
271
+ :host([data-collapsed-to="bar"]) .bar-place[data-excluded] {
272
+ border-bottom-style: dashed;
273
+ border-bottom-color: var(--_border);
274
+ }
275
+
276
+ :host([data-collapsed-to="bar"]) .bar-place[data-excluded] .place-label,
277
+ :host([data-collapsed-to="bar"]) .bar-place[data-excluded] .place-detail {
278
+ text-decoration: line-through;
279
+ }
280
+
281
+ :host([data-collapsed-to="bar"]) .launcher-badge {
282
+ position: static;
283
+ flex: none;
284
+ box-shadow: none;
285
+ }
286
+
287
+ /* The running mark: the element already reflects a run as data-running, so
288
+ the bar shows one without a state of its own. */
289
+ :host([data-collapsed-to="bar"][data-running]) .launcher::after {
290
+ content: "";
291
+ flex: none;
292
+ width: 8px;
293
+ height: 8px;
294
+ border-radius: 50%;
295
+ background: var(--_accent);
296
+ animation: ag-ui-dock-running 1.2s ease-in-out infinite;
297
+ }
298
+
299
+ @keyframes ag-ui-dock-running {
300
+ 50% {
301
+ opacity: 0.35;
302
+ }
303
+ }
304
+
305
+ @media (prefers-reduced-motion: reduce) {
306
+ :host([data-collapsed-to="bar"][data-running]) .launcher::after {
307
+ animation: none;
308
+ }
309
+ }
310
+
311
+ :host([data-collapsed-to="bar"]) .bar-history {
312
+ display: inline-flex;
313
+ flex: none;
314
+ align-items: center;
315
+ justify-content: center;
316
+ width: 32px;
317
+ height: 32px;
318
+ padding: 0;
319
+ border: 0;
320
+ border-radius: 8px;
321
+ background: transparent;
322
+ color: var(--_muted);
323
+ font: inherit;
324
+ cursor: pointer;
325
+ }
326
+
327
+ :host([data-collapsed-to="bar"]) .bar-history:hover {
328
+ background: var(--_wash);
329
+ color: var(--_fg);
330
+ }
331
+
332
+ /* Both declare a display of their own, so each needs its own hidden rule. */
333
+ :host([data-collapsed-to]) .dock-bar[hidden],
334
+ :host([data-collapsed-to]) .bar-history[hidden] {
335
+ display: none;
336
+ }
337
+
338
+ /* A panel a host sized to the whole window stands on the strip, whose fixed box would
339
+ draw over the composer's foot. So it goes as it does on a phone, by display, so the
340
+ bar measures 0 and the host's padding goes with it, and the header's minimise
341
+ control is the way back. Collapsed, the strip is the way back, so it stays. */
342
+ :host([data-collapsed-to="bar"][data-fills-window]:not([collapsed])) .dock-bar {
343
+ display: none;
344
+ }
345
+
346
+ /* History from the bar: the panel's own drawer, moved beside the bar while
347
+ the panel is away, drawn as a popover standing on the bar's end. There is
348
+ no backdrop; a press outside the bar closes it, as Escape does.
349
+
350
+ Its outer edge keeps the panel's gutter, so the popover and the panel line
351
+ up on the side they share. The bar is already inset by the host's reserved
352
+ edges, so the gutter alone is the whole offset from it, and the width cap
353
+ leaves the gutter free on both sides. A phone keeps a narrow margin
354
+ instead, in the block below: the panel there is the whole screen, so there
355
+ is no edge to line up with. */
356
+ :host([data-collapsed-to="bar"]) .dock-bar > .drawer {
357
+ inset: auto var(--_edge-gutter) calc(100% + 8px) auto;
358
+ width: min(320px, calc(var(--_viewport-width) - 2 * var(--_edge-gutter)));
359
+ height: min(440px, calc(var(--_viewport-height) - var(--_dock-bottom, 0px) - 16px));
360
+ border-radius: var(--_panel-radius);
361
+ box-shadow: var(--_shadow);
362
+ overflow: hidden;
363
+ }
364
+
365
+ :host([data-collapsed-to="bar"][placement="bottom-left"]) .dock-bar > .drawer {
366
+ inset: auto auto calc(100% + 8px) var(--_edge-gutter);
367
+ }
368
+
369
+ @media (max-width: 600px) {
370
+ :host([data-collapsed-to="bar"]:not([data-small-viewport="off"])) .dock-bar > .drawer {
371
+ inset: auto 8px calc(100% + 8px) auto;
372
+ width: min(320px, calc(100vw - 16px));
373
+ }
374
+
375
+ :host([data-collapsed-to="bar"][placement="bottom-left"]:not([data-small-viewport="off"])) .dock-bar > .drawer {
376
+ inset: auto auto calc(100% + 8px) 8px;
377
+ }
378
+ }
379
+
380
+ :host([data-collapsed-to="bar"]) .dock-bar > .drawer .drawer-backdrop {
381
+ display: none;
382
+ }
383
+
384
+ /* The popover closes in one step. The in-panel drawer slides its panel out
385
+ and holds the overlay's visibility until the slide ends; here the overlay
386
+ is the popover's own box, rounded and clipped, so the slide moved the list
387
+ inside a box that stayed put (read as a shrink) and the box went only once
388
+ the slide had finished. This outweighs the drawer's own hidden rule, so the
389
+ box hides at once, and whatever the list inside does is out of sight. The
390
+ way in needs no rule: the drawer is moved into the bar as it opens, and a
391
+ moved element starts no transition. Nothing is left for reduced motion. */
392
+ :host([data-collapsed-to="bar"]) .dock-bar > .drawer {
393
+ transition: none;
394
+ }
395
+
396
+ /* Border-box, so the list's own border sits inside the popover's clipped box
397
+ rather than 2px past its bottom edge. */
398
+ :host([data-collapsed-to="bar"]) .dock-bar > .drawer .drawer-panel {
399
+ box-sizing: border-box;
400
+ width: 100%;
401
+ border: 1px solid var(--_border);
402
+ border-radius: inherit;
403
+ box-shadow: none;
404
+ }
405
+
406
+ /* ── The host's own bar (collapse-to="none") ─────────────────────────────────
407
+ Collapsed is hidden: no launcher, no rail, no header bar. The host's control
408
+ calls the public API, and the panel rises from its anchor (the dock module)
409
+ or from the placement's corner. Each placement's own collapsed rule is
410
+ overridden at its weight or above, later in the cascade. */
411
+ :host([data-collapsed-to="none"][collapsed]) {
412
+ pointer-events: none;
413
+ }
414
+
415
+ :host([data-collapsed-to="none"][collapsed]) .launcher {
416
+ display: none;
417
+ }
418
+
419
+ :host([data-collapsed-to="none"][collapsed][placement="sidebar"]) {
420
+ width: 0;
421
+ }
422
+
423
+ :host([data-collapsed-to="none"][collapsed][placement="embedded"]) {
424
+ display: none;
425
+ }
426
+
427
+ /* The conversation list from the host's button: the panel's own drawer, moved
428
+ out of the hidden panel and stood beside the button, below one in the top half
429
+ of the viewport and above one in the bottom half. The element writes where,
430
+ from the button's box. No backdrop: a press outside closes it, as Escape does.
431
+ The wrapper draws no box; the host stops taking presses while collapsed, so
432
+ the list takes its own back. A phone keeps a narrow margin on both sides. */
433
+ .threads-popover {
434
+ display: contents;
435
+ }
436
+
437
+ :host([data-collapsed-to="none"]) .threads-popover > .drawer {
438
+ position: fixed;
439
+ inset: var(--_threads-top, auto) var(--_threads-right, 8px) var(--_threads-bottom, auto) auto;
440
+ width: min(320px, calc(var(--_viewport-width) - 16px));
441
+ height: min(440px, var(--_threads-room, 440px));
442
+ border-radius: var(--_panel-radius);
443
+ box-shadow: var(--_shadow);
444
+ overflow: hidden;
445
+ pointer-events: auto;
446
+ transition: none;
447
+ }
448
+
449
+ :host([data-collapsed-to="none"]) .threads-popover > .drawer[hidden] {
450
+ pointer-events: none;
451
+ }
452
+
453
+ @media (max-width: 600px) {
454
+ :host([data-collapsed-to="none"]:not([data-small-viewport="off"])) .threads-popover > .drawer {
455
+ right: 8px;
456
+ left: 8px;
457
+ width: auto;
458
+ }
459
+ }
460
+
461
+ :host([data-collapsed-to="none"]) .threads-popover > .drawer .drawer-backdrop {
462
+ display: none;
463
+ }
464
+
465
+ :host([data-collapsed-to="none"]) .threads-popover > .drawer .drawer-panel {
466
+ box-sizing: border-box;
467
+ width: 100%;
468
+ border: 1px solid var(--_border);
469
+ border-radius: inherit;
470
+ box-shadow: none;
471
+ }
472
+ `;
@@ -0,0 +1,116 @@
1
+ // Where a docked panel stands: above the bottom bar under collapse-to="bar",
2
+ // above the host's anchor under collapse-to="none". Token restatements only;
3
+ // the bar's own shape is in the collapse module, after the launcher it
4
+ // restyles.
5
+ export const DOCK_STYLES: string = `
6
+ /* ── Dock ────────────────────────────────────────────────────────────────────
7
+ A docked panel rises from the bar along the bottom edge, or from the host's
8
+ own control, instead of resting in a corner of its own. The element stamps
9
+ what it collapses to as data-collapsed-to, and writes where the dock is as
10
+ two private properties: --_dock-bottom, the bar's height or the distance
11
+ from the layout viewport's bottom to the anchor's top, and --_dock-right,
12
+ the anchor's distance from the right edge (a third, --_dock-top, for a
13
+ panel below its anchor). Both are read with a 0px
14
+ fallback, so a panel measured before the bar has laid out stands where a
15
+ bar of no height would put it.
16
+
17
+ The cap follows the token block's rule: what the host left free less the
18
+ one gutter the anchored edge spends, so a panel grown to the cap runs from
19
+ just above the bar to the far edge. A host therefore needs no inset to keep
20
+ the panel off its bar; --ag-ui-inset still wins when set. A panel the user
21
+ dragged off its dock is written there inline, which is how the dragged spot
22
+ outranks every rule below, the anchor gap included; the element holds that
23
+ spot above the bar or the anchor itself, and drops it on a phone, where the
24
+ small-viewport block reads the same property first.
25
+
26
+ These blocks restate tokens and nothing else, and sit ahead of the phone
27
+ block at no more weight than it has, so on a phone the panel is the screen
28
+ as every other placement is there. The bar measures 0 while it is not drawn
29
+ (a phone with the panel open), which is what lets the side and full shapes
30
+ below fall back to the whole height without a phone rule of their own.
31
+
32
+ Each placement keeps its own side and shape; only the bottom edge moves. */
33
+ :host([data-collapsed-to="bar"]) {
34
+ --_inset: var(
35
+ --ag-ui-inset,
36
+ auto calc(var(--_edge-gutter) + var(--_viewport-inset-right))
37
+ calc(
38
+ var(--_edge-gutter) + var(--_viewport-inset-bottom) +
39
+ max(var(--_dock-bottom, 0px), var(--_keyboard-inset))
40
+ )
41
+ auto
42
+ );
43
+ --_max-height: var(--ag-ui-max-height, calc(var(--_viewport-height) - var(--_dock-bottom, 0px) - var(--_edge-gutter)));
44
+ }
45
+
46
+ :host([data-collapsed-to="bar"][placement="bottom-left"]) {
47
+ --_inset: var(
48
+ --ag-ui-inset,
49
+ auto auto
50
+ calc(
51
+ var(--_edge-gutter) + var(--_viewport-inset-bottom) +
52
+ max(var(--_dock-bottom, 0px), var(--_keyboard-inset))
53
+ )
54
+ calc(var(--_edge-gutter) + var(--_viewport-inset-left))
55
+ );
56
+ }
57
+
58
+ /* The column and the full-screen panel stop at the bar rather than covering
59
+ it, so the bar stays where the user minimises from. */
60
+ :host([data-collapsed-to="bar"][placement="side"]) {
61
+ --_inset: var(
62
+ --ag-ui-inset,
63
+ calc(var(--_viewport-inset-top) + var(--_keyboard-inset-top)) var(--_viewport-inset-right)
64
+ calc(var(--_viewport-inset-bottom) + var(--_dock-bottom, 0px)) auto
65
+ );
66
+ --_height: var(--ag-ui-height, calc(var(--_viewport-height) - var(--_dock-bottom, 0px)));
67
+ --_max-height: var(--ag-ui-max-height, calc(var(--_viewport-height) - var(--_dock-bottom, 0px)));
68
+ }
69
+
70
+ :host([data-collapsed-to="bar"][placement="full"]) {
71
+ --_inset: var(
72
+ --ag-ui-inset,
73
+ calc(var(--_viewport-inset-top) + var(--_keyboard-inset-top)) var(--_viewport-inset-right)
74
+ calc(var(--_viewport-inset-bottom) + var(--_dock-bottom, 0px)) var(--_viewport-inset-left)
75
+ );
76
+ --_height: var(--ag-ui-height, calc(var(--_viewport-height) - var(--_dock-bottom, 0px)));
77
+ --_max-height: var(--ag-ui-max-height, calc(var(--_viewport-height) - var(--_dock-bottom, 0px)));
78
+ }
79
+
80
+ /* The host's own bar: the panel stands the anchor gap (8px unless the host
81
+ says otherwise) above the anchor and lines up with its right edge. Only
82
+ once the element found the anchor; until then, and when it never does, the
83
+ placement's own corner stands.
84
+
85
+ The cap spends the larger of the gap and the gutter. The gutter alone is
86
+ what this always spent, so the default is unchanged; but a host that opens
87
+ the gap past the gutter to clear a tall toolbar would otherwise push a
88
+ panel grown to the cap off the top of the window by the difference.
89
+
90
+ The width cap spends a gutter on each side: the panel is held off both
91
+ window edges, so one gutter would leave a panel grown to the cap flush
92
+ against the edge the anchor holds it to. */
93
+ :host([data-collapsed-to="none"][data-dock-anchored]) {
94
+ --_inset: var(--ag-ui-inset, auto var(--_dock-right, 0px) calc(var(--_dock-bottom, 0px) + var(--_anchor-gap)) auto);
95
+ --_max-width: var(--ag-ui-max-width, calc(var(--_viewport-width) - 2 * var(--_edge-gutter)));
96
+ --_max-height: var(
97
+ --ag-ui-max-height,
98
+ calc(var(--_viewport-height) - var(--_dock-bottom, 0px) - max(var(--_edge-gutter), var(--_anchor-gap)))
99
+ );
100
+ }
101
+
102
+ /* The same, below the anchor, for a host whose control sits in a header: the
103
+ element stamps the side it resolved from anchor-side as the attribute's
104
+ value and writes the anchor's bottom as --_dock-top. Keyed on that value
105
+ rather than on another attribute, so the rule weighs what the one above
106
+ weighs and the phone block after it still wins by order. --_dock-right is
107
+ the anchor's right edge unless the panel would then cross the left gutter,
108
+ on either side. */
109
+ :host([data-collapsed-to="none"][data-dock-anchored="below"]) {
110
+ --_inset: var(--ag-ui-inset, calc(var(--_dock-top, 0px) + var(--_anchor-gap)) var(--_dock-right, 0px) auto auto);
111
+ --_max-height: var(
112
+ --ag-ui-max-height,
113
+ calc(var(--_viewport-height) - var(--_dock-top, 0px) - max(var(--_edge-gutter), var(--_anchor-gap)))
114
+ );
115
+ }
116
+ `;
@@ -0,0 +1,14 @@
1
+ // The embedded placement: no floating chrome, laid out by the host.
2
+ export const EMBEDDED_STYLES: string = `
3
+ /* Embedded: drop the floating chrome and the high z-index stacking context so
4
+ the widget lives in the host's own layout (fixes overlay/z-index clashes). */
5
+ :host([placement="embedded"]) {
6
+ --_position: var(--ag-ui-position, static);
7
+ --_width: var(--_drag-width, var(--ag-ui-width, 100%));
8
+ --_height: var(--_drag-height, var(--ag-ui-height, 100%));
9
+ --_max-width: var(--ag-ui-max-width, 100%);
10
+ --_max-height: var(--ag-ui-max-height, 100%);
11
+ --_shadow: var(--ag-ui-shadow, none);
12
+ --_z-index: var(--ag-ui-z-index, auto);
13
+ }
14
+ `;