@aceshooting/lyra-ui 9.1.1 → 10.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/CHANGELOG.md +597 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migrate-wa.mjs +52 -0
  4. package/dist/cli/migration-contract.json +1 -1
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
  7. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  8. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
  9. package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
  10. package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
  11. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
  12. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
  13. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
  14. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
  15. package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
  16. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
  17. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
  18. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
  19. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
  20. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
  21. package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
  22. package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
  23. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
  24. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
  25. package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
  26. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  27. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
  28. package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
  29. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
  30. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  31. package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
  32. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  33. package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
  34. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
  35. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
  36. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
  37. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
  38. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
  39. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
  40. package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
  41. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
  42. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
  43. package/dist/components/charts/chart/box-plot.styles.js +0 -20
  44. package/dist/components/charts/chart/chart-colors.d.ts +1 -1
  45. package/dist/components/charts/chart/chart-colors.js +1 -1
  46. package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
  47. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  48. package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
  49. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  50. package/dist/components/charts/chart/chart.class.d.ts +93 -0
  51. package/dist/components/charts/chart/chart.class.js +3 -3
  52. package/dist/components/charts/chart/chart.styles.js +0 -27
  53. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
  54. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  55. package/dist/components/charts/chart/lite-chart.styles.js +0 -27
  56. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
  57. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
  58. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
  59. package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
  60. package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
  61. package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
  62. package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
  63. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  64. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
  65. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  66. package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
  67. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
  68. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  69. package/dist/components/conversation/code-block/code-block.styles.js +4 -95
  70. package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
  71. package/dist/components/conversation/code-block/code-loader.js +1 -1
  72. package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
  73. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  74. package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
  75. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  76. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
  77. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  78. package/dist/components/conversation/markdown/markdown.styles.js +0 -41
  79. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
  80. package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
  81. package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
  82. package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
  83. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  84. package/dist/components/conversation/model-select/model-select.styles.js +12 -47
  85. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
  86. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
  87. package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
  88. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
  89. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
  90. package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
  91. package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
  92. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
  93. package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
  94. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
  95. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  96. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
  97. package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
  98. package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
  99. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  100. package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
  101. package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
  102. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  103. package/dist/components/data/calendar/calendar.class.d.ts +15 -2
  104. package/dist/components/data/calendar/calendar.class.js +2 -2
  105. package/dist/components/data/calendar/calendar.styles.js +2 -28
  106. package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
  107. package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
  108. package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
  109. package/dist/components/data/context-meter/context-meter.styles.js +0 -24
  110. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  111. package/dist/components/data/data-grid/data-grid.styles.js +0 -22
  112. package/dist/components/data/document-library/document-library.class.js +2 -2
  113. package/dist/components/data/document-library/document-library.styles.js +0 -4
  114. package/dist/components/data/env-list/env-list.class.js +1 -1
  115. package/dist/components/data/env-list/env-list.styles.js +7 -4
  116. package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
  117. package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
  118. package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
  119. package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
  120. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  121. package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
  122. package/dist/components/data/flow-node/flow-node.styles.js +0 -23
  123. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  124. package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
  125. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
  126. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  127. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
  128. package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
  129. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  130. package/dist/components/data/heatmap/heatmap.class.d.ts +84 -1
  131. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  132. package/dist/components/data/heatmap/heatmap.styles.js +0 -54
  133. package/dist/components/data/pagination/pagination.styles.js +23 -46
  134. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
  135. package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
  136. package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
  137. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  138. package/dist/components/data/stat/stat.styles.js +0 -67
  139. package/dist/components/data/table/table.class.d.ts +42 -3
  140. package/dist/components/data/table/table.class.js +4 -4
  141. package/dist/components/data/table/table.styles.js +20 -91
  142. package/dist/components/data/timeline/timeline-item.styles.js +0 -30
  143. package/dist/components/data/timeline/timeline.class.d.ts +89 -1
  144. package/dist/components/data/timeline/timeline.class.js +2 -2
  145. package/dist/components/data/timeline/timeline.styles.js +111 -31
  146. package/dist/components/data/tree/tree-item.styles.js +1 -28
  147. package/dist/components/data/tree/tree.class.js +2 -2
  148. package/dist/components/data/tree/tree.styles.js +0 -6
  149. package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
  150. package/dist/components/forms/button/button.class.js +1 -1
  151. package/dist/components/forms/button/button.styles.js +0 -105
  152. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  153. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  154. package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
  155. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
  156. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  157. package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
  158. package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
  159. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  160. package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
  161. package/dist/components/forms/combobox/combobox.class.js +2 -2
  162. package/dist/components/forms/combobox/combobox.styles.js +22 -111
  163. package/dist/components/forms/combobox/option.styles.js +7 -1
  164. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  165. package/dist/components/forms/date-picker/date-input.styles.js +12 -67
  166. package/dist/components/forms/date-picker/date-picker.class.d.ts +1 -0
  167. package/dist/components/forms/date-picker/date-picker.class.js +22 -20
  168. package/dist/components/forms/date-picker/date-picker.styles.js +36 -29
  169. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
  170. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  171. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
  172. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  173. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
  174. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  175. package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
  176. package/dist/components/forms/input/input.styles.js +0 -54
  177. package/dist/components/forms/input/number-input.styles.d.ts +4 -5
  178. package/dist/components/forms/input/number-input.styles.js +0 -11
  179. package/dist/components/forms/input/time-input-shared.d.ts +11 -0
  180. package/dist/components/forms/input/time-input-shared.js +1 -1
  181. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  182. package/dist/components/forms/input/time-input.class.js +1 -1
  183. package/dist/components/forms/input/time-input.styles.js +0 -6
  184. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  185. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
  186. package/dist/components/forms/otp-input/otp-input.class.js +3 -3
  187. package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
  188. package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
  189. package/dist/components/forms/phone-input/phone-input.class.js +2 -2
  190. package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
  191. package/dist/components/forms/radio/radio-button.styles.js +1 -30
  192. package/dist/components/forms/radio/radio-group.styles.js +0 -4
  193. package/dist/components/forms/radio/radio.styles.js +0 -44
  194. package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
  195. package/dist/components/forms/select/select.class.js +1 -1
  196. package/dist/components/forms/select/select.styles.js +14 -114
  197. package/dist/components/forms/slider/slider.styles.js +0 -55
  198. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
  199. package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
  200. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
  201. package/dist/components/forms/switch/switch.class.d.ts +3 -0
  202. package/dist/components/forms/switch/switch.class.js +1 -1
  203. package/dist/components/forms/switch/switch.styles.js +0 -37
  204. package/dist/components/forms/textarea/textarea.styles.js +0 -28
  205. package/dist/components/forms/time-range/time-range.styles.js +12 -84
  206. package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
  207. package/dist/components/forms/token-input/token-input.class.js +1 -1
  208. package/dist/components/forms/token-input/token-input.styles.js +1 -54
  209. package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
  210. package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
  211. package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
  212. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  213. package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
  214. package/dist/components/layout/button-group/button-group.styles.js +0 -6
  215. package/dist/components/layout/card/card.class.d.ts +12 -0
  216. package/dist/components/layout/card/card.styles.js +3 -11
  217. package/dist/components/layout/carousel/carousel.styles.js +0 -1
  218. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
  219. package/dist/components/layout/command-palette/command-palette.class.js +3 -1
  220. package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
  221. package/dist/components/layout/control-group/control-group.styles.js +0 -7
  222. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
  223. package/dist/components/layout/details/accordion.class.d.ts +13 -0
  224. package/dist/components/layout/details/accordion.class.js +1 -1
  225. package/dist/components/layout/details/details.class.js +1 -1
  226. package/dist/components/layout/details/details.styles.js +0 -12
  227. package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
  228. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
  229. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  230. package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
  231. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  232. package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
  233. package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
  234. package/dist/components/layout/menu/menu-item.class.js +1 -1
  235. package/dist/components/layout/menu/menu-item.styles.js +0 -49
  236. package/dist/components/layout/menu/menu-label.styles.js +0 -2
  237. package/dist/components/layout/menu/menu.styles.js +0 -18
  238. package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
  239. package/dist/components/layout/page/page.class.d.ts +4 -0
  240. package/dist/components/layout/page/page.class.js +1 -1
  241. package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
  242. package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
  243. package/dist/components/layout/scroller/scroller.styles.js +0 -20
  244. package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
  245. package/dist/components/layout/segmented/segmented.class.js +1 -1
  246. package/dist/components/layout/segmented/segmented.styles.js +69 -37
  247. package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
  248. package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
  249. package/dist/components/layout/stepper/stepper.class.js +1 -1
  250. package/dist/components/layout/stepper/stepper.styles.js +140 -41
  251. package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
  252. package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
  253. package/dist/components/layout/tab-group/tab.styles.js +0 -2
  254. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
  255. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  256. package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
  257. package/dist/components/layout/widget/widget.class.d.ts +5 -1
  258. package/dist/components/layout/widget/widget.class.js +1 -1
  259. package/dist/components/layout/widget/widget.styles.js +97 -40
  260. package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
  261. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  262. package/dist/components/media/animated-image/animated-image.styles.js +0 -28
  263. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
  264. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  265. package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
  266. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
  267. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
  268. package/dist/components/media/av-player/av-player.class.d.ts +5 -6
  269. package/dist/components/media/av-player/av-player.class.js +1 -1
  270. package/dist/components/media/av-player/av-player.styles.js +0 -45
  271. package/dist/components/media/avatar/avatar.styles.js +3 -16
  272. package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
  273. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  274. package/dist/components/media/file-input/file-input.class.d.ts +12 -0
  275. package/dist/components/media/file-input/file-input.styles.js +3 -24
  276. package/dist/components/media/flag/flag.class.d.ts +20 -0
  277. package/dist/components/media/flag/flag.class.js +4 -2
  278. package/dist/components/media/flag/flag.styles.js +7 -1
  279. package/dist/components/media/flag/language-map.d.ts +10 -0
  280. package/dist/components/media/flag/language-map.js +1 -1
  281. package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
  282. package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
  283. package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
  284. package/dist/components/media/lightbox/lightbox.class.js +0 -2
  285. package/dist/components/media/lightbox/lightbox.styles.js +0 -21
  286. package/dist/components/media/map/map-loader.d.ts +19 -1
  287. package/dist/components/media/map/map-loader.js +1 -1
  288. package/dist/components/media/map/map.class.d.ts +141 -1
  289. package/dist/components/media/map/map.class.js +15 -3
  290. package/dist/components/media/map/map.styles.js +20 -17
  291. package/dist/components/media/media-card/media-card.class.d.ts +14 -3
  292. package/dist/components/media/media-card/media-card.class.js +1 -1
  293. package/dist/components/media/media-card/media-card.styles.js +2 -28
  294. package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
  295. package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
  296. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  297. package/dist/components/media/qr-code/qr-code.styles.js +0 -3
  298. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
  299. package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
  300. package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
  301. package/dist/components/media/video/video.class.d.ts +23 -2
  302. package/dist/components/media/video/video.class.js +3 -3
  303. package/dist/components/media/video/video.styles.js +4 -2
  304. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  305. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  306. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
  307. package/dist/components/overlays/alert/alert.styles.js +4 -2
  308. package/dist/components/overlays/badge/badge.styles.js +4 -48
  309. package/dist/components/overlays/badge/tag.styles.js +0 -14
  310. package/dist/components/overlays/callout/callout.styles.js +0 -11
  311. package/dist/components/overlays/chip/chip-group.styles.js +0 -18
  312. package/dist/components/overlays/chip/chip.styles.js +6 -69
  313. package/dist/components/overlays/dialog/confirm.d.ts +1 -4
  314. package/dist/components/overlays/dialog/confirm.js +1 -1
  315. package/dist/components/overlays/dialog/dialog.class.d.ts +12 -9
  316. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  317. package/dist/components/overlays/dialog/dialog.styles.js +0 -43
  318. package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
  319. package/dist/components/overlays/drawer/drawer.styles.js +0 -9
  320. package/dist/components/overlays/empty/empty.styles.js +0 -12
  321. package/dist/components/overlays/kbd/kbd.styles.js +0 -8
  322. package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
  323. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  324. package/dist/components/overlays/overlay/overlay.styles.js +0 -28
  325. package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
  326. package/dist/components/overlays/overlay/popover.class.js +2 -2
  327. package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
  328. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  329. package/dist/components/overlays/popup/popup.class.d.ts +1 -0
  330. package/dist/components/overlays/popup/popup.class.js +1 -1
  331. package/dist/components/overlays/popup/popup.styles.js +0 -15
  332. package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
  333. package/dist/components/overlays/progress/progress-ring.class.js +3 -3
  334. package/dist/components/overlays/progress/progress.styles.js +0 -21
  335. package/dist/components/overlays/rating/rating.styles.js +0 -25
  336. package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
  337. package/dist/components/overlays/spinner/spinner.styles.js +0 -3
  338. package/dist/components/overlays/toast/toast-item.styles.js +3 -45
  339. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
  340. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
  341. package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
  342. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
  343. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
  344. package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
  345. package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
  346. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
  347. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
  348. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  349. package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
  350. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
  351. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
  352. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
  353. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
  354. package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
  355. package/dist/components/retrieval/graph/graph.class.js +1 -1
  356. package/dist/components/retrieval/graph/graph.styles.js +0 -30
  357. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
  358. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
  359. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
  360. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
  361. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
  362. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
  363. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
  364. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
  365. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  366. package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
  367. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
  368. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  369. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
  370. package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
  371. package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
  372. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
  373. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
  374. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
  375. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
  376. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
  377. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
  378. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
  379. package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
  380. package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
  381. package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
  382. package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
  383. package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
  384. package/dist/components/utility/export-button/export-button.styles.js +0 -22
  385. package/dist/components/utility/icon/icon.styles.js +0 -6
  386. package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
  387. package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
  388. package/dist/components/utility/known-date/known-date.styles.js +10 -51
  389. package/dist/components/utility/live-region/live-region.styles.js +0 -4
  390. package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
  391. package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
  392. package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
  393. package/dist/components/utility/random-content/random-content.class.js +3 -2
  394. package/dist/components/utility/random-content/random-content.styles.js +6 -13
  395. package/dist/components/utility/tour/tour.class.d.ts +4 -2
  396. package/dist/components/utility/tour/tour.class.js +3 -3
  397. package/dist/components/utility/tour/tour.styles.js +0 -13
  398. package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
  399. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  400. package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
  401. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
  402. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
  403. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
  404. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
  405. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
  406. package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
  407. package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
  408. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
  409. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  410. package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
  411. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
  412. package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
  413. package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
  414. package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
  415. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
  416. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  417. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
  418. package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
  419. package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
  420. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
  421. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  422. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
  423. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  424. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
  425. package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
  426. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
  427. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
  428. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
  429. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
  430. package/dist/custom-elements-jsx.d.ts +56 -37
  431. package/dist/events.d.ts +43 -33
  432. package/dist/internal/agent-status-variants.d.ts +18 -0
  433. package/dist/internal/agent-status-variants.js +1 -0
  434. package/dist/internal/announcer.d.ts +8 -3
  435. package/dist/internal/announcer.js +1 -1
  436. package/dist/internal/autoloader-manifest.js +1 -1
  437. package/dist/internal/canvas-color.d.ts +16 -0
  438. package/dist/internal/canvas-color.js +1 -1
  439. package/dist/internal/catalog-picker.d.ts +0 -1
  440. package/dist/internal/catalog-picker.js +1 -1
  441. package/dist/internal/default-strings.generated.d.ts +1 -0
  442. package/dist/internal/default-strings.generated.js +1 -1
  443. package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
  444. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  445. package/dist/internal/localization-runtime.js +1 -1
  446. package/dist/internal/localization-types.d.ts +1 -1
  447. package/dist/internal/localization.js +1 -1
  448. package/dist/internal/lyra-element.d.ts +13 -0
  449. package/dist/internal/lyra-element.js +1 -1
  450. package/dist/internal/media-controller.js +1 -1
  451. package/dist/internal/package-metadata.d.ts +1 -1
  452. package/dist/internal/package-metadata.js +1 -1
  453. package/dist/internal/scroll-overflow.d.ts +35 -13
  454. package/dist/internal/scroll-overflow.js +1 -1
  455. package/dist/internal/sizes.styles.js +0 -2
  456. package/dist/internal/specialist-tokens.styles.js +6 -11
  457. package/dist/internal/text-highlights.d.ts +4 -1
  458. package/dist/internal/text-highlights.js +1 -1
  459. package/dist/internal/tokens/palette.styles.js +0 -15
  460. package/dist/internal/tokens.styles.js +19 -113
  461. package/dist/lyra.d.ts +8 -5
  462. package/dist/styles/reservations.css +82 -0
  463. package/dist/svelte.d.ts +56 -37
  464. package/dist/translations/ar.js +1 -1
  465. package/dist/translations/de.js +1 -1
  466. package/dist/translations/es.js +1 -1
  467. package/dist/translations/fa.js +1 -1
  468. package/dist/translations/fr.js +1 -1
  469. package/dist/translations/he.js +1 -1
  470. package/dist/translations/ja.js +1 -1
  471. package/dist/translations/pt-BR.js +1 -1
  472. package/dist/translations/ru.js +1 -1
  473. package/dist/translations/zh-CN.js +1 -1
  474. package/dist/vue.d.ts +56 -37
  475. package/llms/components/lr-accordion-item.md +12 -3
  476. package/llms/components/lr-accordion.md +11 -2
  477. package/llms/components/lr-agent-eval-dashboard.md +1 -1
  478. package/llms/components/lr-agent-trace.md +3 -1
  479. package/llms/components/lr-agent-workspace.md +20 -0
  480. package/llms/components/lr-artifact-panel.md +10 -4
  481. package/llms/components/lr-attachment-chip.md +7 -4
  482. package/llms/components/lr-attachment-trigger.md +7 -4
  483. package/llms/components/lr-av-player.md +3 -1
  484. package/llms/components/lr-avatar.md +6 -6
  485. package/llms/components/lr-bar-chart.md +4 -3
  486. package/llms/components/lr-box-plot.md +1 -1
  487. package/llms/components/lr-browser-frame.md +7 -3
  488. package/llms/components/lr-bubble-chart.md +4 -3
  489. package/llms/components/lr-calendar.md +9 -2
  490. package/llms/components/lr-card.md +24 -0
  491. package/llms/components/lr-chart.md +32 -8
  492. package/llms/components/lr-chat-viewport.md +7 -2
  493. package/llms/components/lr-checkbox-group.md +13 -5
  494. package/llms/components/lr-checkbox.md +5 -2
  495. package/llms/components/lr-checkpoint.md +6 -2
  496. package/llms/components/lr-combobox.md +5 -2
  497. package/llms/components/lr-command-palette.md +4 -1
  498. package/llms/components/lr-confirm-bar.md +7 -3
  499. package/llms/components/lr-context-meter.md +12 -11
  500. package/llms/components/lr-conversation-item.md +7 -4
  501. package/llms/components/lr-details.md +11 -2
  502. package/llms/components/lr-dialog.md +15 -10
  503. package/llms/components/lr-dock-panel.md +7 -10
  504. package/llms/components/lr-document-preview.md +6 -1
  505. package/llms/components/lr-document-viewer.md +3 -2
  506. package/llms/components/lr-doughnut-chart.md +4 -3
  507. package/llms/components/lr-drawer.md +3 -3
  508. package/llms/components/lr-entity-card.md +3 -3
  509. package/llms/components/lr-entity-chip.md +1 -1
  510. package/llms/components/lr-entity-dossier.md +4 -1
  511. package/llms/components/lr-file-input.md +2 -2
  512. package/llms/components/lr-flag.md +20 -5
  513. package/llms/components/lr-heatmap.md +28 -0
  514. package/llms/components/lr-histogram.md +3 -1
  515. package/llms/components/lr-icon.md +1 -1
  516. package/llms/components/lr-json-schema-viewer.md +2 -1
  517. package/llms/components/lr-knowledge-graph-explorer.md +8 -3
  518. package/llms/components/lr-known-date.md +4 -2
  519. package/llms/components/lr-line-chart.md +4 -3
  520. package/llms/components/lr-lite-chart.md +16 -6
  521. package/llms/components/lr-map.md +72 -8
  522. package/llms/components/lr-markdown-core.md +3 -2
  523. package/llms/components/lr-media-card.md +28 -12
  524. package/llms/components/lr-message-parts.md +2 -1
  525. package/llms/components/lr-model-select.md +9 -10
  526. package/llms/components/lr-model-settings-panel.md +9 -9
  527. package/llms/components/lr-neighbor-list.md +1 -1
  528. package/llms/components/lr-notebook-viewer.md +6 -3
  529. package/llms/components/lr-option.md +5 -2
  530. package/llms/components/lr-pdf-viewer.md +62 -2
  531. package/llms/components/lr-pie-chart.md +4 -3
  532. package/llms/components/lr-polar-area-chart.md +4 -3
  533. package/llms/components/lr-popover.md +5 -0
  534. package/llms/components/lr-progress-ring.md +8 -1
  535. package/llms/components/lr-prompt-studio.md +1 -1
  536. package/llms/components/lr-provenance-panel.md +4 -2
  537. package/llms/components/lr-qr-code.md +1 -1
  538. package/llms/components/lr-radar-chart.md +4 -3
  539. package/llms/components/lr-rag-eval-dashboard.md +2 -2
  540. package/llms/components/lr-random-content.md +13 -0
  541. package/llms/components/lr-reorder-item.md +6 -1
  542. package/llms/components/lr-reorder-list.md +6 -1
  543. package/llms/components/lr-responsive-panel.md +11 -7
  544. package/llms/components/lr-scatter-chart.md +4 -3
  545. package/llms/components/lr-sequence-strip.md +16 -2
  546. package/llms/components/lr-slider.md +12 -5
  547. package/llms/components/lr-sparkline.md +1 -1
  548. package/llms/components/lr-suggestion-chips.md +7 -2
  549. package/llms/components/lr-swatch-picker.md +5 -5
  550. package/llms/components/lr-switch.md +5 -2
  551. package/llms/components/lr-table.md +30 -4
  552. package/llms/components/lr-terminal.md +3 -1
  553. package/llms/components/lr-thread-list.md +8 -8
  554. package/llms/components/lr-time-input.md +6 -1
  555. package/llms/components/lr-timeline-item.md +24 -0
  556. package/llms/components/lr-timeline.md +25 -1
  557. package/llms/components/lr-token-input.md +7 -2
  558. package/llms/components/lr-tool-approval-dialog.md +7 -8
  559. package/llms/components/lr-tool-call-chip.md +5 -1
  560. package/llms/components/lr-tool-param-form.md +14 -12
  561. package/llms/components/lr-tool-result-dialog.md +11 -9
  562. package/llms/components/lr-tool-result-view.md +7 -6
  563. package/llms/components/lr-tool-select-dialog.md +18 -16
  564. package/llms/components/lr-trace-tree.md +3 -1
  565. package/llms/components/lr-usage-badge.md +4 -1
  566. package/llms/components/lr-video-playlist.md +1 -1
  567. package/llms/components/lr-virtual-list.md +22 -14
  568. package/llms/components/lr-voice-picker.md +8 -5
  569. package/llms/components/lr-widget-renderer.md +3 -3
  570. package/llms/components/lr-widget.md +1 -1
  571. package/llms/components/lr-word-cloud.md +6 -2
  572. package/llms/peers.md +12 -2
  573. package/llms/shared.md +70 -2
  574. package/llms-full.txt +1143 -285
  575. package/package.json +17 -5
  576. package/vscode-css-data.json +37 -2
  577. package/vscode-html-data.json +401 -44
  578. package/web-types.json +299 -55
