@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
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [agent-tools](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/agent-tools.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 12 parts, 14 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 18 parts, 14 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -19,11 +19,87 @@
19
19
  A live, collapsible tracker for an agent's plan: ordered steps with per-step lifecycle status and one
20
20
  level of nested sub-steps, embedded in the transcript. `items` is controlled and never mutated by this
21
21
  component. Unlike `<lr-stepper>`'s single-`current` navigation, task-list has no selection and
22
- several steps may be `running` at once. By default it is a status report; `reorderable` adds
23
- controlled keyboard reorder requests without changing ownership of `items`. Status changes and
24
- confirmed moves are announced through an internal `<lr-live-region>`.
25
- The list renders at most 500 tasks across top-level rows and direct children; `[part="limit"]`
26
- explains when more were supplied. The summary still counts every top-level task.
22
+ several steps may be `running` at once. By default it is a status report; with `treeSource` unset,
23
+ `reorderable` adds controlled keyboard reorder requests without changing ownership of `items`.
24
+ Legacy status changes and confirmed moves are announced through an internal `<lr-live-region>`.
25
+
26
+ **Complete source tasks:** `treeSource: TaskListSource | undefined`
27
+ (attribute: false) takes precedence over `items`; invalid defined sources fail visibly without
28
+ falling back to the array. Only `undefined` restores current legacy items.
29
+
30
+ ```ts
31
+ import "@aceshooting/lyra-ui/components/lr-task-list.js";
32
+ import type { TaskListSource, TaskItem, TaskStatus } from
33
+ "@aceshooting/lyra-ui/components/agent-tools/task-list/task-list.class.js";
34
+ import type { LyraHierarchySource, LyraHierarchyQuery, LyraTaskSourceSummary } from
35
+ "@aceshooting/lyra-ui/data-sources.js";
36
+ ```
37
+
38
+ `TaskListSource = LyraHierarchySource<TaskItem, LyraHierarchyQuery, LyraTaskSourceSummary>`.
39
+ The exact shared hierarchy/request/row protocols and
40
+ `LyraTaskSourceSummary` declaration are in [shared source contracts](../shared/events-and-types.md).
41
+ The required summary has readonly `total` and `completed` safe nonnegative integers with
42
+ `completed <= total <= projection.total`. Its counts describe all top-level tasks, independently
43
+ of the current visible preorder and mounted rows. `projection.total` counts all logical tasks,
44
+ including collapsed children; `projection.rows.count` counts the complete currently visible
45
+ preorder and cannot exceed that total. The header uses the provider's summary, never counts
46
+ from a loaded window; unavailable summaries do not paint a fabricated 0-of-0 header.
47
+
48
+ The provider implements `project({ revision, locale, signal, query, state, action })`; query stays
49
+ `{ search: '', hiddenKinds: [] }`. Revision is a nonempty string or finite number. Each immutable
50
+ projection supplies a nonempty `state` token of at most 65,536 UTF-16 units,
51
+ `total`, `rows`, required `summary` and optional `focusIndex`. Rows use either indexed
52
+ `count`/`itemAt`/`keyAt`/`indexOfKey`, or ranged `count`/`read`/`indexOfKey`; ranged reads return
53
+ exactly the requested in-bounds range. Keys resolve directly without a full-source scan.
54
+ Provider preorder, parent keys, one-based `level`/`position`/`setSize`, `childCount`, `expanded`,
55
+ `selected`, optional `disabled` and `selectionState` own topology and semantic metadata.
56
+ Task rows must be level 1 with null parent, or level 2 with a nonempty parent and no children;
57
+ deeper source rows fail visibly. The component never traverses `value.children` or opaque task
58
+ metadata, and `row.key` must equal the nonblank `value.id`.
59
+
60
+ Source values copy only own data fields `id`, `label`, `status` and optional `detail`.
61
+ Accessor-backed fields reject; nonstring label/detail normalize to empty text and unknown status
62
+ to `'pending'`. A normalized row's key, parent key, id, label and detail share a 65,536 UTF-16-unit
63
+ budget. Retained rows, focused reserve and pending admission share a 2,000,000-unit payload
64
+ ceiling. Four 100-row pages retain at most 400 rows plus one focused row; at most 301 rows mount,
65
+ with at most two physical range reads. Projection work permits one physical call and only the
66
+ latest queued intent; ignored aborts keep their physical permits until settlement. Provider
67
+ storage and indexing remain caller-owned.
68
+
69
+ The virtualized tree navigates the complete visible preorder, with global Home/End, Up/Down,
70
+ RTL-aware expansion/parent keys and disabled-row handling. `revealSourceKey(key: string):
71
+ Promise<boolean>` requests a provider reveal and focuses its returned `focusIndex`; it resolves
72
+ false when no source is set, the key is invalid/absent/disabled, focus cannot be transferred, or
73
+ the operation is obsolete. Reveal, refresh and row focus emit no task action or selection event.
74
+ Row activation does not request provider selection. Provider expansion controls remain available,
75
+ but emit no new task toggle event; the existing `lr-toggle-request`/`lr-toggle` pair controls only
76
+ the outer panel. `reorderable` and `maxNodes` govern legacy items; source mode disables reorder,
77
+ clears pending moves and never replays historical per-item status changes as fresh announcements.
78
+
79
+ `heading`, `headingLevel`, `frame`, `size` and panel collapse remain local presentation. The
80
+ header's existing cancelable toggle proposal/veto behavior remains; a superseded proposal cannot
81
+ change a replacement view. Source rows retain status icons, text/detail and `detail-<id>` slots.
82
+ Their native treeitem accessible names derive from the rendered status, label, detail and rich
83
+ slot content, each once; the focus owner is `source-row`, rather than a legacy reorder row.
84
+ Source parts are `source-list`, `source-row`, `source-label`, `source-toggle`, `source-status` and
85
+ `source-error`. Localized loading, complete visible/logical counts, empty, projection failure and
86
+ per-row retry states stay distinct. Initial status is quiet; later current source status/failure
87
+ changes use light-DOM announcements without historical task-status replay.
88
+
89
+ Reassign even the same source or call a keyless `requestUpdate()` after revision/state changes.
90
+ Named presentation paints reuse accepted data unless revision or effective locale changes.
91
+ Source/revision replacement, reveal/expansion supersession, disconnect and adoption revoke old
92
+ rows, callbacks and effects; reconnect requests the current source. Retained controls cannot act
93
+ on a replacement row that reuses the same key. Provider results and displayed records must remain
94
+ immutable for their captured revision.
95
+
96
+ **Legacy array admission:** with `treeSource` unset, the list renders at most `maxNodes` tasks
97
+ (default 500) across top-level rows and direct children;
98
+ `[part="limit"]` explains when source admission or rendering omits tasks. The summary counts every
99
+ valid admitted top-level task. Initial limit notices are silent; a later transition into truncation is announced politely.
100
+ Assignment examines the first 10,000 outer entries; direct-child arrays share a separate 10,000-position
101
+ budget. Display fields are copied without invoking accessors or traversing opaque metadata. Reassign
102
+ a new array after changing task data; unrelated updates and reconnects retain the assigned snapshot.
27
103
 
28
104
  **Properties:** `items: readonly TaskItem[] = []` (attribute: false) — `TaskItem { id: string; label: string;
29
105
  status: TaskStatus; detail?: string; children?: readonly TaskItem[] }` with `TaskStatus = 'pending' |
@@ -35,6 +111,8 @@ line; `children` is exactly **one** level of sub-steps — a child's own `childr
35
111
  rendering, summaries, announcements, and reorder validation. While `reorderable`, every retained
36
112
  top-level task and direct child must additionally have a globally unique `id`; duplicate data stays
37
113
  visible but fails closed, with no row keyboard stops or reorder requests.
114
+ `maxNodes: number = 500` (attribute `max-nodes`) sets the rendered parent-plus-child budget,
115
+ normalized to `1..5000`; unset or non-finite values restore 500.
38
116
  `reorderable: boolean = false` (reflected) enables Ctrl/Cmd+ArrowUp/ArrowDown on a focused task.
39
117
  It emits a request only; the host must assign a new reordered `items` array before the task visibly
40
118
  moves or an announcement is made. `heading?: string` — the visible section title; omission
@@ -62,7 +140,8 @@ that item's label, typically a `<lr-tool-call-chip>` or file `<lr-chip>`.
62
140
  **Events:** cancelable `lr-toggle-request` (`detail: { expanded }`, the requested state), `lr-toggle` — the header was activated, expanding or collapsing the panel. `detail: {
63
141
  expanded }`. `lr-reorder` — Ctrl/Cmd+ArrowUp/ArrowDown requests moving the focused task within its
64
142
  own sibling list. `detail: { taskId, parentTaskId, fromIndex, toIndex }`; `parentTaskId` is `null`
65
- for a top-level task and indices are sibling-scoped. It fires only while `reorderable` with unique,
143
+ for a top-level task and indices are sibling-scoped. It fires only with `treeSource` unset while
144
+ `reorderable` with unique,
66
145
  nonempty ids.
67
146
  A boundary key is a silent no-op, so it never reparents a child; the component announces success only
68
147
  after the host's rendered array confirms the exact requested swap.
@@ -73,11 +152,16 @@ after the host's rendered array confirms the exact requested swap.
73
152
  otherwise, within the configured semantic heading), `label` (the `heading` text),
