@aceshooting/lyra-ui 29.0.2 → 29.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +19 -26
  3. package/design-tokens.json +1 -1
  4. package/dist/cli/migrate-wa.mjs +2 -0
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +5 -3
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +4 -3
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  8. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +21 -5
  9. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +14 -11
  10. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -1
  11. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  12. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +34 -7
  13. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +25 -11
  14. package/dist/components/agent-tools/eval-result/eval-result-source.js +1 -0
  15. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +31 -11
  16. package/dist/components/agent-tools/eval-result/eval-result.class.js +29 -15
  17. package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -1
  18. package/dist/components/agent-tools/eval-result/eval-run-result.d.ts +10 -0
  19. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +26 -5
  20. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +16 -6
  21. package/dist/components/agent-tools/span-waterfall/span-waterfall.d.ts +1 -1
  22. package/dist/components/agent-tools/span-waterfall/span-waterfall.js +1 -1
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  24. package/dist/components/agent-tools/task-list/task-list.class.d.ts +29 -6
  25. package/dist/components/agent-tools/task-list/task-list.class.js +13 -7
  26. package/dist/components/agent-tools/task-list/task-list.d.ts +1 -1
  27. package/dist/components/agent-tools/task-list/task-list.js +1 -1
  28. package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
  29. package/dist/components/agent-tools/terminal/terminal.class.d.ts +9 -5
  30. package/dist/components/agent-tools/terminal/terminal.class.js +8 -8
  31. package/dist/components/agent-tools/test-results/test-results.class.d.ts +16 -4
  32. package/dist/components/agent-tools/test-results/test-results.class.js +15 -6
  33. package/dist/components/agent-tools/test-results/test-results.d.ts +1 -0
  34. package/dist/components/agent-tools/test-results/test-results.js +1 -1
  35. package/dist/components/agent-tools/test-results/test-results.styles.js +1 -1
  36. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +7 -4
  37. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -1
  38. package/dist/components/agent-tools/trace-tree/span-projection.js +1 -0
  39. package/dist/components/agent-tools/trace-tree/span-shared.d.ts +29 -0
  40. package/dist/components/agent-tools/trace-tree/span-shared.js +1 -0
  41. package/dist/components/agent-tools/trace-tree/span.d.ts +5 -35
  42. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  43. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts +27 -5
  44. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +19 -9
  45. package/dist/components/agent-tools/trace-tree/trace-tree.d.ts +1 -1
  46. package/dist/components/agent-tools/trace-tree/trace-tree.js +1 -1
  47. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  48. package/dist/components/charts/chart/bar-chart.class.d.ts +5 -1
  49. package/dist/components/charts/chart/box-plot.class.d.ts +2 -2
  50. package/dist/components/charts/chart/box-plot.class.js +3 -3
  51. package/dist/components/charts/chart/bubble-chart.class.d.ts +5 -1
  52. package/dist/components/charts/chart/chart-prepared-data.d.ts +9 -0
  53. package/dist/components/charts/chart/chart-prepared-data.js +1 -0
  54. package/dist/components/charts/chart/chart-spatial-data.js +2 -0
  55. package/dist/components/charts/chart/chart-sync.js +1 -1
  56. package/dist/components/charts/chart/chart-table-sampling.js +1 -1
  57. package/dist/components/charts/chart/chart.class.d.ts +56 -6
  58. package/dist/components/charts/chart/chart.class.js +18 -8
  59. package/dist/components/charts/chart/chart.styles.js +1 -1
  60. package/dist/components/charts/chart/doughnut-chart.class.d.ts +5 -1
  61. package/dist/components/charts/chart/histogram-buckets.d.ts +1 -1
  62. package/dist/components/charts/chart/histogram-buckets.js +1 -1
  63. package/dist/components/charts/chart/histogram.class.d.ts +19 -4
  64. package/dist/components/charts/chart/histogram.class.js +1 -1
  65. package/dist/components/charts/chart/line-chart.class.d.ts +5 -1
  66. package/dist/components/charts/chart/lite-chart.class.d.ts +51 -11
  67. package/dist/components/charts/chart/lite-chart.class.js +33 -27
  68. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  69. package/dist/components/charts/chart/pie-chart.class.d.ts +5 -1
  70. package/dist/components/charts/chart/polar-area-chart.class.d.ts +5 -1
  71. package/dist/components/charts/chart/radar-chart.class.d.ts +5 -1
  72. package/dist/components/charts/chart/scatter-chart.class.d.ts +5 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +6 -3
  74. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +6 -5
  75. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -1
  76. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +8 -0
  77. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  78. package/dist/components/conversation/code-block/code-block-base.class.d.ts +5 -3
  79. package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
  80. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -1
  81. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  82. package/dist/components/conversation/code-block/code-block-shared.d.ts +6 -4
  83. package/dist/components/conversation/code-block/code-block-shared.js +3 -2
  84. package/dist/components/conversation/code-block/code-block.class.d.ts +11 -4
  85. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  86. package/dist/components/conversation/code-block/code-block.d.ts +1 -1
  87. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  88. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  89. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  90. package/dist/components/conversation/markdown/markdown-base.class.d.ts +6 -4
  91. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  92. package/dist/components/conversation/markdown/markdown-code-header.d.ts +2 -2
  93. package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
  94. package/dist/components/conversation/markdown/markdown-core.class.d.ts +8 -3
  95. package/dist/components/conversation/markdown/markdown-progressive.js +2 -2
  96. package/dist/components/conversation/markdown/markdown-shared.d.ts +5 -10
  97. package/dist/components/conversation/markdown/markdown-shared.js +5 -5
  98. package/dist/components/conversation/markdown/markdown-streaming-tail.js +1 -1
  99. package/dist/components/conversation/markdown/markdown.class.d.ts +17 -10
  100. package/dist/components/conversation/markdown/markdown.class.js +1 -1
  101. package/dist/components/conversation/markdown/markdown.styles.js +1 -1
  102. package/dist/components/conversation/model-select/model-select.class.d.ts +4 -3
  103. package/dist/components/conversation/model-select/model-select.class.js +3 -2
  104. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  105. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +2 -1
  106. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  107. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +1 -1
  108. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -2
  109. package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -1
  110. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  111. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +10 -2
  112. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +15 -6
  113. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  114. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +3 -1
  115. package/dist/components/conversation/realtime-session/realtime-session.class.js +2 -1
  116. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  117. package/dist/components/conversation/streaming-text/markdown-detection.d.ts +2 -0
  118. package/dist/components/conversation/streaming-text/markdown-detection.js +4 -1
  119. package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +6 -2
  120. package/dist/components/conversation/streaming-text/streaming-text-base.class.js +3 -3
  121. package/dist/components/conversation/streaming-text/streaming-text-core.class.js +1 -1
  122. package/dist/components/conversation/streaming-text/streaming-text.class.js +1 -0
  123. package/dist/components/conversation/thread-list/thread-list.class.d.ts +34 -4
  124. package/dist/components/conversation/thread-list/thread-list.class.js +22 -15
  125. package/dist/components/conversation/thread-list/thread-list.d.ts +1 -1
  126. package/dist/components/conversation/thread-list/thread-list.js +1 -1
  127. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  128. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +6 -2
  129. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +3 -2
  130. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  131. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +3 -2
  132. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -2
  133. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  134. package/dist/components/data/calendar/calendar.class.d.ts +5 -2
  135. package/dist/components/data/calendar/calendar.class.js +1 -1
  136. package/dist/components/data/data-grid/data-grid-processing.js +2 -2
  137. package/dist/components/data/data-grid/data-grid.class.d.ts +22 -8
  138. package/dist/components/data/data-grid/data-grid.class.js +20 -19
  139. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  140. package/dist/components/data/document-library/document-library.class.d.ts +31 -4
  141. package/dist/components/data/document-library/document-library.class.js +25 -12
  142. package/dist/components/data/document-library/document-library.styles.js +1 -1
  143. package/dist/components/data/file-tree/file-tree.class.d.ts +30 -6
  144. package/dist/components/data/file-tree/file-tree.class.js +4 -3
  145. package/dist/components/data/file-tree/file-tree.d.ts +1 -0
  146. package/dist/components/data/file-tree/file-tree.js +1 -1
  147. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +31 -6
  148. package/dist/components/data/flow-canvas/flow-canvas.class.js +40 -19
  149. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  150. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  151. package/dist/components/data/flow-canvas/flow-source.js +1 -0
  152. package/dist/components/data/flow-canvas/flow-types.d.ts +4 -2
  153. package/dist/components/data/flow-canvas/flow-viewport-index.js +1 -0
  154. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +9 -3
  155. package/dist/components/data/flow-minimap/flow-minimap.class.js +11 -2
  156. package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
  157. package/dist/components/data/funnel/funnel.class.d.ts +7 -3
  158. package/dist/components/data/funnel/funnel.class.js +2 -2
  159. package/dist/components/data/heatmap/calendar-grid.d.ts +1 -1
  160. package/dist/components/data/heatmap/calendar-grid.js +1 -1
  161. package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -1
  162. package/dist/components/data/heatmap/heatmap-limits.d.ts +1 -1
  163. package/dist/components/data/heatmap/heatmap-matrix-source-controller.js +1 -0
  164. package/dist/components/data/heatmap/heatmap-matrix-source.d.ts +5 -0
  165. package/dist/components/data/heatmap/heatmap-matrix-source.js +1 -0
  166. package/dist/components/data/heatmap/heatmap-scale.d.ts +0 -16
  167. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  168. package/dist/components/data/heatmap/heatmap.class.d.ts +40 -11
  169. package/dist/components/data/heatmap/heatmap.class.js +26 -6
  170. package/dist/components/data/heatmap/heatmap.styles.js +1 -1
  171. package/dist/components/data/pagination/pagination.class.js +1 -1
  172. package/dist/components/data/sequence-strip/sequence-strip-item.d.ts +17 -0
  173. package/dist/components/data/sequence-strip/sequence-strip-source-controller.js +1 -0
  174. package/dist/components/data/sequence-strip/sequence-strip-source.d.ts +5 -0
  175. package/dist/components/data/sequence-strip/sequence-strip-source.js +1 -0
  176. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +24 -19
  177. package/dist/components/data/sequence-strip/sequence-strip.class.js +23 -4
  178. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  179. package/dist/components/data/sparkline/sparkline.class.d.ts +17 -4
  180. package/dist/components/data/sparkline/sparkline.class.js +3 -3
  181. package/dist/components/data/sparkline/sparkline.styles.js +1 -1
  182. package/dist/components/data/table/table.class.d.ts +14 -10
  183. package/dist/components/data/table/table.class.js +17 -16
  184. package/dist/components/data/timeline/timeline.class.d.ts +5 -2
  185. package/dist/components/data/timeline/timeline.class.js +1 -1
  186. package/dist/components/data/tree/tree-item.class.js +1 -1
  187. package/dist/components/data/tree/tree-owner-controller.js +1 -1
  188. package/dist/components/data/tree/tree.class.d.ts +28 -6
  189. package/dist/components/data/tree/tree.class.js +3 -3
  190. package/dist/components/data/tree/tree.d.ts +1 -0
  191. package/dist/components/data/tree/tree.js +1 -1
  192. package/dist/components/data/word-cloud/word-cloud.class.d.ts +17 -7
  193. package/dist/components/data/word-cloud/word-cloud.class.js +6 -4
  194. package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
  195. package/dist/components/forms/catalog-picker-base.d.ts +1 -1
  196. package/dist/components/forms/catalog-picker-base.js +6 -6
  197. package/dist/components/forms/catalog-picker-base.styles.js +1 -1
  198. package/dist/components/forms/combobox/combobox.class.d.ts +7 -3
  199. package/dist/components/forms/combobox/combobox.class.js +1 -1
  200. package/dist/components/forms/combobox/option.class.d.ts +4 -2
  201. package/dist/components/forms/combobox/option.class.js +2 -2
  202. package/dist/components/forms/country-picker/country-picker.class.d.ts +3 -1
  203. package/dist/components/forms/country-picker/country-picker.class.js +1 -1
  204. package/dist/components/forms/currency-picker/currency-picker.class.d.ts +2 -0
  205. package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
  206. package/dist/components/forms/currency-picker/currency-presentation.js +1 -1
  207. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +6 -2
  208. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -2
  209. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
  210. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +8 -2
  211. package/dist/components/forms/locale-picker/locale-picker.class.js +5 -4
  212. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  213. package/dist/components/forms/select/select.class.d.ts +11 -3
  214. package/dist/components/forms/select/select.class.js +4 -4
  215. package/dist/components/forms/time-zone-picker/time-zone-picker.class.d.ts +2 -0
  216. package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
  217. package/dist/components/forms/token-input/token-input.class.d.ts +6 -1
  218. package/dist/components/forms/token-input/token-input.class.js +15 -13
  219. package/dist/components/forms/unit-picker/unit-picker.class.d.ts +2 -0
  220. package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
  221. package/dist/components/layout/app-rail/app-rail.class.d.ts +1 -1
  222. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  223. package/dist/components/layout/command-palette/command-palette.class.d.ts +5 -2
  224. package/dist/components/layout/command-palette/command-palette.class.js +2 -1
  225. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  226. package/dist/components/layout/menu/menu-item.class.d.ts +2 -2
  227. package/dist/components/layout/menu/menu-item.class.js +2 -2
  228. package/dist/components/layout/menu/menu.class.d.ts +1 -1
  229. package/dist/components/layout/menu/menu.class.js +1 -1
  230. package/dist/components/layout/menubar/menubar.class.d.ts +1 -1
  231. package/dist/components/layout/menubar/menubar.class.js +1 -1
  232. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -2
  233. package/dist/components/layout/reorder-list/reorder-item.class.js +2 -2
  234. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
  235. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  236. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +13 -9
  237. package/dist/components/layout/virtual-list/virtual-list.class.js +21 -17
  238. package/dist/components/media/av-player/av-cue-index.js +1 -0
  239. package/dist/components/media/av-player/av-cue-source.d.ts +13 -0
  240. package/dist/components/media/av-player/av-cue-source.js +1 -0
  241. package/dist/components/media/av-player/av-metadata.d.ts +2 -2
  242. package/dist/components/media/av-player/av-metadata.js +1 -1
  243. package/dist/components/media/av-player/av-player-cue-source-controller.js +1 -0
  244. package/dist/components/media/av-player/av-player.class.d.ts +34 -12
  245. package/dist/components/media/av-player/av-player.class.js +15 -10
  246. package/dist/components/media/flag/flag.class.js +1 -1
  247. package/dist/components/media/flag/language-map.js +1 -1
  248. package/dist/components/media/lightbox/lightbox-source.js +1 -0
  249. package/dist/components/media/lightbox/lightbox-types.d.ts +15 -0
  250. package/dist/components/media/lightbox/lightbox.class.d.ts +22 -21
  251. package/dist/components/media/lightbox/lightbox.class.js +6 -4
  252. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  253. package/dist/components/media/map/map-geojson-diff.d.ts +6 -6
  254. package/dist/components/media/map/map-geojson-diff.js +1 -1
  255. package/dist/components/media/map/map-loader.d.ts +5 -1
  256. package/dist/components/media/map/map.class.d.ts +24 -6
  257. package/dist/components/media/map/map.class.js +2 -2
  258. package/dist/components/media/map/map.styles.js +1 -1
  259. package/dist/components/media/video-playlist/video-playlist.class.d.ts +2 -1
  260. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  261. package/dist/components/overlays/chip/chip.class.d.ts +1 -1
  262. package/dist/components/overlays/chip/chip.class.js +1 -1
  263. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +30 -8
  264. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +22 -8
  265. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
  266. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  267. package/dist/components/retrieval/graph/graph-source-composition.js +1 -0
  268. package/dist/components/retrieval/graph/graph-source-controller.js +1 -0
  269. package/dist/components/retrieval/graph/graph-spatial-controller.js +2 -2
  270. package/dist/components/retrieval/graph/graph-spatial-model.js +1 -0
  271. package/dist/components/retrieval/graph/graph-spatial.js +1 -1
  272. package/dist/components/retrieval/graph/graph.class.d.ts +31 -6
  273. package/dist/components/retrieval/graph/graph.class.js +26 -5
  274. package/dist/components/retrieval/graph/graph.d.ts +1 -1
  275. package/dist/components/retrieval/graph/graph.js +1 -1
  276. package/dist/components/retrieval/graph/graph.styles.js +1 -1
  277. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +33 -4
  278. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +27 -17
  279. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +1 -1
  280. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +1 -1
  281. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +1 -1
  282. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +27 -4
  283. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +29 -14
  284. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  285. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +17 -3
  286. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +15 -10
  287. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -1
  288. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +24 -5
  289. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +17 -10
  290. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.d.ts +1 -1
  291. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.js +1 -1
  292. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  293. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  294. package/dist/components/retrieval/mind-map/mind-map-model.js +1 -0
  295. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +27 -4
  296. package/dist/components/retrieval/mind-map/mind-map.class.js +11 -7
  297. package/dist/components/retrieval/mind-map/mind-map.d.ts +1 -0
  298. package/dist/components/retrieval/mind-map/mind-map.js +1 -1
  299. package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
  300. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +24 -2
  301. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +17 -3
  302. package/dist/components/retrieval/neighbor-list/neighbor-list.d.ts +1 -1
  303. package/dist/components/retrieval/neighbor-list/neighbor-list.js +1 -1
  304. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  305. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +8 -4
  306. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +11 -7
  307. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
  308. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +12 -6
  309. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +30 -17
  310. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  311. package/dist/components/retrieval/retrieval-results/retrieval-results-model.js +1 -0
  312. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +46 -5
  313. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +31 -9
  314. package/dist/components/retrieval/retrieval-results/retrieval-results.d.ts +1 -1
  315. package/dist/components/retrieval/retrieval-results/retrieval-results.js +1 -1
  316. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +1 -1
  317. package/dist/components/utility/diff-view/diff-view.class.d.ts +16 -8
  318. package/dist/components/utility/diff-view/diff-view.class.js +3 -2
  319. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  320. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +31 -3
  321. package/dist/components/utility/json-viewer/json-viewer.class.js +13 -4
  322. package/dist/components/utility/json-viewer/json-viewer.d.ts +1 -0
  323. package/dist/components/utility/json-viewer/json-viewer.js +1 -1
  324. package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
  325. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +6 -4
  326. package/dist/components/utility/mention-popover/mention-popover.class.js +6 -5
  327. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +34 -7
  328. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +9 -7
  329. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +28 -4
  330. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +12 -11
  331. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -1
  332. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +17 -16
  333. package/dist/components/viewers/geojson-view/geojson-viewer.d.ts +1 -1
  334. package/dist/components/viewers/geojson-view/geojson-viewer.js +1 -1
  335. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +31 -5
  336. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +11 -8
  337. package/dist/components/viewers/table-viewer-shared.js +19 -3
  338. package/dist/components/viewers/viewer-search-limits.js +1 -1
  339. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +35 -3
  340. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +20 -5
  341. package/dist/components/viewers/xml-viewer/xml-viewer.d.ts +1 -1
  342. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  343. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
  344. package/dist/countries.js +1 -1
  345. package/dist/data-sources.d.ts +34 -0
  346. package/dist/data-sources.js +1 -0
  347. package/dist/events.d.ts +51 -7
  348. package/dist/framework-types.d.ts +1 -1
  349. package/dist/internal/accessibility-visibility.d.ts +4 -2
  350. package/dist/internal/accessibility-visibility.js +1 -1
  351. package/dist/internal/accessible-text-controller.js +1 -1
  352. package/dist/internal/anchor-target.js +2 -2
  353. package/dist/internal/catalog-picker.d.ts +1 -7
  354. package/dist/internal/catalog-picker.js +1 -1
  355. package/dist/internal/collection-snapshot.js +1 -1
  356. package/dist/internal/default-strings/agent-tools.generated.js +1 -1
  357. package/dist/internal/default-strings/charts.generated.js +1 -1
  358. package/dist/internal/default-strings/conversation.generated.js +1 -1
  359. package/dist/internal/default-strings/data.generated.js +1 -1
  360. package/dist/internal/default-strings/forms.generated.js +1 -1
  361. package/dist/internal/default-strings/layout.generated.js +1 -1
  362. package/dist/internal/default-strings/media.generated.js +1 -1
  363. package/dist/internal/default-strings/retrieval.generated.js +1 -1
  364. package/dist/internal/default-strings/shared.generated.js +1 -1
  365. package/dist/internal/default-strings/utility.generated.js +1 -1
  366. package/dist/internal/delimited-data.js +1 -1
  367. package/dist/internal/fixed-containing-block.js +1 -1
  368. package/dist/internal/flow-scene-envelope.js +1 -0
  369. package/dist/internal/graph-scene-controller.js +1 -0
  370. package/dist/internal/hierarchy-source-controller.js +1 -0
  371. package/dist/internal/hierarchy-source-view.js +29 -0
  372. package/dist/internal/hierarchy-source-view.styles.js +1 -0
  373. package/dist/internal/inherited-attribute-hub.d.ts +6 -0
  374. package/dist/internal/inherited-attribute-hub.js +1 -1
  375. package/dist/internal/intl-cache.js +1 -1
  376. package/dist/internal/keyed-index.js +1 -0
  377. package/dist/internal/localization-types.d.ts +1 -1
  378. package/dist/internal/localization.js +2 -2
  379. package/dist/internal/lyra-element.d.ts +2 -2
  380. package/dist/internal/lyra-element.js +3 -2
  381. package/dist/internal/native-modal-context.js +1 -1
  382. package/dist/internal/option-selection.js +1 -1
  383. package/dist/internal/package-metadata.js +1 -1
  384. package/dist/internal/positioner.js +1 -1
  385. package/dist/internal/resource-loader.d.ts +2 -0
  386. package/dist/internal/resource-loader.js +1 -1
  387. package/dist/internal/scoped-definitions.generated.js +1 -1
  388. package/dist/internal/search-haystack.js +1 -0
  389. package/dist/internal/selection-catalog.d.ts +5 -0
  390. package/dist/internal/selection-catalog.js +1 -1
  391. package/dist/internal/shiki-language-sources.js +1 -0
  392. package/dist/internal/source-page-controller.js +1 -0
  393. package/dist/internal/source-page-scope.js +1 -0
  394. package/dist/internal/source-request-controller.js +1 -0
  395. package/dist/internal/source-window-controller.js +1 -0
  396. package/dist/internal/spatial-source-controller.js +1 -0
  397. package/dist/internal/text-quote.d.ts +2 -6
  398. package/dist/internal/text-quote.js +1 -1
  399. package/dist/internal/theme-watcher.js +1 -1
  400. package/dist/internal/virtual-list-composition.js +1 -0
  401. package/dist/lyra.d.ts +1 -1
  402. package/dist/lyra.js +1 -1
  403. package/dist/testing/interaction-drivers.js +1 -1
  404. package/dist/testing/lyra-tag-event-map.js +1 -1
  405. package/dist/units.js +1 -1
  406. package/dist/utilities/data-preparation.d.ts +56 -0
  407. package/dist/utilities/data-preparation.js +1 -0
  408. package/dist/utilities/data-spatial.d.ts +26 -0
  409. package/dist/utilities/data-spatial.js +1 -0
  410. package/dist/utilities/index.d.ts +1 -1
  411. package/dist/utilities/index.js +1 -1
  412. package/llms/components/lr-activity-feed.md +7 -2
  413. package/llms/components/lr-agent-trace.md +49 -9
  414. package/llms/components/lr-agent-workspace.md +15 -8
  415. package/llms/components/lr-av-player.md +180 -10
  416. package/llms/components/lr-bar-chart.md +1 -1
  417. package/llms/components/lr-box-plot.md +8 -0
  418. package/llms/components/lr-bubble-chart.md +1 -1
  419. package/llms/components/lr-calendar.md +26 -3
  420. package/llms/components/lr-chart.md +310 -23
  421. package/llms/components/lr-chat-viewport.md +6 -0
  422. package/llms/components/lr-code-block-core.md +12 -7
  423. package/llms/components/lr-code-block.md +23 -9
  424. package/llms/components/lr-combobox.md +27 -15
  425. package/llms/components/lr-command-palette.md +16 -3
  426. package/llms/components/lr-country-picker.md +23 -6
  427. package/llms/components/lr-csv-viewer.md +95 -12
  428. package/llms/components/lr-currency-picker.md +23 -3
  429. package/llms/components/lr-data-grid.md +24 -6
  430. package/llms/components/lr-dataset-viewer.md +92 -11
  431. package/llms/components/lr-dialog.md +1 -1
  432. package/llms/components/lr-diff-view.md +19 -6
  433. package/llms/components/lr-document-library.md +60 -5
  434. package/llms/components/lr-doughnut-chart.md +1 -1
  435. package/llms/components/lr-embedding-explorer.md +89 -9
  436. package/llms/components/lr-emoji-picker.md +7 -2
  437. package/llms/components/lr-eval-dataset.md +56 -7
  438. package/llms/components/lr-eval-result.md +89 -4
  439. package/llms/components/lr-export-button.md +1 -1
  440. package/llms/components/lr-file-tree.md +60 -6
  441. package/llms/components/lr-flag.md +5 -2
  442. package/llms/components/lr-flow-canvas.md +152 -14
  443. package/llms/components/lr-flow-minimap.md +32 -4
  444. package/llms/components/lr-funnel.md +14 -0
  445. package/llms/components/lr-geojson-viewer.md +27 -10
  446. package/llms/components/lr-graph.md +43 -7
  447. package/llms/components/lr-heatmap.md +161 -5
  448. package/llms/components/lr-histogram.md +55 -9
  449. package/llms/components/lr-ingestion-queue.md +54 -3
  450. package/llms/components/lr-json-viewer.md +87 -7
  451. package/llms/components/lr-knowledge-base-admin.md +60 -4
  452. package/llms/components/lr-knowledge-base.md +121 -9
  453. package/llms/components/lr-knowledge-graph-explorer.md +106 -11
  454. package/llms/components/lr-lightbox.md +42 -6
  455. package/llms/components/lr-line-chart.md +28 -5
  456. package/llms/components/lr-lite-chart.md +96 -31
  457. package/llms/components/lr-locale-picker.md +6 -4
  458. package/llms/components/lr-map.md +67 -8
  459. package/llms/components/lr-markdown-core.md +10 -5
  460. package/llms/components/lr-markdown.md +23 -6
  461. package/llms/components/lr-mention-popover.md +11 -6
  462. package/llms/components/lr-mind-map.md +91 -10
  463. package/llms/components/lr-model-select.md +8 -4
  464. package/llms/components/lr-model-settings-panel.md +10 -2
  465. package/llms/components/lr-navigation-menu.md +1 -1
  466. package/llms/components/lr-neighbor-list.md +69 -2
  467. package/llms/components/lr-pie-chart.md +1 -1
  468. package/llms/components/lr-polar-area-chart.md +1 -1
  469. package/llms/components/lr-prompt-input.md +9 -2
  470. package/llms/components/lr-prompt-queue.md +11 -3
  471. package/llms/components/lr-radar-chart.md +1 -1
  472. package/llms/components/lr-rag-eval-dashboard.md +9 -2
  473. package/llms/components/lr-realtime-session.md +6 -2
  474. package/llms/components/lr-reorder-list.md +4 -0
  475. package/llms/components/lr-retrieval-compare.md +9 -4
  476. package/llms/components/lr-retrieval-results.md +104 -6
  477. package/llms/components/lr-scatter-chart.md +1 -1
  478. package/llms/components/lr-select.md +20 -10
  479. package/llms/components/lr-sequence-strip.md +92 -2
  480. package/llms/components/lr-span-waterfall.md +78 -8
  481. package/llms/components/lr-sparkline.md +42 -11
  482. package/llms/components/lr-spreadsheet-viewer.md +109 -14
  483. package/llms/components/lr-streaming-text-core.md +4 -2
  484. package/llms/components/lr-streaming-text.md +5 -1
  485. package/llms/components/lr-table.md +96 -115
  486. package/llms/components/lr-task-list.md +93 -9
  487. package/llms/components/lr-terminal.md +9 -0
  488. package/llms/components/lr-test-results.md +77 -3
  489. package/llms/components/lr-thread-list.md +86 -1
  490. package/llms/components/lr-time-zone-picker.md +8 -3
  491. package/llms/components/lr-timeline.md +5 -0
  492. package/llms/components/lr-token-input.md +7 -2
  493. package/llms/components/lr-tool-timeline.md +13 -4
  494. package/llms/components/lr-trace-tree.md +96 -10
  495. package/llms/components/lr-transcript-feed.md +9 -2
  496. package/llms/components/lr-tree.md +87 -15
  497. package/llms/components/lr-unit-picker.md +8 -3
  498. package/llms/components/lr-video-playlist.md +2 -0
  499. package/llms/components/lr-virtual-list.md +17 -8
  500. package/llms/components/lr-voice-picker.md +8 -3
  501. package/llms/components/lr-word-cloud.md +128 -12
  502. package/llms/components/lr-xml-viewer.md +106 -9
  503. package/llms/index.md +1 -1
  504. package/llms/peers.md +1 -1
  505. package/llms/shared/events-and-types.md +725 -264
  506. package/llms/shared/forms-and-accessibility.md +3 -17
  507. package/llms/shared/imports-and-registration.md +3 -17
  508. package/llms/shared/localization-and-rtl.md +0 -2
  509. package/llms/shared/styles-and-tokens.md +27 -36
  510. package/llms/shared/testing-and-utilities.md +4 -5
  511. package/llms/shared.md +770 -349
  512. package/llms.txt +1 -2
  513. package/locales.json +139 -139
  514. package/package.json +13 -4
  515. package/registrations.json +1 -1
  516. package/skills/compose-lyra-interfaces/SKILL.md +6 -8
  517. package/skills/lyra-ui/SKILL.md +20 -51
  518. package/skills/lyra-ui/commands/review.md +16 -33
  519. package/skills/lyra-ui/commands/update.md +6 -5
  520. package/skills/lyra-ui/online-api.md +15 -0
  521. package/skills/lyra-ui/reporting.md +2 -1