@@ -34,7 +34,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
34
34
  .renderItem=${item=>this.entryTemplate(item,!1)}
35
35
  .keyFunction=${item=>item.id}
36
36
  aria-label=${ariaLabel}
37
- @lr-visible-range-changed=${this.onVirtualListRangeChanged}
37
+ @lr-visible-range-change=${this.onVirtualListRangeChanged}
38
38
  ></lr-virtual-list>`:repeat(entries,entry=>entry.id,entry=>this.entryTemplate(entry,!0))}
39
39
  </div>
40
40
  <lr-live-region></lr-live-region>
@@ -27,9 +27,6 @@ import{css}from"lit";const styles=css`
27
27
  background: var(--lr-color-brand-quiet);
28
28
  color: var(--lr-color-brand);
29
29
  }
30
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
31
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
32
- than hover in both light and dark themes rather than repeating it. */
33
30
  [part="header"]:active {
34
31
  background: color-mix(
35
32
  in oklab,
@@ -112,13 +109,6 @@ import{css}from"lit";const styles=css`
112
109
  var(--_lr-activity-feed-max-height)
113
110
  );
114
111
  }
115
- /* Every entry rule below is paired with an lr-virtual-list::part(x) twin because this component
116
- renders entries through two paths. Below virtualize-at, entryTemplate()'s result is
117
- committed into this component's own shadow root and the plain [part=] selector matches. At or
118
- above it, the exact same template becomes <lr-virtual-list>'s .renderItem, and Lit commits it
119
- wherever virtual-list's own render() is updating -- i.e. inside *its* shadow root, a different
120
- shadow tree that a [part=] selector scoped to this one can never reach. ::part() crosses that
121
- single boundary. Both selectors are load-bearing; dropping either silently unstyles one path. */
122
112
  [part="entry"],
123
113
  lr-virtual-list::part(entry) {
124
114
  display: flex;
@@ -141,12 +131,6 @@ import{css}from"lit";const styles=css`
141
131
  block-size: var(--lr-size-0-5rem);
142
132
  border-radius: var(--lr-radius-pill);
143
133
  }
144
- /* Shadow Parts forbids an attribute selector after ::part(), so the variant cannot be matched as
145
- ::part(variant-dot)[data-variant='success'] -- that selector is invalid and would drop the rule
146
- entirely. Each variant carries a second name in the dot's part list instead; ::part() matches
147
- with part~= semantics, so both names select the same element, and a consumer gains a
148
- per-variant hook the [data-variant] form never offered. The [part~=] form is the plain-path
149
- twin: [part='variant-dot-success'] would not match a multi-name part attribute. */
150
134
  [part~="variant-dot-neutral"],
151
135
  lr-virtual-list::part(variant-dot-neutral) {
152
136
  background: var(--lr-color-text-quiet);
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./agent-eval-dashboard.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{finiteCount}from"../../../internal/numbers.js";import{agentStatusKind,agentStatusLabel,agentStatusMessage,agentStatusVariant}from"../agent-status-presentation.js";import{overallSemanticLabel}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_evaluationDashboardLabel,LYRA_DEFAULT_evaluationDashboardNoRuns,LYRA_DEFAULT_evaluationDashboardRunsLabel,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={idle:"neutral",queued:"neutral",running:"brand",collecting:"brand","waiting-input":"warning","waiting-approval":"warning",done:"success",error:"danger",cancelled:"neutral"};class LyraAgentEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId=null,this.currency="USD",this.showChart=!0,this.chartHeight="220px",this.maxRenderedRuns=100}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,chartValueLabel:LYRA_DEFAULT_chartValueLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,evaluationDashboardLabel:LYRA_DEFAULT_evaluationDashboardLabel,evaluationDashboardNoRuns:LYRA_DEFAULT_evaluationDashboardNoRuns,evaluationDashboardRunsLabel:LYRA_DEFAULT_evaluationDashboardRunsLabel,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByIdentity(Array.isArray(this.runs)?this.runs:[],run=>run.id)}get activeMetric(){const metrics=this.normalizedMetrics;return this.metricId===null?metrics[0]:metrics.find(metric=>metric.id===this.metricId)??metrics[0]}statusLabel(status){const override=agentStatusLabel(status);if(override!==void 0)return override;const kind=agentStatusKind(status),keys={idle:"agentRunStatusIdle",queued:"agentRunStatusQueued",running:"statusRunning",collecting:"agentRunStatusCollecting","waiting-input":"agentRunStatusWaitingInput","waiting-approval":"agentRunStatusWaitingApproval",done:"agentRunStatusDone",error:"statusError",cancelled:"agentRunStatusCancelled"};return keys[kind]?this.localize(keys[kind]):kind.replace(/[-_]+/g," ")}get projectedRuns(){const limit=Math.max(1,finiteCount(this.maxRenderedRuns,100,500));return this.normalizedRuns.slice(0,limit)}formatMetric(metric,value=metric.value){const safe=Number.isFinite(value)?value:0;switch(metric.format){case"percent":return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(safe);case"milliseconds":return getNumberFormat(this.effectiveLocale,{style:"unit",unit:"millisecond",unitDisplay:"short",maximumFractionDigits:0}).format(safe);case"currency":try{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:this.currency,maximumFractionDigits:2}).format(safe)}catch{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:"USD",maximumFractionDigits:2}).format(safe)}default:return getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2}).format(safe)}}renderRuns(runs){if(!runs.length)return html`<p part="empty">${this.localize("evaluationDashboardNoRuns")}</p>`;const active=this.activeMetric;return html`<section part="runs" aria-label=${this.localize("evaluationDashboardRunsLabel")}><h3 part="runs-heading">${this.localize("evaluationDashboardRunsLabel")}</h3>${runs.map(run=>{const kind=agentStatusKind(run.status),message=agentStatusMessage(run.status);return html`<button part="run" type="button" @click=${()=>this.emit("lr-run-activate",{runId:run.id,run})}><span part="run-label">${run.label}</span><span part="run-meta"><lr-badge part="run-status" variant=${agentStatusVariant(run.status,STATUS_VARIANT[kind]??"neutral")}>${this.statusLabel(run.status)}</lr-badge>${message!==void 0?html`<span part="run-status-message">${message}</span>`:nothing}${active&&run.metrics?.[active.id]!=null?html`<span>${this.formatMetric(active,run.metrics[active.id])}</span>`:nothing}</span></button>`})}</section>`}render(){const label=this.label==null?this.localize("evaluationDashboardLabel"):this.label,semanticLabel=overallSemanticLabel(this,label),active=this.activeMetric,runs=this.projectedRuns,metrics=this.normalizedMetrics,values=runs.map(run=>{const value=active?run.metrics?.[active.id]:void 0;return value!=null&&Number.isFinite(value)?value:null});return html`<section part="base" aria-label=${semanticLabel??nothing}>
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{AGENT_STATUS_VARIANTS}from"../../../internal/agent-status-variants.js";import{styles}from"./agent-eval-dashboard.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{finiteCount}from"../../../internal/numbers.js";import{agentStatusKind,agentStatusLabel,agentStatusMessage,agentStatusVariant}from"../agent-status-presentation.js";import{overallSemanticLabel}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_evaluationDashboardLabel,LYRA_DEFAULT_evaluationDashboardNoRuns,LYRA_DEFAULT_evaluationDashboardRunsLabel,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";class LyraAgentEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId=null,this.currency="USD",this.showChart=!0,this.chartHeight="220px",this.maxRenderedRuns=100}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,chartValueLabel:LYRA_DEFAULT_chartValueLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,evaluationDashboardLabel:LYRA_DEFAULT_evaluationDashboardLabel,evaluationDashboardNoRuns:LYRA_DEFAULT_evaluationDashboardNoRuns,evaluationDashboardRunsLabel:LYRA_DEFAULT_evaluationDashboardRunsLabel,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByIdentity(Array.isArray(this.runs)?this.runs:[],run=>run.id)}get activeMetric(){const metrics=this.normalizedMetrics;return this.metricId===null?metrics[0]:metrics.find(metric=>metric.id===this.metricId)??metrics[0]}statusLabel(status){const override=agentStatusLabel(status);if(override!==void 0)return override;const kind=agentStatusKind(status),keys={idle:"agentRunStatusIdle",queued:"agentRunStatusQueued",running:"statusRunning",collecting:"agentRunStatusCollecting","waiting-input":"agentRunStatusWaitingInput","waiting-approval":"agentRunStatusWaitingApproval",done:"agentRunStatusDone",error:"statusError",cancelled:"agentRunStatusCancelled"};return keys[kind]?this.localize(keys[kind]):kind.replace(/[-_]+/g," ")}get projectedRuns(){const limit=Math.max(1,finiteCount(this.maxRenderedRuns,100,500));return this.normalizedRuns.slice(0,limit)}formatMetric(metric,value=metric.value){const safe=Number.isFinite(value)?value:0;switch(metric.format){case"percent":return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(safe);case"milliseconds":return getNumberFormat(this.effectiveLocale,{style:"unit",unit:"millisecond",unitDisplay:"short",maximumFractionDigits:0}).format(safe);case"currency":try{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:this.currency,maximumFractionDigits:2}).format(safe)}catch{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:"USD",maximumFractionDigits:2}).format(safe)}default:return getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2}).format(safe)}}renderRuns(runs){if(!runs.length)return html`<p part="empty">${this.localize("evaluationDashboardNoRuns")}</p>`;const active=this.activeMetric;return html`<section part="runs" aria-label=${this.localize("evaluationDashboardRunsLabel")}><h3 part="runs-heading">${this.localize("evaluationDashboardRunsLabel")}</h3>${runs.map(run=>{const kind=agentStatusKind(run.status),message=agentStatusMessage(run.status);return html`<button part="run" type="button" @click=${()=>this.emit("lr-run-activate",{runId:run.id,run})}><span part="run-label">${run.label}</span><span part="run-meta"><lr-badge part="run-status" variant=${agentStatusVariant(run.status,AGENT_STATUS_VARIANTS[kind]??"neutral")}>${this.statusLabel(run.status)}</lr-badge>${message!==void 0?html`<span part="run-status-message">${message}</span>`:nothing}${active&&run.metrics?.[active.id]!=null?html`<span>${this.formatMetric(active,run.metrics[active.id])}</span>`:nothing}</span></button>`})}</section>`}render(){const label=this.label==null?this.localize("evaluationDashboardLabel"):this.label,semanticLabel=overallSemanticLabel(this,label),active=this.activeMetric,runs=this.projectedRuns,metrics=this.normalizedMetrics,values=runs.map(run=>{const value=active?run.metrics?.[active.id]:void 0;return value!=null&&Number.isFinite(value)?value:null});return html`<section part="base" aria-label=${semanticLabel??nothing}>
2
2
  <h2 part="heading">${label}</h2>
3
3
  ${metrics.length?html`<div part="metrics">${metrics.map(metric=>{const value=this.formatMetric(metric);return html`<button
4
4
  part="metric"
@@ -21,11 +21,13 @@ import{css}from"lit";const styles=css`
21
21
  border-color: var(--lr-agent-eval-dashboard-active-border, var(--lr-color-brand));
22
22
  background: var(--lr-agent-eval-dashboard-active-background, var(--lr-color-brand-quiet));
23
23
  }
24
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
25
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
26
- than hover in both light and dark themes. It must stay after the [aria-pressed='true'] rule: the
27
- two selectors are both (0,2,0), so source order alone decides whether pressing an
28
- already-selected metric shows any feedback at all. */
24
+ [part='metric']:where([aria-pressed='true']):hover {
25
+ background: color-mix(
26
+ in oklab,
27
+ var(--lr-agent-eval-dashboard-active-background, var(--lr-color-brand-quiet)),
28
+ var(--lr-color-mix-partner) var(--lr-color-mix-hover)
29
+ );
30
+ }
29
31
  [part='metric']:active {
30
32
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
31
33
  }
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{spinnerIcon}from"../../../internal/icons.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{finiteRange}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./agent-run.styles.js";import{firstByIdentity}from"../collection-identity.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_agentRunCurrentStepLabel,LYRA_DEFAULT_agentRunStatusAnnounce,LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_cancel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";const TICKING_KINDS=new Set(["running","collecting","waiting-input","waiting-approval"]),TERMINAL_KINDS=new Set(["done","error","cancelled"]),STATUS_LABEL={idle:{key:"agentRunStatusIdle"},running:{key:"statusRunning"},queued:{key:"agentRunStatusQueued"},collecting:{key:"agentRunStatusCollecting"},"waiting-input":{key:"agentRunStatusWaitingInput"},"waiting-approval":{key:"agentRunStatusWaitingApproval"},done:{key:"agentRunStatusDone"},error:{key:"statusError"},cancelled:{key:"agentRunStatusCancelled"}},STATUS_VARIANT={idle:"neutral",running:"brand",queued:"neutral",collecting:"brand","waiting-input":"warning","waiting-approval":"warning",done:"success",error:"danger",cancelled:"neutral"},STEP_TO_TASK_STATUS={idle:"pending",running:"running",collecting:"running","waiting-input":"running","waiting-approval":"running",done:"success",error:"error",cancelled:"error"};function toTaskItem(step){return{id:step.id,label:step.label,status:STEP_TO_TASK_STATUS[step.status.kind]??"pending",detail:step.status.message}}class LyraAgentRun extends LyraElement{constructor(){super(...arguments),this.run=null,this.statusLabels={},this.statusVariants={},this.metrics=[],this.showCancel=!0,this.showRetry=!0,this.compact=!1,this.frame="card",this.retryAttempt=0,this.hasHeaderSlot=!1,this.hasSummarySlot=!1,this.onHeaderSlotChange=e=>{this.hasHeaderSlot=e.target.assignedElements({flatten:!0}).length>0},this.onSummarySlotChange=e=>{this.hasSummarySlot=e.target.assignedElements({flatten:!0}).length>0},this.onCancelClick=()=>{this.emit("lr-cancel",{})},this.onRetryClick=()=>{this.retryAttempt+=1,this.emit("lr-run-retry",{attempt:this.retryAttempt})}}static{this.defaultStrings={...super.defaultStrings,agentRunCurrentStepLabel:LYRA_DEFAULT_agentRunCurrentStepLabel,agentRunStatusAnnounce:LYRA_DEFAULT_agentRunStatusAnnounce,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,cancel:LYRA_DEFAULT_cancel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["run","statusLabels","statusVariants","metrics"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasHeaderSlot=this.hasSlotted("header"),this.hasSummarySlot=this.hasSlotted("summary")),changed.has("run")&&this.run?.id!==this.previousRunId&&(this.retryAttempt=0)}hasSlotted(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}updated(changed){super.updated(changed),changed.has("run")&&this.handleRunChange()}handleRunChange(){const runId=this.run?.id,kind=this.run?.status.kind;!(runId!==this.previousRunId)&&kind!==void 0&&kind!==this.previousStatusKind&&this.isAttentionKind(kind)&&this.announceStatus(kind),this.previousRunId=runId,this.previousStatusKind=kind}isAttentionKind(kind){return kind==="waiting-input"||kind==="waiting-approval"||TERMINAL_KINDS.has(kind)}announceStatus(kind){const region=this.liveRegion;region&&(region.mode=kind==="error"||kind==="waiting-input"||kind==="waiting-approval"?"assertive":"polite",region.announce(this.localize("agentRunStatusAnnounce",void 0,{status:this.statusLabel(kind)}),{force:!0}))}statusLabel(kind){const custom=this.statusLabels[kind];if(custom)return custom;const builtIn=STATUS_LABEL[kind];return builtIn?this.localize(builtIn.key):kind.replace(/[-_]+/g," ").replace(/\b\w/g,letter=>letter.toUpperCase())}get currentStep(){const steps=this.run?.steps;if(steps){for(let i=steps.length-1;i>=0;i--)if(steps[i].status.kind==="running")return steps[i]}}get isTicking(){const kind=this.run?.status.kind;return kind!==void 0&&TICKING_KINDS.has(kind)&&Number.isFinite(this.run?.startedAt)}get staticElapsedText(){const run=this.run;if(!run||!TERMINAL_KINDS.has(run.status.kind))return;const startedAt=run.startedAt,endedAt=run.endedAt;if(startedAt==null||endedAt==null||!Number.isFinite(startedAt)||!Number.isFinite(endedAt))return;const d=durationMessageValue(Math.max(0,endedAt-startedAt));return this.localize(d.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:d.key==="durationSeconds"?1:0}).format(d.value)})}get costText(){const cost=this.run?.costEstimate;if(cost==null||!Number.isFinite(cost))return"";const value=finiteRange(cost,cost,0);return(this.formatCost??(c=>getNumberFormat(this.effectiveLocale,{maximumFractionDigits:4}).format(c)))(value)}get canCancel(){const kind=this.run?.status.kind;return this.showCancel&&kind!==void 0&&TICKING_KINDS.has(kind)}get canRetry(){const kind=this.run?.status.kind;return this.showRetry&&(kind==="error"||kind==="cancelled")}render(){const run=this.run;if(!run)return html`<div part="base"><lr-empty part="empty" heading=${this.localize("noData")}></lr-empty></div>`;const kind=run.status.kind,step=this.currentStep,ticking=this.isTicking,staticElapsed=this.staticElapsedText,cost=this.costText,metrics=this.normalizedMetrics,hasSummary=!!run.model||cost!==""||metrics.length>0;return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{spinnerIcon}from"../../../internal/icons.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{finiteRange}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{AGENT_STATUS_VARIANTS}from"../../../internal/agent-status-variants.js";import{styles}from"./agent-run.styles.js";import{firstByIdentity}from"../collection-identity.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_agentRunCurrentStepLabel,LYRA_DEFAULT_agentRunStatusAnnounce,LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_cancel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";const TICKING_KINDS=new Set(["running","collecting","waiting-input","waiting-approval"]),TERMINAL_KINDS=new Set(["done","error","cancelled"]),STATUS_LABEL={idle:{key:"agentRunStatusIdle"},running:{key:"statusRunning"},queued:{key:"agentRunStatusQueued"},collecting:{key:"agentRunStatusCollecting"},"waiting-input":{key:"agentRunStatusWaitingInput"},"waiting-approval":{key:"agentRunStatusWaitingApproval"},done:{key:"agentRunStatusDone"},error:{key:"statusError"},cancelled:{key:"agentRunStatusCancelled"}},STEP_TO_TASK_STATUS={idle:"pending",running:"running",collecting:"running","waiting-input":"running","waiting-approval":"running",done:"success",error:"error",cancelled:"error"};function toTaskItem(step){return{id:step.id,label:step.label,status:STEP_TO_TASK_STATUS[step.status.kind]??"pending",detail:step.status.message}}class LyraAgentRun extends LyraElement{constructor(){super(...arguments),this.run=null,this.statusLabels={},this.statusVariants={},this.metrics=[],this.showCancel=!0,this.showRetry=!0,this.compact=!1,this.frame="card",this.retryAttempt=0,this.hasHeaderSlot=!1,this.hasSummarySlot=!1,this.onHeaderSlotChange=e=>{this.hasHeaderSlot=e.target.assignedElements({flatten:!0}).length>0},this.onSummarySlotChange=e=>{this.hasSummarySlot=e.target.assignedElements({flatten:!0}).length>0},this.onCancelClick=()=>{this.emit("lr-cancel",{})},this.onRetryClick=()=>{this.retryAttempt+=1,this.emit("lr-run-retry",{attempt:this.retryAttempt})}}static{this.defaultStrings={...super.defaultStrings,agentRunCurrentStepLabel:LYRA_DEFAULT_agentRunCurrentStepLabel,agentRunStatusAnnounce:LYRA_DEFAULT_agentRunStatusAnnounce,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,cancel:LYRA_DEFAULT_cancel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["run","statusLabels","statusVariants","metrics"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasHeaderSlot=this.hasSlotted("header"),this.hasSummarySlot=this.hasSlotted("summary")),changed.has("run")&&this.run?.id!==this.previousRunId&&(this.retryAttempt=0)}hasSlotted(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}updated(changed){super.updated(changed),changed.has("run")&&this.handleRunChange()}handleRunChange(){const runId=this.run?.id,kind=this.run?.status.kind;!(runId!==this.previousRunId)&&kind!==void 0&&kind!==this.previousStatusKind&&this.isAttentionKind(kind)&&this.announceStatus(kind),this.previousRunId=runId,this.previousStatusKind=kind}isAttentionKind(kind){return kind==="waiting-input"||kind==="waiting-approval"||TERMINAL_KINDS.has(kind)}announceStatus(kind){const region=this.liveRegion;region&&(region.mode=kind==="error"||kind==="waiting-input"||kind==="waiting-approval"?"assertive":"polite",region.announce(this.localize("agentRunStatusAnnounce",void 0,{status:this.statusLabel(kind)}),{force:!0}))}statusLabel(kind){const custom=this.statusLabels[kind];if(custom)return custom;const builtIn=STATUS_LABEL[kind];return builtIn?this.localize(builtIn.key):kind.replace(/[-_]+/g," ").replace(/\b\w/g,letter=>letter.toUpperCase())}get currentStep(){const steps=this.run?.steps;if(steps){for(let i=steps.length-1;i>=0;i--)if(steps[i].status.kind==="running")return steps[i]}}get isTicking(){const kind=this.run?.status.kind;return kind!==void 0&&TICKING_KINDS.has(kind)&&Number.isFinite(this.run?.startedAt)}get staticElapsedText(){const run=this.run;if(!run||!TERMINAL_KINDS.has(run.status.kind))return;const startedAt=run.startedAt,endedAt=run.endedAt;if(startedAt==null||endedAt==null||!Number.isFinite(startedAt)||!Number.isFinite(endedAt))return;const d=durationMessageValue(Math.max(0,endedAt-startedAt));return this.localize(d.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:d.key==="durationSeconds"?1:0}).format(d.value)})}get costText(){const cost=this.run?.costEstimate;if(cost==null||!Number.isFinite(cost))return"";const value=finiteRange(cost,cost,0);return(this.formatCost??(c=>getNumberFormat(this.effectiveLocale,{maximumFractionDigits:4}).format(c)))(value)}get canCancel(){const kind=this.run?.status.kind;return this.showCancel&&kind!==void 0&&TICKING_KINDS.has(kind)}get canRetry(){const kind=this.run?.status.kind;return this.showRetry&&(kind==="error"||kind==="cancelled")}render(){const run=this.run;if(!run)return html`<div part="base"><lr-empty part="empty" heading=${this.localize("noData")}></lr-empty></div>`;const kind=run.status.kind,step=this.currentStep,ticking=this.isTicking,staticElapsed=this.staticElapsedText,cost=this.costText,metrics=this.normalizedMetrics,hasSummary=!!run.model||cost!==""||metrics.length>0;return html`
2
2
  <div part="base">
3
3
  <div part="header">
4
4
  <slot name="header" @slotchange=${this.onHeaderSlotChange}></slot>
@@ -6,7 +6,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
6
6
  <div part="status">
7
7
  <lr-badge
8
8
  part="status-badge"
9
- variant=${this.statusVariants[kind]??STATUS_VARIANT[kind]??"neutral"}
9
+ variant=${this.statusVariants[kind]??AGENT_STATUS_VARIANTS[kind]??"neutral"}
10
10
  >${this.statusLabel(kind)}</lr-badge
11
11
  >
12
12
  ${run.status.message?html`<span part="status-message">${run.status.message}</span>`:nothing}
@@ -15,19 +15,10 @@ import{css}from"lit";const styles=css`
15
15
  background: var(--lr-color-surface);
16
16
  color: var(--lr-color-text);
17
17
  }
18
- /* Density escape -- same convention as lr-empty's compact. The tuned values sit behind inline
19
- var() fallbacks (rather than a :host declaration, which every instance would re-declare and so
20
- shadow any ancestor value) so a consumer can retune them from outside without restating the
21
- whole rule; the fallbacks are the pre-existing values, so an unset run renders unchanged. */
22
18
  :host([compact]) [part="base"] {
23
19
  padding: var(--lr-agent-run-compact-padding, var(--lr-space-s));
24
20
  gap: var(--lr-agent-run-compact-gap, var(--lr-space-s));
25
21
  }
26
- /* MUST stay after :host([compact]): both selectors are :host([x]) [part='base'], i.e. equal
27
- specificity, so source order alone decides which padding/gap wins when a run is both compact
28
- and frame="plain". plain is the stronger statement ("no chrome at all"), so it goes last. The built-in
29
- Cancel/Retry buttons keep their own border/background -- that chrome is theirs, not the card's,
30
- so a chrome-less run still has a visible interactive affordance. */
31
22
  :host([frame="plain"]) [part="base"] {
32
23
  padding: 0;
33
24
  border: 0;
@@ -174,10 +165,6 @@ import{css}from"lit";const styles=css`
174
165
  border-color: var(--lr-color-brand);
175
166
  color: var(--lr-color-brand);
176
167
  }
177
- /* Both hovers recolour the border and label only, which leaves the pressed step nothing to
178
- deepen -- so pressed tints the button's own surface fill toward --lr-color-mix-partner (which
179
- follows the text colour) instead. The :hover border/label colours still apply underneath while
180
- the pointer is down, so Cancel stays danger-toned and Retry stays brand-toned when pressed. */
181
168
  [part="cancel-button"]:active,
182
169
  [part="retry-button"]:active {
183
170
  background: color-mix(
@@ -45,10 +45,6 @@ import{css}from"lit";const styles=css`
45
45
  cursor: pointer;
46
46
  border-radius: var(--lr-radius-xs);
47
47
  }
48
- /* The handoff button has no fill of its own, so both states tint the transparent surface toward
49
- --lr-color-mix-partner (which follows the text colour): it darkens in a light theme, lightens in
50
- a dark one. Previously a hand-rolled 8% mix against --lr-color-text -- same idea, but a literal
51
- no consumer could retune and a strength no other control in the library shared. */
52
48
  [part='handoff']:hover {
53
49
  background: color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-hover));
54
50
  }
@@ -62,6 +58,13 @@ import{css}from"lit";const styles=css`
62
58
  [part='handoff'][data-active] {
63
59
  background: var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet));
64
60
  }
61
+ [part='handoff'][data-active]:active {
62
+ background: color-mix(
63
+ in oklab,
64
+ var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet)),
65
+ var(--lr-color-mix-partner) var(--lr-color-mix-active)
66
+ );
67
+ }
65
68
 
