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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/LICENSE +21 -0
  3. package/README.md +4397 -2
  4. package/dist/agents-web-components.bundle.js +5708 -0
  5. package/dist/agents-web-components.bundle.js.map +7 -0
  6. package/dist/bundle.d.ts +3 -0
  7. package/dist/bundle.d.ts.map +1 -0
  8. package/dist/chat.d.ts +3 -0
  9. package/dist/chat.d.ts.map +1 -0
  10. package/dist/chat.js +16373 -0
  11. package/dist/chat.js.map +7 -0
  12. package/dist/chunk-ARNLFGCC.js +7715 -0
  13. package/dist/chunk-ARNLFGCC.js.map +7 -0
  14. package/dist/constants.d.ts +575 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/core/activity_registration.d.ts +19 -0
  17. package/dist/core/activity_registration.d.ts.map +1 -0
  18. package/dist/core/activity_registry.d.ts +46 -0
  19. package/dist/core/activity_registry.d.ts.map +1 -0
  20. package/dist/core/activity_renderer.d.ts +20 -0
  21. package/dist/core/activity_renderer.d.ts.map +1 -0
  22. package/dist/core/ag_ui_chat.d.ts +836 -0
  23. package/dist/core/ag_ui_chat.d.ts.map +1 -0
  24. package/dist/core/agui_client.d.ts +370 -0
  25. package/dist/core/agui_client.d.ts.map +1 -0
  26. package/dist/core/attachment.d.ts +42 -0
  27. package/dist/core/attachment.d.ts.map +1 -0
  28. package/dist/core/chat_registry.d.ts +23 -0
  29. package/dist/core/chat_registry.d.ts.map +1 -0
  30. package/dist/core/client_seed.d.ts +27 -0
  31. package/dist/core/client_seed.d.ts.map +1 -0
  32. package/dist/core/conversation_store.d.ts +195 -0
  33. package/dist/core/conversation_store.d.ts.map +1 -0
  34. package/dist/core/create_http_agent.d.ts +57 -0
  35. package/dist/core/create_http_agent.d.ts.map +1 -0
  36. package/dist/core/define_chat.d.ts +13 -0
  37. package/dist/core/define_chat.d.ts.map +1 -0
  38. package/dist/core/events/attachments_detail.d.ts +9 -0
  39. package/dist/core/events/attachments_detail.d.ts.map +1 -0
  40. package/dist/core/events/bar_height_detail.d.ts +6 -0
  41. package/dist/core/events/bar_height_detail.d.ts.map +1 -0
  42. package/dist/core/events/custom_agent_detail.d.ts +8 -0
  43. package/dist/core/events/custom_agent_detail.d.ts.map +1 -0
  44. package/dist/core/events/dock_width_detail.d.ts +8 -0
  45. package/dist/core/events/dock_width_detail.d.ts.map +1 -0
  46. package/dist/core/events/feedback_detail.d.ts +28 -0
  47. package/dist/core/events/feedback_detail.d.ts.map +1 -0
  48. package/dist/core/events/invalidate_detail.d.ts +16 -0
  49. package/dist/core/events/invalidate_detail.d.ts.map +1 -0
  50. package/dist/core/events/maximize_detail.d.ts +5 -0
  51. package/dist/core/events/maximize_detail.d.ts.map +1 -0
  52. package/dist/core/events/run_finished_detail.d.ts +36 -0
  53. package/dist/core/events/run_finished_detail.d.ts.map +1 -0
  54. package/dist/core/events/state_detail.d.ts +5 -0
  55. package/dist/core/events/state_detail.d.ts.map +1 -0
  56. package/dist/core/events/submit_detail.d.ts +8 -0
  57. package/dist/core/events/submit_detail.d.ts.map +1 -0
  58. package/dist/core/events/thread_detail.d.ts +27 -0
  59. package/dist/core/events/thread_detail.d.ts.map +1 -0
  60. package/dist/core/events/thread_title_detail.d.ts +8 -0
  61. package/dist/core/events/thread_title_detail.d.ts.map +1 -0
  62. package/dist/core/events/toggle_detail.d.ts +5 -0
  63. package/dist/core/events/toggle_detail.d.ts.map +1 -0
  64. package/dist/core/events/tool_run.d.ts +11 -0
  65. package/dist/core/events/tool_run.d.ts.map +1 -0
  66. package/dist/core/events/unread_detail.d.ts +11 -0
  67. package/dist/core/events/unread_detail.d.ts.map +1 -0
  68. package/dist/core/message_role.d.ts +4 -0
  69. package/dist/core/message_role.d.ts.map +1 -0
  70. package/dist/core/read_flag.d.ts +11 -0
  71. package/dist/core/read_flag.d.ts.map +1 -0
  72. package/dist/core/read_json_attribute.d.ts +15 -0
  73. package/dist/core/read_json_attribute.d.ts.map +1 -0
  74. package/dist/core/read_max_tool_rounds.d.ts +9 -0
  75. package/dist/core/read_max_tool_rounds.d.ts.map +1 -0
  76. package/dist/core/remote_conversation_store.d.ts +71 -0
  77. package/dist/core/remote_conversation_store.d.ts.map +1 -0
  78. package/dist/core/run_handlers.d.ts +85 -0
  79. package/dist/core/run_handlers.d.ts.map +1 -0
  80. package/dist/core/run_index.d.ts +58 -0
  81. package/dist/core/run_index.d.ts.map +1 -0
  82. package/dist/core/storage_scope.d.ts +118 -0
  83. package/dist/core/storage_scope.d.ts.map +1 -0
  84. package/dist/core/tool_outcome.d.ts +27 -0
  85. package/dist/core/tool_outcome.d.ts.map +1 -0
  86. package/dist/core/transcribe_audio.d.ts +32 -0
  87. package/dist/core/transcribe_audio.d.ts.map +1 -0
  88. package/dist/core/upload_attachment.d.ts +44 -0
  89. package/dist/core/upload_attachment.d.ts.map +1 -0
  90. package/dist/core/utils.d.ts +117 -0
  91. package/dist/core/utils.d.ts.map +1 -0
  92. package/dist/dom/animations.d.ts +122 -0
  93. package/dist/dom/animations.d.ts.map +1 -0
  94. package/dist/dom/dom_driver.d.ts +28 -0
  95. package/dist/dom/dom_driver.d.ts.map +1 -0
  96. package/dist/dom/highlight_overlay.d.ts +39 -0
  97. package/dist/dom/highlight_overlay.d.ts.map +1 -0
  98. package/dist/dom/native_setter.d.ts +5 -0
  99. package/dist/dom/native_setter.d.ts.map +1 -0
  100. package/dist/dom/ring_color.d.ts +16 -0
  101. package/dist/dom/ring_color.d.ts.map +1 -0
  102. package/dist/dom/utils.d.ts +3 -0
  103. package/dist/dom/utils.d.ts.map +1 -0
  104. package/dist/index.d.ts +62 -0
  105. package/dist/index.d.ts.map +1 -0
  106. package/dist/index.js +223 -0
  107. package/dist/index.js.map +7 -0
  108. package/dist/skills/fill_template.d.ts +16 -0
  109. package/dist/skills/fill_template.d.ts.map +1 -0
  110. package/dist/skills/parse_skills.d.ts +8 -0
  111. package/dist/skills/parse_skills.d.ts.map +1 -0
  112. package/dist/skills/skill.d.ts +33 -0
  113. package/dist/skills/skill.d.ts.map +1 -0
  114. package/dist/skills/skill_catalog.d.ts +69 -0
  115. package/dist/skills/skill_catalog.d.ts.map +1 -0
  116. package/dist/skills/skill_name_from.d.ts +12 -0
  117. package/dist/skills/skill_name_from.d.ts.map +1 -0
  118. package/dist/tools/chat_surface_tools.d.ts +77 -0
  119. package/dist/tools/chat_surface_tools.d.ts.map +1 -0
  120. package/dist/tools/client_tool_registry.d.ts +58 -0
  121. package/dist/tools/client_tool_registry.d.ts.map +1 -0
  122. package/dist/tools/is_destructive.d.ts +14 -0
  123. package/dist/tools/is_destructive.d.ts.map +1 -0
  124. package/dist/tools/is_navigates.d.ts +9 -0
  125. package/dist/tools/is_navigates.d.ts.map +1 -0
  126. package/dist/tools/page_action_tools.d.ts +30 -0
  127. package/dist/tools/page_action_tools.d.ts.map +1 -0
  128. package/dist/tools/page_map.d.ts +16 -0
  129. package/dist/tools/page_map.d.ts.map +1 -0
  130. package/dist/tools/page_state.d.ts +27 -0
  131. package/dist/tools/page_state.d.ts.map +1 -0
  132. package/dist/tools/parse_tool_catalog.d.ts +21 -0
  133. package/dist/tools/parse_tool_catalog.d.ts.map +1 -0
  134. package/dist/tools/route_map.d.ts +37 -0
  135. package/dist/tools/route_map.d.ts.map +1 -0
  136. package/dist/tools/tool_catalog.d.ts +86 -0
  137. package/dist/tools/tool_catalog.d.ts.map +1 -0
  138. package/dist/tools/tool_dispatch.d.ts +82 -0
  139. package/dist/tools/tool_dispatch.d.ts.map +1 -0
  140. package/dist/ui/charts/chart_block.d.ts +57 -0
  141. package/dist/ui/charts/chart_block.d.ts.map +1 -0
  142. package/dist/ui/charts/chart_spec_from.d.ts +12 -0
  143. package/dist/ui/charts/chart_spec_from.d.ts.map +1 -0
  144. package/dist/ui/charts/chart_styles.d.ts +2 -0
  145. package/dist/ui/charts/chart_styles.d.ts.map +1 -0
  146. package/dist/ui/charts/chart_tool.d.ts +15 -0
  147. package/dist/ui/charts/chart_tool.d.ts.map +1 -0
  148. package/dist/ui/composer/attachment_styles.d.ts +2 -0
  149. package/dist/ui/composer/attachment_styles.d.ts.map +1 -0
  150. package/dist/ui/composer/attachment_tray.d.ts +53 -0
  151. package/dist/ui/composer/attachment_tray.d.ts.map +1 -0
  152. package/dist/ui/composer/auto_grow.d.ts +10 -0
  153. package/dist/ui/composer/auto_grow.d.ts.map +1 -0
  154. package/dist/ui/composer/build_composer.d.ts +32 -0
  155. package/dist/ui/composer/build_composer.d.ts.map +1 -0
  156. package/dist/ui/composer/composer_attachments.d.ts +57 -0
  157. package/dist/ui/composer/composer_attachments.d.ts.map +1 -0
  158. package/dist/ui/composer/composer_styles.d.ts +2 -0
  159. package/dist/ui/composer/composer_styles.d.ts.map +1 -0
  160. package/dist/ui/composer/composer_voice.d.ts +48 -0
  161. package/dist/ui/composer/composer_voice.d.ts.map +1 -0
  162. package/dist/ui/composer/skill_styles.d.ts +2 -0
  163. package/dist/ui/composer/skill_styles.d.ts.map +1 -0
  164. package/dist/ui/composer/skills_menu.d.ts +34 -0
  165. package/dist/ui/composer/skills_menu.d.ts.map +1 -0
  166. package/dist/ui/composer/voice_input.d.ts +46 -0
  167. package/dist/ui/composer/voice_input.d.ts.map +1 -0
  168. package/dist/ui/excerpts/attach_copy_buttons.d.ts +13 -0
  169. package/dist/ui/excerpts/attach_copy_buttons.d.ts.map +1 -0
  170. package/dist/ui/excerpts/copy_payload.d.ts +30 -0
  171. package/dist/ui/excerpts/copy_payload.d.ts.map +1 -0
  172. package/dist/ui/excerpts/page_quote_offer.d.ts +33 -0
  173. package/dist/ui/excerpts/page_quote_offer.d.ts.map +1 -0
  174. package/dist/ui/excerpts/place_offer.d.ts +9 -0
  175. package/dist/ui/excerpts/place_offer.d.ts.map +1 -0
  176. package/dist/ui/excerpts/quote_selection.d.ts +66 -0
  177. package/dist/ui/excerpts/quote_selection.d.ts.map +1 -0
  178. package/dist/ui/excerpts/transcript_quote_offer.d.ts +57 -0
  179. package/dist/ui/excerpts/transcript_quote_offer.d.ts.map +1 -0
  180. package/dist/ui/fill_ui_string.d.ts +32 -0
  181. package/dist/ui/fill_ui_string.d.ts.map +1 -0
  182. package/dist/ui/history/checkpoint_menu.d.ts +41 -0
  183. package/dist/ui/history/checkpoint_menu.d.ts.map +1 -0
  184. package/dist/ui/history/conversation_history.d.ts +317 -0
  185. package/dist/ui/history/conversation_history.d.ts.map +1 -0
  186. package/dist/ui/history/history_styles.d.ts +2 -0
  187. package/dist/ui/history/history_styles.d.ts.map +1 -0
  188. package/dist/ui/history/relative_time.d.ts +23 -0
  189. package/dist/ui/history/relative_time.d.ts.map +1 -0
  190. package/dist/ui/history/thread_drawer.d.ts +64 -0
  191. package/dist/ui/history/thread_drawer.d.ts.map +1 -0
  192. package/dist/ui/history/utils.d.ts +2 -0
  193. package/dist/ui/history/utils.d.ts.map +1 -0
  194. package/dist/ui/interrupts/approval_card.d.ts +64 -0
  195. package/dist/ui/interrupts/approval_card.d.ts.map +1 -0
  196. package/dist/ui/interrupts/approval_styles.d.ts +2 -0
  197. package/dist/ui/interrupts/approval_styles.d.ts.map +1 -0
  198. package/dist/ui/interrupts/confirmation_card.d.ts +51 -0
  199. package/dist/ui/interrupts/confirmation_card.d.ts.map +1 -0
  200. package/dist/ui/interrupts/confirmation_styles.d.ts +2 -0
  201. package/dist/ui/interrupts/confirmation_styles.d.ts.map +1 -0
  202. package/dist/ui/interrupts/pending_decision.d.ts +22 -0
  203. package/dist/ui/interrupts/pending_decision.d.ts.map +1 -0
  204. package/dist/ui/interrupts/question_card.d.ts +49 -0
  205. package/dist/ui/interrupts/question_card.d.ts.map +1 -0
  206. package/dist/ui/interrupts/question_styles.d.ts +2 -0
  207. package/dist/ui/interrupts/question_styles.d.ts.map +1 -0
  208. package/dist/ui/place/place.d.ts +17 -0
  209. package/dist/ui/place/place.d.ts.map +1 -0
  210. package/dist/ui/place/place_chip.d.ts +26 -0
  211. package/dist/ui/place/place_chip.d.ts.map +1 -0
  212. package/dist/ui/place/place_from_route.d.ts +9 -0
  213. package/dist/ui/place/place_from_route.d.ts.map +1 -0
  214. package/dist/ui/place/place_styles.d.ts +2 -0
  215. package/dist/ui/place/place_styles.d.ts.map +1 -0
  216. package/dist/ui/placement/clamp_launcher.d.ts +20 -0
  217. package/dist/ui/placement/clamp_launcher.d.ts.map +1 -0
  218. package/dist/ui/placement/clamp_panel.d.ts +13 -0
  219. package/dist/ui/placement/clamp_panel.d.ts.map +1 -0
  220. package/dist/ui/placement/collapse_styles.d.ts +2 -0
  221. package/dist/ui/placement/collapse_styles.d.ts.map +1 -0
  222. package/dist/ui/placement/dock_styles.d.ts +2 -0
  223. package/dist/ui/placement/dock_styles.d.ts.map +1 -0
  224. package/dist/ui/placement/embedded_styles.d.ts +2 -0
  225. package/dist/ui/placement/embedded_styles.d.ts.map +1 -0
  226. package/dist/ui/placement/launcher_drag.d.ts +49 -0
  227. package/dist/ui/placement/launcher_drag.d.ts.map +1 -0
  228. package/dist/ui/placement/launcher_placement.d.ts +77 -0
  229. package/dist/ui/placement/launcher_placement.d.ts.map +1 -0
  230. package/dist/ui/placement/launcher_styles.d.ts +2 -0
  231. package/dist/ui/placement/launcher_styles.d.ts.map +1 -0
  232. package/dist/ui/placement/page_styles.d.ts +2 -0
  233. package/dist/ui/placement/page_styles.d.ts.map +1 -0
  234. package/dist/ui/placement/panel_drag.d.ts +40 -0
  235. package/dist/ui/placement/panel_drag.d.ts.map +1 -0
  236. package/dist/ui/placement/panel_placement.d.ts +173 -0
  237. package/dist/ui/placement/panel_placement.d.ts.map +1 -0
  238. package/dist/ui/placement/place_widget.d.ts +31 -0
  239. package/dist/ui/placement/place_widget.d.ts.map +1 -0
  240. package/dist/ui/placement/preset_styles.d.ts +2 -0
  241. package/dist/ui/placement/preset_styles.d.ts.map +1 -0
  242. package/dist/ui/placement/resize_handle.d.ts +78 -0
  243. package/dist/ui/placement/resize_handle.d.ts.map +1 -0
  244. package/dist/ui/placement/resize_styles.d.ts +2 -0
  245. package/dist/ui/placement/resize_styles.d.ts.map +1 -0
  246. package/dist/ui/placement/sidebar_styles.d.ts +2 -0
  247. package/dist/ui/placement/sidebar_styles.d.ts.map +1 -0
  248. package/dist/ui/placement/small_viewport_styles.d.ts +2 -0
  249. package/dist/ui/placement/small_viewport_styles.d.ts.map +1 -0
  250. package/dist/ui/placement/surface_for.d.ts +93 -0
  251. package/dist/ui/placement/surface_for.d.ts.map +1 -0
  252. package/dist/ui/progress/prettify_tool_name.d.ts +11 -0
  253. package/dist/ui/progress/prettify_tool_name.d.ts.map +1 -0
  254. package/dist/ui/progress/run_announcer.d.ts +41 -0
  255. package/dist/ui/progress/run_announcer.d.ts.map +1 -0
  256. package/dist/ui/progress/run_notice.d.ts +21 -0
  257. package/dist/ui/progress/run_notice.d.ts.map +1 -0
  258. package/dist/ui/progress/run_notice_styles.d.ts +2 -0
  259. package/dist/ui/progress/run_notice_styles.d.ts.map +1 -0
  260. package/dist/ui/progress/subagent_panel.d.ts +101 -0
  261. package/dist/ui/progress/subagent_panel.d.ts.map +1 -0
  262. package/dist/ui/progress/subagent_progress.d.ts +57 -0
  263. package/dist/ui/progress/subagent_progress.d.ts.map +1 -0
  264. package/dist/ui/progress/subagent_update.d.ts +28 -0
  265. package/dist/ui/progress/subagent_update.d.ts.map +1 -0
  266. package/dist/ui/progress/thoughts_block.d.ts +57 -0
  267. package/dist/ui/progress/thoughts_block.d.ts.map +1 -0
  268. package/dist/ui/progress/thoughts_styles.d.ts +2 -0
  269. package/dist/ui/progress/thoughts_styles.d.ts.map +1 -0
  270. package/dist/ui/progress/tool_call_card.d.ts +167 -0
  271. package/dist/ui/progress/tool_call_card.d.ts.map +1 -0
  272. package/dist/ui/progress/tool_group_styles.d.ts +2 -0
  273. package/dist/ui/progress/tool_group_styles.d.ts.map +1 -0
  274. package/dist/ui/progress/tool_step_group.d.ts +50 -0
  275. package/dist/ui/progress/tool_step_group.d.ts.map +1 -0
  276. package/dist/ui/progress/tool_step_styles.d.ts +2 -0
  277. package/dist/ui/progress/tool_step_styles.d.ts.map +1 -0
  278. package/dist/ui/shell/adopt_styles.d.ts +28 -0
  279. package/dist/ui/shell/adopt_styles.d.ts.map +1 -0
  280. package/dist/ui/shell/build_header.d.ts +45 -0
  281. package/dist/ui/shell/build_header.d.ts.map +1 -0
  282. package/dist/ui/shell/build_launcher.d.ts +33 -0
  283. package/dist/ui/shell/build_launcher.d.ts.map +1 -0
  284. package/dist/ui/shell/collapse_glyph.d.ts +14 -0
  285. package/dist/ui/shell/collapse_glyph.d.ts.map +1 -0
  286. package/dist/ui/shell/frame_styles.d.ts +2 -0
  287. package/dist/ui/shell/frame_styles.d.ts.map +1 -0
  288. package/dist/ui/shell/glyph_slot.d.ts +7 -0
  289. package/dist/ui/shell/glyph_slot.d.ts.map +1 -0
  290. package/dist/ui/shell/header_button.d.ts +11 -0
  291. package/dist/ui/shell/header_button.d.ts.map +1 -0
  292. package/dist/ui/shell/icon_element.d.ts +12 -0
  293. package/dist/ui/shell/icon_element.d.ts.map +1 -0
  294. package/dist/ui/shell/is_unread_badge_enabled.d.ts +10 -0
  295. package/dist/ui/shell/is_unread_badge_enabled.d.ts.map +1 -0
  296. package/dist/ui/shell/read_launcher_icon_url.d.ts +8 -0
  297. package/dist/ui/shell/read_launcher_icon_url.d.ts.map +1 -0
  298. package/dist/ui/shell/theme_styles.d.ts +2 -0
  299. package/dist/ui/shell/theme_styles.d.ts.map +1 -0
  300. package/dist/ui/shell/token_styles.d.ts +2 -0
  301. package/dist/ui/shell/token_styles.d.ts.map +1 -0
  302. package/dist/ui/styles.d.ts +2 -0
  303. package/dist/ui/styles.d.ts.map +1 -0
  304. package/dist/ui/themes/classic_styles.d.ts +2 -0
  305. package/dist/ui/themes/classic_styles.d.ts.map +1 -0
  306. package/dist/ui/themes/classic_tokens.d.ts +2 -0
  307. package/dist/ui/themes/classic_tokens.d.ts.map +1 -0
  308. package/dist/ui/themes/code_tokens.d.ts +2 -0
  309. package/dist/ui/themes/code_tokens.d.ts.map +1 -0
  310. package/dist/ui/themes/ledger_styles.d.ts +2 -0
  311. package/dist/ui/themes/ledger_styles.d.ts.map +1 -0
  312. package/dist/ui/themes/ledger_tokens.d.ts +2 -0
  313. package/dist/ui/themes/ledger_tokens.d.ts.map +1 -0
  314. package/dist/ui/themes/modern_styles.d.ts +2 -0
  315. package/dist/ui/themes/modern_styles.d.ts.map +1 -0
  316. package/dist/ui/themes/quiet_styles.d.ts +2 -0
  317. package/dist/ui/themes/quiet_styles.d.ts.map +1 -0
  318. package/dist/ui/themes/scheme_styles.d.ts +2 -0
  319. package/dist/ui/themes/scheme_styles.d.ts.map +1 -0
  320. package/dist/ui/themes/soft_styles.d.ts +2 -0
  321. package/dist/ui/themes/soft_styles.d.ts.map +1 -0
  322. package/dist/ui/themes/soft_tokens.d.ts +2 -0
  323. package/dist/ui/themes/soft_tokens.d.ts.map +1 -0
  324. package/dist/ui/themes/theme_hosts.d.ts +15 -0
  325. package/dist/ui/themes/theme_hosts.d.ts.map +1 -0
  326. package/dist/ui/transcript/answer_actions.d.ts +50 -0
  327. package/dist/ui/transcript/answer_actions.d.ts.map +1 -0
  328. package/dist/ui/transcript/answer_stream.d.ts +56 -0
  329. package/dist/ui/transcript/answer_stream.d.ts.map +1 -0
  330. package/dist/ui/transcript/attachment_chip_styles.d.ts +2 -0
  331. package/dist/ui/transcript/attachment_chip_styles.d.ts.map +1 -0
  332. package/dist/ui/transcript/attachment_chips.d.ts +21 -0
  333. package/dist/ui/transcript/attachment_chips.d.ts.map +1 -0
  334. package/dist/ui/transcript/build_transcript.d.ts +21 -0
  335. package/dist/ui/transcript/build_transcript.d.ts.map +1 -0
  336. package/dist/ui/transcript/greeting_styles.d.ts +2 -0
  337. package/dist/ui/transcript/greeting_styles.d.ts.map +1 -0
  338. package/dist/ui/transcript/groups_tool_steps.d.ts +13 -0
  339. package/dist/ui/transcript/groups_tool_steps.d.ts.map +1 -0
  340. package/dist/ui/transcript/message_action_styles.d.ts +2 -0
  341. package/dist/ui/transcript/message_action_styles.d.ts.map +1 -0
  342. package/dist/ui/transcript/message_actions.d.ts +74 -0
  343. package/dist/ui/transcript/message_actions.d.ts.map +1 -0
  344. package/dist/ui/transcript/message_styles.d.ts +2 -0
  345. package/dist/ui/transcript/message_styles.d.ts.map +1 -0
  346. package/dist/ui/transcript/render_markdown.d.ts +40 -0
  347. package/dist/ui/transcript/render_markdown.d.ts.map +1 -0
  348. package/dist/ui/transcript/render_or_warn.d.ts +16 -0
  349. package/dist/ui/transcript/render_or_warn.d.ts.map +1 -0
  350. package/dist/ui/transcript/reveal_words.d.ts +8 -0
  351. package/dist/ui/transcript/reveal_words.d.ts.map +1 -0
  352. package/dist/ui/transcript/starter_chips.d.ts +21 -0
  353. package/dist/ui/transcript/starter_chips.d.ts.map +1 -0
  354. package/dist/ui/transcript/stick_to_bottom.d.ts +55 -0
  355. package/dist/ui/transcript/stick_to_bottom.d.ts.map +1 -0
  356. package/dist/ui/transcript/suggestion_chips.d.ts +29 -0
  357. package/dist/ui/transcript/suggestion_chips.d.ts.map +1 -0
  358. package/dist/ui/transcript/transcript.d.ts +196 -0
  359. package/dist/ui/transcript/transcript.d.ts.map +1 -0
  360. package/dist/ui/transcript/transcript_styles.d.ts +2 -0
  361. package/dist/ui/transcript/transcript_styles.d.ts.map +1 -0
  362. package/dist/ui/ui_strings.d.ts +352 -0
  363. package/dist/ui/ui_strings.d.ts.map +1 -0
  364. package/dist/version.d.ts +2 -0
  365. package/dist/version.d.ts.map +1 -0
  366. package/package.json +86 -3
  367. package/src/bundle.ts +2 -0
  368. package/src/chat.ts +2 -0
  369. package/src/constants.ts +650 -0
  370. package/src/core/activity_registration.ts +19 -0
  371. package/src/core/activity_registry.ts +133 -0
  372. package/src/core/activity_renderer.ts +19 -0
  373. package/src/core/ag_ui_chat.ts +3966 -0
  374. package/src/core/agui_client.ts +1028 -0
  375. package/src/core/attachment.ts +62 -0
  376. package/src/core/chat_registry.ts +53 -0
  377. package/src/core/client_seed.ts +27 -0
  378. package/src/core/conversation_store.ts +478 -0
  379. package/src/core/create_http_agent.ts +97 -0
  380. package/src/core/define_chat.ts +25 -0
  381. package/src/core/events/attachments_detail.ts +9 -0
  382. package/src/core/events/bar_height_detail.ts +5 -0
  383. package/src/core/events/custom_agent_detail.ts +7 -0
  384. package/src/core/events/dock_width_detail.ts +7 -0
  385. package/src/core/events/feedback_detail.ts +27 -0
  386. package/src/core/events/invalidate_detail.ts +15 -0
  387. package/src/core/events/maximize_detail.ts +4 -0
  388. package/src/core/events/run_finished_detail.ts +36 -0
  389. package/src/core/events/state_detail.ts +4 -0
  390. package/src/core/events/submit_detail.ts +8 -0
  391. package/src/core/events/thread_detail.ts +26 -0
  392. package/src/core/events/thread_title_detail.ts +7 -0
  393. package/src/core/events/toggle_detail.ts +4 -0
  394. package/src/core/events/tool_run.ts +10 -0
  395. package/src/core/events/unread_detail.ts +10 -0
  396. package/src/core/message_role.ts +4 -0
  397. package/src/core/read_flag.ts +13 -0
  398. package/src/core/read_json_attribute.ts +30 -0
  399. package/src/core/read_max_tool_rounds.ts +13 -0
  400. package/src/core/remote_conversation_store.ts +279 -0
  401. package/src/core/run_handlers.ts +524 -0
  402. package/src/core/run_index.ts +114 -0
  403. package/src/core/storage_scope.ts +291 -0
  404. package/src/core/tool_outcome.ts +39 -0
  405. package/src/core/transcribe_audio.ts +76 -0
  406. package/src/core/upload_attachment.ts +130 -0
  407. package/src/core/utils.ts +230 -0
  408. package/src/dom/animations.ts +341 -0
  409. package/src/dom/dom_driver.ts +91 -0
  410. package/src/dom/highlight_overlay.ts +204 -0
  411. package/src/dom/native_setter.ts +40 -0
  412. package/src/dom/ring_color.ts +206 -0
  413. package/src/dom/utils.ts +5 -0
  414. package/src/index.ts +220 -0
  415. package/src/skills/fill_template.ts +31 -0
  416. package/src/skills/parse_skills.ts +31 -0
  417. package/src/skills/skill.ts +32 -0
  418. package/src/skills/skill_catalog.ts +172 -0
  419. package/src/skills/skill_name_from.ts +19 -0
  420. package/src/tools/chat_surface_tools.ts +183 -0
  421. package/src/tools/client_tool_registry.ts +80 -0
  422. package/src/tools/is_destructive.ts +17 -0
  423. package/src/tools/is_navigates.ts +12 -0
  424. package/src/tools/page_action_tools.ts +123 -0
  425. package/src/tools/page_map.ts +26 -0
  426. package/src/tools/page_state.ts +57 -0
  427. package/src/tools/parse_tool_catalog.ts +41 -0
  428. package/src/tools/route_map.ts +132 -0
  429. package/src/tools/tool_catalog.ts +334 -0
  430. package/src/tools/tool_dispatch.ts +453 -0
  431. package/src/ui/charts/chart_block.ts +519 -0
  432. package/src/ui/charts/chart_spec_from.ts +125 -0
  433. package/src/ui/charts/chart_styles.ts +63 -0
  434. package/src/ui/charts/chart_tool.ts +72 -0
  435. package/src/ui/composer/attachment_styles.ts +71 -0
  436. package/src/ui/composer/attachment_tray.ts +295 -0
  437. package/src/ui/composer/auto_grow.ts +12 -0
  438. package/src/ui/composer/build_composer.ts +114 -0
  439. package/src/ui/composer/composer_attachments.ts +324 -0
  440. package/src/ui/composer/composer_styles.ts +177 -0
  441. package/src/ui/composer/composer_voice.ts +93 -0
  442. package/src/ui/composer/skill_styles.ts +120 -0
  443. package/src/ui/composer/skills_menu.ts +188 -0
  444. package/src/ui/composer/voice_input.ts +282 -0
  445. package/src/ui/excerpts/attach_copy_buttons.ts +73 -0
  446. package/src/ui/excerpts/copy_payload.ts +156 -0
  447. package/src/ui/excerpts/page_quote_offer.ts +203 -0
  448. package/src/ui/excerpts/place_offer.ts +24 -0
  449. package/src/ui/excerpts/quote_selection.ts +345 -0
  450. package/src/ui/excerpts/transcript_quote_offer.ts +175 -0
  451. package/src/ui/fill_ui_string.ts +41 -0
  452. package/src/ui/history/checkpoint_menu.ts +300 -0
  453. package/src/ui/history/conversation_history.ts +1169 -0
  454. package/src/ui/history/history_styles.ts +492 -0
  455. package/src/ui/history/relative_time.ts +50 -0
  456. package/src/ui/history/thread_drawer.ts +471 -0
  457. package/src/ui/history/utils.ts +11 -0
  458. package/src/ui/interrupts/approval_card.ts +202 -0
  459. package/src/ui/interrupts/approval_styles.ts +52 -0
  460. package/src/ui/interrupts/confirmation_card.ts +138 -0
  461. package/src/ui/interrupts/confirmation_styles.ts +114 -0
  462. package/src/ui/interrupts/pending_decision.ts +33 -0
  463. package/src/ui/interrupts/question_card.ts +213 -0
  464. package/src/ui/interrupts/question_styles.ts +73 -0
  465. package/src/ui/place/place.ts +16 -0
  466. package/src/ui/place/place_chip.ts +146 -0
  467. package/src/ui/place/place_from_route.ts +27 -0
  468. package/src/ui/place/place_styles.ts +108 -0
  469. package/src/ui/placement/clamp_launcher.ts +38 -0
  470. package/src/ui/placement/clamp_panel.ts +30 -0
  471. package/src/ui/placement/collapse_styles.ts +472 -0
  472. package/src/ui/placement/dock_styles.ts +116 -0
  473. package/src/ui/placement/embedded_styles.ts +14 -0
  474. package/src/ui/placement/launcher_drag.ts +206 -0
  475. package/src/ui/placement/launcher_placement.ts +133 -0
  476. package/src/ui/placement/launcher_styles.ts +189 -0
  477. package/src/ui/placement/page_styles.ts +47 -0
  478. package/src/ui/placement/panel_drag.ts +138 -0
  479. package/src/ui/placement/panel_placement.ts +1975 -0
  480. package/src/ui/placement/place_widget.ts +64 -0
  481. package/src/ui/placement/preset_styles.ts +49 -0
  482. package/src/ui/placement/resize_handle.ts +229 -0
  483. package/src/ui/placement/resize_styles.ts +201 -0
  484. package/src/ui/placement/sidebar_styles.ts +113 -0
  485. package/src/ui/placement/small_viewport_styles.ts +70 -0
  486. package/src/ui/placement/surface_for.ts +183 -0
  487. package/src/ui/progress/prettify_tool_name.ts +16 -0
  488. package/src/ui/progress/run_announcer.ts +67 -0
  489. package/src/ui/progress/run_notice.ts +61 -0
  490. package/src/ui/progress/run_notice_styles.ts +52 -0
  491. package/src/ui/progress/subagent_panel.ts +227 -0
  492. package/src/ui/progress/subagent_progress.ts +200 -0
  493. package/src/ui/progress/subagent_update.ts +89 -0
  494. package/src/ui/progress/thoughts_block.ts +165 -0
  495. package/src/ui/progress/thoughts_styles.ts +74 -0
  496. package/src/ui/progress/tool_call_card.ts +429 -0
  497. package/src/ui/progress/tool_group_styles.ts +313 -0
  498. package/src/ui/progress/tool_step_group.ts +317 -0
  499. package/src/ui/progress/tool_step_styles.ts +486 -0
  500. package/src/ui/shell/adopt_styles.ts +34 -0
  501. package/src/ui/shell/build_header.ts +121 -0
  502. package/src/ui/shell/build_launcher.ts +79 -0
  503. package/src/ui/shell/collapse_glyph.ts +42 -0
  504. package/src/ui/shell/frame_styles.ts +147 -0
  505. package/src/ui/shell/glyph_slot.ts +12 -0
  506. package/src/ui/shell/header_button.ts +22 -0
  507. package/src/ui/shell/icon_element.ts +33 -0
  508. package/src/ui/shell/is_unread_badge_enabled.ts +11 -0
  509. package/src/ui/shell/read_launcher_icon_url.ts +9 -0
  510. package/src/ui/shell/theme_styles.ts +11 -0
  511. package/src/ui/shell/token_styles.ts +480 -0
  512. package/src/ui/styles.ts +110 -0
  513. package/src/ui/themes/classic_styles.ts +32 -0
  514. package/src/ui/themes/classic_tokens.ts +51 -0
  515. package/src/ui/themes/code_tokens.ts +21 -0
  516. package/src/ui/themes/ledger_styles.ts +169 -0
  517. package/src/ui/themes/ledger_tokens.ts +33 -0
  518. package/src/ui/themes/modern_styles.ts +80 -0
  519. package/src/ui/themes/quiet_styles.ts +118 -0
  520. package/src/ui/themes/scheme_styles.ts +26 -0
  521. package/src/ui/themes/soft_styles.ts +149 -0
  522. package/src/ui/themes/soft_tokens.ts +29 -0
  523. package/src/ui/themes/theme_hosts.ts +14 -0
  524. package/src/ui/transcript/answer_actions.ts +165 -0
  525. package/src/ui/transcript/answer_stream.ts +123 -0
  526. package/src/ui/transcript/attachment_chip_styles.ts +116 -0
  527. package/src/ui/transcript/attachment_chips.ts +82 -0
  528. package/src/ui/transcript/build_transcript.ts +67 -0
  529. package/src/ui/transcript/greeting_styles.ts +171 -0
  530. package/src/ui/transcript/groups_tool_steps.ts +16 -0
  531. package/src/ui/transcript/message_action_styles.ts +155 -0
  532. package/src/ui/transcript/message_actions.ts +234 -0
  533. package/src/ui/transcript/message_styles.ts +262 -0
  534. package/src/ui/transcript/render_markdown.ts +181 -0
  535. package/src/ui/transcript/render_or_warn.ts +22 -0
  536. package/src/ui/transcript/reveal_words.ts +41 -0
  537. package/src/ui/transcript/starter_chips.ts +42 -0
  538. package/src/ui/transcript/stick_to_bottom.ts +126 -0
  539. package/src/ui/transcript/suggestion_chips.ts +73 -0
  540. package/src/ui/transcript/transcript.ts +555 -0
  541. package/src/ui/transcript/transcript_styles.ts +153 -0
  542. package/src/ui/ui_strings.ts +550 -0
  543. package/src/version.ts +1 -0
