@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,146 @@
|
|
|
1
|
+
import type { Context } from "@ag-ui/core";
|
|
2
|
+
import {
|
|
3
|
+
ICON_PLACE,
|
|
4
|
+
ICON_PLACE_SHARED,
|
|
5
|
+
ICON_PLACE_WITHHELD,
|
|
6
|
+
PLACE_CONTEXT,
|
|
7
|
+
} from "../../constants.js";
|
|
8
|
+
import { fillUiString } from "../fill_ui_string.js";
|
|
9
|
+
import { DEFAULT_UI_STRINGS, type UiStrings } from "../ui_strings.js";
|
|
10
|
+
import type { Place } from "./place.js";
|
|
11
|
+
|
|
12
|
+
/** What identifies a place for the exclusion: its href, else its label and detail. */
|
|
13
|
+
function keyOf(place: Place): string {
|
|
14
|
+
return place.href ?? `${place.label}\u0000${place.detail ?? ""}`;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Draw `text` into `el`, hiding it when there is none. */
|
|
18
|
+
function setText(el: HTMLElement, text: string | undefined): void {
|
|
19
|
+
el.textContent = text ?? "";
|
|
20
|
+
el.hidden = text === undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The "you are here" chip in the composer's tool row, and the context entry it stands for.
|
|
25
|
+
*
|
|
26
|
+
* The exclusion is keyed on the place: it holds across turns on the same place and lapses
|
|
27
|
+
* when a different one is read. A read of no place keeps it, so a page naming nothing
|
|
28
|
+
* mid-navigation does not undo it. Nothing persists, and nothing the host sets can lift it.
|
|
29
|
+
*/
|
|
30
|
+
export class PlaceChip {
|
|
31
|
+
readonly element: HTMLElement = document.createElement("div");
|
|
32
|
+
/** The same place for the collapsed bar, drawn by the same render. */
|
|
33
|
+
readonly barElement: HTMLElement = document.createElement("span");
|
|
34
|
+
readonly #barLabel: HTMLElement = document.createElement("span");
|
|
35
|
+
readonly #barDetail: HTMLElement = document.createElement("span");
|
|
36
|
+
readonly #icon: HTMLElement = document.createElement("span");
|
|
37
|
+
readonly #label: HTMLElement = document.createElement("span");
|
|
38
|
+
readonly #detail: HTMLElement = document.createElement("span");
|
|
39
|
+
readonly #toggle: HTMLButtonElement = document.createElement("button");
|
|
40
|
+
#place: Place | null = null;
|
|
41
|
+
#excluded: string | null = null;
|
|
42
|
+
#strings: UiStrings = DEFAULT_UI_STRINGS;
|
|
43
|
+
|
|
44
|
+
constructor() {
|
|
45
|
+
this.element.className = "place";
|
|
46
|
+
this.element.setAttribute("part", "place");
|
|
47
|
+
this.element.hidden = true;
|
|
48
|
+
this.#icon.className = "place-icon";
|
|
49
|
+
this.#icon.setAttribute("part", "place-icon");
|
|
50
|
+
this.#label.className = "place-label";
|
|
51
|
+
this.#label.setAttribute("part", "place-label");
|
|
52
|
+
this.#detail.className = "place-detail";
|
|
53
|
+
this.#detail.setAttribute("part", "place-detail");
|
|
54
|
+
this.#toggle.type = "button";
|
|
55
|
+
this.#toggle.className = "place-toggle";
|
|
56
|
+
this.#toggle.setAttribute("part", "place-toggle");
|
|
57
|
+
const text = document.createElement("span");
|
|
58
|
+
text.className = "place-text";
|
|
59
|
+
text.append(this.#label, this.#detail);
|
|
60
|
+
this.element.append(this.#icon, text, this.#toggle);
|
|
61
|
+
this.barElement.className = "bar-place";
|
|
62
|
+
this.barElement.setAttribute("part", "bar-place");
|
|
63
|
+
this.barElement.hidden = true;
|
|
64
|
+
this.#barLabel.className = "place-label";
|
|
65
|
+
this.#barLabel.setAttribute("part", "place-label");
|
|
66
|
+
this.#barDetail.className = "place-detail";
|
|
67
|
+
this.#barDetail.setAttribute("part", "place-detail");
|
|
68
|
+
this.barElement.append(this.#barLabel, this.#barDetail);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Wire the toggle for one connection, with the strings it resolved. */
|
|
72
|
+
mount(signal: AbortSignal, strings: UiStrings): void {
|
|
73
|
+
this.#strings = strings;
|
|
74
|
+
this.#toggle.addEventListener("click", () => this.#flip(), { signal });
|
|
75
|
+
this.#render();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Show a fresh read; null hides the chip and sends nothing. */
|
|
79
|
+
update(place: Place | null): void {
|
|
80
|
+
if (place !== null && this.#excluded !== null && this.#excluded !== keyOf(place)) {
|
|
81
|
+
this.#excluded = null;
|
|
82
|
+
}
|
|
83
|
+
this.#place = place;
|
|
84
|
+
this.#render();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Whether there is a place and the user withheld it, which withholds the page too. */
|
|
88
|
+
get withheld(): boolean {
|
|
89
|
+
return this.#place !== null && this.#excluded !== null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** The round's context entry: the place as shown, without its icon, or nothing. */
|
|
93
|
+
context(): Context[] {
|
|
94
|
+
const place = this.#place;
|
|
95
|
+
if (place === null || this.#excluded !== null) {
|
|
96
|
+
return [];
|
|
97
|
+
}
|
|
98
|
+
const sent = {
|
|
99
|
+
label: place.label,
|
|
100
|
+
...(place.detail === undefined ? {} : { detail: place.detail }),
|
|
101
|
+
...(place.href === undefined ? {} : { href: place.href }),
|
|
102
|
+
};
|
|
103
|
+
return [{ description: PLACE_CONTEXT, value: JSON.stringify(sent) }];
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#flip(): void {
|
|
107
|
+
const place = this.#place;
|
|
108
|
+
if (place === null) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this.#excluded = this.#excluded === null ? keyOf(place) : null;
|
|
112
|
+
this.#render();
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
#render(): void {
|
|
116
|
+
const place = this.#place;
|
|
117
|
+
this.element.hidden = place === null;
|
|
118
|
+
this.barElement.hidden = place === null;
|
|
119
|
+
if (place === null) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const shared = this.#excluded === null;
|
|
123
|
+
this.element.toggleAttribute("data-excluded", !shared);
|
|
124
|
+
this.barElement.toggleAttribute("data-excluded", !shared);
|
|
125
|
+
if (place.icon === undefined) {
|
|
126
|
+
this.#icon.innerHTML = ICON_PLACE;
|
|
127
|
+
} else {
|
|
128
|
+
const img = document.createElement("img");
|
|
129
|
+
img.src = place.icon;
|
|
130
|
+
img.alt = "";
|
|
131
|
+
this.#icon.replaceChildren(img);
|
|
132
|
+
}
|
|
133
|
+
setText(this.#label, place.label);
|
|
134
|
+
setText(this.#detail, place.detail);
|
|
135
|
+
setText(this.#barLabel, place.label);
|
|
136
|
+
setText(this.#barDetail, place.detail);
|
|
137
|
+
this.element.title = fillUiString(
|
|
138
|
+
shared ? this.#strings.placeShared : this.#strings.placeWithheld,
|
|
139
|
+
{ label: place.label },
|
|
140
|
+
);
|
|
141
|
+
const action = shared ? this.#strings.placeStopSharing : this.#strings.placeShareAgain;
|
|
142
|
+
this.#toggle.innerHTML = shared ? ICON_PLACE_SHARED : ICON_PLACE_WITHHELD;
|
|
143
|
+
this.#toggle.title = action;
|
|
144
|
+
this.#toggle.setAttribute("aria-label", action);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { RouteMap } from "../../tools/route_map.js";
|
|
2
|
+
import type { Place } from "./place.js";
|
|
3
|
+
|
|
4
|
+
/** A route path template as an anchored pattern, each placeholder one segment. */
|
|
5
|
+
function pattern(path: string): RegExp {
|
|
6
|
+
const escaped = path
|
|
7
|
+
.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
|
|
8
|
+
.replace(/:[A-Za-z_][A-Za-z0-9_]*/g, "[^/]+");
|
|
9
|
+
return new RegExp(`^${escaped}$`);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The place a route map implies: the first route whose path template matches
|
|
14
|
+
* `pathname`, its title (else its id) as the label, its group as the detail,
|
|
15
|
+
* and the path as the href. Null when no route matches.
|
|
16
|
+
*/
|
|
17
|
+
export function placeFromRoute(routes: RouteMap, pathname: string): Place | null {
|
|
18
|
+
const route = routes.find((candidate) => pattern(candidate.path).test(pathname));
|
|
19
|
+
if (route === undefined) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
label: route.title ?? route.id,
|
|
24
|
+
...(route.group === undefined ? {} : { detail: route.group }),
|
|
25
|
+
href: pathname,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// The place chip: where in the app the user is, drawn in the composer's tool
|
|
2
|
+
// row between the attach and voice controls and Send.
|
|
3
|
+
export const PLACE_STYLES: string = `
|
|
4
|
+
/* One quiet pill: a mark, the place, its detail, and the eye toggle. Muted at
|
|
5
|
+
rest so it reads as a fact about the message rather than a control. It takes
|
|
6
|
+
what the row's buttons leave and shrinks before Send can leave the row: the
|
|
7
|
+
label truncates with an ellipsis and the chip's title carries it in full. */
|
|
8
|
+
.place {
|
|
9
|
+
display: inline-flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
flex: 0 1 auto;
|
|
12
|
+
gap: 6px;
|
|
13
|
+
min-width: 0;
|
|
14
|
+
height: var(--_tool-btn-size);
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
margin-inline-start: 4px;
|
|
17
|
+
padding: 0 2px 0 8px;
|
|
18
|
+
border: 1px solid var(--_border);
|
|
19
|
+
border-radius: 999px;
|
|
20
|
+
color: var(--_muted);
|
|
21
|
+
font-size: 0.85em;
|
|
22
|
+
line-height: 1;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.place-icon {
|
|
26
|
+
display: inline-flex;
|
|
27
|
+
flex: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.place-icon .glyph,
|
|
31
|
+
.place-toggle .glyph,
|
|
32
|
+
.place-icon img {
|
|
33
|
+
width: 14px;
|
|
34
|
+
height: 14px;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.place-icon img {
|
|
38
|
+
border-radius: 3px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.place-text {
|
|
42
|
+
display: inline-flex;
|
|
43
|
+
gap: 6px;
|
|
44
|
+
min-width: 0;
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.place-label,
|
|
49
|
+
.place-detail {
|
|
50
|
+
flex: 0 1 auto;
|
|
51
|
+
min-width: 0;
|
|
52
|
+
white-space: nowrap;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
text-overflow: ellipsis;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.place-label {
|
|
58
|
+
color: var(--_fg);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.place-detail::before {
|
|
62
|
+
content: "\\00B7";
|
|
63
|
+
margin-inline-end: 6px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.place-toggle {
|
|
67
|
+
display: inline-flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
justify-content: center;
|
|
70
|
+
flex: none;
|
|
71
|
+
width: 22px;
|
|
72
|
+
height: 22px;
|
|
73
|
+
padding: 0;
|
|
74
|
+
border: none;
|
|
75
|
+
border-radius: 50%;
|
|
76
|
+
background: transparent;
|
|
77
|
+
color: var(--_muted);
|
|
78
|
+
cursor: pointer;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.place-toggle:hover {
|
|
82
|
+
background: var(--_hover);
|
|
83
|
+
color: var(--_fg);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* An author display beats the user-agent rule for the hidden property, so each
|
|
87
|
+
class above that sets one says it again for the hidden state: a chip with no
|
|
88
|
+
place takes no space in the row. */
|
|
89
|
+
.place[hidden],
|
|
90
|
+
.place-icon[hidden],
|
|
91
|
+
.place-text[hidden],
|
|
92
|
+
.place-detail[hidden],
|
|
93
|
+
.place-toggle[hidden] {
|
|
94
|
+
display: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Withheld from the next message: dashed and struck through, so the chip still
|
|
98
|
+
says where the user is while saying plainly the agent is not told. */
|
|
99
|
+
.place[data-excluded] {
|
|
100
|
+
border-style: dashed;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.place[data-excluded] .place-label,
|
|
104
|
+
.place[data-excluded] .place-detail {
|
|
105
|
+
color: var(--_muted);
|
|
106
|
+
text-decoration: line-through;
|
|
107
|
+
}
|
|
108
|
+
`;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SCREEN_EDGE_MARGIN } from "../../constants.js";
|
|
2
|
+
import type { LauncherBox, ViewportBox } from "./launcher_placement.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Keep a launcher fully on screen, and a little clear of the edge.
|
|
6
|
+
*
|
|
7
|
+
* Applied to a dragged position and again to a restored one, because the
|
|
8
|
+
* viewport that stored it may since have shrunk. A launcher parked past the
|
|
9
|
+
* edge is unreachable, and it is the only way back to a collapsed
|
|
10
|
+
* conversation.
|
|
11
|
+
*
|
|
12
|
+
* Not the panel's 24px gutter, which was rejected here on purpose: a launcher
|
|
13
|
+
* held that far in refuses the corners people actually drag it to. But not
|
|
14
|
+
* zero either -- the bubble is a circle with a drop shadow, and one flush
|
|
15
|
+
* against the boundary has its shadow cut and its curve running into the edge,
|
|
16
|
+
* which reads as clipped whether or not a pixel is actually missing.
|
|
17
|
+
*/
|
|
18
|
+
export function clampLauncher(
|
|
19
|
+
launcher: LauncherBox,
|
|
20
|
+
viewport: ViewportBox,
|
|
21
|
+
margin: number = SCREEN_EDGE_MARGIN,
|
|
22
|
+
): { readonly left: number; readonly top: number } {
|
|
23
|
+
// The margin is given up rather than enforced where it does not fit: a
|
|
24
|
+
// viewport narrower than the bubble and its two margins would otherwise
|
|
25
|
+
// produce a lower bound above the upper one and pin it to the wrong edge.
|
|
26
|
+
const room = Math.min(margin, Math.max(0, (viewport.width - launcher.width) / 2));
|
|
27
|
+
const vertical = Math.min(margin, Math.max(0, (viewport.height - launcher.height) / 2));
|
|
28
|
+
return {
|
|
29
|
+
left: Math.max(
|
|
30
|
+
viewport.left + room,
|
|
31
|
+
Math.min(launcher.left, viewport.left + viewport.width - launcher.width - room),
|
|
32
|
+
),
|
|
33
|
+
top: Math.max(
|
|
34
|
+
viewport.top + vertical,
|
|
35
|
+
Math.min(launcher.top, viewport.top + viewport.height - launcher.height - vertical),
|
|
36
|
+
),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EDGE_MARGIN } from "../../constants.js";
|
|
2
|
+
import type { ViewportBox } from "./launcher_placement.js";
|
|
3
|
+
import type { PanelRect } from "./resize_handle.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hold a panel inside the viewport, keeping its size.
|
|
7
|
+
*
|
|
8
|
+
* The near edge is clamped and the far edge follows, so a panel too large for
|
|
9
|
+
* the viewport is held against the near margin and left to the max-width and
|
|
10
|
+
* max-height rules rather than centred by force. The lower bound wins a
|
|
11
|
+
* contradiction for the same reason: `Math.min` first would put an oversized
|
|
12
|
+
* panel off the left edge instead of against the margin it can still honour.
|
|
13
|
+
*/
|
|
14
|
+
export function clampPanel(
|
|
15
|
+
host: PanelRect,
|
|
16
|
+
viewport: ViewportBox,
|
|
17
|
+
margin: number = EDGE_MARGIN,
|
|
18
|
+
): PanelRect {
|
|
19
|
+
const width = host.right - host.left;
|
|
20
|
+
const height = host.bottom - host.top;
|
|
21
|
+
const left = Math.max(
|
|
22
|
+
viewport.left + margin,
|
|
23
|
+
Math.min(host.left, viewport.left + viewport.width - margin - width),
|
|
24
|
+
);
|
|
25
|
+
const top = Math.max(
|
|
26
|
+
viewport.top + margin,
|
|
27
|
+
Math.min(host.top, viewport.top + viewport.height - margin - height),
|
|
28
|
+
);
|
|
29
|
+
return { left, top, right: left + width, bottom: top + height };
|
|
30
|
+
}
|