66
69
  [part='tree'] {
67
70
  max-inline-size: 100%;
@@ -64,14 +64,16 @@ import{css}from"lit";const styles=css`
64
64
  cursor: pointer;
65
65
  }
66
66
 
67
- [part='request']:hover {
67
+ [part='request']:disabled {
68
+ opacity: var(--lr-opacity-disabled);
69
+ cursor: not-allowed;
70
+ }
71
+
72
+ [part='request']:not(:disabled):hover {
68
73
  background: var(--lr-color-surface-raised);
69
74
  }
70
75
 
71
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
72
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
73
- than hover in both light and dark themes rather than repeating it. */
74
- [part='request']:active {
76
+ [part='request']:not(:disabled):active {
75
77
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
76
78
  }
77
79
 
@@ -68,9 +68,6 @@ import{css}from"lit";const styles=css`
68
68
  }
69
69
  [part='restore-button']:hover, [part='copy-button']:hover, [part='download-button']:hover,
70
70
  [part='view-button']:hover { background: var(--lr-color-brand-quiet); color: var(--lr-color-brand); }
71
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
72
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
73
- than hover in both light and dark themes rather than repeating it. */
74
71
  [part='restore-button']:active, [part='copy-button']:active, [part='download-button']:active,
75
72
  [part='view-button']:active {
76
73
  background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
@@ -1,8 +1,6 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
- /* Makes the host a query container so the @container rule below reacts to the frame's own
5
- allocated width (a sidebar, a split pane, a dialog) instead of the viewport's. */
6
4
  container-type: inline-size;
7
5
  contain-intrinsic-inline-size: var(--lr-size-20rem);
8
6
  }