@@ -0,0 +1,71 @@
1
+ import type { Message } from "@ag-ui/core";
2
+ import { type ClientConversationStore, type NavigationCheckpoint, type ThreadMeta } from "./conversation_store.js";
3
+ /** Live header source, read per request so rotated tokens / CSRF reach the server. */
4
+ type HeadersProvider = () => Record<string, string>;
5
+ /**
6
+ * Live cookie policy, read per request. A provider rather than a value: the
7
+ * store is built once on connect, but a host may configure the element after
8
+ * inserting it, and a captured value would pin that first frame's setting.
9
+ */
10
+ type CredentialsProvider = () => RequestCredentials | undefined;
11
+ /**
12
+ * A {@link ClientConversationStore} backed by a server thread-index endpoint —
13
+ * django-ag-ui's owner-scoped `ThreadsView`, the URL passed to `<ag-ui-chat>`
14
+ * as `data-threads-url`:
15
+ *
16
+ * - `GET <url>` → list the user's threads (metadata only);
17
+ * - `GET <url><id>/` → that thread's messages;
18
+ * - `PATCH <url><id>/` → rename (`{ "title": … }`);
19
+ * - `DELETE <url><id>/` → delete.
20
+ *
21
+ * Wraps a local store (default {@link SessionStorageStore}) for the client-only
22
+ * concerns — active thread id, navigation checkpoint, message cache — and as
23
+ * the fallback when a request fails. Rename and delete apply optimistically via
24
+ * a local overlay, so the drawer reflects them before the fire-and-forget
25
+ * round-trip lands.
26
+ *
27
+ * Pass `cacheMessages: false` to keep message bodies out of the browser
28
+ * entirely; see the constructor.
29
+ */
30
+ export declare class RemoteConversationStore implements ClientConversationStore {
31
+ #private;
32
+ /**
33
+ * @param cacheMessages Whether to mirror message bodies into the local store.
34
+ *
35
+ * `true` (the default, and the behaviour this class has always had) keeps a
36
+ * local copy of every turn, so the transcript still replays when the thread
37
+ * endpoint is unreachable. `false` is for the deployment that chose a
38
+ * server-backed store precisely so transcripts do not sit in the browser:
39
+ * regulated content, a shared workstation, an operator who has to be able to
40
+ * say where the conversation lives. It is not the same as passing a local
41
+ * store that does nothing — the local store also owns the active thread id,
42
+ * the navigation checkpoint and the "nothing sent here yet" marker, all of
43
+ * which must keep working — so the opt-out is scoped to the bodies alone.
44
+ *
45
+ * The cost is deliberate and worth stating: with no local copy there is
46
+ * nothing to fall back to, so a failed request shows an empty transcript
47
+ * rather than a stale one, and the drawer's offline list loses its previews
48
+ * (a preview is an excerpt of a message, which is the very thing being kept
49
+ * off the client).
50
+ */
51
+ constructor(url: string, headers?: HeadersProvider, local?: ClientConversationStore, credentials?: CredentialsProvider, cacheMessages?: boolean);
52
+ threadId(): string;
53
+ setActiveThread(threadId: string): void;
54
+ /**
55
+ * Delegated to the local store, which owns the active id — and deliberately
56
+ * silent on the wire: the server learns of a thread when its first message is
57
+ * persisted, so an abandoned new chat costs no round-trip and leaves no row.
58
+ */
59
+ newThread(): string;
60
+ /** Delegated, so wrapping a store does not lose what it knows about its own ids. */
61
+ isUnsent(threadId: string): boolean;
62
+ saveMessages(threadId: string, messages: readonly Message[]): void;
63
+ loadCheckpoint(threadId: string): NavigationCheckpoint | null;
64
+ saveCheckpoint(threadId: string, checkpoint: NavigationCheckpoint | null): void;
65
+ renameThread(threadId: string, title: string): void;
66
+ clear(threadId: string): void;
67
+ listThreads(): Promise<readonly ThreadMeta[]>;
68
+ loadMessages(threadId: string): Promise<readonly Message[] | null>;
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=remote_conversation_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote_conversation_store.d.ts","sourceRoot":"","sources":["../../src/core/remote_conversation_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EAEhB,MAAM,yBAAyB,CAAC;AAajC,sFAAsF;AACtF,KAAK,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD;;;;GAIG;AACH,KAAK,mBAAmB,GAAG,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAEhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,uBAAwB,YAAW,uBAAuB;;IAiBrE;;;;;;;;;;;;;;;;;;OAkBG;IACH,YACE,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAA4B,EACrC,KAAK,GAAE,uBAAmD,EAC1D,WAAW,GAAE,mBAAqC,EAClD,aAAa,UAAO,EAOrB;IAED,QAAQ,IAAI,MAAM,CAGjB;IAED,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED;;;;OAIG;IACH,SAAS,IAAI,MAAM,CAGlB;IAED,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElC;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAiBjE;IAED,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAE5D;IAED,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAE9E;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIlD;IAED,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAK5B;IAEK,WAAW,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAUlD;IAkBK,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC,CAkBvE;CAoEF"}
@@ -0,0 +1,85 @@
1
+ import type { RunAnnouncer } from "../ui/progress/run_announcer.js";
2
+ import type { SubAgentProgress } from "../ui/progress/subagent_progress.js";
3
+ import type { AnswerActions } from "../ui/transcript/answer_actions.js";
4
+ import type { AnswerStream } from "../ui/transcript/answer_stream.js";
5
+ import type { Transcript } from "../ui/transcript/transcript.js";
6
+ import type { UiStrings } from "../ui/ui_strings.js";
7
+ import type { ActivityRegistry } from "./activity_registry.js";
8
+ import type { AgUiClientHandlers } from "./agui_client.js";
9
+ import type { MessageRole } from "./message_role.js";
10
+ /** What the run's event handlers need from the element that owns them. */
11
+ export interface RunHandlersHost {
12
+ /** The custom element, which the run's events are dispatched on. */
13
+ readonly element: HTMLElement;
14
+ /** The transcript the run draws into. */
15
+ readonly transcript: Transcript;
16
+ /** The answer streaming into its bubble. */
17
+ readonly stream: AnswerStream;
18
+ /** The action row under each finished answer. */
19
+ readonly actions: AnswerActions;
20
+ /** The activity renderers, and the blocks they drew. */
21
+ readonly activities: ActivityRegistry;
22
+ /** A delegated sub-agent's progress, on the card that delegated. */
23
+ readonly subagents: SubAgentProgress;
24
+ /** The screen-reader status region. */
25
+ readonly announcer: RunAnnouncer;
26
+ /** The resolved string table. */
27
+ readonly strings: () => UiStrings;
28
+ /** Whether an interaction is already in flight, which the composer owns. */
29
+ readonly running: () => boolean;
30
+ /** Swap the composer between Send and Stop; settling sends a queued turn. */
31
+ readonly setRunning: (running: boolean) => void;
32
+ /** The element's `appendMessage`, which a failed run's bubble opens through. */
33
+ readonly appendMessage: (role: MessageRole, content: string) => HTMLDivElement;
34
+ /** Note an assistant answer finished on `threadId`, which may be unseen. */
35
+ readonly noteUnread: (threadId: string) => void;
36
+ }
37
+ /**
38
+ * The AG-UI event handlers a run is drawn by, and what one interaction
39
+ * accumulates for the host between its first round and its settle: the tool
40
+ * calls it made, the keys it invalidated, and whether it already said how it
41
+ * ended.
42
+ *
43
+ * A controller rather than a factory. The handlers hold nothing of their own,
44
+ * but that bookkeeping is state, and it has never belonged to one handler
45
+ * table: a table is built per client -- the conversation's own, rebuilt after
46
+ * a reset, and one for each checkpoint continuation -- and every table built
47
+ * for one conversation reports into the same bookkeeping. {@link forClient}
48
+ * still returns a fresh table per call.
49
+ *
50
+ * Owned one-to-one by an `<ag-ui-chat>`, and holding no state outside the
51
+ * instance.
52
+ */
53
+ export declare class RunHandlers {
54
+ #private;
55
+ constructor(host: RunHandlersHost);
56
+ /**
57
+ * Detach every handler table built so far, because the conversation they
58
+ * drew into has been cleared away.
59
+ *
60
+ * The element calls this when it resets, having first cancelled what was
61
+ * running. A cancelled run still ends later, and a detached table still
62
+ * reports to the host what that run did: a run stopped part-way may already
63
+ * have written something, and {@link RUN_FINISHED_EVENT} fires on
64
+ * cancellation for exactly that reason. Everything else it would do -- draw a
65
+ * stopped note, announce, put the composer back to Send, settle the pending
66
+ * cards -- would land in a transcript and a composer that now belong to
67
+ * another conversation, possibly mid-run, and is dropped. So is any event the
68
+ * run streams after the reset, invalidations included: an abort closes the
69
+ * request those would arrive on, so what a cancelled run still delivers is
70
+ * how it ended.
71
+ */
72
+ detach(): void;
73
+ /**
74
+ * A handler table for one AG-UI client. Every table built for the current
75
+ * conversation draws into the same transcript and shares its bookkeeping, so
76
+ * a continuation run reports into the interaction the user is looking at.
77
+ *
78
+ * `threadId` is the thread the client was built for, named on the
79
+ * run-finished detail. Taken here rather than read when the run settles,
80
+ * because a stopped run settles after the reset that stopped it, when the
81
+ * thread on screen is already the next one.
82
+ */
83
+ forClient(threadId: string): AgUiClientHandlers;
84
+ }
85
+ //# sourceMappingURL=run_handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run_handlers.d.ts","sourceRoot":"","sources":["../../src/core/run_handlers.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAK3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,wDAAwD;IACxD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,iCAAiC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC;IAClC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,gFAAgF;IAChF,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,KAAK,cAAc,CAAC;IAC/E,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AA8ED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,WAAW;;IAQtB,YAAY,IAAI,EAAE,eAAe,EAEhC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,IAAI,IAAI,CAEb;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CA2B9C;CAqTF"}
@@ -0,0 +1,58 @@
1
+ /** One row of the server run index (django-ag-ui's `RunsView` wire shape). */
2
+ export interface RunRow {
3
+ readonly run_id: string;
4
+ readonly thread_id: string | null;
5
+ readonly parent_run_id: string | null;
6
+ readonly started_at: string | null;
7
+ /** Whether the run has a snapshot to seed from — see {@link RunIndex}. */
8
+ readonly continuable: boolean;
9
+ /**
10
+ * The run's first user message, one line, already truncated by the server —
11
+ * the only field in a row a person recognises a conversation by.
12
+ *
13
+ * Optional because a server predating the field does not send it, and
14
+ * `null` where the run holds no words to show (seeded from history alone, or
15
+ * opened with an image and no caption). A row without one falls back to the
16
+ * time plus a short id.
17
+ */
18
+ readonly preview?: string | null;
19
+ }
20
+ /** Live header source, read per request so rotated tokens / CSRF reach the server. */
21
+ type HeadersProvider = () => Record<string, string>;
22
+ /** Live cookie policy, read per request; see `RemoteConversationStore`'s note. */
23
+ type CredentialsProvider = () => RequestCredentials | undefined;
24
+ /**
25
+ * Reads the server's run index and derives the resume / fork URLs beside it.
26
+ *
27
+ * Backed by django-ag-ui's owner-scoped `RunsView` — the URL passed to
28
+ * `<ag-ui-chat>` as `data-runs-url`:
29
+ *
30
+ * - `GET <url>` → the user's runs, newest first.
31
+ *
32
+ * Only `continuable` rows can be resumed: the server reports whether a run has
33
+ * a saved snapshot to seed from, and a run that never reached a provider-valid
34
+ * boundary has none. Offer the action only for those rows ({@link continuable}
35
+ * filters them) and treat the rest as informational.
36
+ *
37
+ * Resume and fork are siblings of the index rather than separate configuration
38
+ * — django-ag-ui mounts `runs/`, `resume/<id>/` and `fork/<id>/` under one
39
+ * prefix — so this one URL locates all three.
40
+ */
41
+ export declare class RunIndex {
42
+ #private;
43
+ constructor(url: string, headers?: HeadersProvider, credentials?: CredentialsProvider);
44
+ /**
45
+ * The user's runs, or `[]` when the endpoint is unreachable or errors — the
46
+ * caller renders its empty state rather than a transport fault the user can
47
+ * do nothing about.
48
+ */
49
+ list(): Promise<readonly RunRow[]>;
50
+ /** The rows a client may actually continue. */
51
+ continuable(): Promise<readonly RunRow[]>;
52
+ /** The endpoint that continues `runId` as a new run. */
53
+ resumeUrl(runId: string): string;
54
+ /** The endpoint that branches `runId` into a new run, leaving the source untouched. */
55
+ forkUrl(runId: string): string;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=run_index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run_index.d.ts","sourceRoot":"","sources":["../../src/core/run_index.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,sFAAsF;AACtF,KAAK,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,kFAAkF;AAClF,KAAK,mBAAmB,GAAG,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,QAAQ;;IAKnB,YACE,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAA4B,EACrC,WAAW,GAAE,mBAAqC,EAKnD;IAED;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAoBvC;IAED,+CAA+C;IACzC,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAE9C;IAED,wDAAwD;IACxD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/B;IAED,uFAAuF;IACvF,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7B;CAaF"}
@@ -0,0 +1,118 @@
1
+ import { type ClientConversationStore, SessionStorageStore } from "./conversation_store.js";
2
+ /** What the storage scope needs from the element that owns it. */
3
+ export interface StorageScopeHost {
4
+ /** The element's `id`, the namespace it prefers. */
5
+ readonly id: () => string;
6
+ /** The element's `endpoint`, the namespace it falls back to. */
7
+ readonly endpoint: () => string;
8
+ }
9
+ /**
10
+ * Which storage keys are this element's: the namespace it claims in the
11
+ * document, the key a layout preference is stored under, and the built-in
12
+ * conversation store scoped to it.
13
+ *
14
+ * Owned one-to-one by an `<ag-ui-chat>`. The one thing it shares is the record
15
+ * of claimed namespaces above, which is what keeps two elements apart.
16
+ */
17
+ export declare class StorageScope {
18
+ #private;
19
+ constructor(host: StorageScopeHost);
20
+ /**
21
+ * Resolve the per-instance storage namespace, before any key is read or
22
+ * written, so this instance doesn't share collapsed/theme/thread state with
23
+ * another on the same origin.
24
+ */
25
+ claim(): void;
26
+ /**
27
+ * Give the namespace back. A disconnect is not necessarily a farewell — a
28
+ * DOM move and a framework re-render both look like one — and an element
29
+ * that could not reclaim its own namespace on the way back in would lose its
30
+ * conversation to a false collision.
31
+ */
32
+ release(): void;
33
+ /**
34
+ * The conversation store's namespace: this element's, scoped to the principal
35
+ * `key` names.
36
+ *
37
+ * Only the conversation is principal-scoped. The panel's own collapsed / size
38
+ * / theme preferences stay on the element's own namespace, because they are
39
+ * this element's UI state rather than anyone's data — they carry no word of
40
+ * what was said — and because they are read once while connecting, so
41
+ * re-scoping them under a live element would rearrange the panel around a
42
+ * user who had only just signed in.
43
+ */
44
+ conversationNamespace(key: string): string;
45
+ /**
46
+ * Namespace the built-in default store, and hand back the store to use. A
47
+ * host-injected store is used verbatim; the built-in one is remembered
48
+ * either way, because it is the element's own store and a later `user-key`
49
+ * change may move it to another namespace.
50
+ */
51
+ scopeStore(store: ClientConversationStore, key: string): ClientConversationStore;
52
+ /**
53
+ * Rebuild the built-in store under `namespace`, or `null` when `current` --
54
+ * the store the element is using now, unwrapped from any remote it wrapped
55
+ * it in -- is not the one this scope handed out.
56
+ *
57
+ * Asked of the store in use rather than of what connecting remembered,
58
+ * because the two part company the moment a host assigns a store of its own
59
+ * to a connected element. Remembering was enough to tell a host's store from
60
+ * the built-in one at connect; after it, the built-in one was still
61
+ * remembered, so a key change replaced the host's store with a fresh
62
+ * `sessionStorage` one -- and a host that had chosen to keep message bodies
63
+ * off the client found every one of them cached in the tab again. A store
64
+ * the element did not make holds its data somewhere the element cannot see,
65
+ * and has to scope itself.
66
+ */
67
+ rescopeStore(current: ClientConversationStore, namespace: string): SessionStorageStore | null;
68
+ /** This instance's namespaced form of an origin-scoped storage key. */
69
+ key(base: string): string;
70
+ /** Read a namespaced origin-scoped value. */
71
+ readScopedItem(base: string): string | null;
72
+ /**
73
+ * Read a layout preference: where the widget sits, how big it is, which
74
+ * theme it wears.
75
+ *
76
+ * These live in `localStorage` rather than beside the transcript, because a
77
+ * layout preference is not a conversation. The transcript is deliberately
78
+ * per-tab -- two tabs are two conversations, and closing the tab ends it --
79
+ * and everything else inherited that scoping without earning it. A user who
80
+ * dragged the panel clear of their own UI did it again in the next tab, and
81
+ * again after every restart.
82
+ *
83
+ * Whether the widget is *currently open* stays per-tab with the transcript.
84
+ * It is a statement about this tab rather than a preference: carrying it
85
+ * across would pop the panel open on every new tab because it was opened
86
+ * once, somewhere else.
87
+ *
88
+ * Falls back to the per-tab copy, which is all a browser that denies
89
+ * `localStorage` has.
90
+ */
91
+ readPreference(base: string): string | null;
92
+ /**
93
+ * Persist a layout preference as durably as this browser allows: to
94
+ * `localStorage` so it outlives the tab, and to the per-tab store as well.
95
+ *
96
+ * The second write is not redundancy for its own sake. A privacy mode can
97
+ * deny `localStorage` while allowing `sessionStorage`, and losing the
98
+ * durable copy should degrade to the per-tab behaviour this replaced rather
99
+ * than to no persistence at all. The read above prefers the durable copy, so
100
+ * a tab that has both cannot be shadowed by its own stale one.
101
+ *
102
+ * Neither write is worth an exception. A refused per-tab write warns once
103
+ * per scope rather than once per write, because the size path writes on
104
+ * every step.
105
+ */
106
+ writePreference(base: string, value: string): void;
107
+ /** Write a per-tab value under this scope's key, sharing its one refused-write warning. */
108
+ writeSession(base: string, value: string): void;
109
+ /**
110
+ * Drop a layout preference from both stores.
111
+ *
112
+ * The mirror of {@link writePreference}, and it has to clear both for the
113
+ * same reason that writes both: leaving either copy behind means the value
114
+ * comes back on the next read.
115
+ */
116
+ clearPreference(base: string): void;
117
+ }
118
+ //# sourceMappingURL=storage_scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage_scope.d.ts","sourceRoot":"","sources":["../../src/core/storage_scope.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAC5B,mBAAmB,EAGpB,MAAM,yBAAyB,CAAC;AAkBjC,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,qBAAa,YAAY;;IAyBvB,YAAY,IAAI,EAAE,gBAAgB,EAEjC;IAED;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;;;;OAKG;IACH,OAAO,IAAI,IAAI,CAKd;IAED;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,uBAAuB,EAAE,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAO/E;IAED;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAM5F;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExB;IAED,6CAA6C;IAC7C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE1C;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1C;IAED;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjD;IAED,2FAA2F;IAC3F,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9C;IAED;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAYlC;CAyDF"}
@@ -0,0 +1,27 @@
1
+ import { TOOL_OUTCOME } from "../constants.js";
2
+ import type { SettledStatus } from "../ui/progress/tool_call_card.js";
3
+ /**
4
+ * How a tool call ended, in the wire's own words. See {@link TOOL_OUTCOME}.
5
+ *
6
+ * Absent is the fourth case and the common one: a server that has never heard
7
+ * of the field says nothing, and nothing means success.
8
+ */
9
+ export type ToolOutcome = (typeof TOOL_OUTCOME)[keyof typeof TOOL_OUTCOME];
10
+ /**
11
+ * The card status a wire outcome settles into.
12
+ *
13
+ * Takes `unknown` rather than {@link ToolOutcome} on purpose: both callers read
14
+ * this off a boundary the type system does not police -- a key in an AG-UI
15
+ * event's `metadata`, which the protocol declares open and does not validate,
16
+ * and a JSON blob out of the conversation store -- so the narrowing belongs
17
+ * here, once, instead of at each of them.
18
+ *
19
+ * **Everything unrecognised maps to `DONE`.** Not because unknown values are
20
+ * expected to be successes, but because the alternative is worse in the
21
+ * direction that matters: a card claiming a call failed when it did not is a
22
+ * lie the user acts on, while a card claiming success has at least the result
23
+ * text under it for them to read. A future release may add words, and forward
24
+ * compatibility is the point of the open field.
25
+ */
26
+ export declare function toolStatusFromOutcome(outcome: unknown): SettledStatus;
27
+ //# sourceMappingURL=tool_outcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool_outcome.d.ts","sourceRoot":"","sources":["../../src/core/tool_outcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE3E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAWrE"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The composer's voice-transcription contract: take a recorded audio `Blob` and
3
+ * resolve to the transcript text. The built-in handler is
4
+ * {@link transcribeAudio}; a host swaps in its own (a Web Speech adapter, a
5
+ * direct-to-provider call) via `AgUiChat.transcribeHandler` without touching
6
+ * the mic button.
7
+ */
8
+ export type TranscribeHandler = (audio: Blob) => Promise<string>;
9
+ /** Options for {@link transcribeAudio}. */
10
+ export interface TranscribeOptions {
11
+ /** The transcription endpoint (`data-transcribe-url`). */
12
+ readonly url: string;
13
+ /** Extra HTTP headers (CSRF / auth), read fresh per request. */
14
+ readonly headers?: Record<string, string>;
15
+ /**
16
+ * Cookie policy, as `fetch`'s own `credentials` mode. Unset leaves the
17
+ * browser default (`same-origin`), which sends no cookies to an endpoint on
18
+ * another origin; a cookie-authenticated cross-origin deployment needs
19
+ * `"include"`.
20
+ */
21
+ readonly credentials?: RequestCredentials;
22
+ }
23
+ /**
24
+ * POST a recorded clip to the transcription endpoint and resolve to its text.
25
+ *
26
+ * The clip goes as multipart under the `audio` field with the element's
27
+ * `headers`, mirroring {@link uploadAttachment}, and the server replies
28
+ * `{ "text": "<transcript>" }`. A non-2xx response or a network error rejects
29
+ * so the mic button can surface the failure.
30
+ */
31
+ export declare function transcribeAudio(audio: Blob, options: TranscribeOptions): Promise<string>;
32
+ //# sourceMappingURL=transcribe_audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe_audio.d.ts","sourceRoot":"","sources":["../../src/core/transcribe_audio.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEjE,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B9F"}
@@ -0,0 +1,44 @@
1
+ import type { AttachmentRef } from "./attachment.js";
2
+ /**
3
+ * The composer's upload contract: take a `File`, report `0..1` progress, and
4
+ * resolve to a durable {@link AttachmentRef}. The built-in handler is
5
+ * {@link uploadAttachment}; a host swaps in its own (a `tus-js-client` or
6
+ * direct-to-S3 adapter) via `AgUiChat.uploadHandler` without touching the tray,
7
+ * the chips, or the AG-UI wire, refs being transport-agnostic.
8
+ *
9
+ * The optional `signal` fires when the tray removes a chip or the element is
10
+ * torn down; a handler that honours it should abort its own transport, so a
11
+ * cancelled upload doesn't orphan a server-side file.
12
+ */
13
+ export type UploadHandler = (file: File, onProgress: (fraction: number) => void, signal?: AbortSignal) => Promise<AttachmentRef>;
14
+ /** Options for {@link uploadAttachment}. */
15
+ export interface UploadOptions {
16
+ /** The attachments endpoint (`data-attachments-url`). */
17
+ readonly url: string;
18
+ /** Extra HTTP headers (CSRF / auth), read fresh per upload. */
19
+ readonly headers?: Record<string, string>;
20
+ /**
21
+ * Cookie policy, spelled as `fetch`'s `credentials` mode for consistency with
22
+ * the other endpoints, but carried by `XMLHttpRequest`'s two-state
23
+ * `withCredentials`: `"include"` sets it and every other value leaves it off,
24
+ * matching `"same-origin"`. `"omit"` therefore cannot be honoured for a
25
+ * same-origin upload, XHR always sending cookies there; use a custom
26
+ * {@link UploadHandler} if that matters.
27
+ */
28
+ readonly credentials?: RequestCredentials;
29
+ /** Progress callback, `0..1`, fired as the body uploads. */
30
+ readonly onProgress?: (fraction: number) => void;
31
+ /** Abort signal to cancel the in-flight upload. */
32
+ readonly signal?: AbortSignal | undefined;
33
+ }
34
+ /**
35
+ * Upload one file to the attachments endpoint and resolve to its durable
36
+ * {@link AttachmentRef}.
37
+ *
38
+ * Uses `XMLHttpRequest` rather than `fetch` for real upload-progress events.
39
+ * The file goes as multipart under the `file` field with the element's
40
+ * `headers`, so CSRF / auth ride along; a non-2xx response or a network/abort
41
+ * error rejects, letting the tray show an error chip.
42
+ */
43
+ export declare function uploadAttachment(file: File, options: UploadOptions): Promise<AttachmentRef>;
44
+ //# sourceMappingURL=upload_attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload_attachment.d.ts","sourceRoot":"","sources":["../../src/core/upload_attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACtC,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C,4DAA4D;IAC5D,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAC3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA6C3F"}
@@ -0,0 +1,117 @@
1
+ import type { Message } from "@ag-ui/core";
2
+ import type { ClientConversationStore } from "./conversation_store.js";
3
+ /**
4
+ * Overlay a `credentials` mode onto a fetch `init`, or hand the `init` back
5
+ * untouched when none is configured.
6
+ *
7
+ * Absent and `undefined` differ: `exactOptionalPropertyTypes` rejects an
8
+ * explicit `credentials: undefined`, and writing one anyway would state a mode
9
+ * where the point is to leave the browser's own default in place.
10
+ */
11
+ export declare function withCredentials(init: RequestInit | undefined, credentials: RequestCredentials | undefined): RequestInit | undefined;
12
+ /**
13
+ * Start a new conversation in `store` and return its id.
14
+ *
15
+ * `newThread` is optional on the interface, so a store without it is
16
+ * driven the only other way the interface allows: mint an id here and make it
17
+ * active. That path loses the store's own note that the thread is new, so a
18
+ * remote store would go on to ask the server for a conversation that cannot
19
+ * exist yet — which is why every store in this package implements the method.
20
+ *
21
+ * What neither path does is clear the thread being left behind. Starting a
22
+ * conversation is not a reason to destroy the previous one.
23
+ */
24
+ export declare function mintThread(store: ClientConversationStore): string;
25
+ /**
26
+ * Announce host credentials about to leave the document's origin.
27
+ *
28
+ * `endpoint` and its six sibling URL attributes are plain HTML, and a page that
29
+ * interpolates one from a query parameter or from tenant-authored
30
+ * configuration has handed an attacker the destination. The browser preflights
31
+ * the custom header, any server willing to answer `Access-Control-Allow-Headers`
32
+ * receives it, and the token leaves on the element's very first request —
33
+ * before the user has done anything. Nothing else in this package compares a
34
+ * configured URL against an expected origin, so without this the delivery is
35
+ * silent, which is the only part of that sequence worth changing.
36
+ *
37
+ * A warning rather than a refusal because a cross-origin agent is a documented
38
+ * deployment: refusing would break working installations to defend against a
39
+ * page that is already interpolating untrusted data into its own markup. What
40
+ * it removes is the silence.
41
+ *
42
+ * `warned` is supplied by the caller rather than held here, per this package's
43
+ * rule against shared mutable state: two elements on one page must each get
44
+ * their own notice, and the set lives exactly as long as its owner.
45
+ *
46
+ * Every configured URL goes through this, not the agent endpoint alone. The
47
+ * tool catalog, the skills list, the thread and attachment endpoints and the
48
+ * upload target are all named by the same kind of host attribute and all carry
49
+ * the same headers, so covering one of them and not the rest would report the
50
+ * least interesting of the seven.
51
+ */
52
+ export declare function warnOnCrossOriginCredentials(url: string | URL, credentialNames: readonly string[], trustedOrigins: readonly string[], warned: Set<string>): void;
53
+ /**
54
+ * The tokens of a comma-separated attribute value, trimmed, with empty ones
55
+ * dropped -- so `"scroll, drag,"` is `["scroll", "drag"]`.
56
+ *
57
+ * Shared by every attribute that names a set of opt-ins, so each one reads a
58
+ * stray space or a trailing comma the same way.
59
+ */
60
+ export declare function commaTokens(value: string): string[];
61
+ /**
62
+ * `messages` with a result for every tool call that has none, each placed at the
63
+ * end of the round that made the call.
64
+ *
65
+ * **Why every call.** Several model providers reject a request carrying a tool
66
+ * call with no result, and a conversation that sends one cannot continue. A run
67
+ * leaves calls unanswered in more ways than any one path can list: Stop while
68
+ * the stream is still arriving, a round ending on `RUN_ERROR`, a name no tool
69
+ * here owns, a server that never streamed a result, a page reloaded mid-run.
70
+ * Answering whatever is unanswered, rather than each of those where it happens,
71
+ * is what keeps a path nobody listed from sending one.
72
+ *
73
+ * **Where each result goes.** At the end of its round: the assistant turns
74
+ * carrying calls, then the results that follow them. That is the shape the run
75
+ * loop writes for a round it executed, and a provider reads a result only in the
76
+ * turn straight after the calls; appended at the end of history, it would sit
77
+ * behind a user turn or a reply the conversation has moved on to. A call with a
78
+ * result after a *later* turn is left alone, since it is answered.
79
+ *
80
+ * `answer` builds the one message for a call id, so the caller decides what is
81
+ * true to say and where the label for a reload goes. Calls in `except` are about
82
+ * to be answered by something else -- a resumed approval, or a navigation
83
+ * result -- and must not be answered twice.
84
+ *
85
+ * Returns `messages` itself when nothing is owed.
86
+ *
87
+ * Every condition deciding a round's end is one branch arc, which a coverage
88
+ * gate reports as covered with any part of it deleted. Each is held by a test in
89
+ * `ag_ui_chat_unanswered_tool_calls.test.ts`: a result continuing the round by
90
+ * "answers it after the round's own results"; a turn without calls closing it by
91
+ * "sends a not-finished result for a call that arrived before it"; a turn with
92
+ * calls after a result closing it by "answers each round's open call before the
93
+ * next round starts"; the answered check by "sends the decline Stop gave the
94
+ * open approval"; and the exclusion by "leaves the call it resumes for the
95
+ * server to answer".
96
+ */
97
+ export declare function answerUnansweredCalls(messages: readonly Message[], answer: (toolCallId: string) => Message, except?: ReadonlySet<string>): readonly Message[];
98
+ /**
99
+ * A key a message carries in its `metadata`, or the same key at the message's
100
+ * top level when its metadata has none.
101
+ *
102
+ * Two keys are read this way, a tool message's `outcome` and a user message's
103
+ * `attachments`, and both for the same reason. `@ag-ui/client` 1.0 strips every
104
+ * key its schemas do not declare, off an inbound event and off the outgoing
105
+ * input, and `metadata` is the one place it declares open by key, so that is
106
+ * where this component writes them. A conversation stored by an earlier release
107
+ * has them at the top level instead, and a reload has to replay it as it
108
+ * settled.
109
+ *
110
+ * Metadata first, so a message carrying both says what the newer writer said.
111
+ * The result is `unknown` because it comes out of a store, which is not trusted
112
+ * to hold the shape anything here wrote; the caller narrows it. `Object()` boxes
113
+ * an absent, `null` or primitive `metadata` into an object with neither key,
114
+ * which reads as no metadata without a branch per shape.
115
+ */
116
+ export declare function metadataOrTopLevel(message: Message, key: "outcome" | "attachments"): unknown;
117
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,WAAW,EAAE,kBAAkB,GAAG,SAAS,GAC1C,WAAW,GAAG,SAAS,CAEzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAOjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,cAAc,EAAE,SAAS,MAAM,EAAE,EACjC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAClB,IAAI,CAwBN;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAKnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,EACvC,MAAM,GAAE,WAAW,CAAC,MAAM,CAAa,GACtC,SAAS,OAAO,EAAE,CAiCpB;AAqBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,GAAG,aAAa,GAAG,OAAO,CAG5F"}