74
153
  `summary` (the visible "N of M completed" summary, top-level items only), `toggle` (the chevron
75
154
  indicator, not rendered while `without-collapse`), `body` (the list of items, `hidden` while collapsed),
76
- `item` (`role="listitem"`; carries `data-status`/`data-id`/`data-depth` and is focusable only for
155
+ `item` (legacy `role="listitem"`; carries `data-status`/`data-id`/`data-depth` and is focusable only for
77
156
  valid `reorderable` data), `status-icon`, `item-label`, `item-detail`, `limit` (shown when the task
78
- render cap is exceeded), and `item-children` (the
157
+ source or render cap is exceeded), and `item-children` (the
79
158
  nested `role="list"` wrapper around a top-level item's children).
80
159
 
160
+ With `treeSource` set, additional CSS parts are `source-list` (bounded provider virtual viewport), `source-row` (flat
161
+ logical tree item and focus owner), `source-label` (row content), `source-toggle` (expand/collapse
162
+ or retry button), `source-status` (loading, full-source count or empty text), and `source-error`
163
+ (localized projection or row failure).
164
+
81
165
  **Themeable custom properties:** `--lr-task-list-spin` (default `var(--lr-transition-ambient)`, i.e.
82
166
  `1.8s ease-in-out`, collapsing to `0.001ms linear` under `prefers-reduced-motion`) — running-status
83
167
  icon spin animation duration/timing; `--lr-task-list-compact-header-padding` (default
@@ -22,6 +22,14 @@ characters; an overlong unterminated CSI/OSC sequence is dropped and the next wr
22
22
  clean parser boundary. Carriage return and erase-in-line (`CSI K`, `0K`, `1K`, `2K`) support
23
23
  in-place progress updates; other cursor-addressing sequences remain unsupported.
24
24
 
25
+ The buffer retains at most 2,000,000 UTF-16 text units and 10,000 lines, subject to
26
+ `max-scrollback`. Each `write()` or content commit accepts at most 1,000,000 UTF-16 units; each
27
+ line accepts at most 20,000 scalar columns. When a commit loses data, `lr-overflow` carries
28
+ `LyraTerminalOverflowDetail { truncated: true; inputCharactersDropped: number;
29
+ lineCharactersDropped: number; linesDropped: number }`. Character counts use UTF-16 units;
30
+ `linesDropped` includes scrollback and resource-limit pruning. `write()` remains `void`. Supply
31
+ bounded chunks and consume this event when complete capture matters.
32
+
25
33
  Direction: every line is left-to-right. With `without-wrap`, the scrollport is laid out left-to-right as well, so a long line scrolls from its start and, under `dir="rtl"`, the vertical scrollbar sits on the physical right; the toolbar and jump-to-latest control still follow the page direction. By default (lines soft-wrap), the scrollport follows the page direction.
26
34
 
27
35
  A search with no matches clears earlier rendered match markers. Removing the `content` attribute
@@ -70,6 +78,7 @@ plain text of the whole buffer.
70
78
  default the component creates a plain-text `Blob`/object URL and activates a synthetic
71
79
  `<a download>`; `preventDefault()` suppresses that built-in download so the host can substitute
72
80
  server-side or other handling),
81
+ `lr-overflow` (`detail: LyraTerminalOverflowDetail`, a write or content commit lost data),
73
82
  `lr-follow-change` (`detail: { following }`), `lr-search-change` (`detail: { query, matchCount,
74
83
  matchCountExact, activeIndex }`; `matchCountExact` is `false` once a search hits the 10,000-match
75
84
  ceiling, marking `matchCount` as a lower bound rather than an exact total),
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [agent-tools](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/agent-tools.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 16 parts, 8 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 20 parts, 8 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -22,6 +22,72 @@ alongside the plain failure message.
22
22
 
23
23
  Direction: a failure message (`::part(failure-message)`) uses `unicode-bidi: plaintext`, so each line takes the direction of its own first strong character — assertion text reads left-to-right and a translated message right-to-left. WebKit resolves this once per block from its first strong character rather than per line.
24
24
 
25
+ **Full-source paging:** `dataSource: TestResultsSource | undefined` (attribute:
26
+ false) takes display precedence over `suites`; invalid defined providers fail visibly.
27
+ Setting `undefined` restores the current legacy suites. `sourcePage: number = 0` (`source-page`)
28
+ is zero-based; `sourcePageSize: number = 100` (`source-page-size`) normalizes to 1–500.
29
+ Readonly `sourceTotal: number | null` is the exact filtered record count after success, and `null`
30
+ while unavailable or without a source. Filter/page-size changes reset page zero; an out-of-range
31
+ page receives at most one corrective last-page request.
32
+
33
+ ```ts
34
+ import type {
35
+ TestResultsSource, TestResultsSourceQuery, TestResultsSourceRow, TestResultsSourceSummary,
36
+ } from "@aceshooting/lyra-ui/components/agent-tools/test-results/test-results.class.js";
37
+ import type { LyraPageSource, LyraPageResult, LyraSourceRecord } from
38
+ "@aceshooting/lyra-ui/data-sources.js";
39
+ ```
40
+
41
+ `TestResultsSource` is `LyraPageSource<TestResultsSourceRow, TestResultsSourceQuery,
42
+ TestResultsSourceSummary>`. The provider has immutable `revision` (nonempty string or finite
43
+ number), `query({ revision, locale, signal, page, pageSize, query })`, `lookup(keys, context)` and
44
+ `locate(key, query, context)`. Ordinary paging uses only `query`; it does not lookup or locate
45
+ records. Query contains `{ statuses: readonly TestStatus[] }`, empty for all statuses, and returns
46
+ `{ rows, total, summary }`. Each row is `{ key, order, value: { suiteId, suiteName, test } }`, with
47
+ `key === JSON.stringify([suiteId, test.id])`, nonblank original suite/test IDs and safe canonical
48
+ `order`. Page keys/orders are unique; the response must contain exactly the requested in-bounds
49
+ records. The provider applies filtering to the complete logical result set before paging.
50
+
51
+ Required `TestResultsSourceSummary` is `{ total, passed, failed, skipped, running }` for the complete
52
+ unfiltered run, regardless of the current page/filter. All counts are safe nonnegative integers
53
+ and status counts sum to summary total. Page `total` equals the selected status counts' sum, or
54
+ summary total for an empty filter. Admitted rows must match the filter and cannot exceed the full
55
+ summary's per-status counts. Pending/error states show unknown counts, never a partial page count
56
+ as a complete summary. Complete-source truth remains provider-owned beyond these consistency checks.
57
+
58
+ At most 500 source records are admitted and mounted per page, with suite headings following
59
+ provider order even when suites interleave. Closed own-data row fields exclude arbitrary provider
60
+ output/attachments. `suiteId`, `suiteName`, test ID/name/message share a 65,536 UTF-16-unit bound;
61
+ oversized or accessor-backed records reject atomically. Record keys are at most 65,536 units and
62
+ share the page helper's 2,000,000-unit key budget. Source mode retains bounded page/in-progress
63
+ results and current-page expansion rather than flattening the complete run. It does not run the
64
+ legacy projection when filters change. Each page/lookup/locate lane allows one physical provider
65
+ call plus only the latest queued intent; ignored aborts occupy their permit until settlement.
66
+
67
+ Source name activation and toggle events preserve exact original `{ suiteId, testId }` values;
68
+ the canonical JSON key is navigation identity rather than a replacement event ID. Existing
69
+ suite-scoped detail slots and cancelable toggle-request contracts apply. Source expansion resets
70
+ with the current page binding and remains separate from legacy manual expansion. Explicit
71
+ `runState` completion waits for a current authoritative full summary; resuming the run, changing
72
+ run/source or lifecycle revocation cancels obsolete deferred completion announcements.
73
+
74
+ Reassign even the same source, or call a keyless `requestUpdate()`, after revision/state changes.
75
+ Named presentation updates reuse accepted data; source/lifecycle/locale changes revoke obsolete
76
+ requests, controls and announcements. Source-only parts are `source-status`, `source-retry` and
77
+ `source-pagination`; existing summary/filter/test/detail parts remain applicable. A failed page
78
+ has a localized retry and light-DOM announcement. The following `suites` behavior describes the
79
+ legacy route.
80
+
81
+ **Exported test-results source declarations:**
82
+
83
+ These types use the existing `TestStatus` and `TestCaseResult` declarations.
84
+
85
+ `TestResultsSourceQuery { readonly statuses: readonly TestStatus[]; }`
86
+
87
+ `TestResultsSourceRow { readonly suiteId: string; readonly suiteName: string; readonly test: TestCaseResult; }`
88
+
89
+ `TestResultsSourceSummary { readonly total: number; readonly passed: number; readonly failed: number; readonly skipped: number; readonly running: number; }`
90
+
25
91
  **Properties:** `suites: readonly TestSuiteResult[] = []` (attribute: false) — `TestSuiteResult { id: string;
26
92
  name: string; tests: readonly TestCaseResult[] }` and `TestCaseResult { id: string; name: string; status:
27
93
  TestStatus; durationMs?: number; message?: string }`, with `TestStatus = 'passed' | 'failed' |
@@ -37,7 +103,12 @@ first-wins identity. Foreign runtime statuses normalize
37
103
  once to the localized neutral `skipped` state, so every accepted row contributes to one coherent
38
104
  summary count and renders a label/glyph.
39
105
 
40
- Summary counts cover the complete normalized input. At most 1,000 rows mount for the active filter;
106
+ Legacy normalization retains the complete canonical input once with O(n) rows/indexes, yielding
107
+ after at most 500 combined suite/test positions. It normalizes status once per corpus; filtering
108
+ may still traverse O(n) records. New input/source entry cancels older staged work, and
109
+ `updateComplete` waits for the current normalization and render. Oversized aggregate row text or
110
+ identity fails visibly with unknown counts in `input-error`; caller arrays and slotted DOM remain
111
+ host-owned. Summary counts cover the complete normalized input. At most 1,000 rows mount for the active filter;
41
112
  manually expanded identities reserve positions first, failed rows next, then ordinary input-order
42
113
  rows. A localized `[part="limit"]` note exposes truncation without losing the complete counts.
43
114
 
@@ -69,7 +140,10 @@ adjacent localized status word carries the meaning. Running rows use the decorat
69
140
  **CSS parts:** `base`, `summary` (the status-count strip), `count` (carries `data-status`), `filter`,
70
141
  `filter-toggle` (carries `data-status`/`aria-pressed`), `suite`, `suite-header`, `test` (carries
71
142
  `data-status`), `test-status`, `test-name`, `test-duration`, `test-expand-toggle`, `failure`
72
- (hidden while collapsed), `failure-message`, `limit`, and `empty`.
143
+ (hidden while collapsed), `failure-message`, `limit`, `input-error` (rejected legacy snapshot), and `empty`.
144
+
145
+ With `dataSource` set, additional CSS parts are `source-status` (provider loading or failure text), `source-retry` (retry
146
+ the current failed provider request), and `source-pagination` (provider page controls).
73
147
 
74
148
  **Themeable custom properties:** `--lr-test-results-filter-active-bg` (default
75
149
  `var(--lr-color-brand-quiet)`), `--lr-test-results-filter-active-border` (default
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [conversation](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/conversation.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 42 parts, 20 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 45 parts, 20 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -26,6 +26,16 @@ row actions in that mode. No thread CRUD or persistence — every mutation
26
26
  (`lr-thread-pin`/`-archive`/`-delete`/`-rename`) is a controlled event carrying the _requested_ new
27
27
  state; the host mutates `threads`.
28
28
 
29
+ With `dataSource` unset, `threads` retains the first 10,000 identities. Structural group headings do not consume that
30
+ allowance; every admitted thread remains addressable through the internal virtual list.
31
+ Use the full-source provider route below for larger sidebar collections.
32
+
33
+ A localized `threadListInputLimit` notice in `part="limit"` discloses entries omitted from the
34
+ original assignment. It describes input admission independently of search matches and the visible
35
+ virtual window. Rebinding the retained snapshot preserves the notice; a fresh input below the
36
+ limit clears it. Initial mounting and reconnecting are quiet; later changed input loss is
37
+ politely announced.
38
+
29
39
  A conversation row with `slot=""` belongs to the default slot exactly like a row with no slot
30
40
  attribute, including after reconnect. Named slots retain their distinct roles.
31
41
 
@@ -36,6 +46,77 @@ focus. Home/End always resolve the first/last thread from that complete model, e
36
46
  starts in a middle window; group records, collapsed-group contents, and unavailable endpoint rows
37
47
  are skipped rather than becoming false boundaries.
38
48
 
49
+ **Full-source paging:** `dataSource: ThreadListSource | undefined` (attribute:
50
+ false) takes display precedence over `threads` and the default slot. An invalid defined provider
51
+ fails visibly; setting `undefined` restores the current legacy data/slotted precedence.
52
+ `sourcePage: number = 0` (`source-page`) is zero-based, and `sourcePageSize: number = 100`
53
+ (`source-page-size`) normalizes to 1–500. Readonly `sourceTotal: number | null` is the exact global
54
+ current-query record count before group collapse, or `null` before success and without a source.
55
+ Query/page-size changes reset page zero; collapse changes preserve the current record page.
56
+ An out-of-range page receives at most one corrective last-page request.
57
+
58
+ ```ts
59
+ import type { ThreadListSource, ThreadListSourceQuery } from
60
+ "@aceshooting/lyra-ui/components/conversation/thread-list/thread-list.class.js";
61
+ import type { LyraPageSource, LyraPageResult, LyraSourceRecord } from
62
+ "@aceshooting/lyra-ui/data-sources.js";
63
+ ```
64
+
65
+ `ThreadListSource` is `LyraPageSource<LyraChatThread, ThreadListSourceQuery>`. The provider has an
66
+ immutable `revision` (nonempty string or finite number), `query({ revision, locale, signal, page,
67
+ pageSize, query })`, `lookup(keys, context)`, and `locate(key, query, context)`. Query returns
68
+ `{ rows, total, groups? }`; records have `{ key, order, value }`, where `key === value.id`, `order`
69
+ is a safe stable canonical source ordinal and `value` is a complete `LyraChatThread`. Counts are
70
+ safe nonnegative integers; page keys/orders must be unique and the response must contain exactly
71
+ the requested in-bounds row count. Lookup returns complete globally present requested records,
72
+ omitting absent keys; locate returns the absolute current-query record index or `null`.
73
+
74
+ The forwarded `ThreadListSourceQuery` contains `{ search, withArchived, grouping,
75
+ collapsedGroupIds, filter, groupBy, getGroupLabel, groupOrder }`. The provider applies search,
76
+ filtering, ordering and grouping globally before paging. Grouped responses require
77
+ `groups: [{ key, label, startIndex, itemCount }]`: global nonoverlapping intervals covering the
78
+ page, including the header of a group that began on an earlier page. At most 500 records plus
79
+ 500 structural headings are modeled. Collapsed rows retain their original record positions and
80
+ actionable heading; collapse does not redefine the global total or page boundaries. Complete-group
81
+ callbacks/adornments are not computed from partial pages. Row rendering hooks continue to receive
82
+ the original provider record identity. Per-record display strings share a 65,536 UTF-16-unit bound;
83
+ keys/group text are each at most 65,536 units and share a 2,000,000-unit admission budget.
84
+ Malformed or oversized pages show a localized failure without clipping records.
85
+
86
+ `activeConversationId` uses global `locate` once per active/query binding, then scrolls the bounded
87
+ page's matching row into view. Manual paging preserves the controlled active ID without repeatedly
88
+ jumping back; clearing/restoring that ID locates again. Arrow/Home/End navigation addresses the
89
+ current page's virtual item model; global paging and active-ID lookup reach other logical pages.
90
+ Source `lr-filter-change` reports the provider's full matching `total`, not the loaded row count.
91
+ Existing controlled thread-action IDs and group-toggle/veto contracts remain unchanged.
92
+
93
+ The provider remains host-owned by identity. Reassign even the same object, or call a keyless
94
+ `requestUpdate()`, after revision/state changes. Named presentation changes reuse the accepted
95
+ page. Replacement, refresh, disconnect and adoption revoke obsolete requests/actions/reveals.
96
+ Each page/lookup/locate lane allows one physically unsettled provider call and only the latest
97
+ queued intent; an ignored abort holds its physical permit until settlement. Only bounded current
98
+ and in-progress pages are modeled, without a full-source search corpus or thread index. Provider
99
+ storage/indexing and complete-source consistency remain host obligations.
100
+
101
+ Loading uses `source-status`; `source-pagination` contains the global pager. Provider errors reuse
102
+ the existing localized `error` surface/slot and cancelable `lr-retry-request`; its default retries
103
+ the current provider page and clears the host error, while `preventDefault()` vetoes it. Existing
104
+ row and group parts remain applicable. The following array admission and local grouping details
105
+ apply with `dataSource` unset; row presentation/actions apply to provider rows as well.
106
+
107
+ **Exported source query declaration:**
108
+
109
+ `ThreadListSourceQuery {
110
+ readonly search: string;
111
+ readonly withArchived: boolean;
112
+ readonly grouping: ThreadListGrouping;
113
+ readonly collapsedGroupIds: readonly string[];
114
+ readonly filter: LyraThreadList['filter'];
115
+ readonly groupBy: LyraThreadList['groupBy'];
116
+ readonly getGroupLabel: LyraThreadList['getGroupLabel'];
117
+ readonly groupOrder: LyraThreadList['groupOrder'];
118
+ }`
119
+
39
120
  **Exported types:** `LyraChatThread { id: string; title: string; excerpt?: string; timestamp?: Date |
40
121
  string | number; pinned?: boolean; archived?: boolean }`; `ThreadRowAction = 'pin' | 'archive' |
41
122
  'delete'`; `ThreadListGrouping = 'date' | 'custom' | 'none'`; `ThreadBucketKey = 'pinned' |
@@ -189,6 +270,7 @@ was activated, only rendered while `error` is set; the default action clears `er
189
270
  **CSS parts:** `base`, `search`/`search-input` (the search field wrapper and `<input
190
271
  type="search">`), `clear-button` (clears the search field; rendered only while it has a value,
191
272
  mirroring `<lr-input>`'s own `clearable` contract's part name), `list` (the list region), `empty`,
273
+ `limit` (original thread input-loss notice),
192
274
  `error` (the built-in `<lr-empty>` host rendered while `error` is set, with `error-base`/
193
275
  `error-icon`/`error-heading`/`error-description`/`error-actions` exported from its own parts, plus
194
276
  `retry-button` for the built-in retry control), `viewport` (the actual internal virtual-list
@@ -206,6 +288,9 @@ their corresponding render-hook output; inherited fonts, layout values, and them
206
288
  reach callback-rendered descendants through these parts). `row-excerpt` wraps `renderExcerpt`
207
289
  output, which is slotted into the row item's own `excerpt` slot.
208
290
 
291
+ With `dataSource` set, additional CSS parts are `source-status` (provider loading text) and `source-pagination` (the
292
+ provider page-navigation host).
293
+
209
294
  Data mode additionally forwards each row `<lr-conversation-item>`'s own parts under a `row-item-`
210
295
  prefix: `row-item-base`, `row-item-base-menu-open`, `row-item-active-indicator`, `row-item-select-button`, `row-item-start`, `row-item-content`,
211
296
  `row-item-label`, `row-item-label-input`, `row-item-rename-button`, `row-item-excerpt`,
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 11 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -32,6 +32,11 @@ Selection does not change the application's time zone or calculate offsets, cloc
32
32
  saving transitions. Catalog types and `getTimeZoneCodes()` are documented in the
33
33
  [catalog helper reference](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/forms.md#country-time-zone-and-unit-catalog-helpers).
34
34
 
35
+ The shared `part="limit"` notice uses `catalogPickerInputLimit` for original input omitted beyond
36
+ the 1,024-position catalog ceiling. It remains separate from popup row overflow. Snapshot rebinds,
37
+ fresh replacement/default clearing, quiet mounting/reconnection, and later polite announcements
38
+ follow the shared field contract.
39
+
35
40
  **Field API:** `label`, `hint`, `errorText` (`error-text`), `placeholder`, `accessibleLabel`
36
41
  (`aria-label`), `name`, `form`, `value`, `defaultValue`, `required`, `disabled`, `customError`
37
42
  (`custom-error`), `size`, `clearable`, `searchable`, `topLayer` (`top-layer`),
@@ -44,8 +49,8 @@ Defaults and form/editing methods follow the
44
49
 
45
50
  **Events:** `input`, `lr-input`, `change`, `lr-change`, `focus`, `blur`, `lr-invalid`.
46
51
  **Slots:** `label`, `hint`, `error`.
47
- **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `select-trigger`,
48
- `select-display-input`, `select-listbox`, `select-option`, `select-option-sub`, `select-group-label`,
52
+ **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `limit`, `select-trigger`,
53
+ `select-display-input`, `select-listbox`, `select-option`, `select-option-overflow`, `select-option-sub`, `select-group-label`,
49
54
  `select-clear-button`.
50
55
 
51
56
  ```html
@@ -26,6 +26,11 @@ item's `title`/`description` routinely hold focusable content, so wrapping the r
26
26
  would trip `nested-interactive`). The opt-in clustered time scale adds only native count-marker
27
27
  buttons; it does not make the individual rows interactive.
28
28
 
29
+ Every assigned item remains mounted; the timeline does not window large collections. Flow mode
30
+ leaves untouched items' positioning styles alone. Time mode reuses item geometry between targeted
31
+ resize notifications; allocation, timestamp placement, structural and orientation changes can
32
+ remeasure the complete mounted list.
33
+
29
34
  Horizontal time layouts using `collision="overlap"` or `collision="stack"` allocate their block size
30
35
  from the actual item content and lane offsets. The height follows content growth, shrinkage, and
31
36
  changes in lane count. `--lr-timeline-time-extent` still controls only the main-axis distance, and
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 12 parts, 25 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 parts, 25 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -58,6 +58,10 @@ value remains authoritative),
58
58
  `allowDuplicates`
59
59
  (`allow-duplicates`, default `false`), `editable` (reflected, default `false` — see below), and
60
60
  `delimiter: string | null` (default `','` — see below).
61
+ `maxTokensVisible: number = 0` (attribute `max-tokens-visible`) — zero leaves every token mounted,
62
+ preserving the default. Positive values bound mounted tokens while retaining the focused or editing
63
+ token; `token-overflow` displays a localized count for the rest. Non-finite values restore the
64
+ unlimited default. The value array and form submission still include every token.
61
65
  **Slots:** `label`, `hint`, `error`, `start` (adornment before the tokens), `end` (adornment after
62
66
  the draft input) — both wrapped in a `hidden`-toggling span, mirroring `lr-combobox`'s identical
63
67
  `start`/`end`.
@@ -85,7 +89,8 @@ token's text, doubling as the roving-focus edit trigger — rendered only while
85
89
  `token-editor` (the inline text field that replaces a token's text while it is open for editing —
86
90
  rendered only while `editable` and only for the token being edited), `remove` (the
87
91
  per-token remove button, floored at the shared `--lr-icon-button-size` tap size around a compact
88
- glyph), `input`, `start`, `end`, `hint`, `error`. `focus()`, `blur()`, `click()`, and `select()` forward to the
92
+ glyph), `token-overflow` (the localized count of unmounted tokens), `input`, `start`, `end`, `hint`,
93
+ `error`. `focus()`, `blur()`, `click()`, and `select()` forward to the
89
94
  internal draft text input. `selectionStart`, `selectionEnd`, and `selectionDirection` are readable/
