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