@@ -19,6 +19,7 @@ deprecated Lyra 21 member names
19
19
  change what a site reaches, preserves changed defaults, and reports everything else, including
20
20
  listeners of events whose detail changed. --origin=lyra-v22 reports deprecated theme APIs,
21
21
  stylesheets, window events and root attributes; review their replacement semantics explicitly.
22
+ --origin=lyra-v25 migrates names that change from Lyra 25 to Lyra 26 and reports the rest.
22
23
  --origin=lyra-v26 moves the package specifiers and root-barrel types that Lyra 27 relocated,
23
24
  reports removed localization keys, and runs the theme-scopes rule. Lyra profiles never rewrite
24
25
  tags. Run a Lyra profile with the CLI of the installed release, after upgrading.
@@ -28,6 +29,7 @@ tags. Run a Lyra profile with the CLI of the installed release, after upgrading.
28
29
  --diff print a unified diff of the changes instead of writing source files
29
30
  --origin=lyra-v21 migrate names and defaults that change from Lyra 21 to Lyra 22
30
31
  --origin=lyra-v22 review Lyra 22 module contracts retained through Lyra 23
32
+ --origin=lyra-v25 migrate names that change from Lyra 25 to Lyra 26
31
33
  --origin=lyra-v26 move specifiers and types relocated in Lyra 27, report removed locale keys
