@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.
- package/CHANGELOG.md +77 -0
- package/LICENSE +21 -0
- package/README.md +4397 -2
- package/dist/agents-web-components.bundle.js +5708 -0
- package/dist/agents-web-components.bundle.js.map +7 -0
- package/dist/bundle.d.ts +3 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/chat.d.ts +3 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +16373 -0
- package/dist/chat.js.map +7 -0
- package/dist/chunk-ARNLFGCC.js +7715 -0
- package/dist/chunk-ARNLFGCC.js.map +7 -0
- package/dist/constants.d.ts +575 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/core/activity_registration.d.ts +19 -0
- package/dist/core/activity_registration.d.ts.map +1 -0
- package/dist/core/activity_registry.d.ts +46 -0
- package/dist/core/activity_registry.d.ts.map +1 -0
- package/dist/core/activity_renderer.d.ts +20 -0
- package/dist/core/activity_renderer.d.ts.map +1 -0
- package/dist/core/ag_ui_chat.d.ts +836 -0
- package/dist/core/ag_ui_chat.d.ts.map +1 -0
- package/dist/core/agui_client.d.ts +370 -0
- package/dist/core/agui_client.d.ts.map +1 -0
- package/dist/core/attachment.d.ts +42 -0
- package/dist/core/attachment.d.ts.map +1 -0
- package/dist/core/chat_registry.d.ts +23 -0
- package/dist/core/chat_registry.d.ts.map +1 -0
- package/dist/core/client_seed.d.ts +27 -0
- package/dist/core/client_seed.d.ts.map +1 -0
- package/dist/core/conversation_store.d.ts +195 -0
- package/dist/core/conversation_store.d.ts.map +1 -0
- package/dist/core/create_http_agent.d.ts +57 -0
- package/dist/core/create_http_agent.d.ts.map +1 -0
- package/dist/core/define_chat.d.ts +13 -0
- package/dist/core/define_chat.d.ts.map +1 -0
- package/dist/core/events/attachments_detail.d.ts +9 -0
- package/dist/core/events/attachments_detail.d.ts.map +1 -0
- package/dist/core/events/bar_height_detail.d.ts +6 -0
- package/dist/core/events/bar_height_detail.d.ts.map +1 -0
- package/dist/core/events/custom_agent_detail.d.ts +8 -0
- package/dist/core/events/custom_agent_detail.d.ts.map +1 -0
- package/dist/core/events/dock_width_detail.d.ts +8 -0
- package/dist/core/events/dock_width_detail.d.ts.map +1 -0
- package/dist/core/events/feedback_detail.d.ts +28 -0
- package/dist/core/events/feedback_detail.d.ts.map +1 -0
- package/dist/core/events/invalidate_detail.d.ts +16 -0
- package/dist/core/events/invalidate_detail.d.ts.map +1 -0
- package/dist/core/events/maximize_detail.d.ts +5 -0
- package/dist/core/events/maximize_detail.d.ts.map +1 -0
- package/dist/core/events/run_finished_detail.d.ts +36 -0
- package/dist/core/events/run_finished_detail.d.ts.map +1 -0
- package/dist/core/events/state_detail.d.ts +5 -0
- package/dist/core/events/state_detail.d.ts.map +1 -0
- package/dist/core/events/submit_detail.d.ts +8 -0
- package/dist/core/events/submit_detail.d.ts.map +1 -0
- package/dist/core/events/thread_detail.d.ts +27 -0
- package/dist/core/events/thread_detail.d.ts.map +1 -0
- package/dist/core/events/thread_title_detail.d.ts +8 -0
- package/dist/core/events/thread_title_detail.d.ts.map +1 -0
- package/dist/core/events/toggle_detail.d.ts +5 -0
- package/dist/core/events/toggle_detail.d.ts.map +1 -0
- package/dist/core/events/tool_run.d.ts +11 -0
- package/dist/core/events/tool_run.d.ts.map +1 -0
- package/dist/core/events/unread_detail.d.ts +11 -0
- package/dist/core/events/unread_detail.d.ts.map +1 -0
- package/dist/core/message_role.d.ts +4 -0
- package/dist/core/message_role.d.ts.map +1 -0
- package/dist/core/read_flag.d.ts +11 -0
- package/dist/core/read_flag.d.ts.map +1 -0
- package/dist/core/read_json_attribute.d.ts +15 -0
- package/dist/core/read_json_attribute.d.ts.map +1 -0
- package/dist/core/read_max_tool_rounds.d.ts +9 -0
- package/dist/core/read_max_tool_rounds.d.ts.map +1 -0
- package/dist/core/remote_conversation_store.d.ts +71 -0
- package/dist/core/remote_conversation_store.d.ts.map +1 -0
- package/dist/core/run_handlers.d.ts +85 -0
- package/dist/core/run_handlers.d.ts.map +1 -0
- package/dist/core/run_index.d.ts +58 -0
- package/dist/core/run_index.d.ts.map +1 -0
- package/dist/core/storage_scope.d.ts +118 -0
- package/dist/core/storage_scope.d.ts.map +1 -0
- package/dist/core/tool_outcome.d.ts +27 -0
- package/dist/core/tool_outcome.d.ts.map +1 -0
- package/dist/core/transcribe_audio.d.ts +32 -0
- package/dist/core/transcribe_audio.d.ts.map +1 -0
- package/dist/core/upload_attachment.d.ts +44 -0
- package/dist/core/upload_attachment.d.ts.map +1 -0
- package/dist/core/utils.d.ts +117 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/dom/animations.d.ts +122 -0
- package/dist/dom/animations.d.ts.map +1 -0
- package/dist/dom/dom_driver.d.ts +28 -0
- package/dist/dom/dom_driver.d.ts.map +1 -0
- package/dist/dom/highlight_overlay.d.ts +39 -0
- package/dist/dom/highlight_overlay.d.ts.map +1 -0
- package/dist/dom/native_setter.d.ts +5 -0
- package/dist/dom/native_setter.d.ts.map +1 -0
- package/dist/dom/ring_color.d.ts +16 -0
- package/dist/dom/ring_color.d.ts.map +1 -0
- package/dist/dom/utils.d.ts +3 -0
- package/dist/dom/utils.d.ts.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +223 -0
- package/dist/index.js.map +7 -0
- package/dist/skills/fill_template.d.ts +16 -0
- package/dist/skills/fill_template.d.ts.map +1 -0
- package/dist/skills/parse_skills.d.ts +8 -0
- package/dist/skills/parse_skills.d.ts.map +1 -0
- package/dist/skills/skill.d.ts +33 -0
- package/dist/skills/skill.d.ts.map +1 -0
- package/dist/skills/skill_catalog.d.ts +69 -0
- package/dist/skills/skill_catalog.d.ts.map +1 -0
- package/dist/skills/skill_name_from.d.ts +12 -0
- package/dist/skills/skill_name_from.d.ts.map +1 -0
- package/dist/tools/chat_surface_tools.d.ts +77 -0
- package/dist/tools/chat_surface_tools.d.ts.map +1 -0
- package/dist/tools/client_tool_registry.d.ts +58 -0
- package/dist/tools/client_tool_registry.d.ts.map +1 -0
- package/dist/tools/is_destructive.d.ts +14 -0
- package/dist/tools/is_destructive.d.ts.map +1 -0
- package/dist/tools/is_navigates.d.ts +9 -0
- package/dist/tools/is_navigates.d.ts.map +1 -0
- package/dist/tools/page_action_tools.d.ts +30 -0
- package/dist/tools/page_action_tools.d.ts.map +1 -0
- package/dist/tools/page_map.d.ts +16 -0
- package/dist/tools/page_map.d.ts.map +1 -0
- package/dist/tools/page_state.d.ts +27 -0
- package/dist/tools/page_state.d.ts.map +1 -0
- package/dist/tools/parse_tool_catalog.d.ts +21 -0
- package/dist/tools/parse_tool_catalog.d.ts.map +1 -0
- package/dist/tools/route_map.d.ts +37 -0
- package/dist/tools/route_map.d.ts.map +1 -0
- package/dist/tools/tool_catalog.d.ts +86 -0
- package/dist/tools/tool_catalog.d.ts.map +1 -0
- package/dist/tools/tool_dispatch.d.ts +82 -0
- package/dist/tools/tool_dispatch.d.ts.map +1 -0
- package/dist/ui/charts/chart_block.d.ts +57 -0
- package/dist/ui/charts/chart_block.d.ts.map +1 -0
- package/dist/ui/charts/chart_spec_from.d.ts +12 -0
- package/dist/ui/charts/chart_spec_from.d.ts.map +1 -0
- package/dist/ui/charts/chart_styles.d.ts +2 -0
- package/dist/ui/charts/chart_styles.d.ts.map +1 -0
- package/dist/ui/charts/chart_tool.d.ts +15 -0
- package/dist/ui/charts/chart_tool.d.ts.map +1 -0
- package/dist/ui/composer/attachment_styles.d.ts +2 -0
- package/dist/ui/composer/attachment_styles.d.ts.map +1 -0
- package/dist/ui/composer/attachment_tray.d.ts +53 -0
- package/dist/ui/composer/attachment_tray.d.ts.map +1 -0
- package/dist/ui/composer/auto_grow.d.ts +10 -0
- package/dist/ui/composer/auto_grow.d.ts.map +1 -0
- package/dist/ui/composer/build_composer.d.ts +32 -0
- package/dist/ui/composer/build_composer.d.ts.map +1 -0
- package/dist/ui/composer/composer_attachments.d.ts +57 -0
- package/dist/ui/composer/composer_attachments.d.ts.map +1 -0
- package/dist/ui/composer/composer_styles.d.ts +2 -0
- package/dist/ui/composer/composer_styles.d.ts.map +1 -0
- package/dist/ui/composer/composer_voice.d.ts +48 -0
- package/dist/ui/composer/composer_voice.d.ts.map +1 -0
- package/dist/ui/composer/skill_styles.d.ts +2 -0
- package/dist/ui/composer/skill_styles.d.ts.map +1 -0
- package/dist/ui/composer/skills_menu.d.ts +34 -0
- package/dist/ui/composer/skills_menu.d.ts.map +1 -0
- package/dist/ui/composer/voice_input.d.ts +46 -0
- package/dist/ui/composer/voice_input.d.ts.map +1 -0
- package/dist/ui/excerpts/attach_copy_buttons.d.ts +13 -0
- package/dist/ui/excerpts/attach_copy_buttons.d.ts.map +1 -0
- package/dist/ui/excerpts/copy_payload.d.ts +30 -0
- package/dist/ui/excerpts/copy_payload.d.ts.map +1 -0
- package/dist/ui/excerpts/page_quote_offer.d.ts +33 -0
- package/dist/ui/excerpts/page_quote_offer.d.ts.map +1 -0
- package/dist/ui/excerpts/place_offer.d.ts +9 -0
- package/dist/ui/excerpts/place_offer.d.ts.map +1 -0
- package/dist/ui/excerpts/quote_selection.d.ts +66 -0
- package/dist/ui/excerpts/quote_selection.d.ts.map +1 -0
- package/dist/ui/excerpts/transcript_quote_offer.d.ts +57 -0
- package/dist/ui/excerpts/transcript_quote_offer.d.ts.map +1 -0
- package/dist/ui/fill_ui_string.d.ts +32 -0
- package/dist/ui/fill_ui_string.d.ts.map +1 -0
- package/dist/ui/history/checkpoint_menu.d.ts +41 -0
- package/dist/ui/history/checkpoint_menu.d.ts.map +1 -0
- package/dist/ui/history/conversation_history.d.ts +317 -0
- package/dist/ui/history/conversation_history.d.ts.map +1 -0
- package/dist/ui/history/history_styles.d.ts +2 -0
- package/dist/ui/history/history_styles.d.ts.map +1 -0
- package/dist/ui/history/relative_time.d.ts +23 -0
- package/dist/ui/history/relative_time.d.ts.map +1 -0
- package/dist/ui/history/thread_drawer.d.ts +64 -0
- package/dist/ui/history/thread_drawer.d.ts.map +1 -0
- package/dist/ui/history/utils.d.ts +2 -0
- package/dist/ui/history/utils.d.ts.map +1 -0
- package/dist/ui/interrupts/approval_card.d.ts +64 -0
- package/dist/ui/interrupts/approval_card.d.ts.map +1 -0
- package/dist/ui/interrupts/approval_styles.d.ts +2 -0
- package/dist/ui/interrupts/approval_styles.d.ts.map +1 -0
- package/dist/ui/interrupts/confirmation_card.d.ts +51 -0
- package/dist/ui/interrupts/confirmation_card.d.ts.map +1 -0
- package/dist/ui/interrupts/confirmation_styles.d.ts +2 -0
- package/dist/ui/interrupts/confirmation_styles.d.ts.map +1 -0
- package/dist/ui/interrupts/pending_decision.d.ts +22 -0
- package/dist/ui/interrupts/pending_decision.d.ts.map +1 -0
- package/dist/ui/interrupts/question_card.d.ts +49 -0
- package/dist/ui/interrupts/question_card.d.ts.map +1 -0
- package/dist/ui/interrupts/question_styles.d.ts +2 -0
- package/dist/ui/interrupts/question_styles.d.ts.map +1 -0
- package/dist/ui/place/place.d.ts +17 -0
- package/dist/ui/place/place.d.ts.map +1 -0
- package/dist/ui/place/place_chip.d.ts +26 -0
- package/dist/ui/place/place_chip.d.ts.map +1 -0
- package/dist/ui/place/place_from_route.d.ts +9 -0
- package/dist/ui/place/place_from_route.d.ts.map +1 -0
- package/dist/ui/place/place_styles.d.ts +2 -0
- package/dist/ui/place/place_styles.d.ts.map +1 -0
- package/dist/ui/placement/clamp_launcher.d.ts +20 -0
- package/dist/ui/placement/clamp_launcher.d.ts.map +1 -0
- package/dist/ui/placement/clamp_panel.d.ts +13 -0
- package/dist/ui/placement/clamp_panel.d.ts.map +1 -0
- package/dist/ui/placement/collapse_styles.d.ts +2 -0
- package/dist/ui/placement/collapse_styles.d.ts.map +1 -0
- package/dist/ui/placement/dock_styles.d.ts +2 -0
- package/dist/ui/placement/dock_styles.d.ts.map +1 -0
- package/dist/ui/placement/embedded_styles.d.ts +2 -0
- package/dist/ui/placement/embedded_styles.d.ts.map +1 -0
- package/dist/ui/placement/launcher_drag.d.ts +49 -0
- package/dist/ui/placement/launcher_drag.d.ts.map +1 -0
- package/dist/ui/placement/launcher_placement.d.ts +77 -0
- package/dist/ui/placement/launcher_placement.d.ts.map +1 -0
- package/dist/ui/placement/launcher_styles.d.ts +2 -0
- package/dist/ui/placement/launcher_styles.d.ts.map +1 -0
- package/dist/ui/placement/page_styles.d.ts +2 -0
- package/dist/ui/placement/page_styles.d.ts.map +1 -0
- package/dist/ui/placement/panel_drag.d.ts +40 -0
- package/dist/ui/placement/panel_drag.d.ts.map +1 -0
- package/dist/ui/placement/panel_placement.d.ts +173 -0
- package/dist/ui/placement/panel_placement.d.ts.map +1 -0
- package/dist/ui/placement/place_widget.d.ts +31 -0
- package/dist/ui/placement/place_widget.d.ts.map +1 -0
- package/dist/ui/placement/preset_styles.d.ts +2 -0
- package/dist/ui/placement/preset_styles.d.ts.map +1 -0
- package/dist/ui/placement/resize_handle.d.ts +78 -0
- package/dist/ui/placement/resize_handle.d.ts.map +1 -0
- package/dist/ui/placement/resize_styles.d.ts +2 -0
- package/dist/ui/placement/resize_styles.d.ts.map +1 -0
- package/dist/ui/placement/sidebar_styles.d.ts +2 -0
- package/dist/ui/placement/sidebar_styles.d.ts.map +1 -0
- package/dist/ui/placement/small_viewport_styles.d.ts +2 -0
- package/dist/ui/placement/small_viewport_styles.d.ts.map +1 -0
- package/dist/ui/placement/surface_for.d.ts +93 -0
- package/dist/ui/placement/surface_for.d.ts.map +1 -0
- package/dist/ui/progress/prettify_tool_name.d.ts +11 -0
- package/dist/ui/progress/prettify_tool_name.d.ts.map +1 -0
- package/dist/ui/progress/run_announcer.d.ts +41 -0
- package/dist/ui/progress/run_announcer.d.ts.map +1 -0
- package/dist/ui/progress/run_notice.d.ts +21 -0
- package/dist/ui/progress/run_notice.d.ts.map +1 -0
- package/dist/ui/progress/run_notice_styles.d.ts +2 -0
- package/dist/ui/progress/run_notice_styles.d.ts.map +1 -0
- package/dist/ui/progress/subagent_panel.d.ts +101 -0
- package/dist/ui/progress/subagent_panel.d.ts.map +1 -0
- package/dist/ui/progress/subagent_progress.d.ts +57 -0
- package/dist/ui/progress/subagent_progress.d.ts.map +1 -0
- package/dist/ui/progress/subagent_update.d.ts +28 -0
- package/dist/ui/progress/subagent_update.d.ts.map +1 -0
- package/dist/ui/progress/thoughts_block.d.ts +57 -0
- package/dist/ui/progress/thoughts_block.d.ts.map +1 -0
- package/dist/ui/progress/thoughts_styles.d.ts +2 -0
- package/dist/ui/progress/thoughts_styles.d.ts.map +1 -0
- package/dist/ui/progress/tool_call_card.d.ts +167 -0
- package/dist/ui/progress/tool_call_card.d.ts.map +1 -0
- package/dist/ui/progress/tool_group_styles.d.ts +2 -0
- package/dist/ui/progress/tool_group_styles.d.ts.map +1 -0
- package/dist/ui/progress/tool_step_group.d.ts +50 -0
- package/dist/ui/progress/tool_step_group.d.ts.map +1 -0
- package/dist/ui/progress/tool_step_styles.d.ts +2 -0
- package/dist/ui/progress/tool_step_styles.d.ts.map +1 -0
- package/dist/ui/shell/adopt_styles.d.ts +28 -0
- package/dist/ui/shell/adopt_styles.d.ts.map +1 -0
- package/dist/ui/shell/build_header.d.ts +45 -0
- package/dist/ui/shell/build_header.d.ts.map +1 -0
- package/dist/ui/shell/build_launcher.d.ts +33 -0
- package/dist/ui/shell/build_launcher.d.ts.map +1 -0
- package/dist/ui/shell/collapse_glyph.d.ts +14 -0
- package/dist/ui/shell/collapse_glyph.d.ts.map +1 -0
- package/dist/ui/shell/frame_styles.d.ts +2 -0
- package/dist/ui/shell/frame_styles.d.ts.map +1 -0
- package/dist/ui/shell/glyph_slot.d.ts +7 -0
- package/dist/ui/shell/glyph_slot.d.ts.map +1 -0
- package/dist/ui/shell/header_button.d.ts +11 -0
- package/dist/ui/shell/header_button.d.ts.map +1 -0
- package/dist/ui/shell/icon_element.d.ts +12 -0
- package/dist/ui/shell/icon_element.d.ts.map +1 -0
- package/dist/ui/shell/is_unread_badge_enabled.d.ts +10 -0
- package/dist/ui/shell/is_unread_badge_enabled.d.ts.map +1 -0
- package/dist/ui/shell/read_launcher_icon_url.d.ts +8 -0
- package/dist/ui/shell/read_launcher_icon_url.d.ts.map +1 -0
- package/dist/ui/shell/theme_styles.d.ts +2 -0
- package/dist/ui/shell/theme_styles.d.ts.map +1 -0
- package/dist/ui/shell/token_styles.d.ts +2 -0
- package/dist/ui/shell/token_styles.d.ts.map +1 -0
- package/dist/ui/styles.d.ts +2 -0
- package/dist/ui/styles.d.ts.map +1 -0
- package/dist/ui/themes/classic_styles.d.ts +2 -0
- package/dist/ui/themes/classic_styles.d.ts.map +1 -0
- package/dist/ui/themes/classic_tokens.d.ts +2 -0
- package/dist/ui/themes/classic_tokens.d.ts.map +1 -0
- package/dist/ui/themes/code_tokens.d.ts +2 -0
- package/dist/ui/themes/code_tokens.d.ts.map +1 -0
- package/dist/ui/themes/ledger_styles.d.ts +2 -0
- package/dist/ui/themes/ledger_styles.d.ts.map +1 -0
- package/dist/ui/themes/ledger_tokens.d.ts +2 -0
- package/dist/ui/themes/ledger_tokens.d.ts.map +1 -0
- package/dist/ui/themes/modern_styles.d.ts +2 -0
- package/dist/ui/themes/modern_styles.d.ts.map +1 -0
- package/dist/ui/themes/quiet_styles.d.ts +2 -0
- package/dist/ui/themes/quiet_styles.d.ts.map +1 -0
- package/dist/ui/themes/scheme_styles.d.ts +2 -0
- package/dist/ui/themes/scheme_styles.d.ts.map +1 -0
- package/dist/ui/themes/soft_styles.d.ts +2 -0
- package/dist/ui/themes/soft_styles.d.ts.map +1 -0
- package/dist/ui/themes/soft_tokens.d.ts +2 -0
- package/dist/ui/themes/soft_tokens.d.ts.map +1 -0
- package/dist/ui/themes/theme_hosts.d.ts +15 -0
- package/dist/ui/themes/theme_hosts.d.ts.map +1 -0
- package/dist/ui/transcript/answer_actions.d.ts +50 -0
- package/dist/ui/transcript/answer_actions.d.ts.map +1 -0
- package/dist/ui/transcript/answer_stream.d.ts +56 -0
- package/dist/ui/transcript/answer_stream.d.ts.map +1 -0
- package/dist/ui/transcript/attachment_chip_styles.d.ts +2 -0
- package/dist/ui/transcript/attachment_chip_styles.d.ts.map +1 -0
- package/dist/ui/transcript/attachment_chips.d.ts +21 -0
- package/dist/ui/transcript/attachment_chips.d.ts.map +1 -0
- package/dist/ui/transcript/build_transcript.d.ts +21 -0
- package/dist/ui/transcript/build_transcript.d.ts.map +1 -0
- package/dist/ui/transcript/greeting_styles.d.ts +2 -0
- package/dist/ui/transcript/greeting_styles.d.ts.map +1 -0
- package/dist/ui/transcript/groups_tool_steps.d.ts +13 -0
- package/dist/ui/transcript/groups_tool_steps.d.ts.map +1 -0
- package/dist/ui/transcript/message_action_styles.d.ts +2 -0
- package/dist/ui/transcript/message_action_styles.d.ts.map +1 -0
- package/dist/ui/transcript/message_actions.d.ts +74 -0
- package/dist/ui/transcript/message_actions.d.ts.map +1 -0
- package/dist/ui/transcript/message_styles.d.ts +2 -0
- package/dist/ui/transcript/message_styles.d.ts.map +1 -0
- package/dist/ui/transcript/render_markdown.d.ts +40 -0
- package/dist/ui/transcript/render_markdown.d.ts.map +1 -0
- package/dist/ui/transcript/render_or_warn.d.ts +16 -0
- package/dist/ui/transcript/render_or_warn.d.ts.map +1 -0
- package/dist/ui/transcript/reveal_words.d.ts +8 -0
- package/dist/ui/transcript/reveal_words.d.ts.map +1 -0
- package/dist/ui/transcript/starter_chips.d.ts +21 -0
- package/dist/ui/transcript/starter_chips.d.ts.map +1 -0
- package/dist/ui/transcript/stick_to_bottom.d.ts +55 -0
- package/dist/ui/transcript/stick_to_bottom.d.ts.map +1 -0
- package/dist/ui/transcript/suggestion_chips.d.ts +29 -0
- package/dist/ui/transcript/suggestion_chips.d.ts.map +1 -0
- package/dist/ui/transcript/transcript.d.ts +196 -0
- package/dist/ui/transcript/transcript.d.ts.map +1 -0
- package/dist/ui/transcript/transcript_styles.d.ts +2 -0
- package/dist/ui/transcript/transcript_styles.d.ts.map +1 -0
- package/dist/ui/ui_strings.d.ts +352 -0
- package/dist/ui/ui_strings.d.ts.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/package.json +86 -3
- package/src/bundle.ts +2 -0
- package/src/chat.ts +2 -0
- package/src/constants.ts +650 -0
- package/src/core/activity_registration.ts +19 -0
- package/src/core/activity_registry.ts +133 -0
- package/src/core/activity_renderer.ts +19 -0
- package/src/core/ag_ui_chat.ts +3966 -0
- package/src/core/agui_client.ts +1028 -0
- package/src/core/attachment.ts +62 -0
- package/src/core/chat_registry.ts +53 -0
- package/src/core/client_seed.ts +27 -0
- package/src/core/conversation_store.ts +478 -0
- package/src/core/create_http_agent.ts +97 -0
- package/src/core/define_chat.ts +25 -0
- package/src/core/events/attachments_detail.ts +9 -0
- package/src/core/events/bar_height_detail.ts +5 -0
- package/src/core/events/custom_agent_detail.ts +7 -0
- package/src/core/events/dock_width_detail.ts +7 -0
- package/src/core/events/feedback_detail.ts +27 -0
- package/src/core/events/invalidate_detail.ts +15 -0
- package/src/core/events/maximize_detail.ts +4 -0
- package/src/core/events/run_finished_detail.ts +36 -0
- package/src/core/events/state_detail.ts +4 -0
- package/src/core/events/submit_detail.ts +8 -0
- package/src/core/events/thread_detail.ts +26 -0
- package/src/core/events/thread_title_detail.ts +7 -0
- package/src/core/events/toggle_detail.ts +4 -0
- package/src/core/events/tool_run.ts +10 -0
- package/src/core/events/unread_detail.ts +10 -0
- package/src/core/message_role.ts +4 -0
- package/src/core/read_flag.ts +13 -0
- package/src/core/read_json_attribute.ts +30 -0
- package/src/core/read_max_tool_rounds.ts +13 -0
- package/src/core/remote_conversation_store.ts +279 -0
- package/src/core/run_handlers.ts +524 -0
- package/src/core/run_index.ts +114 -0
- package/src/core/storage_scope.ts +291 -0
- package/src/core/tool_outcome.ts +39 -0
- package/src/core/transcribe_audio.ts +76 -0
- package/src/core/upload_attachment.ts +130 -0
- package/src/core/utils.ts +230 -0
- package/src/dom/animations.ts +341 -0
- package/src/dom/dom_driver.ts +91 -0
- package/src/dom/highlight_overlay.ts +204 -0
- package/src/dom/native_setter.ts +40 -0
- package/src/dom/ring_color.ts +206 -0
- package/src/dom/utils.ts +5 -0
- package/src/index.ts +220 -0
- package/src/skills/fill_template.ts +31 -0
- package/src/skills/parse_skills.ts +31 -0
- package/src/skills/skill.ts +32 -0
- package/src/skills/skill_catalog.ts +172 -0
- package/src/skills/skill_name_from.ts +19 -0
- package/src/tools/chat_surface_tools.ts +183 -0
- package/src/tools/client_tool_registry.ts +80 -0
- package/src/tools/is_destructive.ts +17 -0
- package/src/tools/is_navigates.ts +12 -0
- package/src/tools/page_action_tools.ts +123 -0
- package/src/tools/page_map.ts +26 -0
- package/src/tools/page_state.ts +57 -0
- package/src/tools/parse_tool_catalog.ts +41 -0
- package/src/tools/route_map.ts +132 -0
- package/src/tools/tool_catalog.ts +334 -0
- package/src/tools/tool_dispatch.ts +453 -0
- package/src/ui/charts/chart_block.ts +519 -0
- package/src/ui/charts/chart_spec_from.ts +125 -0
- package/src/ui/charts/chart_styles.ts +63 -0
- package/src/ui/charts/chart_tool.ts +72 -0
- package/src/ui/composer/attachment_styles.ts +71 -0
- package/src/ui/composer/attachment_tray.ts +295 -0
- package/src/ui/composer/auto_grow.ts +12 -0
- package/src/ui/composer/build_composer.ts +114 -0
- package/src/ui/composer/composer_attachments.ts +324 -0
- package/src/ui/composer/composer_styles.ts +177 -0
- package/src/ui/composer/composer_voice.ts +93 -0
- package/src/ui/composer/skill_styles.ts +120 -0
- package/src/ui/composer/skills_menu.ts +188 -0
- package/src/ui/composer/voice_input.ts +282 -0
- package/src/ui/excerpts/attach_copy_buttons.ts +73 -0
- package/src/ui/excerpts/copy_payload.ts +156 -0
- package/src/ui/excerpts/page_quote_offer.ts +203 -0
- package/src/ui/excerpts/place_offer.ts +24 -0
- package/src/ui/excerpts/quote_selection.ts +345 -0
- package/src/ui/excerpts/transcript_quote_offer.ts +175 -0
- package/src/ui/fill_ui_string.ts +41 -0
- package/src/ui/history/checkpoint_menu.ts +300 -0
- package/src/ui/history/conversation_history.ts +1169 -0
- package/src/ui/history/history_styles.ts +492 -0
- package/src/ui/history/relative_time.ts +50 -0
- package/src/ui/history/thread_drawer.ts +471 -0
- package/src/ui/history/utils.ts +11 -0
- package/src/ui/interrupts/approval_card.ts +202 -0
- package/src/ui/interrupts/approval_styles.ts +52 -0
- package/src/ui/interrupts/confirmation_card.ts +138 -0
- package/src/ui/interrupts/confirmation_styles.ts +114 -0
- package/src/ui/interrupts/pending_decision.ts +33 -0
- package/src/ui/interrupts/question_card.ts +213 -0
- package/src/ui/interrupts/question_styles.ts +73 -0
- package/src/ui/place/place.ts +16 -0
- package/src/ui/place/place_chip.ts +146 -0
- package/src/ui/place/place_from_route.ts +27 -0
- package/src/ui/place/place_styles.ts +108 -0
- package/src/ui/placement/clamp_launcher.ts +38 -0
- package/src/ui/placement/clamp_panel.ts +30 -0
- package/src/ui/placement/collapse_styles.ts +472 -0
- package/src/ui/placement/dock_styles.ts +116 -0
- package/src/ui/placement/embedded_styles.ts +14 -0
- package/src/ui/placement/launcher_drag.ts +206 -0
- package/src/ui/placement/launcher_placement.ts +133 -0
- package/src/ui/placement/launcher_styles.ts +189 -0
- package/src/ui/placement/page_styles.ts +47 -0
- package/src/ui/placement/panel_drag.ts +138 -0
- package/src/ui/placement/panel_placement.ts +1975 -0
- package/src/ui/placement/place_widget.ts +64 -0
- package/src/ui/placement/preset_styles.ts +49 -0
- package/src/ui/placement/resize_handle.ts +229 -0
- package/src/ui/placement/resize_styles.ts +201 -0
- package/src/ui/placement/sidebar_styles.ts +113 -0
- package/src/ui/placement/small_viewport_styles.ts +70 -0
- package/src/ui/placement/surface_for.ts +183 -0
- package/src/ui/progress/prettify_tool_name.ts +16 -0
- package/src/ui/progress/run_announcer.ts +67 -0
- package/src/ui/progress/run_notice.ts +61 -0
- package/src/ui/progress/run_notice_styles.ts +52 -0
- package/src/ui/progress/subagent_panel.ts +227 -0
- package/src/ui/progress/subagent_progress.ts +200 -0
- package/src/ui/progress/subagent_update.ts +89 -0
- package/src/ui/progress/thoughts_block.ts +165 -0
- package/src/ui/progress/thoughts_styles.ts +74 -0
- package/src/ui/progress/tool_call_card.ts +429 -0
- package/src/ui/progress/tool_group_styles.ts +313 -0
- package/src/ui/progress/tool_step_group.ts +317 -0
- package/src/ui/progress/tool_step_styles.ts +486 -0
- package/src/ui/shell/adopt_styles.ts +34 -0
- package/src/ui/shell/build_header.ts +121 -0
- package/src/ui/shell/build_launcher.ts +79 -0
- package/src/ui/shell/collapse_glyph.ts +42 -0
- package/src/ui/shell/frame_styles.ts +147 -0
- package/src/ui/shell/glyph_slot.ts +12 -0
- package/src/ui/shell/header_button.ts +22 -0
- package/src/ui/shell/icon_element.ts +33 -0
- package/src/ui/shell/is_unread_badge_enabled.ts +11 -0
- package/src/ui/shell/read_launcher_icon_url.ts +9 -0
- package/src/ui/shell/theme_styles.ts +11 -0
- package/src/ui/shell/token_styles.ts +480 -0
- package/src/ui/styles.ts +110 -0
- package/src/ui/themes/classic_styles.ts +32 -0
- package/src/ui/themes/classic_tokens.ts +51 -0
- package/src/ui/themes/code_tokens.ts +21 -0
- package/src/ui/themes/ledger_styles.ts +169 -0
- package/src/ui/themes/ledger_tokens.ts +33 -0
- package/src/ui/themes/modern_styles.ts +80 -0
- package/src/ui/themes/quiet_styles.ts +118 -0
- package/src/ui/themes/scheme_styles.ts +26 -0
- package/src/ui/themes/soft_styles.ts +149 -0
- package/src/ui/themes/soft_tokens.ts +29 -0
- package/src/ui/themes/theme_hosts.ts +14 -0
- package/src/ui/transcript/answer_actions.ts +165 -0
- package/src/ui/transcript/answer_stream.ts +123 -0
- package/src/ui/transcript/attachment_chip_styles.ts +116 -0
- package/src/ui/transcript/attachment_chips.ts +82 -0
- package/src/ui/transcript/build_transcript.ts +67 -0
- package/src/ui/transcript/greeting_styles.ts +171 -0
- package/src/ui/transcript/groups_tool_steps.ts +16 -0
- package/src/ui/transcript/message_action_styles.ts +155 -0
- package/src/ui/transcript/message_actions.ts +234 -0
- package/src/ui/transcript/message_styles.ts +262 -0
- package/src/ui/transcript/render_markdown.ts +181 -0
- package/src/ui/transcript/render_or_warn.ts +22 -0
- package/src/ui/transcript/reveal_words.ts +41 -0
- package/src/ui/transcript/starter_chips.ts +42 -0
- package/src/ui/transcript/stick_to_bottom.ts +126 -0
- package/src/ui/transcript/suggestion_chips.ts +73 -0
- package/src/ui/transcript/transcript.ts +555 -0
- package/src/ui/transcript/transcript_styles.ts +153 -0
- package/src/ui/ui_strings.ts +550 -0
- 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"}
|