@aceshooting/lyra-ui 13.0.1 → 14.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 (723) hide show
  1. package/CHANGELOG.md +329 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
  6. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
  7. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
  8. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
  9. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
  10. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
  11. package/dist/components/agent-tools/commit-card/commit-card.class.d.ts +3 -1
  12. package/dist/components/agent-tools/commit-card/commit-card.class.js +2 -2
  13. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -1
  14. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +1 -1
  15. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +6 -2
  16. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +8 -8
  17. package/dist/components/agent-tools/result-card/result-card.class.d.ts +1 -1
  18. package/dist/components/agent-tools/result-card/result-card.class.js +1 -1
  19. package/dist/components/agent-tools/result-card/result-field.class.d.ts +1 -1
  20. package/dist/components/agent-tools/result-card/result-field.class.js +1 -1
  21. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
  22. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
  24. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
  25. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  26. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
  27. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +1 -1
  28. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +1 -1
  29. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  30. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  31. package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
  32. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  33. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -2
  34. package/dist/components/agent-tools/terminal/terminal.class.js +5 -5
  35. package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
  36. package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
  37. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  38. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  39. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  40. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
  41. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -2
  42. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
  43. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
  44. package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
  45. package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
  46. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
  47. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  48. package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
  49. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
  50. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
  51. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
  52. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +7 -7
  53. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
  54. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
  55. package/dist/components/agent-tools/trace-tree/span.d.ts +3 -1
  56. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  57. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  58. package/dist/components/charts/chart/box-plot.class.d.ts +12 -3
  59. package/dist/components/charts/chart/box-plot.class.js +9 -9
  60. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  61. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  62. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  63. package/dist/components/charts/chart/chart-preload.d.ts +1 -1
  64. package/dist/components/charts/chart/chart-preload.js +1 -1
  65. package/dist/components/charts/chart/chart.class.d.ts +33 -10
  66. package/dist/components/charts/chart/chart.class.js +23 -14
  67. package/dist/components/charts/chart/chart.styles.js +1 -1
  68. package/dist/components/charts/chart/histogram-bin.js +1 -1
  69. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -11
  70. package/dist/components/charts/chart/lite-chart.class.js +17 -11
  71. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  72. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
  74. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
  75. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  76. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  77. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  78. package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
  79. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
  80. package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
  81. package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
  82. package/dist/components/conversation/chat-message/chat-message.class.d.ts +4 -3
  83. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  84. package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
  85. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
  86. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -3
  87. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  88. package/dist/components/conversation/code-block/code-block-shared.d.ts +3 -3
  89. package/dist/components/conversation/code-block/code-block-shared.js +2 -2
  90. package/dist/components/conversation/code-block/code-block.class.d.ts +4 -3
  91. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  92. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  93. package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
  94. package/dist/components/conversation/code-block/code-loader.js +1 -1
  95. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  96. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  97. package/dist/components/conversation/conversation-item/conversation-item.class.js +1 -1
  98. package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
  99. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
  100. package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
  101. package/dist/components/conversation/markdown/katex-loader.js +1 -1
  102. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  103. package/dist/components/conversation/markdown/markdown-core.class.d.ts +1 -1
  104. package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
  105. package/dist/components/conversation/markdown/markdown-loader.js +1 -1
  106. package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
  107. package/dist/components/conversation/markdown/markdown-shared.js +5 -4
  108. package/dist/components/conversation/markdown/markdown.class.d.ts +1 -1
  109. package/dist/components/conversation/message-actions/message-actions.class.d.ts +18 -3
  110. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  111. package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
  112. package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
  113. package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
  114. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +40 -15
  115. package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
  116. package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
  117. package/dist/components/conversation/message-parts/message-parts.class.d.ts +10 -4
  118. package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
  119. package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
  120. package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
  121. package/dist/components/conversation/model-select/model-select.class.js +8 -5
  122. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
  123. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  124. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
  125. package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
  126. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  127. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
  128. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
  129. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  130. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
  131. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
  132. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
  133. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
  134. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  135. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
  136. package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
  137. package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
  138. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  139. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +2 -0
  140. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  141. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  142. package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts +2 -1
  143. package/dist/components/conversation/typing-indicator/typing-indicator.class.js +1 -1
  144. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.d.ts +3 -0
  145. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -0
  146. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -2
  147. package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
  148. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
  149. package/dist/components/conversation/voice-picker/voice-picker.class.js +8 -5
  150. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  151. package/dist/components/conversation/widget-renderer/resolve.d.ts +4 -6
  152. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  153. package/dist/components/data/calendar/calendar.class.d.ts +16 -5
  154. package/dist/components/data/calendar/calendar.class.js +2 -2
  155. package/dist/components/data/calendar/calendar.styles.js +1 -1
  156. package/dist/components/data/condition-builder/condition-builder.class.d.ts +3 -1
  157. package/dist/components/data/condition-builder/condition-builder.class.js +15 -1
  158. package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
  159. package/dist/components/data/context-meter/context-meter.class.js +4 -4
  160. package/dist/components/data/data-grid/data-grid.class.d.ts +51 -6
  161. package/dist/components/data/data-grid/data-grid.class.js +25 -11
  162. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  163. package/dist/components/data/document-library/document-library.class.d.ts +5 -2
  164. package/dist/components/data/document-library/document-library.class.js +1 -1
  165. package/dist/components/data/env-list/env-list.class.js +1 -1
  166. package/dist/components/data/file-tree/file-tree.class.d.ts +2 -1
  167. package/dist/components/data/file-tree/file-tree.class.js +1 -1
  168. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +24 -14
  169. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
  170. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  171. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  172. package/dist/components/data/flow-canvas/flow-types.d.ts +2 -1
  173. package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
  174. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  175. package/dist/components/data/funnel/funnel.class.d.ts +1 -0
  176. package/dist/components/data/funnel/funnel.class.js +1 -1
  177. package/dist/components/data/gauge/gauge.class.d.ts +4 -1
  178. package/dist/components/data/gauge/gauge.class.js +6 -6
  179. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +5 -2
  180. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +15 -1
  181. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  182. package/dist/components/data/heatmap/heatmap.class.d.ts +7 -4
  183. package/dist/components/data/heatmap/heatmap.class.js +1 -1
  184. package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
  185. package/dist/components/data/sparkline/sparkline.class.d.ts +2 -1
  186. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  187. package/dist/components/data/stat/stat.class.d.ts +6 -2
  188. package/dist/components/data/stat/stat.class.js +1 -1
  189. package/dist/components/data/table/table.class.d.ts +15 -16
  190. package/dist/components/data/table/table.class.js +5 -4
  191. package/dist/components/data/table/table.styles.js +1 -1
  192. package/dist/components/data/timeline/timeline.class.d.ts +7 -2
  193. package/dist/components/data/timeline/timeline.class.js +1 -1
  194. package/dist/components/data/timeline/timeline.styles.js +1 -1
  195. package/dist/components/data/tree/tree-item.class.d.ts +3 -1
  196. package/dist/components/data/tree/tree-item.class.js +1 -1
  197. package/dist/components/data/tree/tree-item.styles.js +1 -1
  198. package/dist/components/data/tree/tree.class.d.ts +4 -1
  199. package/dist/components/data/tree/tree.class.js +1 -1
  200. package/dist/components/data/word-cloud/word-cloud-layout.d.ts +2 -1
  201. package/dist/components/data/word-cloud/word-cloud-layout.js +1 -1
  202. package/dist/components/data/word-cloud/word-cloud.class.d.ts +2 -1
  203. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  204. package/dist/components/forms/button/button.class.d.ts +5 -3
  205. package/dist/components/forms/button/button.class.js +1 -1
  206. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  207. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  208. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
  209. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  210. package/dist/components/forms/code-editor/code-editor.class.d.ts +16 -4
  211. package/dist/components/forms/code-editor/code-editor.class.js +19 -9
  212. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  213. package/dist/components/forms/color-picker/color-picker.class.d.ts +6 -2
  214. package/dist/components/forms/color-picker/color-picker.class.js +4 -4
  215. package/dist/components/forms/combobox/combobox.class.d.ts +19 -8
  216. package/dist/components/forms/combobox/combobox.class.js +3 -3
  217. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  218. package/dist/components/forms/combobox/option.class.d.ts +4 -0
  219. package/dist/components/forms/combobox/option.class.js +2 -2
  220. package/dist/components/forms/date-picker/calendar-core.d.ts +1 -1
  221. package/dist/components/forms/date-picker/calendar-core.js +1 -1
  222. package/dist/components/forms/date-picker/date-input.class.d.ts +20 -10
  223. package/dist/components/forms/date-picker/date-input.class.js +4 -4
  224. package/dist/components/forms/date-picker/date-picker.class.d.ts +33 -15
  225. package/dist/components/forms/date-picker/date-picker.class.js +8 -8
  226. package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
  227. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  228. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -3
  229. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -3
  230. package/dist/components/forms/emoji-picker/emoji-types.d.ts +2 -2
  231. package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -2
  232. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  233. package/dist/components/forms/input/input.class.d.ts +16 -5
  234. package/dist/components/forms/input/input.class.js +7 -1
  235. package/dist/components/forms/input/native-time-input.class.d.ts +3 -0
  236. package/dist/components/forms/input/number-input.class.d.ts +3 -0
  237. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  238. package/dist/components/forms/input/time-input.class.js +2 -2
  239. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +22 -4
  240. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  241. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  242. package/dist/components/forms/otp-input/otp-input.class.d.ts +5 -1
  243. package/dist/components/forms/otp-input/otp-input.class.js +1 -1
  244. package/dist/components/forms/phone-input/phone-input.class.d.ts +21 -8
  245. package/dist/components/forms/phone-input/phone-input.class.js +1 -1
  246. package/dist/components/forms/radio/radio-button.class.d.ts +4 -0
  247. package/dist/components/forms/radio/radio-group.class.d.ts +4 -1
  248. package/dist/components/forms/radio/radio-group.class.js +1 -1
  249. package/dist/components/forms/radio/radio.class.d.ts +6 -2
  250. package/dist/components/forms/radio/radio.class.js +1 -1
  251. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -1
  252. package/dist/components/forms/rubric-form/rubric-form.class.js +3 -3
  253. package/dist/components/forms/select/select.class.d.ts +8 -2
  254. package/dist/components/forms/select/select.class.js +2 -2
  255. package/dist/components/forms/select/select.styles.js +1 -1
  256. package/dist/components/forms/slider/slider.class.d.ts +12 -6
  257. package/dist/components/forms/slider/slider.class.js +2 -2
  258. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +4 -0
  259. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  260. package/dist/components/forms/switch/switch.class.d.ts +5 -1
  261. package/dist/components/forms/switch/switch.class.js +1 -1
  262. package/dist/components/forms/textarea/textarea.class.d.ts +3 -0
  263. package/dist/components/forms/textarea/textarea.class.js +1 -1
  264. package/dist/components/forms/time-range/time-range.class.d.ts +3 -0
  265. package/dist/components/forms/time-range/time-range.class.js +1 -1
  266. package/dist/components/forms/token-input/token-input.class.d.ts +8 -2
  267. package/dist/components/forms/token-input/token-input.class.js +2 -2
  268. package/dist/components/forms/token-input/token-input.styles.js +1 -1
  269. package/dist/components/layout/app-rail/app-rail.class.d.ts +9 -5
  270. package/dist/components/layout/app-rail/app-rail.class.js +4 -3
  271. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  272. package/dist/components/layout/carousel/carousel.class.d.ts +3 -2
  273. package/dist/components/layout/carousel/carousel.class.js +1 -1
  274. package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
  275. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  276. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  277. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +2 -0
  278. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  279. package/dist/components/layout/details/details.class.d.ts +16 -15
  280. package/dist/components/layout/details/details.class.js +43 -34
  281. package/dist/components/layout/details/details.styles.js +1 -1
  282. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
  283. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
  284. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +3 -1
  285. package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
  286. package/dist/components/layout/menu/menu-item.class.js +2 -2
  287. package/dist/components/layout/menu/menu-label.class.d.ts +3 -3
  288. package/dist/components/layout/menu/menu.class.d.ts +4 -1
  289. package/dist/components/layout/menu/menu.class.js +1 -1
  290. package/dist/components/layout/multi-split/multi-split.class.d.ts +19 -8
  291. package/dist/components/layout/multi-split/multi-split.class.js +2 -1
  292. package/dist/components/layout/multi-split/multi-split.styles.js +1 -1
  293. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -1
  294. package/dist/components/layout/reorder-list/reorder-item.class.js +1 -1
  295. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  296. package/dist/components/layout/reorder-list/reorder-owner.js +1 -1
  297. package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
  298. package/dist/components/layout/scroller/scroller.styles.js +1 -1
  299. package/dist/components/layout/split-panel/split-panel.class.d.ts +5 -3
  300. package/dist/components/layout/split-panel/split-panel.class.js +3 -2
  301. package/dist/components/layout/tab-group/tab-group.class.d.ts +3 -1
  302. package/dist/components/layout/tab-group/tab-group.class.js +1 -1
  303. package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
  304. package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
  305. package/dist/components/layout/widget/widget.class.d.ts +6 -2
  306. package/dist/components/layout/widget/widget.class.js +1 -1
  307. package/dist/components/layout/widget/widget.styles.js +1 -1
  308. package/dist/components/media/animation/animation.class.d.ts +3 -2
  309. package/dist/components/media/animation/animation.class.js +1 -1
  310. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -3
  311. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  312. package/dist/components/media/av-player/av-metadata.d.ts +3 -2
  313. package/dist/components/media/av-player/av-player.class.d.ts +4 -3
  314. package/dist/components/media/av-player/av-player.class.js +3 -3
  315. package/dist/components/media/av-player/av-player.styles.js +1 -1
  316. package/dist/components/media/avatar/avatar.class.d.ts +2 -1
  317. package/dist/components/media/avatar/avatar.class.js +1 -1
  318. package/dist/components/media/file-input/file-input.class.d.ts +4 -2
  319. package/dist/components/media/file-input/file-input.class.js +1 -1
  320. package/dist/components/media/file-input/file-input.styles.js +1 -1
  321. package/dist/components/media/flag/flag.class.js +1 -1
  322. package/dist/components/media/image-viewer/image-viewer.class.d.ts +2 -1
  323. package/dist/components/media/image-viewer/image-viewer.class.js +1 -1
  324. package/dist/components/media/image-viewer/image-viewer.styles.js +1 -1
  325. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  326. package/dist/components/media/map/map-loader.js +1 -1
  327. package/dist/components/media/map/map.class.d.ts +22 -34
  328. package/dist/components/media/map/map.class.js +1 -1
  329. package/dist/components/media/map/map.styles.js +1 -1
  330. package/dist/components/media/media-card/media-card.class.d.ts +1 -1
  331. package/dist/components/media/media-card/media-card.class.js +1 -1
  332. package/dist/components/media/pan-zoom/pan-zoom.class.js +1 -1
  333. package/dist/components/media/qr-code/qr-code-loader.js +1 -1
  334. package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
  335. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  336. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +3 -3
  337. package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
  338. package/dist/components/media/sequence-playback/sequence-playback.styles.js +1 -1
  339. package/dist/components/media/video/video.class.d.ts +2 -1
  340. package/dist/components/media/video/video.styles.js +1 -1
  341. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  342. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  343. package/dist/components/overlays/alert/alert.styles.js +1 -1
  344. package/dist/components/overlays/callout/callout.styles.js +1 -1
  345. package/dist/components/overlays/chip/chip-group.class.d.ts +2 -0
  346. package/dist/components/overlays/chip/chip-group.class.js +1 -1
  347. package/dist/components/overlays/dialog/dialog.class.d.ts +2 -0
  348. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  349. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  350. package/dist/components/overlays/empty/empty.class.d.ts +2 -0
  351. package/dist/components/overlays/empty/empty.class.js +1 -1
  352. package/dist/components/overlays/kbd/kbd.class.d.ts +2 -0
  353. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  354. package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
  355. package/dist/components/overlays/overlay/popover.class.js +1 -1
  356. package/dist/components/overlays/overlay/tooltip.class.d.ts +3 -1
  357. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  358. package/dist/components/overlays/rating/rating.class.d.ts +2 -0
  359. package/dist/components/overlays/rating/rating.class.js +1 -1
  360. package/dist/components/overlays/toast/toast-item.class.js +1 -1
  361. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
  362. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
  363. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +2 -2
  364. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +5 -2
  365. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  366. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +4 -2
  367. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  368. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  369. package/dist/components/retrieval/graph/graph-loader.js +1 -1
  370. package/dist/components/retrieval/graph/graph.class.d.ts +10 -8
  371. package/dist/components/retrieval/graph/graph.class.js +10 -10
  372. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
  373. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
  374. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +15 -9
  375. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
  376. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
  377. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +1 -1
  378. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
  379. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
  380. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  381. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +7 -3
  382. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -3
  383. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  384. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
  385. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  386. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  387. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  388. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
  389. package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
  390. package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
  391. package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
  392. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +2 -1
  393. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
  394. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
  395. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
  396. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  397. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +2 -1
  398. package/dist/components/retrieval/source-picker/source-picker.class.js +2 -2
  399. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
  400. package/dist/components/utility/copy-button/copy-button.class.js +1 -1
  401. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  402. package/dist/components/utility/diff-view/diff-view.class.js +1 -1
  403. package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
  404. package/dist/components/utility/export-button/export-button.class.js +1 -1
  405. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  406. package/dist/components/utility/format/format-date.class.js +1 -1
  407. package/dist/components/utility/format/format-number.class.d.ts +3 -1
  408. package/dist/components/utility/format/format-options.js +1 -1
  409. package/dist/components/utility/format/relative-time.class.js +1 -1
  410. package/dist/components/utility/icon/dompurify-loader.js +1 -1
  411. package/dist/components/utility/icon/icon-library.js +1 -1
  412. package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
  413. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +6 -3
  414. package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
  415. package/dist/components/utility/known-date/known-date.class.d.ts +9 -5
  416. package/dist/components/utility/known-date/known-date.class.js +2 -2
  417. package/dist/components/utility/known-date/known-date.styles.js +1 -1
  418. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +32 -45
  419. package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
  420. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  421. package/dist/components/utility/poll-status/poll-status.class.d.ts +3 -0
  422. package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
  423. package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
  424. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +1 -0
  425. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +1 -1
  426. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +2 -1
  427. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +1 -1
  428. package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
  429. package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
  430. package/dist/components/viewers/document-preview/document-preview.class.d.ts +8 -4
  431. package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
  432. package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
  433. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +5 -2
  434. package/dist/components/viewers/document-viewer/document-viewer.class.js +2 -2
  435. package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
  436. package/dist/components/viewers/document-viewer/registry-ownership.d.ts +1 -0
  437. package/dist/components/viewers/document-viewer/registry-ownership.js +1 -0
  438. package/dist/components/viewers/document-viewer/registry.js +1 -1
  439. package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
  440. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
  441. package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
  442. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +8 -2
  443. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  444. package/dist/components/viewers/email-viewer/email-loader.js +1 -1
  445. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +3 -2
  446. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
  447. package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
  448. package/dist/components/viewers/include/include-resource.js +1 -1
  449. package/dist/components/viewers/include/include.class.d.ts +3 -1
  450. package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
  451. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +4 -2
  452. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +4 -4
  453. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +1 -1
  454. package/dist/components/viewers/passive-markup.js +1 -1
  455. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  456. package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
  457. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
  458. package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
  459. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +2 -1
  460. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +1 -1
  461. package/dist/components/viewers/viewer-loading.js +1 -1
  462. package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
  463. package/dist/components/viewers/viewer-search-limits.js +1 -1
  464. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +2 -1
  465. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +1 -1
  466. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  467. package/dist/custom-elements-jsx.d.ts +1 -1
  468. package/dist/events.d.ts +13 -6
  469. package/dist/internal/aria-controls.d.ts +16 -13
  470. package/dist/internal/aria-controls.js +1 -1
  471. package/dist/internal/aria-reflection.js +1 -1
  472. package/dist/internal/catalog-picker.d.ts +2 -2
  473. package/dist/internal/catalog-picker.js +1 -1
  474. package/dist/internal/chart-annotation-registration.d.ts +1 -0
  475. package/dist/internal/chart-annotation-registration.js +1 -0
  476. package/dist/internal/data-descriptors.d.ts +13 -0
  477. package/dist/internal/data-descriptors.js +1 -0
  478. package/dist/internal/default-strings.generated.d.ts +1 -1
  479. package/dist/internal/default-strings.generated.js +2 -2
  480. package/dist/internal/dev-mode-attribute-warning.d.ts +3 -0
  481. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  482. package/dist/internal/element-internals.d.ts +4 -3
  483. package/dist/internal/element-internals.js +1 -1
  484. package/dist/internal/form-associated.js +1 -1
  485. package/dist/internal/highlight-collection.d.ts +2 -0
  486. package/dist/internal/highlight-collection.js +1 -1
  487. package/dist/internal/localization-types.d.ts +1 -1
  488. package/dist/internal/localization.js +2 -2
  489. package/dist/internal/lyra-element.d.ts +10 -1
  490. package/dist/internal/lyra-element.js +2 -1
  491. package/dist/internal/native-control-description.d.ts +7 -0
  492. package/dist/internal/native-control-description.js +1 -0
  493. package/dist/internal/option-selection.js +1 -1
  494. package/dist/internal/overlay-order.d.ts +6 -0
  495. package/dist/internal/overlay-order.js +1 -0
  496. package/dist/internal/overlay-stack.d.ts +1 -1
  497. package/dist/internal/overlay-stack.js +1 -1
  498. package/dist/internal/package-metadata.d.ts +1 -1
  499. package/dist/internal/package-metadata.js +1 -1
  500. package/dist/internal/papaparse-loader.js +1 -1
  501. package/dist/internal/positioner.d.ts +5 -4
  502. package/dist/internal/pseudo-localization.js +1 -1
  503. package/dist/internal/reactive-property-writes.d.ts +1 -0
  504. package/dist/internal/reactive-property-writes.js +1 -0
  505. package/dist/internal/safe-css.js +1 -1
  506. package/dist/internal/step-value.d.ts +6 -0
  507. package/dist/internal/step-value.js +1 -0
  508. package/dist/internal/svg-title.d.ts +3 -0
  509. package/dist/internal/svg-title.js +1 -0
  510. package/dist/internal/text-quote.js +1 -1
  511. package/dist/lyra.d.ts +1 -1
  512. package/dist/svelte.d.ts +1 -1
  513. package/dist/translations/ar.js +2 -2
  514. package/dist/translations/de.js +2 -2
  515. package/dist/translations/es.js +2 -2
  516. package/dist/translations/fa.js +2 -2
  517. package/dist/translations/fr.js +2 -2
  518. package/dist/translations/he.js +2 -2
  519. package/dist/translations/ja.js +2 -2
  520. package/dist/translations/pseudo/ar-XB.js +1 -1
  521. package/dist/translations/pt-BR.js +2 -2
  522. package/dist/translations/ru.js +2 -2
  523. package/dist/translations/zh-CN.js +2 -2
  524. package/dist/vue.d.ts +1 -1
  525. package/llms/components/lr-accordion-item.md +10 -5
  526. package/llms/components/lr-accordion.md +10 -5
  527. package/llms/components/lr-activity-feed.md +6 -5
  528. package/llms/components/lr-agent-run.md +1 -1
  529. package/llms/components/lr-agent-trace.md +3 -0
  530. package/llms/components/lr-agent-workspace.md +3 -2
  531. package/llms/components/lr-animation.md +4 -0
  532. package/llms/components/lr-app-rail-item.md +4 -2
  533. package/llms/components/lr-app-rail.md +4 -2
  534. package/llms/components/lr-attachment-chip.md +8 -3
  535. package/llms/components/lr-audio-visualizer.md +9 -6
  536. package/llms/components/lr-av-player.md +14 -0
  537. package/llms/components/lr-avatar.md +4 -0
  538. package/llms/components/lr-bar-chart.md +2 -2
  539. package/llms/components/lr-box-plot.md +15 -6
  540. package/llms/components/lr-bubble-chart.md +2 -2
  541. package/llms/components/lr-button.md +11 -3
  542. package/llms/components/lr-calendar-viewer.md +4 -0
  543. package/llms/components/lr-calendar.md +15 -4
  544. package/llms/components/lr-carousel.md +5 -0
  545. package/llms/components/lr-chart.md +24 -9
  546. package/llms/components/lr-chat-composer.md +2 -1
  547. package/llms/components/lr-chat-message.md +4 -0
  548. package/llms/components/lr-checkbox.md +3 -0
  549. package/llms/components/lr-chip-group.md +3 -0
  550. package/llms/components/lr-chip.md +3 -0
  551. package/llms/components/lr-chunk-inspector.md +2 -2
  552. package/llms/components/lr-code-block-core.md +20 -8
  553. package/llms/components/lr-code-block.md +17 -14
  554. package/llms/components/lr-code-editor.md +20 -5
  555. package/llms/components/lr-color-picker.md +9 -0
  556. package/llms/components/lr-combobox.md +35 -4
  557. package/llms/components/lr-command-palette.md +4 -0
  558. package/llms/components/lr-commit-card.md +3 -0
  559. package/llms/components/lr-compare-panel.md +7 -0
  560. package/llms/components/lr-condition-builder.md +5 -0
  561. package/llms/components/lr-conversation-item.md +3 -0
  562. package/llms/components/lr-copy-button.md +10 -1
  563. package/llms/components/lr-dashboard-grid.md +5 -0
  564. package/llms/components/lr-data-grid.md +22 -3
  565. package/llms/components/lr-dataset-viewer.md +3 -2
  566. package/llms/components/lr-date-input.md +50 -6
  567. package/llms/components/lr-date-picker.md +51 -7
  568. package/llms/components/lr-details.md +10 -5
  569. package/llms/components/lr-dialog.md +4 -0
  570. package/llms/components/lr-diff-view.md +6 -0
  571. package/llms/components/lr-document-compare.md +6 -2
  572. package/llms/components/lr-document-library.md +4 -0
  573. package/llms/components/lr-document-preview.md +18 -4
  574. package/llms/components/lr-document-viewer.md +14 -4
  575. package/llms/components/lr-docx-viewer.md +6 -0
  576. package/llms/components/lr-doughnut-chart.md +2 -2
  577. package/llms/components/lr-dropdown-item.md +4 -0
  578. package/llms/components/lr-dropdown.md +3 -0
  579. package/llms/components/lr-ebook-viewer.md +12 -3
  580. package/llms/components/lr-email-viewer.md +10 -0
  581. package/llms/components/lr-emoji-picker.md +17 -3
  582. package/llms/components/lr-empty.md +3 -0
  583. package/llms/components/lr-entity-card.md +3 -0
  584. package/llms/components/lr-entity-chip.md +4 -0
  585. package/llms/components/lr-eval-dataset.md +2 -2
  586. package/llms/components/lr-export-button.md +9 -0
  587. package/llms/components/lr-file-input.md +12 -8
  588. package/llms/components/lr-file-tree.md +5 -1
  589. package/llms/components/lr-filter-bar.md +5 -0
  590. package/llms/components/lr-flow-canvas.md +8 -1
  591. package/llms/components/lr-flow-node.md +2 -1
  592. package/llms/components/lr-flow-run-status.md +1 -1
  593. package/llms/components/lr-format-date.md +3 -1
  594. package/llms/components/lr-format-number.md +4 -0
  595. package/llms/components/lr-funnel.md +4 -0
  596. package/llms/components/lr-gauge.md +4 -0
  597. package/llms/components/lr-generation-metrics.md +5 -0
  598. package/llms/components/lr-graph-legend.md +4 -2
  599. package/llms/components/lr-graph-query-builder.md +6 -0
  600. package/llms/components/lr-graph.md +8 -2
  601. package/llms/components/lr-grounding-summary.md +8 -8
  602. package/llms/components/lr-heatmap.md +13 -0
  603. package/llms/components/lr-histogram.md +2 -2
  604. package/llms/components/lr-icon-button.md +7 -0
  605. package/llms/components/lr-image-viewer.md +9 -0
  606. package/llms/components/lr-include.md +5 -0
  607. package/llms/components/lr-ingestion-queue.md +5 -1
  608. package/llms/components/lr-input.md +22 -8
  609. package/llms/components/lr-intersection-observer.md +9 -0
  610. package/llms/components/lr-json-viewer.md +10 -1
  611. package/llms/components/lr-kbd.md +3 -0
  612. package/llms/components/lr-knowledge-base.md +10 -1
  613. package/llms/components/lr-knowledge-graph-explorer.md +7 -0
  614. package/llms/components/lr-known-date.md +7 -0
  615. package/llms/components/lr-line-chart.md +2 -2
  616. package/llms/components/lr-lite-chart.md +29 -9
  617. package/llms/components/lr-live-region.md +3 -0
  618. package/llms/components/lr-locale-picker.md +12 -0
  619. package/llms/components/lr-map.md +23 -5
  620. package/llms/components/lr-markdown-core.md +4 -0
  621. package/llms/components/lr-markdown.md +15 -8
  622. package/llms/components/lr-media-card.md +5 -8
  623. package/llms/components/lr-mention-popover.md +17 -10
  624. package/llms/components/lr-menu-item.md +4 -0
  625. package/llms/components/lr-menu-label.md +4 -3
  626. package/llms/components/lr-menu.md +4 -0
  627. package/llms/components/lr-message-actions.md +13 -3
  628. package/llms/components/lr-message-feedback.md +24 -7
  629. package/llms/components/lr-message-parts.md +6 -3
  630. package/llms/components/lr-model-select.md +13 -2
  631. package/llms/components/lr-multi-split.md +20 -7
  632. package/llms/components/lr-mutation-observer.md +8 -0
  633. package/llms/components/lr-native-time-input.md +10 -0
  634. package/llms/components/lr-node-palette.md +8 -2
  635. package/llms/components/lr-notebook-viewer.md +4 -1
  636. package/llms/components/lr-number-input.md +12 -1
  637. package/llms/components/lr-option.md +35 -4
  638. package/llms/components/lr-otp-input.md +10 -0
  639. package/llms/components/lr-pan-zoom.md +1 -2
  640. package/llms/components/lr-phone-input.md +20 -5
  641. package/llms/components/lr-pie-chart.md +2 -2
  642. package/llms/components/lr-polar-area-chart.md +2 -2
  643. package/llms/components/lr-poll-status.md +4 -0
  644. package/llms/components/lr-popover.md +3 -0
  645. package/llms/components/lr-popup.md +3 -2
  646. package/llms/components/lr-prompt-input.md +7 -3
  647. package/llms/components/lr-prompt-queue.md +6 -0
  648. package/llms/components/lr-prompt-studio.md +7 -0
  649. package/llms/components/lr-provenance-panel.md +3 -0
  650. package/llms/components/lr-push-to-talk.md +8 -0
  651. package/llms/components/lr-qr-code.md +6 -0
  652. package/llms/components/lr-radar-chart.md +2 -2
  653. package/llms/components/lr-radio-button.md +13 -4
  654. package/llms/components/lr-radio-group.md +5 -0
  655. package/llms/components/lr-radio.md +9 -0
  656. package/llms/components/lr-rating.md +8 -0
  657. package/llms/components/lr-relative-time.md +2 -0
  658. package/llms/components/lr-reorder-item.md +6 -0
  659. package/llms/components/lr-reorder-list.md +6 -0
  660. package/llms/components/lr-result-card.md +6 -3
  661. package/llms/components/lr-result-field.md +6 -3
  662. package/llms/components/lr-retrieval-results.md +1 -1
  663. package/llms/components/lr-rubric-form.md +12 -0
  664. package/llms/components/lr-scatter-chart.md +2 -2
  665. package/llms/components/lr-scroller.md +5 -5
  666. package/llms/components/lr-select.md +9 -0
  667. package/llms/components/lr-sequence-playback.md +5 -2
  668. package/llms/components/lr-slider.md +19 -5
  669. package/llms/components/lr-source-picker.md +4 -0
  670. package/llms/components/lr-span-waterfall.md +3 -0
  671. package/llms/components/lr-sparkline.md +4 -0
  672. package/llms/components/lr-split-panel.md +4 -0
  673. package/llms/components/lr-stack-trace.md +3 -0
  674. package/llms/components/lr-stat.md +10 -0
  675. package/llms/components/lr-streaming-text.md +2 -3
  676. package/llms/components/lr-subagent-panel.md +3 -2
  677. package/llms/components/lr-svg-viewer.md +3 -0
  678. package/llms/components/lr-swatch-picker.md +4 -0
  679. package/llms/components/lr-switch.md +6 -0
  680. package/llms/components/lr-tab-group.md +4 -0
  681. package/llms/components/lr-table.md +10 -2
  682. package/llms/components/lr-terminal.md +17 -5
  683. package/llms/components/lr-textarea.md +9 -0
  684. package/llms/components/lr-thinking-panel.md +3 -1
  685. package/llms/components/lr-thread-list.md +26 -4
  686. package/llms/components/lr-time-input.md +3 -0
  687. package/llms/components/lr-time-range.md +5 -0
  688. package/llms/components/lr-timeline-item.md +6 -0
  689. package/llms/components/lr-timeline.md +6 -0
  690. package/llms/components/lr-token-input.md +14 -0
  691. package/llms/components/lr-tool-call-chip.md +7 -5
  692. package/llms/components/lr-tool-param-form.md +6 -2
  693. package/llms/components/lr-tool-result-dialog.md +4 -0
  694. package/llms/components/lr-tool-result-view.md +2 -3
  695. package/llms/components/lr-tool-select-dialog.md +6 -2
  696. package/llms/components/lr-tooltip.md +6 -0
  697. package/llms/components/lr-trace-tree.md +3 -0
  698. package/llms/components/lr-transcript-feed.md +3 -0
  699. package/llms/components/lr-tree-item.md +12 -5
  700. package/llms/components/lr-tree.md +12 -5
  701. package/llms/components/lr-typing-indicator.md +3 -0
  702. package/llms/components/lr-usage-badge.md +4 -0
  703. package/llms/components/lr-video.md +8 -2
  704. package/llms/components/lr-virtual-list.md +5 -3
  705. package/llms/components/lr-voice-picker.md +15 -2
  706. package/llms/components/lr-widget-renderer.md +21 -13
  707. package/llms/components/lr-widget.md +4 -2
  708. package/llms/components/lr-word-cloud.md +4 -0
  709. package/llms/components/lr-xml-viewer.md +9 -2
  710. package/llms/components/lr-zoomable-frame.md +6 -3
  711. package/llms/peers.md +5 -5
  712. package/llms/shared.md +74 -63
  713. package/llms-full.txt +4705 -2954
  714. package/package.json +19 -14
  715. package/vscode-css-data.json +1 -1
  716. package/vscode-html-data.json +1 -1
  717. package/web-types.json +1 -1
  718. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
  719. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
  720. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
  721. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
  722. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
  723. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{createAnsiParser}from"../../../internal/ansi.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{boundedSelectionRects,boundedSelectionText}from"../../../internal/text-quote.js";import{styles}from"./terminal.styles.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_highlightWithLabel,LYRA_DEFAULT_jumpToLatest,LYRA_DEFAULT_terminalDownload,LYRA_DEFAULT_terminalHighlightLine,LYRA_DEFAULT_terminalLabel}from"../../../internal/default-strings.generated.js";const EMPTY_CELL_STYLES={bold:!1,dim:!1,italic:!1,underline:!1,inverse:!1},ANNOUNCE_THROTTLE_MS=10,MAX_SEARCH_MATCHES=1e4,MAX_INPUT_CHARACTERS=1e6,MAX_CELLS_PER_LINE=2e4,MAX_RETAINED_CELLS=2e5,MAX_SCROLLBACK_LINES=1e4,SCROLLBACK_PRUNE_BATCH=256,TONE_BACKGROUND_VAR={accent:"var(--lr-terminal-highlight-accent-bg, var(--lr-color-brand-quiet))",success:"var(--lr-terminal-highlight-success-bg, var(--lr-color-success-quiet))",warning:"var(--lr-terminal-highlight-warning-bg, var(--lr-color-warning-quiet))",danger:"var(--lr-terminal-highlight-danger-bg, var(--lr-color-danger-quiet))",neutral:"var(--lr-terminal-highlight-neutral-bg, var(--lr-color-surface))"};function plainTextOfLine(line){return line.cells.map(c=>c.char).join("")}function groupCells(cells){const segments=[];for(const cell of cells){const last=segments[segments.length-1];last&&stylesEqual(last.styles,cell.styles)?last.text+=cell.char:segments.push({text:cell.char,styles:cell.styles})}return segments}function stylesEqual(a,b){return a.bold===b.bold&&a.dim===b.dim&&a.italic===b.italic&&a.underline===b.underline&&a.inverse===b.inverse&&a.fg===b.fg&&a.bg===b.bg}class LyraTerminal extends LyraElement{constructor(){super(...arguments),this.content="",this.maxScrollback=5e3,this.follow=!0,this.wrap=!0,this.copyable=!0,this.downloadable=!1,this.filename="terminal.log",this.announceOutput=!1,this.accessibleLabel="",this._highlights=snapshotLyraHighlights([]),this.activeHighlightId=null,this.compact=!1,this.frame="card",this.anchorKinds=["line-range"],this.lines=[],this.scrollTargetLineNumber=null,this.copyStatus="rest",this.buffer=[],this.retainedCellCount=0,this.lineSeq=0,this.column=0,this.appliedContent="",this.ansiParser=createAnsiParser(),this.copyGeneration=0,this.pendingAnnounceText="",this.announcer=new Announcer({throttleMs:ANNOUNCE_THROTTLE_MS,onFlush:text=>{this.pendingAnnounceText="",this.sink?.announce(text),this.announceRegionEl&&(this.announceRegionEl.textContent=text)}}),this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.jumpToLatest=()=>{const changed=!this.follow;this.scrollToBottom(),changed&&this.emit("lr-follow-change",{following:!0})},this.onLineKeyDown=(e,h)=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.activateHighlight(h))},this.onCopy=()=>{this.copyOutput()},this.onDownload=()=>{const filename=this.filename||"terminal.log";if(this.emit("lr-download",{filename},{cancelable:!0}).defaultPrevented)return;const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const blob=new ownerWindow.Blob([this.getPlainText()],{type:"text/plain"}),url=ownerWindow.URL.createObjectURL(blob),a=this.ownerDocument.createElement("a");a.href=url,a.download=filename,a.click(),ownerWindow.setTimeout(()=>ownerWindow.URL.revokeObjectURL(url),5e3)},this.onVisibleRangeChanged=e=>{e.stopPropagation();const atBottom=this.lines.length===0||e.detail.end>=this.lines.length-1;atBottom!==this.follow&&(this.follow=atBottom,this.emit("lr-follow-change",{following:atBottom}))},this.onViewportKeyDown=e=>{e.key==="End"&&this.jumpToLatest()},this.onViewportPointerUp=()=>{const shadowGetSelection=root=>root?.getSelection?.(),listShadow=this.renderRoot.querySelector("lr-virtual-list")?.shadowRoot,selection=shadowGetSelection(listShadow)??shadowGetSelection(this.shadowRoot)??this.ownerDocument.getSelection();if(!selection||selection.isCollapsed)return;let range;try{range=selection.getRangeAt(0)}catch{return}const text=boundedSelectionText(range);if(text==="")return;const lineNumberOf=node=>{let el=node;for(;el;){if(el.nodeType===1){const attr=el.getAttribute("data-line-number");if(attr!==null)return Number(attr)}el=el.parentNode??el.host??null}return null},startLine=lineNumberOf(selection.anchorNode),endLine=lineNumberOf(selection.focusNode),anchor=startLine!==null&&endLine!==null?{kind:"line-range",start:Math.min(startLine,endLine),end:Math.max(startLine,endLine)}:null;let rects=Object.freeze([]);try{rects=boundedSelectionRects(range)}catch{}this.emit("lr-text-select",{text,anchor,rects})},this.renderLine=(line,highlightByLine,highlightOwnerLines,matchedLineNumbers,activeMatchLineNumber)=>{const isMatchLine=matchedLineNumbers.has(line.number),isActiveMatchLine=activeMatchLineNumber!==null&&activeMatchLineNumber===line.number,highlight=highlightByLine.get(line.number),highlightOwner=highlight&&highlightOwnerLines.get(highlight)===line.number?highlight:void 0,tone=highlight?.tone,lineLabel=plainTextOfLine(line).trim()||this.localize("terminalHighlightLine",void 0,{line:getNumberFormat(this.effectiveLocale).format(line.number)}),highlightLabel=highlightOwner?.label?[this.localize("highlightWithLabel",void 0,{label:highlightOwner.label}),lineLabel].join(this.localize("accessibleLabelSeparator")):lineLabel,stateParts=["line",highlightOwner?"line-interactive":"",tone?`line-highlight-${tone}`:"",isMatchLine?"line-match":"",isActiveMatchLine?"line-active-match":""].filter(Boolean).join(" ");return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{specialistTokens}from"../../../internal/specialist-tokens.styles.js";import{srOnly}from"../../../internal/a11y.js";import{Announcer,acquireAnnouncementSink}from"../../../internal/announcer.js";import{createAnsiParser}from"../../../internal/ansi.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{snapshotLyraHighlights}from"../../../internal/highlight-collection.js";import{boundedSelectionRects,boundedSelectionText}from"../../../internal/text-quote.js";import{styles}from"./terminal.styles.js";import{presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_highlightWithLabel,LYRA_DEFAULT_jumpToLatest,LYRA_DEFAULT_terminalDownload,LYRA_DEFAULT_terminalHighlightLine,LYRA_DEFAULT_terminalLabel}from"../../../internal/default-strings.generated.js";const EMPTY_CELL_STYLES={bold:!1,dim:!1,italic:!1,underline:!1,inverse:!1},ANNOUNCE_THROTTLE_MS=10,MAX_SEARCH_MATCHES=1e4,MAX_INPUT_CHARACTERS=1e6,MAX_CELLS_PER_LINE=2e4,MAX_RETAINED_CELLS=2e5,MAX_SCROLLBACK_LINES=1e4,SCROLLBACK_PRUNE_BATCH=256,TONE_BACKGROUND_VAR={accent:"var(--lr-terminal-highlight-accent-bg, var(--lr-color-brand-quiet))",success:"var(--lr-terminal-highlight-success-bg, var(--lr-color-success-quiet))",warning:"var(--lr-terminal-highlight-warning-bg, var(--lr-color-warning-quiet))",danger:"var(--lr-terminal-highlight-danger-bg, var(--lr-color-danger-quiet))",neutral:"var(--lr-terminal-highlight-neutral-bg, var(--lr-color-surface))"};function plainTextOfLine(line){return line.cells.map(c=>c.char).join("")}function groupCells(cells){const segments=[];for(const cell of cells){const last=segments[segments.length-1];last&&stylesEqual(last.styles,cell.styles)?last.text+=cell.char:segments.push({text:cell.char,styles:cell.styles})}return segments}function stylesEqual(a,b){return a.bold===b.bold&&a.dim===b.dim&&a.italic===b.italic&&a.underline===b.underline&&a.inverse===b.inverse&&a.fg===b.fg&&a.bg===b.bg}class LyraTerminal extends LyraElement{constructor(){super(...arguments),this.content="",this.maxScrollback=5e3,this.follow=!0,this.wrap=!0,this.copyable=!0,this.downloadable=!1,this.filename="terminal.log",this.announceOutput=!1,this.accessibleLabel="",this._highlights=snapshotLyraHighlights([]),this.activeHighlightId=null,this.compact=!1,this.frame="card",this.anchorKinds=["line-range"],this.lines=[],this.scrollTargetLineNumber=null,this.copyStatus="rest",this.buffer=[],this.retainedCellCount=0,this.lineSeq=0,this.column=0,this.appliedContent="",this.terminalLineKey=item=>item.number,this.ansiParser=createAnsiParser(),this.copyGeneration=0,this.pendingAnnounceText="",this.announcer=new Announcer({throttleMs:ANNOUNCE_THROTTLE_MS,onFlush:text=>{this.pendingAnnounceText="",this.sink?.announce(text),this.announceRegionEl&&(this.announceRegionEl.textContent=text)}}),this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.jumpToLatest=()=>{const changed=!this.follow;this.scrollToBottom(),changed&&this.emit("lr-follow-change",{following:!0})},this.onLineKeyDown=(e,h)=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.activateHighlight(h))},this.onCopy=()=>{this.copyOutput()},this.onDownload=()=>{const filename=this.filename||"terminal.log";if(this.emit("lr-download",{filename},{cancelable:!0}).defaultPrevented)return;const ownerWindow=this.ownerDocument.defaultView;if(!ownerWindow)return;const blob=new ownerWindow.Blob([this.getPlainText()],{type:"text/plain"}),url=ownerWindow.URL.createObjectURL(blob),a=this.ownerDocument.createElement("a");a.href=url,a.download=filename,a.click(),ownerWindow.setTimeout(()=>ownerWindow.URL.revokeObjectURL(url),5e3)},this.onVisibleRangeChanged=e=>{e.stopPropagation();const atBottom=this.lines.length===0||e.detail.end>=this.lines.length-1;atBottom!==this.follow&&(this.follow=atBottom,this.emit("lr-follow-change",{following:atBottom}))},this.onViewportKeyDown=e=>{e.key==="End"&&this.jumpToLatest()},this.onViewportPointerUp=()=>{const shadowGetSelection=root=>root?.getSelection?.(),listShadow=this.renderRoot.querySelector("lr-virtual-list")?.shadowRoot,selection=shadowGetSelection(listShadow)??shadowGetSelection(this.shadowRoot)??this.ownerDocument.getSelection();if(!selection||selection.isCollapsed)return;let range;try{range=selection.getRangeAt(0)}catch{return}const text=boundedSelectionText(range);if(text==="")return;const lineNumberOf=node=>{let el=node;for(;el;){if(el.nodeType===1){const attr=el.getAttribute("data-line-number");if(attr!==null)return Number(attr)}el=el.parentNode??el.host??null}return null},startLine=lineNumberOf(selection.anchorNode),endLine=lineNumberOf(selection.focusNode),anchor=startLine!==null&&endLine!==null?{kind:"line-range",start:Math.min(startLine,endLine),end:Math.max(startLine,endLine)}:null;let rects=Object.freeze([]);try{rects=boundedSelectionRects(range)}catch{}this.emit("lr-text-select",{text,anchor,rects})},this.renderLine=(line,highlightByLine,highlightOwnerLines,matchedLineNumbers,activeMatchLineNumber)=>{const isMatchLine=matchedLineNumbers.has(line.number),isActiveMatchLine=activeMatchLineNumber!==null&&activeMatchLineNumber===line.number,highlight=highlightByLine.get(line.number),highlightOwner=highlight&&highlightOwnerLines.get(highlight)===line.number?highlight:void 0,tone=highlight?.tone,lineLabel=plainTextOfLine(line).trim()||this.localize("terminalHighlightLine",void 0,{line:getNumberFormat(this.effectiveLocale).format(line.number)}),highlightLabel=highlightOwner?.label?[this.localize("highlightWithLabel",void 0,{label:highlightOwner.label}),lineLabel].join(this.localize("accessibleLabelSeparator")):lineLabel,stateParts=["line",highlightOwner?"line-interactive":"",tone?`line-highlight-${tone}`:"",isMatchLine?"line-match":"",isActiveMatchLine?"line-active-match":""].filter(Boolean).join(" ");return html`
2
2
  <div
3
3
  part=${stateParts}
4
4
  dir="ltr"
@@ -15,8 +15,8 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
15
15
  >${groupCells(line.cells).map(seg=>html`<span style=${styleMap(this.segmentStyle(seg.styles))}>${seg.text}</span>`)}</div>
16
16
  `}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,highlightWithLabel:LYRA_DEFAULT_highlightWithLabel,jumpToLatest:LYRA_DEFAULT_jumpToLatest,terminalDownload:LYRA_DEFAULT_terminalDownload,terminalHighlightLine:LYRA_DEFAULT_terminalHighlightLine,terminalLabel:LYRA_DEFAULT_terminalLabel}}static{this.immutableEventDetails=Object.freeze(["lr-text-select"])}static{this.styles=[LyraElement.styles,specialistTokens,styles,srOnly]}get highlights(){return this._highlights}set highlights(value){const previous=this._highlights;this._highlights=snapshotLyraHighlights(value),this.requestUpdate("highlights",previous)}get normalizedHighlights(){return this.highlights}connectedCallback(){super.connectedCallback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow),this.sink??=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this})}disconnectedCallback(){super.disconnectedCallback(),this.resetCopyFeedback(),this.cancelPendingAnnouncement(),this.sink?.release(),this.sink=void 0}adoptedCallback(){super.adoptedCallback(),this.resetCopyFeedback();const ownerWindow=this.ownerDocument.defaultView;ownerWindow&&this.announcer.setTimerHost(ownerWindow)}firstUpdated(changed){super.firstUpdated(changed),this.announceRegionEl=this.renderRoot.querySelector('[part="announcer"]')??void 0}willUpdate(changed){super.willUpdate(changed),changed.has("content")&&this.commitPendingContent(),changed.has("maxScrollback")&&this.trimScrollback(),changed.has("announceOutput")&&!this.announceOutput&&this.cancelPendingAnnouncement()}resetBuffer(){this.ansiParser.reset(),this.buffer=[],this.retainedCellCount=0,this.lineSeq=0,this.column=0,this.lines=[],this.scrollTargetLineNumber=null,this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1}appendLine(){this.buffer.push({number:++this.lineSeq,cells:[]});const max=this.effectiveMaxScrollback();this.buffer.length-max>=SCROLLBACK_PRUNE_BATCH&&this.trimScrollback(!1),this.column=0}effectiveMaxScrollback(){return Math.max(1,finiteCount(this.maxScrollback,5e3,MAX_SCROLLBACK_LINES))}trimScrollback(notifySearch=!0){const previousSearch=this.searchState(),max=this.effectiveMaxScrollback(),removeCount=Math.max(0,this.buffer.length-max),removed=removeCount>0?this.buffer.splice(0,removeCount):[];for(const line of removed)this.retainedCellCount-=line.cells.length;let resourceTrimmed=!1;for(;this.retainedCellCount>MAX_RETAINED_CELLS&&this.buffer.length>1;){const line=this.buffer.shift();line&&(this.retainedCellCount-=line.cells.length),resourceTrimmed=!0}(removed.length>0||resourceTrimmed)&&(this.lines=[...this.buffer],this.searchQuery&&this.recomputeSearchMatches(),this.scrollTargetLineNumber!==null&&!this.buffer.some(line=>line.number===this.scrollTargetLineNumber)&&(this.scrollTargetLineNumber=this.buffer[0]?.number??null),notifySearch&&this.emitSearchChangeIfChanged(previousSearch))}putChar(ch,styles2){this.buffer.length===0&&this.appendLine();const line=this.buffer[this.buffer.length-1];if(!(this.column>=MAX_CELLS_PER_LINE)){if(this.column<line.cells.length)line.cells[this.column]={char:ch,styles:styles2};else{const before=line.cells.length;for(;line.cells.length<this.column&&line.cells.length<MAX_CELLS_PER_LINE;)line.cells.push({char:" ",styles:EMPTY_CELL_STYLES});line.cells.push({char:ch,styles:styles2}),this.retainedCellCount+=line.cells.length-before}this.column=Math.min(MAX_CELLS_PER_LINE,this.column+1)}}applyChunk(text,styles2){for(const ch of text)ch===`
17
17
  `?this.appendLine():ch==="\r"?this.column=0:ch==="\b"?this.column=Math.max(0,this.column-1):ch===" "?this.column=Math.min(MAX_CELLS_PER_LINE,(Math.floor(this.column/8)+1)*8):this.putChar(ch,styles2)}writeInternal(raw,notifySearch=!0){const previousSearch=this.searchState(),previousText=this.getPlainText(),boundedRaw=raw.slice(0,MAX_INPUT_CHARACTERS);if(boundedRaw!==""){const segments=this.ansiParser.push(boundedRaw);for(const seg of segments)this.applyChunk(seg.text,seg.styles)}if(this.trimScrollback(!1),this.lines=[...this.buffer],this.searchQuery&&this.recomputeSearchMatches(),this.follow){const last=this.buffer[this.buffer.length-1];this.scrollTargetLineNumber=last?last.number:null}const nextText=this.getPlainText(),visibleAnnouncement=nextText.startsWith(previousText)?nextText.slice(previousText.length):nextText;this.hasUpdated&&this.announceOutput&&visibleAnnouncement!==""&&(this.pendingAnnounceText+=(this.pendingAnnounceText?`
18
- `:"")+visibleAnnouncement,this.announcer.announce(this.pendingAnnounceText)),notifySearch&&this.emitSearchChangeIfChanged(previousSearch)}write(chunk){this.commitPendingContent(),this.writeInternal(typeof chunk=="string"?chunk:String(chunk))}replace(content){this.content=typeof content=="string"?content:String(content),this.commitPendingContent()}commitPendingContent(){if(this.appliedContent===this.content)return;const previousSearch=this.searchState();this.cancelPendingAnnouncement(),this.resetBuffer(),this.appliedContent=this.content,this.writeInternal(this.content,!1),this.emitSearchChangeIfChanged(previousSearch)}clear(){const previousSearch=this.searchState();this.cancelPendingAnnouncement(),this.appliedContent=this.content,this.resetBuffer(),this.emitSearchChangeIfChanged(previousSearch)}getPlainText(){return this.buffer.map(plainTextOfLine).join(`
19
- `)}scrollToBottom(){this.follow=!0;const last=this.buffer[this.buffer.length-1];this.scrollTargetLineNumber=last?last.number:null}recomputeSearchMatches(){if(this.searchMatches=[],this.searchMatchCountExact=!0,!this.searchQuery)return;const needle=this.searchQuery.toLocaleLowerCase(this.effectiveLocale);for(const line of this.buffer){const haystack=plainTextOfLine(line).toLocaleLowerCase(this.effectiveLocale);let from=0;for(;;){const idx=haystack.indexOf(needle,from);if(idx<0)break;if(this.searchMatches.push({lineNumber:line.number}),this.searchMatches.length>=MAX_SEARCH_MATCHES){this.searchMatchCountExact=!1;break}from=idx+needle.length}if(this.searchMatches.length>=MAX_SEARCH_MATCHES)break}this.searchActiveIndex>=this.searchMatches.length&&(this.searchActiveIndex=this.searchMatches.length>0?0:-1)}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.searchActiveIndex})}searchState(){return{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.searchActiveIndex}}emitSearchChangeIfChanged(previous){(previous.query!==this.searchQuery||previous.matchCount!==this.searchMatches.length||previous.matchCountExact!==this.searchMatchCountExact||previous.activeIndex!==this.searchActiveIndex)&&this.emitSearchChange()}jumpToActiveMatch(){const match=this.searchMatches[this.searchActiveIndex];match&&(this.follow&&(this.follow=!1),this.scrollTargetLineNumber=match.lineNumber)}async search(query){const previousSearch=this.searchState();return this.searchQuery=query,this.recomputeSearchMatches(),this.searchActiveIndex=this.searchMatches.length>0?0:-1,this.emitSearchChangeIfChanged(previousSearch),this.searchActiveIndex>=0&&this.jumpToActiveMatch(),await this.updateComplete,this.searchMatches.length}async searchNext(){if(this.searchMatches.length===0)return!1;const previousSearch=this.searchState();return this.searchActiveIndex=(this.searchActiveIndex+1)%this.searchMatches.length,this.emitSearchChangeIfChanged(previousSearch),this.jumpToActiveMatch(),!0}async searchPrevious(){if(this.searchMatches.length===0)return!1;const previousSearch=this.searchState();return this.searchActiveIndex=(this.searchActiveIndex-1+this.searchMatches.length)%this.searchMatches.length,this.emitSearchChangeIfChanged(previousSearch),this.jumpToActiveMatch(),!0}clearSearch(){const previousSearch=this.searchState();this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.emitSearchChangeIfChanged(previousSearch),this.requestUpdate()}resolvedHighlightLines(){const perLine=new Map,owners=new Map,highlights=this.normalizedHighlights;if(this.lines.length===0||highlights.length===0)return{perLine,owners};const minLine=this.lines[0].number,maxLine=this.lines[this.lines.length-1].number;for(const highlight of highlights){if(highlight.anchor.kind!=="line-range")continue;const start=Math.max(highlight.anchor.start,minLine),end=Math.min(highlight.anchor.end??highlight.anchor.start,maxLine);for(let lineNumber=start;lineNumber<=end;lineNumber++)perLine.has(lineNumber)||(perLine.set(lineNumber,highlight),owners.has(highlight)||owners.set(highlight,lineNumber))}return{perLine,owners}}activateHighlight(h){this.activeHighlightId=h.id,this.emit("lr-highlight-activate",{highlightId:h.id})}async scrollToAnchor(target){let start;if(typeof target=="string"){const highlight=this.normalizedHighlights.find(h=>h.id===target);highlight?.anchor.kind==="line-range"&&(start=highlight.anchor.start)}else target.kind==="line-range"&&(start=target.start);return start===void 0||!this.buffer.some(line=>line.number===start)?!1:(this.follow&&(this.follow=!1),this.scrollTargetLineNumber=start,await this.updateComplete,!0)}async copyOutput(){const text=this.getPlainText(),ownerWindow=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.clearCopyTimeout(),this.copyStatus="rest";const outcome=await writeClipboardText(ownerWindow,text);if(!(!ownerWindow||!this.isCurrentCopy(generation,ownerWindow))){if(!outcome.ok){this.showCopyStatus("error",generation,ownerWindow),this.emit("lr-error"),this.emit("lr-copy-error",outcome);return}this.showCopyStatus("success",generation,ownerWindow),this.emit("lr-copy",outcome)}}isCurrentCopy(generation,ownerWindow){return this.isConnected&&generation===this.copyGeneration&&this.ownerDocument.defaultView===ownerWindow}showCopyStatus(status,generation,ownerWindow){this.copyStatus=status,this.clearCopyTimeout(),this.copyTimeoutWindow=ownerWindow,this.copyTimeoutGeneration=generation,this.copyTimeoutId=ownerWindow.setTimeout(()=>{this.copyTimeoutWindow!==ownerWindow||this.copyTimeoutGeneration!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==ownerWindow||(this.copyTimeoutId=void 0,this.copyTimeoutWindow=void 0,this.copyTimeoutGeneration=void 0,this.copyStatus="rest")},1500)}resetCopyFeedback(){this.copyGeneration+=1,this.clearCopyTimeout(),this.copyStatus="rest"}clearCopyTimeout(){this.copyTimeoutId!==void 0&&this.copyTimeoutWindow?.clearTimeout(this.copyTimeoutId),this.copyTimeoutId=void 0,this.copyTimeoutWindow=void 0,this.copyTimeoutGeneration=void 0}cancelPendingAnnouncement(){this.pendingAnnounceText="",this.announcer.cancel(),this.announceRegionEl&&(this.announceRegionEl.textContent="")}lineStateStyle(highlight,interactive,isMatchLine,isActiveMatchLine){return{cursor:interactive?"pointer":"",outline:isMatchLine?`var(--lr-size-2px) solid ${isActiveMatchLine?"var(--lr-terminal-search-active-outline-color, var(--lr-color-brand))":"var(--lr-terminal-search-outline-color, var(--lr-color-warning))"}`:"",background:highlight?.tone?TONE_BACKGROUND_VAR[highlight.tone]:""}}segmentStyle(s){const fg=sanitizeCssColor(s.fg)??"var(--lr-color-text)",bg=sanitizeCssColor(s.bg);return{"font-weight":s.bold?"bold":"normal",opacity:s.dim?"0.7":"1","font-style":s.italic?"italic":"normal","text-decoration":s.underline?"underline":"none",color:s.inverse?bg??"var(--lr-terminal-surface-color, var(--lr-color-surface-raised))":fg,"background-color":s.inverse?fg:bg??"transparent"}}render(){const hasToolbar=this.copyable||this.downloadable,ariaLabel=this.accessibleLabel||this.localize("terminalLabel"),{perLine:highlightByLine,owners:highlightOwnerLines}=this.resolvedHighlightLines(),matchedLineNumbers=new Set(this.searchMatches.map(m=>m.lineNumber)),activeMatchLineNumber=this.searchMatches[this.searchActiveIndex]?.lineNumber??null;return html`
18
+ `:"")+visibleAnnouncement,this.announcer.announce(this.pendingAnnounceText)),notifySearch&&this.emitSearchChangeIfChanged(previousSearch)}write(chunk){this.commitPendingContent(),this.writeInternal(typeof chunk=="string"?chunk:String(chunk))}replace(content){this.content=typeof content=="string"?content:String(content),this.commitPendingContent()}commitPendingContent(){if(this.appliedContent===this.content)return;const previousSearch=this.searchState();this.cancelPendingAnnouncement(),this.resetBuffer(),this.appliedContent=this.content,this.writeInternal(this.content??"",!1),this.emitSearchChangeIfChanged(previousSearch)}clear(){const previousSearch=this.searchState();this.cancelPendingAnnouncement(),this.appliedContent=this.content,this.resetBuffer(),this.emitSearchChangeIfChanged(previousSearch)}getPlainText(){return this.buffer.map(plainTextOfLine).join(`
19
+ `)}scrollToBottom(){this.follow=!0;const last=this.buffer[this.buffer.length-1];this.scrollTargetLineNumber=last?last.number:null}recomputeSearchMatches(){if(this.searchMatches=[],this.searchMatchCountExact=!0,!this.searchQuery)return;const needle=this.searchQuery.toLocaleLowerCase(this.effectiveLocale);for(const line of this.buffer){const haystack=plainTextOfLine(line).toLocaleLowerCase(this.effectiveLocale);let from=0;for(;;){const idx=haystack.indexOf(needle,from);if(idx<0)break;if(this.searchMatches.push({lineNumber:line.number}),this.searchMatches.length>=MAX_SEARCH_MATCHES){this.searchMatchCountExact=!1;break}from=idx+needle.length}if(this.searchMatches.length>=MAX_SEARCH_MATCHES)break}this.searchActiveIndex>=this.searchMatches.length&&(this.searchActiveIndex=this.searchMatches.length>0?0:-1)}emitSearchChange(){this.emit("lr-search-change",{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.searchActiveIndex})}searchState(){return{query:this.searchQuery,matchCount:this.searchMatches.length,matchCountExact:this.searchMatchCountExact,activeIndex:this.searchActiveIndex}}emitSearchChangeIfChanged(previous){(previous.query!==this.searchQuery||previous.matchCount!==this.searchMatches.length||previous.matchCountExact!==this.searchMatchCountExact||previous.activeIndex!==this.searchActiveIndex)&&this.emitSearchChange()}jumpToActiveMatch(){const match=this.searchMatches[this.searchActiveIndex];match&&(this.follow&&(this.follow=!1),this.scrollTargetLineNumber=match.lineNumber)}async search(query){const previousSearch=this.searchState();return this.searchQuery=query,this.recomputeSearchMatches(),this.searchActiveIndex=this.searchMatches.length>0?0:-1,this.emitSearchChangeIfChanged(previousSearch),this.searchActiveIndex>=0&&this.jumpToActiveMatch(),this.requestUpdate(),await this.updateComplete,this.searchMatches.length}async searchNext(){if(this.searchMatches.length===0)return!1;const previousSearch=this.searchState();return this.searchActiveIndex=(this.searchActiveIndex+1)%this.searchMatches.length,this.emitSearchChangeIfChanged(previousSearch),this.jumpToActiveMatch(),!0}async searchPrevious(){if(this.searchMatches.length===0)return!1;const previousSearch=this.searchState();return this.searchActiveIndex=(this.searchActiveIndex-1+this.searchMatches.length)%this.searchMatches.length,this.emitSearchChangeIfChanged(previousSearch),this.jumpToActiveMatch(),!0}clearSearch(){const previousSearch=this.searchState();this.searchQuery="",this.searchMatches=[],this.searchMatchCountExact=!0,this.searchActiveIndex=-1,this.emitSearchChangeIfChanged(previousSearch),this.requestUpdate()}resolvedHighlightLines(){const perLine=new Map,owners=new Map,highlights=this.normalizedHighlights;if(this.lines.length===0||highlights.length===0)return{perLine,owners};const minLine=this.lines[0].number,maxLine=this.lines[this.lines.length-1].number;for(const highlight of highlights){if(highlight.anchor.kind!=="line-range")continue;const start=Math.max(highlight.anchor.start,minLine),end=Math.min(highlight.anchor.end??highlight.anchor.start,maxLine);for(let lineNumber=start;lineNumber<=end;lineNumber++)perLine.has(lineNumber)||(perLine.set(lineNumber,highlight),owners.has(highlight)||owners.set(highlight,lineNumber))}return{perLine,owners}}activateHighlight(h){this.activeHighlightId=h.id,this.emit("lr-highlight-activate",{highlightId:h.id})}async scrollToAnchor(target){let start;if(typeof target=="string"){const highlight=this.normalizedHighlights.find(h=>h.id===target);highlight?.anchor.kind==="line-range"&&(start=highlight.anchor.start)}else target.kind==="line-range"&&(start=target.start);return start===void 0||!this.buffer.some(line=>line.number===start)?!1:(this.follow&&(this.follow=!1),this.scrollTargetLineNumber=start,await this.updateComplete,!0)}async copyOutput(){const text=this.getPlainText(),ownerWindow=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.clearCopyTimeout(),this.copyStatus="rest";const outcome=await writeClipboardText(ownerWindow,text);if(!(!ownerWindow||!this.isCurrentCopy(generation,ownerWindow))){if(!outcome.ok){this.showCopyStatus("error",generation,ownerWindow),this.emit("lr-error"),this.emit("lr-copy-error",outcome);return}this.showCopyStatus("success",generation,ownerWindow),this.emit("lr-copy",outcome)}}isCurrentCopy(generation,ownerWindow){return this.isConnected&&generation===this.copyGeneration&&this.ownerDocument.defaultView===ownerWindow}showCopyStatus(status,generation,ownerWindow){this.copyStatus=status,this.clearCopyTimeout(),this.copyTimeoutWindow=ownerWindow,this.copyTimeoutGeneration=generation,this.copyTimeoutId=ownerWindow.setTimeout(()=>{this.copyTimeoutWindow!==ownerWindow||this.copyTimeoutGeneration!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==ownerWindow||(this.copyTimeoutId=void 0,this.copyTimeoutWindow=void 0,this.copyTimeoutGeneration=void 0,this.copyStatus="rest")},1500)}resetCopyFeedback(){this.copyGeneration+=1,this.clearCopyTimeout(),this.copyStatus="rest"}clearCopyTimeout(){this.copyTimeoutId!==void 0&&this.copyTimeoutWindow?.clearTimeout(this.copyTimeoutId),this.copyTimeoutId=void 0,this.copyTimeoutWindow=void 0,this.copyTimeoutGeneration=void 0}cancelPendingAnnouncement(){this.pendingAnnounceText="",this.announcer.cancel(),this.announceRegionEl&&(this.announceRegionEl.textContent="")}lineStateStyle(highlight,interactive,isMatchLine,isActiveMatchLine){return{cursor:interactive?"pointer":"",outline:isMatchLine?`var(--lr-size-2px) solid ${isActiveMatchLine?"var(--lr-terminal-search-active-outline-color, var(--lr-color-brand))":"var(--lr-terminal-search-outline-color, var(--lr-color-warning))"}`:"",background:highlight?.tone?TONE_BACKGROUND_VAR[highlight.tone]:""}}segmentStyle(s){const fg=sanitizeCssColor(s.fg)??"var(--lr-color-text)",bg=sanitizeCssColor(s.bg);return{"font-weight":s.bold?"bold":"normal",opacity:s.dim?"0.7":"1","font-style":s.italic?"italic":"normal","text-decoration":s.underline?"underline":"none",color:s.inverse?bg??"var(--lr-terminal-surface-color, var(--lr-color-surface-raised))":fg,"background-color":s.inverse?fg:bg??"transparent"}}render(){const hasToolbar=this.copyable||this.downloadable,ariaLabel=this.accessibleLabel||this.localize("terminalLabel"),{perLine:highlightByLine,owners:highlightOwnerLines}=this.resolvedHighlightLines(),matchedLineNumbers=new Set(this.searchMatches.map(m=>m.lineNumber)),activeMatchLineNumber=this.searchMatches[this.searchActiveIndex]?.lineNumber??null;return html`
20
20
  <div part="base">
21
21
  <div part="announcer" class="sr-only" aria-hidden="true"></div>
22
22
  ${hasToolbar?html`
@@ -39,9 +39,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
39
39
  >
40
40
  <lr-virtual-list
41
41
  exportparts="line:line, line-interactive:line-interactive, line-highlight-accent:line-highlight-accent, line-highlight-success:line-highlight-success, line-highlight-warning:line-highlight-warning, line-highlight-danger:line-highlight-danger, line-highlight-neutral:line-highlight-neutral, line-match:line-match, line-active-match:line-active-match"
42
- .items=${this.lines}
42
+ .items=${guard([this.lines],()=>this.lines)}
43
43
  .renderItem=${item=>this.renderLine(item,highlightByLine,highlightOwnerLines,matchedLineNumbers,activeMatchLineNumber)}
44
- .keyFunction=${item=>item.number}
44
+ .keyFunction=${this.terminalLineKey}
45
45
  .activeItemId=${this.scrollTargetLineNumber??""}
46
46
  row-height=${this.wrap?"auto":"24"}
47
47
  @lr-visible-range-change=${this.onVisibleRangeChanged}
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{display:block}[part=base]{border:var(--lr-size-1px) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface-raised);flex-direction:column;display:flex;overflow:hidden}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0}[part=toolbar]{justify-content:flex-end;gap:var(--lr-space-xs);padding:var(--lr-space-xs) var(--lr-space-s);border-block-end:var(--lr-size-1px) solid var(--lr-color-border);display:flex}:host([compact]) [part=toolbar]{gap:var(--lr-terminal-compact-toolbar-gap,var(--lr-space-2xs));padding:var(--lr-terminal-compact-toolbar-padding,var(--lr-space-2xs) var(--lr-space-xs))}[part=copy-button],[part=download-button]{font:inherit;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);border:var(--lr-size-1px) solid var(--lr-color-border);border-radius:var(--lr-radius-xs);padding:var(--lr-space-2xs) var(--lr-space-xs);cursor:pointer;background:0 0}[part=copy-button]:hover,[part=download-button]:hover{background:var(--lr-color-brand-quiet)}[part=copy-button]:active,[part=download-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=copy-button]:focus-visible,[part=download-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=viewport]{block-size:var(--lr-terminal-height,var(--lr-size-20rem));position:relative}lr-virtual-list{block-size:100%;font-family:var(--lr-font-mono);font-size:var(--lr-font-size-sm);color:var(--lr-color-text);display:block}lr-virtual-list::part(line){white-space:pre-wrap;overflow-wrap:anywhere;padding-inline:var(--lr-space-s);line-height:var(--lr-line-height-normal)}lr-virtual-list::part(line):hover{background:var(--lr-color-brand-quiet)}lr-virtual-list::part(line):active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}lr-virtual-list::part(line-highlight-accent):hover,lr-virtual-list::part(line-highlight-accent):active{background:var(--lr-terminal-highlight-accent-bg,var(--lr-color-brand-quiet))}lr-virtual-list::part(line-highlight-success):hover,lr-virtual-list::part(line-highlight-success):active{background:var(--lr-terminal-highlight-success-bg,var(--lr-color-success-quiet))}lr-virtual-list::part(line-highlight-warning):hover,lr-virtual-list::part(line-highlight-warning):active{background:var(--lr-terminal-highlight-warning-bg,var(--lr-color-warning-quiet))}lr-virtual-list::part(line-highlight-danger):hover,lr-virtual-list::part(line-highlight-danger):active{background:var(--lr-terminal-highlight-danger-bg,var(--lr-color-danger-quiet))}lr-virtual-list::part(line-highlight-neutral):hover,lr-virtual-list::part(line-highlight-neutral):active{background:var(--lr-terminal-highlight-neutral-bg,var(--lr-color-surface))}lr-virtual-list::part(line):focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}:host([compact]) lr-virtual-list::part(line){padding-inline:var(--lr-terminal-compact-line-padding-inline,var(--lr-space-xs))}:host(:not([wrap])) lr-virtual-list::part(line){white-space:pre;overflow-wrap:normal;box-sizing:border-box;inline-size:max-content;min-inline-size:100%}:host(:not([wrap])) lr-virtual-list::part(base){overflow-x:auto}[part=jump-to-latest]{font:inherit;font-size:var(--lr-font-size-xs);color:var(--lr-color-surface);background:var(--lr-color-brand);border-radius:var(--lr-radius-pill);padding:var(--lr-space-2xs) var(--lr-space-s);box-shadow:var(--lr-shadow-m);cursor:pointer;z-index:var(--lr-layer-content);transition:opacity var(--lr-transition-fast);border:none;position:absolute;inset-block-end:var(--lr-space-s);inset-inline-end:var(--lr-space-s)}[part=jump-to-latest]:hover{background:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-hover))}[part=jump-to-latest]:active{background:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=jump-to-latest]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{display:block}[part=base]{border:var(--lr-size-1px) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-terminal-surface-color,var(--lr-color-surface-raised));flex-direction:column;display:flex;overflow:hidden}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0}[part=toolbar]{justify-content:flex-end;gap:var(--lr-space-xs);padding:var(--lr-space-xs) var(--lr-space-s);border-block-end:var(--lr-size-1px) solid var(--lr-color-border);display:flex}:host([compact]) [part=toolbar]{gap:var(--lr-terminal-compact-toolbar-gap,var(--lr-space-2xs));padding:var(--lr-terminal-compact-toolbar-padding,var(--lr-space-2xs) var(--lr-space-xs))}[part=copy-button],[part=download-button]{font:inherit;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);border:var(--lr-size-1px) solid var(--lr-color-border);border-radius:var(--lr-radius-xs);padding:var(--lr-space-2xs) var(--lr-space-xs);cursor:pointer;background:0 0}[part=copy-button]:hover,[part=download-button]:hover{background:var(--lr-terminal-toolbar-button-hover-bg,var(--lr-color-brand-quiet))}[part=copy-button]:active,[part=download-button]:active{background:var(--lr-terminal-toolbar-button-active-bg,color-mix(in oklab, var(--lr-terminal-toolbar-button-hover-bg,var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active)))}[part=copy-button]:focus-visible,[part=download-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=viewport]{block-size:var(--lr-terminal-height,var(--lr-size-20rem));position:relative}lr-virtual-list{block-size:100%;font-family:var(--lr-font-mono);font-size:var(--lr-font-size-sm);color:var(--lr-color-text);display:block}lr-virtual-list::part(line){white-space:pre-wrap;overflow-wrap:anywhere;padding-inline:var(--lr-space-s);line-height:var(--lr-line-height-normal)}lr-virtual-list::part(line):hover{background:var(--lr-terminal-line-hover-bg,var(--lr-color-brand-quiet))}lr-virtual-list::part(line):active{background:var(--lr-terminal-line-active-bg,color-mix(in oklab, var(--lr-terminal-line-hover-bg,var(--lr-color-brand-quiet)), var(--lr-color-mix-partner) var(--lr-color-mix-active)))}lr-virtual-list::part(line-highlight-accent):hover,lr-virtual-list::part(line-highlight-accent):active{background:var(--lr-terminal-highlight-accent-bg,var(--lr-color-brand-quiet))}lr-virtual-list::part(line-highlight-success):hover,lr-virtual-list::part(line-highlight-success):active{background:var(--lr-terminal-highlight-success-bg,var(--lr-color-success-quiet))}lr-virtual-list::part(line-highlight-warning):hover,lr-virtual-list::part(line-highlight-warning):active{background:var(--lr-terminal-highlight-warning-bg,var(--lr-color-warning-quiet))}lr-virtual-list::part(line-highlight-danger):hover,lr-virtual-list::part(line-highlight-danger):active{background:var(--lr-terminal-highlight-danger-bg,var(--lr-color-danger-quiet))}lr-virtual-list::part(line-highlight-neutral):hover,lr-virtual-list::part(line-highlight-neutral):active{background:var(--lr-terminal-highlight-neutral-bg,var(--lr-color-surface))}lr-virtual-list::part(line):focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}:host([compact]) lr-virtual-list::part(line){padding-inline:var(--lr-terminal-compact-line-padding-inline,var(--lr-space-xs))}:host(:not([wrap])) lr-virtual-list::part(line){white-space:pre;overflow-wrap:normal;box-sizing:border-box;inline-size:max-content;min-inline-size:100%}:host(:not([wrap])) lr-virtual-list::part(base){overflow-x:auto}[part=jump-to-latest]{font:inherit;font-size:var(--lr-font-size-xs);color:var(--lr-color-surface);background:var(--lr-color-brand);border-radius:var(--lr-radius-pill);padding:var(--lr-space-2xs) var(--lr-space-s);box-shadow:var(--lr-shadow-m);cursor:pointer;z-index:var(--lr-layer-content);transition:opacity var(--lr-transition-fast);border:none;position:absolute;inset-block-end:var(--lr-space-s);inset-inline-end:var(--lr-space-s)}[part=jump-to-latest]:hover{background:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-hover))}[part=jump-to-latest]:active{background:color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=jump-to-latest]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}`;export{styles};
@@ -47,8 +47,10 @@ export declare function testResultDetailSlotName(suiteId:string,testId:string):s
47
47
  * status-word text; carries `data-status`.
48
48
  * @csspart test-name - The activatable test-name button.
49
49
  * @csspart test-duration - The duration text.
50
- * @csspart test-expand-toggle - The expand/collapse button for a row's failure detail. Rendered
51
- * for any failed test, or any test with canonical suite-scoped detail content.
50
+ * @csspart test-expand-toggle - The expand/collapse button for a row's failure detail. Its
51
+ * accessible name joins the suite and test name with the localized
52
+ * `accessibleLabelSeparator`. Rendered for any failed test, or any test with canonical
53
+ * suite-scoped detail content.
52
54
  * @csspart failure - The failure-detail wrapper; hidden while collapsed.
53
55
  * @csspart failure-message - The failure's plain message text.
54
56
  * @csspart limit - Localized resource-ceiling notice.
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./test-results.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_expand,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSkipped,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_testResultsCollapseTest,LYRA_DEFAULT_testResultsCompleteAnnounce,LYRA_DEFAULT_testResultsExpandTest,LYRA_DEFAULT_testResultsFailed,LYRA_DEFAULT_testResultsFilterLabel,LYRA_DEFAULT_testResultsLabel,LYRA_DEFAULT_testResultsLimit,LYRA_DEFAULT_testResultsPassed,LYRA_DEFAULT_testResultsRunning,LYRA_DEFAULT_testResultsSkipped}from"../../../internal/default-strings.generated.js";const STATUSES=["passed","failed","skipped","running"],MAX_RENDERED_TESTS=1e3;function normalizeTestStatus(value){switch(value){case"passed":case"failed":case"skipped":case"running":return value;default:return"skipped"}}const STATUS_COUNT_KEY={passed:"testResultsPassed",failed:"testResultsFailed",skipped:"testResultsSkipped",running:"testResultsRunning"},STATUS_LABEL_KEY={passed:"statusSuccess",failed:"statusError",skipped:"statusSkipped",running:"statusRunning"},STATUS_GLYPH={passed:"\u2713",failed:"\xD7",skipped:"\u2013"};function encodeDetailSlotSegment(value){let encoded="";for(let index=0;index<value.length;){const codePoint=value.codePointAt(index),character=String.fromCodePoint(codePoint);encoded+=codePoint>=55296&&codePoint<=57343?`%u${codePoint.toString(16).toUpperCase().padStart(4,"0")}`:encodeURIComponent(character),index+=character.length}return encoded}function testResultDetailSlotName(suiteId,testId){return`detail-${encodeDetailSlotSegment(suiteId)}:${encodeDetailSlotSegment(testId)}`}class LyraTestResults extends LyraElement{constructor(){super(...arguments),this.suites=[],this.statusFilter=[],this.runId=null,this.runState="idle",this.autoExpandFailures=!0,this.manualExpanded=new Map,this.normalizedSuitesCache=[],this.projectedSuitesCache=[],this.completeStatusCounts={passed:0,failed:0,skipped:0,running:0},this.normalizedTestKeys=new Set,this.detailSlotNames=new Set,this.projectionTruncated=!1,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.idPrefix=nextId("test-results"),this.pendingCompletionAnnouncement=null}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,expand:LYRA_DEFAULT_expand,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,noMatches:LYRA_DEFAULT_noMatches,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning,statusSkipped:LYRA_DEFAULT_statusSkipped,statusSuccess:LYRA_DEFAULT_statusSuccess,testResultsCollapseTest:LYRA_DEFAULT_testResultsCollapseTest,testResultsCompleteAnnounce:LYRA_DEFAULT_testResultsCompleteAnnounce,testResultsExpandTest:LYRA_DEFAULT_testResultsExpandTest,testResultsFailed:LYRA_DEFAULT_testResultsFailed,testResultsFilterLabel:LYRA_DEFAULT_testResultsFilterLabel,testResultsLabel:LYRA_DEFAULT_testResultsLabel,testResultsLimit:LYRA_DEFAULT_testResultsLimit,testResultsPassed:LYRA_DEFAULT_testResultsPassed,testResultsRunning:LYRA_DEFAULT_testResultsRunning,testResultsSkipped:LYRA_DEFAULT_testResultsSkipped}}static{this.ownedCollectionProperties=Object.freeze(["suites","statusFilter"])}static{this.identityCollectionProperties=Object.freeze(["suites"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-filter-change"])}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.projectionTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}willUpdate(changed){if(super.willUpdate(changed),changed.has("suites")){this.rebuildNormalizedSuites();const pruned=new Map([...this.manualExpanded].filter(([key])=>this.normalizedTestKeys.has(key)));pruned.size!==this.manualExpanded.size&&(this.manualExpanded=pruned)}if((changed.has("suites")||changed.has("statusFilter"))&&this.rebuildProjection(),this.rebuildDetailSlotNames(),changed.has("runState")||changed.has("runId")){const previousState=changed.has("runState")?changed.get("runState"):this.runState,previousRunId=changed.has("runId")?changed.get("runId"):this.runId;if(previousState==="running"&&this.runState==="complete"&&this.runId!==null&&previousRunId===this.runId){const number=getNumberFormat(this.effectiveLocale);this.pendingCompletionAnnouncement=this.localize("testResultsCompleteAnnounce",void 0,{passed:number.format(this.countOf("passed")),failed:number.format(this.countOf("failed")),skipped:number.format(this.countOf("skipped"))})}}}rebuildNormalizedSuites(){const normalizedSuites=[],suiteIds=new Set,normalizedTestKeys=new Set,counts={passed:0,failed:0,skipped:0,running:0};for(const suite of Array.isArray(this.suites)?this.suites:[]){if(!suite||typeof suite.id!="string"||suite.id.trim().length===0||suiteIds.has(suite.id))continue;suiteIds.add(suite.id);const testIds=new Set,tests=[];for(const test of Array.isArray(suite.tests)?suite.tests:[]){if(!test||typeof test.id!="string"||test.id.trim().length===0||testIds.has(test.id))continue;testIds.add(test.id);const status=normalizeTestStatus(test.status),normalized={id:test.id,name:typeof test.name=="string"?test.name:"",status,...typeof test.durationMs=="number"?{durationMs:test.durationMs}:{},...typeof test.message=="string"?{message:test.message}:{}};tests.push(normalized),normalizedTestKeys.add(this.testKey(suite.id,normalized.id)),counts[status]++}tests.length>0&&normalizedSuites.push({id:suite.id,name:typeof suite.name=="string"?suite.name:"",tests})}this.normalizedSuitesCache=normalizedSuites,this.normalizedTestKeys=normalizedTestKeys,this.completeStatusCounts=counts}rebuildProjection(){const filteredStatuses=new Set(this.statusFilter),candidates=this.normalizedSuitesCache.flatMap(suite=>suite.tests.filter(test=>filteredStatuses.size===0||filteredStatuses.has(test.status)).map(test=>({suiteId:suite.id,test}))),chosenKeys=new Set,reserve=predicate=>{for(const{suiteId,test}of candidates){if(chosenKeys.size>=MAX_RENDERED_TESTS)break;predicate(suiteId,test)&&chosenKeys.add(this.testKey(suiteId,test.id))}};reserve((suiteId,test)=>this.manualExpanded.get(this.testKey(suiteId,test.id))===!0),reserve((_suiteId,test)=>test.status==="failed"),reserve(()=>!0),this.projectedSuitesCache=this.normalizedSuitesCache.map(suite=>({...suite,tests:suite.tests.filter(test=>chosenKeys.has(this.testKey(suite.id,test.id)))})).filter(suite=>suite.tests.length>0),this.projectionTruncated=chosenKeys.size<candidates.length}updated(changed){if(super.updated(changed),this.pendingCompletionAnnouncement!==null){const text=this.pendingCompletionAnnouncement;this.pendingCompletionAnnouncement=null,this.liveRegion?.announce(text,{force:!0})}this.limitAnnouncementInitialized&&this.projectionTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("testResultsLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_TESTS)})),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.projectionTruncated}countOf(status){return this.completeStatusCounts[status]}computeStatusCounts(){return this.completeStatusCounts}testKey(suiteId,testId){return JSON.stringify([suiteId,testId])}scopedDetailSlot(suiteId,testId){return testResultDetailSlotName(suiteId,testId)}rebuildDetailSlotNames(){this.detailSlotNames=new Set([...this.children].map(child=>child.getAttribute("slot")).filter(name=>name!==null))}hasDetail(suiteId,testId){return this.detailSlotNames.has(this.scopedDetailSlot(suiteId,testId))}isExpanded(suiteId,test){const manual=this.manualExpanded.get(this.testKey(suiteId,test.id));return manual!==void 0?manual:this.autoExpandFailures&&test.status==="failed"}toggleFilter(status){const next=this.statusFilter.includes(status)?this.statusFilter.filter(s=>s!==status):[...this.statusFilter,status];this.statusFilter=next,this.emit("lr-filter-change",{statuses:next})}toggleExpanded(suiteId,test){const expanded=!this.isExpanded(suiteId,test),next=new Map(this.manualExpanded);next.set(this.testKey(suiteId,test.id),expanded),this.manualExpanded=next,this.emit("lr-toggle",{suiteId,testId:test.id,expanded})}onDetailSlotChange(){this.requestUpdate()}renderSummary(statusCounts){return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./test-results.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_expand,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_noMatches,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSkipped,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_testResultsCollapseTest,LYRA_DEFAULT_testResultsCompleteAnnounce,LYRA_DEFAULT_testResultsExpandTest,LYRA_DEFAULT_testResultsFailed,LYRA_DEFAULT_testResultsFilterLabel,LYRA_DEFAULT_testResultsLabel,LYRA_DEFAULT_testResultsLimit,LYRA_DEFAULT_testResultsPassed,LYRA_DEFAULT_testResultsRunning,LYRA_DEFAULT_testResultsSkipped}from"../../../internal/default-strings.generated.js";const STATUSES=["passed","failed","skipped","running"],MAX_RENDERED_TESTS=1e3;function normalizeTestStatus(value){switch(value){case"passed":case"failed":case"skipped":case"running":return value;default:return"skipped"}}const STATUS_COUNT_KEY={passed:"testResultsPassed",failed:"testResultsFailed",skipped:"testResultsSkipped",running:"testResultsRunning"},STATUS_LABEL_KEY={passed:"statusSuccess",failed:"statusError",skipped:"statusSkipped",running:"statusRunning"},STATUS_GLYPH={passed:"✓",failed:"×",skipped:"–"};function encodeDetailSlotSegment(value){let encoded="";for(let index=0;index<value.length;){const codePoint=value.codePointAt(index),character=String.fromCodePoint(codePoint);encoded+=codePoint>=55296&&codePoint<=57343?`%u${codePoint.toString(16).toUpperCase().padStart(4,"0")}`:encodeURIComponent(character),index+=character.length}return encoded}function testResultDetailSlotName(suiteId,testId){return`detail-${encodeDetailSlotSegment(suiteId)}:${encodeDetailSlotSegment(testId)}`}class LyraTestResults extends LyraElement{constructor(){super(...arguments),this.suites=[],this.statusFilter=[],this.runId=null,this.runState="idle",this.autoExpandFailures=!0,this.manualExpanded=new Map,this.normalizedSuitesCache=[],this.projectedSuitesCache=[],this.completeStatusCounts={passed:0,failed:0,skipped:0,running:0},this.normalizedTestKeys=new Set,this.detailSlotNames=new Set,this.projectionTruncated=!1,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.idPrefix=nextId("test-results"),this.pendingCompletionAnnouncement=null}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,expand:LYRA_DEFAULT_expand,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,noMatches:LYRA_DEFAULT_noMatches,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning,statusSkipped:LYRA_DEFAULT_statusSkipped,statusSuccess:LYRA_DEFAULT_statusSuccess,testResultsCollapseTest:LYRA_DEFAULT_testResultsCollapseTest,testResultsCompleteAnnounce:LYRA_DEFAULT_testResultsCompleteAnnounce,testResultsExpandTest:LYRA_DEFAULT_testResultsExpandTest,testResultsFailed:LYRA_DEFAULT_testResultsFailed,testResultsFilterLabel:LYRA_DEFAULT_testResultsFilterLabel,testResultsLabel:LYRA_DEFAULT_testResultsLabel,testResultsLimit:LYRA_DEFAULT_testResultsLimit,testResultsPassed:LYRA_DEFAULT_testResultsPassed,testResultsRunning:LYRA_DEFAULT_testResultsRunning,testResultsSkipped:LYRA_DEFAULT_testResultsSkipped}}static{this.ownedCollectionProperties=Object.freeze(["suites","statusFilter"])}static{this.identityCollectionProperties=Object.freeze(["suites"])}static{this.styles=[LyraElement.styles,styles,srOnly]}static{this.immutableEventDetails=Object.freeze(["lr-filter-change"])}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.projectionTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}willUpdate(changed){if(super.willUpdate(changed),changed.has("suites")){this.rebuildNormalizedSuites();const pruned=new Map([...this.manualExpanded].filter(([key])=>this.normalizedTestKeys.has(key)));pruned.size!==this.manualExpanded.size&&(this.manualExpanded=pruned)}if((changed.has("suites")||changed.has("statusFilter"))&&this.rebuildProjection(),this.rebuildDetailSlotNames(),changed.has("runState")||changed.has("runId")){const previousState=changed.has("runState")?changed.get("runState"):this.runState,previousRunId=changed.has("runId")?changed.get("runId"):this.runId;if(previousState==="running"&&this.runState==="complete"&&this.runId!==null&&previousRunId===this.runId){const number=getNumberFormat(this.effectiveLocale);this.pendingCompletionAnnouncement=this.localize("testResultsCompleteAnnounce",void 0,{passed:number.format(this.countOf("passed")),failed:number.format(this.countOf("failed")),skipped:number.format(this.countOf("skipped"))})}}}rebuildNormalizedSuites(){const normalizedSuites=[],suiteIds=new Set,normalizedTestKeys=new Set,counts={passed:0,failed:0,skipped:0,running:0};for(const suite of Array.isArray(this.suites)?this.suites:[]){if(!suite||typeof suite.id!="string"||suite.id.trim().length===0||suiteIds.has(suite.id))continue;suiteIds.add(suite.id);const testIds=new Set,tests=[];for(const test of Array.isArray(suite.tests)?suite.tests:[]){if(!test||typeof test.id!="string"||test.id.trim().length===0||testIds.has(test.id))continue;testIds.add(test.id);const status=normalizeTestStatus(test.status),normalized={id:test.id,name:typeof test.name=="string"?test.name:"",status,...typeof test.durationMs=="number"?{durationMs:test.durationMs}:{},...typeof test.message=="string"?{message:test.message}:{}};tests.push(normalized),normalizedTestKeys.add(this.testKey(suite.id,normalized.id)),counts[status]++}tests.length>0&&normalizedSuites.push({id:suite.id,name:typeof suite.name=="string"?suite.name:"",tests})}this.normalizedSuitesCache=normalizedSuites,this.normalizedTestKeys=normalizedTestKeys,this.completeStatusCounts=counts}rebuildProjection(){const filteredStatuses=new Set(this.statusFilter),candidates=this.normalizedSuitesCache.flatMap(suite=>suite.tests.filter(test=>filteredStatuses.size===0||filteredStatuses.has(test.status)).map(test=>({suiteId:suite.id,test}))),chosenKeys=new Set,reserve=predicate=>{for(const{suiteId,test}of candidates){if(chosenKeys.size>=MAX_RENDERED_TESTS)break;predicate(suiteId,test)&&chosenKeys.add(this.testKey(suiteId,test.id))}};reserve((suiteId,test)=>this.manualExpanded.get(this.testKey(suiteId,test.id))===!0),reserve((_suiteId,test)=>test.status==="failed"),reserve(()=>!0),this.projectedSuitesCache=this.normalizedSuitesCache.map(suite=>({...suite,tests:suite.tests.filter(test=>chosenKeys.has(this.testKey(suite.id,test.id)))})).filter(suite=>suite.tests.length>0),this.projectionTruncated=chosenKeys.size<candidates.length}updated(changed){if(super.updated(changed),this.pendingCompletionAnnouncement!==null){const text=this.pendingCompletionAnnouncement;this.pendingCompletionAnnouncement=null,this.liveRegion?.announce(text,{force:!0})}this.limitAnnouncementInitialized&&this.projectionTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("testResultsLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_TESTS)})),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.projectionTruncated}countOf(status){return this.completeStatusCounts[status]}computeStatusCounts(){return this.completeStatusCounts}testKey(suiteId,testId){return JSON.stringify([suiteId,testId])}scopedDetailSlot(suiteId,testId){return testResultDetailSlotName(suiteId,testId)}rebuildDetailSlotNames(){this.detailSlotNames=new Set([...this.children].map(child=>child.getAttribute("slot")).filter(name=>name!==null))}hasDetail(suiteId,testId){return this.detailSlotNames.has(this.scopedDetailSlot(suiteId,testId))}isExpanded(suiteId,test){const manual=this.manualExpanded.get(this.testKey(suiteId,test.id));return manual!==void 0?manual:this.autoExpandFailures&&test.status==="failed"}toggleFilter(status){const next=this.statusFilter.includes(status)?this.statusFilter.filter(s=>s!==status):[...this.statusFilter,status];this.statusFilter=next,this.emit("lr-filter-change",{statuses:next})}toggleExpanded(suiteId,test){const expanded=!this.isExpanded(suiteId,test),next=new Map(this.manualExpanded);next.set(this.testKey(suiteId,test.id),expanded),this.manualExpanded=next,this.emit("lr-toggle",{suiteId,testId:test.id,expanded})}onDetailSlotChange(){this.requestUpdate()}renderSummary(statusCounts){return html`
2
2
  <div part="summary">
3
3
  ${STATUSES.map(status=>{const count=statusCounts[status],formattedCount=getNumberFormat(this.effectiveLocale).format(count);return html`<span part="count" data-status=${status}
4
4
  >${this.localize(STATUS_COUNT_KEY[status],void 0,{count:formattedCount})}</span
@@ -17,7 +17,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
17
17
  </button>
18
18
  `})}
19
19
  </div>
20
- `}renderTest(suiteId,suiteName,test,suiteIndex,testIndex){const expanded=this.isExpanded(suiteId,test),scopedSlot=this.scopedDetailSlot(suiteId,test.id),canExpand=test.status==="failed"||this.hasDetail(suiteId,test.id),domKey=`${suiteIndex}-${testIndex}`,failureId=`${this.idPrefix}-${domKey}-failure`,statusId=`${this.idPrefix}-${domKey}-status`,toggleName=this.localize(expanded?"testResultsCollapseTest":"testResultsExpandTest",void 0,{name:`${suiteName}: ${test.name}`});return html`
20
+ `}renderTest(suiteId,suiteName,test,suiteIndex,testIndex){const expanded=this.isExpanded(suiteId,test),scopedSlot=this.scopedDetailSlot(suiteId,test.id),canExpand=test.status==="failed"||this.hasDetail(suiteId,test.id),domKey=`${suiteIndex}-${testIndex}`,failureId=`${this.idPrefix}-${domKey}-failure`,statusId=`${this.idPrefix}-${domKey}-status`,toggleName=this.localize(expanded?"testResultsCollapseTest":"testResultsExpandTest",void 0,{name:[suiteName,test.name].join(this.localize("accessibleLabelSeparator"))});return html`
21
21
  <div part="test" role="listitem" data-status=${test.status}>
22
22
  <span part="test-status" id=${statusId} data-status=${test.status}>
23
23
  ${test.status==="running"?html`<span aria-hidden="true"><lr-spinner></lr-spinner></span>`:html`<span aria-hidden="true">${STATUS_GLYPH[test.status]}</span>`}
@@ -95,6 +95,8 @@ export type ThinkingPanelAppearance=LyraFrame;export interface ThinkingPanelTogg
95
95
  * `[part="header"]` padding while `compact`.
96
96
  * @cssprop [--lr-thinking-panel-compact-header-gap=var(--lr-space-2xs)] - Gap between the header
97
97
  * toggle, label, and duration while `compact`.
98
+ * @cssprop [--lr-thinking-panel-compact-header-font-size=var(--lr-font-size-sm)] - Font size of
99
+ * `[part="header"]` while `compact`.
98
100
  * @cssprop [--lr-thinking-panel-compact-body-padding=var(--lr-space-s)] - `[part="body"]` padding
99
101
  * while `compact`.
100
102
  * @status stable
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{--_lr-thinking-panel-max-block-size:var(--lr-size-16rem);display:block}[part=base]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);overflow:hidden}:host([compact]) [part=header]{padding:var(--lr-thinking-panel-compact-header-padding,var(--lr-space-2xs) var(--lr-space-s));gap:var(--lr-thinking-panel-compact-header-gap,var(--lr-space-2xs))}:host([compact]) [part=body]{padding:var(--lr-thinking-panel-compact-body-padding,var(--lr-space-s))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0}[part=header]{align-items:center;gap:var(--lr-space-xs);inline-size:100%;padding:var(--lr-space-s) var(--lr-space-m);color:var(--lr-color-text);font:inherit;font-weight:var(--lr-font-weight-semibold);font-size:var(--lr-font-size-md-sm);text-align:start;cursor:pointer;background:0 0;border:none;flex-wrap:wrap;display:flex}[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 * var(--lr-focus-ring-offset))}[part=toggle]{transition:transform var(--lr-transition-fast);flex:none;display:inline-flex}:host([expanded]) [part=toggle]{transform:rotate(90deg)}:host(:not([expanded]):dir(rtl)) [part=toggle]{transform:scaleX(-1)}[part=label]{min-inline-size:var(--lr-size-6ch);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}[part=duration]{align-items:center;gap:var(--lr-size-0-35em);overflow-wrap:anywhere;text-align:end;min-inline-size:0;font-weight:var(--lr-font-weight-normal);font-size:var(--lr-font-size-sm);color:var(--lr-color-text-quiet);flex:0 auto;display:inline-flex}[part=duration][data-pending]{color:var(--lr-thinking-panel-pending-color,var(--lr-color-brand))}.pending-dot{inline-size:var(--lr-size-0-375rem);block-size:var(--lr-size-0-375rem);animation:lr-thinking-panel-pulse var(--lr-transition-ambient) infinite;background:currentColor;border-radius:50%}@keyframes lr-thinking-panel-pulse{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}[part=body]{min-inline-size:0;max-inline-size:100%;max-block-size:var(--lr-thinking-panel-max-block-size,var(--_lr-thinking-panel-max-block-size));overflow-inline:hidden;overflow-block:auto;overflow-wrap:anywhere;overscroll-behavior:contain;padding:var(--lr-space-m);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-md-sm);line-height:var(--lr-line-height-normal)}[part=body]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body]:hover:not(:focus-visible){outline:var(--lr-focus-ring-width) solid var(--lr-color-border);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body][hidden]{display:none}@media (prefers-reduced-motion:reduce){[part=toggle]{transition:none!important}.pending-dot{opacity:1;transform:none;animation:none!important}}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{--_lr-thinking-panel-max-block-size:var(--lr-size-16rem);display:block}[part=base]{border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);background:var(--lr-color-surface);overflow:hidden}:host([compact]) [part=header]{padding:var(--lr-thinking-panel-compact-header-padding,var(--lr-space-2xs) var(--lr-space-s));gap:var(--lr-thinking-panel-compact-header-gap,var(--lr-space-2xs));font-size:var(--lr-thinking-panel-compact-header-font-size,var(--lr-font-size-sm))}:host([compact]) [part=body]{padding:var(--lr-thinking-panel-compact-body-padding,var(--lr-space-s))}:host([frame=plain]) [part=base]{background:0 0;border:0;border-radius:0}[part=header]{align-items:center;gap:var(--lr-space-xs);inline-size:100%;padding:var(--lr-space-s) var(--lr-space-m);color:var(--lr-color-text);font:inherit;font-weight:var(--lr-font-weight-semibold);font-size:var(--lr-font-size-md-sm);text-align:start;cursor:pointer;background:0 0;border:none;flex-wrap:wrap;display:flex}[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 * var(--lr-focus-ring-offset))}[part=toggle]{transition:transform var(--lr-transition-fast);flex:none;display:inline-flex}:host([expanded]) [part=toggle]{transform:rotate(90deg)}:host(:not([expanded]):dir(rtl)) [part=toggle]{transform:scaleX(-1)}[part=label]{min-inline-size:var(--lr-size-6ch);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}[part=duration]{align-items:center;gap:var(--lr-size-0-35em);overflow-wrap:anywhere;text-align:end;min-inline-size:0;font-weight:var(--lr-font-weight-normal);font-size:var(--lr-font-size-sm);color:var(--lr-color-text-quiet);flex:0 auto;display:inline-flex}[part=duration][data-pending]{color:var(--lr-thinking-panel-pending-color,var(--lr-color-brand))}.pending-dot{inline-size:var(--lr-size-0-375rem);block-size:var(--lr-size-0-375rem);animation:lr-thinking-panel-pulse var(--lr-transition-ambient) infinite;background:currentColor;border-radius:50%}@keyframes lr-thinking-panel-pulse{0%,to{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}[part=body]{min-inline-size:0;max-inline-size:100%;max-block-size:var(--lr-thinking-panel-max-block-size,var(--_lr-thinking-panel-max-block-size));overflow-inline:hidden;overflow-block:auto;overflow-wrap:anywhere;overscroll-behavior:contain;padding:var(--lr-space-m);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-md-sm);line-height:var(--lr-line-height-normal)}[part=body]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body]:hover:not(:focus-visible){outline:var(--lr-focus-ring-width) solid var(--lr-color-border);outline-offset:calc(-1 * var(--lr-focus-ring-offset))}[part=body][hidden]{display:none}@media (prefers-reduced-motion:reduce){[part=toggle]{transition:none!important}.pending-dot{opacity:1;transform:none;animation:none!important}}`;export{styles};
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{resolveLocalizedParts}from"../../../internal/localization-runtime.js";import{styles}from"./tool-approval-dialog.styles.js";import"../../utility/json-viewer/json-viewer.class.js";import"../../forms/button/button.class.js";import{trueDefaultBooleanConverter,trueDefaultSpellcheckConverter as spellcheckConverter}from"../../../internal/converters.js";import{activeElementIn}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_cancel,LYRA_DEFAULT_deny,LYRA_DEFAULT_edit,LYRA_DEFAULT_invalidJson,LYRA_DEFAULT_toolApprovalArgsLabel,LYRA_DEFAULT_toolApprovalGenericTool,LYRA_DEFAULT_toolApprovalHeading}from"../../../internal/default-strings.generated.js";class LyraToolApprovalDialog extends LyraElement{constructor(){super(...arguments),this.open=!1,this.lightDismiss=!1,this.proposalKey="",this.toolName="",this.accessibleLabel=null,this.args={},this.editable=!0,this.pending=null,this.spellcheck=!1,this.autocapitalize="off",this.autoCorrect="off",this.autocomplete="off",this.wrap="soft",this.inputMode="",this.enterKeyHint="",this.editing=!1,this.draftText="",this.draftError="",this.suppressNextErrorAnnouncement=!0,this.titleId=nextId("tool-approval-dialog-title"),this.errorId=nextId("tool-approval-dialog-error"),this.onBackdropClick=()=>{this.overlay?.dismissBackdrop()},this.toggleEdit=()=>{this.pending==null&&(this.editing?(this.editing=!1,this.draftText="",this.draftError=""):(this.editing=!0,this.draftText=this.stringifyArgs(),this.draftError=""))},this.onDraftInput=e=>{if(this.pending!=null)return;const value=e.target.value;this.draftText=value;try{JSON.parse(value),this.draftError=""}catch{this.draftError=this.localize("invalidJson")}},this.onEditorFocus=()=>{this.emit("focus")},this.onEditorBlur=()=>{this.emit("blur")},this.onApprove=()=>{if(this.pending!=null)return;let currentArgs=this.args;if(this.editing)try{currentArgs=JSON.parse(this.draftText)}catch{return}if(this.emit("lr-approve",{args:currentArgs},{cancelable:!0}).defaultPrevented){this.pending="approve";return}this.close("approve")},this.onDeny=()=>{if(this.pending!=null)return;if(this.emit("lr-deny",null,{cancelable:!0}).defaultPrevented){this.pending="deny";return}this.close("deny")}}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,cancel:LYRA_DEFAULT_cancel,deny:LYRA_DEFAULT_deny,edit:LYRA_DEFAULT_edit,invalidJson:LYRA_DEFAULT_invalidJson,toolApprovalArgsLabel:LYRA_DEFAULT_toolApprovalArgsLabel,toolApprovalGenericTool:LYRA_DEFAULT_toolApprovalGenericTool,toolApprovalHeading:LYRA_DEFAULT_toolApprovalHeading}}static{this.styles=[LyraElement.styles,styles]}resetProposalState(){this.editing=!1,this.draftText="",this.draftError="",this.pending=null}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&!this.suppressNextErrorAnnouncement&&changed.has("draftError")&&this.draftError&&!changed.get("draftError")&&this.errorAnnouncementSink?.announce(this.draftError),changed.has("open")&&(this.open?(this.activateOverlay(),this.resetProposalState()):(this.overlay?.deactivate(),this.overlay=void 0));const proposalChanged=changed.has("proposalKey")||changed.has("toolName")||changed.has("args");this.hasUpdated&&proposalChanged&&!(changed.has("open")&&this.open)&&this.resetProposalState(),changed.has("editable")&&!this.editable&&this.editing&&(this.editing=!1,this.draftText="",this.draftError="")}updated(changed){if(super.updated(changed),this.suppressNextErrorAnnouncement=!1,changed.has("open")&&this.open){this.overlay?.focusInitial();return}changed.has("editing")&&(this.editing?this.shadowRoot?.querySelector('[part="args-editor"]')?.focus():this.open&&!activeElementIn(this.shadowRoot)&&this.shadowRoot?.querySelector('[part="deny-button"]')?.focus())}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})),this.hasUpdated&&(this.suppressNextErrorAnnouncement=!0,this.requestUpdate()),this.hasUpdated&&this.open&&(this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback(),this.overlay?.suspend(),this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.suppressNextErrorAnnouncement=!0}activateOverlay(){if(this.overlay?.isActive()){this.overlay.resume();return}this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>{this.pending==null&&this.close("escape")},onBackdrop:()=>{this.pending!=null||!this.lightDismiss||this.close("backdrop")},preferredInitialFocus:()=>this.shadowRoot?.querySelector('[part="deny-button"]')??null,lockScroll:!0,suspendWhenUnrendered:!0})}close(reason="api"){this.open&&(this.open=!1,this.emit("lr-close",reason))}show(){this.open||(this.open=!0)}hide(reason="api"){this.close(reason)}stringifyArgs(){try{return JSON.stringify(this.args,null,2)??"null"}catch{return"null"}}render(){const hasError=this.editing&&this.draftError.length>0,toolName=this.toolName||this.localize("toolApprovalGenericTool"),headingTemplate=this.localize("toolApprovalHeading"),headingParts=resolveLocalizedParts(headingTemplate,marker=>this.localize("toolApprovalHeading",void 0,{tool:marker})),panelLabel=hostAriaLabel(this)===null&&this.accessibleLabel?this.accessibleLabel:null;return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{nextId}from"../../../internal/a11y.js";import{resolveLocalizedParts}from"../../../internal/localization-runtime.js";import{styles}from"./tool-approval-dialog.styles.js";import"../../utility/json-viewer/json-viewer.class.js";import"../../forms/button/button.class.js";import{trueDefaultBooleanConverter,trueDefaultSpellcheckConverter as spellcheckConverter}from"../../../internal/converters.js";import{activeElementIn}from"../../../internal/active-element.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_cancel,LYRA_DEFAULT_deny,LYRA_DEFAULT_edit,LYRA_DEFAULT_invalidJson,LYRA_DEFAULT_toolApprovalArgsLabel,LYRA_DEFAULT_toolApprovalGenericTool,LYRA_DEFAULT_toolApprovalHeading}from"../../../internal/default-strings.generated.js";class LyraToolApprovalDialog extends LyraElement{constructor(){super(...arguments),this.open=!1,this.lightDismiss=!1,this.proposalKey="",this.toolName="",this.accessibleLabel=null,this.args={},this.editable=!0,this.pending=null,this.spellcheck=!1,this.autocapitalize="off",this.autoCorrect="off",this.autocomplete="off",this.wrap="soft",this.inputMode="",this.enterKeyHint="",this.editing=!1,this.draftText="",this.draftError="",this.suppressNextErrorAnnouncement=!0,this.titleId=nextId("tool-approval-dialog-title"),this.errorId=nextId("tool-approval-dialog-error"),this.onBackdropClick=()=>{this.overlay?.dismissBackdrop()},this.toggleEdit=()=>{this.pending==null&&(this.editing?(this.editing=!1,this.draftText="",this.draftError=""):(this.editing=!0,this.draftText=this.stringifyArgs(),this.draftError=""))},this.onDraftInput=e=>{if(this.pending!=null){e.stopPropagation();return}const value=e.target.value;this.draftText=value;try{JSON.parse(value),this.draftError=""}catch{this.draftError=this.localize("invalidJson")}e.stopPropagation()},this.onEditorFocus=()=>{this.emit("focus")},this.onEditorBlur=()=>{this.emit("blur")},this.onApprove=()=>{if(this.pending!=null)return;let currentArgs=this.args;if(this.editing)try{currentArgs=JSON.parse(this.draftText)}catch{return}if(this.emit("lr-approve",{args:currentArgs},{cancelable:!0}).defaultPrevented){this.pending="approve";return}this.close("approve")},this.onDeny=()=>{if(this.pending!=null)return;if(this.emit("lr-deny",null,{cancelable:!0}).defaultPrevented){this.pending="deny";return}this.close("deny")}}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,cancel:LYRA_DEFAULT_cancel,deny:LYRA_DEFAULT_deny,edit:LYRA_DEFAULT_edit,invalidJson:LYRA_DEFAULT_invalidJson,toolApprovalArgsLabel:LYRA_DEFAULT_toolApprovalArgsLabel,toolApprovalGenericTool:LYRA_DEFAULT_toolApprovalGenericTool,toolApprovalHeading:LYRA_DEFAULT_toolApprovalHeading}}static{this.styles=[LyraElement.styles,styles]}resetProposalState(){this.editing=!1,this.draftText="",this.draftError="",this.pending=null}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&!this.suppressNextErrorAnnouncement&&changed.has("draftError")&&this.draftError&&!changed.get("draftError")&&this.errorAnnouncementSink?.announce(this.draftError),changed.has("open")&&(this.open?(this.activateOverlay(),this.resetProposalState()):(this.overlay?.deactivate(),this.overlay=void 0));const proposalChanged=changed.has("proposalKey")||changed.has("toolName")||changed.has("args");this.hasUpdated&&proposalChanged&&!(changed.has("open")&&this.open)&&this.resetProposalState(),changed.has("editable")&&!this.editable&&this.editing&&(this.editing=!1,this.draftText="",this.draftError="")}updated(changed){if(super.updated(changed),this.suppressNextErrorAnnouncement=!1,changed.has("open")&&this.open){this.overlay?.focusInitial();return}changed.has("editing")&&(this.editing?this.shadowRoot?.querySelector('[part="args-editor"]')?.focus():this.open&&!activeElementIn(this.shadowRoot)&&this.shadowRoot?.querySelector('[part="deny-button"]')?.focus())}connectedCallback(){super.connectedCallback(),this.errorAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})),this.hasUpdated&&(this.suppressNextErrorAnnouncement=!0,this.requestUpdate()),this.hasUpdated&&this.open&&(this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback(),this.overlay?.suspend(),this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.suppressNextErrorAnnouncement=!0}activateOverlay(){if(this.overlay?.isActive()){this.overlay.resume();return}this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>{this.pending==null&&this.close("escape")},onBackdrop:()=>{this.pending!=null||!this.lightDismiss||this.close("backdrop")},preferredInitialFocus:()=>this.shadowRoot?.querySelector('[part="deny-button"]')??null,lockScroll:!0,suspendWhenUnrendered:!0})}close(reason="api"){this.open&&(this.open=!1,this.emit("lr-close",reason))}show(){this.open||(this.open=!0)}hide(reason="api"){this.close(reason)}stringifyArgs(){try{return JSON.stringify(this.args,null,2)??"null"}catch{return"null"}}render(){const hasError=this.editing&&this.draftError.length>0,toolName=this.toolName||this.localize("toolApprovalGenericTool"),headingTemplate=this.localize("toolApprovalHeading"),headingParts=resolveLocalizedParts(headingTemplate,marker=>this.localize("toolApprovalHeading",void 0,{tool:marker})),panelLabel=!this.hasAttribute("aria-label")&&typeof this.accessibleLabel=="string"&&this.accessibleLabel.length>0?this.accessibleLabel:null;return html`
2
2
  <div part="backdrop" @click=${this.onBackdropClick}></div>
