@aceshooting/lyra-ui 5.0.0 → 5.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/README.md +30 -12
- package/custom-elements.json +2150 -220
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +2 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts.map +1 -1
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js +2 -0
- package/dist/components/agent-tools/activity-feed/activity-feed.class.js.map +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.d.ts +1 -0
- package/dist/components/agent-tools/agent-run/agent-run.class.d.ts.map +1 -1
- package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -0
- package/dist/components/agent-tools/agent-run/agent-run.class.js.map +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts.map +1 -1
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js +2 -0
- package/dist/components/agent-tools/compare-panel/compare-panel.class.js.map +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +5 -0
- package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js +5 -0
- package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.d.ts +3 -0
- package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
- package/dist/components/agent-tools/terminal/terminal.class.js +3 -0
- package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts.map +1 -1
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +2 -0
- package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +2 -0
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +2 -0
- package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +3 -0
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -0
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js.map +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -0
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -0
- package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js.map +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +1 -0
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -0
- package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +2 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts.map +1 -1
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js.map +1 -1
- package/dist/components/charts/chart/chart.class.d.ts +15 -0
- package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
- package/dist/components/charts/chart/chart.class.js +15 -0
- package/dist/components/charts/chart/chart.class.js.map +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +2 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts.map +1 -1
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +2 -0
- package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js.map +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +2 -0
- package/dist/components/conversation/branch-picker/branch-picker.class.d.ts.map +1 -1
- package/dist/components/conversation/branch-picker/branch-picker.class.js +2 -0
- package/dist/components/conversation/branch-picker/branch-picker.class.js.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.d.ts +5 -1
- package/dist/components/conversation/chat-message/chat-message.class.d.ts.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.class.js +5 -1
- package/dist/components/conversation/chat-message/chat-message.class.js.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.styles.d.ts.map +1 -1
- package/dist/components/conversation/chat-message/chat-message.styles.js +15 -2
- package/dist/components/conversation/chat-message/chat-message.styles.js.map +1 -1
- package/dist/components/conversation/code-block/code-block.class.d.ts +4 -0
- package/dist/components/conversation/code-block/code-block.class.d.ts.map +1 -1
- package/dist/components/conversation/code-block/code-block.class.js +4 -0
- package/dist/components/conversation/code-block/code-block.class.js.map +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +2 -0
- package/dist/components/conversation/conversation-item/conversation-item.class.d.ts.map +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.js +2 -0
- package/dist/components/conversation/conversation-item/conversation-item.class.js.map +1 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +2 -0
- package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
- package/dist/components/conversation/markdown/markdown.class.js +2 -0
- package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +2 -0
- package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts.map +1 -1
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js +2 -0
- package/dist/components/conversation/push-to-talk/push-to-talk.class.js.map +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.d.ts +5 -0
- package/dist/components/conversation/stream-status/stream-status.class.d.ts.map +1 -1
- package/dist/components/conversation/stream-status/stream-status.class.js +5 -0
- package/dist/components/conversation/stream-status/stream-status.class.js.map +1 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +2 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts.map +1 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.js +2 -0
- package/dist/components/conversation/streaming-text/streaming-text.class.js.map +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +1 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts.map +1 -1
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -0
- package/dist/components/conversation/transcript-feed/transcript-feed.class.js.map +1 -1
- package/dist/components/data/calendar/calendar.class.d.ts +6 -0
- package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
- package/dist/components/data/calendar/calendar.class.js +6 -0
- package/dist/components/data/calendar/calendar.class.js.map +1 -1
- package/dist/components/data/context-meter/context-meter.class.d.ts +1 -0
- package/dist/components/data/context-meter/context-meter.class.d.ts.map +1 -1
- package/dist/components/data/context-meter/context-meter.class.js +1 -0
- package/dist/components/data/context-meter/context-meter.class.js.map +1 -1
- package/dist/components/data/data-grid/data-grid.class.d.ts +1 -0
- package/dist/components/data/data-grid/data-grid.class.d.ts.map +1 -1
- package/dist/components/data/data-grid/data-grid.class.js +1 -0
- package/dist/components/data/data-grid/data-grid.class.js.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +3 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
- package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +2 -2
- package/dist/components/data/flow-minimap/flow-minimap.class.js +2 -2
- package/dist/components/data/flow-node/flow-node.class.d.ts +1 -1
- package/dist/components/data/flow-node/flow-node.class.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +51 -2
- package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
- package/dist/components/data/heatmap/heatmap.class.js +42 -6
- package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
- package/dist/components/data/heatmap/heatmap.styles.d.ts.map +1 -1
- package/dist/components/data/heatmap/heatmap.styles.js +19 -0
- package/dist/components/data/heatmap/heatmap.styles.js.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +20 -0
- package/dist/components/data/sequence-strip/sequence-strip.class.d.ts.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.class.js +35 -0
- package/dist/components/data/sequence-strip/sequence-strip.class.js.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.styles.d.ts.map +1 -1
- package/dist/components/data/sequence-strip/sequence-strip.styles.js +29 -0
- package/dist/components/data/sequence-strip/sequence-strip.styles.js.map +1 -1
- package/dist/components/data/table/table.class.d.ts +11 -0
- package/dist/components/data/table/table.class.d.ts.map +1 -1
- package/dist/components/data/table/table.class.js +11 -0
- package/dist/components/data/table/table.class.js.map +1 -1
- package/dist/components/data/timeline/timeline-item.class.d.ts +17 -0
- package/dist/components/data/timeline/timeline-item.class.d.ts.map +1 -1
- package/dist/components/data/timeline/timeline-item.class.js +17 -0
- package/dist/components/data/timeline/timeline-item.class.js.map +1 -1
- package/dist/components/data/timeline/timeline.styles.d.ts.map +1 -1
- package/dist/components/data/timeline/timeline.styles.js +6 -3
- package/dist/components/data/timeline/timeline.styles.js.map +1 -1
- package/dist/components/data/tree/tree-node.class.d.ts +3 -0
- package/dist/components/data/tree/tree-node.class.d.ts.map +1 -1
- package/dist/components/data/tree/tree-node.class.js +3 -0
- package/dist/components/data/tree/tree-node.class.js.map +1 -1
- package/dist/components/forms/button/button.class.d.ts +24 -0
- package/dist/components/forms/button/button.class.d.ts.map +1 -1
- package/dist/components/forms/button/button.class.js +24 -0
- package/dist/components/forms/button/button.class.js.map +1 -1
- package/dist/components/forms/code-editor/code-editor.class.d.ts +28 -12
- package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
- package/dist/components/forms/code-editor/code-editor.class.js +44 -14
- package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
- package/dist/components/forms/code-editor/code-editor.styles.d.ts.map +1 -1
- package/dist/components/forms/code-editor/code-editor.styles.js +4 -0
- package/dist/components/forms/code-editor/code-editor.styles.js.map +1 -1
- package/dist/components/forms/combobox/combobox.class.d.ts +10 -0
- package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
- package/dist/components/forms/combobox/combobox.class.js +16 -0
- package/dist/components/forms/combobox/combobox.class.js.map +1 -1
- package/dist/components/forms/combobox/option.class.d.ts +3 -3
- package/dist/components/forms/combobox/option.class.d.ts.map +1 -1
- package/dist/components/forms/combobox/option.class.js +9 -0
- package/dist/components/forms/combobox/option.class.js.map +1 -1
- package/dist/components/forms/date-picker/date-input.class.d.ts +3 -0
- package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
- package/dist/components/forms/date-picker/date-input.class.js +3 -0
- package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +37 -2
- package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.class.js +113 -10
- package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -0
- package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
- package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
- package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
- package/dist/components/forms/icon-button/icon-button.class.js +4 -0
- package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
- package/dist/components/forms/input/input.class.d.ts +11 -3
- package/dist/components/forms/input/input.class.d.ts.map +1 -1
- package/dist/components/forms/input/input.class.js +3 -0
- package/dist/components/forms/input/input.class.js.map +1 -1
- package/dist/components/forms/input/time-input.class.d.ts +12 -0
- package/dist/components/forms/input/time-input.class.d.ts.map +1 -1
- package/dist/components/forms/input/time-input.class.js +27 -0
- package/dist/components/forms/input/time-input.class.js.map +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -0
- package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +7 -0
- package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
- package/dist/components/forms/select/select.class.d.ts +8 -0
- package/dist/components/forms/select/select.class.d.ts.map +1 -1
- package/dist/components/forms/select/select.class.js +8 -0
- package/dist/components/forms/select/select.class.js.map +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +1 -1
- package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
- package/dist/components/forms/switch/switch.class.d.ts +6 -0
- package/dist/components/forms/switch/switch.class.d.ts.map +1 -1
- package/dist/components/forms/switch/switch.class.js +6 -0
- package/dist/components/forms/switch/switch.class.js.map +1 -1
- package/dist/components/forms/token-input/token-input.class.d.ts +2 -0
- package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
- package/dist/components/forms/token-input/token-input.class.js +2 -0
- package/dist/components/forms/token-input/token-input.class.js.map +1 -1
- package/dist/components/layout/app-rail/app-rail.class.d.ts +8 -0
- package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
- package/dist/components/layout/app-rail/app-rail.class.js +8 -0
- package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
- package/dist/components/layout/button-group/button-group.class.d.ts +1 -1
- package/dist/components/layout/button-group/button-group.class.js +1 -1
- package/dist/components/layout/command-palette/command-palette.class.d.ts +12 -0
- package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
- package/dist/components/layout/command-palette/command-palette.class.js +12 -0
- package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
- package/dist/components/layout/control-group/control-group.class.d.ts +1 -1
- package/dist/components/layout/control-group/control-group.class.js +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +7 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +7 -0
- package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts +3 -0
- package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
- package/dist/components/layout/dock-panel/dock-panel.class.js +3 -0
- package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +2 -0
- package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
- package/dist/components/layout/responsive-panel/responsive-panel.class.js +2 -0
- package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
- package/dist/components/layout/scroller/scroller.class.d.ts +2 -2
- package/dist/components/layout/scroller/scroller.class.js +2 -2
- package/dist/components/layout/segmented/segmented.class.d.ts +6 -0
- package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
- package/dist/components/layout/segmented/segmented.class.js +6 -0
- package/dist/components/layout/segmented/segmented.class.js.map +1 -1
- package/dist/components/layout/split/split.class.d.ts +68 -15
- package/dist/components/layout/split/split.class.d.ts.map +1 -1
- package/dist/components/layout/split/split.class.js +80 -21
- package/dist/components/layout/split/split.class.js.map +1 -1
- package/dist/components/layout/stepper/stepper.class.d.ts +52 -11
- package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
- package/dist/components/layout/stepper/stepper.class.js +69 -17
- package/dist/components/layout/stepper/stepper.class.js.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts +3 -0
- package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
- package/dist/components/layout/virtual-list/virtual-list.class.js +3 -0
- package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
- package/dist/components/layout/widget/widget.class.d.ts +6 -0
- package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
- package/dist/components/layout/widget/widget.class.js +6 -0
- package/dist/components/layout/widget/widget.class.js.map +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +13 -0
- package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
- package/dist/components/media/attachment-chip/attachment-chip.class.js +13 -0
- package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
- package/dist/components/media/avatar/avatar.class.d.ts +6 -0
- package/dist/components/media/avatar/avatar.class.d.ts.map +1 -1
- package/dist/components/media/avatar/avatar.class.js +6 -0
- package/dist/components/media/avatar/avatar.class.js.map +1 -1
- package/dist/components/media/media-card/media-card.class.d.ts +2 -0
- package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
- package/dist/components/media/media-card/media-card.class.js +2 -0
- package/dist/components/media/media-card/media-card.class.js.map +1 -1
- package/dist/components/media/playback/playback.class.d.ts +2 -0
- package/dist/components/media/playback/playback.class.d.ts.map +1 -1
- package/dist/components/media/playback/playback.class.js +2 -0
- package/dist/components/media/playback/playback.class.js.map +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -0
- package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js +3 -0
- package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
- package/dist/components/overlays/badge/badge.class.d.ts +6 -0
- package/dist/components/overlays/badge/badge.class.d.ts.map +1 -1
- package/dist/components/overlays/badge/badge.class.js +6 -0
- package/dist/components/overlays/badge/badge.class.js.map +1 -1
- package/dist/components/overlays/callout/callout.class.d.ts +6 -0
- package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
- package/dist/components/overlays/callout/callout.class.js +6 -0
- package/dist/components/overlays/callout/callout.class.js.map +1 -1
- package/dist/components/overlays/chip/chip.class.d.ts +18 -0
- package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
- package/dist/components/overlays/chip/chip.class.js +18 -0
- package/dist/components/overlays/chip/chip.class.js.map +1 -1
- package/dist/components/overlays/dialog/dialog.class.d.ts +6 -0
- package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
- package/dist/components/overlays/dialog/dialog.class.js +6 -0
- package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
- package/dist/components/overlays/drawer/drawer.class.d.ts +6 -0
- package/dist/components/overlays/drawer/drawer.class.d.ts.map +1 -1
- package/dist/components/overlays/drawer/drawer.class.js +6 -0
- package/dist/components/overlays/drawer/drawer.class.js.map +1 -1
- package/dist/components/overlays/progress/progress-ring.class.d.ts +1 -0
- package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
- package/dist/components/overlays/progress/progress-ring.class.js +1 -0
- package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.d.ts +2 -0
- package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
- package/dist/components/overlays/skeleton/skeleton.class.js +2 -0
- package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
- package/dist/components/overlays/spinner/spinner.class.d.ts +4 -0
- package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
- package/dist/components/overlays/spinner/spinner.class.js +4 -0
- package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
- package/dist/components/overlays/toast/toast-item.class.d.ts +11 -0
- package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
- package/dist/components/overlays/toast/toast-item.class.js +11 -0
- package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
- package/dist/components/overlays/toast/toast.class.d.ts +15 -0
- package/dist/components/overlays/toast/toast.class.d.ts.map +1 -1
- package/dist/components/overlays/toast/toast.class.js +15 -0
- package/dist/components/overlays/toast/toast.class.js.map +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +8 -0
- package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts.map +1 -1
- package/dist/components/retrieval/citation-badge/citation-badge.class.js +8 -0
- package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +1 -0
- package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
- package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -0
- package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +2 -0
- package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +1 -0
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -0
- package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
- package/dist/components/utility/diff-view/diff-view.class.d.ts +1 -0
- package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
- package/dist/components/utility/diff-view/diff-view.class.js +1 -0
- package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
- package/dist/components/utility/icon/icon.class.d.ts +1 -0
- package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
- package/dist/components/utility/icon/icon.class.js +1 -0
- package/dist/components/utility/icon/icon.class.js.map +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -0
- package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
- package/dist/components/utility/json-viewer/json-viewer.class.js +3 -0
- package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
- package/dist/components/utility/known-date/known-date.class.d.ts +11 -0
- package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
- package/dist/components/utility/known-date/known-date.class.js +11 -0
- package/dist/components/utility/known-date/known-date.class.js.map +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +2 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +2 -0
- package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +5 -0
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +5 -0
- package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.d.ts +1 -1
- package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.d.ts +3 -0
- package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
- package/dist/components/viewers/document-preview/document-preview.class.js +3 -0
- package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +2 -0
- package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -0
- package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +2 -0
- package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/html-viewer/html-viewer.class.js +2 -0
- package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +41 -9
- package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
- package/dist/internal/css-length.d.ts +40 -0
- package/dist/internal/css-length.d.ts.map +1 -0
- package/dist/internal/css-length.js +72 -0
- package/dist/internal/css-length.js.map +1 -0
- package/dist/internal/orientation-breakpoint.d.ts +12 -0
- package/dist/internal/orientation-breakpoint.d.ts.map +1 -0
- package/dist/internal/orientation-breakpoint.js +127 -0
- package/dist/internal/orientation-breakpoint.js.map +1 -0
- package/dist/lyra.d.ts +2 -2
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js.map +1 -1
- package/llms/components/lr-accordion-item.md +23 -0
- package/llms/components/lr-accordion.md +23 -0
- package/llms/components/lr-activity-feed.md +45 -0
- package/llms/components/lr-agent-run.md +66 -0
- package/llms/components/lr-agent-trace.md +42 -0
- package/llms/components/lr-agent-workspace.md +109 -0
- package/llms/components/lr-animated-image.md +66 -0
- package/llms/components/lr-animation.md +73 -0
- package/llms/components/lr-app-rail-item.md +218 -0
- package/llms/components/lr-app-rail.md +218 -0
- package/llms/components/lr-archive-viewer.md +36 -0
- package/llms/components/lr-artifact-panel.md +60 -0
- package/llms/components/lr-attachment-chip.md +131 -0
- package/llms/components/lr-attachment-trigger.md +90 -0
- package/llms/components/lr-audio-visualizer.md +43 -0
- package/llms/components/lr-av-player.md +50 -0
- package/llms/components/lr-avatar-group.md +69 -0
- package/llms/components/lr-avatar.md +69 -0
- package/llms/components/lr-badge.md +25 -0
- package/llms/components/lr-bar-chart.md +70 -0
- package/llms/components/lr-box-plot.md +67 -0
- package/llms/components/lr-branch-picker.md +32 -0
- package/llms/components/lr-breadcrumb-item.md +30 -0
- package/llms/components/lr-breadcrumb.md +30 -0
- package/llms/components/lr-browser-frame.md +51 -0
- package/llms/components/lr-bubble-chart.md +70 -0
- package/llms/components/lr-button-group.md +30 -0
- package/llms/components/lr-button.md +89 -0
- package/llms/components/lr-calendar-viewer.md +32 -0
- package/llms/components/lr-calendar.md +52 -0
- package/llms/components/lr-callout.md +37 -0
- package/llms/components/lr-card.md +67 -0
- package/llms/components/lr-carousel-item.md +29 -0
- package/llms/components/lr-carousel.md +43 -0
- package/llms/components/lr-chart.md +148 -0
- package/llms/components/lr-chat-composer.md +139 -0
- package/llms/components/lr-chat-message.md +145 -0
- package/llms/components/lr-chat-viewport.md +70 -0
- package/llms/components/lr-checkbox-group.md +21 -0
- package/llms/components/lr-checkbox.md +79 -0
- package/llms/components/lr-checkpoint.md +48 -0
- package/llms/components/lr-chip-group.md +152 -0
- package/llms/components/lr-chip.md +152 -0
- package/llms/components/lr-chunk-inspector.md +66 -0
- package/llms/components/lr-citation-badge.md +102 -0
- package/llms/components/lr-code-block-core.md +113 -0
- package/llms/components/lr-code-block.md +146 -0
- package/llms/components/lr-code-editor.md +72 -0
- package/llms/components/lr-color-picker.md +21 -0
- package/llms/components/lr-combobox.md +196 -0
- package/llms/components/lr-command-palette.md +50 -0
- package/llms/components/lr-commit-card.md +33 -0
- package/llms/components/lr-community-card.md +54 -0
- package/llms/components/lr-compare-panel.md +38 -0
- package/llms/components/lr-confirm-bar.md +48 -0
- package/llms/components/lr-contact-viewer.md +34 -0
- package/llms/components/lr-context-inspector.md +50 -0
- package/llms/components/lr-context-meter.md +92 -0
- package/llms/components/lr-control-group.md +46 -0
- package/llms/components/lr-conversation-item.md +118 -0
- package/llms/components/lr-copy-button.md +52 -0
- package/llms/components/lr-csv-viewer.md +49 -0
- package/llms/components/lr-dashboard-grid.md +34 -0
- package/llms/components/lr-data-grid.md +47 -0
- package/llms/components/lr-dataset-viewer.md +60 -0
- package/llms/components/lr-date-input.md +201 -0
- package/llms/components/lr-date-picker.md +201 -0
- package/llms/components/lr-details.md +23 -0
- package/llms/components/lr-dialog.md +185 -0
- package/llms/components/lr-diff-view.md +86 -0
- package/llms/components/lr-divider.md +28 -0
- package/llms/components/lr-dock-panel.md +110 -0
- package/llms/components/lr-document-compare.md +22 -0
- package/llms/components/lr-document-library.md +21 -0
- package/llms/components/lr-document-preview.md +179 -0
- package/llms/components/lr-document-viewer.md +84 -0
- package/llms/components/lr-docx-viewer.md +63 -0
- package/llms/components/lr-doughnut-chart.md +70 -0
- package/llms/components/lr-drawer.md +48 -0
- package/llms/components/lr-drilldown-panel.md +25 -0
- package/llms/components/lr-dropdown-item.md +171 -0
- package/llms/components/lr-dropdown.md +24 -0
- package/llms/components/lr-ebook-viewer.md +60 -0
- package/llms/components/lr-email-viewer.md +51 -0
- package/llms/components/lr-emoji-picker.md +71 -0
- package/llms/components/lr-empty.md +56 -0
- package/llms/components/lr-entity-card.md +64 -0
- package/llms/components/lr-entity-chip.md +50 -0
- package/llms/components/lr-entity-dossier.md +71 -0
- package/llms/components/lr-env-list.md +27 -0
- package/llms/components/lr-eval-dataset.md +45 -0
- package/llms/components/lr-eval-result.md +45 -0
- package/llms/components/lr-evaluation-run.md +50 -0
- package/llms/components/lr-export-button.md +104 -0
- package/llms/components/lr-file-icon.md +34 -0
- package/llms/components/lr-file-input.md +104 -0
- package/llms/components/lr-file-tree.md +29 -0
- package/llms/components/lr-filter-bar.md +20 -0
- package/llms/components/lr-flag.md +122 -0
- package/llms/components/lr-flow-canvas.md +112 -0
- package/llms/components/lr-flow-controls.md +47 -0
- package/llms/components/lr-flow-minimap.md +52 -0
- package/llms/components/lr-flow-node.md +56 -0
- package/llms/components/lr-flow-run-overlay.md +56 -0
- package/llms/components/lr-format-bytes.md +31 -0
- package/llms/components/lr-format-date.md +33 -0
- package/llms/components/lr-format-number.md +41 -0
- package/llms/components/lr-gauge.md +65 -0
- package/llms/components/lr-generation-status.md +105 -0
- package/llms/components/lr-geojson-view.md +43 -0
- package/llms/components/lr-graph-legend.md +64 -0
- package/llms/components/lr-graph-query-builder.md +27 -0
- package/llms/components/lr-graph.md +224 -0
- package/llms/components/lr-grounding-summary.md +57 -0
- package/llms/components/lr-handoff-divider.md +27 -0
- package/llms/components/lr-heatmap.md +232 -0
- package/llms/components/lr-highlight-layer.md +31 -0
- package/llms/components/lr-histogram.md +69 -0
- package/llms/components/lr-html-viewer.md +30 -0
- package/llms/components/lr-icon-button.md +39 -0
- package/llms/components/lr-icon.md +36 -0
- package/llms/components/lr-image-comparer.md +38 -0
- package/llms/components/lr-image-viewer.md +35 -0
- package/llms/components/lr-include.md +53 -0
- package/llms/components/lr-ingestion-queue.md +60 -0
- package/llms/components/lr-input.md +82 -0
- package/llms/components/lr-intersection-observer.md +25 -0
- package/llms/components/lr-json-viewer.md +98 -0
- package/llms/components/lr-kbd.md +74 -0
- package/llms/components/lr-knowledge-base.md +64 -0
- package/llms/components/lr-knowledge-graph-explorer.md +92 -0
- package/llms/components/lr-known-date.md +84 -0
- package/llms/components/lr-lightbox.md +79 -0
- package/llms/components/lr-line-chart.md +70 -0
- package/llms/components/lr-lite-chart.md +143 -0
- package/llms/components/lr-live-region.md +105 -0
- package/llms/components/lr-map.md +127 -0
- package/llms/components/lr-markdown-core.md +70 -0
- package/llms/components/lr-markdown.md +171 -0
- package/llms/components/lr-media-card.md +106 -0
- package/llms/components/lr-memory-panel.md +67 -0
- package/llms/components/lr-mention-popover.md +139 -0
- package/llms/components/lr-menu-item.md +171 -0
- package/llms/components/lr-menu.md +171 -0
- package/llms/components/lr-message-actions.md +48 -0
- package/llms/components/lr-message-feedback.md +37 -0
- package/llms/components/lr-mind-map.md +64 -0
- package/llms/components/lr-model-select.md +144 -0
- package/llms/components/lr-model-settings-panel.md +99 -0
- package/llms/components/lr-mutation-observer.md +27 -0
- package/llms/components/lr-neighbor-list.md +56 -0
- package/llms/components/lr-node-palette.md +67 -0
- package/llms/components/lr-notebook-viewer.md +65 -0
- package/llms/components/lr-number-input.md +44 -0
- package/llms/components/lr-option.md +196 -0
- package/llms/components/lr-page-rail.md +37 -0
- package/llms/components/lr-pagination.md +88 -0
- package/llms/components/lr-path-strip.md +55 -0
- package/llms/components/lr-pdf-viewer.md +78 -0
- package/llms/components/lr-phone-input.md +162 -0
- package/llms/components/lr-pie-chart.md +70 -0
- package/llms/components/lr-playback.md +74 -0
- package/llms/components/lr-polar-area-chart.md +70 -0
- package/llms/components/lr-policy-summary.md +33 -0
- package/llms/components/lr-poll-status.md +71 -0
- package/llms/components/lr-popover.md +31 -0
- package/llms/components/lr-pptx-viewer.md +35 -0
- package/llms/components/lr-progress-bar.md +22 -0
- package/llms/components/lr-progress-ring.md +26 -0
- package/llms/components/lr-provenance-panel.md +58 -0
- package/llms/components/lr-push-to-talk.md +50 -0
- package/llms/components/lr-qr-code.md +20 -0
- package/llms/components/lr-query-builder.md +21 -0
- package/llms/components/lr-radar-chart.md +70 -0
- package/llms/components/lr-radio-group.md +25 -0
- package/llms/components/lr-radio.md +31 -0
- package/llms/components/lr-random-content.md +62 -0
- package/llms/components/lr-rating.md +21 -0
- package/llms/components/lr-relative-time.md +31 -0
- package/llms/components/lr-resize-observer.md +25 -0
- package/llms/components/lr-responsive-panel.md +112 -0
- package/llms/components/lr-result-card.md +88 -0
- package/llms/components/lr-result-field.md +88 -0
- package/llms/components/lr-retrieval-results.md +84 -0
- package/llms/components/lr-retrieval-search.md +70 -0
- package/llms/components/lr-retrieval-trace.md +59 -0
- package/llms/components/lr-rubric-form.md +37 -0
- package/llms/components/lr-scatter-chart.md +70 -0
- package/llms/components/lr-scroller.md +47 -0
- package/llms/components/lr-segmented.md +74 -0
- package/llms/components/lr-select.md +113 -0
- package/llms/components/lr-sequence-strip.md +95 -0
- package/llms/components/lr-skeleton.md +53 -0
- package/llms/components/lr-slider.md +92 -0
- package/llms/components/lr-source-card.md +131 -0
- package/llms/components/lr-source-list.md +131 -0
- package/llms/components/lr-source-picker.md +63 -0
- package/llms/components/lr-span-waterfall.md +42 -0
- package/llms/components/lr-sparkline.md +60 -0
- package/llms/components/lr-spinner.md +32 -0
- package/llms/components/lr-split.md +191 -0
- package/llms/components/lr-spreadsheet-viewer.md +47 -0
- package/llms/components/lr-stack-trace.md +77 -0
- package/llms/components/lr-stat.md +89 -0
- package/llms/components/lr-stepper.md +118 -0
- package/llms/components/lr-stream-status.md +128 -0
- package/llms/components/lr-streaming-text.md +101 -0
- package/llms/components/lr-suggestion-chips.md +40 -0
- package/llms/components/lr-svg-viewer.md +47 -0
- package/llms/components/lr-swatch-picker.md +91 -0
- package/llms/components/lr-switch.md +82 -0
- package/llms/components/lr-table.md +201 -0
- package/llms/components/lr-tabs.md +80 -0
- package/llms/components/lr-tag.md +25 -0
- package/llms/components/lr-task-list.md +42 -0
- package/llms/components/lr-terminal.md +44 -0
- package/llms/components/lr-test-results.md +38 -0
- package/llms/components/lr-textarea.md +111 -0
- package/llms/components/lr-thinking-panel.md +93 -0
- package/llms/components/lr-thread-list.md +97 -0
- package/llms/components/lr-time-input.md +53 -0
- package/llms/components/lr-time-range.md +91 -0
- package/llms/components/lr-timeline-item.md +65 -0
- package/llms/components/lr-timeline.md +65 -0
- package/llms/components/lr-toast-item.md +123 -0
- package/llms/components/lr-toast.md +123 -0
- package/llms/components/lr-token-input.md +31 -0
- package/llms/components/lr-tool-approval-dialog.md +131 -0
- package/llms/components/lr-tool-call-chip.md +101 -0
- package/llms/components/lr-tool-param-form.md +148 -0
- package/llms/components/lr-tool-result-dialog.md +106 -0
- package/llms/components/lr-tool-result-view.md +162 -0
- package/llms/components/lr-tool-select-dialog.md +124 -0
- package/llms/components/lr-tool-timeline.md +56 -0
- package/llms/components/lr-tooltip.md +47 -0
- package/llms/components/lr-tour.md +100 -0
- package/llms/components/lr-trace-tree.md +35 -0
- package/llms/components/lr-transcript-feed.md +45 -0
- package/llms/components/lr-tree-node.md +133 -0
- package/llms/components/lr-tree.md +133 -0
- package/llms/components/lr-typing-indicator.md +80 -0
- package/llms/components/lr-usage-badge.md +44 -0
- package/llms/components/lr-virtual-list.md +145 -0
- package/llms/components/lr-voice-picker.md +78 -0
- package/llms/components/lr-widget-renderer.md +78 -0
- package/llms/components/lr-widget.md +104 -0
- package/llms/components/lr-word-cloud.md +112 -0
- package/llms/components/lr-xml-viewer.md +58 -0
- package/llms/components/lr-zoomable-frame.md +57 -0
- package/llms/index.md +301 -0
- package/llms/migration.md +86 -0
- package/llms/peers.md +41 -0
- package/llms/shared.md +321 -0
- package/llms/tokens.md +533 -0
- package/llms-full.txt +10731 -8563
- package/llms.txt +64 -121
- package/package.json +14 -2
- package/vscode-css-data.json +1424 -185
- package/vscode-html-data.json +128 -107
- package/web-types.json +853 -118
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-tool-param-form`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/agent-tools/tool-param-form/tool-param-form.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraToolParamForm`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/tool-param-form/tool-param-form.class.js`
|
|
7
|
+
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-tool-param-form`
|
|
14
|
+
|
|
15
|
+
Renders one form control per top-level property of a JSON Schema object, for ad hoc tool invocation or
|
|
16
|
+
approval-editing UIs (e.g. "the agent wants to call `create_event(title, attendees, allDay)` — let the
|
|
17
|
+
user tweak the arguments before running it"). First-party invention (no Web Awesome equivalent).
|
|
18
|
+
|
|
19
|
+
**Supported schema subset:** a *flat* object whose properties use one primitive `type`
|
|
20
|
+
(`'string'`, `'number'`, `'integer'`, or `'boolean'`), `required` property presence, string `enum`,
|
|
21
|
+
primitive `const`, and the `title`/`description`/`default` annotations. Nested objects, arrays, type
|
|
22
|
+
unions, `oneOf`/`anyOf`/`allOf`, `$ref`, string/numeric constraints, and schema-valued
|
|
23
|
+
`additionalProperties` are not interpreted. An unsupported property type renders a visible fallback
|
|
24
|
+
and makes the form invalid instead of being silently accepted.
|
|
25
|
+
|
|
26
|
+
**Exported types:**
|
|
27
|
+
- `ToolParamFormPropertyType = 'string' | 'number' | 'integer' | 'boolean'` — the four leaf property
|
|
28
|
+
types this renderer understands
|
|
29
|
+
- `ToolParamFormPrimitive = string | number | boolean` — values accepted by the supported `const`
|
|
30
|
+
- `ToolParamFormProperty { type: ToolParamFormPropertyType; enum?: string[]; description?: string;
|
|
31
|
+
title?: string; default?: unknown; const?: ToolParamFormPrimitive }` — one `schema.properties`
|
|
32
|
+
entry. `enum` is only meaningful when `type` is `'string'` (rendered as a `<lr-select>`); `const`
|
|
33
|
+
enforces one exact primitive value; `title` is the display label; `description` is helper text;
|
|
34
|
+
`default` pre-fills a field whenever `value` doesn't already have that key.
|
|
35
|
+
- `ToolParamFormSchema { type: 'object'; properties: Record<string, ToolParamFormProperty>; required?:
|
|
36
|
+
string[] }` — the (intentionally flat) schema shape this component can render.
|
|
37
|
+
|
|
38
|
+
**Properties:**
|
|
39
|
+
- `schema: ToolParamFormSchema = { type: 'object', properties: {} }` (attribute: false)
|
|
40
|
+
- `value: Record<string, unknown> = {}` (attribute: false) — exactly what the consumer last set it to.
|
|
41
|
+
A field with no entry in `value` but a schema `default` *displays* (and is *emitted*, via
|
|
42
|
+
`lr-input`) as that default, but the `value` property itself is left alone until the user actually
|
|
43
|
+
edits that field. JSON Schema ordinarily treats `default` as an annotation; this renderer
|
|
44
|
+
deliberately materializes it before validation/submission, so a valid default can satisfy
|
|
45
|
+
`required`.
|
|
46
|
+
- `name: string = ''` — submission key for optional native `<form>` participation
|
|
47
|
+
- `disabled: boolean = false` (reflected)
|
|
48
|
+
|
|
49
|
+
**Getters:**
|
|
50
|
+
- `effectiveValue: Record<string, unknown>` — `value` with every property missing from it filled in
|
|
51
|
+
from `schema`'s own `default`; this is what actually renders and what `lr-input`'s detail carries.
|
|
52
|
+
A key the user has explicitly cleared (a real own property set to `undefined`) stays cleared rather
|
|
53
|
+
than snapping back to its default — only a key genuinely absent from `value` falls back.
|
|
54
|
+
- `errors: Record<string, string>` — the current per-field validation errors (`{ [propertyKey]:
|
|
55
|
+
message }`) for required presence, primitive type, finite number/integer, enum, const, and
|
|
56
|
+
unsupported type; independent of which fields have been visited.
|
|
57
|
+
- `formError: string` — a schema-wide/JSON-serialization error that has no honest field key; empty
|
|
58
|
+
when the current effective value is safe to submit.
|
|
59
|
+
|
|
60
|
+
**Methods:**
|
|
61
|
+
- `checkValidity(): boolean` — synchronously re-snapshots even an in-place-mutated value/schema,
|
|
62
|
+
updates `ElementInternals`, and returns validity without revealing inline errors.
|
|
63
|
+
- `reportValidity(): boolean` — performs the same resynchronization, reveals all current field/root
|
|
64
|
+
errors, focuses the first invalid generated field when one exists, and delegates to native
|
|
65
|
+
`ElementInternals.reportValidity()`.
|
|
66
|
+
|
|
67
|
+
**Events:** `lr-input` (`detail: { value: Record<string, unknown> }` — the full current value
|
|
68
|
+
object, every property with defaults resolved, not just the field that changed), `lr-validity-change`
|
|
69
|
+
(`detail: { valid: boolean; errors: Record<string, string> }` — fired whenever overall validity or
|
|
70
|
+
the field-error set changes, including once up front at connect time; serialization-only failures
|
|
71
|
+
set `valid: false` while `formError`, rather than a fabricated field key, carries the root message)
|
|
72
|
+
|
|
73
|
+
**Slots:** none.
|
|
74
|
+
|
|
75
|
+
**CSS parts:** `base`, `field`, `label`, `description`, `error`, `unsupported`, `empty`
|
|
76
|
+
|
|
77
|
+
**Themeable custom properties:** no component-specific custom properties; shared tokens only —
|
|
78
|
+
`--lr-space-l/-xs/-s`, `--lr-color-border`, `--lr-radius`, `--lr-color-surface`,
|
|
79
|
+
`--lr-color-danger`, `--lr-color-text-quiet`, `--lr-focus-ring-width/-color/-offset`,
|
|
80
|
+
`--lr-opacity-disabled`.
|
|
81
|
+
|
|
82
|
+
**Optional peer deps:** none — internally renders `<lr-select>`, `<lr-option>`, and
|
|
83
|
+
`<lr-checkbox>`, all bundled dependencies of this package imported directly, not optional peers.
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<lr-tool-param-form
|
|
87
|
+
.schema=${{
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
title: { type: 'string', title: 'Title' },
|
|
91
|
+
attendees: { type: 'string', enum: ['team', 'everyone'], default: 'team' },
|
|
92
|
+
allDay: { type: 'boolean', title: 'All day' },
|
|
93
|
+
},
|
|
94
|
+
required: ['title'],
|
|
95
|
+
}}
|
|
96
|
+
.value=${draftArgs}
|
|
97
|
+
@lr-input=${(e) => (draftArgs = e.detail.value)}
|
|
98
|
+
@lr-validity-change=${(e) => (formIsValid = e.detail.valid)}
|
|
99
|
+
></lr-tool-param-form>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
This component owns no Submit/Cancel/Approve chrome — a consumer composes it inside their own dialog
|
|
103
|
+
(e.g. `<lr-tool-approval-dialog>`) and reads `.value`/`.errors`/`checkValidity()` (or calls
|
|
104
|
+
`reportValidity()` right before acting). Fields render in `Object.keys(schema.properties)` order
|
|
105
|
+
(insertion order). A `'string'` property with a non-empty `enum` renders as a `<lr-select>` of
|
|
106
|
+
`<lr-option>`s; a plain `'string'` renders a text `<input>`; `'number'`/`'integer'` render a numeric
|
|
107
|
+
`<input type="number">` (`step="1"` for integer, `step="any"` for number); `'boolean'` renders a
|
|
108
|
+
`<lr-checkbox>` with the field's label projected into its default slot — real slotted content, since
|
|
109
|
+
that's `<lr-checkbox>`'s documented way to give itself an accessible name, unlike `aria-describedby`
|
|
110
|
+
(neither `<lr-select>` nor `<lr-checkbox>` forward a host-level `aria-describedby` to their
|
|
111
|
+
internal focusable element, so for the enum-select case the error message is folded into `aria-label`
|
|
112
|
+
instead, alongside the always-visible adjacent `[part="description"]` text). The outer component owns
|
|
113
|
+
schema validity rather than forwarding HTML `required` constraints: JSON Schema `required` means an
|
|
114
|
+
own property is present, so `''`, `0`, and `false` are valid present values. Use
|
|
115
|
+
`{ type: 'boolean', const: true }` together with `required` for a must-confirm checkbox.
|
|
116
|
+
|
|
117
|
+
Optional native `<form>` participation is implemented via `ElementInternals` attached directly in the
|
|
118
|
+
constructor (`static formAssociated = true`) rather than a string-value mixin, since this component's
|
|
119
|
+
value is a whole object: `formResetCallback()` clears `value`/touched state back to `{}`, and
|
|
120
|
+
`formDisabledCallback(disabled)` tracks inherited fieldset state separately from the author-owned
|
|
121
|
+
`disabled` property. JSON serialization is guarded: circular values, `BigInt`, throwing getters/`toJSON`, and
|
|
122
|
+
non-finite numbers cannot escape from an assignment or leave stale form data; the form entry is
|
|
123
|
+
temporarily removed and `formError`/custom validity are set until a serializable value replaces it.
|
|
124
|
+
This is layered on top of the primary `value` + `lr-input`/`lr-validity-change` contract.
|
|
125
|
+
The same safe serialized object is used as session-history/autofill state. Restoration accepts only
|
|
126
|
+
a JSON object, falls back to `{}` for malformed/non-object state, and does not emit `lr-input`.
|
|
127
|
+
|
|
128
|
+
**Known gotchas:**
|
|
129
|
+
- a schema property whose `type` isn't `'string'`/`'number'`/`'integer'`/`'boolean'` renders an inline
|
|
130
|
+
"Unsupported field type" message (a plain `.unsupported`-classed element, not one of the documented
|
|
131
|
+
CSS parts) and fails closed with custom validity instead of throwing or being silently dropped.
|
|
132
|
+
- inline per-field errors only render once a field has been visited (`focusout`) at least once, or
|
|
133
|
+
after an explicit `reportValidity()` call — `checkValidity()` alone never reveals them, matching
|
|
134
|
+
every other form control in this library (`<lr-select>`/`<lr-combobox>`/`<lr-model-select>`
|
|
135
|
+
all avoid flashing red before the user has touched anything).
|
|
136
|
+
- `effectiveValue` distinguishes "key absent from `value`" (falls back to `default`) from "key present
|
|
137
|
+
but `undefined`" (stays cleared and counts as absent for `required`) via `hasOwnProperty`, not an
|
|
138
|
+
`=== undefined` fallback check.
|
|
139
|
+
- additional value keys are retained and submitted (matching JSON Schema's default open-object
|
|
140
|
+
behavior), but schema-valued/false `additionalProperties` is outside this renderer's subset.
|
|
141
|
+
- reassign `value`/`schema` after changing them. Direct in-place mutation is resnapshotted by the
|
|
142
|
+
component's own `checkValidity()`/`reportValidity()`, but native `form.checkValidity()` and
|
|
143
|
+
submission use the last synchronized snapshot because the browser cannot observe arbitrary object
|
|
144
|
+
mutation.
|
|
145
|
+
- `lr-validity-change` fires once immediately at connect time even before any user interaction, so a
|
|
146
|
+
form with an unmet required field announces `valid: false` on mount, not only after the first edit.
|
|
147
|
+
|
|
148
|
+
---
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-tool-result-dialog`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/agent-tools/tool-result-dialog/tool-result-dialog.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraToolResultDialog`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js`
|
|
7
|
+
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-tool-result-dialog`
|
|
14
|
+
|
|
15
|
+
A full tool-call detail overlay: a status/duration header plus a `body` slot where a consumer
|
|
16
|
+
typically places a `<lr-tabs>` with Input/Preview/JSON/Raw panels. First-party invention (no Web
|
|
17
|
+
Awesome equivalent). This component knows nothing about what's inside that slot — it only supplies
|
|
18
|
+
the modal chrome around it. It keeps its own shadow template rather than nesting a `<lr-dialog>`,
|
|
19
|
+
so slot-forwarding does not put a forwarding `<slot>` where a slotted `<lr-tabs>`'s own light-DOM
|
|
20
|
+
child scan expects real projected content, while its modal behavior participates in the shared
|
|
21
|
+
overlay stack.
|
|
22
|
+
|
|
23
|
+
**Properties:**
|
|
24
|
+
- `open: boolean = false` (reflected) — whether the dialog is open; set this (or call `close()`) —
|
|
25
|
+
there is no separate `show()`/`hide()` pair
|
|
26
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — directly names the internal
|
|
27
|
+
dialog panel; otherwise the tool-name title supplies `aria-labelledby`
|
|
28
|
+
- `toolName: string = ''` (attribute `tool-name`) — the tool's name, rendered prominently in the
|
|
29
|
+
header
|
|
30
|
+
- `status: 'pending'|'running'|'success'|'error'|'denied' = 'pending'` (reflected) — drives the
|
|
31
|
+
header's status badge; same status vocabulary as `<lr-tool-call-chip>`
|
|
32
|
+
- `durationMs?: number` (attribute `duration-ms`) — how long the call took, in milliseconds; omitted
|
|
33
|
+
from the header entirely when unset
|
|
34
|
+
- `maximized: boolean = false` (reflected) — near-fullscreen presentation of the same open dialog
|
|
35
|
+
|
|
36
|
+
**Methods:** `close(reason: ToolResultDialogCloseReason = 'api'): void` — closes the dialog (no-op if
|
|
37
|
+
already closed), emits `lr-close` with `reason`, and returns focus to whatever had it before
|
|
38
|
+
the dialog opened. Built-in triggers call this with `'escape'`/`'backdrop'`/`'close-button'`; a
|
|
39
|
+
consumer's own close affordance (e.g. a footer action button) should call it directly with its own
|
|
40
|
+
reason string so every dismissal path funnels through the same event.
|
|
41
|
+
|
|
42
|
+
**Events:** `lr-close` (`detail: ToolResultDialogCloseReason` — `'escape'|'backdrop'|
|
|
43
|
+
'close-button'|'api'|string`) fired exactly once per dismissal; `lr-maximize-change` (`detail:
|
|
44
|
+
boolean`, the new `maximized` state) fired when the header's maximize/restore toggle is clicked.
|
|
45
|
+
|
|
46
|
+
**Slots:** `body` (the dialog's main content — typically a `<lr-tabs>` with Input/Preview/JSON/Raw
|
|
47
|
+
panels, entirely consumer-assembled), `footer` (optional action buttons, rendered in a bottom row —
|
|
48
|
+
the footer row itself is hidden via `[hidden]` when nothing is slotted)
|
|
49
|
+
|
|
50
|
+
**CSS parts:** `backdrop`, `panel` (`role="dialog"` while open), `header`, `title` (wrapper around
|
|
51
|
+
tool name/status/duration), `tool-name`, `status`, `duration`, `header-actions`, `maximize-button`,
|
|
52
|
+
`close-button`, `body`, `footer`
|
|
53
|
+
|
|
54
|
+
**Themeable custom properties:** `--lr-tool-result-dialog-overlay-color` (default `rgb(0 0 0 /
|
|
55
|
+
0.5)` — the backdrop scrim color; component-specific since no shared overlay token exists),
|
|
56
|
+
`--lr-tool-result-dialog-maximized-inset` (default `var(--lr-space-l)` — inset applied to the
|
|
57
|
+
panel while `[maximized]`, overridable e.g. to leave a persistent app rail visible), and
|
|
58
|
+
`--lr-tool-result-dialog-spin` (default `1s linear`, stopped under reduced motion), plus shared
|
|
59
|
+
tokens `--lr-color-surface/-border/-text-quiet/-brand/-brand-quiet/-success/-success-quiet/
|
|
60
|
+
-danger/-danger-quiet/-warning/-warning-quiet`, `--lr-space-*`, `--lr-radius`, `--lr-shadow`,
|
|
61
|
+
`--lr-icon-button-size`, `--lr-focus-ring-*`, `--lr-transition-base`.
|
|
62
|
+
|
|
63
|
+
**Optional peer deps:** none.
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<lr-tool-result-dialog
|
|
67
|
+
tool-name="run_query"
|
|
68
|
+
status="success"
|
|
69
|
+
duration-ms="1240"
|
|
70
|
+
?open=${dialogOpen}
|
|
71
|
+
@lr-close=${(e) => (dialogOpen = false)}
|
|
72
|
+
@lr-maximize-change=${(e) => console.log('maximized:', e.detail)}
|
|
73
|
+
>
|
|
74
|
+
<lr-tabs slot="body">
|
|
75
|
+
<div slot="preview" label="Preview">…</div>
|
|
76
|
+
<div slot="json" label="JSON"><lr-json-viewer .data=${result}></lr-json-viewer></div>
|
|
77
|
+
</lr-tabs>
|
|
78
|
+
<button slot="footer">Rerun</button>
|
|
79
|
+
</lr-tool-result-dialog>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
While open, `[part="panel"]` takes `role="dialog"` + `aria-modal="true"` with `aria-labelledby`
|
|
83
|
+
pointing at the tool-name element, document scroll is locked, and Tab/Shift+Tab are bounded to the
|
|
84
|
+
panel's own focusable content in header-buttons → `body` slot → `footer` slot order (resolved
|
|
85
|
+
shadow-piercingly, so a slotted custom element's real focusable target inside its own shadow root is
|
|
86
|
+
found too). On open, focus moves to the first focusable element (falling back to the panel itself);
|
|
87
|
+
on close, focus returns to whatever element triggered the open (captured at open time via the active
|
|
88
|
+
element, since the trigger typically lives entirely outside this component). `maximized` toggles
|
|
89
|
+
between the constrained modal size and a near-fullscreen size within the same open dialog and
|
|
90
|
+
open/close lifecycle — unlike `<lr-widget>`'s fullscreen mode there's no separate non-modal resting
|
|
91
|
+
state, so no additional scroll-lock/focus-trap bookkeeping is needed for that transition alone.
|
|
92
|
+
|
|
93
|
+
**Known gotchas:**
|
|
94
|
+
- a reconnect that preserves the same element instance (e.g. a drag-and-drop reparent) resumes its
|
|
95
|
+
shared overlay registration and re-acquires the scroll lock if `open` was still `true` across the
|
|
96
|
+
move — `disconnectedCallback`/`connectedCallback` fire back-to-back with no intervening update, so
|
|
97
|
+
`willUpdate` never reruns to notice `open` did not change
|
|
98
|
+
- this component deliberately does **not** compose `<lr-dialog>` internally; it keeps its own
|
|
99
|
+
panel template so a slotted `<lr-tabs>` (or any other light-DOM-scanning child) sees real
|
|
100
|
+
projected content rather than a forwarding `<slot>`, while still sharing the overlay stack
|
|
101
|
+
- `close()` is a no-op when `open` is already `false` — calling it twice in a row only fires
|
|
102
|
+
`lr-close` once
|
|
103
|
+
- the `maximize`/`close` buttons are always the first elements in the Tab order while open,
|
|
104
|
+
regardless of visual position, followed by `body` then `footer` content
|
|
105
|
+
|
|
106
|
+
---
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-tool-result-view`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/agent-tools/tool-result-view/tool-result-view.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraToolResultView`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/tool-result-view/tool-result-view.class.js`
|
|
7
|
+
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-tool-result-view`
|
|
14
|
+
|
|
15
|
+
Renders a tool call's result via whichever custom renderer a host app has registered for it,
|
|
16
|
+
falling back to `<lr-json-viewer>` whenever no renderer matches, a candidate renderer's
|
|
17
|
+
`matches()` predicate throws during dispatch, a renderer's optional `load()` rejects, or its
|
|
18
|
+
`render()` throws. First-party invention (no Web Awesome equivalent). This component
|
|
19
|
+
owns none of the actual visual weight of a populated tool result — that's entirely whatever the
|
|
20
|
+
registered renderer returns; `<lr-tool-result-view>` is just the dispatch + fallback + loading-state
|
|
21
|
+
shell around it.
|
|
22
|
+
|
|
23
|
+
**Properties:**
|
|
24
|
+
- `registry?: ToolRendererRegistry` (property only, no attribute) — a custom `Map<string,
|
|
25
|
+
ToolRendererDefinition>` to dispatch against instead of the module-level default registry (see
|
|
26
|
+
`registry.ts` below)
|
|
27
|
+
- `toolName: string = ''` (attribute `tool-name`) — the tool's name; the primary dispatch key
|
|
28
|
+
- `result: unknown` (property only, no attribute) — the tool call's result payload, handed to the
|
|
29
|
+
matched renderer's `render()` (and to `matches()` for shape-based dispatch, and to the
|
|
30
|
+
`<lr-json-viewer>` fallback)
|
|
31
|
+
- `args: unknown` (property only, no attribute) — the tool call's original arguments, if available,
|
|
32
|
+
handed to the matched renderer's `render()` alongside `result`
|
|
33
|
+
- `fallback: string = 'json'` (reflected) — fallback-kind selector. `"json"` (the default) is
|
|
34
|
+
an unconditional `<lr-json-viewer>`. `"text"` renders a *string* `result` as preformatted text
|
|
35
|
+
instead — falling back to the `"json"` behavior when `result` isn't a string, so setting
|
|
36
|
+
`fallback="text"` defensively against an unpredictable result shape never renders broken output.
|
|
37
|
+
Any other value also uses the `"json"` behavior, forward-compatible plumbing only.
|
|
38
|
+
- `copyable: boolean = false` (reflected) — shows a copy-to-clipboard affordance alongside the
|
|
39
|
+
fallback view, for either `fallback` kind: forwarded to `<lr-json-viewer>`'s own `copyable` for
|
|
40
|
+
`"json"`, or a `<lr-copy-button>` rendered next to the text for `"text"`.
|
|
41
|
+
|
|
42
|
+
**Events:** `lr-render-error` (`detail: { toolName: string; error: unknown }`) — fired immediately
|
|
43
|
+
before falling back to `<lr-json-viewer>`, whether because no renderer matched, a candidate
|
|
44
|
+
renderer's `matches()` predicate threw during dispatch, a renderer's `load()` rejected, or its
|
|
45
|
+
`render()` threw.
|
|
46
|
+
|
|
47
|
+
**Slots:** none.
|
|
48
|
+
|
|
49
|
+
**CSS parts:** `base` — the root wrapper around the resolved renderer's output (or the loading/
|
|
50
|
+
fallback view). `fallback-text` — the `<pre>` element for the `fallback="text"` kind's preformatted
|
|
51
|
+
result text (only present in that mode). `fallback-copy` — the `<lr-copy-button>` shown when
|
|
52
|
+
`copyable` is set alongside the `fallback="text"` kind (only present when both are set).
|
|
53
|
+
|
|
54
|
+
**Themeable custom properties:** `--lr-tool-result-view-font` (default `ui-monospace,
|
|
55
|
+
SFMono-Regular, Menlo, Consolas, monospace` — component-specific since no shared monospace token
|
|
56
|
+
exists, matching `<lr-json-viewer>`'s own `--lr-json-viewer-font` convention) — only used by the
|
|
57
|
+
`fallback="text"` kind's `[part='fallback-text']`. Otherwise none — the component's own styling is
|
|
58
|
+
deliberately minimal; all visible styling comes from whatever renderer/`<lr-skeleton>`/
|
|
59
|
+
`<lr-json-viewer>`/`<lr-copy-button>` child is currently mounted.
|
|
60
|
+
|
|
61
|
+
**Optional peer deps:** none required by the component itself — individual registered renderers may
|
|
62
|
+
of course pull in whatever they need (a charting library, a markdown renderer), which is exactly what
|
|
63
|
+
the lazy `load()` path in the registry exists for.
|
|
64
|
+
|
|
65
|
+
```html
|
|
66
|
+
<lr-tool-result-view
|
|
67
|
+
tool-name="get_weather"
|
|
68
|
+
.result=${{ tempC: 21, condition: 'cloudy' }}
|
|
69
|
+
.args=${{ city: 'Brussels' }}
|
|
70
|
+
@lr-render-error=${(e) => console.warn('renderer failed', e.detail)}
|
|
71
|
+
></lr-tool-result-view>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### `registerToolRenderer()` and the tool-renderer registry (`registry.ts`)
|
|
75
|
+
|
|
76
|
+
A type-keyed dispatch registry — a tiny plugin system so a host app can teach
|
|
77
|
+
`<lr-tool-result-view>` how to draw the result of e.g. a `get_weather` or `run_query` tool call
|
|
78
|
+
without this library knowing anything about either. Every registered instance dispatches against
|
|
79
|
+
this same module-level registry unless a given `<lr-tool-result-view>`'s `registry` property is
|
|
80
|
+
set to a different `Map` instance.
|
|
81
|
+
|
|
82
|
+
**`ToolRendererDefinition`** — the shape of one registered renderer:
|
|
83
|
+
- `render?: (result: unknown, args: unknown) => unknown` — renders the result (and the args that
|
|
84
|
+
produced it) as UI. Typed as `unknown` rather than Lit's `TemplateResult` so any lit-html-renderable
|
|
85
|
+
value works (a plain string, a DOM node, an array of templates) — consumers already own their own
|
|
86
|
+
Lit import and don't need this module to add one
|
|
87
|
+
- `matches?: (payload: unknown) => boolean` — facade/shape-based dispatch predicate, consulted only
|
|
88
|
+
when no exact `toolName` key matches (see dispatch order below); only ever consulted *before*
|
|
89
|
+
`load` resolves when supplied inline at registration time — a definition that needs shape-based
|
|
90
|
+
dispatch and also wants to lazy-load its `render` should register a lightweight synchronous
|
|
91
|
+
`matches` up front alongside `load`
|
|
92
|
+
- `load?: () => Promise<ToolRendererDefinition | { default: ToolRendererDefinition }>` — lazy loader
|
|
93
|
+
for a code-split renderer, so a host app can defer the cost of a rarely-used or heavy renderer
|
|
94
|
+
(e.g. one pulling in a charting library) instead of paying for it on every page that merely
|
|
95
|
+
registers it. Resolves to either a definition directly, or a `{ default }`-shaped module namespace
|
|
96
|
+
object, so `load: () => import('./my-renderer.js')` works unmodified when that module's default
|
|
97
|
+
export is itself a `ToolRendererDefinition`
|
|
98
|
+
|
|
99
|
+
**Exports:**
|
|
100
|
+
- `registerToolRenderer(name: string, def: ToolRendererDefinition): void` — registers (or
|
|
101
|
+
overwrites) the renderer for `name` in the module-level default registry
|
|
102
|
+
- `getDefaultToolRendererRegistry(): ToolRendererRegistry` — returns the default `Map` that
|
|
103
|
+
`registerToolRenderer()` writes to and every `<lr-tool-result-view>` reads from unless its own
|
|
104
|
+
`registry` prop is set
|
|
105
|
+
- `findToolRenderer(toolName: string, payload: unknown, registry?: ToolRendererRegistry):
|
|
106
|
+
ToolRendererDefinition | undefined` — the dispatch function `<lr-tool-result-view>` calls
|
|
107
|
+
internally on every resolve; exposed for direct use/testing too
|
|
108
|
+
- `loadToolRenderer(def: ToolRendererDefinition): Promise<ToolRendererDefinition>` — resolves `def`
|
|
109
|
+
to a definition guaranteed to carry a real `render`, awaiting/unwrapping `def.load()` when present
|
|
110
|
+
(or returning `def` unchanged otherwise)
|
|
111
|
+
- `clearToolRenderers(): void` — test-only utility that empties the default registry and its
|
|
112
|
+
`load()` cache, so one test's `registerToolRenderer()` calls can't leak into the next
|
|
113
|
+
|
|
114
|
+
**Dispatch order** (`findToolRenderer`), exactly as `<lr-tool-result-view>`'s own `resolve()` uses
|
|
115
|
+
it:
|
|
116
|
+
1. An exact `toolName` key match in the registry.
|
|
117
|
+
2. Failing that, the first entry — in registration order, since a `Map` already iterates that way —
|
|
118
|
+
whose `matches(payload)` returns `true`. Useful when several tool names share one result shape
|
|
119
|
+
(e.g. every `*_search` tool returning `{ results: [...] }`) or when the caller doesn't reliably
|
|
120
|
+
know the tool name at all.
|
|
121
|
+
3. `undefined` if neither matches — `<lr-tool-result-view>` falls back to `<lr-json-viewer>` and
|
|
122
|
+
fires `lr-render-error`.
|
|
123
|
+
|
|
124
|
+
Once a definition is found, if it carries `load`, `<lr-tool-result-view>` shows a
|
|
125
|
+
`<lr-skeleton variant="rect" height="4rem">` while `loadToolRenderer()` resolves it. The resolved
|
|
126
|
+
`load()` promise is cached keyed by *definition object identity* (a `WeakMap`, not by tool-name
|
|
127
|
+
string) — two different registries that happen to reuse the same tool-name string get independently
|
|
128
|
+
cached loads, and any given lazy definition's `load()` runs at most once no matter how many times
|
|
129
|
+
it's dispatched to, across every `<lr-tool-result-view>` instance that resolves to it. A **rejected**
|
|
130
|
+
`load()` is *not* cached — the definition stays registered, so a later resolution attempt (e.g. after
|
|
131
|
+
a transient network failure) gets a fresh `load()` call rather than being stuck replaying one failed
|
|
132
|
+
promise forever.
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
import { registerToolRenderer } from '@aceshooting/lyra-ui/components/agent-tools/tool-result-view/registry.js';
|
|
136
|
+
|
|
137
|
+
registerToolRenderer('get_weather', {
|
|
138
|
+
render: (result, args) => html`<weather-card .data=${result} .city=${args?.city}></weather-card>`,
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Lazily loaded, shape-based fallback for every *_search tool:
|
|
142
|
+
registerToolRenderer('web_search', {
|
|
143
|
+
matches: (payload) => typeof payload === 'object' && payload !== null && 'results' in payload,
|
|
144
|
+
load: () => import('./search-result-renderer.js'), // default export is a ToolRendererDefinition
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Known gotchas:**
|
|
149
|
+
- `<lr-tool-result-view>` re-resolves (re-runs the full dispatch → load → render pipeline)
|
|
150
|
+
whenever `toolName`, `result`, `args`, or `registry` changes, or on first update — a stale
|
|
151
|
+
in-flight `load()` superseded by a newer change is detected via an internal generation counter and
|
|
152
|
+
its result is discarded rather than clobbering a more recent render
|
|
153
|
+
- registering under the same `name` twice silently overwrites the earlier definition — there is no
|
|
154
|
+
warning or error
|
|
155
|
+
- `matches` is a linear scan over every registered definition's `matches` in registration order; it
|
|
156
|
+
only runs when the exact-name lookup misses, so tool names with a direct registration never pay
|
|
157
|
+
that scan cost
|
|
158
|
+
- `fallback` implements exactly two kinds, `"json"` and `"text"`; any *other* value silently behaves
|
|
159
|
+
as `"json"`, as does `"text"` whenever `result` isn't a string. Only `"text"` renders
|
|
160
|
+
`[part="fallback-text"]`/`[part="fallback-copy"]`
|
|
161
|
+
|
|
162
|
+
---
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-tool-select-dialog`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/agent-tools/tool-select-dialog/tool-select-dialog.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraToolSelectDialog`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js`
|
|
7
|
+
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-tool-select-dialog`
|
|
14
|
+
|
|
15
|
+
A category-grouped, filterable, searchable tool-enablement dialog for picking which agent tools are
|
|
16
|
+
available in a conversation. It keeps its own panel template rather than nesting `<lr-dialog>`, so
|
|
17
|
+
it has no dependency on the general-purpose dialog, while its modal behavior participates in the
|
|
18
|
+
shared overlay stack. First-party invention (no Web Awesome equivalent).
|
|
19
|
+
|
|
20
|
+
**Exported types:**
|
|
21
|
+
- `ToolSelectDialogTool { id: string; name: string; description?: string; category?: string; icon?:
|
|
22
|
+
string; disabled?: boolean; disabledReason?: string }` — one selectable agent tool. `category` groups
|
|
23
|
+
the row into a heading; tools with no `category` (or an empty/whitespace-only one) fall into a
|
|
24
|
+
trailing "Other" bucket. `icon` is a literal glyph (e.g. an emoji) rendered next to `name` — an opaque
|
|
25
|
+
string, not a registry lookup, the same convention `<lr-tool-call-chip>`'s `icon` uses. `disabled`
|
|
26
|
+
individually gates a tool regardless of `useDefaults`/`selected` (e.g. a tool requiring admin
|
|
27
|
+
approval); `disabledReason` is supporting text shown under a disabled row, ignored when `disabled` is
|
|
28
|
+
falsy.
|
|
29
|
+
- `ToolSelectFilter = (tool: ToolSelectDialogTool, query: string) => boolean` — a predicate deciding
|
|
30
|
+
whether `tool` matches an already-trimmed, already-lowercased `query`. Assign `filter` to replace the
|
|
31
|
+
built-in case-insensitive name/description substring match entirely (mirrors `<lr-combobox>`'s
|
|
32
|
+
`OptionFilter` convention).
|
|
33
|
+
- `ToolSelectionChangeDetail { selected: string[]; useDefaults: boolean }` — the `lr-change` detail
|
|
34
|
+
shape.
|
|
35
|
+
- `ToolSelectDialogCloseReason = 'escape' | 'backdrop' | 'api' | string` — the `lr-close` detail;
|
|
36
|
+
`'escape'`/`'backdrop'` come from the dialog's own built-in dismiss triggers, any other string is
|
|
37
|
+
whatever a caller passes to `close()` directly.
|
|
38
|
+
|
|
39
|
+
**Properties:**
|
|
40
|
+
- `open: boolean = false` (reflected) — set this (or call `close()`) to dismiss; there is no separate
|
|
41
|
+
`show()`/`hide()` pair.
|
|
42
|
+
- `tools: ToolSelectDialogTool[] = []` (attribute: false) — the full set of tools a consumer offers,
|
|
43
|
+
across all categories.
|
|
44
|
+
- `selected: string[] = []` (attribute: false) — the currently-enabled tool ids.
|
|
45
|
+
- `useDefaults: boolean = false` (attribute `use-defaults`, reflected) — whether the conversation is
|
|
46
|
+
using the default tool set (`true`) or a custom selection (`false`).
|
|
47
|
+
- `label: string = 'Select tools'` — the dialog's visible heading and accessible name.
|
|
48
|
+
- `accessibleLabel: string | null = null` (attribute `aria-label`) — overrides the dialog panel's
|
|
49
|
+
accessible name, taking precedence over the visible `label` heading; mirrors `<lr-dialog>`'s
|
|
50
|
+
own host-`aria-label` override pattern.
|
|
51
|
+
- `searchPlaceholder: string = 'Search tools…'` (attribute `search-placeholder`)
|
|
52
|
+
- `filter: ToolSelectFilter | null = null` (attribute: false) — overrides the built-in
|
|
53
|
+
case-insensitive name/description substring match.
|
|
54
|
+
- `autocomplete: string = ''`, `spellcheck: boolean = true`, `autocapitalize: string = ''`,
|
|
55
|
+
`autoCorrect: string = ''` (`autocorrect`), `inputMode: string = ''` (`inputmode`), and
|
|
56
|
+
`enterKeyHint: string = ''` (`enterkeyhint`) — forwarded to the search `<input>`.
|
|
57
|
+
|
|
58
|
+
**Methods:** `close(reason: ToolSelectDialogCloseReason = 'api'): void` — closes the dialog, emits
|
|
59
|
+
`lr-close` with `reason`, and returns focus to whatever had it before the dialog opened.
|
|
60
|
+
|
|
61
|
+
**Events:** `lr-change` (`detail: ToolSelectionChangeDetail` — the enabled-tool selection or the
|
|
62
|
+
`useDefaults` toggle changed), `lr-close` (`detail: ToolSelectDialogCloseReason` — fired exactly once
|
|
63
|
+
per dismissal, via Escape, a backdrop click, or a `close()` call)
|
|
64
|
+
|
|
65
|
+
**Slots:** `footer` — optional action buttons (e.g. a "Done" button), rendered in a bottom row. Changes
|
|
66
|
+
already apply live via `lr-change`, so this slot is purely optional; only visually shown once it has
|
|
67
|
+
assigned elements.
|
|
68
|
+
|
|
69
|
+
**CSS parts:** `backdrop`, `panel`, `header`, `title`, `subtitle`, `search-row`, `search-input`,
|
|
70
|
+
`defaults-row`, `defaults-toggle`, `defaults-hint`, `body`, `empty`, `category`, `category-heading`,
|
|
71
|
+
`category-count`, `category-list`, `tool-row`, `tool-checkbox`, `tool-name`, `tool-icon`,
|
|
72
|
+
`tool-description`, `tool-disabled-reason`, `footer`
|
|
73
|
+
|
|
74
|
+
**Themeable custom properties:** `--lr-tool-select-dialog-overlay-color` (default `rgb(0 0 0 / 0.5)` —
|
|
75
|
+
the backdrop scrim color; component-specific since no shared overlay token exists, mirrors
|
|
76
|
+
`<lr-dialog>`'s/`<lr-tool-result-dialog>`'s identical pattern), plus shared `--lr-space-*`,
|
|
77
|
+
`--lr-color-surface/-border/-text/-text-quiet/-warning`, `--lr-radius`, `--lr-shadow`,
|
|
78
|
+
`--lr-focus-ring-width/-color/-offset`, `--lr-opacity-disabled`.
|
|
79
|
+
|
|
80
|
+
**Optional peer deps:** none — internally renders `<lr-checkbox>` and `<lr-switch>`, both bundled
|
|
81
|
+
dependencies of this package imported directly, not optional peers.
|
|
82
|
+
|
|
83
|
+
```html
|
|
84
|
+
<lr-tool-select-dialog
|
|
85
|
+
label="Select tools"
|
|
86
|
+
.tools=${[
|
|
87
|
+
{ id: 'search', name: 'Web search', category: 'Research' },
|
|
88
|
+
{ id: 'python', name: 'Python', category: 'Code', description: 'Run sandboxed Python' },
|
|
89
|
+
{ id: 'admin', name: 'Admin console', disabled: true, disabledReason: 'Requires admin approval' },
|
|
90
|
+
]}
|
|
91
|
+
.selected=${enabledToolIds}
|
|
92
|
+
?use-defaults=${usingDefaults}
|
|
93
|
+
?open=${dialogOpen}
|
|
94
|
+
@lr-change=${(e) => updateTools(e.detail.selected, e.detail.useDefaults)}
|
|
95
|
+
@lr-close=${() => (dialogOpen = false)}
|
|
96
|
+
>
|
|
97
|
+
<button slot="footer" @click=${(e) => e.target.closest('lr-tool-select-dialog').close('done')}>
|
|
98
|
+
Done
|
|
99
|
+
</button>
|
|
100
|
+
</lr-tool-select-dialog>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`useDefaults` is a single top-level switch: while `true`, every per-tool checkbox renders disabled
|
|
104
|
+
(still reflecting whatever `selected` holds — populate that with the actual default tool set whenever
|
|
105
|
+
`useDefaults` is true) alongside a hint explaining that turning the switch off is how to customize.
|
|
106
|
+
Turning it off is the only control that both flips `useDefaults` to `false` *and* unlocks the per-tool
|
|
107
|
+
checkboxes for editing.
|
|
108
|
+
|
|
109
|
+
**Known gotchas:**
|
|
110
|
+
- No built-in footer/close button — dismissal happens via Escape, a backdrop click, or a consumer's own
|
|
111
|
+
`footer`-slotted action calling `close()` directly.
|
|
112
|
+
- A row is effectively disabled whenever *either* its own `tool.disabled` is true *or* the top-level
|
|
113
|
+
`useDefaults` switch is on — a tool without `disabled` set can still render as a locked checkbox while
|
|
114
|
+
`useDefaults` is true.
|
|
115
|
+
- `disabledReason` text only renders when both `tool.disabled` and `tool.disabledReason` are set.
|
|
116
|
+
- Categories are grouped in first-seen order across `tools`; an empty/whitespace-only `category` folds
|
|
117
|
+
into a trailing "Other" bucket that's always rendered last. A category left with zero matches after
|
|
118
|
+
filtering is dropped entirely, not rendered as an empty heading.
|
|
119
|
+
- Reconnecting the element while still `open` (e.g. a drag-and-drop reparent that keeps the same
|
|
120
|
+
instance) resumes its shared overlay registration and re-acquires the scroll lock dropped in
|
|
121
|
+
`disconnectedCallback`.
|
|
122
|
+
- The search input is the first focusable element in the panel and receives focus automatically on open.
|
|
123
|
+
|
|
124
|
+
---
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-tool-timeline`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/agent-tools/tool-timeline/tool-timeline.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraToolTimeline`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/tool-timeline/tool-timeline.class.js`
|
|
7
|
+
- **Family** `components/agent-tools/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-tool-timeline`
|
|
14
|
+
|
|
15
|
+
Chronological list of agent tool/function calls composed from tool-call, result, and approval
|
|
16
|
+
primitives, with retry counts and sensitive-field redaction.
|
|
17
|
+
|
|
18
|
+
**Properties:**
|
|
19
|
+
- `entries: ToolTimelineEntry[] = []` (attribute: false) — `ToolTimelineEntry` **extends
|
|
20
|
+
`ToolInvocation` from `@aceshooting/lyra-ui/ai`** (`{ id: string; name: string; args:
|
|
21
|
+
Record<string, unknown>; status: ToolCallStatus; result?: unknown; error?: string }`, where
|
|
22
|
+
`ToolCallStatus = 'pending' | 'running' | 'success' | 'error' | 'denied'`) with `{ startedAt?:
|
|
23
|
+
number; endedAt?: number; retryCount?: number; redactedFields?: string[]; needsApproval?: boolean;
|
|
24
|
+
approved?: boolean }`. Timestamps are epoch milliseconds; entries sort ascending by `startedAt`,
|
|
25
|
+
and an entry with none sorts after every timed entry (keeping its relative position among other
|
|
26
|
+
untimed ones) and renders no visible timestamp. `startedAt`+`endedAt` derive the `durationMs`
|
|
27
|
+
handed to the per-entry `lr-tool-call-chip`. `retryCount: 2` means the call reached its current
|
|
28
|
+
state on its third try; `0`/omitted renders no retry indicator. `redactedFields` are dotted paths
|
|
29
|
+
within `args`/`result`/`error` to mask in the rendered detail view (e.g.
|
|
30
|
+
`['args.apiKey', 'result.rows.0.ssn']`, or a bare `'args'`/`'result'`/`'error'` to mask a whole
|
|
31
|
+
branch); an unmatched path is a no-op, never an error — and redaction is **never** applied to the
|
|
32
|
+
copy of `args` handed to the approval dialog. While `needsApproval` is `true` and `approved` is
|
|
33
|
+
still `undefined`, activating the entry's chip opens the shared approval dialog instead of merely
|
|
34
|
+
firing the chip's own selection event
|
|
35
|
+
- `approvalEditable: boolean = true` (attribute `approval-editable`, reflected) — forwarded to the
|
|
36
|
+
shared approval dialog's `editable`: whether a reviewer may edit an entry's arguments before
|
|
37
|
+
approving. Uses a `true`-defaulting string converter, so plain-HTML `approval-editable="false"`
|
|
38
|
+
works
|
|
39
|
+
- `formatTimestamp?: (date: Date) => string` (attribute: false) — overrides the default
|
|
40
|
+
`hour:minute` rendering of each entry's `startedAt`
|
|
41
|
+
|
|
42
|
+
**Events:** `lr-tool-approval-decide` (`detail: ToolTimelineApprovalDetail` =
|
|
43
|
+
`ToolApprovalEventDetail & { args?: unknown }` = `{ invocationId: string; approved: boolean; args?:
|
|
44
|
+
unknown }`, extending the shared detail from `@aceshooting/lyra-ui/ai`). `args` is present only when
|
|
45
|
+
`approved` is `true`, and may differ from what the entry originally proposed — the dialog's inline
|
|
46
|
+
edit step can hand back different arguments. A listener that only needs `{ invocationId, approved }`
|
|
47
|
+
can ignore it; one actually executing the tool needs it.
|
|
48
|
+
|
|
49
|
+
**CSS parts:** `base`,
|
|
50
|
+
`entry`, `entry-marker`, `entry-header`, `entry-timestamp`, `entry-body`, `entry-details`,
|
|
51
|
+
`entry-result`, `entry-error`, `entry-retries`, `entry-retries-count`, `entry-retries-label`,
|
|
52
|
+
`entry-redacted-indicator`, `entry-approval-status`, `approval-dialog`.
|
|
53
|
+
|
|
54
|
+
**Themeable custom properties:** `--lr-tool-timeline-gap` (default `var(--lr-space-l)`) — vertical
|
|
55
|
+
gap between entries; `--lr-tool-timeline-marker-size` (default `var(--lr-size-0-625rem)`) — the
|
|
56
|
+
per-entry timeline marker dot's size, which also sets the entry grid's leading column width.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!-- GENERATED by scripts/build-llms.mjs from llms/overlays.md — do not edit this file. -->
|
|
2
|
+
|
|
3
|
+
# `lr-tooltip`
|
|
4
|
+
|
|
5
|
+
- **Import** `import '@aceshooting/lyra-ui/components/overlays/overlay/tooltip.js';` (registers the tag; side-effect import)
|
|
6
|
+
- **Class** `LyraTooltip`, also available unregistered from `@aceshooting/lyra-ui/components/overlays/overlay/tooltip.class.js`
|
|
7
|
+
- **Family** `components/overlays/` — see `llms/index.md` for its siblings
|
|
8
|
+
- **Optional peers** none
|
|
9
|
+
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## `lr-tooltip`
|
|
14
|
+
|
|
15
|
+
A hover/focus tooltip positioned with the shared Floating UI positioner.
|
|
16
|
+
|
|
17
|
+
**Properties:** `open`, `manual`, `delay`, `placement`, `distance`, `content`, and
|
|
18
|
+
`accessibleLabel` (`aria-label`). **Methods:** `showAt(rect: { x, y, width?, height?,
|
|
19
|
+
contextElement? }, options?: { returnFocusTo?: HTMLElement })` — same virtual-anchor contract as
|
|
20
|
+
`lr-popover.showAt()` above (anchors to an arbitrary rectangle instead of the slotted `trigger`,
|
|
21
|
+
`width`/`height` default to `0`, `contextElement` gives `autoUpdate()` something to observe,
|
|
22
|
+
Escape returns focus to `options.returnFocusTo` or skips focus-return, re-call with fresh
|
|
23
|
+
coordinates to re-anchor a moving point). Opens immediately, bypassing `delay`/`manual` (both are
|
|
24
|
+
hover-debounce concerns for a slotted trigger, not a deliberate programmatic call); close it the
|
|
25
|
+
same way any tooltip closes, by setting `open = false`. **Slots:** `trigger`, default content.
|
|
26
|
+
**CSS parts:** `trigger`, `popup`. **Themeable custom properties:** `--lr-tooltip-max-inline-size`
|
|
27
|
+
(default `--lr-size-20rem`), `--lr-tooltip-background` (default `--lr-color-neutral`), and
|
|
28
|
+
`--lr-tooltip-color` (default `--lr-color-on-neutral`).
|
|
29
|
+
|
|
30
|
+
**`showAt()` composed with `lr-graph`** — anchoring a popover to a clicked graph node. Note:
|
|
31
|
+
`lr-graph.getNodePosition()` and the `lr-node-click` event's `{ x, y }` are in the graph's own
|
|
32
|
+
*local drawing space* (pre pan/zoom), not viewport pixels, so they can't be passed to `showAt()`
|
|
33
|
+
directly. For `renderer="svg"` (the default), read the clicked node's own rendered element instead,
|
|
34
|
+
whose `getBoundingClientRect()` is already viewport-relative; for `renderer="canvas"` (no per-node
|
|
35
|
+
DOM element), use the click event's own `clientX`/`clientY`.
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
const graph = document.querySelector('lr-graph');
|
|
39
|
+
const detail = document.querySelector('lr-popover'); // no slotted trigger needed for showAt()
|
|
40
|
+
|
|
41
|
+
graph.addEventListener('click', (event) => {
|
|
42
|
+
const nodeEl = event.composedPath().find((el) => el instanceof Element && el.matches('[part="node"]'));
|
|
43
|
+
if (!nodeEl) return; // clicked empty canvas/background, not a node
|
|
44
|
+
const rect = nodeEl.getBoundingClientRect();
|
|
45
|
+
detail.showAt({ x: rect.left + rect.width / 2, y: rect.top, width: rect.width, height: rect.height });
|
|
46
|
+
});
|
|
47
|
+
```
|