@@ -59,9 +57,6 @@ import{css}from"lit";const styles=css`
59
57
  [part='stop-button']:hover {
60
58
  background: var(--lr-color-brand-quiet);
61
59
  }
62
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
63
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
64
- than hover in both light and dark themes rather than repeating it. */
65
60
  [part='take-over-button']:active,
66
61
  [part='stop-button']:active {
67
62
  background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
@@ -88,6 +83,9 @@ import{css}from"lit";const styles=css`
88
83
  block-size: 100%;
89
84
  object-fit: contain;
90
85
  }
86
+ ::slotted([hidden]:not([hidden='until-found' i])) {
87
+ display: none;
88
+ }
91
89
  [part='ping'] {
92
90
  position: absolute;
93
91
  inline-size: var(--lr-size-16px);
@@ -12,16 +12,9 @@ import{css}from"lit";const styles=css`
12
12
  border-radius: var(--lr-radius);
13
13
  padding: var(--lr-space-m);
14
14
  }
15
- /* Density escape -- same convention as lr-agent-run's compact. The tuned value sits behind an
16
- inline var() fallback (rather than a :host declaration, which every instance would re-declare
17
- and so shadow any ancestor value) so a consumer can retune it from outside without restating
18
- the whole rule; the fallback is the pre-existing value, so an unset card renders unchanged. */
19
15
  :host([compact]) [part='base'] {
20
16
  padding: var(--lr-commit-card-compact-padding, var(--lr-space-s));
21
17
  }
22
- /* MUST stay after :host([compact]): both selectors are :host([x]) [part='base'], i.e. equal
23
- specificity, so source order alone decides which padding wins when a card is both compact and
24
- frame="plain". plain is the stronger statement ("no chrome at all"), so it goes last. */
25
18
  :host([frame='plain']) [part='base'] {
26
19
  padding: 0;
27
20
  border: 0;
@@ -76,9 +69,6 @@ import{css}from"lit";const styles=css`
76
69
  cursor: pointer;
77
70
  padding: var(--lr-space-xs) 0;
78
71
  }