90
95
  writable native-selection passthroughs; `setSelectionRange(start, end, direction?)` and
91
96
  `setRangeText(replacement, start?, end?, selectMode?)` expose the matching native methods.
@@ -62,9 +62,17 @@ applied its controlled `entries` update (it never mutates `entries` itself). `re
62
62
  void` releases a held dialog after persistence fails, retaining the reviewer’s current argument edit
63
63
  so they can retry. Both are no-ops when no decision is held.
64
64
 
65
- At most 500 unique entries mount. Open disclosures and the entry under approval review reserve
66
- positions before later ordinary history is omitted; a localized `[part="limit"]` note exposes the
67
- bounded projection. Redaction is deferred until a disclosure opens and memoized while the entry's
65
+ Assignment retains the newest 10,000 source entries (the array end is newest) in a bounded readonly
66
+ outer snapshot. Source records and opaque `args`/`result` payloads retain identity, while a closed
67
+ descriptor-safe projection copies the display fields once per admitted array. Reassign the
68
+ collection to publish record changes; approval lookups reuse canonical identity indexes.
69
+
70
+ After first-wins duplicate canonicalization, the newest 500 unique entries are selected before
71
+ timestamp sorting. Open disclosures and the entry under approval review reserve positions within
72
+ that same 500-row budget, displacing the oldest unreserved rows. Separate localized
73
+ `[part="limit"]` notes disclose input retention and the rendered window; their counts use the
74
+ effective locale. Initial truncation stays silent; a later transition into either limit is
75
+ announced politely. Redaction is deferred until a disclosure opens and memoized while the entry's
68
76
  payload and path list are unchanged. It is bounded to 100 paths, 64 levels, 10,000 visited nodes,
69
77
  and 4,096 characters per path; crossing a ceiling masks the affected branch instead of exposing
70
78
  data or exhausting the page.
@@ -108,7 +116,8 @@ timeline.addEventListener("lr-tool-approval-decide-request", async (event) => {
108
116
  **CSS parts:** `base`,
109
117
  `entry`, `entry-marker`, `entry-header`, `entry-timestamp`, `entry-body`, `entry-details`,
110
118
  `entry-result`, `entry-error`, `entry-retries`, `entry-retries-count`, `entry-retries-label`,
111
- `entry-redacted-indicator`, `entry-approval-status`, `approval-dialog`, `empty`, `limit`.
119
+ `entry-redacted-indicator`, `entry-approval-status`, `approval-dialog`, `empty`, `limit` (input-retention
120
+ and rendered-window notices).
112
121
  Each entry's `lr-details` disclosure has a localized contextual summary naming that tool call, not a
113
122
  repeated bare "Details" label.
114
123