32
34
  and apply --rule=theme-scopes
33
35
  --rule=theme-scopes Lyra 27: mark elements whose inline style sets a token-layer input with
@@ -61,6 +61,7 @@ export type ActivityFeedMode=LyraTranscriptMode;export interface ActivityFeedTog
61
61
  * expanded }`.
62
62
  * @event lr-follow-change - A user scroll released or re-engaged `follow`. `detail: {
63
63
  * following }`. Direct property/attribute assignments never echo an event.
64
+ * @csspart limit - Notice of input entries omitted by retention limits.
64
65
  * @csspart base - The outer container.
65
66
  * @csspart header - The clickable header (`<button>`).
66
67
  * @csspart status-dot - The decorative mode indicator dot; pulses while `mode="live"`.
@@ -111,12 +112,13 @@ export type ActivityFeedMode=LyraTranscriptMode;export interface ActivityFeedTog
111
112
  * @status stable
112
113
  * @since 4.0.0
113
114
  */
114
- export declare class LyraActivityFeed extends LyraElement<LyraActivityFeedEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];
115
+ export declare class LyraActivityFeed extends LyraElement<LyraActivityFeedEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];protected static readonly appendOrderedCollectionProperties:readonly string[];
115
116
  /** Entries may carry opaque caller `data`. Keep each admitted entry's identity only, rather
116
117
  * than deep-cloning unknown data -- the same policy `<lr-prompt-queue>`'s `items` uses for its
117
118
  * own opaque `metadata` field. */
118
119
  protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];
119
- /** Append-only: stable ids, new entries at the end. Entries never change state once added.
120
+ /** Append-only: stable ids, new entries at the end. The newest 10,000 caller-owned entry
121
+ * identities are retained; a localized limit notice discloses omitted history. Entries never change state once added.
120
122
  * Empty/blank ids are omitted and duplicates normalize first-wins before summary,
121
123
  * virtualization, and rendering. */
122
124
  entries:readonly ActivityEntry[];private _mode;get mode():ActivityFeedMode;set mode(next:ActivityFeedMode);
@@ -156,4 +158,4 @@ formatTimestamp?:(date:Date)=>string;
156
158
  * other descendant markup stays reachable only by inheritance or an inline style. */
157
159
  renderText?:(entry:ActivityEntry)=>TemplateResult;
158
160
  /** Above this entry count, the body renders through an internal `<lr-virtual-list>`. */
159
- virtualizeAt:number;private liveRegion?;private virtualListEl?;private readonly headerId;private readonly bodyId;private readonly activityEntryKey;private isMounting;private scrollRafId?;private scrollRafOwner?;private scrollRafDocument?;private virtualAnchorReleaseRafId?;private virtualAnchorReleaseRafOwner?;private virtualAnchorReleaseRafDocument?;private anchoringVirtualTail;private ownerRealmGeneration;private virtualAnchorRequest;private externalLabelledByLease?;private externalDescribedByLease?;private relationshipSyncRequest;private pendingEntryFocusRepair?;private entryFocusRepairRequest;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;private get effectiveVirtualizeAt();private get normalizedEntries();private get isVirtualized();private get shouldFollowLiveTail();private cancelScrollFrame;private cancelVirtualAnchorReleaseFrame;private resetOwnerRealmWork;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private get headerElement();private repairFocusOnCollapse;private captureEntryFocusRepair;private settleEntryFocusRepair;private scrollToLatest;private completedStepsSummary;private get listSemanticOwner();private syncListRelationships;private scheduleListRelationshipSync;private releaseListRelationships;private toggle;private setFollowFromUser;private onBodyScroll;private onVirtualListRangeChanged;private stopOwnedEvent;private normalizedTimestamp;private entryTemplate;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-activity-feed':LyraActivityFeed;}}
161
+ virtualizeAt:number;private liveRegion?;private virtualListEl?;private readonly headerId;private readonly bodyId;private readonly activityEntryKey;private isMounting;private scrollRafId?;private scrollRafOwner?;private scrollRafDocument?;private virtualAnchorReleaseRafId?;private virtualAnchorReleaseRafOwner?;private virtualAnchorReleaseRafDocument?;private anchoringVirtualTail;private ownerRealmGeneration;private virtualAnchorRequest;private externalLabelledByLease?;private externalDescribedByLease?;private relationshipSyncRequest;private pendingEntryFocusRepair?;private entryFocusRepairRequest;connectedCallback():void;disconnectedCallback():void;adoptedCallback():void;private get effectiveVirtualizeAt();private get normalizedEntries();private get isVirtualized();private get shouldFollowLiveTail();private cancelScrollFrame;private cancelVirtualAnchorReleaseFrame;private resetOwnerRealmWork;protected willUpdate(changed:PropertyValues):void;private explicitRowRefresh;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;protected updated(changed:PropertyValues):void;private get headerElement();private repairFocusOnCollapse;private captureEntryFocusRepair;private settleEntryFocusRepair;private scrollToLatest;private completedStepsSummary;private get listSemanticOwner();private syncListRelationships;private scheduleListRelationshipSync;private releaseListRelationships;private toggle;private setFollowFromUser;private onBodyScroll;private onVirtualListRangeChanged;private stopOwnedEvent;private normalizedTimestamp;private readonly renderEntry;private entryTemplate;private lastInputNotice;private inputLimitMessage;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-activity-feed':LyraActivityFeed;}}
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{acquireResolvedAriaRelationship}from"../../../internal/aria-controls.js";import{applyComposedFocusRepair,captureComposedFocusRepair,repairComposedFocus}from"../../../internal/focus-navigation.js";import{chevronIcon}from"../../../internal/icons.js";import{formatTimeOfDay,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./activity-feed.styles.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{firstByIdentityMemo}from"../collection-identity.js";import{LYRA_DEFAULT_activityFeedCompletedSteps,LYRA_DEFAULT_activityFeedLabel}from"../../../internal/default-strings/agent-tools.generated.js";const ACTIVITY_FEED_MODE=literalSetConverter(["live","post-hoc"],"live"),NEAR_BOTTOM_PX=48,entryId=entry=>entry.id;function variantDotPart(variant){return variant==="brand"?"variant-dot variant-dot-brand":variant==="success"?"variant-dot variant-dot-success":variant==="warning"?"variant-dot variant-dot-warning":variant==="danger"?"variant-dot variant-dot-danger":"variant-dot variant-dot-neutral"}class LyraActivityFeed extends LyraElement{constructor(){super(...arguments),this.entries=[],this._mode="live",this.follow=!0,this.expanded=!1,this.size="m",this.frame="card",this.withTimestamps=!1,this.virtualizeAt=199,this.headerId=nextId("activity-feed-header"),this.bodyId=nextId("activity-feed-body"),this.activityEntryKey=item=>item.id,this.isMounting=!0,this.anchoringVirtualTail=!1,this.ownerRealmGeneration=0,this.virtualAnchorRequest=0,this.relationshipSyncRequest=0,this.entryFocusRepairRequest=0,this.toggle=()=>{const expanded=!this.expanded;this.emit("lr-toggle-request",{expanded},{cancelable:!0}).defaultPrevented||(this.expanded=expanded,this.emit("lr-toggle",{expanded}))},this.onBodyScroll=e=>{if(this.isVirtualized||this.mode!=="live")return;const body=e.currentTarget,nearBottom=body.scrollHeight-body.scrollTop-body.clientHeight<=NEAR_BOTTOM_PX;this.setFollowFromUser(nearBottom)},this.onVirtualListRangeChanged=e=>{if(e.stopPropagation(),this.mode!=="live"||this.anchoringVirtualTail)return;const entries=this.normalizedEntries,atBottom=entries.length>0&&e.detail.end>=entries.length-1;this.setFollowFromUser(atBottom)},this.stopOwnedEvent=event=>{event.stopPropagation()}}static{this.defaultStrings={...super.defaultStrings,activityFeedCompletedSteps:LYRA_DEFAULT_activityFeedCompletedSteps,activityFeedLabel:LYRA_DEFAULT_activityFeedLabel}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.identityCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,styles]}get mode(){return this._mode}set mode(next){const normalized=ACTIVITY_FEED_MODE.normalizeReflected(this,"mode",next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&(this.syncListRelationships(),this.scheduleListRelationshipSync()),this.hasUpdated&&this.shouldFollowLiveTail&&this.scrollToLatest()}disconnectedCallback(){this.releaseListRelationships(),this.resetOwnerRealmWork(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.releaseListRelationships(),this.resetOwnerRealmWork(),this.isConnected&&this.hasUpdated&&(this.syncListRelationships(),this.scheduleListRelationshipSync()),this.isConnected&&this.shouldFollowLiveTail&&this.scrollToLatest()}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,199)}get normalizedEntries(){return firstByIdentityMemo(Array.isArray(this.entries)?this.entries:[],entryId)}get isVirtualized(){return this.normalizedEntries.length>this.effectiveVirtualizeAt}get shouldFollowLiveTail(){return this.expanded&&this.mode==="live"&&this.follow}cancelScrollFrame(){this.scrollRafId!==void 0&&this.scrollRafOwner?.cancelAnimationFrame(this.scrollRafId),this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0}cancelVirtualAnchorReleaseFrame(){this.virtualAnchorReleaseRafId!==void 0&&this.virtualAnchorReleaseRafOwner?.cancelAnimationFrame(this.virtualAnchorReleaseRafId),this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0}resetOwnerRealmWork(){this.ownerRealmGeneration+=1,this.virtualAnchorRequest+=1,this.relationshipSyncRequest+=1,this.entryFocusRepairRequest+=1,this.pendingEntryFocusRepair=void 0,this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1}willUpdate(changed){super.willUpdate(changed),(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live"&&(this.follow=!0),changed.has("expanded")&&changed.get("expanded")===!0&&!this.expanded&&this.repairFocusOnCollapse(),changed.has("entries")&&this.captureEntryFocusRepair()}updated(changed){super.updated(changed),this.syncListRelationships(),this.scheduleListRelationshipSync();const wasMounting=this.isMounting;if(this.isMounting=!1,!wasMounting&&changed.has("mode")&&changed.get("mode")==="live"&&this.mode==="post-hoc"){const region=this.liveRegion;region&&(region.mode="polite",region.announce(this.completedStepsSummary(this.normalizedEntries.length),{force:!0}))}const justAnchored=(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live",followingChangedRenderPath=changed.has("virtualizeAt")&&this.expanded&&this.mode==="live"&&this.follow;(justAnchored||followingChangedRenderPath||changed.has("entries")&&this.expanded&&this.mode==="live"&&this.follow)&&this.scrollToLatest(),changed.has("entries")&&this.pendingEntryFocusRepair&&this.settleEntryFocusRepair()}get headerElement(){return this.hasUpdated?this.renderRoot?.querySelector('[part="header"]')??null:null}repairFocusOnCollapse(){repairComposedFocus(this,()=>this.headerElement)}captureEntryFocusRepair(){this.pendingEntryFocusRepair=captureComposedFocusRepair(this,this.headerElement)??void 0}settleEntryFocusRepair(){const pending=this.pendingEntryFocusRepair;if(this.pendingEntryFocusRepair=void 0,!pending)return;const request=++this.entryFocusRepairRequest,generation=this.ownerRealmGeneration,settle=()=>{request!==this.entryFocusRepairRequest||generation!==this.ownerRealmGeneration||!this.isConnected||pending.activeElement.isConnected||applyComposedFocusRepair(pending,()=>this.headerElement)},list=this.virtualListEl;list?list.updateComplete.then(settle):settle()}scrollToLatest(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!ownerWindow||!this.isConnected||!this.shouldFollowLiveTail)return;const generation=this.ownerRealmGeneration;if(this.isVirtualized){this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!0;const request=++this.virtualAnchorRequest;this.updateComplete.then(()=>{const list=this.virtualListEl;if(request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||this.ownerDocument!==ownerDocument||!this.isConnected)return;if(!list||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}list.scrollToIndex(this.normalizedEntries.length-1,{align:"end",behavior:"auto"});const firstHandle=ownerWindow.requestAnimationFrame(()=>{if(this.virtualAnchorReleaseRafId!==firstHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument)return;if(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,!this.anchoringVirtualTail||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}const secondHandle=ownerWindow.requestAnimationFrame(()=>{this.virtualAnchorReleaseRafId!==secondHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,this.anchoringVirtualTail=!1)});this.virtualAnchorReleaseRafId=secondHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});this.virtualAnchorReleaseRafId=firstHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});return}if(this.virtualAnchorRequest+=1,this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1,this.scrollRafId!==void 0)return;const handle=ownerWindow.requestAnimationFrame(()=>{if(this.scrollRafId!==handle||this.scrollRafOwner!==ownerWindow||this.scrollRafDocument!==ownerDocument||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0,!this.shouldFollowLiveTail||this.isVirtualized))return;const body=this.renderRoot.querySelector('[part="body"]');body&&(body.scrollTop=body.scrollHeight)});this.scrollRafId=handle,this.scrollRafOwner=ownerWindow,this.scrollRafDocument=ownerDocument}completedStepsSummary(count){return this.localize("activityFeedCompletedSteps",void 0,{count:getNumberFormat(this.effectiveLocale).format(count),pluralCount:count})}get listSemanticOwner(){return this.isVirtualized?this.virtualListEl?.scrollContainer??null:this.renderRoot.querySelector('[part="body"][role="list"]')}syncListRelationships(){const target=this.listSemanticOwner;if(!target){this.releaseListRelationships();return}this.externalLabelledByLease?this.externalLabelledByLease.update(target):this.externalLabelledByLease=acquireResolvedAriaRelationship(this,target,"aria-labelledby"),this.externalDescribedByLease?this.externalDescribedByLease.update(target):this.externalDescribedByLease=acquireResolvedAriaRelationship(this,target,"aria-describedby")}scheduleListRelationshipSync(){const list=this.virtualListEl;if(!this.isVirtualized||!list||!this.isConnected){this.relationshipSyncRequest+=1;return}const request=++this.relationshipSyncRequest,ownerDocument=this.ownerDocument,generation=this.ownerRealmGeneration;list.updateComplete.then(()=>{request!==this.relationshipSyncRequest||generation!==this.ownerRealmGeneration||this.ownerDocument!==ownerDocument||!this.isConnected||!this.isVirtualized||this.virtualListEl!==list||this.syncListRelationships()})}releaseListRelationships(){this.externalLabelledByLease?.release(),this.externalLabelledByLease=void 0,this.externalDescribedByLease?.release(),this.externalDescribedByLease=void 0}setFollowFromUser(following){following!==this.follow&&(this.follow=following,this.emit("lr-follow-change",{following}))}normalizedTimestamp(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}entryTemplate(entry,ownRole){const ts=this.normalizedTimestamp(entry.timestamp),formatter=this.formatTimestamp??(date=>formatTimeOfDay(date,this.effectiveLocale)),variant=entry.variant??"neutral",dotPart=variantDotPart(variant);return html`
1
+ import{__decorate}from"tslib";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{acquireResolvedAriaRelationship}from"../../../internal/aria-controls.js";import{applyComposedFocusRepair,captureComposedFocusRepair,repairComposedFocus}from"../../../internal/focus-navigation.js";import{chevronIcon}from"../../../internal/icons.js";import{formatTimeOfDay,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./activity-feed.styles.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{firstByIdentityMemo}from"../collection-identity.js";import{LYRA_DEFAULT_activityFeedCompletedSteps,LYRA_DEFAULT_activityFeedInputLimit,LYRA_DEFAULT_activityFeedLabel}from"../../../internal/default-strings/agent-tools.generated.js";const ACTIVITY_FEED_MODE=literalSetConverter(["live","post-hoc"],"live"),NEAR_BOTTOM_PX=48,entryId=entry=>entry.id;function variantDotPart(variant){return variant==="brand"?"variant-dot variant-dot-brand":variant==="success"?"variant-dot variant-dot-success":variant==="warning"?"variant-dot variant-dot-warning":variant==="danger"?"variant-dot variant-dot-danger":"variant-dot variant-dot-neutral"}class LyraActivityFeed extends LyraElement{constructor(){super(...arguments),this.entries=[],this._mode="live",this.follow=!0,this.expanded=!1,this.size="m",this.frame="card",this.withTimestamps=!1,this.virtualizeAt=199,this.headerId=nextId("activity-feed-header"),this.bodyId=nextId("activity-feed-body"),this.activityEntryKey=item=>item.id,this.isMounting=!0,this.anchoringVirtualTail=!1,this.ownerRealmGeneration=0,this.virtualAnchorRequest=0,this.relationshipSyncRequest=0,this.entryFocusRepairRequest=0,this.explicitRowRefresh=!1,this.toggle=()=>{const expanded=!this.expanded;this.emit("lr-toggle-request",{expanded},{cancelable:!0}).defaultPrevented||(this.expanded=expanded,this.emit("lr-toggle",{expanded}))},this.onBodyScroll=e=>{if(this.isVirtualized||this.mode!=="live")return;const body=e.currentTarget,nearBottom=body.scrollHeight-body.scrollTop-body.clientHeight<=NEAR_BOTTOM_PX;this.setFollowFromUser(nearBottom)},this.onVirtualListRangeChanged=e=>{if(e.stopPropagation(),this.mode!=="live"||this.anchoringVirtualTail)return;const entries=this.normalizedEntries,atBottom=entries.length>0&&e.detail.end>=entries.length-1;this.setFollowFromUser(atBottom)},this.stopOwnedEvent=event=>{event.stopPropagation()},this.renderEntry=item=>this.entryTemplate(item,!1),this.lastInputNotice=""}static{this.defaultStrings={...super.defaultStrings,activityFeedCompletedSteps:LYRA_DEFAULT_activityFeedCompletedSteps,activityFeedInputLimit:LYRA_DEFAULT_activityFeedInputLimit,activityFeedLabel:LYRA_DEFAULT_activityFeedLabel}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.appendOrderedCollectionProperties=Object.freeze(["entries"])}static{this.identityCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,styles]}get mode(){return this._mode}set mode(next){const normalized=ACTIVITY_FEED_MODE.normalizeReflected(this,"mode",next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&(this.syncListRelationships(),this.scheduleListRelationshipSync()),this.hasUpdated&&this.shouldFollowLiveTail&&this.scrollToLatest()}disconnectedCallback(){this.releaseListRelationships(),this.resetOwnerRealmWork(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.releaseListRelationships(),this.resetOwnerRealmWork(),this.isConnected&&this.hasUpdated&&(this.syncListRelationships(),this.scheduleListRelationshipSync()),this.isConnected&&this.shouldFollowLiveTail&&this.scrollToLatest()}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,199)}get normalizedEntries(){return firstByIdentityMemo(Array.isArray(this.entries)?this.entries:[],entryId)}get isVirtualized(){return this.normalizedEntries.length>this.effectiveVirtualizeAt}get shouldFollowLiveTail(){return this.expanded&&this.mode==="live"&&this.follow}cancelScrollFrame(){this.scrollRafId!==void 0&&this.scrollRafOwner?.cancelAnimationFrame(this.scrollRafId),this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0}cancelVirtualAnchorReleaseFrame(){this.virtualAnchorReleaseRafId!==void 0&&this.virtualAnchorReleaseRafOwner?.cancelAnimationFrame(this.virtualAnchorReleaseRafId),this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0}resetOwnerRealmWork(){this.ownerRealmGeneration+=1,this.virtualAnchorRequest+=1,this.relationshipSyncRequest+=1,this.entryFocusRepairRequest+=1,this.pendingEntryFocusRepair=void 0,this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1}willUpdate(changed){super.willUpdate(changed),(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live"&&(this.follow=!0),changed.has("expanded")&&changed.get("expanded")===!0&&!this.expanded&&this.repairFocusOnCollapse(),changed.has("entries")&&this.captureEntryFocusRepair()}requestUpdate(...args){args[0]===void 0&&(this.explicitRowRefresh=!0),super.requestUpdate(...args)}updated(changed){super.updated(changed);const explicitRefresh=this.explicitRowRefresh;this.explicitRowRefresh=!1,(explicitRefresh||["withTimestamps","formatTimestamp","renderText","locale","strings"].some(name=>changed.has(name)))&&this.virtualListEl?.requestUpdate(),this.syncListRelationships(),this.scheduleListRelationshipSync();const wasMounting=this.isMounting;this.isMounting=!1;const inputNotice=this.inputLimitMessage();if(!wasMounting&&inputNotice&&inputNotice!==this.lastInputNotice&&this.liveRegion?.announce(inputNotice,{force:!0}),this.lastInputNotice=inputNotice,!wasMounting&&changed.has("mode")&&changed.get("mode")==="live"&&this.mode==="post-hoc"){const region=this.liveRegion;region&&(region.mode="polite",region.announce(this.completedStepsSummary(this.normalizedEntries.length),{force:!0}))}const justAnchored=(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live",followingChangedRenderPath=changed.has("virtualizeAt")&&this.expanded&&this.mode==="live"&&this.follow;(justAnchored||followingChangedRenderPath||changed.has("entries")&&this.expanded&&this.mode==="live"&&this.follow)&&this.scrollToLatest(),changed.has("entries")&&this.pendingEntryFocusRepair&&this.settleEntryFocusRepair()}get headerElement(){return this.hasUpdated?this.renderRoot?.querySelector('[part="header"]')??null:null}repairFocusOnCollapse(){repairComposedFocus(this,()=>this.headerElement)}captureEntryFocusRepair(){this.pendingEntryFocusRepair=captureComposedFocusRepair(this,this.headerElement)??void 0}settleEntryFocusRepair(){const pending=this.pendingEntryFocusRepair;if(this.pendingEntryFocusRepair=void 0,!pending)return;const request=++this.entryFocusRepairRequest,generation=this.ownerRealmGeneration,settle=()=>{request!==this.entryFocusRepairRequest||generation!==this.ownerRealmGeneration||!this.isConnected||pending.activeElement.isConnected||applyComposedFocusRepair(pending,()=>this.headerElement)},list=this.virtualListEl;list?list.updateComplete.then(settle):settle()}scrollToLatest(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!ownerWindow||!this.isConnected||!this.shouldFollowLiveTail)return;const generation=this.ownerRealmGeneration;if(this.isVirtualized){this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!0;const request=++this.virtualAnchorRequest;this.updateComplete.then(()=>{const list=this.virtualListEl;if(request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||this.ownerDocument!==ownerDocument||!this.isConnected)return;if(!list||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}list.scrollToIndex(this.normalizedEntries.length-1,{align:"end",behavior:"auto"});const firstHandle=ownerWindow.requestAnimationFrame(()=>{if(this.virtualAnchorReleaseRafId!==firstHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument)return;if(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,!this.anchoringVirtualTail||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}const secondHandle=ownerWindow.requestAnimationFrame(()=>{this.virtualAnchorReleaseRafId!==secondHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,this.anchoringVirtualTail=!1)});this.virtualAnchorReleaseRafId=secondHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});this.virtualAnchorReleaseRafId=firstHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});return}if(this.virtualAnchorRequest+=1,this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1,this.scrollRafId!==void 0)return;const handle=ownerWindow.requestAnimationFrame(()=>{if(this.scrollRafId!==handle||this.scrollRafOwner!==ownerWindow||this.scrollRafDocument!==ownerDocument||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0,!this.shouldFollowLiveTail||this.isVirtualized))return;const body=this.renderRoot.querySelector('[part="body"]');body&&(body.scrollTop=body.scrollHeight)});this.scrollRafId=handle,this.scrollRafOwner=ownerWindow,this.scrollRafDocument=ownerDocument}completedStepsSummary(count){return this.localize("activityFeedCompletedSteps",void 0,{count:getNumberFormat(this.effectiveLocale).format(count),pluralCount:count})}get listSemanticOwner(){return this.isVirtualized?this.virtualListEl?.scrollContainer??null:this.renderRoot.querySelector('[part="body"][role="list"]')}syncListRelationships(){const target=this.listSemanticOwner;if(!target){this.releaseListRelationships();return}this.externalLabelledByLease?this.externalLabelledByLease.update(target):this.externalLabelledByLease=acquireResolvedAriaRelationship(this,target,"aria-labelledby"),this.externalDescribedByLease?this.externalDescribedByLease.update(target):this.externalDescribedByLease=acquireResolvedAriaRelationship(this,target,"aria-describedby")}scheduleListRelationshipSync(){const list=this.virtualListEl;if(!this.isVirtualized||!list||!this.isConnected){this.relationshipSyncRequest+=1;return}const request=++this.relationshipSyncRequest,ownerDocument=this.ownerDocument,generation=this.ownerRealmGeneration;list.updateComplete.then(()=>{request!==this.relationshipSyncRequest||generation!==this.ownerRealmGeneration||this.ownerDocument!==ownerDocument||!this.isConnected||!this.isVirtualized||this.virtualListEl!==list||this.syncListRelationships()})}releaseListRelationships(){this.externalLabelledByLease?.release(),this.externalLabelledByLease=void 0,this.externalDescribedByLease?.release(),this.externalDescribedByLease=void 0}setFollowFromUser(following){following!==this.follow&&(this.follow=following,this.emit("lr-follow-change",{following}))}normalizedTimestamp(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}entryTemplate(entry,ownRole){const ts=this.normalizedTimestamp(entry.timestamp),formatter=this.formatTimestamp??(date=>formatTimeOfDay(date,this.effectiveLocale)),variant=entry.variant??"neutral",dotPart=variantDotPart(variant);return html`
2
2
  <div part="entry" role=${ownRole?"listitem":nothing} data-variant=${variant}>
3
3
  <span part="entry-icon" aria-hidden="true"
4
4
  >${entry.icon?entry.icon:html`<span part=${dotPart} data-variant=${variant}></span>`}</span
@@ -6,8 +6,9 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
6
6
  <span part="entry-text" data-lr-virtual-list-link>${this.renderText?this.renderText(entry):entry.text}</span>
7
7
  ${this.withTimestamps&&ts?html`<time part="entry-timestamp" datetime=${ts.toISOString()}>${formatter(ts)}</time>`:nothing}
8
8
  </div>
9
- `}render(){const entries=this.normalizedEntries,fallbackLabel=this.localize("activityFeedLabel"),label=this.label==null?fallbackLabel:this.label,headerText=this.mode==="live"?entries[entries.length-1]?.text??"":this.completedStepsSummary(entries.length),listAriaLabel=this.hasAttribute("aria-label")?this.getAttribute("aria-label")??"":fallbackLabel,headerAriaLabel=`${label} ${headerText}`.trim()?nothing:fallbackLabel,virtualized=entries.length>this.effectiveVirtualizeAt;return html`
9
+ `}inputLimitMessage(){const loss=publicCollectionTruncation(this,"entries");return loss?this.localize("activityFeedInputLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(loss.retained),total:getNumberFormat(this.effectiveLocale).format(loss.source)}):""}render(){const entries=this.normalizedEntries,fallbackLabel=this.localize("activityFeedLabel"),label=this.label==null?fallbackLabel:this.label,headerText=this.mode==="live"?entries[entries.length-1]?.text??"":this.completedStepsSummary(entries.length),listAriaLabel=this.hasAttribute("aria-label")?this.getAttribute("aria-label")??"":fallbackLabel,headerAriaLabel=`${label} ${headerText}`.trim()?nothing:fallbackLabel,virtualized=entries.length>this.effectiveVirtualizeAt;return html`
10
10
  <div part="base">
11
+ ${this.inputLimitMessage()?html`<p part="limit">${this.inputLimitMessage()}</p>`:nothing}
11
12
  <button
12
13
  part="header"
13
14
  type="button"
@@ -34,7 +35,7 @@ import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/co
34
35
  ${virtualized?html`<lr-virtual-list
35
36
  exportparts="entry:entry, entry-icon:entry-icon, variant-dot:variant-dot, variant-dot-neutral:variant-dot-neutral, variant-dot-brand:variant-dot-brand, variant-dot-success:variant-dot-success, variant-dot-warning:variant-dot-warning, variant-dot-danger:variant-dot-danger, entry-text:entry-text, entry-timestamp:entry-timestamp"
36
37
  .items=${guard([this.entries],()=>entries)}
37
- .renderItem=${item=>this.entryTemplate(item,!1)}
38
+ .renderItem=${this.renderEntry}
38
39
  .keyFunction=${this.activityEntryKey}
39
40
  aria-label=${listAriaLabel}
40
41
  @lr-visible-range-change=${this.onVirtualListRangeChanged}
@@ -1 +1 @@
1
- import{disclosureHeader}from"../../../internal/layout-fragments.styles.js";import{css}from"lit";const styles=css` :host { display: block; --_lr-activity-feed-max-height: var(--lr-size-16rem); } [part="base"] { border: var(--lr-border-width-thin) solid var(--lr-activity-feed-border-color, var(--lr-color-border-subtle)); border-radius: var(--lr-activity-feed-radius, var(--lr-radius)); background: var(--lr-activity-feed-bg, var(--lr-color-surface)); overflow: hidden; } :host(:is([size='2xs'], [size='xs'], [size='s'], [size='small'])) [part="header"] { padding: var( --lr-activity-feed-compact-header-padding, var(--lr-space-2xs) var(--lr-space-s) ); gap: var(--lr-activity-feed-compact-header-gap, var(--lr-space-2xs)); } :host(:is([size='2xs'], [size='xs'], [size='s'], [size='small'])) [part="entry"], :host(:is([size='2xs'], [size='xs'], [size='s'], [size='small'])) lr-virtual-list::part(entry) { padding: var( --lr-activity-feed-compact-entry-padding, var(--lr-space-2xs) var(--lr-space-s) ); gap: var(--lr-activity-feed-compact-entry-gap, var(--lr-space-2xs)); } :host([frame="plain"]) [part="base"] { border: 0; border-radius: 0; background: transparent; } [part="header"] { ${disclosureHeader} box-sizing: border-box; } [part="header"]:hover { background: var(--lr-color-brand-quiet); color: var(--lr-color-brand); } [part="header"]:active { background: color-mix( in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="header"]:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * max(var(--lr-focus-ring-width), calc(var(--lr-focus-ring-width) + var(--lr-focus-ring-offset)))); } [part="toggle"] { display: inline-flex; flex: 0 0 auto; transition: transform var(--lr-transition-fast); } :host([expanded]) [part="toggle"] { transform: rotate(90deg); } :host(:not([expanded]):dir(rtl)) [part="toggle"] { transform: scaleX(-1); } [part="status-dot"] { flex: 0 0 auto; inline-size: var(--lr-size-0-5rem); block-size: var(--lr-size-0-5rem); border-radius: var(--lr-radius-pill); background: var(--lr-color-text-quiet); } :host([mode="live"]) [part="status-dot"] { background: var( --lr-activity-feed-live-status-color, var(--lr-color-brand) ); animation: var(--_lr-motion-animation, lr-activity-feed-pulse var(--lr-transition-ambient) infinite); } [part="label"] { flex: 0 1 auto; min-inline-size: 0; max-inline-size: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: var(--lr-font-weight-semibold); } [part="summary"] { flex: 1 1 auto; min-inline-size: var(--lr-size-3ch); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--lr-font-size-sm); color: var(--lr-color-text-quiet); text-align: start; } [part="body"] { display: flex; flex-direction: column; max-block-size: var( --lr-activity-feed-max-height, var(--_lr-activity-feed-max-height) ); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; border-block-start: var(--lr-border-width-thin) solid var(--lr-activity-feed-border-color, var(--lr-color-border-subtle)); } [part="body"]:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * max(var(--lr-focus-ring-width), calc(var(--lr-focus-ring-width) + var(--lr-focus-ring-offset)))); } [part="body"][hidden] { display: none; } lr-virtual-list { --lr-virtual-list-row-link-color: var(--lr-activity-feed-entry-text-link-color, var(--lr-color-brand)); display: block; inline-size: 100%; block-size: var( --lr-activity-feed-max-height, var(--_lr-activity-feed-max-height) ); } [part="entry"], lr-virtual-list::part(entry) { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--lr-space-xs); padding: var(--lr-space-2xs) var(--lr-space-m); } [part="entry-icon"], lr-virtual-list::part(entry-icon) { flex: 0 0 auto; display: inline-flex; align-items: center; inline-size: var(--lr-size-1em); } [part~="variant-dot"], lr-virtual-list::part(variant-dot) { display: block; inline-size: var(--lr-size-0-5rem); block-size: var(--lr-size-0-5rem); border-radius: var(--lr-radius-pill); } [part~="variant-dot-neutral"], lr-virtual-list::part(variant-dot-neutral) { background: var(--lr-color-text-quiet); } [part~="variant-dot-brand"], lr-virtual-list::part(variant-dot-brand) { background: var(--lr-color-brand); } [part~="variant-dot-success"], lr-virtual-list::part(variant-dot-success) { background: var(--lr-color-success); } [part~="variant-dot-warning"], lr-virtual-list::part(variant-dot-warning) { background: var(--lr-color-warning); } [part~="variant-dot-danger"], lr-virtual-list::part(variant-dot-danger) { background: var(--lr-color-danger); } [part="entry-text"], lr-virtual-list::part(entry-text) { flex: 1 1 auto; min-inline-size: var(--lr-size-3ch); overflow-wrap: anywhere; font-size: var(--lr-font-size-sm); } [part="entry-text"] a:where(:any-link) { color: var(--lr-activity-feed-entry-text-link-color, var(--lr-color-brand)); } [part="entry-timestamp"], lr-virtual-list::part(entry-timestamp) { flex: 0 0 auto; font-size: var(--lr-font-size-xs); color: var(--lr-color-text-quiet); } @keyframes lr-activity-feed-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } } @media (prefers-reduced-motion: reduce) { [part="toggle"] { transition: none !important; } [part="status-dot"] { animation: none !important; } } `;export{styles};
1
+ import{disclosureHeader}from"../../../internal/layout-fragments.styles.js";import{css}from"lit";const styles=css` :host { display: block; --_lr-activity-feed-max-height: var(--lr-size-16rem); } [part="base"] { border: var(--lr-border-width-thin) solid var(--lr-activity-feed-border-color, var(--lr-color-border-subtle)); border-radius: var(--lr-activity-feed-radius, var(--lr-radius)); background: var(--lr-activity-feed-bg, var(--lr-color-surface)); overflow: hidden; } :host(:is([size='2xs'], [size='xs'], [size='s'], [size='small'])) [part="header"] { padding: var( --lr-activity-feed-compact-header-padding, var(--lr-space-2xs) var(--lr-space-s) ); gap: var(--lr-activity-feed-compact-header-gap, var(--lr-space-2xs)); } :host(:is([size='2xs'], [size='xs'], [size='s'], [size='small'])) [part="entry"], :host(:is([size='2xs'], [size='xs'], [size='s'], [size='small'])) lr-virtual-list::part(entry) { padding: var( --lr-activity-feed-compact-entry-padding, var(--lr-space-2xs) var(--lr-space-s) ); gap: var(--lr-activity-feed-compact-entry-gap, var(--lr-space-2xs)); } :host([frame="plain"]) [part="base"] { border: 0; border-radius: 0; background: transparent; } [part="header"] { ${disclosureHeader} box-sizing: border-box; } [part="header"]:hover { background: var(--lr-color-brand-quiet); color: var(--lr-color-brand); } [part="header"]:active { background: color-mix( in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part="header"]:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * max(var(--lr-focus-ring-width), calc(var(--lr-focus-ring-width) + var(--lr-focus-ring-offset)))); } [part="toggle"] { display: inline-flex; flex: 0 0 auto; transition: transform var(--lr-transition-fast); } :host([expanded]) [part="toggle"] { transform: rotate(90deg); } :host(:not([expanded]):dir(rtl)) [part="toggle"] { transform: scaleX(-1); } [part="status-dot"] { flex: 0 0 auto; inline-size: var(--lr-size-0-5rem); block-size: var(--lr-size-0-5rem); border-radius: var(--lr-radius-pill); background: var(--lr-color-text-quiet); } :host([mode="live"]) [part="status-dot"] { background: var( --lr-activity-feed-live-status-color, var(--lr-color-brand) ); animation: var(--_lr-motion-animation, lr-activity-feed-pulse var(--lr-transition-ambient) infinite); } [part="label"] { flex: 0 1 auto; min-inline-size: 0; max-inline-size: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: var(--lr-font-weight-semibold); } [part="summary"] { flex: 1 1 auto; min-inline-size: var(--lr-size-3ch); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--lr-font-size-sm); color: var(--lr-color-text-quiet); text-align: start; } [part="body"] { display: flex; flex-direction: column; max-block-size: var( --lr-activity-feed-max-height, var(--_lr-activity-feed-max-height) ); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; border-block-start: var(--lr-border-width-thin) solid var(--lr-activity-feed-border-color, var(--lr-color-border-subtle)); } [part="body"]:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: calc(-1 * max(var(--lr-focus-ring-width), calc(var(--lr-focus-ring-width) + var(--lr-focus-ring-offset)))); } [part="body"][hidden] { display: none; } lr-virtual-list { --lr-virtual-list-row-link-color: var(--lr-activity-feed-entry-text-link-color, var(--lr-color-brand)); display: block; inline-size: 100%; block-size: var( --lr-activity-feed-max-height, var(--_lr-activity-feed-max-height) ); } [part="entry"], lr-virtual-list::part(entry) { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--lr-space-xs); padding: var(--lr-space-2xs) var(--lr-space-m); } [part="entry-icon"], lr-virtual-list::part(entry-icon) { flex: 0 0 auto; display: inline-flex; align-items: center; inline-size: var(--lr-size-1em); } [part~="variant-dot"], lr-virtual-list::part(variant-dot) { display: block; inline-size: var(--lr-size-0-5rem); block-size: var(--lr-size-0-5rem); border-radius: var(--lr-radius-pill); } [part~="variant-dot-neutral"], lr-virtual-list::part(variant-dot-neutral) { background: var(--lr-color-text-quiet); } [part~="variant-dot-brand"], lr-virtual-list::part(variant-dot-brand) { background: var(--lr-color-brand); } [part~="variant-dot-success"], lr-virtual-list::part(variant-dot-success) { background: var(--lr-color-success); } [part~="variant-dot-warning"], lr-virtual-list::part(variant-dot-warning) { background: var(--lr-color-warning); } [part~="variant-dot-danger"], lr-virtual-list::part(variant-dot-danger) { background: var(--lr-color-danger); } [part="entry-text"], lr-virtual-list::part(entry-text) { flex: 1 1 auto; min-inline-size: var(--lr-size-3ch); overflow-wrap: anywhere; font-size: var(--lr-font-size-sm); } [part="entry-text"] a:where(:any-link) { color: var(--lr-activity-feed-entry-text-link-color, var(--lr-color-brand)); } [part="entry-timestamp"], lr-virtual-list::part(entry-timestamp) { flex: 0 0 auto; font-size: var(--lr-font-size-xs); color: var(--lr-color-text-quiet); } @keyframes lr-activity-feed-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } } @media (prefers-reduced-motion: reduce) { [part="toggle"] { transition: none !important; } [part="status-dot"] { animation: none !important; } } [part='limit'] { margin: 0; padding: var(--lr-space-s); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-sm); } `;export{styles};
@@ -1,4 +1,4 @@
1
- import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';export type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';import{type LyraSpan}from'../trace-tree/span.js';export type{LyraSpan}from'../trace-tree/span.js';export interface LyraAgentTraceEventMap{
1
+ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';export type{LyraNodeTypeStyle}from'../../../internal/node-type-style.js';import type{LyraSpan}from'../trace-tree/span.js';import type{TraceTreeSource}from'../trace-tree/trace-tree.class.js';export type{TraceTreeSource}from'../trace-tree/trace-tree.class.js';export type{LyraSpan}from'../trace-tree/span.js';export interface LyraAgentTraceEventMap{
2
2
  /** Bubbles, composed, from the composed `<lr-trace-tree>` (identical `{ spanId }` detail), or is
3
3
  * fired directly when a handoff quick-jump entry is activated -- a host handles both origins
4
4
  * through this one event. */
@@ -40,14 +40,19 @@ import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';impo
40
40
  * rendering never re-reads an admitted source row. Create a new collection and reassign it after
41
41
  * changes; mutating the assigned array does not update the view.
42
42
  *
43
+ * With treeSource defined, the child owns the complete provider preorder and global timing
44
+ * summary. The filter offers all six known kinds; the legacy handoff quick-jump list is omitted.
45
+ * No source rows are copied into spans or scanned to discover kinds or handoffs.
46
+ *
43
47
  * @customElement lr-agent-trace
44
48
  * @event lr-span-select - `detail: { spanId }` — a span was activated, from the tree or the handoff list.
45
49
  * @event lr-span-toggle - `detail: { spanId, expanded }` — a tree row was expanded or collapsed.
46
50
  * @event lr-span-visibility-change - `detail: { hiddenKinds }` — the span-kind filter changed.
47
51
  * @csspart base - The root wrapper.
48
- * @csspart filter - The composed `<lr-graph-legend>` filter row, only rendered while `spans` has at least one span.
52
+ * @csspart filter - The composed `<lr-graph-legend>` filter row; all six kinds in provider mode, otherwise the kinds present in `spans`.
49
53
  * @csspart handoffs - The handoff quick-jump list wrapper, only rendered while at least one visible span has `kind: 'agent'`.
50
54
  * @csspart handoff - One handoff quick-jump entry (a `<button>` wrapping an `<lr-handoff-divider>`); carries `data-active`.
55
+ * @csspart limit - Source admission limit notice when the composed tree has no projection notice.
51
56
  * @csspart tree - The composed `<lr-trace-tree>`.
52
57
  * @cssprop [--lr-agent-trace-handoff-active-bg=var(--lr-color-brand-quiet)] - Background of the active
53
58
  * (`activeSpanId`) handoff quick-jump entry. Shadow Parts forbids an attribute selector after
@@ -60,11 +65,22 @@ export declare class LyraAgentTrace extends LyraElement<LyraAgentTraceEventMap>{
60
65
  /** Span sources can carry opaque provider metadata; the shared normalizer copies only its closed
61
66
  * display schema once, so cloning each whole source record would both lose opaque identity and
62
67
  * create an unsafe second traversal. */
63
- protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];protected static readonly immutableEventDetails:readonly string[];
68
+ protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];protected static readonly immutableEventDetails:readonly string[];private _treeSource;private sourceVersion;private sourceTree?;private forwardedTree?;private forwardedKinds?;
69
+ /** Immutable full-source preorder, forwarded to the single trace-tree child.
70
+ * Defined sources override legacy spans. Provider mode offers all six kind filters and omits
71
+ * the legacy handoff list; expansion, selection, global timing summary and bounded rows belong
72
+ * to the child. Reassign or requestUpdate() after changing the provider revision.
73
+ * @default undefined */
74
+ get treeSource():TraceTreeSource|undefined;set treeSource(value:TraceTreeSource|undefined);
75
+ /** Reveals and focuses a full-source span using the child; false if absent or superseded. */
76
+ revealSourceKey(key:string):Promise<boolean>;private forwardKinds;private bindTree;requestUpdate(name?:PropertyKey,oldValue?:unknown):void;disconnectedCallback():void;
64
77
  /** The full, unfiltered span array -- identical contract to `<lr-trace-tree>.spans`. Controlled
65
78
  * and never mutated by this component; `activeSpanId` and its ancestor path reserve positions
66
- * inside the shared 500-row projection before kind filtering. */
79
+ * inside the maxNodes projection (default 500) before kind filtering. */
67
80
  spans:readonly LyraSpan[];
81
+ /** Maximum projected rows, from 1 to 5000. Invalid or unset values use 500.
82
+ * Source admission keeps the first 10000 outer entries without cloning opaque metadata. */
83
+ maxNodes:number;private get effectiveMaxNodes();private readonly announcements;private sourceNotice;private previousSourceNotice;private noticeInitialized;connectedCallback():void;adoptedCallback():void;private limitMessage;protected updated(changed:PropertyValues):void;
68
84
  /** Controlled selection, forwarded verbatim into the composed `<lr-trace-tree>`. Updated
69
85
  * locally (and re-emitted as `lr-span-select`) whenever a span is activated from either the
70
86
  * tree or the handoff quick-jump list, so a host can also treat it as a two-way binding. */
@@ -83,4 +99,4 @@ withTokens:boolean;
83
99
  withCost:boolean;
84
100
  /** Suppresses the inline duration bar on the composed `<lr-trace-tree>`, for dense/narrow
85
101
  * embeddings. */
86
- withoutBars:boolean;private projectionSource?;private projectionActiveSpanId;private projectionCache?;private filteredSource?;private filteredKinds?;private filteredCache;private presentKindsSource?;private presentKindsCache;private handoffsSource?;private handoffsCache;private legendKinds?;private legendLabels;private legendTypes;private projectedSpans;private presentKinds;private filteredSpans;private handoffSpans;private handoffFromAgent;private handoffAccessibleLabel;private onVisibilityChange;private onVisibilityChangeProposal;private onTreeSpanSelect;private selectSpan;private renderFilter;private renderHandoff;private renderHandoffs;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-agent-trace':LyraAgentTrace;}}
102
+ withoutBars:boolean;private projectionLimit;private projectionSource?;private projectionActiveSpanId;private projectionCache?;private filteredSource?;private filteredKinds?;private filteredCache;private presentKindsSource?;private presentKindsCache;private handoffsSource?;private handoffsCache;private legendKinds?;private legendLabels;private legendTypes;private projectedSpans;private presentKinds;private filteredSpans;private handoffSpans;private handoffFromAgent;private handoffAccessibleLabel;private onVisibilityChange;private onVisibilityChangeProposal;private onTreeSpanSelect;private selectSpan;private renderFilter;private renderHandoff;private renderHandoffs;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-agent-trace':LyraAgentTrace;}}
@@ -1,36 +1,39 @@
1
- import{__decorate}from"tslib";import{collectionSupport}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{styles}from"./agent-trace.styles.js";import{normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_agentTraceFilterLabel,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool}from"../../../internal/default-strings/agent-tools.generated.js";import{LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_handoffFromToAgent,LYRA_DEFAULT_handoffToAgent,LYRA_DEFAULT_map,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings/shared.generated.js";const KIND_ORDER=["agent","llm","tool","retriever","embedding","other"],KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"};class LyraAgentTrace extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.hiddenKinds=[],this.withTokens=!1,this.withCost=!1,this.withoutBars=!1,this.projectionActiveSpanId=null,this.filteredCache=[],this.presentKindsCache=[],this.handoffsCache=[],this.legendLabels=[],this.legendTypes=[],this.onVisibilityChange=e=>{e.stopPropagation(),this.hiddenKinds=e.detail.hiddenTypes,this.emit("lr-span-visibility-change",{hiddenKinds:[...this.hiddenKinds]})},this.onVisibilityChangeProposal=event=>{event.stopPropagation()},this.onTreeSpanSelect=e=>{this.activeSpanId=e.detail.spanId}}static{this.defaultStrings={...super.defaultStrings,agentTraceFilterLabel:LYRA_DEFAULT_agentTraceFilterLabel,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,handoffFromToAgent:LYRA_DEFAULT_handoffFromToAgent,handoffToAgent:LYRA_DEFAULT_handoffToAgent,map:LYRA_DEFAULT_map,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["spans","hiddenKinds"])}static{this.identityCollectionProperties=Object.freeze(["spans"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-span-visibility-change"])}projectedSpans(){return(this.projectionSource!==this.spans||this.projectionActiveSpanId!==this.activeSpanId)&&(this.projectionSource=this.spans,this.projectionActiveSpanId=this.activeSpanId,this.projectionCache=normalizeLyraSpans(this.spans,this.activeSpanId)),this.projectionCache}presentKinds(spans){if(this.presentKindsSource!==spans){this.presentKindsSource=spans;const present=new Set(spans.map(span=>span.kind));this.presentKindsCache=KIND_ORDER.filter(kind=>present.has(kind))}return this.presentKindsCache}filteredSpans(spans){if(this.filteredSource!==spans||this.filteredKinds!==this.hiddenKinds){this.filteredSource=spans,this.filteredKinds=this.hiddenKinds;const hidden=new Set(this.hiddenKinds);this.filteredCache=hidden.size===0?[...spans]:spans.filter(span=>!hidden.has(span.kind))}return this.filteredCache}handoffSpans(spans){return this.handoffsSource!==spans&&(this.handoffsSource=spans,this.handoffsCache=spans.filter(span=>span.kind==="agent")),this.handoffsCache}handoffFromAgent(span,byId){if(!span.parentId)return"";const parent=byId.get(span.parentId);return parent?.kind==="agent"?parent.name:""}handoffAccessibleLabel(span,fromAgent){return fromAgent?this.localize("handoffFromToAgent",void 0,{from:fromAgent,to:span.name}):this.localize("handoffToAgent",void 0,{agent:span.name})}selectSpan(id){this.activeSpanId=id,this.emit("lr-span-select",{spanId:id})}renderFilter(spans){const kinds=this.presentKinds(spans);if(kinds.length===0)return nothing;const labels=kinds.map(kind=>this.localize(KIND_LABEL_KEY[kind]));return(this.legendKinds!==kinds||labels.some((label,index)=>label!==this.legendLabels[index]))&&(this.legendKinds=kinds,this.legendLabels=labels,this.legendTypes=kinds.map((kind,index)=>({id:kind,label:labels[index]}))),html`
1
+ import{__decorate}from"tslib";import{finiteCount}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{AnnouncementSinkController}from"../../../internal/announcer.js";import{collectionSupport,publicCollectionTruncation}from"../../../internal/collection-snapshot.js";import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{ref}from"lit/directives/ref.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{styles}from"./agent-trace.styles.js";import{projectLyraSpans}from"../trace-tree/span-projection.js";import{LYRA_DEFAULT_agentTraceFilterLabel,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool,LYRA_DEFAULT_spanProjectionLimit}from"../../../internal/default-strings/agent-tools.generated.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_details,LYRA_DEFAULT_handoffFromToAgent,LYRA_DEFAULT_handoffToAgent,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_open,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings/shared.generated.js";const EMPTY_SPANS=Object.freeze([]),KIND_ORDER=["agent","llm","tool","retriever","embedding","other"],KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"};class LyraAgentTrace extends LyraElement{constructor(){super(...arguments),this._treeSource=void 0,this.sourceVersion=0,this.bindTree=element=>{const tree=element;if(this.sourceTree=tree,!tree)return;const version=this.sourceVersion,source=this.treeSource;this.forwardKinds(tree),!(this.sourceTree!==tree||this.sourceVersion!==version||this.treeSource!==source)&&tree.treeSource!==source&&(tree.treeSource=source)},this.spans=[],this.maxNodes=500,this.announcements=new AnnouncementSinkController(this,{eager:["polite"]}),this.sourceNotice=!1,this.previousSourceNotice=!1,this.noticeInitialized=!1,this.activeSpanId=null,this.hiddenKinds=[],this.withTokens=!1,this.withCost=!1,this.withoutBars=!1,this.projectionLimit=0,this.projectionActiveSpanId=null,this.filteredCache=[],this.presentKindsCache=[],this.handoffsCache=[],this.legendLabels=[],this.legendTypes=[],this.onVisibilityChange=e=>{e.stopPropagation();const version=this.sourceVersion,source=this.treeSource;this.hiddenKinds=e.detail.hiddenTypes,!(!this.isConnected||this.sourceVersion!==version||this.treeSource!==source)&&this.emit("lr-span-visibility-change",{hiddenKinds:[...this.hiddenKinds]})},this.onVisibilityChangeProposal=event=>{event.stopPropagation()},this.onTreeSpanSelect=e=>{!this.isConnected||e.currentTarget!==this.sourceTree||this.sourceTree.treeSource!==this.treeSource||(this.activeSpanId=e.detail.spanId)}}static{this.defaultStrings={...super.defaultStrings,agentTraceFilterLabel:LYRA_DEFAULT_agentTraceFilterLabel,collapse:LYRA_DEFAULT_collapse,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,details:LYRA_DEFAULT_details,handoffFromToAgent:LYRA_DEFAULT_handoffFromToAgent,handoffToAgent:LYRA_DEFAULT_handoffToAgent,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,open:LYRA_DEFAULT_open,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool,spanProjectionLimit:LYRA_DEFAULT_spanProjectionLimit,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut}}static{this.collectionSupport=collectionSupport}static{this.ownedCollectionProperties=Object.freeze(["spans","hiddenKinds"])}static{this.identityCollectionProperties=Object.freeze(["spans"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-span-visibility-change"])}get treeSource(){return this._treeSource}set treeSource(value){const previous=this._treeSource;this._treeSource=value,this.sourceVersion++;const tree=this.sourceTree;tree&&(tree.treeSource=value),this.requestUpdate("treeSource",previous)}async revealSourceKey(key){const source=this.treeSource;if(source===void 0)return!1;const version=this.sourceVersion,owner=this.ownerDocument,current=()=>this.isConnected&&this.ownerDocument===owner&&this.treeSource===source&&this.sourceVersion===version;await this.updateComplete;const tree=this.sourceTree;if(!current()||!tree||tree.treeSource!==source)return!1;const revealed=await tree.revealSourceKey(key);return current()&&this.sourceTree===tree&&tree.treeSource===source&&revealed}forwardKinds(tree){(this.forwardedTree!==tree||this.forwardedKinds!==this.hiddenKinds)&&(this.forwardedTree=tree,this.forwardedKinds=this.hiddenKinds,tree.hiddenKinds=this.hiddenKinds)}requestUpdate(name,oldValue){name==="hiddenKinds"&&this.sourceTree&&this.forwardKinds(this.sourceTree),name===void 0&&this._treeSource!==void 0&&(this.sourceVersion++,this.sourceTree?.requestUpdate()),super.requestUpdate(name,oldValue)}disconnectedCallback(){this.sourceVersion++,super.disconnectedCallback()}get effectiveMaxNodes(){return Math.max(1,Math.min(5e3,finiteCount(this.maxNodes,500)))}connectedCallback(){super.connectedCallback(),this.noticeInitialized=this.hasUpdated,this.previousSourceNotice=this.sourceNotice}adoptedCallback(){super.adoptedCallback(),this.sourceVersion++,this.announcements.adopted()}limitMessage(){return this.localize("spanProjectionLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(this.effectiveMaxNodes)})}updated(changed){if(super.updated(changed),this.treeSource!==void 0)return;const version=this.sourceVersion,owner=this.ownerDocument,notice=this.sourceNotice,current=()=>this.isConnected&&this.ownerDocument===owner&&this.sourceVersion===version&&this.treeSource===void 0&&this.sourceNotice===notice;if(this.noticeInitialized&&notice&&!this.previousSourceNotice){const message=this.limitMessage();if(!current()||(this.announcements.announcePolite(message),!current()))return}this.noticeInitialized=!0,this.previousSourceNotice=notice}projectedSpans(){return(this.projectionSource!==this.spans||this.projectionActiveSpanId!==this.activeSpanId||this.projectionLimit!==this.effectiveMaxNodes)&&(this.projectionSource=this.spans,this.projectionActiveSpanId=this.activeSpanId,this.projectionLimit=this.effectiveMaxNodes,this.projectionCache=projectLyraSpans(this.spans,this.activeSpanId,this.effectiveMaxNodes)),this.projectionCache}presentKinds(spans){if(this.presentKindsSource!==spans){this.presentKindsSource=spans;const present=new Set(spans.map(span=>span.kind));this.presentKindsCache=KIND_ORDER.filter(kind=>present.has(kind))}return this.presentKindsCache}filteredSpans(spans){if(this.filteredSource!==spans||this.filteredKinds!==this.hiddenKinds){this.filteredSource=spans,this.filteredKinds=this.hiddenKinds;const hidden=new Set(this.hiddenKinds);this.filteredCache=hidden.size===0?[...spans]:spans.filter(span=>!hidden.has(span.kind))}return this.filteredCache}handoffSpans(spans){return this.handoffsSource!==spans&&(this.handoffsSource=spans,this.handoffsCache=spans.filter(span=>span.kind==="agent")),this.handoffsCache}handoffFromAgent(span,byId){if(!span.parentId)return"";const parent=byId.get(span.parentId);return parent?.kind==="agent"?parent.name:""}handoffAccessibleLabel(span,fromAgent){return fromAgent?this.localize("handoffFromToAgent",void 0,{from:fromAgent,to:span.name}):this.localize("handoffToAgent",void 0,{agent:span.name})}selectSpan(id){this.treeSource!==void 0||!this.isConnected||(this.activeSpanId=id,this.emit("lr-span-select",{spanId:id}))}renderFilter(spans){const version=this.sourceVersion,hiddenKinds=this.hiddenKinds,kinds=this.treeSource!==void 0?KIND_ORDER:this.presentKinds(spans);if(kinds.length===0)return nothing;const labels=kinds.map(kind=>this.localize(KIND_LABEL_KEY[kind])),label=this.localize("agentTraceFilterLabel");if(version!==this.sourceVersion||hiddenKinds!==this.hiddenKinds)return nothing;(this.legendKinds!==kinds||labels.some((label2,index)=>label2!==this.legendLabels[index]))&&(this.legendKinds=kinds,this.legendLabels=labels,this.legendTypes=kinds.map((kind,index)=>({id:kind,label:labels[index]})));const current=event=>this.isConnected&&this.sourceVersion===version&&this.hiddenKinds===hiddenKinds&&event.currentTarget?.getRootNode()===this.renderRoot;return html`
2
2
  <lr-graph-legend
3
3
  part="filter"
4
- .label=${this.localize("agentTraceFilterLabel")}
4
+ .label=${label}
5
5
  .types=${this.legendTypes}
6
6
  .hiddenTypes=${this.hiddenKinds}
7
- @lr-visibility-change-request=${this.onVisibilityChangeProposal}
8
- @lr-visibility-change=${this.onVisibilityChange}
7
+ @lr-visibility-change-request=${event=>{this.onVisibilityChangeProposal(event),current(event)||event.preventDefault()}}
8
+ @lr-visibility-change=${event=>{event.stopPropagation(),current(event)&&this.onVisibilityChange(event)}}
9
9
  ></lr-graph-legend>
10
- `}renderHandoff(span,byId){const fromAgent=this.handoffFromAgent(span,byId),isActive=this.activeSpanId===span.id;return html`
10
+ `}renderHandoff(span,byId){const version=this.sourceVersion,spans=this.spans,fromAgent=this.handoffFromAgent(span,byId),isActive=this.activeSpanId===span.id;return html`
11
11
  <button
12
12
  part="handoff"
13
13
  type="button"
14
14
  aria-label=${this.handoffAccessibleLabel(span,fromAgent)}
15
15
  aria-current=${isActive?"true":"false"}
16
16
  ?data-active=${isActive}
17
- @click=${()=>this.selectSpan(span.id)}
17
+ @click=${event=>{this.treeSource===void 0&&this.sourceVersion===version&&this.spans===spans&&event.currentTarget?.getRootNode()===this.renderRoot&&this.selectSpan(span.id)}}
18
18
  >
19
19
  <lr-handoff-divider aria-hidden="true" to-agent=${span.name} from-agent=${fromAgent}></lr-handoff-divider>
20
20
  </button>
21
- `}renderHandoffs(spans,byId){const handoffs=this.handoffSpans(spans);return handoffs.length===0?nothing:html`<div part="handoffs">${repeat(handoffs,span=>span.id,span=>this.renderHandoff(span,byId))}</div>`}render(){const projection=this.projectedSpans(),filteredSpans=this.filteredSpans(projection.spans);return html`
21
+ `}renderHandoffs(spans,byId){const handoffs=this.handoffSpans(spans);return handoffs.length===0?nothing:html`<div part="handoffs">${repeat(handoffs,span=>span.id,span=>this.renderHandoff(span,byId))}</div>`}render(){const sourceMode=this.treeSource!==void 0,projection=sourceMode?void 0:this.projectedSpans(),filteredSpans=projection?this.filteredSpans(projection.spans):EMPTY_SPANS;return this.sourceNotice=!!projection&&!!publicCollectionTruncation(this,"spans")&&!projection.truncated,html`
22
22
  <div part="base">
23
- ${this.renderFilter(projection.spans)} ${this.renderHandoffs(filteredSpans,projection.byId)}
23
+ ${this.renderFilter(projection?.spans??EMPTY_SPANS)} ${projection?this.renderHandoffs(filteredSpans,projection.byId):nothing}
24
24
  <lr-trace-tree
25
25
  part="tree"
26
- .spans=${guard([this.spans],()=>this.spans)}
27
- .hiddenKinds=${this.hiddenKinds}
26
+ .maxNodes=${this.effectiveMaxNodes}
27
+ .spans=${sourceMode?EMPTY_SPANS:guard([this.spans],()=>this.spans)}
28
28
  .activeSpanId=${this.activeSpanId}
29
29
  .label=${this.label}
30
+ .strings=${this.strings}
30
31
  ?with-tokens=${this.withTokens}
31
32
  ?with-cost=${this.withCost}
32
33
  ?without-bars=${this.withoutBars}
33
34
  @lr-span-select=${this.onTreeSpanSelect}
35
+ ${ref(this.bindTree)}
34
36
  ></lr-trace-tree>
37
+ ${this.sourceNotice?html`<p part="limit" role="note">${this.limitMessage()}</p>`:nothing}
35
38
  </div>
36
- `}}__decorate([property({attribute:!1})],LyraAgentTrace.prototype,"spans",void 0),__decorate([property({attribute:"active-span-id"})],LyraAgentTrace.prototype,"activeSpanId",void 0),__decorate([property({attribute:!1})],LyraAgentTrace.prototype,"hiddenKinds",void 0),__decorate([property()],LyraAgentTrace.prototype,"label",void 0),__decorate([property({type:Boolean,attribute:"with-tokens"})],LyraAgentTrace.prototype,"withTokens",void 0),__decorate([property({type:Boolean,attribute:"with-cost"})],LyraAgentTrace.prototype,"withCost",void 0),__decorate([property({type:Boolean,attribute:"without-bars"})],LyraAgentTrace.prototype,"withoutBars",void 0);export{LyraAgentTrace};
39
+ `}}__decorate([property({attribute:!1})],LyraAgentTrace.prototype,"treeSource",null),__decorate([property({attribute:!1})],LyraAgentTrace.prototype,"spans",void 0),__decorate([property({type:Number,attribute:"max-nodes"})],LyraAgentTrace.prototype,"maxNodes",void 0),__decorate([property({attribute:"active-span-id"})],LyraAgentTrace.prototype,"activeSpanId",void 0),__decorate([property({attribute:!1})],LyraAgentTrace.prototype,"hiddenKinds",void 0),__decorate([property()],LyraAgentTrace.prototype,"label",void 0),__decorate([property({type:Boolean,attribute:"with-tokens"})],LyraAgentTrace.prototype,"withTokens",void 0),__decorate([property({type:Boolean,attribute:"with-cost"})],LyraAgentTrace.prototype,"withCost",void 0),__decorate([property({type:Boolean,attribute:"without-bars"})],LyraAgentTrace.prototype,"withoutBars",void 0);export{LyraAgentTrace};
@@ -1 +1 @@
1
- import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); } [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); max-inline-size: 100%; box-sizing: border-box; } [part='filter'] { max-inline-size: 100%; } [part='handoffs'] { display: flex; flex-direction: column; gap: var(--lr-space-2xs); padding: var(--lr-space-xs); border: var(--lr-border-width-thin) solid var(--lr-color-border-subtle); border-radius: var(--lr-radius); background: var(--lr-color-surface-raised); box-sizing: border-box; max-inline-size: 100%; } [part='handoff'] { display: block; inline-size: 100%; ${iconHitTarget} max-inline-size: 100%; box-sizing: border-box; padding: 0; border: none; background: none; font: inherit; text-align: start; color: inherit; cursor: pointer; border-radius: var(--lr-radius-xs); transition: background-color var(--lr-transition-fast), color var(--lr-transition-fast); } [part='handoff']:hover { background: color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-hover)); } [part='handoff']:active { background: color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='handoff']:focus-visible { ${focusRing} } [part='handoff'][data-active] { background: var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet)); } [part='handoff'][data-active]:active { background: color-mix( in oklab, var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part='tree'] { max-inline-size: 100%; } `;export{styles};
1
+ import{iconHitTarget,focusRing}from"../../../internal/interactive-control.styles.js";import{css}from"lit";const styles=css` :host { display: block; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); } [part='base'] { display: flex; flex-direction: column; gap: var(--lr-space-m); max-inline-size: 100%; box-sizing: border-box; } [part='limit'] { margin: var(--lr-space-s); color: var(--lr-color-text-quiet); font-size: var(--lr-font-size-xs); } [part='filter'] { max-inline-size: 100%; } [part='handoffs'] { display: flex; flex-direction: column; gap: var(--lr-space-2xs); padding: var(--lr-space-xs); border: var(--lr-border-width-thin) solid var(--lr-color-border-subtle); border-radius: var(--lr-radius); background: var(--lr-color-surface-raised); box-sizing: border-box; max-inline-size: 100%; } [part='handoff'] { display: block; inline-size: 100%; ${iconHitTarget} max-inline-size: 100%; box-sizing: border-box; padding: 0; border: none; background: none; font: inherit; text-align: start; color: inherit; cursor: pointer; border-radius: var(--lr-radius-xs); transition: background-color var(--lr-transition-fast), color var(--lr-transition-fast); } [part='handoff']:hover { background: color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-hover)); } [part='handoff']:active { background: color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-active)); } [part='handoff']:focus-visible { ${focusRing} } [part='handoff'][data-active] { background: var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet)); } [part='handoff'][data-active]:active { background: color-mix( in oklab, var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active) ); } [part='tree'] { max-inline-size: 100%; } `;export{styles};
@@ -1,4 +1,4 @@
1
- import{__decorate}from"tslib";import{html,nothing,svg}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{renderApproveAction,renderDenyAction}from"../approval-action-buttons.js";import{hasRealContent,hostAriaLabel,nextId}from"../../../internal/a11y.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{deferComposedFocusRepair,focusFirstAvailable,isComposedFocusAvailable,repairComposedFocus}from"../../../internal/focus-navigation.js";import{markVetoGuardWrite,VetoWriteGuard}from"../../../internal/veto-write-guard.js";import{resolveLocalizedParts}from"../../../internal/localization-runtime.js";import{optionalLiteralSetConverter}from"../../../internal/converters.js";import"../../layout/details/details.class.js";import"../../utility/json-viewer/json-viewer.class.js";import"../../utility/live-region/live-region.class.js";import"../../forms/button/button.class.js";import{styles}from"./confirm-bar.styles.js";import{approvalAction}from"../approval-state.js";import{createWaitUntil}from"../../../internal/approval-wait-until.js";import{LYRA_DEFAULT_confirmApproved,LYRA_DEFAULT_confirmApprovedAnnounce,LYRA_DEFAULT_confirmDenied,LYRA_DEFAULT_confirmDeniedAnnounce,LYRA_DEFAULT_toolApprovalArgsLabel,LYRA_DEFAULT_toolApprovalGenericTool,LYRA_DEFAULT_toolApprovalHeading}from"../../../internal/default-strings/agent-tools.generated.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_collapse,LYRA_DEFAULT_date,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_viewerSearchActiveMatch,LYRA_DEFAULT_viewerSearchMatchCount,LYRA_DEFAULT_viewerSearchNoMatches}from"../../../internal/default-strings/shared.generated.js";const CONFIRM_BAR_DECISION=optionalLiteralSetConverter(["approved","denied"]),CONFIRM_BAR_PENDING_ACTION=optionalLiteralSetConverter(["approve","deny"]),ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function approvedIcon(){return svg`
1
+ import{__decorate}from"tslib";import{html,nothing,svg}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{renderApproveAction,renderDenyAction}from"../approval-action-buttons.js";import{hasRealContent,hostAriaLabel,nextId}from"../../../internal/a11y.js";import{resolveHeadingLevel}from"../../../internal/heading-level.js";import{deferComposedFocusRepair,focusFirstAvailable,isComposedFocusAvailable,repairComposedFocus}from"../../../internal/focus-navigation.js";import{markVetoGuardWrite,VetoWriteGuard}from"../../../internal/veto-write-guard.js";import{resolveLocalizedParts}from"../../../internal/localization-runtime.js";import{optionalLiteralSetConverter}from"../../../internal/converters.js";import"../../layout/details/details.class.js";import"../../utility/json-viewer/json-viewer.class.js";import"../../utility/live-region/live-region.class.js";import"../../forms/button/button.class.js";import{styles}from"./confirm-bar.styles.js";import{approvalAction}from"../approval-state.js";import{createWaitUntil}from"../../../internal/approval-wait-until.js";import{LYRA_DEFAULT_confirmApproved,LYRA_DEFAULT_confirmApprovedAnnounce,LYRA_DEFAULT_confirmDenied,LYRA_DEFAULT_confirmDeniedAnnounce,LYRA_DEFAULT_toolApprovalArgsLabel,LYRA_DEFAULT_toolApprovalGenericTool,LYRA_DEFAULT_toolApprovalHeading}from"../../../internal/default-strings/agent-tools.generated.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_collapse,LYRA_DEFAULT_copy,LYRA_DEFAULT_date,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_loading,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_viewerSearchActiveMatch,LYRA_DEFAULT_viewerSearchMatchCount,LYRA_DEFAULT_viewerSearchNoMatches}from"../../../internal/default-strings/shared.generated.js";const CONFIRM_BAR_DECISION=optionalLiteralSetConverter(["approved","denied"]),CONFIRM_BAR_PENDING_ACTION=optionalLiteralSetConverter(["approve","deny"]),ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function approvedIcon(){return svg`
2
2
  <svg width="1em" height="1em" viewBox=${ICON_VIEW_BOX} fill="none" stroke="currentColor" stroke-width=${ICON_STROKE_WIDTH} stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
3
3
  <circle cx="12" cy="12" r="9"></circle>
4
4
  <polyline points="8 12.5 11 15.5 16 9.5"></polyline>
@@ -9,7 +9,7 @@ import{__decorate}from"tslib";import{html,nothing,svg}from"lit";import{property,
9
9
  <line x1="9" y1="9" x2="15" y2="15"></line>
10
10
  <line x1="15" y1="9" x2="9" y2="15"></line>
11
11
  </svg>
12
- `}class LyraConfirmBar extends LyraElement{constructor(){super(...arguments),this.toolName="",this.heading="",this.headingLevel="none",this.args=void 0,this._decision=null,this._pending=null,this.dispatchWriteGuard=new VetoWriteGuard,this.disabled=!1,this.variant="neutral",this.size="m",this.frame="card",this.autofocus=!1,this.escapeDenies=!1,this.returnFocusTo=null,this.hasBodySlot=!1,this.headingId=nextId("confirm-bar-heading"),this.deferralGeneration=0,this.onBodySlotChange=e=>{this.hasBodySlot=hasRealContent(e.target.assignedNodes({flatten:!0}))},this.onBaseKeyDown=event=>{if(!this.escapeDenies||event.key!=="Escape")return;const path=event.composedPath(),inOpenPopup=path.slice(0,path.indexOf(this)).some(node=>node instanceof Element&&node.hasAttribute("open"));if(event.defaultPrevented||event.isComposing||inOpenPopup)return;const decisionBefore=this.decision,pendingBefore=this.pendingAction;this.decide("denied"),(this.decision!==decisionBefore||this.pendingAction!==pendingBefore)&&event.stopPropagation()},this.decisionDispatching=!1}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,collapse:LYRA_DEFAULT_collapse,confirmApproved:LYRA_DEFAULT_confirmApproved,confirmApprovedAnnounce:LYRA_DEFAULT_confirmApprovedAnnounce,confirmDenied:LYRA_DEFAULT_confirmDenied,confirmDeniedAnnounce:LYRA_DEFAULT_confirmDeniedAnnounce,date:LYRA_DEFAULT_date,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,toolApprovalArgsLabel:LYRA_DEFAULT_toolApprovalArgsLabel,toolApprovalGenericTool:LYRA_DEFAULT_toolApprovalGenericTool,toolApprovalHeading:LYRA_DEFAULT_toolApprovalHeading,viewerSearchActiveMatch:LYRA_DEFAULT_viewerSearchActiveMatch,viewerSearchMatchCount:LYRA_DEFAULT_viewerSearchMatchCount,viewerSearchNoMatches:LYRA_DEFAULT_viewerSearchNoMatches}}emitApproveRequest(detail){return this.emit("lr-approve-request",Object.freeze(detail),{cancelable:!0})}emitDenyRequest(detail){return this.emit("lr-deny-request",Object.freeze(detail),{cancelable:!0})}static{this.styles=[LyraElement.styles,styles]}get decision(){return this._decision}set decision(value){const previous=this._decision;this._decision=CONFIRM_BAR_DECISION.normalizeReflected(this,"decision",value)??null,markVetoGuardWrite(this.dispatchWriteGuard),this.requestUpdate("decision",previous)}get pendingAction(){return this._pending}set pendingAction(value){const previous=this._pending;this._pending=CONFIRM_BAR_PENDING_ACTION.normalizeReflected(this,"pending-action",value)??null,markVetoGuardWrite(this.dispatchWriteGuard),this.requestUpdate("pendingAction",previous)}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const defaultSlotNodes=Array.from(this.childNodes).filter(node=>node.nodeType!==Node.ELEMENT_NODE||!node.getAttribute("slot"));this.hasBodySlot=hasRealContent(defaultSlotNodes)}changed.has("decision")&&changed.get("decision")!==void 0&&this.decision!=null&&this.pendingAction!=null&&(this.handOffDecidedFocus(),this.pendingAction=null)}firstUpdated(changed){super.firstUpdated(changed),this.autofocus&&this.focusInitial()}focusInitial(){this.updateComplete.then(async()=>{if(!this.isConnected)return;const deny=this.renderRoot.querySelector('[part="deny-button"]');if(await deny?.updateComplete,!this.isConnected)return;(deny&&isComposedFocusAvailable(deny)?deny:this.statusEl)?.focus()})}decide(next){if(!this.decisionDispatching){this.decisionDispatching=!0;try{if(this.disabled||this.decision!=null||this.pendingAction!=null)return;const{waitUntil,deferrals,seal}=createWaitUntil("confirm-bar");this.dispatchWriteGuard.open();const event=next==="approved"?this.emitApproveRequest({args:this.args,waitUntil}):this.emitDenyRequest({waitUntil});seal();const listenerResolvedItself=this.dispatchWriteGuard.touched;if(deferrals.length>0||event.defaultPrevented){if(this.statusEl?.focus(),listenerResolvedItself){for(const deferral of deferrals)deferral.catch(()=>{});return}this.pendingAction=approvalAction(next),deferrals.length>0&&this.awaitDeferredDecision(Promise.all(deferrals),next);return}if(listenerResolvedItself)return;this.handOffDecidedFocus(),this.decision=next}finally{this.decisionDispatching=!1}}}awaitDeferredDecision(promise,next){const action=approvalAction(next);this.deferralGeneration+=1;const generation=this.deferralGeneration,stillOurs=()=>generation===this.deferralGeneration&&this.decision==null&&this.pendingAction===action;promise.then(()=>{stillOurs()&&(this.decision=next)},()=>{stillOurs()&&(this.pendingAction=null,this.returnFocusAfterBounce(action))})}returnFocusAfterBounce(action){this.updateComplete.then(()=>{!this.isConnected||this.decision!=null||this.pendingAction!=null||repairComposedFocus(this,()=>this.renderRoot.querySelector(`[part="${action}-button"]`))})}resolvedReturnFocusTarget(){const target=this.returnFocusTo;return typeof target=="function"?target():target}handOffDecidedFocus(){const target=this.resolvedReturnFocusTarget();target&&focusFirstAvailable([target])||(focusFirstAvailable([this.statusEl]),typeof this.returnFocusTo=="function"&&this.statusEl&&deferComposedFocusRepair(this,this.statusEl,()=>this.resolvedReturnFocusTarget()))}updated(changed){super.updated(changed);const decision=this.decision;if(changed.has("decision")&&changed.get("decision")!==void 0&&decision!=null){const key=decision==="approved"?"confirmApprovedAnnounce":"confirmDeniedAnnounce";this.liveRegion?.announce(this.localize(key),{force:!0}),this.emit("lr-decision-settled",{decision})}}renderHeading(){if(this.heading)return html`${this.heading}`;const toolName=this.toolName||this.localize("toolApprovalGenericTool"),template=this.localize("toolApprovalHeading"),pieces=resolveLocalizedParts(template,marker=>this.localize("toolApprovalHeading",void 0,{tool:marker}));return html`${pieces.map((piece,index)=>index<pieces.length-1?html`${piece}<span part="tool-name" dir="auto">${toolName}</span>`:piece)}`}statusText(){return this.decision==="approved"?this.localize("confirmApproved"):this.localize("confirmDenied")}stopNestedLifecycle(event){event.stopPropagation()}render(){const decided=this.decision!=null,hostLabel=hostAriaLabel(this),headingLevel=resolveHeadingLevel(this.headingLevel??"none");return html`
12
+ `}class LyraConfirmBar extends LyraElement{constructor(){super(...arguments),this.toolName="",this.heading="",this.headingLevel="none",this.args=void 0,this._decision=null,this._pending=null,this.dispatchWriteGuard=new VetoWriteGuard,this.disabled=!1,this.variant="neutral",this.size="m",this.frame="card",this.autofocus=!1,this.escapeDenies=!1,this.returnFocusTo=null,this.hasBodySlot=!1,this.headingId=nextId("confirm-bar-heading"),this.deferralGeneration=0,this.onBodySlotChange=e=>{this.hasBodySlot=hasRealContent(e.target.assignedNodes({flatten:!0}))},this.onBaseKeyDown=event=>{if(!this.escapeDenies||event.key!=="Escape")return;const path=event.composedPath(),inOpenPopup=path.slice(0,path.indexOf(this)).some(node=>node instanceof Element&&node.hasAttribute("open"));if(event.defaultPrevented||event.isComposing||inOpenPopup)return;const decisionBefore=this.decision,pendingBefore=this.pendingAction;this.decide("denied"),(this.decision!==decisionBefore||this.pendingAction!==pendingBefore)&&event.stopPropagation()},this.decisionDispatching=!1}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,collapse:LYRA_DEFAULT_collapse,confirmApproved:LYRA_DEFAULT_confirmApproved,confirmApprovedAnnounce:LYRA_DEFAULT_confirmApprovedAnnounce,confirmDenied:LYRA_DEFAULT_confirmDenied,confirmDeniedAnnounce:LYRA_DEFAULT_confirmDeniedAnnounce,copy:LYRA_DEFAULT_copy,date:LYRA_DEFAULT_date,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,loading:LYRA_DEFAULT_loading,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,toolApprovalArgsLabel:LYRA_DEFAULT_toolApprovalArgsLabel,toolApprovalGenericTool:LYRA_DEFAULT_toolApprovalGenericTool,toolApprovalHeading:LYRA_DEFAULT_toolApprovalHeading,viewerSearchActiveMatch:LYRA_DEFAULT_viewerSearchActiveMatch,viewerSearchMatchCount:LYRA_DEFAULT_viewerSearchMatchCount,viewerSearchNoMatches:LYRA_DEFAULT_viewerSearchNoMatches}}emitApproveRequest(detail){return this.emit("lr-approve-request",Object.freeze(detail),{cancelable:!0})}emitDenyRequest(detail){return this.emit("lr-deny-request",Object.freeze(detail),{cancelable:!0})}static{this.styles=[LyraElement.styles,styles]}get decision(){return this._decision}set decision(value){const previous=this._decision;this._decision=CONFIRM_BAR_DECISION.normalizeReflected(this,"decision",value)??null,markVetoGuardWrite(this.dispatchWriteGuard),this.requestUpdate("decision",previous)}get pendingAction(){return this._pending}set pendingAction(value){const previous=this._pending;this._pending=CONFIRM_BAR_PENDING_ACTION.normalizeReflected(this,"pending-action",value)??null,markVetoGuardWrite(this.dispatchWriteGuard),this.requestUpdate("pendingAction",previous)}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const defaultSlotNodes=Array.from(this.childNodes).filter(node=>node.nodeType!==Node.ELEMENT_NODE||!node.getAttribute("slot"));this.hasBodySlot=hasRealContent(defaultSlotNodes)}changed.has("decision")&&changed.get("decision")!==void 0&&this.decision!=null&&this.pendingAction!=null&&(this.handOffDecidedFocus(),this.pendingAction=null)}firstUpdated(changed){super.firstUpdated(changed),this.autofocus&&this.focusInitial()}focusInitial(){this.updateComplete.then(async()=>{if(!this.isConnected)return;const deny=this.renderRoot.querySelector('[part="deny-button"]');if(await deny?.updateComplete,!this.isConnected)return;(deny&&isComposedFocusAvailable(deny)?deny:this.statusEl)?.focus()})}decide(next){if(!this.decisionDispatching){this.decisionDispatching=!0;try{if(this.disabled||this.decision!=null||this.pendingAction!=null)return;const{waitUntil,deferrals,seal}=createWaitUntil("confirm-bar");this.dispatchWriteGuard.open();const event=next==="approved"?this.emitApproveRequest({args:this.args,waitUntil}):this.emitDenyRequest({waitUntil});seal();const listenerResolvedItself=this.dispatchWriteGuard.touched;if(deferrals.length>0||event.defaultPrevented){if(this.statusEl?.focus(),listenerResolvedItself){for(const deferral of deferrals)deferral.catch(()=>{});return}this.pendingAction=approvalAction(next),deferrals.length>0&&this.awaitDeferredDecision(Promise.all(deferrals),next);return}if(listenerResolvedItself)return;this.handOffDecidedFocus(),this.decision=next}finally{this.decisionDispatching=!1}}}awaitDeferredDecision(promise,next){const action=approvalAction(next);this.deferralGeneration+=1;const generation=this.deferralGeneration,stillOurs=()=>generation===this.deferralGeneration&&this.decision==null&&this.pendingAction===action;promise.then(()=>{stillOurs()&&(this.decision=next)},()=>{stillOurs()&&(this.pendingAction=null,this.returnFocusAfterBounce(action))})}returnFocusAfterBounce(action){this.updateComplete.then(()=>{!this.isConnected||this.decision!=null||this.pendingAction!=null||repairComposedFocus(this,()=>this.renderRoot.querySelector(`[part="${action}-button"]`))})}resolvedReturnFocusTarget(){const target=this.returnFocusTo;return typeof target=="function"?target():target}handOffDecidedFocus(){const target=this.resolvedReturnFocusTarget();target&&focusFirstAvailable([target])||(focusFirstAvailable([this.statusEl]),typeof this.returnFocusTo=="function"&&this.statusEl&&deferComposedFocusRepair(this,this.statusEl,()=>this.resolvedReturnFocusTarget()))}updated(changed){super.updated(changed);const decision=this.decision;if(changed.has("decision")&&changed.get("decision")!==void 0&&decision!=null){const key=decision==="approved"?"confirmApprovedAnnounce":"confirmDeniedAnnounce";this.liveRegion?.announce(this.localize(key),{force:!0}),this.emit("lr-decision-settled",{decision})}}renderHeading(){if(this.heading)return html`${this.heading}`;const toolName=this.toolName||this.localize("toolApprovalGenericTool"),template=this.localize("toolApprovalHeading"),pieces=resolveLocalizedParts(template,marker=>this.localize("toolApprovalHeading",void 0,{tool:marker}));return html`${pieces.map((piece,index)=>index<pieces.length-1?html`${piece}<span part="tool-name" dir="auto">${toolName}</span>`:piece)}`}statusText(){return this.decision==="approved"?this.localize("confirmApproved"):this.localize("confirmDenied")}stopNestedLifecycle(event){event.stopPropagation()}render(){const decided=this.decision!=null,hostLabel=hostAriaLabel(this),headingLevel=resolveHeadingLevel(this.headingLevel??"none");return html`
13
13
  <div
14
14
  part="base"
15
15
  role="group"
@@ -1,4 +1,4 @@
1
- import'../../forms/input/input.class.js';import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraTableEventMap}from'../../data/table/table.class.js';import type{LyraExportFormatOption}from'../../utility/export-button/export-button.class.js';
1
+ import type{LyraPageSource}from'../../../data-sources.js';import'../../forms/input/input.class.js';import type{LyraEventDetailSnapshot}from'../../../internal/lyra-element.js';import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraTableEventMap}from'../../data/table/table.class.js';import type{LyraExportFormatOption}from'../../utility/export-button/export-button.class.js';
2
2
  /**
3
3
  * One row of an evaluation dataset -- a single labeled test case an eval run scores a
4
4
  * model/prompt against. Deliberately its own small shape rather than reusing anything from
@@ -8,7 +8,9 @@ import'../../forms/input/input.class.js';import type{LyraEventDetailSnapshot}fro
8
8
  * it. `input`/`expectedOutput` are plain strings (not `unknown`/structured payloads) since every
9
9
  * column's `cell()` here renders them as plain text.
10
10
  */
