@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.
Files changed (636) hide show
  1. package/README.md +30 -12
  2. package/custom-elements.json +2150 -220
  3. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +2 -0
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts.map +1 -1
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +2 -0
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js.map +1 -1
  7. package/dist/components/agent-tools/agent-run/agent-run.class.d.ts +1 -0
  8. package/dist/components/agent-tools/agent-run/agent-run.class.d.ts.map +1 -1
  9. package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -0
  10. package/dist/components/agent-tools/agent-run/agent-run.class.js.map +1 -1
  11. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -0
  12. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts.map +1 -1
  13. package/dist/components/agent-tools/compare-panel/compare-panel.class.js +2 -0
  14. package/dist/components/agent-tools/compare-panel/compare-panel.class.js.map +1 -1
  15. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +5 -0
  16. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
  17. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +5 -0
  18. package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
  19. package/dist/components/agent-tools/terminal/terminal.class.d.ts +3 -0
  20. package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
  21. package/dist/components/agent-tools/terminal/terminal.class.js +3 -0
  22. package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
  23. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  24. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts.map +1 -1
  25. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +2 -0
  26. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js.map +1 -1
  27. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +2 -0
  28. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
  29. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +2 -0
  30. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
  31. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +3 -0
  32. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
  33. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -0
  34. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js.map +1 -1
  35. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -0
  36. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts.map +1 -1
  37. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -0
  38. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js.map +1 -1
  39. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +1 -0
  40. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
  41. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -0
  42. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
  43. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +2 -0
  44. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts.map +1 -1
  45. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -0
  46. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js.map +1 -1
  47. package/dist/components/charts/chart/chart.class.d.ts +15 -0
  48. package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
  49. package/dist/components/charts/chart/chart.class.js +15 -0
  50. package/dist/components/charts/chart/chart.class.js.map +1 -1
  51. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +2 -0
  52. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts.map +1 -1
  53. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +2 -0
  54. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js.map +1 -1
  55. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +2 -0
  56. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts.map +1 -1
  57. package/dist/components/conversation/branch-picker/branch-picker.class.js +2 -0
  58. package/dist/components/conversation/branch-picker/branch-picker.class.js.map +1 -1
  59. package/dist/components/conversation/chat-message/chat-message.class.d.ts +5 -1
  60. package/dist/components/conversation/chat-message/chat-message.class.d.ts.map +1 -1
  61. package/dist/components/conversation/chat-message/chat-message.class.js +5 -1
  62. package/dist/components/conversation/chat-message/chat-message.class.js.map +1 -1
  63. package/dist/components/conversation/chat-message/chat-message.styles.d.ts.map +1 -1
  64. package/dist/components/conversation/chat-message/chat-message.styles.js +15 -2
  65. package/dist/components/conversation/chat-message/chat-message.styles.js.map +1 -1
  66. package/dist/components/conversation/code-block/code-block.class.d.ts +4 -0
  67. package/dist/components/conversation/code-block/code-block.class.d.ts.map +1 -1
  68. package/dist/components/conversation/code-block/code-block.class.js +4 -0
  69. package/dist/components/conversation/code-block/code-block.class.js.map +1 -1
  70. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +2 -0
  71. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts.map +1 -1
  72. package/dist/components/conversation/conversation-item/conversation-item.class.js +2 -0
  73. package/dist/components/conversation/conversation-item/conversation-item.class.js.map +1 -1
  74. package/dist/components/conversation/markdown/markdown.class.d.ts +2 -0
  75. package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
  76. package/dist/components/conversation/markdown/markdown.class.js +2 -0
  77. package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
  78. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +2 -0
  79. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts.map +1 -1
  80. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +2 -0
  81. package/dist/components/conversation/push-to-talk/push-to-talk.class.js.map +1 -1
  82. package/dist/components/conversation/stream-status/stream-status.class.d.ts +5 -0
  83. package/dist/components/conversation/stream-status/stream-status.class.d.ts.map +1 -1
  84. package/dist/components/conversation/stream-status/stream-status.class.js +5 -0
  85. package/dist/components/conversation/stream-status/stream-status.class.js.map +1 -1
  86. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +2 -0
  87. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts.map +1 -1
  88. package/dist/components/conversation/streaming-text/streaming-text.class.js +2 -0
  89. package/dist/components/conversation/streaming-text/streaming-text.class.js.map +1 -1
  90. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +1 -0
  91. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts.map +1 -1
  92. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -0
  93. package/dist/components/conversation/transcript-feed/transcript-feed.class.js.map +1 -1
  94. package/dist/components/data/calendar/calendar.class.d.ts +6 -0
  95. package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
  96. package/dist/components/data/calendar/calendar.class.js +6 -0
  97. package/dist/components/data/calendar/calendar.class.js.map +1 -1
  98. package/dist/components/data/context-meter/context-meter.class.d.ts +1 -0
  99. package/dist/components/data/context-meter/context-meter.class.d.ts.map +1 -1
  100. package/dist/components/data/context-meter/context-meter.class.js +1 -0
  101. package/dist/components/data/context-meter/context-meter.class.js.map +1 -1
  102. package/dist/components/data/data-grid/data-grid.class.d.ts +1 -0
  103. package/dist/components/data/data-grid/data-grid.class.d.ts.map +1 -1
  104. package/dist/components/data/data-grid/data-grid.class.js +1 -0
  105. package/dist/components/data/data-grid/data-grid.class.js.map +1 -1
  106. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +3 -1
  107. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
  108. package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
  109. package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
  110. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +2 -2
  111. package/dist/components/data/flow-minimap/flow-minimap.class.js +2 -2
  112. package/dist/components/data/flow-node/flow-node.class.d.ts +1 -1
  113. package/dist/components/data/flow-node/flow-node.class.js +1 -1
  114. package/dist/components/data/heatmap/heatmap.class.d.ts +51 -2
  115. package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
  116. package/dist/components/data/heatmap/heatmap.class.js +42 -6
  117. package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
  118. package/dist/components/data/heatmap/heatmap.styles.d.ts.map +1 -1
  119. package/dist/components/data/heatmap/heatmap.styles.js +19 -0
  120. package/dist/components/data/heatmap/heatmap.styles.js.map +1 -1
  121. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +20 -0
  122. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts.map +1 -1
  123. package/dist/components/data/sequence-strip/sequence-strip.class.js +35 -0
  124. package/dist/components/data/sequence-strip/sequence-strip.class.js.map +1 -1
  125. package/dist/components/data/sequence-strip/sequence-strip.styles.d.ts.map +1 -1
  126. package/dist/components/data/sequence-strip/sequence-strip.styles.js +29 -0
  127. package/dist/components/data/sequence-strip/sequence-strip.styles.js.map +1 -1
  128. package/dist/components/data/table/table.class.d.ts +11 -0
  129. package/dist/components/data/table/table.class.d.ts.map +1 -1
  130. package/dist/components/data/table/table.class.js +11 -0
  131. package/dist/components/data/table/table.class.js.map +1 -1
  132. package/dist/components/data/timeline/timeline-item.class.d.ts +17 -0
  133. package/dist/components/data/timeline/timeline-item.class.d.ts.map +1 -1
  134. package/dist/components/data/timeline/timeline-item.class.js +17 -0
  135. package/dist/components/data/timeline/timeline-item.class.js.map +1 -1
  136. package/dist/components/data/timeline/timeline.styles.d.ts.map +1 -1
  137. package/dist/components/data/timeline/timeline.styles.js +6 -3
  138. package/dist/components/data/timeline/timeline.styles.js.map +1 -1
  139. package/dist/components/data/tree/tree-node.class.d.ts +3 -0
  140. package/dist/components/data/tree/tree-node.class.d.ts.map +1 -1
  141. package/dist/components/data/tree/tree-node.class.js +3 -0
  142. package/dist/components/data/tree/tree-node.class.js.map +1 -1
  143. package/dist/components/forms/button/button.class.d.ts +24 -0
  144. package/dist/components/forms/button/button.class.d.ts.map +1 -1
  145. package/dist/components/forms/button/button.class.js +24 -0
  146. package/dist/components/forms/button/button.class.js.map +1 -1
  147. package/dist/components/forms/code-editor/code-editor.class.d.ts +28 -12
  148. package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
  149. package/dist/components/forms/code-editor/code-editor.class.js +44 -14
  150. package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
  151. package/dist/components/forms/code-editor/code-editor.styles.d.ts.map +1 -1
  152. package/dist/components/forms/code-editor/code-editor.styles.js +4 -0
  153. package/dist/components/forms/code-editor/code-editor.styles.js.map +1 -1
  154. package/dist/components/forms/combobox/combobox.class.d.ts +10 -0
  155. package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
  156. package/dist/components/forms/combobox/combobox.class.js +16 -0
  157. package/dist/components/forms/combobox/combobox.class.js.map +1 -1
  158. package/dist/components/forms/combobox/option.class.d.ts +3 -3
  159. package/dist/components/forms/combobox/option.class.d.ts.map +1 -1
  160. package/dist/components/forms/combobox/option.class.js +9 -0
  161. package/dist/components/forms/combobox/option.class.js.map +1 -1
  162. package/dist/components/forms/date-picker/date-input.class.d.ts +3 -0
  163. package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
  164. package/dist/components/forms/date-picker/date-input.class.js +3 -0
  165. package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
  166. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +37 -2
  167. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
  168. package/dist/components/forms/emoji-picker/emoji-picker.class.js +113 -10
  169. package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
  170. package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
  171. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -0
  172. package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
  173. package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
  174. package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
  175. package/dist/components/forms/icon-button/icon-button.class.js +4 -0
  176. package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
  177. package/dist/components/forms/input/input.class.d.ts +11 -3
  178. package/dist/components/forms/input/input.class.d.ts.map +1 -1
  179. package/dist/components/forms/input/input.class.js +3 -0
  180. package/dist/components/forms/input/input.class.js.map +1 -1
  181. package/dist/components/forms/input/time-input.class.d.ts +12 -0
  182. package/dist/components/forms/input/time-input.class.d.ts.map +1 -1
  183. package/dist/components/forms/input/time-input.class.js +27 -0
  184. package/dist/components/forms/input/time-input.class.js.map +1 -1
  185. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -0
  186. package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
  187. package/dist/components/forms/rubric-form/rubric-form.class.js +7 -0
  188. package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
  189. package/dist/components/forms/select/select.class.d.ts +8 -0
  190. package/dist/components/forms/select/select.class.d.ts.map +1 -1
  191. package/dist/components/forms/select/select.class.js +8 -0
  192. package/dist/components/forms/select/select.class.js.map +1 -1
  193. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +1 -1
  194. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  195. package/dist/components/forms/switch/switch.class.d.ts +6 -0
  196. package/dist/components/forms/switch/switch.class.d.ts.map +1 -1
  197. package/dist/components/forms/switch/switch.class.js +6 -0
  198. package/dist/components/forms/switch/switch.class.js.map +1 -1
  199. package/dist/components/forms/token-input/token-input.class.d.ts +2 -0
  200. package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
  201. package/dist/components/forms/token-input/token-input.class.js +2 -0
  202. package/dist/components/forms/token-input/token-input.class.js.map +1 -1
  203. package/dist/components/layout/app-rail/app-rail.class.d.ts +8 -0
  204. package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
  205. package/dist/components/layout/app-rail/app-rail.class.js +8 -0
  206. package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
  207. package/dist/components/layout/button-group/button-group.class.d.ts +1 -1
  208. package/dist/components/layout/button-group/button-group.class.js +1 -1
  209. package/dist/components/layout/command-palette/command-palette.class.d.ts +12 -0
  210. package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
  211. package/dist/components/layout/command-palette/command-palette.class.js +12 -0
  212. package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
  213. package/dist/components/layout/control-group/control-group.class.d.ts +1 -1
  214. package/dist/components/layout/control-group/control-group.class.js +1 -1
  215. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +7 -0
  216. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
  217. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +7 -0
  218. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
  219. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +3 -0
  220. package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
  221. package/dist/components/layout/dock-panel/dock-panel.class.js +3 -0
  222. package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
  223. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +2 -0
  224. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
  225. package/dist/components/layout/responsive-panel/responsive-panel.class.js +2 -0
  226. package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
  227. package/dist/components/layout/scroller/scroller.class.d.ts +2 -2
  228. package/dist/components/layout/scroller/scroller.class.js +2 -2
  229. package/dist/components/layout/segmented/segmented.class.d.ts +6 -0
  230. package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
  231. package/dist/components/layout/segmented/segmented.class.js +6 -0
  232. package/dist/components/layout/segmented/segmented.class.js.map +1 -1
  233. package/dist/components/layout/split/split.class.d.ts +68 -15
  234. package/dist/components/layout/split/split.class.d.ts.map +1 -1
  235. package/dist/components/layout/split/split.class.js +80 -21
  236. package/dist/components/layout/split/split.class.js.map +1 -1
  237. package/dist/components/layout/stepper/stepper.class.d.ts +52 -11
  238. package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
  239. package/dist/components/layout/stepper/stepper.class.js +69 -17
  240. package/dist/components/layout/stepper/stepper.class.js.map +1 -1
  241. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +3 -0
  242. package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
  243. package/dist/components/layout/virtual-list/virtual-list.class.js +3 -0
  244. package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
  245. package/dist/components/layout/widget/widget.class.d.ts +6 -0
  246. package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
  247. package/dist/components/layout/widget/widget.class.js +6 -0
  248. package/dist/components/layout/widget/widget.class.js.map +1 -1
  249. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +13 -0
  250. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
  251. package/dist/components/media/attachment-chip/attachment-chip.class.js +13 -0
  252. package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
  253. package/dist/components/media/avatar/avatar.class.d.ts +6 -0
  254. package/dist/components/media/avatar/avatar.class.d.ts.map +1 -1
  255. package/dist/components/media/avatar/avatar.class.js +6 -0
  256. package/dist/components/media/avatar/avatar.class.js.map +1 -1
  257. package/dist/components/media/media-card/media-card.class.d.ts +2 -0
  258. package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
  259. package/dist/components/media/media-card/media-card.class.js +2 -0
  260. package/dist/components/media/media-card/media-card.class.js.map +1 -1
  261. package/dist/components/media/playback/playback.class.d.ts +2 -0
  262. package/dist/components/media/playback/playback.class.d.ts.map +1 -1
  263. package/dist/components/media/playback/playback.class.js +2 -0
  264. package/dist/components/media/playback/playback.class.js.map +1 -1
  265. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -0
  266. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
  267. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +3 -0
  268. package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
  269. package/dist/components/overlays/badge/badge.class.d.ts +6 -0
  270. package/dist/components/overlays/badge/badge.class.d.ts.map +1 -1
  271. package/dist/components/overlays/badge/badge.class.js +6 -0
  272. package/dist/components/overlays/badge/badge.class.js.map +1 -1
  273. package/dist/components/overlays/callout/callout.class.d.ts +6 -0
  274. package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
  275. package/dist/components/overlays/callout/callout.class.js +6 -0
  276. package/dist/components/overlays/callout/callout.class.js.map +1 -1
  277. package/dist/components/overlays/chip/chip.class.d.ts +18 -0
  278. package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
  279. package/dist/components/overlays/chip/chip.class.js +18 -0
  280. package/dist/components/overlays/chip/chip.class.js.map +1 -1
  281. package/dist/components/overlays/dialog/dialog.class.d.ts +6 -0
  282. package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
  283. package/dist/components/overlays/dialog/dialog.class.js +6 -0
  284. package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
  285. package/dist/components/overlays/drawer/drawer.class.d.ts +6 -0
  286. package/dist/components/overlays/drawer/drawer.class.d.ts.map +1 -1
  287. package/dist/components/overlays/drawer/drawer.class.js +6 -0
  288. package/dist/components/overlays/drawer/drawer.class.js.map +1 -1
  289. package/dist/components/overlays/progress/progress-ring.class.d.ts +1 -0
  290. package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
  291. package/dist/components/overlays/progress/progress-ring.class.js +1 -0
  292. package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
  293. package/dist/components/overlays/skeleton/skeleton.class.d.ts +2 -0
  294. package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
  295. package/dist/components/overlays/skeleton/skeleton.class.js +2 -0
  296. package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
  297. package/dist/components/overlays/spinner/spinner.class.d.ts +4 -0
  298. package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
  299. package/dist/components/overlays/spinner/spinner.class.js +4 -0
  300. package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
  301. package/dist/components/overlays/toast/toast-item.class.d.ts +11 -0
  302. package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
  303. package/dist/components/overlays/toast/toast-item.class.js +11 -0
  304. package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
  305. package/dist/components/overlays/toast/toast.class.d.ts +15 -0
  306. package/dist/components/overlays/toast/toast.class.d.ts.map +1 -1
  307. package/dist/components/overlays/toast/toast.class.js +15 -0
  308. package/dist/components/overlays/toast/toast.class.js.map +1 -1
  309. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +8 -0
  310. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts.map +1 -1
  311. package/dist/components/retrieval/citation-badge/citation-badge.class.js +8 -0
  312. package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
  313. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +1 -0
  314. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
  315. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -0
  316. package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
  317. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
  318. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
  319. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +2 -0
  320. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
  321. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +1 -0
  322. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
  323. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -0
  324. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
  325. package/dist/components/utility/diff-view/diff-view.class.d.ts +1 -0
  326. package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
  327. package/dist/components/utility/diff-view/diff-view.class.js +1 -0
  328. package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
  329. package/dist/components/utility/icon/icon.class.d.ts +1 -0
  330. package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
  331. package/dist/components/utility/icon/icon.class.js +1 -0
  332. package/dist/components/utility/icon/icon.class.js.map +1 -1
  333. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -0
  334. package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
  335. package/dist/components/utility/json-viewer/json-viewer.class.js +3 -0
  336. package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
  337. package/dist/components/utility/known-date/known-date.class.d.ts +11 -0
  338. package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
  339. package/dist/components/utility/known-date/known-date.class.js +11 -0
  340. package/dist/components/utility/known-date/known-date.class.js.map +1 -1
  341. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +2 -0
  342. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
  343. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +2 -0
  344. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
  345. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +5 -0
  346. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
  347. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +5 -0
  348. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
  349. package/dist/components/viewers/document-compare/document-compare.class.d.ts +1 -1
  350. package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
  351. package/dist/components/viewers/document-preview/document-preview.class.d.ts +3 -0
  352. package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
  353. package/dist/components/viewers/document-preview/document-preview.class.js +3 -0
  354. package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
  355. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +2 -0
  356. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
  357. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -0
  358. package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
  359. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +2 -0
  360. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
  361. package/dist/components/viewers/html-viewer/html-viewer.class.js +2 -0
  362. package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
  363. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
  364. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +41 -9
  365. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
  366. package/dist/internal/css-length.d.ts +40 -0
  367. package/dist/internal/css-length.d.ts.map +1 -0
  368. package/dist/internal/css-length.js +72 -0
  369. package/dist/internal/css-length.js.map +1 -0
  370. package/dist/internal/orientation-breakpoint.d.ts +12 -0
  371. package/dist/internal/orientation-breakpoint.d.ts.map +1 -0
  372. package/dist/internal/orientation-breakpoint.js +127 -0
  373. package/dist/internal/orientation-breakpoint.js.map +1 -0
  374. package/dist/lyra.d.ts +2 -2
  375. package/dist/lyra.d.ts.map +1 -1
  376. package/dist/lyra.js.map +1 -1
  377. package/llms/components/lr-accordion-item.md +23 -0
  378. package/llms/components/lr-accordion.md +23 -0
  379. package/llms/components/lr-activity-feed.md +45 -0
  380. package/llms/components/lr-agent-run.md +66 -0
  381. package/llms/components/lr-agent-trace.md +42 -0
  382. package/llms/components/lr-agent-workspace.md +109 -0
  383. package/llms/components/lr-animated-image.md +66 -0
  384. package/llms/components/lr-animation.md +73 -0
  385. package/llms/components/lr-app-rail-item.md +218 -0
  386. package/llms/components/lr-app-rail.md +218 -0
  387. package/llms/components/lr-archive-viewer.md +36 -0
  388. package/llms/components/lr-artifact-panel.md +60 -0
  389. package/llms/components/lr-attachment-chip.md +131 -0
  390. package/llms/components/lr-attachment-trigger.md +90 -0
  391. package/llms/components/lr-audio-visualizer.md +43 -0
  392. package/llms/components/lr-av-player.md +50 -0
  393. package/llms/components/lr-avatar-group.md +69 -0
  394. package/llms/components/lr-avatar.md +69 -0
  395. package/llms/components/lr-badge.md +25 -0
  396. package/llms/components/lr-bar-chart.md +70 -0
  397. package/llms/components/lr-box-plot.md +67 -0
  398. package/llms/components/lr-branch-picker.md +32 -0
  399. package/llms/components/lr-breadcrumb-item.md +30 -0
  400. package/llms/components/lr-breadcrumb.md +30 -0
  401. package/llms/components/lr-browser-frame.md +51 -0
  402. package/llms/components/lr-bubble-chart.md +70 -0
  403. package/llms/components/lr-button-group.md +30 -0
  404. package/llms/components/lr-button.md +89 -0
  405. package/llms/components/lr-calendar-viewer.md +32 -0
  406. package/llms/components/lr-calendar.md +52 -0
  407. package/llms/components/lr-callout.md +37 -0
  408. package/llms/components/lr-card.md +67 -0
  409. package/llms/components/lr-carousel-item.md +29 -0
  410. package/llms/components/lr-carousel.md +43 -0
  411. package/llms/components/lr-chart.md +148 -0
  412. package/llms/components/lr-chat-composer.md +139 -0
  413. package/llms/components/lr-chat-message.md +145 -0
  414. package/llms/components/lr-chat-viewport.md +70 -0
  415. package/llms/components/lr-checkbox-group.md +21 -0
  416. package/llms/components/lr-checkbox.md +79 -0
  417. package/llms/components/lr-checkpoint.md +48 -0
  418. package/llms/components/lr-chip-group.md +152 -0
  419. package/llms/components/lr-chip.md +152 -0
  420. package/llms/components/lr-chunk-inspector.md +66 -0
  421. package/llms/components/lr-citation-badge.md +102 -0
  422. package/llms/components/lr-code-block-core.md +113 -0
  423. package/llms/components/lr-code-block.md +146 -0
  424. package/llms/components/lr-code-editor.md +72 -0
  425. package/llms/components/lr-color-picker.md +21 -0
  426. package/llms/components/lr-combobox.md +196 -0
  427. package/llms/components/lr-command-palette.md +50 -0
  428. package/llms/components/lr-commit-card.md +33 -0
  429. package/llms/components/lr-community-card.md +54 -0
  430. package/llms/components/lr-compare-panel.md +38 -0
  431. package/llms/components/lr-confirm-bar.md +48 -0
  432. package/llms/components/lr-contact-viewer.md +34 -0
  433. package/llms/components/lr-context-inspector.md +50 -0
  434. package/llms/components/lr-context-meter.md +92 -0
  435. package/llms/components/lr-control-group.md +46 -0
  436. package/llms/components/lr-conversation-item.md +118 -0
  437. package/llms/components/lr-copy-button.md +52 -0
  438. package/llms/components/lr-csv-viewer.md +49 -0
  439. package/llms/components/lr-dashboard-grid.md +34 -0
  440. package/llms/components/lr-data-grid.md +47 -0
  441. package/llms/components/lr-dataset-viewer.md +60 -0
  442. package/llms/components/lr-date-input.md +201 -0
  443. package/llms/components/lr-date-picker.md +201 -0
  444. package/llms/components/lr-details.md +23 -0
  445. package/llms/components/lr-dialog.md +185 -0
  446. package/llms/components/lr-diff-view.md +86 -0
  447. package/llms/components/lr-divider.md +28 -0
  448. package/llms/components/lr-dock-panel.md +110 -0
  449. package/llms/components/lr-document-compare.md +22 -0
  450. package/llms/components/lr-document-library.md +21 -0
  451. package/llms/components/lr-document-preview.md +179 -0
  452. package/llms/components/lr-document-viewer.md +84 -0
  453. package/llms/components/lr-docx-viewer.md +63 -0
  454. package/llms/components/lr-doughnut-chart.md +70 -0
  455. package/llms/components/lr-drawer.md +48 -0
  456. package/llms/components/lr-drilldown-panel.md +25 -0
  457. package/llms/components/lr-dropdown-item.md +171 -0
  458. package/llms/components/lr-dropdown.md +24 -0
  459. package/llms/components/lr-ebook-viewer.md +60 -0
  460. package/llms/components/lr-email-viewer.md +51 -0
  461. package/llms/components/lr-emoji-picker.md +71 -0
  462. package/llms/components/lr-empty.md +56 -0
  463. package/llms/components/lr-entity-card.md +64 -0
  464. package/llms/components/lr-entity-chip.md +50 -0
  465. package/llms/components/lr-entity-dossier.md +71 -0
  466. package/llms/components/lr-env-list.md +27 -0
  467. package/llms/components/lr-eval-dataset.md +45 -0
  468. package/llms/components/lr-eval-result.md +45 -0
  469. package/llms/components/lr-evaluation-run.md +50 -0
  470. package/llms/components/lr-export-button.md +104 -0
  471. package/llms/components/lr-file-icon.md +34 -0
  472. package/llms/components/lr-file-input.md +104 -0
  473. package/llms/components/lr-file-tree.md +29 -0
  474. package/llms/components/lr-filter-bar.md +20 -0
  475. package/llms/components/lr-flag.md +122 -0
  476. package/llms/components/lr-flow-canvas.md +112 -0
  477. package/llms/components/lr-flow-controls.md +47 -0
  478. package/llms/components/lr-flow-minimap.md +52 -0
  479. package/llms/components/lr-flow-node.md +56 -0
  480. package/llms/components/lr-flow-run-overlay.md +56 -0
  481. package/llms/components/lr-format-bytes.md +31 -0
  482. package/llms/components/lr-format-date.md +33 -0
  483. package/llms/components/lr-format-number.md +41 -0
  484. package/llms/components/lr-gauge.md +65 -0
  485. package/llms/components/lr-generation-status.md +105 -0
  486. package/llms/components/lr-geojson-view.md +43 -0
  487. package/llms/components/lr-graph-legend.md +64 -0
  488. package/llms/components/lr-graph-query-builder.md +27 -0
  489. package/llms/components/lr-graph.md +224 -0
  490. package/llms/components/lr-grounding-summary.md +57 -0
  491. package/llms/components/lr-handoff-divider.md +27 -0
  492. package/llms/components/lr-heatmap.md +232 -0
  493. package/llms/components/lr-highlight-layer.md +31 -0
  494. package/llms/components/lr-histogram.md +69 -0
  495. package/llms/components/lr-html-viewer.md +30 -0
  496. package/llms/components/lr-icon-button.md +39 -0
  497. package/llms/components/lr-icon.md +36 -0
  498. package/llms/components/lr-image-comparer.md +38 -0
  499. package/llms/components/lr-image-viewer.md +35 -0
  500. package/llms/components/lr-include.md +53 -0
  501. package/llms/components/lr-ingestion-queue.md +60 -0
  502. package/llms/components/lr-input.md +82 -0
  503. package/llms/components/lr-intersection-observer.md +25 -0
  504. package/llms/components/lr-json-viewer.md +98 -0
  505. package/llms/components/lr-kbd.md +74 -0
  506. package/llms/components/lr-knowledge-base.md +64 -0
  507. package/llms/components/lr-knowledge-graph-explorer.md +92 -0
  508. package/llms/components/lr-known-date.md +84 -0
  509. package/llms/components/lr-lightbox.md +79 -0
  510. package/llms/components/lr-line-chart.md +70 -0
  511. package/llms/components/lr-lite-chart.md +143 -0
  512. package/llms/components/lr-live-region.md +105 -0
  513. package/llms/components/lr-map.md +127 -0
  514. package/llms/components/lr-markdown-core.md +70 -0
  515. package/llms/components/lr-markdown.md +171 -0
  516. package/llms/components/lr-media-card.md +106 -0
  517. package/llms/components/lr-memory-panel.md +67 -0
  518. package/llms/components/lr-mention-popover.md +139 -0
  519. package/llms/components/lr-menu-item.md +171 -0
  520. package/llms/components/lr-menu.md +171 -0
  521. package/llms/components/lr-message-actions.md +48 -0
  522. package/llms/components/lr-message-feedback.md +37 -0
  523. package/llms/components/lr-mind-map.md +64 -0
  524. package/llms/components/lr-model-select.md +144 -0
  525. package/llms/components/lr-model-settings-panel.md +99 -0
  526. package/llms/components/lr-mutation-observer.md +27 -0
  527. package/llms/components/lr-neighbor-list.md +56 -0
  528. package/llms/components/lr-node-palette.md +67 -0
  529. package/llms/components/lr-notebook-viewer.md +65 -0
  530. package/llms/components/lr-number-input.md +44 -0
  531. package/llms/components/lr-option.md +196 -0
  532. package/llms/components/lr-page-rail.md +37 -0
  533. package/llms/components/lr-pagination.md +88 -0
  534. package/llms/components/lr-path-strip.md +55 -0
  535. package/llms/components/lr-pdf-viewer.md +78 -0
  536. package/llms/components/lr-phone-input.md +162 -0
  537. package/llms/components/lr-pie-chart.md +70 -0
  538. package/llms/components/lr-playback.md +74 -0
  539. package/llms/components/lr-polar-area-chart.md +70 -0
  540. package/llms/components/lr-policy-summary.md +33 -0
  541. package/llms/components/lr-poll-status.md +71 -0
  542. package/llms/components/lr-popover.md +31 -0
  543. package/llms/components/lr-pptx-viewer.md +35 -0
  544. package/llms/components/lr-progress-bar.md +22 -0
  545. package/llms/components/lr-progress-ring.md +26 -0
  546. package/llms/components/lr-provenance-panel.md +58 -0
  547. package/llms/components/lr-push-to-talk.md +50 -0
  548. package/llms/components/lr-qr-code.md +20 -0
  549. package/llms/components/lr-query-builder.md +21 -0
  550. package/llms/components/lr-radar-chart.md +70 -0
  551. package/llms/components/lr-radio-group.md +25 -0
  552. package/llms/components/lr-radio.md +31 -0
  553. package/llms/components/lr-random-content.md +62 -0
  554. package/llms/components/lr-rating.md +21 -0
  555. package/llms/components/lr-relative-time.md +31 -0
  556. package/llms/components/lr-resize-observer.md +25 -0
  557. package/llms/components/lr-responsive-panel.md +112 -0
  558. package/llms/components/lr-result-card.md +88 -0
  559. package/llms/components/lr-result-field.md +88 -0
  560. package/llms/components/lr-retrieval-results.md +84 -0
  561. package/llms/components/lr-retrieval-search.md +70 -0
  562. package/llms/components/lr-retrieval-trace.md +59 -0
  563. package/llms/components/lr-rubric-form.md +37 -0
  564. package/llms/components/lr-scatter-chart.md +70 -0
  565. package/llms/components/lr-scroller.md +47 -0
  566. package/llms/components/lr-segmented.md +74 -0
  567. package/llms/components/lr-select.md +113 -0
  568. package/llms/components/lr-sequence-strip.md +95 -0
  569. package/llms/components/lr-skeleton.md +53 -0
  570. package/llms/components/lr-slider.md +92 -0
  571. package/llms/components/lr-source-card.md +131 -0
  572. package/llms/components/lr-source-list.md +131 -0
  573. package/llms/components/lr-source-picker.md +63 -0
  574. package/llms/components/lr-span-waterfall.md +42 -0
  575. package/llms/components/lr-sparkline.md +60 -0
  576. package/llms/components/lr-spinner.md +32 -0
  577. package/llms/components/lr-split.md +191 -0
  578. package/llms/components/lr-spreadsheet-viewer.md +47 -0
  579. package/llms/components/lr-stack-trace.md +77 -0
  580. package/llms/components/lr-stat.md +89 -0
  581. package/llms/components/lr-stepper.md +118 -0
  582. package/llms/components/lr-stream-status.md +128 -0
  583. package/llms/components/lr-streaming-text.md +101 -0
  584. package/llms/components/lr-suggestion-chips.md +40 -0
  585. package/llms/components/lr-svg-viewer.md +47 -0
  586. package/llms/components/lr-swatch-picker.md +91 -0
  587. package/llms/components/lr-switch.md +82 -0
  588. package/llms/components/lr-table.md +201 -0
  589. package/llms/components/lr-tabs.md +80 -0
  590. package/llms/components/lr-tag.md +25 -0
  591. package/llms/components/lr-task-list.md +42 -0
  592. package/llms/components/lr-terminal.md +44 -0
  593. package/llms/components/lr-test-results.md +38 -0
  594. package/llms/components/lr-textarea.md +111 -0
  595. package/llms/components/lr-thinking-panel.md +93 -0
  596. package/llms/components/lr-thread-list.md +97 -0
  597. package/llms/components/lr-time-input.md +53 -0
  598. package/llms/components/lr-time-range.md +91 -0
  599. package/llms/components/lr-timeline-item.md +65 -0
  600. package/llms/components/lr-timeline.md +65 -0
  601. package/llms/components/lr-toast-item.md +123 -0
  602. package/llms/components/lr-toast.md +123 -0
  603. package/llms/components/lr-token-input.md +31 -0
  604. package/llms/components/lr-tool-approval-dialog.md +131 -0
  605. package/llms/components/lr-tool-call-chip.md +101 -0
  606. package/llms/components/lr-tool-param-form.md +148 -0
  607. package/llms/components/lr-tool-result-dialog.md +106 -0
  608. package/llms/components/lr-tool-result-view.md +162 -0
  609. package/llms/components/lr-tool-select-dialog.md +124 -0
  610. package/llms/components/lr-tool-timeline.md +56 -0
  611. package/llms/components/lr-tooltip.md +47 -0
  612. package/llms/components/lr-tour.md +100 -0
  613. package/llms/components/lr-trace-tree.md +35 -0
  614. package/llms/components/lr-transcript-feed.md +45 -0
  615. package/llms/components/lr-tree-node.md +133 -0
  616. package/llms/components/lr-tree.md +133 -0
  617. package/llms/components/lr-typing-indicator.md +80 -0
  618. package/llms/components/lr-usage-badge.md +44 -0
  619. package/llms/components/lr-virtual-list.md +145 -0
  620. package/llms/components/lr-voice-picker.md +78 -0
  621. package/llms/components/lr-widget-renderer.md +78 -0
  622. package/llms/components/lr-widget.md +104 -0
  623. package/llms/components/lr-word-cloud.md +112 -0
  624. package/llms/components/lr-xml-viewer.md +58 -0
  625. package/llms/components/lr-zoomable-frame.md +57 -0
  626. package/llms/index.md +301 -0
  627. package/llms/migration.md +86 -0
  628. package/llms/peers.md +41 -0
  629. package/llms/shared.md +321 -0
  630. package/llms/tokens.md +533 -0
  631. package/llms-full.txt +10731 -8563
  632. package/llms.txt +64 -121
  633. package/package.json +14 -2
  634. package/vscode-css-data.json +1424 -185
  635. package/vscode-html-data.json +128 -107
  636. 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
+ ```