79
- /* Pressed, here and on [part='file'] / [part='copy-button'] below, is the hovered tint pushed a
80
- further --lr-color-mix-active toward --lr-color-mix-partner (which follows the text colour), so
81
- it reads as a distinctly deeper step than hover in both light and dark themes. */
82
72
  [part='files-toggle']:hover {
83
73
  background: var(--lr-color-brand-quiet);
84
74
  }
@@ -95,11 +95,6 @@ import{css}from"lit";const styles=css`
95
95
  [part="vote-button"]:hover {
96
96
  background: var(--lr-color-brand-quiet);
97
97
  }
98
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
99
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
100
- than hover in both light and dark themes rather than repeating it. Placed before the selected
101
- rule deliberately: once a vote is cast, the selected treatment is the state worth showing, and
102
- the button's own :hover already answers the pointer. */
103
98
  [part="vote-button"]:active {
104
99
  background: color-mix(
105
100
  in oklab,
@@ -107,7 +102,7 @@ import{css}from"lit";const styles=css`
107
102
  var(--lr-color-mix-partner) var(--lr-color-mix-active)
108
103
  );
109
104
  }
110
- [part="vote-button"]:where([data-selected]) {
105
+ [part="vote-button"][data-selected] {
111
106
  background: var(
112
107
  --lr-compare-panel-selected-background,
113
108
  var(--lr-color-brand-quiet)
@@ -122,6 +117,16 @@ import{css}from"lit";const styles=css`
122
117
  var(--lr-font-weight-semibold)
123
118
  );
124
119
  }
120
+ [part="vote-button"][data-selected]:active {
121
+ background: color-mix(
122
+ in oklab,
123
+ var(
124
+ --lr-compare-panel-selected-background,
125
+ var(--lr-color-brand-quiet)
126
+ ),
127
+ var(--lr-color-mix-partner) var(--lr-color-mix-active)
128
+ );
129
+ }
125
130
  [part="vote-button"]:disabled {
126
131
  opacity: var(--lr-opacity-disabled);
127
132
  cursor: not-allowed;
@@ -1,15 +1,7 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
- /* Makes the host a query container so the @container rule below reacts to the bar's own
5
- allocated width (a chat transcript, a split pane, a narrow dialog) instead of the
6
- viewport's. */
7
4
  container: lr-confirm-bar / inline-size;
8
- /* inline-size containment strips the box of content-based intrinsic sizing, so without this
9
- fallback the bar collapses to a sliver in any shrink-to-fit context (a flex row, a centered
10
- grid cell, a fit-content wrapper) -- the same pairing every other inline-size query
11
- container in the library declares (eval-result, mcp-app, prompt-studio). The compact host
12
- state sets container: none and is unaffected either way. */
13
5
  contain-intrinsic-inline-size: var(--lr-size-20rem);
14
6
  min-inline-size: 0;
15
7
  max-inline-size: 100%;
@@ -43,16 +35,6 @@ import{css}from"lit";const styles=css`
43
35
  justify-content: flex-end;
44
36
  gap: var(--lr-space-s);
45
37
  }
46
- /* deny-button/approve-button are <lr-button> hosts (see confirm-bar.class.ts's render()) --
47
- their own padding/border/background/color/hover/focus-visible/disabled chrome lives entirely
48
- inside lr-button's own styles.ts, driven by its "variant" property. A rule declared here
49
- against [part='deny-button']/[part='approve-button'] directly would either double up a visual
50
- effect lr-button already applies internally (hover brightness, disabled opacity both compound
51
- when applied on both the outer host and the inner native button) or be silently dead
52
- (:focus-visible never matches this outer host -- real DOM focus lands on the native <button>
53
- nested one shadow level down, inside lr-button's own shadow root, never on the host itself).
54
- Only cross-cutting FLEX-ITEM sizing concerns belong here -- the @container rule below is
55
- exactly that, and is unaffected by what part="deny-button"/"approve-button" resolves to. */
56
38
  [part='status'] {
57
39
  display: flex;
58
40
  align-items: center;
@@ -83,18 +65,8 @@ import{css}from"lit";const styles=css`
83
65
  }
84
66
  }
85
67
 
86
- /* Density escape -- same convention as lr-agent-run's/lr-commit-card's compact, and purely a
87
- density and layout knob: the card border, radius and background all stay, and frame='plain'
88
- below is what drops them. The tuned values sit behind inline var() fallbacks (rather than a
89
- :host declaration, which every instance would re-declare and so shadow any ancestor value) so a
90
- consumer can retune the density from outside without restating the whole rule. */
91
68
  :host([compact]) {
92
69
  display: inline-flex;
93
- /* The container query above measures *this* host. A compact bar exists precisely to be dropped
94
- into a narrow slot (a table cell, a card action row), so that query would fire essentially
95
- always and stretch the buttons to fill -- the exact opposite of the intent. Dropping the
96
- query container is what neutralizes it: with no containment here and (normally) no ancestor
97
- container either, the max-inline-size: 20rem query simply never matches. */
98
70
  container: none;
99
71
  }
100
72
  :host([compact]) [part='base'] {
@@ -111,31 +83,13 @@ import{css}from"lit";const styles=css`
111
83
  :host([compact]) [part='footer'] {
112
84
  flex: 0 0 auto;
113
85
  }
114
- /* Once decided the buttons unmount and [part='footer'] is left holding only the (usually
115
- unassigned) footer slot -- a zero-size flex item that would still consume one gap mid-row.
116
- display: contents drops that box so the row closes up, while any real footer-slotted
117
- content simply becomes a direct flex item of the row instead. */
118
86
  :host([compact][decision]) [part='footer'] {
119
87
  display: contents;
120
88
  }
121
- /* Chrome escape -- the shared frame='plain' treatment, same convention as lr-agent-run's and
122
- lr-result-card's. MUST stay after both :host([variant='danger']) [part='base'] and
123
- :host([compact]) [part='base']: all three are equal-specificity, so source order alone decides
124
- which border/padding wins. plain is the stronger statement ('no chrome at all'), so it goes
125
- last. The Deny/Approve lr-buttons keep their own border/background -- that chrome is theirs,
126
- not the card's -- so a chrome-less bar still has a visible interactive affordance. */
127
89
  :host([frame='plain']) [part='base'] {
128
90
  padding: 0;
129
91
  border: 0;
130
92
  border-radius: 0;
131
93
  background: transparent;
132
94
  }
133
- /* NOTE: the undecided [part='status'] is deliberately NOT collapsed here, in either presentation.
134
- [part='status']:empty above never actually matches (the part's lit template leaves
135
- whitespace-only text nodes behind, and Chromium's :empty ignores only comments), and that dead
136
- rule is load-bearing by accident: decide() focuses [part='status'] synchronously *before*
137
- setting this.decision, so anything that made the undecided status display: none would leave
138
- .focus() a no-op and drop focus to <body> the moment the buttons unmount. An empty flex item
139
- is zero-sized in both presentations; the only cost is one trailing gap at the end of a compact
140
- row. See llms/agent-tools.md. */
141
95
  `;export{styles};
@@ -27,14 +27,10 @@ import{css}from"lit";const styles=css`
27
27
  font: inherit;
28
28
  cursor: pointer;
29
29
  }
30
- /* Hover changes the border while the distinct pressed step below changes the surface fill. */
31
30
  :where([part='add-button']):hover:where(:not(:disabled)),
32
31
  :where([part='remove-button']):hover:where(:not(:disabled)) {
33
32
  border-color: var(--lr-color-brand);
34
33
  }
35
- /* The hover recolours the border only, which leaves the pressed step nothing to deepen -- so
36
- pressed tints the button's own surface fill toward --lr-color-mix-partner (which follows the
37
- text colour) instead, darkening in a light theme and lightening in a dark one. */
38
34
  :where([part='add-button']):active:where(:not(:disabled)),
39
35
  :where([part='remove-button']):active:where(:not(:disabled)) {
40
36
  background: color-mix(in oklab, var(--lr-color-surface), var(--lr-color-mix-partner) var(--lr-color-mix-active));
@@ -84,9 +80,6 @@ import{css}from"lit";const styles=css`
84
80
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
85
81
  outline-offset: var(--lr-focus-ring-offset);
86
82
  }
87
- /* no-pressed-state: a search field is a caret target, not a push target -- pointer-down places an
88
- insertion point and hands the affordance to :focus-visible, so a pressed tint would flash for
89
- one frame and then be contradicted by the focus ring. */
90
83
  :where([part='search-input']):hover:where(:not(:disabled)) {
91
84
  border-color: var(--lr-color-brand);
92
85
  }
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteCount}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{firstByIdentity}from"../collection-identity.js";import{styles}from"./evaluation-run.styles.js";import{agentStatusKind,agentStatusLabel,agentStatusMessage,agentStatusVariant,isAgentStatusTerminal}from"../agent-status-presentation.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_evaluationRunExampleCancelledAnnounce,LYRA_DEFAULT_evaluationRunExampleCompletedAnnounce,LYRA_DEFAULT_evaluationRunExampleFailedAnnounce,LYRA_DEFAULT_evaluationRunExampleLabel,LYRA_DEFAULT_evaluationRunExampleStartedAnnounce,LYRA_DEFAULT_evaluationRunExampleWaitingApprovalAnnounce,LYRA_DEFAULT_evaluationRunExampleWaitingInputAnnounce,LYRA_DEFAULT_evaluationRunFailedCount,LYRA_DEFAULT_evaluationRunGroundingHeading,LYRA_DEFAULT_evaluationRunInputHeading,LYRA_DEFAULT_evaluationRunLabel,LYRA_DEFAULT_evaluationRunOutputHeading,LYRA_DEFAULT_evaluationRunProgressLabel,LYRA_DEFAULT_evaluationRunProgressSummary,LYRA_DEFAULT_evaluationRunRunningCount,LYRA_DEFAULT_evaluationRunStatusCancelled,LYRA_DEFAULT_evaluationRunStatusIdle,LYRA_DEFAULT_evaluationRunStatusWaitingApproval,LYRA_DEFAULT_evaluationRunStatusWaitingInput,LYRA_DEFAULT_evaluationRunToolTraceHeading,LYRA_DEFAULT_noData,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={idle:"neutral",running:"brand",queued:"neutral",collecting:"brand","waiting-input":"warning","waiting-approval":"warning",done:"success",error:"danger",cancelled:"neutral"},RUNNING_ERROR_KINDS=["running","error"];class LyraEvalRun extends LyraElement{constructor(){super(...arguments),this.examples=[],this.total=null,this.label="",this.expandedIds=new Set,this.isMounting=!0,this.previousStatusById=new Map}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,evaluationRunExampleCancelledAnnounce:LYRA_DEFAULT_evaluationRunExampleCancelledAnnounce,evaluationRunExampleCompletedAnnounce:LYRA_DEFAULT_evaluationRunExampleCompletedAnnounce,evaluationRunExampleFailedAnnounce:LYRA_DEFAULT_evaluationRunExampleFailedAnnounce,evaluationRunExampleLabel:LYRA_DEFAULT_evaluationRunExampleLabel,evaluationRunExampleStartedAnnounce:LYRA_DEFAULT_evaluationRunExampleStartedAnnounce,evaluationRunExampleWaitingApprovalAnnounce:LYRA_DEFAULT_evaluationRunExampleWaitingApprovalAnnounce,evaluationRunExampleWaitingInputAnnounce:LYRA_DEFAULT_evaluationRunExampleWaitingInputAnnounce,evaluationRunFailedCount:LYRA_DEFAULT_evaluationRunFailedCount,evaluationRunGroundingHeading:LYRA_DEFAULT_evaluationRunGroundingHeading,evaluationRunInputHeading:LYRA_DEFAULT_evaluationRunInputHeading,evaluationRunLabel:LYRA_DEFAULT_evaluationRunLabel,evaluationRunOutputHeading:LYRA_DEFAULT_evaluationRunOutputHeading,evaluationRunProgressLabel:LYRA_DEFAULT_evaluationRunProgressLabel,evaluationRunProgressSummary:LYRA_DEFAULT_evaluationRunProgressSummary,evaluationRunRunningCount:LYRA_DEFAULT_evaluationRunRunningCount,evaluationRunStatusCancelled:LYRA_DEFAULT_evaluationRunStatusCancelled,evaluationRunStatusIdle:LYRA_DEFAULT_evaluationRunStatusIdle,evaluationRunStatusWaitingApproval:LYRA_DEFAULT_evaluationRunStatusWaitingApproval,evaluationRunStatusWaitingInput:LYRA_DEFAULT_evaluationRunStatusWaitingInput,evaluationRunToolTraceHeading:LYRA_DEFAULT_evaluationRunToolTraceHeading,noData:LYRA_DEFAULT_noData,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.ownedCollectionProperties=Object.freeze(["examples"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-example-citation-select","lr-example-claim-select"])}get normalizedExamples(){return firstByIdentity(Array.isArray(this.examples)?this.examples:[],example=>example.id)}willUpdate(changed){if(super.willUpdate(changed),!changed.has("examples"))return;const ids=new Set(this.normalizedExamples.map(example=>example.id));let pruned;for(const id of this.expandedIds)ids.has(id)||(pruned??=new Set(this.expandedIds),pruned.delete(id));pruned&&(this.expandedIds=pruned)}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,changed.has("examples")&&this.diffAndAnnounce(wasMounting)}statusCounts(){const counts={};for(const example of this.normalizedExamples)counts[example.status.kind]=(counts[example.status.kind]??0)+1;return counts}exampleLabel(example,index){return example.label||this.localize("evaluationRunExampleLabel",void 0,{index:getNumberFormat(this.effectiveLocale).format(index+1)})}statusText(status){const override=agentStatusLabel(status);if(override!==void 0)return override;const kind=agentStatusKind(status);switch(kind){case"idle":return this.localize("evaluationRunStatusIdle");case"running":return this.localize("statusRunning");case"queued":return this.localize("agentRunStatusQueued");case"collecting":return this.localize("agentRunStatusCollecting");case"waiting-input":return this.localize("evaluationRunStatusWaitingInput");case"waiting-approval":return this.localize("evaluationRunStatusWaitingApproval");case"done":return this.localize("statusSuccess");case"error":return this.localize("statusError");case"cancelled":return this.localize("evaluationRunStatusCancelled");default:return kind.replace(/[-_]+/g," ").replace(/\b\w/g,letter=>letter.toUpperCase())}}diffAndAnnounce(firstSight){const region=this.liveRegion,nextStatusById=new Map;this.normalizedExamples.forEach((example,index)=>{if(nextStatusById.set(example.id,example.status.kind),firstSight||!region)return;const previous=this.previousStatusById.get(example.id),kind=example.status.kind;if(previous===void 0||previous===kind)return;const label=this.exampleLabel(example,index);switch(kind){case"running":region.mode="polite",region.announce(this.localize("evaluationRunExampleStartedAnnounce",void 0,{label}),{force:!0});break;case"done":region.mode="polite",region.announce(this.localize("evaluationRunExampleCompletedAnnounce",void 0,{label}),{force:!0});break;case"error":region.mode="assertive",region.announce(this.localize("evaluationRunExampleFailedAnnounce",void 0,{label}),{force:!0});break;case"cancelled":region.mode="polite",region.announce(this.localize("evaluationRunExampleCancelledAnnounce",void 0,{label}),{force:!0});break;case"waiting-input":region.mode="polite",region.announce(this.localize("evaluationRunExampleWaitingInputAnnounce",void 0,{label}),{force:!0});break;case"waiting-approval":region.mode="polite",region.announce(this.localize("evaluationRunExampleWaitingApprovalAnnounce",void 0,{label}),{force:!0});break;case"idle":break}}),this.previousStatusById=nextStatusById}onExampleToggle(id,event){event.stopPropagation();const expanded=event.detail.open,next=new Set(this.expandedIds);expanded?next.add(id):next.delete(id),this.expandedIds=next,this.emit("lr-example-toggle",{exampleId:id,expanded})}onCitationSelect(exampleId,event){event.stopPropagation(),this.emit("lr-example-citation-select",{exampleId,citation:event.detail.citation})}onClaimSelect(exampleId,event){event.stopPropagation(),this.emit("lr-example-claim-select",{exampleId,claim:event.detail.claim})}onToolApprovalDecide(exampleId,event){event.stopPropagation(),this.emit("lr-example-tool-approval-decide",{exampleId,...event.detail},{cancelable:!0}).defaultPrevented&&event.preventDefault()}onToolActivate(exampleId,event){event.stopPropagation(),this.emit("lr-example-tool-activate",{exampleId,...event.detail})}onToolRenderError(exampleId,event){event.stopPropagation(),this.emit("lr-example-tool-render-error",{exampleId,...event.detail})}stopOwnedEvent(event){event.stopPropagation()}renderContent(content,part){return content.format==="code"?html`<lr-code-block
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{finiteCount}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{AGENT_STATUS_VARIANTS}from"../../../internal/agent-status-variants.js";import{firstByIdentity}from"../collection-identity.js";import{styles}from"./evaluation-run.styles.js";import{agentStatusKind,agentStatusLabel,agentStatusMessage,agentStatusVariant,isAgentStatusTerminal}from"../agent-status-presentation.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_evaluationRunExampleCancelledAnnounce,LYRA_DEFAULT_evaluationRunExampleCompletedAnnounce,LYRA_DEFAULT_evaluationRunExampleFailedAnnounce,LYRA_DEFAULT_evaluationRunExampleLabel,LYRA_DEFAULT_evaluationRunExampleStartedAnnounce,LYRA_DEFAULT_evaluationRunExampleWaitingApprovalAnnounce,LYRA_DEFAULT_evaluationRunExampleWaitingInputAnnounce,LYRA_DEFAULT_evaluationRunFailedCount,LYRA_DEFAULT_evaluationRunGroundingHeading,LYRA_DEFAULT_evaluationRunInputHeading,LYRA_DEFAULT_evaluationRunLabel,LYRA_DEFAULT_evaluationRunOutputHeading,LYRA_DEFAULT_evaluationRunProgressLabel,LYRA_DEFAULT_evaluationRunProgressSummary,LYRA_DEFAULT_evaluationRunRunningCount,LYRA_DEFAULT_evaluationRunStatusCancelled,LYRA_DEFAULT_evaluationRunStatusIdle,LYRA_DEFAULT_evaluationRunStatusWaitingApproval,LYRA_DEFAULT_evaluationRunStatusWaitingInput,LYRA_DEFAULT_evaluationRunToolTraceHeading,LYRA_DEFAULT_noData,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess}from"../../../internal/default-strings.generated.js";const RUNNING_ERROR_KINDS=["running","error"];class LyraEvalRun extends LyraElement{constructor(){super(...arguments),this.examples=[],this.total=null,this.label="",this.expandedIds=new Set,this.isMounting=!0,this.previousStatusById=new Map}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,evaluationRunExampleCancelledAnnounce:LYRA_DEFAULT_evaluationRunExampleCancelledAnnounce,evaluationRunExampleCompletedAnnounce:LYRA_DEFAULT_evaluationRunExampleCompletedAnnounce,evaluationRunExampleFailedAnnounce:LYRA_DEFAULT_evaluationRunExampleFailedAnnounce,evaluationRunExampleLabel:LYRA_DEFAULT_evaluationRunExampleLabel,evaluationRunExampleStartedAnnounce:LYRA_DEFAULT_evaluationRunExampleStartedAnnounce,evaluationRunExampleWaitingApprovalAnnounce:LYRA_DEFAULT_evaluationRunExampleWaitingApprovalAnnounce,evaluationRunExampleWaitingInputAnnounce:LYRA_DEFAULT_evaluationRunExampleWaitingInputAnnounce,evaluationRunFailedCount:LYRA_DEFAULT_evaluationRunFailedCount,evaluationRunGroundingHeading:LYRA_DEFAULT_evaluationRunGroundingHeading,evaluationRunInputHeading:LYRA_DEFAULT_evaluationRunInputHeading,evaluationRunLabel:LYRA_DEFAULT_evaluationRunLabel,evaluationRunOutputHeading:LYRA_DEFAULT_evaluationRunOutputHeading,evaluationRunProgressLabel:LYRA_DEFAULT_evaluationRunProgressLabel,evaluationRunProgressSummary:LYRA_DEFAULT_evaluationRunProgressSummary,evaluationRunRunningCount:LYRA_DEFAULT_evaluationRunRunningCount,evaluationRunStatusCancelled:LYRA_DEFAULT_evaluationRunStatusCancelled,evaluationRunStatusIdle:LYRA_DEFAULT_evaluationRunStatusIdle,evaluationRunStatusWaitingApproval:LYRA_DEFAULT_evaluationRunStatusWaitingApproval,evaluationRunStatusWaitingInput:LYRA_DEFAULT_evaluationRunStatusWaitingInput,evaluationRunToolTraceHeading:LYRA_DEFAULT_evaluationRunToolTraceHeading,noData:LYRA_DEFAULT_noData,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess}}static{this.ownedCollectionProperties=Object.freeze(["examples"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-example-citation-select","lr-example-claim-select"])}get normalizedExamples(){return firstByIdentity(Array.isArray(this.examples)?this.examples:[],example=>example.id)}willUpdate(changed){if(super.willUpdate(changed),!changed.has("examples"))return;const ids=new Set(this.normalizedExamples.map(example=>example.id));let pruned;for(const id of this.expandedIds)ids.has(id)||(pruned??=new Set(this.expandedIds),pruned.delete(id));pruned&&(this.expandedIds=pruned)}updated(changed){super.updated(changed);const wasMounting=this.isMounting;this.isMounting=!1,changed.has("examples")&&this.diffAndAnnounce(wasMounting)}statusCounts(){const counts={};for(const example of this.normalizedExamples)counts[example.status.kind]=(counts[example.status.kind]??0)+1;return counts}exampleLabel(example,index){return example.label||this.localize("evaluationRunExampleLabel",void 0,{index:getNumberFormat(this.effectiveLocale).format(index+1)})}statusText(status){const override=agentStatusLabel(status);if(override!==void 0)return override;const kind=agentStatusKind(status);switch(kind){case"idle":return this.localize("evaluationRunStatusIdle");case"running":return this.localize("statusRunning");case"queued":return this.localize("agentRunStatusQueued");case"collecting":return this.localize("agentRunStatusCollecting");case"waiting-input":return this.localize("evaluationRunStatusWaitingInput");case"waiting-approval":return this.localize("evaluationRunStatusWaitingApproval");case"done":return this.localize("statusSuccess");case"error":return this.localize("statusError");case"cancelled":return this.localize("evaluationRunStatusCancelled");default:return kind.replace(/[-_]+/g," ").replace(/\b\w/g,letter=>letter.toUpperCase())}}diffAndAnnounce(firstSight){const region=this.liveRegion,nextStatusById=new Map;this.normalizedExamples.forEach((example,index)=>{if(nextStatusById.set(example.id,example.status.kind),firstSight||!region)return;const previous=this.previousStatusById.get(example.id),kind=example.status.kind;if(previous===void 0||previous===kind)return;const label=this.exampleLabel(example,index);switch(kind){case"running":region.mode="polite",region.announce(this.localize("evaluationRunExampleStartedAnnounce",void 0,{label}),{force:!0});break;case"done":region.mode="polite",region.announce(this.localize("evaluationRunExampleCompletedAnnounce",void 0,{label}),{force:!0});break;case"error":region.mode="assertive",region.announce(this.localize("evaluationRunExampleFailedAnnounce",void 0,{label}),{force:!0});break;case"cancelled":region.mode="polite",region.announce(this.localize("evaluationRunExampleCancelledAnnounce",void 0,{label}),{force:!0});break;case"waiting-input":region.mode="polite",region.announce(this.localize("evaluationRunExampleWaitingInputAnnounce",void 0,{label}),{force:!0});break;case"waiting-approval":region.mode="polite",region.announce(this.localize("evaluationRunExampleWaitingApprovalAnnounce",void 0,{label}),{force:!0});break;case"idle":break}}),this.previousStatusById=nextStatusById}onExampleToggle(id,event){event.stopPropagation();const expanded=event.detail.open,next=new Set(this.expandedIds);expanded?next.add(id):next.delete(id),this.expandedIds=next,this.emit("lr-example-toggle",{exampleId:id,expanded})}onCitationSelect(exampleId,event){event.stopPropagation(),this.emit("lr-example-citation-select",{exampleId,citation:event.detail.citation})}onClaimSelect(exampleId,event){event.stopPropagation(),this.emit("lr-example-claim-select",{exampleId,claim:event.detail.claim})}onToolApprovalDecide(exampleId,event){event.stopPropagation(),this.emit("lr-example-tool-approval-decide",{exampleId,...event.detail},{cancelable:!0}).defaultPrevented&&event.preventDefault()}onToolActivate(exampleId,event){event.stopPropagation(),this.emit("lr-example-tool-activate",{exampleId,...event.detail})}onToolRenderError(exampleId,event){event.stopPropagation(),this.emit("lr-example-tool-render-error",{exampleId,...event.detail})}stopOwnedEvent(event){event.stopPropagation()}renderContent(content,part){return content.format==="code"?html`<lr-code-block
2
2
  part=${part}
3
3
  code=${content.text}
4
4
  language=${content.language??""}
@@ -53,7 +53,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
53
53
  >
54
54
  <span slot="summary" part="example-summary">
55
55
  <span part="example-label">${this.exampleLabel(example,index)}</span>
56
- <lr-badge part="example-status" variant=${agentStatusVariant(example.status,STATUS_VARIANT[kind]??"neutral")}>${this.statusText(example.status)}</lr-badge>
56
+ <lr-badge part="example-status" variant=${agentStatusVariant(example.status,AGENT_STATUS_VARIANTS[kind]??"neutral")}>${this.statusText(example.status)}</lr-badge>
57
57
  ${message!==void 0?html`<span part="example-status-message">${message}</span>`:nothing}
58
58
  </span>
59
59
  ${expanded?html`
@@ -22,12 +22,7 @@ import{css}from"lit";const styles=css`
22
22
  padding-inline: var(--lr-space-s) var(--lr-space-l);
23
23
  cursor: pointer;
24
24
  }
25
- /* The select's popup list is still painted by the browser from these options; without an
26
- explicit surface/text pairing it falls back to UA colors (a white panel in dark themes). */
27
25
  [part='message-role'] option { background: var(--lr-color-surface); color: var(--lr-color-text); }
28
- /* appearance: none strips the native dropdown affordance, so this chevron -- matching
29
- av-player's [part='rate-select'] / image-viewer's [part='fit-control'] pattern -- replaces
30
- it; without one a visible, functional <select> would read as a plain bordered box. */
31
26
  .message-role-chevron {
32
27
  position: absolute;
33
28
  inset-inline-end: var(--lr-space-xs);
@@ -37,10 +32,6 @@ import{css}from"lit";const styles=css`
37
32
  pointer-events: none;
38
33
  }