3
3
  <div
4
4
  part="panel"
@@ -70,14 +70,14 @@ export type ToolCallStatus=LyraToolStatus;export interface ToolChipSelectDetail{
70
70
  export declare class LyraToolCallChip extends LyraElement<LyraToolCallChipEventMap>{static styles:import("lit").CSSResultGroup[];
71
71
  /** The tool/function name, e.g. `web_search`. */
72
72
  name:string;
73
- /** Optional grouping label, e.g. `research`. */
73
+ /** Optional grouping label, e.g. `research`. Removing the attribute clears its displayed text. */
74
74
  category:string;
75
75
  /**
76
76
  * The call's current lifecycle state — drives the glyph, color, and
77
77
  * `status-text`. Invalid runtime values use the pending presentation.
78
78
  */
79
79
  status:ToolCallStatus;
80
- /** Short human-readable status text, e.g. `Searching web…`. */
80
+ /** Short human-readable status text, e.g. `Searching web…`. Removing the attribute clears its displayed text. */
81
81
  summary:string;
82
82
  /** How long the call took, in milliseconds. Omitted from the chip entirely when unset. */
83
83
  durationMs?:number;
@@ -15,7 +15,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
15
15
  <circle cx="12" cy="12" r="9"></circle>
16
16
  <line x1="9" y1="9" x2="15" y2="15"></line>
17
17
  <line x1="15" y1="9" x2="9" y2="15"></line>
18
- `)}function deniedIcon(){return icon(svg`<circle cx="12" cy="12" r="9"></circle><line x1="6" y1="18" x2="18" y2="6"></line>`)}const STATUS_ICON={pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon,denied:deniedIcon},STATUS_LABEL={pending:"Pending",running:"Running",success:"Success",error:"Error",denied:"Denied"},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"},STATUS_VALUES=new Set(Object.keys(STATUS_LABEL)),statusConverter={fromAttribute(value){return value!==null&&STATUS_VALUES.has(value)?value:"pending"},toAttribute(value){return value}};class LyraToolCallChip extends LyraElement{constructor(){super(...arguments),this.name="",this.category="",this.status="pending",this.summary="",this.icon="",this.callId="",this.hasDetailSlot=!1,this.tooltipOpen=!1,this.tooltipId=nextId("tool-call-chip-tooltip"),this.hovering=!1,this.focused=!1,this.onDetailSlotChange=e=>{this.hasDetailSlot=this.hasPreviewNodes(e.target.assignedNodes({flatten:!0})),this.hasDetailSlot||this.hideTooltip()},this.onMouseEnter=()=>{this.hovering=!0,this.showTooltip()},this.onMouseLeave=()=>{this.hovering=!1,!this.focused&&this.hideTooltip()},this.onFocus=()=>{this.focused=!0,this.showTooltip()},this.onBlur=()=>{this.focused=!1,!this.hovering&&this.hideTooltip()},this.onKeyDown=e=>{e.key==="Escape"&&this.tooltipOpen&&(e.stopPropagation(),this.hideTooltip())},this.onClick=()=>{this.emit("lr-tool-call-chip-select",{name:this.name,callId:this.callId})}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}hasPreviewNodes(nodes){return nodes.some(node=>node.nodeType===3?!!node.textContent?.trim():node.nodeType===1&&!node.hasAttribute("slot"))}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasDetailSlot=this.hasPreviewNodes(Array.from(this.childNodes)))}updated(changed){if(super.updated(changed),changed.has("tooltipOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOpen)){const anchor=this.renderRoot.querySelector('[part="base"]'),tooltip=this.renderRoot.querySelector('[part="tooltip"]');anchor&&tooltip&&(this.cleanupPositioner=place(anchor,tooltip,{placement:"top-start"}))}}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOpen=!1,this.hovering=!1,this.focused=!1}showTooltip(){!this.hasDetailSlot||this.tooltipOpen||(this.tooltipOpen=!0)}hideTooltip(){this.tooltipOpen&&(this.tooltipOpen=!1)}focus(options){this.baseEl?.focus(options)}blur(){this.baseEl?.blur()}click(){this.baseEl?.click()}get effectiveStatus(){return STATUS_VALUES.has(this.status)?this.status:"pending"}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}get accessibleLabel(){const parts=[this.name||this.localize("toolCall")];this.summary&&parts.push(this.summary),parts.push(this.localize(STATUS_LABEL_KEY[this.effectiveStatus]));const durationMs=this.safeDurationMs;return durationMs!=null&&parts.push(this.localizedDuration(durationMs)),parts.join(this.localize("accessibleLabelSeparator"))}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}render(){const hasCategory=this.category.length>0,hasSummary=this.summary.length>0,durationMs=this.safeDurationMs,hasDuration=durationMs!=null,status=this.effectiveStatus;return html`
18
+ `)}function deniedIcon(){return icon(svg`<circle cx="12" cy="12" r="9"></circle><line x1="6" y1="18" x2="18" y2="6"></line>`)}const STATUS_ICON={pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon,denied:deniedIcon},STATUS_LABEL={pending:"Pending",running:"Running",success:"Success",error:"Error",denied:"Denied"},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"},STATUS_VALUES=new Set(Object.keys(STATUS_LABEL)),statusConverter={fromAttribute(value){return value!==null&&STATUS_VALUES.has(value)?value:"pending"},toAttribute(value){return value}};class LyraToolCallChip extends LyraElement{constructor(){super(...arguments),this.name="",this.category="",this.status="pending",this.summary="",this.icon="",this.callId="",this.hasDetailSlot=!1,this.tooltipOpen=!1,this.tooltipId=nextId("tool-call-chip-tooltip"),this.hovering=!1,this.focused=!1,this.onDetailSlotChange=e=>{this.hasDetailSlot=this.hasPreviewNodes(e.target.assignedNodes({flatten:!0})),this.hasDetailSlot||this.hideTooltip()},this.onMouseEnter=()=>{this.hovering=!0,this.showTooltip()},this.onMouseLeave=()=>{this.hovering=!1,!this.focused&&this.hideTooltip()},this.onFocus=()=>{this.focused=!0,this.showTooltip()},this.onBlur=()=>{this.focused=!1,!this.hovering&&this.hideTooltip()},this.onKeyDown=e=>{e.key==="Escape"&&this.tooltipOpen&&(e.stopPropagation(),this.hideTooltip())},this.onClick=()=>{this.emit("lr-tool-call-chip-select",{name:this.name,callId:this.callId})}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}hasPreviewNodes(nodes){return nodes.some(node=>{if(node.nodeType===3)return!!node.textContent?.trim();if(node.nodeType!==1)return!1;const slotName=node.getAttribute("slot");return slotName===null||slotName===""})}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasDetailSlot=this.hasPreviewNodes(Array.from(this.childNodes)))}updated(changed){if(super.updated(changed),changed.has("tooltipOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOpen)){const anchor=this.renderRoot.querySelector('[part="base"]'),tooltip=this.renderRoot.querySelector('[part="tooltip"]');anchor&&tooltip&&(this.cleanupPositioner=place(anchor,tooltip,{placement:"top-start"}))}}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOpen=!1,this.hovering=!1,this.focused=!1}showTooltip(){!this.hasDetailSlot||this.tooltipOpen||(this.tooltipOpen=!0)}hideTooltip(){this.tooltipOpen&&(this.tooltipOpen=!1)}focus(options){this.baseEl?.focus(options)}blur(){this.baseEl?.blur()}click(){this.baseEl?.click()}get effectiveStatus(){return STATUS_VALUES.has(this.status)?this.status:"pending"}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}get accessibleLabel(){const parts=[this.name||this.localize("toolCall")];this.summary&&parts.push(this.summary),parts.push(this.localize(STATUS_LABEL_KEY[this.effectiveStatus]));const durationMs=this.safeDurationMs;return durationMs!=null&&parts.push(this.localizedDuration(durationMs)),parts.join(this.localize("accessibleLabelSeparator"))}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}render(){const hasCategory=(this.category??"").length>0,hasSummary=(this.summary??"").length>0,durationMs=this.safeDurationMs,hasDuration=durationMs!=null,status=this.effectiveStatus;return html`
19
19
  <button
20
20
  part="base"
21
21
  type="button"
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{nextId}from"../../../internal/a11y.js";import{AnchoredValidityController,resolveValidityAnchor,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{styles}from"./tool-param-form.styles.js";import"../../forms/select/select.class.js";import"../../forms/combobox/option.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{attachInternalsSafely,getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_fieldMustBeBoolean,LYRA_DEFAULT_fieldMustBeInteger,LYRA_DEFAULT_fieldMustBeNumber,LYRA_DEFAULT_fieldMustBeOneOf,LYRA_DEFAULT_fieldMustBeString,LYRA_DEFAULT_fieldMustEqual,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noData,LYRA_DEFAULT_schemaMustBeObject,LYRA_DEFAULT_schemaPropertiesMustBeFlat,LYRA_DEFAULT_toolParamBooleanFalse,LYRA_DEFAULT_toolParamBooleanTrue,LYRA_DEFAULT_toolParamBooleanUnset,LYRA_DEFAULT_toolParamMissingProperty,LYRA_DEFAULT_toolParamSchemaLimit,LYRA_DEFAULT_unsupportedFieldType,LYRA_DEFAULT_valueMustBeSerializable}from"../../../internal/default-strings.generated.js";const MAX_SCHEMA_FIELDS=100,MAX_ENUM_OPTIONS=500,MAX_VALUE_ENTRIES=1e4,MAX_VALUE_NODES=5e4,MAX_VALUE_DEPTH=16,OMIT_VALUE=Symbol("omit-tool-param-value");function isPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);return prototype===null||Object.getPrototypeOf(prototype)===null}catch{return!1}}function snapshotValueEntry(value,budget,depth){if(value===null||typeof value!="object"&&typeof value!="function"||typeof value=="function")return value;if(depth>MAX_VALUE_DEPTH||budget.remaining<=0)return budget.truncated=!0,OMIT_VALUE;const existing=budget.seen.get(value);if(existing!==void 0)return existing;let isArray=!1;try{isArray=Array.isArray(value)}catch{return budget.invalid=!0,OMIT_VALUE}if(isArray){const output2=[];budget.seen.set(value,output2);let length=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(descriptor.value>MAX_VALUE_ENTRIES&&(budget.truncated=!0),length=Math.min(descriptor.value,MAX_VALUE_ENTRIES))}catch{budget.invalid=!0}for(let index=0;index<length&&budget.remaining>0;index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{budget.invalid=!0;continue}if(!descriptor)continue;if(!("value"in descriptor)){budget.invalid=!0;continue}budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);entry!==OMIT_VALUE&&output2.push(entry)}return budget.remaining<=0&&length>output2.length&&(budget.truncated=!0),Object.freeze(output2)}if(!isPlainRecord(value))return value;const output={};budget.seen.set(value,output);let descriptors;try{descriptors=Object.getOwnPropertyDescriptors(value)}catch{return budget.invalid=!0,OMIT_VALUE}let retained=0;for(const key of Reflect.ownKeys(descriptors)){const descriptor=descriptors[key];if(!descriptor?.enumerable)continue;if(retained>=MAX_VALUE_ENTRIES||budget.remaining<=0){budget.truncated=!0;break}if(!("value"in descriptor)){budget.invalid=!0;continue}retained+=1,budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);entry!==OMIT_VALUE&&Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}return Object.freeze(output)}function snapshotFormValue(value){if(value==null)return{value:Object.freeze({}),invalid:!1,truncated:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{value:Object.freeze({}),invalid:!0,truncated:!1}}if(typeof value!="object"||isArray||!isPlainRecord(value))return{value:Object.freeze({}),invalid:!0,truncated:!1};const budget={remaining:MAX_VALUE_NODES,seen:new WeakMap,invalid:!1,truncated:!1},snapshot=snapshotValueEntry(value,budget,0);return{value:snapshot===OMIT_VALUE?Object.freeze({}):snapshot,invalid:budget.invalid||snapshot===OMIT_VALUE,truncated:budget.truncated}}const EMPTY_SCHEMA=Object.freeze({type:"object",properties:Object.freeze({})});function snapshotSchemaStringArray(value){let isArray=!1;try{isArray=Array.isArray(value)}catch{return{isArray:!1,exceededLimit:!1}}if(!isArray)return{isArray:!1,exceededLimit:!1};let sourceLength=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(sourceLength=descriptor.value)}catch{return{isArray:!0,value:Object.freeze([]),exceededLimit:!1}}const output=[];for(let index=0;index<Math.min(sourceLength,MAX_SCHEMA_FIELDS);index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}descriptor&&"value"in descriptor&&typeof descriptor.value=="string"&&output.push(descriptor.value)}return{isArray:!0,value:Object.freeze(output),exceededLimit:sourceLength>MAX_SCHEMA_FIELDS}}function snapshotSchema(value){if(value==null)return{schema:EMPTY_SCHEMA,shapeError:"",exceededLimits:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}if(typeof value!="object"||isArray)return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};let rootDescriptors;try{rootDescriptors=Object.getOwnPropertyDescriptors(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}const typeDescriptor=rootDescriptors.type;if(!typeDescriptor||!("value"in typeDescriptor)||typeDescriptor.value!=="object")return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};const propertiesDescriptor=rootDescriptors.properties,propertiesValue=propertiesDescriptor&&"value"in propertiesDescriptor?propertiesDescriptor.value:void 0;if(propertiesValue===null||typeof propertiesValue!="object"||!isPlainRecord(propertiesValue))return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1};const properties=Object.create(null);let shapeError="",exceededLimits=!1,seenFields=0,propertyDescriptors;try{propertyDescriptors=Object.getOwnPropertyDescriptors(propertiesValue)}catch{return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1}}for(const key of Reflect.ownKeys(propertyDescriptors)){const descriptor=propertyDescriptors[key];if(typeof key!="string"||!descriptor?.enumerable)continue;if(seenFields+=1,seenFields>MAX_SCHEMA_FIELDS){exceededLimits=!0;break}if(!("value"in descriptor)||descriptor.value===null||typeof descriptor.value!="object"||!isPlainRecord(descriptor.value)){shapeError="properties";continue}const propertySnapshot=snapshotFormValue(descriptor.value);if(propertySnapshot.invalid||propertySnapshot.truncated){shapeError="properties";continue}const property=propertySnapshot.value;let choices=property.enum;Array.isArray(choices)&&choices.length>MAX_ENUM_OPTIONS&&(exceededLimits=!0,choices=Object.freeze(choices.slice(0,MAX_ENUM_OPTIONS))),properties[key]=Object.freeze({...property,...choices===void 0?{}:{enum:choices}})}const requiredDescriptor=rootDescriptors.required;let required;if(requiredDescriptor&&"value"in requiredDescriptor){const requiredSnapshot=snapshotSchemaStringArray(requiredDescriptor.value);requiredSnapshot.isArray?(required=requiredSnapshot.value,requiredSnapshot.exceededLimit&&(exceededLimits=!0)):requiredDescriptor.enumerable&&(shapeError="properties")}else requiredDescriptor?.enumerable&&(shapeError="properties");return{schema:Object.freeze({type:"object",properties:Object.freeze(properties),...required===void 0?{}:{required}}),shapeError,exceededLimits}}function cloneFormValue(value,_ownerWindow){return snapshotFormValue(value).value}class LyraToolParamForm extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldMustBeBoolean:LYRA_DEFAULT_fieldMustBeBoolean,fieldMustBeInteger:LYRA_DEFAULT_fieldMustBeInteger,fieldMustBeNumber:LYRA_DEFAULT_fieldMustBeNumber,fieldMustBeOneOf:LYRA_DEFAULT_fieldMustBeOneOf,fieldMustBeString:LYRA_DEFAULT_fieldMustBeString,fieldMustEqual:LYRA_DEFAULT_fieldMustEqual,fieldRequired:LYRA_DEFAULT_fieldRequired,noData:LYRA_DEFAULT_noData,schemaMustBeObject:LYRA_DEFAULT_schemaMustBeObject,schemaPropertiesMustBeFlat:LYRA_DEFAULT_schemaPropertiesMustBeFlat,toolParamBooleanFalse:LYRA_DEFAULT_toolParamBooleanFalse,toolParamBooleanTrue:LYRA_DEFAULT_toolParamBooleanTrue,toolParamBooleanUnset:LYRA_DEFAULT_toolParamBooleanUnset,toolParamMissingProperty:LYRA_DEFAULT_toolParamMissingProperty,toolParamSchemaLimit:LYRA_DEFAULT_toolParamSchemaLimit,unsupportedFieldType:LYRA_DEFAULT_unsupportedFieldType,valueMustBeSerializable:LYRA_DEFAULT_valueMustBeSerializable}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-validity-change","lr-input"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},schema:{attribute:!1,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}constructor(){super(),this._errors={},this._formError="",this.showFormError=!1,this.touchedFields=new Set,this.baseId=nextId("tool-param-form"),this._fieldsetDisabled=!1,this._name="",this._schema=EMPTY_SCHEMA,this.schemaInputShapeError="",this.schemaInputExceededLimits=!1,this._value=Object.freeze({}),this.valueInputInvalid=!1,this.valueInputTruncated=!1,this.defaultValueSnapshot=Object.freeze({}),this.defaultValueCaptured=!1,this._effectiveValue=Object.freeze({}),this._validityFlags={},this._disabled=!1,this.hasInteracted=!1,this.visibleErrorSnapshot=new Map,this.suppressNextErrorAnnouncement=!0,this.stopNestedControlEvent=e=>{e.stopPropagation()},this.onFieldFocus=()=>{this.emit("focus")},this.onFieldBlur=()=>{this.emit("blur")},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}[VALIDITY_ANCHOR](){const field=this.firstInvalidField();if(field){const input=field.querySelector("input.control");if(input)return input;for(const child of field.children){const anchor=resolveValidityAnchor(child);if(anchor)return anchor}}return this.firstMissingPropertyError()}firstInvalidField(){if(!this.renderRoot)return;const fields=Array.from(this.renderRoot.querySelectorAll('[part="field"]'));for(const key of Object.keys(this._errors)){const field=fields.find(candidate=>candidate.dataset.key===key);if(field)return field}}get missingRequiredKeys(){const properties=this.schemaProperties;return this.requiredKeys.filter(key=>!Object.prototype.hasOwnProperty.call(properties,key)&&!!this._errors[key])}firstMissingPropertyError(){if(!this.renderRoot)return;const errors=Array.from(this.renderRoot.querySelectorAll('[part="error"][data-missing-property]'));for(const key of Object.keys(this._errors)){const error=errors.find(candidate=>candidate.dataset.key===key);if(error)return error}}focusFirstControl(){if(!this.renderRoot)return;const controls=this.renderRoot.querySelectorAll("input.control, lr-select");for(const control of controls)if(!(control.disabled||control.getAttribute("aria-disabled")==="true")){control.focus();return}}click(){this.effectiveDisabled||this.focusFirstControl()}connectedCallback(){this.defaultValueCaptured||(this.defaultValueSnapshot=cloneFormValue(this._value,this.ownerDocument.defaultView),this.defaultValueCaptured=!0),super.connectedCallback(),this.errorAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})),this.hasUpdated&&(this.suppressNextErrorAnnouncement=!0,this.requestUpdate()),this.syncFormState()}disconnectedCallback(){super.disconnectedCallback(),this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.suppressNextErrorAnnouncement=!0}get effectiveValue(){return snapshotFormValue(this._effectiveValue).value}get schemaProperties(){return this._schema.properties}get requiredKeys(){return this._schema.required??Object.freeze([])}resolveEffectiveValue(){const props=this.schemaProperties,out={...this.value};for(const[key,prop]of Object.entries(props))!Object.prototype.hasOwnProperty.call(this.value,key)&&prop.default!==void 0&&Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:prop.default});return snapshotFormValue(out).value}get schema(){return this._schema}set schema(next){const old=this._schema,snapshot=snapshotSchema(next);this._schema=snapshot.schema,this.schemaInputShapeError=snapshot.shapeError,this.schemaInputExceededLimits=snapshot.exceededLimits,this.syncFormState(),this.requestUpdate("schema",old)}get value(){return this._value}set value(next){const old=this._value,snapshot=snapshotFormValue(next);this._value=snapshot.value,this.valueInputInvalid=snapshot.invalid,this.valueInputTruncated=snapshot.truncated,this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.applyValidity(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&(this.validityController.customValidityMessage||this._formError)&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}get formError(){return this._formError}computeValidation(effective){const props=this.schemaProperties,required=new Set(this.requiredKeys),out={},flags={},addError=(key,message)=>{Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:message})};for(const[key,prop]of Object.entries(props)){const type=prop?.type;if(type!=="string"&&type!=="number"&&type!=="integer"&&type!=="boolean"){addError(key,this.localize("unsupportedFieldType",void 0,{type:String(type)})),flags.customError=!0;continue}if(!(Object.prototype.hasOwnProperty.call(effective,key)&&effective[key]!==void 0)){required.has(key)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);continue}const v=effective[key];if(type==="string"&&typeof v!="string"){addError(key,this.localize("fieldMustBeString")),flags.typeMismatch=!0;continue}if(type==="number"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeNumber")),flags.typeMismatch=!0;continue}if(type==="integer"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeInteger")),flags.typeMismatch=!0;continue}if(type==="integer"&&!Number.isInteger(v)){addError(key,this.localize("fieldMustBeInteger")),flags.stepMismatch=!0;continue}if(type==="boolean"&&typeof v!="boolean"){addError(key,this.localize("fieldMustBeBoolean")),flags.typeMismatch=!0;continue}if(type==="string"&&Array.isArray(prop.enum)&&!prop.enum.includes(v)){addError(key,this.localize("fieldMustBeOneOf",void 0,{values:getListFormat(this.effectiveLocale,{style:"long",type:"disjunction"}).format(prop.enum)})),flags.customError=!0;continue}prop.const!==void 0&&v!==prop.const&&(addError(key,this.localize("fieldMustEqual",void 0,{value:JSON.stringify(prop.const)})),flags.customError=!0)}for(const key of required)Object.prototype.hasOwnProperty.call(props,key)||(!Object.prototype.hasOwnProperty.call(effective,key)||effective[key]===void 0)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);return{errors:out,flags}}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this._formError&&(this.showFormError=!0);const valid=this.internals.reportValidity();return!valid&&!this.firstInvalidField()&&this.missingRequiredKeys.length>0&&this.updateComplete.then(()=>{const error=this.firstMissingPropertyError();this.validityController.refreshAnchor(),error?.focus()}),valid}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot()}formResetCallback(){this.hasInteracted=!1,this.value=cloneFormValue(this.defaultValueSnapshot,this.ownerDocument.defaultView),this.touchedFields=new Set,this.showFormError=!1}formStateRestoreCallback(state2,_mode){let restored={};if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=parsed)}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.applyValidity(),this.requestUpdate()}schemaShapeError(){return this.schemaInputShapeError==="object"?this.localize("schemaMustBeObject"):this.schemaInputShapeError==="properties"?this.localize("schemaPropertiesMustBeFlat"):this.schemaInputExceededLimits?this.localize("toolParamSchemaLimit",void 0,{fields:getNumberFormat(this.effectiveLocale).format(MAX_SCHEMA_FIELDS),options:getNumberFormat(this.effectiveLocale).format(MAX_ENUM_OPTIONS)}):""}serializeEffectiveValue(effective){const serialized=JSON.stringify(effective,(_key,value)=>{if(typeof value=="number"&&!Number.isFinite(value))throw new TypeError("Non-finite numbers are not JSON values.");return value});if(typeof serialized!="string")throw new TypeError("Value did not serialize to JSON.");return serialized}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncInternals(formValue){this.internals.setFormValue(formValue,formValue),this.applyValidity()}applyValidity(){if(this.validityController){if(this.barredFromValidation||Object.keys(this._validityFlags).length===0)this.validityController.setValidity({});else{const firstMessage=Object.values(this._errors)[0]??this._formError;this.validityController.setValidity(this._validityFlags,firstMessage)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}}syncValidityCustomStates(){syncValidityStates(this.internals,{required:this.requiredKeys.length>0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}syncFormState(){let effective=Object.freeze({}),errors={},flags={},formError="",formValue=null;try{if(formError=this.schemaShapeError(),this.valueInputInvalid||this.valueInputTruncated)throw new TypeError("The value could not be retained within the public snapshot boundary.");effective=this.resolveEffectiveValue();const validation=this.computeValidation(effective);errors=validation.errors,flags=validation.flags,formValue=this.serializeEffectiveValue(effective)}catch{formError=this.localize("valueMustBeSerializable"),formValue=null}formError&&(flags.customError=!0,formValue=null),this._effectiveValue=effective,JSON.stringify(this._errors)!==JSON.stringify(errors)&&(this._errors=errors),this._formError=formError,this._validityFlags=flags,this.syncInternals(formValue)}updated(changed){if(super.updated(changed),this.publishValiditySnapshot(),changed.has("value")||changed.has("schema")||changed.has("_errors")||changed.has("_formError")){const nestedUpdates=Array.from(this.firstInvalidField()?.children??[]).filter(element=>typeof element[VALIDITY_ANCHOR]=="function").map(element=>element.updateComplete).filter(update=>update!==void 0);nestedUpdates.length>0&&Promise.all(nestedUpdates).then(()=>this.validityController.refreshAnchor())}const currentErrors=new Map;for(const node of this.renderRoot.querySelectorAll('[part="error"]')){const fieldKey=node.closest('[part~="field"]')?.dataset.key,key=node.dataset.key??fieldKey??"form",text=node.textContent?.trim()??"";text&&currentErrors.set(key,text)}if(!this.suppressNextErrorAnnouncement){const freshMessages=[];for(const[key,text]of currentErrors)this.visibleErrorSnapshot.get(key)!==text&&!freshMessages.includes(text)&&freshMessages.push(text);freshMessages.length>0&&this.errorAnnouncementSink?.announce(freshMessages.join(" "))}this.visibleErrorSnapshot=currentErrors,this.suppressNextErrorAnnouncement=!1}setFieldValue(key,val){this.effectiveDisabled||(this.hasInteracted=!0,this.value={...this.value,[key]:val},this.emit("lr-input",{value:this.effectiveValue}))}markTouched(key){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(key)&&(this.touchedFields=new Set(this.touchedFields).add(key))}onTextInput(key,e){this.setFieldValue(key,e.target.value)}onNumberInput(key,e){const n=e.target.valueAsNumber;this.setFieldValue(key,Number.isNaN(n)?void 0:n)}onSelectChange(key,e){e.stopPropagation(),this.setFieldValue(key,e.target.value)}onBooleanSelectChange(key,e){e.stopPropagation();const value=e.target.value;if(value===""){if(this.effectiveDisabled)return;this.hasInteracted=!0;const next={...this.value};Reflect.deleteProperty(next,key),this.value=next,this.emit("lr-input",{value:this.effectiveValue});return}this.setFieldValue(key,value==="true")}renderControl(key,prop,fieldId,label,required,describedBy,errorMessage,effective){if(prop.type==="string"&&prop.enum&&prop.enum.length>0)return html`<lr-select
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{installFormControlLabelSupport}from"../../../internal/form-control-labels.js";installFormControlLabelSupport();import{nextId}from"../../../internal/a11y.js";import{AnchoredValidityController,resolveValidityAnchor,VALIDITY_ANCHOR}from"../../../internal/anchored-validity.js";import{syncValidityStates}from"../../../internal/custom-states.js";import{styles}from"./tool-param-form.styles.js";import"../../forms/select/select.class.js";import"../../forms/combobox/option.class.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{attachInternalsSafely,getFormOwner,installCustomErrorProperty,isBarredFromValidation,setFormOwner}from"../../../internal/form-associated.js";import{installInvalidEventAlias}from"../../../internal/invalid-event-alias.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{LYRA_DEFAULT_fieldMustBeBoolean,LYRA_DEFAULT_fieldMustBeInteger,LYRA_DEFAULT_fieldMustBeNumber,LYRA_DEFAULT_fieldMustBeOneOf,LYRA_DEFAULT_fieldMustBeString,LYRA_DEFAULT_fieldMustEqual,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_noData,LYRA_DEFAULT_schemaMustBeObject,LYRA_DEFAULT_schemaPropertiesMustBeFlat,LYRA_DEFAULT_toolParamBooleanFalse,LYRA_DEFAULT_toolParamBooleanTrue,LYRA_DEFAULT_toolParamBooleanUnset,LYRA_DEFAULT_toolParamMissingProperty,LYRA_DEFAULT_toolParamSchemaLimit,LYRA_DEFAULT_unsupportedFieldType,LYRA_DEFAULT_valueMustBeSerializable}from"../../../internal/default-strings.generated.js";const MAX_SCHEMA_FIELDS=100,MAX_ENUM_OPTIONS=500,MAX_VALUE_ENTRIES=1e4,MAX_VALUE_NODES=5e4,MAX_VALUE_INSPECTIONS=MAX_VALUE_NODES*2,MAX_VALUE_DEPTH=16,OMIT_VALUE=Symbol("omit-tool-param-value"),LIMIT_VALUE=Symbol("limit-tool-param-value"),FUNCTION_TO_STRING=Function.prototype.toString,OBJECT_CONSTRUCTOR_SOURCE=FUNCTION_TO_STRING.call(Object);function isPlainRecord(value){try{const prototype=Object.getPrototypeOf(value);if(prototype===null)return!0;if(Object.getPrototypeOf(prototype)!==null)return!1;const constructorDescriptor=Object.getOwnPropertyDescriptor(prototype,"constructor");if(!constructorDescriptor||!("value"in constructorDescriptor)||typeof constructorDescriptor.value!="function")return!1;const constructor=constructorDescriptor.value,constructorPrototype=Object.getOwnPropertyDescriptor(constructor,"prototype");return!!(constructorPrototype&&"value"in constructorPrototype&&constructorPrototype.value===prototype&&FUNCTION_TO_STRING.call(constructor)===OBJECT_CONSTRUCTOR_SOURCE)}catch{return!1}}function checkpointSnapshot(budget){return{remaining:budget.remaining,seenEntries:budget.seenEntries.length,truncated:budget.truncated}}function restoreSnapshotCheckpoint(budget,checkpoint){for(budget.remaining=checkpoint.remaining,budget.truncated=checkpoint.truncated;budget.seenEntries.length>checkpoint.seenEntries;){const source=budget.seenEntries.pop();source&&budget.seen.delete(source)}}function rememberSnapshot(budget,source,output){budget.seen.set(source,output),budget.seenEntries.push(source)}function omitInvalidValue(budget,checkpoint){return restoreSnapshotCheckpoint(budget,checkpoint),budget.invalid=!0,OMIT_VALUE}function snapshotValueEntry(value,budget,depth){if(value===null||typeof value!="object"&&typeof value!="function")return value;const checkpoint=checkpointSnapshot(budget);if(typeof value=="function")return omitInvalidValue(budget,checkpoint);if(depth>MAX_VALUE_DEPTH||budget.remaining<=0)return budget.truncated=!0,LIMIT_VALUE;const existing=budget.seen.get(value);if(existing!==void 0)return existing;let isArray=!1;try{isArray=Array.isArray(value)}catch{return omitInvalidValue(budget,checkpoint)}if(isArray){if(budget.remainingInspections<=0)return budget.truncated=!0,LIMIT_VALUE;budget.remainingInspections-=1;const output2=[];rememberSnapshot(budget,value,output2);let sourceLength=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");if(descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0)sourceLength=descriptor.value;else return omitInvalidValue(budget,checkpoint)}catch{return omitInvalidValue(budget,checkpoint)}sourceLength>MAX_VALUE_ENTRIES&&(budget.truncated=!0);const length=Math.min(sourceLength,MAX_VALUE_ENTRIES);let outputLength=length;for(let index=0;index<length;index+=1){if(budget.remaining<=0||budget.remainingInspections<=0){budget.truncated=!0,outputLength=index;break}budget.remainingInspections-=1;let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{budget.invalid=!0;continue}if(!descriptor)continue;if(!("value"in descriptor)){budget.invalid=!0;continue}const entryCheckpoint=checkpointSnapshot(budget);budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);if(entry===OMIT_VALUE){restoreSnapshotCheckpoint(budget,entryCheckpoint);continue}if(entry===LIMIT_VALUE){outputLength=index;break}Object.defineProperty(output2,String(index),{value:entry,enumerable:!0,configurable:!1,writable:!1})}return output2.length=outputLength,Object.freeze(output2)}if(!isPlainRecord(value))return omitInvalidValue(budget,checkpoint);const output={};rememberSnapshot(budget,value,output);let retained=0;try{for(const key in value){if(retained>=MAX_VALUE_ENTRIES||budget.remaining<=0||budget.remainingInspections<=0){budget.truncated=!0;break}budget.remainingInspections-=1;const descriptor=Object.getOwnPropertyDescriptor(value,key);if(!descriptor||!descriptor.enumerable)continue;if(!("value"in descriptor)){budget.invalid=!0;continue}const entryCheckpoint=checkpointSnapshot(budget);budget.remaining-=1;const entry=snapshotValueEntry(descriptor.value,budget,depth+1);if(entry===OMIT_VALUE){restoreSnapshotCheckpoint(budget,entryCheckpoint);continue}if(entry===LIMIT_VALUE)break;retained+=1,Object.defineProperty(output,key,{value:entry,enumerable:!0,configurable:!1,writable:!1})}}catch{return omitInvalidValue(budget,checkpoint)}return Object.freeze(output)}function snapshotFormValue(value){if(value==null)return{value:Object.freeze({}),invalid:!1,truncated:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{value:Object.freeze({}),invalid:!0,truncated:!1}}if(typeof value!="object"||isArray||!isPlainRecord(value))return{value:Object.freeze({}),invalid:!0,truncated:!1};const budget={remaining:MAX_VALUE_NODES,remainingInspections:MAX_VALUE_INSPECTIONS,seen:new WeakMap,seenEntries:[],invalid:!1,truncated:!1},snapshot=snapshotValueEntry(value,budget,0);return{value:snapshot===OMIT_VALUE||snapshot===LIMIT_VALUE?Object.freeze({}):snapshot,invalid:budget.invalid||snapshot===OMIT_VALUE,truncated:budget.truncated||snapshot===LIMIT_VALUE}}const EMPTY_SCHEMA=Object.freeze({type:"object",properties:Object.freeze({})});function snapshotSchemaStringArray(value){let isArray=!1;try{isArray=Array.isArray(value)}catch{return{isArray:!1,exceededLimit:!1}}if(!isArray)return{isArray:!1,exceededLimit:!1};let sourceLength=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");descriptor&&"value"in descriptor&&typeof descriptor.value=="number"&&Number.isSafeInteger(descriptor.value)&&descriptor.value>=0&&(sourceLength=descriptor.value)}catch{return{isArray:!0,value:Object.freeze([]),exceededLimit:!1}}const output=[];for(let index=0;index<Math.min(sourceLength,MAX_SCHEMA_FIELDS);index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{continue}descriptor&&"value"in descriptor&&typeof descriptor.value=="string"&&output.push(descriptor.value)}return{isArray:!0,value:Object.freeze(output),exceededLimit:sourceLength>MAX_SCHEMA_FIELDS}}function snapshotSchemaEnum(value){let isArray=!1;try{isArray=Array.isArray(value)}catch{return{malformed:!0,exceededLimit:!1}}if(!isArray)return{malformed:!0,exceededLimit:!1};let sourceLength=0;try{const descriptor=Object.getOwnPropertyDescriptor(value,"length");if(!descriptor||!("value"in descriptor)||typeof descriptor.value!="number"||!Number.isSafeInteger(descriptor.value)||descriptor.value<0)return{malformed:!0,exceededLimit:!1};sourceLength=descriptor.value}catch{return{malformed:!0,exceededLimit:!1}}const output=[];for(let index=0;index<Math.min(sourceLength,MAX_ENUM_OPTIONS);index+=1){let descriptor;try{descriptor=Object.getOwnPropertyDescriptor(value,String(index))}catch{return{malformed:!0,exceededLimit:sourceLength>MAX_ENUM_OPTIONS}}if(descriptor){if(!("value"in descriptor)||typeof descriptor.value!="string")return{malformed:!0,exceededLimit:sourceLength>MAX_ENUM_OPTIONS};output.push(descriptor.value)}}return{value:Object.freeze(output),malformed:!1,exceededLimit:sourceLength>MAX_ENUM_OPTIONS}}function snapshotSchemaProperty(value){let descriptors;try{descriptors=Object.getOwnPropertyDescriptors(value)}catch{return{malformed:!0,exceededLimit:!1}}const withoutEnum={};let enumDescriptor;for(const key of Reflect.ownKeys(descriptors)){const descriptor=descriptors[key];if(descriptor?.enumerable){if(key==="enum"){enumDescriptor=descriptor;continue}if(!("value"in descriptor))return{malformed:!0,exceededLimit:!1};Object.defineProperty(withoutEnum,key,{value:descriptor.value,enumerable:!0,configurable:!1,writable:!1})}}const propertySnapshot=snapshotFormValue(withoutEnum);if(propertySnapshot.invalid||propertySnapshot.truncated)return{malformed:!0,exceededLimit:!1};let choices,exceededLimit=!1,hasEnum=!1;if(enumDescriptor){if(!("value"in enumDescriptor))return{malformed:!0,exceededLimit:!1};if(hasEnum=!0,enumDescriptor.value!==void 0){const enumSnapshot=snapshotSchemaEnum(enumDescriptor.value);if(enumSnapshot.malformed)return{malformed:!0,exceededLimit:enumSnapshot.exceededLimit};choices=enumSnapshot.value,exceededLimit=enumSnapshot.exceededLimit}}const output={};for(const key of Reflect.ownKeys(propertySnapshot.value)){const descriptor=Object.getOwnPropertyDescriptor(propertySnapshot.value,key);!descriptor?.enumerable||!("value"in descriptor)||Object.defineProperty(output,key,{value:descriptor.value,enumerable:!0,configurable:!1,writable:!1})}return hasEnum&&Object.defineProperty(output,"enum",{value:choices,enumerable:!0,configurable:!1,writable:!1}),{value:Object.freeze(output),malformed:!1,exceededLimit}}function snapshotSchema(value){if(value==null)return{schema:EMPTY_SCHEMA,shapeError:"",exceededLimits:!1};let isArray=!1;try{isArray=Array.isArray(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}if(typeof value!="object"||isArray)return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};let rootDescriptors;try{rootDescriptors=Object.getOwnPropertyDescriptors(value)}catch{return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1}}const typeDescriptor=rootDescriptors.type;if(!typeDescriptor||!("value"in typeDescriptor)||typeDescriptor.value!=="object")return{schema:EMPTY_SCHEMA,shapeError:"object",exceededLimits:!1};const propertiesDescriptor=rootDescriptors.properties,propertiesValue=propertiesDescriptor&&"value"in propertiesDescriptor?propertiesDescriptor.value:void 0;if(propertiesValue===null||typeof propertiesValue!="object"||!isPlainRecord(propertiesValue))return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1};const properties=Object.create(null);let shapeError="",exceededLimits=!1,seenFields=0,propertyDescriptors;try{propertyDescriptors=Object.getOwnPropertyDescriptors(propertiesValue)}catch{return{schema:EMPTY_SCHEMA,shapeError:"properties",exceededLimits:!1}}for(const key of Reflect.ownKeys(propertyDescriptors)){const descriptor=propertyDescriptors[key];if(typeof key!="string"||!descriptor?.enumerable)continue;if(seenFields+=1,seenFields>MAX_SCHEMA_FIELDS){exceededLimits=!0;break}if(!("value"in descriptor)||descriptor.value===null||typeof descriptor.value!="object"||!isPlainRecord(descriptor.value)){shapeError="properties";continue}const propertySnapshot=snapshotSchemaProperty(descriptor.value);if(propertySnapshot.malformed||!propertySnapshot.value){shapeError="properties",propertySnapshot.exceededLimit&&(exceededLimits=!0);continue}propertySnapshot.exceededLimit&&(exceededLimits=!0),properties[key]=propertySnapshot.value}const requiredDescriptor=rootDescriptors.required;let required;if(requiredDescriptor&&"value"in requiredDescriptor){const requiredSnapshot=snapshotSchemaStringArray(requiredDescriptor.value);requiredSnapshot.isArray?(required=requiredSnapshot.value,requiredSnapshot.exceededLimit&&(exceededLimits=!0)):requiredDescriptor.enumerable&&(shapeError="properties")}else requiredDescriptor?.enumerable&&(shapeError="properties");return{schema:Object.freeze({type:"object",properties:Object.freeze(properties),...required===void 0?{}:{required}}),shapeError,exceededLimits}}function cloneFormValue(value,_ownerWindow){return snapshotFormValue(value).value}class LyraToolParamForm extends LyraElement{static{this.defaultStrings={...super.defaultStrings,fieldMustBeBoolean:LYRA_DEFAULT_fieldMustBeBoolean,fieldMustBeInteger:LYRA_DEFAULT_fieldMustBeInteger,fieldMustBeNumber:LYRA_DEFAULT_fieldMustBeNumber,fieldMustBeOneOf:LYRA_DEFAULT_fieldMustBeOneOf,fieldMustBeString:LYRA_DEFAULT_fieldMustBeString,fieldMustEqual:LYRA_DEFAULT_fieldMustEqual,fieldRequired:LYRA_DEFAULT_fieldRequired,noData:LYRA_DEFAULT_noData,schemaMustBeObject:LYRA_DEFAULT_schemaMustBeObject,schemaPropertiesMustBeFlat:LYRA_DEFAULT_schemaPropertiesMustBeFlat,toolParamBooleanFalse:LYRA_DEFAULT_toolParamBooleanFalse,toolParamBooleanTrue:LYRA_DEFAULT_toolParamBooleanTrue,toolParamBooleanUnset:LYRA_DEFAULT_toolParamBooleanUnset,toolParamMissingProperty:LYRA_DEFAULT_toolParamMissingProperty,toolParamSchemaLimit:LYRA_DEFAULT_toolParamSchemaLimit,unsupportedFieldType:LYRA_DEFAULT_unsupportedFieldType,valueMustBeSerializable:LYRA_DEFAULT_valueMustBeSerializable}}static{this.formAssociated=!0}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-validity-change","lr-input"])}static{this.properties={customError:{attribute:"custom-error",reflect:!0,noAccessor:!0},name:{reflect:!0,noAccessor:!0},schema:{attribute:!1,noAccessor:!0},value:{attribute:!1,noAccessor:!0},disabled:{type:Boolean,reflect:!0,noAccessor:!0}}}constructor(){super(),this._errors={},this._formError="",this.showFormError=!1,this.touchedFields=new Set,this.baseId=nextId("tool-param-form"),this._fieldsetDisabled=!1,this._name="",this._schema=EMPTY_SCHEMA,this.schemaInputShapeError="",this.schemaInputExceededLimits=!1,this._value=Object.freeze({}),this.valueInputInvalid=!1,this.valueInputTruncated=!1,this.defaultValueSnapshot=Object.freeze({}),this.defaultValueCaptured=!1,this._effectiveValue=Object.freeze({}),this._validityFlags={},this._disabled=!1,this.hasInteracted=!1,this.visibleErrorSnapshot=new Map,this.suppressNextErrorAnnouncement=!0,this.stopNestedControlEvent=e=>{e.stopPropagation()},this.onFieldFocus=()=>{this.emit("focus")},this.onFieldBlur=()=>{this.emit("blur")},this.internals=attachInternalsSafely(this),this.validityController=new AnchoredValidityController(this,this.internals,()=>this[VALIDITY_ANCHOR]()),installCustomErrorProperty(this,()=>this.validityController.customValidityMessage),installInvalidEventAlias(this,init=>this.emit("lr-invalid",null,init)),this.syncFormState()}get form(){return getFormOwner(this.internals)}set form(owner){setFormOwner(this,owner)}getForm(){return getFormOwner(this.internals)}get labels(){return this.internals.labels}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}[VALIDITY_ANCHOR](){const field=this.firstInvalidField();if(field){const input=field.querySelector("input.control");if(input)return input;for(const child of field.children){const anchor=resolveValidityAnchor(child);if(anchor)return anchor}}return this.firstMissingPropertyError()}firstInvalidField(){if(!this.renderRoot)return;const fields=Array.from(this.renderRoot.querySelectorAll('[part="field"]'));for(const key of Object.keys(this._errors)){const field=fields.find(candidate=>candidate.dataset.key===key);if(field)return field}}get missingRequiredKeys(){const properties=this.schemaProperties;return this.requiredKeys.filter(key=>!Object.prototype.hasOwnProperty.call(properties,key)&&!!this._errors[key])}firstMissingPropertyError(){if(!this.renderRoot)return;const errors=Array.from(this.renderRoot.querySelectorAll('[part="error"][data-missing-property]'));for(const key of Object.keys(this._errors)){const error=errors.find(candidate=>candidate.dataset.key===key);if(error)return error}}focusFirstControl(){if(!this.renderRoot)return;const controls=this.renderRoot.querySelectorAll("input.control, lr-select");for(const control of controls)if(!(control.disabled||control.getAttribute("aria-disabled")==="true")){control.focus();return}}click(){this.effectiveDisabled||this.focusFirstControl()}connectedCallback(){this.defaultValueCaptured||(this.defaultValueSnapshot=cloneFormValue(this._value,this.ownerDocument.defaultView),this.defaultValueCaptured=!0),super.connectedCallback(),this.errorAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=acquireAnnouncementSink("assertive",{document:this.ownerDocument,source:this})),this.hasUpdated&&(this.suppressNextErrorAnnouncement=!0,this.requestUpdate()),this.syncFormState()}disconnectedCallback(){super.disconnectedCallback(),this.errorAnnouncementSink?.release(),this.errorAnnouncementSink=void 0,this.suppressNextErrorAnnouncement=!0}get effectiveValue(){return snapshotFormValue(this._effectiveValue).value}get schemaProperties(){return this._schema.properties}get requiredKeys(){return this._schema.required??Object.freeze([])}resolveEffectiveValue(){const props=this.schemaProperties,out={...this.value};for(const[key,prop]of Object.entries(props))!Object.prototype.hasOwnProperty.call(this.value,key)&&prop.default!==void 0&&Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:prop.default});return snapshotFormValue(out).value}get schema(){return this._schema}set schema(next){const old=this._schema,snapshot=snapshotSchema(next);this._schema=snapshot.schema,this.schemaInputShapeError=snapshot.shapeError,this.schemaInputExceededLimits=snapshot.exceededLimits,this.syncFormState(),this.requestUpdate("schema",old)}get value(){return this._value}set value(next){const old=this._value,snapshot=snapshotFormValue(next);this._value=snapshot.value,this.valueInputInvalid=snapshot.invalid,this.valueInputTruncated=snapshot.truncated,this.syncFormState(),this.requestUpdate("value",old)}get name(){return this._name}set name(next){const old=this._name;this._name=next??"",this._name?this.setAttribute("name",this._name):this.removeAttribute("name"),this.requestUpdate("name",old)}get disabled(){return this._disabled}set disabled(next){const old=this._disabled;this._disabled=!!next,this.toggleAttribute("disabled",this._disabled),this.applyValidity(),this.requestUpdate("disabled",old)}get effectiveDisabled(){return this.disabled||this._fieldsetDisabled}get errors(){return this.publicValidityErrors()}publicValidityErrors(){const errors={...this._errors};return this.willValidate&&(this.validityController.customValidityMessage||this._formError)&&(errors.base=this.validationMessage),Object.freeze(errors)}publishValiditySnapshot(){if(!this.isConnected)return;const valid=!this.willValidate||this.validity.valid,errors=valid?Object.freeze({}):this.publicValidityErrors(),key=JSON.stringify({valid,errors});key!==this.lastValidityKey&&(this.lastValidityKey=key,this.emit("lr-validity-change",Object.freeze({valid,errors})))}get formError(){return this._formError}computeValidation(effective){const props=this.schemaProperties,required=new Set(this.requiredKeys),out={},flags={},addError=(key,message)=>{Object.defineProperty(out,key,{configurable:!0,enumerable:!0,writable:!0,value:message})};for(const[key,prop]of Object.entries(props)){const type=prop?.type;if(type!=="string"&&type!=="number"&&type!=="integer"&&type!=="boolean"){addError(key,this.localize("unsupportedFieldType",void 0,{type:String(type)})),flags.customError=!0;continue}if(!(Object.prototype.hasOwnProperty.call(effective,key)&&effective[key]!==void 0)){required.has(key)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);continue}const v=effective[key];if(type==="string"&&typeof v!="string"){addError(key,this.localize("fieldMustBeString")),flags.typeMismatch=!0;continue}if(type==="number"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeNumber")),flags.typeMismatch=!0;continue}if(type==="integer"&&(typeof v!="number"||!Number.isFinite(v))){addError(key,this.localize("fieldMustBeInteger")),flags.typeMismatch=!0;continue}if(type==="integer"&&!Number.isInteger(v)){addError(key,this.localize("fieldMustBeInteger")),flags.stepMismatch=!0;continue}if(type==="boolean"&&typeof v!="boolean"){addError(key,this.localize("fieldMustBeBoolean")),flags.typeMismatch=!0;continue}if(type==="string"&&Array.isArray(prop.enum)&&!prop.enum.includes(v)){addError(key,this.localize("fieldMustBeOneOf",void 0,{values:getListFormat(this.effectiveLocale,{style:"long",type:"disjunction"}).format(prop.enum)})),flags.customError=!0;continue}prop.const!==void 0&&v!==prop.const&&(addError(key,this.localize("fieldMustEqual",void 0,{value:JSON.stringify(prop.const)})),flags.customError=!0)}for(const key of required)Object.prototype.hasOwnProperty.call(props,key)||(!Object.prototype.hasOwnProperty.call(effective,key)||effective[key]===void 0)&&(addError(key,this.localize("fieldRequired")),flags.valueMissing=!0);return{errors:out,flags}}checkValidity(){return this.syncFormState(),this.internals.checkValidity()}reportValidity(){this.hasInteracted=!0,this.syncFormState(),Object.keys(this._errors).length>0&&(this.touchedFields=new Set([...this.touchedFields,...Object.keys(this._errors)])),this._formError&&(this.showFormError=!0),this.requestUpdate();const valid=this.internals.reportValidity();return!valid&&!this.firstInvalidField()&&this.missingRequiredKeys.length>0&&this.updateComplete.then(()=>{const error=this.firstMissingPropertyError();this.validityController.refreshAnchor(),error?.focus()}),valid}setCustomValidity(message){this.validityController.setCustomValidity(message??""),this.syncValidityCustomStates(),this.publishValiditySnapshot(),this.requestUpdate()}formResetCallback(){this.hasInteracted=!1,this.value=cloneFormValue(this.defaultValueSnapshot,this.ownerDocument.defaultView),this.touchedFields=new Set,this.showFormError=!1}formStateRestoreCallback(state2,_mode){let restored={};if(typeof state2=="string")try{const parsed=JSON.parse(state2);parsed!==null&&typeof parsed=="object"&&!Array.isArray(parsed)&&(restored=parsed)}catch{}this.value=restored}formDisabledCallback(disabled){this._fieldsetDisabled=disabled,this.applyValidity(),this.requestUpdate()}schemaShapeError(){return this.schemaInputShapeError==="object"?this.localize("schemaMustBeObject"):this.schemaInputShapeError==="properties"?this.localize("schemaPropertiesMustBeFlat"):this.schemaInputExceededLimits?this.localize("toolParamSchemaLimit",void 0,{fields:getNumberFormat(this.effectiveLocale).format(MAX_SCHEMA_FIELDS),options:getNumberFormat(this.effectiveLocale).format(MAX_ENUM_OPTIONS)}):""}serializeEffectiveValue(effective){const serialized=JSON.stringify(effective,(_key,value)=>{if(typeof value=="number"&&!Number.isFinite(value))throw new TypeError("Non-finite numbers are not JSON values.");return value});if(typeof serialized!="string")throw new TypeError("Value did not serialize to JSON.");return serialized}get barredFromValidation(){return isBarredFromValidation(this,this.internals)}syncInternals(formValue){this.internals.setFormValue(formValue,formValue),this.applyValidity()}applyValidity(){if(this.validityController){if(this.barredFromValidation||Object.keys(this._validityFlags).length===0)this.validityController.setValidity({});else{const firstMessage=Object.values(this._errors)[0]??this._formError;this.validityController.setValidity(this._validityFlags,firstMessage)}this.syncValidityCustomStates(),this.publishValiditySnapshot()}}syncValidityCustomStates(){syncValidityStates(this.internals,{required:this.requiredKeys.length>0,hasInteracted:this.hasInteracted,barred:this.barredFromValidation})}syncFormState(){let effective=Object.freeze({}),errors={},flags={},formError="",formValue=null;try{if(formError=this.schemaShapeError(),this.valueInputInvalid||this.valueInputTruncated)throw new TypeError("The value could not be retained within the public snapshot boundary.");effective=this.resolveEffectiveValue();const validation=this.computeValidation(effective);errors=validation.errors,flags=validation.flags,formValue=this.serializeEffectiveValue(effective)}catch{formError=this.localize("valueMustBeSerializable"),formValue=null}formError&&(flags.customError=!0,formValue=null),this._effectiveValue=effective,JSON.stringify(this._errors)!==JSON.stringify(errors)&&(this._errors=errors),this._formError=formError,this._validityFlags=flags,this.syncInternals(formValue)}updated(changed){if(super.updated(changed),this.publishValiditySnapshot(),changed.has("value")||changed.has("schema")||changed.has("_errors")||changed.has("_formError")){const nestedUpdates=Array.from(this.firstInvalidField()?.children??[]).filter(element=>typeof element[VALIDITY_ANCHOR]=="function").map(element=>element.updateComplete).filter(update=>update!==void 0);nestedUpdates.length>0&&Promise.all(nestedUpdates).then(()=>this.validityController.refreshAnchor())}const currentErrors=new Map;for(const node of this.renderRoot.querySelectorAll('[part="error"]')){const fieldKey=node.closest('[part~="field"]')?.dataset.key,key=node.dataset.key??fieldKey??"form",text=node.textContent?.trim()??"";text&&currentErrors.set(key,text)}if(!this.suppressNextErrorAnnouncement){const freshMessages=[];for(const[key,text]of currentErrors)this.visibleErrorSnapshot.get(key)!==text&&!freshMessages.includes(text)&&freshMessages.push(text);freshMessages.length>0&&this.errorAnnouncementSink?.announce(freshMessages.join(" "))}this.visibleErrorSnapshot=currentErrors,this.suppressNextErrorAnnouncement=!1}setFieldValue(key,val){this.effectiveDisabled||(this.hasInteracted=!0,this.value={...this.value,[key]:val},this.emit("lr-input",{value:this.effectiveValue}))}markTouched(key){this.hasInteracted=!0,this.syncValidityCustomStates(),!this.touchedFields.has(key)&&(this.touchedFields=new Set(this.touchedFields).add(key))}onTextInput(key,e){this.setFieldValue(key,e.target.value)}onNumberInput(key,e){const n=e.target.valueAsNumber;this.setFieldValue(key,Number.isNaN(n)?void 0:n)}onSelectChange(key,e){e.stopPropagation(),this.setFieldValue(key,e.target.value)}onBooleanSelectChange(key,e){e.stopPropagation();const value=e.target.value;if(value===""){if(this.effectiveDisabled)return;if(this.hasInteracted=!0,this.schemaProperties[key]?.default!==void 0)this.value={...this.value,[key]:void 0};else{const next={...this.value};Reflect.deleteProperty(next,key),this.value=next}this.emit("lr-input",{value:this.effectiveValue});return}this.setFieldValue(key,value==="true")}renderControl(key,prop,fieldId,label,required,describedBy,errorMessage,effective){if(prop.type==="string"&&prop.enum&&prop.enum.length>0)return html`<lr-select
2
2
  id=${fieldId}
3
3
  .label=${label}
4
4
  .hint=${prop.description??""}
@@ -78,10 +78,11 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
78
78
  ${prop.description&&!isComposedSelect?html`<p part="description" id=${descId}>${prop.description}</p>`:nothing}
79
79
  ${hasError&&!isComposedSelect?html`<p part="error" id=${errId}>${this._errors[key]}</p>`:nothing}
80
80
  </div>
81
- `}render(){const props=this.schemaProperties,entries=Object.entries(props),missingRequiredKeys=this.missingRequiredKeys.filter(key=>this.touchedFields.has(key)),hostLabel=this.getAttribute("aria-label");return html`<div
81
+ `}render(){const props=this.schemaProperties,entries=Object.entries(props),missingRequiredKeys=this.missingRequiredKeys.filter(key=>this.touchedFields.has(key)),hostLabel=this.getAttribute("aria-label"),groupInvalid=this.hasInteracted&&!this.barredFromValidation&&!this.internals.validity.valid;return html`<div
82
82
  part="base"
83
83
  role="group"
84
84
  aria-label=${hostLabel??nothing}
85
+ aria-invalid=${groupInvalid?"true":"false"}
85
86
  >
86
87
  ${entries.length===0?html`<p part="empty">${this.localize("noData")}</p>`:entries.map(([key,prop],i)=>this.renderField(key,prop,i))}
87
88
  ${missingRequiredKeys.map(key=>html`<p
@@ -1 +1 @@
1
- export*from'./tool-param-form.class.js';import'../../forms/checkbox/checkbox.js';import'../../forms/combobox/option.js';import'../../forms/select/select.js';
1
+ export*from'./tool-param-form.class.js';import'../../forms/select/select.js';
@@ -1 +1 @@
1
- export*from"./tool-param-form.class.js";import{LyraToolParamForm}from"./tool-param-form.class.js";import{defineElement}from"../../../internal/prefix.js";import"../../forms/checkbox/checkbox.js";import"../../forms/combobox/option.js";import"../../forms/select/select.js";defineElement("tool-param-form",LyraToolParamForm);
1
+ export*from"./tool-param-form.class.js";import{LyraToolParamForm}from"./tool-param-form.class.js";import{defineElement}from"../../../internal/prefix.js";import"../../forms/select/select.js";defineElement("tool-param-form",LyraToolParamForm);
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{hostAriaLabel,nextId}from"../../../internal/a11y.js";import{closeIcon,expandIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{styles}from"./tool-result-dialog.styles.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_maximize,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function icon(paths){return svg`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{nextId}from"../../../internal/a11y.js";import{closeIcon,expandIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{styles}from"./tool-result-dialog.styles.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_maximize,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function icon(paths){return svg`
2
2
  <svg
3
3
  width="1em"
4
4
  height="1em"
@@ -20,7 +20,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
20
20
  <circle cx="12" cy="12" r="9"></circle>
21
21
  <line x1="9" y1="9" x2="15" y2="15"></line>
22
22
  <line x1="15" y1="9" x2="9" y2="15"></line>
23
- `)}function deniedIcon(){return icon(svg`<circle cx="12" cy="12" r="9"></circle><line x1="6" y1="18" x2="18" y2="6"></line>`)}const STATUS_ICON={pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon,denied:deniedIcon},STATUS_LABEL={pending:"Pending",running:"Running",success:"Success",error:"Error",denied:"Denied"},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"},STATUS_VALUES=new Set(Object.keys(STATUS_LABEL)),statusConverter={fromAttribute(value){return value!==null&&STATUS_VALUES.has(value)?value:"pending"},toAttribute(value){return value}};class LyraToolResultDialog extends LyraElement{constructor(){super(...arguments),this.open=!1,this.lightDismiss=!1,this.accessibleLabel=null,this.toolName="",this.status="pending",this.maximized=!1,this.hasFooterSlot=!1,this.titleId=nextId("tool-result-dialog-title"),this.onFooterSlotChange=e=>{this.hasFooterSlot=e.target.assignedElements({flatten:!0}).length>0},this.onBackdropClick=()=>{this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{this.close("close-button")},this.toggleMaximized=()=>{this.maximized=!this.maximized,this.emit("lr-maximize-change",Object.freeze({maximized:this.maximized}))}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,maximize:LYRA_DEFAULT_maximize,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer")),changed.has("open")&&(this.open?this.activateOverlay():this.deactivateOverlay())}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.overlay?.focusInitial()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.open&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback(),this.overlay?.suspend()}close(reason="api"){this.open&&(this.open=!1,this.emit("lr-close",reason))}show(){this.open||(this.open=!0)}hide(reason="api"){this.close(reason)}activateOverlay(){this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>this.close("escape"),onBackdrop:()=>{this.lightDismiss&&this.close("backdrop")},lockScroll:!0,suspendWhenUnrendered:!0}))}deactivateOverlay(){this.overlay?.deactivate(),this.overlay=void 0}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}render(){const durationMs=this.safeDurationMs,panelLabel=hostAriaLabel(this)===null&&this.accessibleLabel?this.accessibleLabel:null;return html`
23
+ `)}function deniedIcon(){return icon(svg`<circle cx="12" cy="12" r="9"></circle><line x1="6" y1="18" x2="18" y2="6"></line>`)}const STATUS_ICON={pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon,denied:deniedIcon},STATUS_LABEL={pending:"Pending",running:"Running",success:"Success",error:"Error",denied:"Denied"},STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"},STATUS_VALUES=new Set(Object.keys(STATUS_LABEL)),statusConverter={fromAttribute(value){return value!==null&&STATUS_VALUES.has(value)?value:"pending"},toAttribute(value){return value}};class LyraToolResultDialog extends LyraElement{constructor(){super(...arguments),this.open=!1,this.lightDismiss=!1,this.accessibleLabel=null,this.toolName="",this.status="pending",this.maximized=!1,this.hasFooterSlot=!1,this.titleId=nextId("tool-result-dialog-title"),this.onFooterSlotChange=e=>{this.hasFooterSlot=e.target.assignedElements({flatten:!0}).length>0},this.onBackdropClick=()=>{this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{this.close("close-button")},this.toggleMaximized=()=>{this.maximized=!this.maximized,this.emit("lr-maximize-change",Object.freeze({maximized:this.maximized}))}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,maximize:LYRA_DEFAULT_maximize,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer")),changed.has("open")&&(this.open?this.activateOverlay():this.deactivateOverlay())}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.overlay?.focusInitial()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.open&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback(),this.overlay?.suspend()}close(reason="api"){this.open&&(this.open=!1,this.emit("lr-close",reason))}show(){this.open||(this.open=!0)}hide(reason="api"){this.close(reason)}activateOverlay(){this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>this.close("escape"),onBackdrop:()=>{this.lightDismiss&&this.close("backdrop")},lockScroll:!0,suspendWhenUnrendered:!0}))}deactivateOverlay(){this.overlay?.deactivate(),this.overlay=void 0}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}render(){const durationMs=this.safeDurationMs,panelLabel=!this.hasAttribute("aria-label")&&this.accessibleLabel?this.accessibleLabel:null;return html`
24
24
  <div part="backdrop" @click=${this.onBackdropClick}></div>
25
25
  <div
26
26
  part="panel"
@@ -1 +1 @@
1
- import{css}from"lit";const styles=css`:host{--_lr-tool-result-dialog-overlay-color:var(--lr-color-overlay);--_lr-tool-result-dialog-maximized-inset:max(var(--lr-space-l), var(--lr-safe-area-top)) max(var(--lr-space-l), var(--lr-safe-area-inline-end)) max(var(--lr-space-l), var(--lr-safe-area-bottom)) max(var(--lr-space-l), var(--lr-safe-area-inline-start));--_lr-tool-result-dialog-spin:var(--lr-transition-ambient);--_lr-tool-result-dialog-pending-color:var(--lr-color-text-quiet);--_lr-tool-result-dialog-pending-bg:transparent;--_lr-tool-result-dialog-running-color:var(--lr-color-brand);--_lr-tool-result-dialog-running-bg:var(--lr-color-brand-quiet);--_lr-tool-result-dialog-success-color:var(--lr-color-success);--_lr-tool-result-dialog-success-bg:var(--lr-color-success-quiet);--_lr-tool-result-dialog-error-color:var(--lr-color-danger);--_lr-tool-result-dialog-error-bg:var(--lr-color-danger-quiet);--_lr-tool-result-dialog-denied-color:var(--lr-color-warning);--_lr-tool-result-dialog-denied-bg:var(--lr-color-warning-quiet);z-index:var(--lr-overlay-stack-index,var(--lr-layer-modal));justify-content:center;align-items:center;padding-block-start:max(var(--lr-space-l), var(--lr-safe-area-top));padding-block-end:max(var(--lr-space-l), var(--lr-safe-area-bottom));padding-inline-start:max(var(--lr-space-l), var(--lr-safe-area-inline-start));padding-inline-end:max(var(--lr-space-l), var(--lr-safe-area-inline-end));display:none;position:fixed;inset:0}:host([open]){display:flex}[part=backdrop]{background:var(--lr-tool-result-dialog-overlay-color,var(--_lr-tool-result-dialog-overlay-color));position:absolute;inset:0}[part=panel]{inline-size:min(var(--lr-size-48rem), 100%);box-sizing:border-box;background:var(--lr-color-surface-overlay);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);max-block-size:100%;min-inline-size:0;box-shadow:var(--lr-shadow-xl);transition:inline-size var(--lr-transition-base), block-size var(--lr-transition-base);flex-direction:column;display:flex;position:relative;overflow:hidden}:host([maximized]) [part=panel]{inset:var(--lr-tool-result-dialog-maximized-inset,var(--_lr-tool-result-dialog-maximized-inset));max-block-size:none;inline-size:auto;position:fixed}[part=header]{align-items:center;gap:var(--lr-space-s);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-space-m) var(--lr-space-l);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;display:flex}[part=title]{align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;flex:auto;min-inline-size:0;max-inline-size:100%;display:flex}[part=tool-name]{min-inline-size:0;max-inline-size:100%;font-weight:var(--lr-font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}[part=status]{align-items:center;gap:var(--lr-size-0-25rem);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-size-0-125rem) var(--lr-space-xs);border-radius:var(--lr-radius);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);white-space:normal;overflow-wrap:anywhere;color:var(--lr-tool-result-dialog-pending-color,var(--_lr-tool-result-dialog-pending-color));background:var(--lr-tool-result-dialog-pending-bg,var(--_lr-tool-result-dialog-pending-bg));flex:0 auto;display:inline-flex}[part=status] svg{inline-size:var(--lr-size-1em);block-size:var(--lr-size-1em);flex:none}[part=status] span{overflow-wrap:anywhere;min-inline-size:0}:host([status=running]) [part=status]{color:var(--lr-tool-result-dialog-running-color,var(--_lr-tool-result-dialog-running-color));background:var(--lr-tool-result-dialog-running-bg,var(--_lr-tool-result-dialog-running-bg))}:host([status=success]) [part=status]{color:var(--lr-tool-result-dialog-success-color,var(--_lr-tool-result-dialog-success-color));background:var(--lr-tool-result-dialog-success-bg,var(--_lr-tool-result-dialog-success-bg))}:host([status=error]) [part=status]{color:var(--lr-tool-result-dialog-error-color,var(--_lr-tool-result-dialog-error-color));background:var(--lr-tool-result-dialog-error-bg,var(--_lr-tool-result-dialog-error-bg))}:host([status=denied]) [part=status]{color:var(--lr-tool-result-dialog-denied-color,var(--_lr-tool-result-dialog-denied-color));background:var(--lr-tool-result-dialog-denied-bg,var(--_lr-tool-result-dialog-denied-bg))}:host([status=running]) [part=status] svg{animation:lr-tool-result-dialog-spin var(--lr-tool-result-dialog-spin,var(--_lr-tool-result-dialog-spin)) infinite}[part=duration]{max-inline-size:100%;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);white-space:nowrap}[part=header-actions]{align-items:center;gap:var(--lr-space-xs);flex:none;max-inline-size:100%;margin-inline-start:auto;display:flex}[part=maximize-button],[part=close-button]{min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}[part=maximize-button]:hover,[part=close-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=maximize-button]:active,[part=close-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=maximize-button]:focus-visible,[part=close-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=body]{min-block-size:0;padding:var(--lr-space-l);flex:auto;overflow:auto}[part=footer]{justify-content:flex-end;align-items:center;gap:var(--lr-space-s);padding:var(--lr-space-m) var(--lr-space-l);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;display:flex}[part=footer][hidden]{display:none}@keyframes lr-tool-result-dialog-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){[part=panel]{transition:none!important}:host([status=running]) [part=status] svg{animation:none!important}}`;export{styles};
1
+ import{css}from"lit";const styles=css`:host{--_lr-tool-result-dialog-overlay-color:var(--lr-color-overlay);--_lr-tool-result-dialog-maximized-inset:max(var(--lr-space-l), var(--lr-safe-area-top)) max(var(--lr-space-l), var(--lr-safe-area-inline-end)) max(var(--lr-space-l), var(--lr-safe-area-bottom)) max(var(--lr-space-l), var(--lr-safe-area-inline-start));--_lr-tool-result-dialog-spin:var(--lr-transition-ambient);--_lr-tool-result-dialog-pending-color:var(--lr-color-text-quiet);--_lr-tool-result-dialog-pending-bg:transparent;--_lr-tool-result-dialog-running-color:var(--lr-color-brand);--_lr-tool-result-dialog-running-bg:var(--lr-color-brand-quiet);--_lr-tool-result-dialog-success-color:var(--lr-color-success);--_lr-tool-result-dialog-success-bg:var(--lr-color-success-quiet);--_lr-tool-result-dialog-error-color:var(--lr-color-danger);--_lr-tool-result-dialog-error-bg:var(--lr-color-danger-quiet);--_lr-tool-result-dialog-denied-color:var(--lr-color-warning);--_lr-tool-result-dialog-denied-bg:var(--lr-color-warning-quiet);z-index:var(--lr-overlay-stack-index,var(--lr-layer-modal));justify-content:center;align-items:center;padding-block-start:max(var(--lr-space-l), var(--lr-safe-area-top));padding-block-end:max(var(--lr-space-l), var(--lr-safe-area-bottom));padding-inline-start:max(var(--lr-space-l), var(--lr-safe-area-inline-start));padding-inline-end:max(var(--lr-space-l), var(--lr-safe-area-inline-end));display:none;position:fixed;inset:0}:host([open]){display:flex}[part=backdrop]{background:var(--lr-tool-result-dialog-overlay-color,var(--_lr-tool-result-dialog-overlay-color));position:absolute;inset:0}[part=panel]{inline-size:min(var(--lr-size-48rem), 100%);box-sizing:border-box;background:var(--lr-color-surface-overlay);border:var(--lr-border-width-thin) solid var(--lr-color-border);border-radius:var(--lr-radius);max-block-size:100%;min-inline-size:0;box-shadow:var(--lr-shadow-xl);transition:inline-size var(--lr-transition-base), block-size var(--lr-transition-base);flex-direction:column;display:flex;position:relative;overflow:hidden}:host([maximized]) [part=panel]{inset:var(--lr-tool-result-dialog-maximized-inset,var(--_lr-tool-result-dialog-maximized-inset));max-block-size:none;inline-size:auto;position:fixed}[part=header]{align-items:center;gap:var(--lr-space-s);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-space-m) var(--lr-space-l);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;display:flex}[part=title]{align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;flex:auto;min-inline-size:0;max-inline-size:100%;display:flex}[part=tool-name]{min-inline-size:0;max-inline-size:100%;font-weight:var(--lr-font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}[part=status]{align-items:center;gap:var(--lr-size-0-25rem);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-size-0-125rem) var(--lr-space-xs);border-radius:var(--lr-radius);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);white-space:normal;overflow-wrap:anywhere;color:var(--lr-tool-result-dialog-pending-color,var(--_lr-tool-result-dialog-pending-color));background:var(--lr-tool-result-dialog-pending-bg,var(--_lr-tool-result-dialog-pending-bg));flex:0 auto;display:inline-flex}[part=status] svg{inline-size:var(--lr-size-1em);block-size:var(--lr-size-1em);flex:none}[part=status] span{overflow-wrap:anywhere;min-inline-size:0}:host([status=running]) [part=status]{color:var(--lr-tool-result-dialog-running-color,var(--_lr-tool-result-dialog-running-color));background:var(--lr-tool-result-dialog-running-bg,var(--_lr-tool-result-dialog-running-bg))}:host([status=success]) [part=status]{color:var(--lr-tool-result-dialog-success-color,var(--_lr-tool-result-dialog-success-color));background:var(--lr-tool-result-dialog-success-bg,var(--_lr-tool-result-dialog-success-bg))}:host([status=error]) [part=status]{color:var(--lr-tool-result-dialog-error-color,var(--_lr-tool-result-dialog-error-color));background:var(--lr-tool-result-dialog-error-bg,var(--_lr-tool-result-dialog-error-bg))}:host([status=denied]) [part=status]{color:var(--lr-tool-result-dialog-denied-color,var(--_lr-tool-result-dialog-denied-color));background:var(--lr-tool-result-dialog-denied-bg,var(--_lr-tool-result-dialog-denied-bg))}:host([status=running]) [part=status] svg{animation:lr-tool-result-dialog-spin var(--lr-tool-result-dialog-spin,var(--_lr-tool-result-dialog-spin)) infinite}[part=duration]{max-inline-size:100%;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);white-space:nowrap}[part=header-actions]{align-items:center;gap:var(--lr-space-xs);flex:none;max-inline-size:100%;margin-inline-start:auto;display:flex}[part=maximize-button],[part=close-button]{font:inherit;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}[part=maximize-button]:hover,[part=close-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=maximize-button]:active,[part=close-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=maximize-button]:focus-visible,[part=close-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=body]{min-block-size:0;padding:var(--lr-space-l);flex:auto;overflow:auto}[part=footer]{justify-content:flex-end;align-items:center;gap:var(--lr-space-s);padding:var(--lr-space-m) var(--lr-space-l);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border);flex-wrap:wrap;display:flex}[part=footer][hidden]{display:none}@keyframes lr-tool-result-dialog-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){[part=panel]{transition:none!important}:host([status=running]) [part=status] svg{animation:none!important}}`;export{styles};
@@ -35,7 +35,8 @@ export interface ToolRenderContext{
35
35
  * the outcome via its `status` property while still keeping the renderer's own template mounted,
36
36
  * rather than discarding it for the `<lr-json-viewer>` fallback the way a *thrown* error does.
37
37
  * Calling this is entirely optional: a renderer that never calls it leaves `status` at its
38
- * default, `'success'`.
38
+ * default, `'success'`. Calls from a renderer that throws, or after a later render has started,
39
+ * are ignored.
39
40
  */
40
41
  reportStatus:(status:ToolResultStatus)=>void;}interface ToolRendererDefinitionBase{
41
42
  /** Facade/shape-based dispatch predicate -- see the module doc's dispatch order. */
@@ -67,4 +67,4 @@ copyable:boolean;
67
67
  * later renderer that stays quiet doesn't inherit a stale outcome from a previous one. Reuses the
68
68
  * same vocabulary as `<lr-tool-result-dialog>`'s own `status` property.
69
69
  */
70
- status:ToolResultStatus;private renderState;private generation;private resolvedLazy?;protected willUpdate(changed:PropertyValues):void;private resolve;private renderWith;private fail;render():TemplateResult;private renderFallback;}declare global{interface HTMLElementTagNameMap{'lr-tool-result-view':LyraToolResultView;}}
70
+ status:ToolResultStatus;private renderState;private generation;private renderAttempt?;private resolvedLazy?;protected willUpdate(changed:PropertyValues):void;private resolve;private renderWith;private fail;render():TemplateResult;private renderFallback;}declare global{interface HTMLElementTagNameMap{'lr-tool-result-view':LyraToolResultView;}}