@design.estate/dees-catalog 3.91.0 → 3.92.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 (228) hide show
  1. package/dist_bundle/bundle.js +10381 -4788
  2. package/dist_ts_web/00_commitinfo_data.js +1 -1
  3. package/dist_ts_web/elements/00group-appui/dees-appui/dees-appui.js +5 -4
  4. package/dist_ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.js +6 -7
  5. package/dist_ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.js +4 -6
  6. package/dist_ts_web/elements/00group-button/dees-button/dees-button.d.ts +6 -0
  7. package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +14 -1
  8. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +49 -24
  9. package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.js +1 -1
  10. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.d.ts +69 -0
  11. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.js +342 -0
  12. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.d.ts +48 -3
  13. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.js +128 -39
  14. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js +663 -190
  15. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.d.ts +1 -0
  16. package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.js +2 -1
  17. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.d.ts +3 -0
  18. package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.js +48 -30
  19. package/dist_ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.js +1 -1
  20. package/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.js +1 -2
  21. package/dist_ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.js +1 -1
  22. package/dist_ts_web/elements/00group-dataview/dees-table/styles.js +1 -1
  23. package/dist_ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.js +9 -9
  24. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +55 -0
  25. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.d.ts +1 -0
  26. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +183 -0
  27. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +412 -0
  28. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.d.ts +1 -0
  29. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.js +2 -0
  30. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +65 -0
  31. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.d.ts +1 -0
  32. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +55 -0
  33. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +589 -0
  34. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.d.ts +1 -0
  35. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.js +2 -0
  36. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.d.ts +21 -0
  37. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.d.ts +1 -0
  38. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.js +41 -0
  39. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.js +215 -0
  40. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.d.ts +1 -0
  41. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.js +2 -0
  42. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +58 -0
  43. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.d.ts +1 -0
  44. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.js +126 -0
  45. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +551 -0
  46. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.d.ts +1 -0
  47. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.js +2 -0
  48. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +50 -0
  49. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.d.ts +1 -0
  50. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.js +101 -0
  51. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +424 -0
  52. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.d.ts +1 -0
  53. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.js +2 -0
  54. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +27 -0
  55. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.d.ts +1 -0
  56. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.js +46 -0
  57. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +282 -0
  58. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.d.ts +1 -0
  59. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.js +2 -0
  60. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +24 -0
  61. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.d.ts +1 -0
  62. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +32 -0
  63. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +241 -0
  64. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.d.ts +1 -0
  65. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.js +2 -0
  66. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +28 -0
  67. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.d.ts +1 -0
  68. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +56 -0
  69. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +279 -0
  70. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.d.ts +1 -0
  71. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.js +2 -0
  72. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.d.ts +30 -0
  73. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.d.ts +1 -0
  74. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.js +35 -0
  75. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.js +235 -0
  76. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.d.ts +1 -0
  77. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.js +2 -0
  78. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.d.ts +27 -0
  79. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.d.ts +1 -0
  80. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.js +41 -0
  81. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.js +258 -0
  82. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.d.ts +1 -0
  83. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.js +2 -0
  84. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +35 -0
  85. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.d.ts +1 -0
  86. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.js +162 -0
  87. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +368 -0
  88. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.d.ts +2 -0
  89. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.js +3 -0
  90. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.d.ts +5 -0
  91. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +183 -0
  92. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.d.ts +19 -0
  93. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.d.ts +1 -0
  94. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.js +25 -0
  95. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.js +148 -0
  96. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.d.ts +1 -0
  97. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.js +2 -0
  98. package/dist_ts_web/elements/00group-harness/harness.demodata.d.ts +22 -0
  99. package/dist_ts_web/elements/00group-harness/harness.demodata.js +94 -0
  100. package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +37 -0
  101. package/dist_ts_web/elements/00group-harness/harness.helpers.js +221 -0
  102. package/dist_ts_web/elements/00group-harness/harness.markdown.d.ts +25 -0
  103. package/dist_ts_web/elements/00group-harness/harness.markdown.js +147 -0
  104. package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +9 -0
  105. package/dist_ts_web/elements/00group-harness/harness.styles.js +94 -0
  106. package/dist_ts_web/elements/00group-harness/index.d.ts +18 -0
  107. package/dist_ts_web/elements/00group-harness/index.js +22 -0
  108. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +210 -0
  109. package/dist_ts_web/elements/00group-harness/interfaces.js +11 -0
  110. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +76 -0
  111. package/dist_ts_web/elements/00group-harness/toolregistry.js +210 -0
  112. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +30 -18
  113. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +73 -46
  114. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +15 -16
  115. package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.js +2 -4
  116. package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.js +36 -15
  117. package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.js +5 -4
  118. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.js +10 -89
  119. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +12 -8
  120. package/dist_ts_web/elements/00group-layout/dees-chips/dees-chips.js +1 -1
  121. package/dist_ts_web/elements/00group-layout/dees-pagination/dees-pagination.js +27 -12
  122. package/dist_ts_web/elements/00group-layout/dees-settings/dees-settings.js +1 -1
  123. package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +14 -18
  124. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +6 -7
  125. package/dist_ts_web/elements/00group-overlay/dees-modal/dees-modal.js +6 -21
  126. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.d.ts +2 -1
  127. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.js +10 -4
  128. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +1 -1
  129. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +9 -8
  130. package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +1 -1
  131. package/dist_ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.js +3 -4
  132. package/dist_ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.js +8 -78
  133. package/dist_ts_web/elements/00syntax.d.ts +28 -0
  134. package/dist_ts_web/elements/00syntax.js +98 -0
  135. package/dist_ts_web/elements/00theme.js +26 -14
  136. package/dist_ts_web/elements/index.d.ts +1 -0
  137. package/dist_ts_web/elements/index.js +2 -1
  138. package/dist_watch/bundle.js +233948 -0
  139. package/dist_watch/bundle.js.map +7 -0
  140. package/dist_watch/index.html +28 -0
  141. package/package.json +1 -1
  142. package/readme.hints.md +7 -1
  143. package/readme.md +110 -0
  144. package/readme.playbook.md +10 -0
  145. package/ts_web/00_commitinfo_data.ts +1 -1
  146. package/ts_web/elements/00group-appui/dees-appui/dees-appui.ts +4 -3
  147. package/ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.ts +5 -6
  148. package/ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.ts +3 -5
  149. package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +13 -0
  150. package/ts_web/elements/00group-button/dees-button/dees-button.ts +42 -22
  151. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +1 -1
  152. package/ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.ts +401 -0
  153. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.ts +132 -38
  154. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +649 -187
  155. package/ts_web/elements/00group-dataview/dees-dataview-codebox/index.ts +1 -0
  156. package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +45 -30
  157. package/ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.ts +1 -1
  158. package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +0 -1
  159. package/ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts +1 -1
  160. package/ts_web/elements/00group-dataview/dees-table/styles.ts +1 -1
  161. package/ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.ts +9 -9
  162. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +193 -0
  163. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +301 -0
  164. package/ts_web/elements/00group-harness/dees-harness-chat/index.ts +1 -0
  165. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +56 -0
  166. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +514 -0
  167. package/ts_web/elements/00group-harness/dees-harness-composer/index.ts +1 -0
  168. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.ts +44 -0
  169. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.ts +172 -0
  170. package/ts_web/elements/00group-harness/dees-harness-content-blocks/index.ts +1 -0
  171. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.ts +129 -0
  172. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +498 -0
  173. package/ts_web/elements/00group-harness/dees-harness-message/index.ts +1 -0
  174. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.ts +105 -0
  175. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +342 -0
  176. package/ts_web/elements/00group-harness/dees-harness-message-list/index.ts +1 -0
  177. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.ts +47 -0
  178. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +225 -0
  179. package/ts_web/elements/00group-harness/dees-harness-permission-card/index.ts +1 -0
  180. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +32 -0
  181. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +195 -0
  182. package/ts_web/elements/00group-harness/dees-harness-reasoning/index.ts +1 -0
  183. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +59 -0
  184. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +222 -0
  185. package/ts_web/elements/00group-harness/dees-harness-session-list/index.ts +1 -0
  186. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.ts +35 -0
  187. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.ts +187 -0
  188. package/ts_web/elements/00group-harness/dees-harness-status/index.ts +1 -0
  189. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.ts +43 -0
  190. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.ts +206 -0
  191. package/ts_web/elements/00group-harness/dees-harness-todos/index.ts +1 -0
  192. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.ts +166 -0
  193. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +315 -0
  194. package/ts_web/elements/00group-harness/dees-harness-tool-card/index.ts +2 -0
  195. package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +205 -0
  196. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.ts +25 -0
  197. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.ts +96 -0
  198. package/ts_web/elements/00group-harness/dees-harness-usage/index.ts +1 -0
  199. package/ts_web/elements/00group-harness/harness.demodata.ts +113 -0
  200. package/ts_web/elements/00group-harness/harness.helpers.ts +227 -0
  201. package/ts_web/elements/00group-harness/harness.markdown.ts +151 -0
  202. package/ts_web/elements/00group-harness/harness.styles.ts +96 -0
  203. package/ts_web/elements/00group-harness/index.ts +22 -0
  204. package/ts_web/elements/00group-harness/interfaces.ts +203 -0
  205. package/ts_web/elements/00group-harness/toolregistry.ts +264 -0
  206. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +29 -17
  207. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +72 -45
  208. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +14 -15
  209. package/ts_web/elements/00group-input/dees-input-list/dees-input-list.ts +1 -3
  210. package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.ts +35 -14
  211. package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.ts +4 -3
  212. package/ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.ts +9 -88
  213. package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -7
  214. package/ts_web/elements/00group-layout/dees-chips/dees-chips.ts +1 -1
  215. package/ts_web/elements/00group-layout/dees-pagination/dees-pagination.ts +26 -11
  216. package/ts_web/elements/00group-layout/dees-settings/dees-settings.ts +1 -1
  217. package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +13 -17
  218. package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +5 -6
  219. package/ts_web/elements/00group-overlay/dees-modal/dees-modal.ts +5 -20
  220. package/ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.ts +10 -3
  221. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +1 -1
  222. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +8 -7
  223. package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +1 -1
  224. package/ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.ts +2 -3
  225. package/ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.ts +7 -77
  226. package/ts_web/elements/00syntax.ts +124 -0
  227. package/ts_web/elements/00theme.ts +25 -13
  228. package/ts_web/elements/index.ts +1 -0