39
34
  .message-role-chevron svg { transform: rotate(90deg); }
40
- /* no-pressed-state: these three are field surfaces, not push targets -- pointer-down on the
41
- textarea or the text input places a caret, and pointer-down on the role select hands the whole
42
- interaction to the UA's own native option list, which paints its own pressed feedback and holds
43
- it for as long as the popup is open. :focus-visible carries the affordance in all three cases. */
44
35
  :where([part='message-role'], [part='message-content']):hover:where(:not(:disabled)),
45
36
  :where([part='variable']) input:hover:where(:not(:disabled)) {
46
37
  border-color: var(--lr-prompt-studio-field-hover-border, var(--lr-color-brand));
@@ -60,15 +51,10 @@ import{css}from"lit";const styles=css`
60
51
  font: inherit;
61
52
  cursor: pointer;
62
53
  }
63
- /* Keep the state pseudo-class outside :where(): it supplies the same specificity as each
64
- resting [part] selector, while the toolbar descendant retains its matching type specificity. */
65
54
  :where([part='toolbar']) button:hover:where(:not(:disabled)),
66
55
  :where([part='move-message-up'], [part='move-message-down'], [part='remove-message'], [part='add-message'], [part='version']):hover:where(:not(:disabled)) {
67
56
  background: var(--lr-color-surface-raised);
68
57
  }
69
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
70
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
71
- than hover in both light and dark themes rather than repeating it. */
72
58
  :where([part='toolbar']) button:active:where(:not(:disabled)),
73
59
  :where([part='move-message-up'], [part='move-message-down'], [part='remove-message'], [part='add-message'], [part='version']):active:where(:not(:disabled)) {
74
60
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
@@ -80,7 +66,6 @@ import{css}from"lit";const styles=css`
80
66
  background: var(--lr-prompt-studio-version-selected-bg, var(--lr-color-brand-quiet));
81
67
  color: var(--lr-prompt-studio-version-selected-color, var(--lr-color-text));
82
68
  }