11
- export interface EvalExample{id:string;input:string;expectedOutput?:string;tags?:readonly string[];metadata?:Record<string,unknown>;}export interface LyraEvalDatasetEventMap{'lr-example-select':CustomEvent<{exampleId:string|null;}>;'lr-example-add-request':CustomEvent<null>;'lr-example-remove-request':CustomEvent<{exampleId:string;}>;'lr-import-request':CustomEvent<LyraEventDetailSnapshot<{files:File[];}>>;'lr-export-request':CustomEvent<{format:string;}>;
11
+ export interface EvalExample{id:string;input:string;expectedOutput?:string;tags?:readonly string[];metadata?:Record<string,unknown>;}
12
+ /** Full-source example query; tags use OR semantics, combined with text search. */
13
+ export interface EvalDatasetSourceQuery{readonly search:string;readonly tags:readonly string[];readonly sortKey:string|null;readonly sortDir:'asc'|'desc';}export type EvalDatasetSource=LyraPageSource<EvalExample,EvalDatasetSourceQuery>;export interface LyraEvalDatasetEventMap{'lr-example-select':CustomEvent<{exampleId:string|null;}>;'lr-example-add-request':CustomEvent<null>;'lr-example-remove-request':CustomEvent<{exampleId:string;}>;'lr-import-request':CustomEvent<LyraEventDetailSnapshot<{files:File[];}>>;'lr-export-request':CustomEvent<{format:string;}>;
12
14
  /** Deliberate pass-through from the controlled comparison table. */
13
15
  'lr-sort':LyraTableEventMap<EvalExample>['lr-sort'];focus:FocusEvent;blur:FocusEvent;}
14
16
  /**
@@ -44,8 +46,24 @@ export interface EvalExample{id:string;input:string;expectedOutput?:string;tags?
44
46
  * array -- the same "the host owns the actual data" contract as every other mutation this
45
47
  * component surfaces.
46
48
  *
47
- * Public collection properties take bounded, clone-owned readonly snapshots. Create a new
48
- * collection and reassign it after changes; mutating the assigned array does not update the view.
49
+ * Public collection arrays take bounded readonly snapshots. Example records retain identity so
50
+ * opaque metadata stays intact; reassign `examples` after editing records. At most 10,000 examples
51
+ * are admitted, with an existing limit notice when more are supplied. Other owned collections
52
+ * retain the 10,000-entry and 50,000-node clone limits.
53
+ *
54
+ * Tag facets show at most 500 locale-sorted distinct tags, keeping selected tags visible and
55
+ * filling the remaining places with the earliest tags. A localized note counts omitted tags.
56
+ * Search and filtering continue to use the complete admitted dataset.
57
+ *
58
+ * With dataSource, the provider owns global text filtering, OR-tag filtering and server sorting.
59
+ * Zero-based sourcePage and sourcePageSize (1..500) address the complete source; sourceTotal is
60
+ * null until an authoritative page arrives. Provider rows have at most 500 tags and 65,536 total
61
+ * display-text UTF-16 units; opaque metadata is not traversed or rendered. Catalogue facets are
62
+ * required, independent of the loaded page, and reserve active tags inside the 500-facet budget.
63
+ * Only unavailableSelected removes active filters. Page/query transitions clear the private
64
+ * selected example once, keeping Remove restricted to a visible row. Import/export/add intents
65
+ * keep their existing host-owned behavior; source mode does not export only the loaded page.
66
+ * Reassign dataSource or call requestUpdate() to refresh; named paints keep source caches stable.
49
67
  *
50
68
  * @customElement lr-eval-dataset
51
69
  * @event lr-example-select - A row was activated. `detail: { exampleId }` -- `exampleId` is `null` once the
@@ -81,7 +99,7 @@ export interface EvalExample{id:string;input:string;expectedOutput?:string;tags?
81
99
  * @csspart tag-filter - The tag-filter chip group's wrapper. Only rendered while `examples`
82
100
  * carries at least one tag.
83
101
  * @csspart grid - The internal `<lr-table>`.
84
- * @csspart limit - Visible notice when the collection boundary retained only the first examples.
102
+ * @csspart limit - Visible notice for omitted examples or tags beyond the 500-facet ceiling.
85
103
  * The search field is a composed `<lr-input>`, so it is themed through the shared `--lr-input-*` and
86
104
  * `--lr-form-control-*` tokens.
87
105
  *
@@ -90,7 +108,16 @@ export interface EvalExample{id:string;input:string;expectedOutput?:string;tags?
90
108
  */
91
109
  export declare class LyraEvalDataset extends LyraElement<LyraEvalDatasetEventMap>{protected static collectionSupport:import("../../../internal/lyra-element.js").LyraCollectionSupport;protected static readonly ownedCollectionProperties:readonly string[];
92
110
  /** Rows carry opaque `metadata` that is never read, so they are kept by identity, not cloned. */
93
- protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];private readonly limitAnnouncements;private limitAnnouncementInitialized;private previouslyTruncated;private examplesTruncated;adoptedCallback():void;protected updated(changed:PropertyValues):void;protected static readonly immutableEventDetails:readonly string[];
111
+ protected static readonly identityCollectionProperties:readonly string[];static styles:import("lit").CSSResultGroup[];private readonly limitAnnouncements;private limitAnnouncementInitialized;private previouslyTruncated;private examplesTruncated;connectedCallback():void;adoptedCallback():void;protected updated(changed:PropertyValues):void;protected static readonly immutableEventDetails:readonly string[];private sourceStateVersion;private _dataSource?;private sourceEpoch;private sourceSyncing;private sourceInputs?;private sourceQueryInputs?;private sourceFailure;private sourceResult?;private sourceRows;private sourceTags;private sourceFacetLabels;private sourceSortKey;private sourceSortDir;private readonly sourcePages;
112
+ /** Host-owned full-source pages; wins over examples even when invalid. Reassign the same
113
+ * provider or call requestUpdate() to refresh. undefined restores the current examples input. */
114
+ get dataSource():EvalDatasetSource|undefined;set dataSource(value:EvalDatasetSource|undefined);
115
+ /** Zero-based provider page; legacy table paging is unchanged. */
116
+ sourcePage:number;
117
+ /** Provider rows per page, normalized to 1..500. */
118
+ sourcePageSize:number;
119
+ /** Exact current-query total, or null while pending, invalid or outside provider mode. */
120
+ get sourceTotal():number|null;private get sourceMode();private get sourceBlocked();private projectSourceExample;private syncSource;private acceptSourcePage;private onSourcePage;private onSourceSort;private onSourceRetry;
94
121
  /** Controlled dataset: every example currently known to the host. This component never
95
122
  * mutates its own copy of it -- add/remove/import/export are all *requests*; the host performs
96
123
  * the actual mutation (and any persistence/API call) and passes the updated array back in.
@@ -134,4 +161,4 @@ disabled:boolean;
134
161
  /** Accessible name for the nested example grid. This wins over the localized
135
162
  * `evalDatasetLabel` default, which also applies when it is empty since the grid needs a name; a
136
163
  * host `aria-label` names the host itself and is not cloned onto the independently interactive grid. */
137
- label:string;private searchText;private activeTags;private selectedId;private normalizedFor?;private normalizedCache;private get normalizedExamples();protected willUpdate(changed:PropertyValues):void;private clearSelection;private allTags;private visibleExamples;private filterExamples;private columnsCache?;private selectedKeysCache?;private buildColumns;private selectedKeys;private createColumns;private onAddClick;private onRemoveClick;private onGridRowActivate;private onFiles;private onExportButtonExport;private onTagChipToggle;private stopOwnedEvent;private renderToolbar;private renderSearch;private readonly gateDisabledClear;private renderTagFilter;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-eval-dataset':LyraEvalDataset;}}
164
+ label:string;private searchText;private activeTags;private selectedId;private normalizedFor?;private normalizedCache;private get normalizedExamples();private explicitRefresh;private normalizedRefresh;private filterMemo?;private readonly searchCorpus;requestUpdate(...args:Parameters<LyraElement['requestUpdate']>):void;protected willUpdate(changed:PropertyValues):void;private clearSelection;private tagsMemo?;private allTags;private visibleExamples;private filterExamples;private columnsCache?;private selectedKeysCache?;private buildColumns;private selectedKeys;private createColumns;private onAddClick;private onRemoveClick;private onGridRowActivate;private onFiles;private onExportButtonExport;private onTagChipToggle;private stopOwnedEvent;private renderToolbar;private renderSearch;private readonly gateDisabledClear;private facetMemo?;private visibleTagFacets;private tagTemplateMemo?;private renderTagFilter;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-eval-dataset':LyraEvalDataset;}}