@@ -0,0 +1,101 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ const seedMessages = () => [
3
+ {
4
+ id: 'm1',
5
+ role: 'user',
6
+ text: 'Summarize the last deploy and tell me if anything regressed.',
7
+ createdAt: Date.now() - 300_000,
8
+ },
9
+ {
10
+ id: 'm2',
11
+ role: 'assistant',
12
+ text: 'The deploy finished in **4m12s**. One warning: the `sitemap` job took 3× longer than baseline.\n\n- build: ok\n- tests: 212 passed\n- sitemap: slow (see below)',
13
+ createdAt: Date.now() - 280_000,
14
+ reasoning: [
15
+ {
16
+ id: 'r1',
17
+ text: 'Check the deploy log timings first, then compare against the previous run.',
18
+ startedAt: Date.now() - 290_000,
19
+ endedAt: Date.now() - 287_000,
20
+ },
21
+ ],
22
+ },
23
+ {
24
+ id: 'm3',
25
+ role: 'user',
26
+ text: 'Dig into the sitemap job please.',
27
+ createdAt: Date.now() - 200_000,
28
+ },
29
+ ];
30
+ let streamStop;
31
+ const simulateStream = (event) => {
32
+ streamStop?.();
33
+ const container = event.target.closest('.listDemo');
34
+ const list = container?.querySelector('dees-harness-message-list');
35
+ if (!list)
36
+ return;
37
+ const streamingMessage = {
38
+ id: `stream-${Date.now()}`,
39
+ role: 'assistant',
40
+ text: '',
41
+ createdAt: Date.now(),
42
+ streaming: true,
43
+ };
44
+ list.messages = [...list.messages, streamingMessage];
45
+ const source = 'The sitemap job re-crawled every route because the cache key changed with the locale rollout. Pinning the cache key to the route manifest hash brings it back to baseline. I can prepare that patch.';
46
+ let offset = 0;
47
+ const interval = setInterval(() => {
48
+ const chunk = source.slice(offset, offset + 5);
49
+ offset += 5;
50
+ if (!chunk) {
51
+ clearInterval(interval);
52
+ list.applyDelta({ type: 'message-end', messageId: streamingMessage.id, usage: { inputTokens: 900, outputTokens: 120, totalTokens: 1020 } });
53
+ return;
54
+ }
55
+ list.applyDelta({ type: 'text', messageId: streamingMessage.id, delta: chunk });
56
+ }, 40);
57
+ streamStop = () => clearInterval(interval);
58
+ };
59
+ export const demoFunc = () => html `
60
+ <style>
61
+ .listDemo {
62
+ display: grid;
63
+ grid-template-rows: auto minmax(0, 1fr);
64
+ gap: 12px;
65
+ height: 520px;
66
+ max-width: 720px;
67
+ margin: 40px auto;
68
+ padding: 16px;
69
+ border-radius: var(--dees-radius-xl);
70
+ background: var(--dees-color-bg-primary);
71
+ border: 1px solid var(--dees-color-border-subtle);
72
+ }
73
+ .listDemo dees-harness-message-list {
74
+ height: 100%;
75
+ }
76
+ </style>
77
+ <div class="listDemo">
78
+ <div>
79
+ <dees-button @clicked=${simulateStream}>Stream a new reply</dees-button>
80
+ </div>
81
+ <dees-harness-message-list .messages=${seedMessages()}></dees-harness-message-list>
82
+ </div>
83
+ <style>
84
+ .emptyDemo {
85
+ height: 200px;
86
+ max-width: 720px;
87
+ margin: 0 auto 40px;
88
+ border-radius: var(--dees-radius-xl);
89
+ border: 1px solid var(--dees-color-border-subtle);
90
+ background: var(--dees-color-bg-primary);
91
+ }
92
+ .emptyDemo dees-harness-message-list { height: 100%; }
93
+ </style>
94
+ <div class="emptyDemo">
95
+ <dees-harness-message-list
96
+ emptyTitle="Nothing here yet"
97
+ emptyText="Send the agent a prompt to get started."
98
+ ></dees-harness-message-list>
99
+ </div>
100
+ `;
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtbWVzc2FnZS1saXN0L2RlZXMtaGFybmVzcy1tZXNzYWdlLWxpc3QuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJbkQsTUFBTSxZQUFZLEdBQUcsR0FBc0IsRUFBRSxDQUFDO0lBQzVDO1FBQ0UsRUFBRSxFQUFFLElBQUk7UUFDUixJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSw4REFBOEQ7UUFDcEUsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPO0tBQ2hDO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsSUFBSTtRQUNSLElBQUksRUFBRSxXQUFXO1FBQ2pCLElBQUksRUFBRSxpS0FBaUs7UUFDdkssU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPO1FBQy9CLFNBQVMsRUFBRTtZQUNUO2dCQUNFLEVBQUUsRUFBRSxJQUFJO2dCQUNSLElBQUksRUFBRSw0RUFBNEU7Z0JBQ2xGLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTztnQkFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPO2FBQzlCO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsRUFBRSxFQUFFLElBQUk7UUFDUixJQUFJLEVBQUUsTUFBTTtRQUNaLElBQUksRUFBRSxrQ0FBa0M7UUFDeEMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPO0tBQ2hDO0NBQ0YsQ0FBQztBQUVGLElBQUksVUFBb0MsQ0FBQztBQUV6QyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtJQUMzQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0lBQ2YsTUFBTSxTQUFTLEdBQUksS0FBSyxDQUFDLE1BQXNCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sSUFBSSxHQUFHLFNBQVMsRUFBRSxhQUFhLENBQXlCLDJCQUEyQixDQUFDLENBQUM7SUFDM0YsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPO0lBQ2xCLE1BQU0sZ0JBQWdCLEdBQW9CO1FBQ3hDLEVBQUUsRUFBRSxVQUFVLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMxQixJQUFJLEVBQUUsV0FBVztRQUNqQixJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3JCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsc01BQXNNLENBQUM7SUFDdE4sSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVJLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDUCxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQW9CSixjQUFjOzsyQ0FFRCxZQUFZLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQnhELENBQUMifQ==
@@ -0,0 +1,424 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { demoFunc } from './dees-harness-message-list.demo.js';
36
+ import { DeesElement, html, css, customElement, property, state, cssManager, directives, } from '@design.estate/dees-element';
37
+ import { themeDefaultStyles } from '../../00theme.js';
38
+ import { DeesHarnessMessage } from '../dees-harness-message/dees-harness-message.js';
39
+ import { DeesHarnessToolRegistry } from '../toolregistry.js';
40
+ import '../dees-harness-status/dees-harness-status.js';
41
+ import '../../00group-utility/dees-icon/dees-icon.js';
42
+ const { repeat } = directives;
43
+ const pinThresholdPx = 48;
44
+ /**
45
+ * Scrollable, streaming-safe message log. Messages render through a keyed
46
+ * repeat (stable DOM per message id); `applyDelta()` routes incremental
47
+ * updates to the affected message element only. Auto-follows the bottom
48
+ * while the user is pinned there; otherwise new content raises a
49
+ * "jump to latest" chip instead of yanking the scroll position.
50
+ */
51
+ let DeesHarnessMessageList = (() => {
52
+ let _classDecorators = [customElement('dees-harness-message-list')];
53
+ let _classDescriptor;
54
+ let _classExtraInitializers = [];
55
+ let _classThis;
56
+ let _classSuper = DeesElement;
57
+ let _messages_decorators;
58
+ let _messages_initializers = [];
59
+ let _messages_extraInitializers = [];
60
+ let _status_decorators;
61
+ let _status_initializers = [];
62
+ let _status_extraInitializers = [];
63
+ let _autoFollow_decorators;
64
+ let _autoFollow_initializers = [];
65
+ let _autoFollow_extraInitializers = [];
66
+ let _toolRegistry_decorators;
67
+ let _toolRegistry_initializers = [];
68
+ let _toolRegistry_extraInitializers = [];
69
+ let _showRoles_decorators;
70
+ let _showRoles_initializers = [];
71
+ let _showRoles_extraInitializers = [];
72
+ let _showTimestamps_decorators;
73
+ let _showTimestamps_initializers = [];
74
+ let _showTimestamps_extraInitializers = [];
75
+ let _emptyTitle_decorators;
76
+ let _emptyTitle_initializers = [];
77
+ let _emptyTitle_extraInitializers = [];
78
+ let _emptyText_decorators;
79
+ let _emptyText_initializers = [];
80
+ let _emptyText_extraInitializers = [];
81
+ let _showJumpChip_decorators;
82
+ let _showJumpChip_initializers = [];
83
+ let _showJumpChip_extraInitializers = [];
84
+ let _entryAnimationsEnabled_decorators;
85
+ let _entryAnimationsEnabled_initializers = [];
86
+ let _entryAnimationsEnabled_extraInitializers = [];
87
+ var DeesHarnessMessageList = class extends _classSuper {
88
+ static { _classThis = this; }
89
+ static {
90
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
91
+ _messages_decorators = [property({ attribute: false })];
92
+ _status_decorators = [property({ attribute: false })];
93
+ _autoFollow_decorators = [property({ type: Boolean })];
94
+ _toolRegistry_decorators = [property({ attribute: false })];
95
+ _showRoles_decorators = [property({ type: Boolean })];
96
+ _showTimestamps_decorators = [property({ type: Boolean })];
97
+ _emptyTitle_decorators = [property()];
98
+ _emptyText_decorators = [property()];
99
+ _showJumpChip_decorators = [state()];
100
+ _entryAnimationsEnabled_decorators = [state()];
101
+ __esDecorate(this, null, _messages_decorators, { kind: "accessor", name: "messages", static: false, private: false, access: { has: obj => "messages" in obj, get: obj => obj.messages, set: (obj, value) => { obj.messages = value; } }, metadata: _metadata }, _messages_initializers, _messages_extraInitializers);
102
+ __esDecorate(this, null, _status_decorators, { kind: "accessor", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status, set: (obj, value) => { obj.status = value; } }, metadata: _metadata }, _status_initializers, _status_extraInitializers);
103
+ __esDecorate(this, null, _autoFollow_decorators, { kind: "accessor", name: "autoFollow", static: false, private: false, access: { has: obj => "autoFollow" in obj, get: obj => obj.autoFollow, set: (obj, value) => { obj.autoFollow = value; } }, metadata: _metadata }, _autoFollow_initializers, _autoFollow_extraInitializers);
104
+ __esDecorate(this, null, _toolRegistry_decorators, { kind: "accessor", name: "toolRegistry", static: false, private: false, access: { has: obj => "toolRegistry" in obj, get: obj => obj.toolRegistry, set: (obj, value) => { obj.toolRegistry = value; } }, metadata: _metadata }, _toolRegistry_initializers, _toolRegistry_extraInitializers);
105
+ __esDecorate(this, null, _showRoles_decorators, { kind: "accessor", name: "showRoles", static: false, private: false, access: { has: obj => "showRoles" in obj, get: obj => obj.showRoles, set: (obj, value) => { obj.showRoles = value; } }, metadata: _metadata }, _showRoles_initializers, _showRoles_extraInitializers);
106
+ __esDecorate(this, null, _showTimestamps_decorators, { kind: "accessor", name: "showTimestamps", static: false, private: false, access: { has: obj => "showTimestamps" in obj, get: obj => obj.showTimestamps, set: (obj, value) => { obj.showTimestamps = value; } }, metadata: _metadata }, _showTimestamps_initializers, _showTimestamps_extraInitializers);
107
+ __esDecorate(this, null, _emptyTitle_decorators, { kind: "accessor", name: "emptyTitle", static: false, private: false, access: { has: obj => "emptyTitle" in obj, get: obj => obj.emptyTitle, set: (obj, value) => { obj.emptyTitle = value; } }, metadata: _metadata }, _emptyTitle_initializers, _emptyTitle_extraInitializers);
108
+ __esDecorate(this, null, _emptyText_decorators, { kind: "accessor", name: "emptyText", static: false, private: false, access: { has: obj => "emptyText" in obj, get: obj => obj.emptyText, set: (obj, value) => { obj.emptyText = value; } }, metadata: _metadata }, _emptyText_initializers, _emptyText_extraInitializers);
109
+ __esDecorate(this, null, _showJumpChip_decorators, { kind: "accessor", name: "showJumpChip", static: false, private: false, access: { has: obj => "showJumpChip" in obj, get: obj => obj.showJumpChip, set: (obj, value) => { obj.showJumpChip = value; } }, metadata: _metadata }, _showJumpChip_initializers, _showJumpChip_extraInitializers);
110
+ __esDecorate(this, null, _entryAnimationsEnabled_decorators, { kind: "accessor", name: "entryAnimationsEnabled", static: false, private: false, access: { has: obj => "entryAnimationsEnabled" in obj, get: obj => obj.entryAnimationsEnabled, set: (obj, value) => { obj.entryAnimationsEnabled = value; } }, metadata: _metadata }, _entryAnimationsEnabled_initializers, _entryAnimationsEnabled_extraInitializers);
111
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
112
+ DeesHarnessMessageList = _classThis = _classDescriptor.value;
113
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
114
+ }
115
+ static demo = demoFunc;
116
+ static demoGroups = ['Agent Chat'];
117
+ #messages_accessor_storage = __runInitializers(this, _messages_initializers, []);
118
+ get messages() { return this.#messages_accessor_storage; }
119
+ set messages(value) { this.#messages_accessor_storage = value; }
120
+ #status_accessor_storage = (__runInitializers(this, _messages_extraInitializers), __runInitializers(this, _status_initializers, { type: 'idle' }));
121
+ get status() { return this.#status_accessor_storage; }
122
+ set status(value) { this.#status_accessor_storage = value; }
123
+ #autoFollow_accessor_storage = (__runInitializers(this, _status_extraInitializers), __runInitializers(this, _autoFollow_initializers, true));
124
+ get autoFollow() { return this.#autoFollow_accessor_storage; }
125
+ set autoFollow(value) { this.#autoFollow_accessor_storage = value; }
126
+ #toolRegistry_accessor_storage = (__runInitializers(this, _autoFollow_extraInitializers), __runInitializers(this, _toolRegistry_initializers, DeesHarnessToolRegistry.default));
127
+ get toolRegistry() { return this.#toolRegistry_accessor_storage; }
128
+ set toolRegistry(value) { this.#toolRegistry_accessor_storage = value; }
129
+ #showRoles_accessor_storage = (__runInitializers(this, _toolRegistry_extraInitializers), __runInitializers(this, _showRoles_initializers, true));
130
+ get showRoles() { return this.#showRoles_accessor_storage; }
131
+ set showRoles(value) { this.#showRoles_accessor_storage = value; }
132
+ #showTimestamps_accessor_storage = (__runInitializers(this, _showRoles_extraInitializers), __runInitializers(this, _showTimestamps_initializers, false));
133
+ get showTimestamps() { return this.#showTimestamps_accessor_storage; }
134
+ set showTimestamps(value) { this.#showTimestamps_accessor_storage = value; }
135
+ #emptyTitle_accessor_storage = (__runInitializers(this, _showTimestamps_extraInitializers), __runInitializers(this, _emptyTitle_initializers, 'No messages yet'));
136
+ get emptyTitle() { return this.#emptyTitle_accessor_storage; }
137
+ set emptyTitle(value) { this.#emptyTitle_accessor_storage = value; }
138
+ #emptyText_accessor_storage = (__runInitializers(this, _emptyTitle_extraInitializers), __runInitializers(this, _emptyText_initializers, 'Start a conversation to see it here.'));
139
+ get emptyText() { return this.#emptyText_accessor_storage; }
140
+ set emptyText(value) { this.#emptyText_accessor_storage = value; }
141
+ #showJumpChip_accessor_storage = (__runInitializers(this, _emptyText_extraInitializers), __runInitializers(this, _showJumpChip_initializers, false));
142
+ get showJumpChip() { return this.#showJumpChip_accessor_storage; }
143
+ set showJumpChip(value) { this.#showJumpChip_accessor_storage = value; }
144
+ #entryAnimationsEnabled_accessor_storage = (__runInitializers(this, _showJumpChip_extraInitializers), __runInitializers(this, _entryAnimationsEnabled_initializers, false));
145
+ get entryAnimationsEnabled() { return this.#entryAnimationsEnabled_accessor_storage; }
146
+ set entryAnimationsEnabled(value) { this.#entryAnimationsEnabled_accessor_storage = value; }
147
+ static styles = [
148
+ themeDefaultStyles,
149
+ cssManager.defaultStyles,
150
+ css `
151
+ :host {
152
+ position: relative;
153
+ display: block;
154
+ min-height: 0;
155
+ font-family: var(--dees-font-family);
156
+ }
157
+
158
+ .scroll {
159
+ height: 100%;
160
+ overflow-y: auto;
161
+ scrollbar-width: thin;
162
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
163
+ padding: var(--dees-spacing-md);
164
+ box-sizing: border-box;
165
+ }
166
+
167
+ .stack {
168
+ display: block;
169
+ }
170
+
171
+ /* spacing via sibling margins (not grid gap) so a new entry's margin
172
+ animates together with its height while it fades in */
173
+ .stack > * + * {
174
+ margin-top: var(--dees-spacing-sm);
175
+ }
176
+
177
+ .statusRow {
178
+ padding: 0 var(--dees-spacing-xs);
179
+ }
180
+
181
+ .empty {
182
+ display: grid;
183
+ place-content: center;
184
+ gap: var(--dees-spacing-xs);
185
+ height: 100%;
186
+ min-height: 120px;
187
+ text-align: center;
188
+ }
189
+
190
+ .emptyTitle {
191
+ color: var(--dees-color-text-primary);
192
+ font-size: var(--dees-font-control-size, 13px);
193
+ font-weight: 600;
194
+ }
195
+
196
+ .emptyText {
197
+ color: var(--dees-color-text-secondary);
198
+ font-size: var(--dees-font-control-size-sm, 12px);
199
+ }
200
+
201
+ .jumpChip {
202
+ position: absolute;
203
+ left: 50%;
204
+ bottom: var(--dees-spacing-md);
205
+ transform: translateX(-50%);
206
+ display: flex;
207
+ align-items: center;
208
+ gap: var(--dees-spacing-xs);
209
+ padding: 4px 12px;
210
+ border: 1px solid var(--dees-color-border-default);
211
+ border-radius: var(--dees-radius-full);
212
+ background: var(--dees-material-thin-bg);
213
+ backdrop-filter: var(--dees-material-thin-filter);
214
+ color: var(--dees-color-text-primary);
215
+ cursor: pointer;
216
+ font-family: inherit;
217
+ font-size: var(--dees-font-control-size-sm, 12px);
218
+ box-shadow: var(--dees-shadow-md);
219
+ }
220
+
221
+ .jumpChip:hover {
222
+ background: var(--dees-material-thick-bg);
223
+ }
224
+ `,
225
+ ];
226
+ render() {
227
+ return html `
228
+ <div class="scroll" @scroll=${this.handleScroll}>
229
+ ${this.messages.length
230
+ ? html `
231
+ <div class="stack">
232
+ ${repeat(this.messages, (message) => message.id, (message) => html `
233
+ <dees-harness-message
234
+ data-message-id=${message.id}
235
+ .message=${message}
236
+ .showRole=${this.showRoles}
237
+ .showTimestamp=${this.showTimestamps}
238
+ .toolRegistry=${this.toolRegistry}
239
+ .suppressEntry=${!this.entryAnimationsEnabled}
240
+ ></dees-harness-message>
241
+ `)}
242
+ <div class="statusRow">
243
+ <dees-harness-status .status=${this.status}></dees-harness-status>
244
+ </div>
245
+ </div>
246
+ `
247
+ : html `
248
+ <div class="empty">
249
+ <slot name="empty">
250
+ <div class="emptyTitle">${this.emptyTitle}</div>
251
+ <div class="emptyText">${this.emptyText}</div>
252
+ </slot>
253
+ </div>
254
+ `}
255
+ </div>
256
+ ${this.showJumpChip
257
+ ? html `
258
+ <button class="jumpChip" type="button" @click=${() => this.scrollToBottom(true)}>
259
+ <dees-icon icon="lucide:ArrowDown" iconSize="12"></dees-icon>
260
+ Jump to latest
261
+ </button>
262
+ `
263
+ : ''}
264
+ `;
265
+ }
266
+ // ------------------------------------------------------------------ deltas
267
+ /**
268
+ * Routes an incremental update to the affected message. Mutates the
269
+ * message object held in `.messages` so a later full re-assignment stays
270
+ * idempotent; only the target element re-renders.
271
+ */
272
+ applyDelta(delta) {
273
+ const message = this.messages.find((candidate) => candidate.id === delta.messageId);
274
+ if (!message)
275
+ return;
276
+ const element = this.messageElement(delta.messageId);
277
+ switch (delta.type) {
278
+ case 'text':
279
+ if (element)
280
+ element.appendTextDelta(delta.delta);
281
+ else {
282
+ message.text += delta.delta;
283
+ message.streaming = true;
284
+ }
285
+ break;
286
+ case 'reasoning-start':
287
+ if (element)
288
+ element.appendReasoningDelta(delta.partId, '', delta.startedAt);
289
+ else {
290
+ message.reasoning ??= [];
291
+ message.reasoning.push({ id: delta.partId, text: '', startedAt: delta.startedAt ?? Date.now() });
292
+ }
293
+ break;
294
+ case 'reasoning':
295
+ if (element)
296
+ element.appendReasoningDelta(delta.partId, delta.delta);
297
+ else {
298
+ message.reasoning ??= [];
299
+ const part = message.reasoning.find((candidate) => candidate.id === delta.partId);
300
+ if (part)
301
+ part.text += delta.delta;
302
+ else
303
+ message.reasoning.push({ id: delta.partId, text: delta.delta, startedAt: Date.now() });
304
+ }
305
+ break;
306
+ case 'reasoning-end':
307
+ if (element)
308
+ element.endReasoning(delta.partId, delta.endedAt);
309
+ else {
310
+ const part = message.reasoning?.find((candidate) => candidate.id === delta.partId);
311
+ if (part)
312
+ part.endedAt = delta.endedAt ?? Date.now();
313
+ }
314
+ break;
315
+ case 'tool-update':
316
+ message.toolCall = { ...(message.toolCall ?? { id: delta.tool.id, name: '', status: 'pending' }), ...delta.tool };
317
+ element?.requestUpdate();
318
+ break;
319
+ case 'message-end':
320
+ if (element)
321
+ element.endStream(delta.usage, delta.error);
322
+ else {
323
+ message.streaming = false;
324
+ if (delta.usage)
325
+ message.usage = delta.usage;
326
+ if (delta.error)
327
+ message.error = delta.error;
328
+ }
329
+ break;
330
+ }
331
+ this.followAfterContentChange();
332
+ }
333
+ messageElement(messageId) {
334
+ const element = this.shadowRoot?.querySelector(`dees-harness-message[data-message-id="${CSS.escape(messageId)}"]`);
335
+ return element instanceof DeesHarnessMessage ? element : undefined;
336
+ }
337
+ // ------------------------------------------------------------------ scroll
338
+ get scrollContainer() {
339
+ return this.shadowRoot?.querySelector('.scroll') ?? null;
340
+ }
341
+ get isPinnedToBottom() {
342
+ const container = this.scrollContainer;
343
+ if (!container)
344
+ return true;
345
+ return container.scrollHeight - container.scrollTop - container.clientHeight < pinThresholdPx;
346
+ }
347
+ followFrame = (__runInitializers(this, _entryAnimationsEnabled_extraInitializers), 0);
348
+ settleTimeout = null;
349
+ followAfterContentChange() {
350
+ if (!this.autoFollow)
351
+ return;
352
+ if (this.isPinnedToBottom) {
353
+ if (!this.followFrame) {
354
+ this.followFrame = requestAnimationFrame(() => {
355
+ this.followFrame = 0;
356
+ this.scrollToBottom(true);
357
+ });
358
+ }
359
+ // entry animations grow content for ~200ms after insertion; follow
360
+ // through once they settle (unless the user scrolled far away)
361
+ if (this.settleTimeout)
362
+ clearTimeout(this.settleTimeout);
363
+ this.settleTimeout = setTimeout(() => {
364
+ this.settleTimeout = null;
365
+ const container = this.scrollContainer;
366
+ if (!container)
367
+ return;
368
+ const distance = container.scrollHeight - container.scrollTop - container.clientHeight;
369
+ if (distance < 400)
370
+ this.scrollToBottom(true);
371
+ }, 250);
372
+ }
373
+ else {
374
+ this.showJumpChip = true;
375
+ }
376
+ }
377
+ scrollToBottom(force = false) {
378
+ const container = this.scrollContainer;
379
+ if (!container)
380
+ return;
381
+ if (force || this.isPinnedToBottom) {
382
+ container.scrollTop = container.scrollHeight;
383
+ this.showJumpChip = false;
384
+ }
385
+ }
386
+ handleScroll = () => {
387
+ if (this.isPinnedToBottom && this.showJumpChip) {
388
+ this.showJumpChip = false;
389
+ }
390
+ };
391
+ updated(changedProperties) {
392
+ super.updated(changedProperties);
393
+ if (changedProperties.has('messages') || changedProperties.has('status')) {
394
+ this.followAfterContentChange();
395
+ }
396
+ }
397
+ firstUpdated(changedProperties) {
398
+ super.firstUpdated(changedProperties);
399
+ // let the initial batch paint without entry animations, then enable them
400
+ requestAnimationFrame(() => {
401
+ requestAnimationFrame(() => {
402
+ this.entryAnimationsEnabled = true;
403
+ });
404
+ });
405
+ }
406
+ async disconnectedCallback() {
407
+ if (this.followFrame) {
408
+ cancelAnimationFrame(this.followFrame);
409
+ this.followFrame = 0;
410
+ }
411
+ if (this.settleTimeout) {
412
+ clearTimeout(this.settleTimeout);
413
+ this.settleTimeout = null;
414
+ }
415
+ await super.disconnectedCallback();
416
+ }
417
+ static {
418
+ __runInitializers(_classThis, _classExtraInitializers);
419
+ }
420
+ };
421
+ return DeesHarnessMessageList = _classThis;
422
+ })();
423
+ export { DeesHarnessMessageList };
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLW1lc3NhZ2UtbGlzdC9kZWVzLWhhcm5lc3MtbWVzc2FnZS1saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLCtDQUErQyxDQUFDO0FBQ3ZELE9BQU8sOENBQThDLENBQUM7QUFFdEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQztBQVE5QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFFMUI7Ozs7OztHQU1HO0lBRVUsc0JBQXNCOzRCQURsQyxhQUFhLENBQUMsMkJBQTJCLENBQUM7Ozs7c0JBQ0MsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUlwRCxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7a0NBRzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztzQ0FHOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFB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
@@ -0,0 +1 @@
1
+ export * from './dees-harness-message-list.js';
@@ -0,0 +1,2 @@
1
+ export * from './dees-harness-message-list.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy1tZXNzYWdlLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQyJ9
@@ -0,0 +1,27 @@
1
+ import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
2
+ import type { IHarnessPermissionRequest, THarnessPermissionResponse } from '../interfaces.js';
3
+ import '../../00group-button/dees-button/dees-button.js';
4
+ import '../../00group-feedback/dees-badge/dees-badge.js';
5
+ import '../../00group-utility/dees-icon/dees-icon.js';
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ 'dees-harness-permission-card': DeesHarnessPermissionCard;
9
+ }
10
+ }
11
+ /**
12
+ * Permission prompt card: title, type badge, metadata key/values, and the
13
+ * once / always / reject choices with an optional remember checkbox. Emits
14
+ * `harness-permission-response` (bubbles, composed) and disables itself
15
+ * once answered or while `busy`.
16
+ */
17
+ export declare class DeesHarnessPermissionCard extends DeesElement {
18
+ static demo: () => TemplateResult<1>;
19
+ static demoGroups: string[];
20
+ accessor request: IHarnessPermissionRequest;
21
+ accessor busy: boolean;
22
+ accessor remember: boolean;
23
+ accessor answered: THarnessPermissionResponse | undefined;
24
+ static styles: import("@design.estate/dees-element").CSSResult[];
25
+ render(): TemplateResult;
26
+ private respond;
27
+ }
@@ -0,0 +1 @@
1
+ export declare const demoFunc: () => import("@design.estate/dees-element").TemplateResult<1>;
@@ -0,0 +1,46 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ const logResponse = (event) => {
3
+ console.log('harness-permission-response', event.detail);
4
+ };
5
+ export const demoFunc = () => html `
6
+ <style>
7
+ .permissionDemo {
8
+ display: grid;
9
+ gap: 16px;
10
+ max-width: 640px;
11
+ margin: 40px auto;
12
+ padding: 24px;
13
+ border-radius: var(--dees-radius-xl);
14
+ background: var(--dees-color-bg-primary);
15
+ }
16
+ </style>
17
+ <div class="permissionDemo" @harness-permission-response=${logResponse}>
18
+ <dees-harness-permission-card
19
+ .request=${{
20
+ id: 'p1',
21
+ title: 'Run shell command',
22
+ type: 'shell',
23
+ createdAt: Date.now(),
24
+ metadata: { command: 'rm -rf node_modules && pnpm install', cwd: '/srv/app' },
25
+ }}
26
+ ></dees-harness-permission-card>
27
+ <dees-harness-permission-card
28
+ .request=${{
29
+ id: 'p2',
30
+ title: 'Write file',
31
+ type: 'write',
32
+ metadata: { path: '/srv/app/src/config.ts', bytes: 812 },
33
+ }}
34
+ ></dees-harness-permission-card>
35
+ <dees-harness-permission-card
36
+ busy
37
+ .request=${{
38
+ id: 'p3',
39
+ title: 'Navigate browser',
40
+ type: 'browser',
41
+ metadata: { action: 'navigate', url: 'https://admin.example.com' },
42
+ }}
43
+ ></dees-harness-permission-card>
44
+ </div>
45
+ `;
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXBlcm1pc3Npb24tY2FyZC5kZW1vLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtcGVybWlzc2lvbi1jYXJkL2RlZXMtaGFybmVzcy1wZXJtaXNzaW9uLWNhcmQuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFbkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFrQixFQUFFLEVBQUU7SUFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTs7Ozs7Ozs7Ozs7OzZEQVkyQixXQUFXOztpQkFFdkQ7SUFDVCxFQUFFLEVBQUUsSUFBSTtJQUNSLEtBQUssRUFBRSxtQkFBbUI7SUFDMUIsSUFBSSxFQUFFLE9BQU87SUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUNyQixRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUscUNBQXFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtDQUM5RTs7O2lCQUdVO0lBQ1QsRUFBRSxFQUFFLElBQUk7SUFDUixLQUFLLEVBQUUsWUFBWTtJQUNuQixJQUFJLEVBQUUsT0FBTztJQUNiLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0NBQ3pEOzs7O2lCQUlVO0lBQ1QsRUFBRSxFQUFFLElBQUk7SUFDUixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLElBQUksRUFBRSxTQUFTO0lBQ2YsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsMkJBQTJCLEVBQUU7Q0FDbkU7OztDQUdOLENBQUMifQ==