83
- /* Compose selected and pointer states without changing the part selector itself. */
84
69
  [part='version']:where([aria-pressed='true']):where(:hover:not(:disabled)) {
85
70
  background: var(
86
71
  --lr-prompt-studio-version-selected-hover-bg,
@@ -11,11 +11,6 @@ import{css}from"lit";const styles=css`
11
11
  overflow: hidden;
12
12
  font-size: var(--lr-font-size-sm);
13
13
  }
14
- /* Density escape -- same convention as lr-agent-run's compact. The tuned values sit behind
15
- inline var() fallbacks (rather than a :host declaration, which every instance would
16
- re-declare and so shadow any ancestor value) so a consumer can retune them from outside
17
- without restating the whole rule; the fallbacks are the pre-existing values, so an unset
18
- card renders unchanged. */
19
14
  :host([compact]) [part='header'] {
20
15
  padding: var(--lr-result-card-compact-header-padding, var(--lr-space-xs));
21
16
  gap: var(--lr-result-card-compact-header-gap, var(--lr-space-xs));
@@ -24,8 +19,6 @@ import{css}from"lit";const styles=css`
24
19
  padding: var(--lr-result-card-compact-body-padding, var(--lr-space-xs));
25
20
  gap: var(--lr-result-card-compact-body-gap, var(--lr-space-2xs));
26
21
  }
27
- /* 'plain' removes the chrome entirely rather than just tightening it -- see the class doc for
28
- why it wins over compact when both are set. */
29
22
  :host([frame='plain']) [part='base'] {
30
23
  border: 0;
31
24
  border-radius: 0;
@@ -2,11 +2,6 @@ import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
4
  }
5
- /* Dense "label: value" single-line row by default -- the compact
6
- presentation short status/duration/count content (the kind this
7
- component is meant for) reads best as, versus a stacked two-line
8
- layout. A consumer that prefers stacked can override this from the
9
- light DOM: :host { } / [part='base'] { flex-direction: column; }. */
10
5
  [part='base'] {
11
6
  display: flex;
12
7
  align-items: baseline;
@@ -24,9 +24,6 @@ import{css}from"lit";const styles=css`
24
24
  padding: var(--lr-space-xs); border: 0; border-radius: var(--lr-radius); background: transparent; color: var(--lr-color-text); font: inherit; text-align: start; cursor: pointer;
25
25
  }
26
26
  [part='node-trigger']:hover { background: var(--lr-color-surface-raised); }
27
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
28
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
29
- than hover in both light and dark themes rather than repeating it. */
30
27
  [part='node-trigger']:active {
31
28
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
32
29
  }