@design.estate/dees-catalog 3.90.1 → 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 (231) hide show
  1. package/dist_bundle/bundle.js +10399 -4790
  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 +7 -1
  7. package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +16 -2
  8. package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +65 -25
  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-form/dees-form-submit/dees-form-submit.d.ts +1 -1
  25. package/dist_ts_web/elements/00group-form/dees-form-submit/dees-form-submit.js +1 -1
  26. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +55 -0
  27. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.d.ts +1 -0
  28. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +183 -0
  29. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +412 -0
  30. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.d.ts +1 -0
  31. package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.js +2 -0
  32. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +65 -0
  33. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.d.ts +1 -0
  34. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +55 -0
  35. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +589 -0
  36. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.d.ts +1 -0
  37. package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.js +2 -0
  38. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.d.ts +21 -0
  39. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.d.ts +1 -0
  40. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.js +41 -0
  41. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.js +215 -0
  42. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.d.ts +1 -0
  43. package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.js +2 -0
  44. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +58 -0
  45. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.d.ts +1 -0
  46. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.js +126 -0
  47. package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +551 -0
  48. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.d.ts +1 -0
  49. package/dist_ts_web/elements/00group-harness/dees-harness-message/index.js +2 -0
  50. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +50 -0
  51. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.d.ts +1 -0
  52. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.js +101 -0
  53. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +424 -0
  54. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.d.ts +1 -0
  55. package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.js +2 -0
  56. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +27 -0
  57. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.d.ts +1 -0
  58. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.js +46 -0
  59. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +282 -0
  60. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.d.ts +1 -0
  61. package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.js +2 -0
  62. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +24 -0
  63. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.d.ts +1 -0
  64. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +32 -0
  65. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +241 -0
  66. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.d.ts +1 -0
  67. package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.js +2 -0
  68. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +28 -0
  69. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.d.ts +1 -0
  70. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +56 -0
  71. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +279 -0
  72. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.d.ts +1 -0
  73. package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.js +2 -0
  74. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.d.ts +30 -0
  75. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.d.ts +1 -0
  76. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.js +35 -0
  77. package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.js +235 -0
  78. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.d.ts +1 -0
  79. package/dist_ts_web/elements/00group-harness/dees-harness-status/index.js +2 -0
  80. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.d.ts +27 -0
  81. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.d.ts +1 -0
  82. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.js +41 -0
  83. package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.js +258 -0
  84. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.d.ts +1 -0
  85. package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.js +2 -0
  86. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +35 -0
  87. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.d.ts +1 -0
  88. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.js +162 -0
  89. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +368 -0
  90. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.d.ts +2 -0
  91. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.js +3 -0
  92. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.d.ts +5 -0
  93. package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +183 -0
  94. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.d.ts +19 -0
  95. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.d.ts +1 -0
  96. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.js +25 -0
  97. package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.js +148 -0
  98. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.d.ts +1 -0
  99. package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.js +2 -0
  100. package/dist_ts_web/elements/00group-harness/harness.demodata.d.ts +22 -0
  101. package/dist_ts_web/elements/00group-harness/harness.demodata.js +94 -0
  102. package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +37 -0
  103. package/dist_ts_web/elements/00group-harness/harness.helpers.js +221 -0
  104. package/dist_ts_web/elements/00group-harness/harness.markdown.d.ts +25 -0
  105. package/dist_ts_web/elements/00group-harness/harness.markdown.js +147 -0
  106. package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +9 -0
  107. package/dist_ts_web/elements/00group-harness/harness.styles.js +94 -0
  108. package/dist_ts_web/elements/00group-harness/index.d.ts +18 -0
  109. package/dist_ts_web/elements/00group-harness/index.js +22 -0
  110. package/dist_ts_web/elements/00group-harness/interfaces.d.ts +210 -0
  111. package/dist_ts_web/elements/00group-harness/interfaces.js +11 -0
  112. package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +76 -0
  113. package/dist_ts_web/elements/00group-harness/toolregistry.js +210 -0
  114. package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +30 -18
  115. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +73 -46
  116. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +15 -16
  117. package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.js +2 -4
  118. package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.js +36 -15
  119. package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.js +5 -4
  120. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.js +10 -89
  121. package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +12 -8
  122. package/dist_ts_web/elements/00group-layout/dees-chips/dees-chips.js +1 -1
  123. package/dist_ts_web/elements/00group-layout/dees-pagination/dees-pagination.js +27 -12
  124. package/dist_ts_web/elements/00group-layout/dees-settings/dees-settings.js +1 -1
  125. package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +14 -18
  126. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +6 -7
  127. package/dist_ts_web/elements/00group-overlay/dees-modal/dees-modal.js +6 -21
  128. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.d.ts +2 -1
  129. package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.js +10 -4
  130. package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +1 -1
  131. package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +9 -8
  132. package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +1 -1
  133. package/dist_ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.js +3 -4
  134. package/dist_ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.js +8 -78
  135. package/dist_ts_web/elements/00syntax.d.ts +28 -0
  136. package/dist_ts_web/elements/00syntax.js +98 -0
  137. package/dist_ts_web/elements/00theme.js +26 -14
  138. package/dist_ts_web/elements/index.d.ts +1 -0
  139. package/dist_ts_web/elements/index.js +2 -1
  140. package/dist_watch/bundle.js +233948 -0
  141. package/dist_watch/bundle.js.map +7 -0
  142. package/dist_watch/index.html +28 -0
  143. package/package.json +2 -2
  144. package/readme.hints.md +7 -1
  145. package/readme.md +116 -9
  146. package/readme.playbook.md +10 -0
  147. package/ts_web/00_commitinfo_data.ts +1 -1
  148. package/ts_web/elements/00group-appui/dees-appui/dees-appui.ts +4 -3
  149. package/ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.ts +5 -6
  150. package/ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.ts +3 -5
  151. package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +15 -1
  152. package/ts_web/elements/00group-button/dees-button/dees-button.ts +59 -24
  153. package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +1 -1
  154. package/ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.ts +401 -0
  155. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.ts +132 -38
  156. package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +649 -187
  157. package/ts_web/elements/00group-dataview/dees-dataview-codebox/index.ts +1 -0
  158. package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +45 -30
  159. package/ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.ts +1 -1
  160. package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +0 -1
  161. package/ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts +1 -1
  162. package/ts_web/elements/00group-dataview/dees-table/styles.ts +1 -1
  163. package/ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.ts +9 -9
  164. package/ts_web/elements/00group-form/dees-form-submit/dees-form-submit.ts +1 -1
  165. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +193 -0
  166. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +301 -0
  167. package/ts_web/elements/00group-harness/dees-harness-chat/index.ts +1 -0
  168. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +56 -0
  169. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +514 -0
  170. package/ts_web/elements/00group-harness/dees-harness-composer/index.ts +1 -0
  171. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.ts +44 -0
  172. package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.ts +172 -0
  173. package/ts_web/elements/00group-harness/dees-harness-content-blocks/index.ts +1 -0
  174. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.ts +129 -0
  175. package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +498 -0
  176. package/ts_web/elements/00group-harness/dees-harness-message/index.ts +1 -0
  177. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.ts +105 -0
  178. package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +342 -0
  179. package/ts_web/elements/00group-harness/dees-harness-message-list/index.ts +1 -0
  180. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.ts +47 -0
  181. package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +225 -0
  182. package/ts_web/elements/00group-harness/dees-harness-permission-card/index.ts +1 -0
  183. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +32 -0
  184. package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +195 -0
  185. package/ts_web/elements/00group-harness/dees-harness-reasoning/index.ts +1 -0
  186. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +59 -0
  187. package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +222 -0
  188. package/ts_web/elements/00group-harness/dees-harness-session-list/index.ts +1 -0
  189. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.ts +35 -0
  190. package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.ts +187 -0
  191. package/ts_web/elements/00group-harness/dees-harness-status/index.ts +1 -0
  192. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.ts +43 -0
  193. package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.ts +206 -0
  194. package/ts_web/elements/00group-harness/dees-harness-todos/index.ts +1 -0
  195. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.ts +166 -0
  196. package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +315 -0
  197. package/ts_web/elements/00group-harness/dees-harness-tool-card/index.ts +2 -0
  198. package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +205 -0
  199. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.ts +25 -0
  200. package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.ts +96 -0
  201. package/ts_web/elements/00group-harness/dees-harness-usage/index.ts +1 -0
  202. package/ts_web/elements/00group-harness/harness.demodata.ts +113 -0
  203. package/ts_web/elements/00group-harness/harness.helpers.ts +227 -0
  204. package/ts_web/elements/00group-harness/harness.markdown.ts +151 -0
  205. package/ts_web/elements/00group-harness/harness.styles.ts +96 -0
  206. package/ts_web/elements/00group-harness/index.ts +22 -0
  207. package/ts_web/elements/00group-harness/interfaces.ts +203 -0
  208. package/ts_web/elements/00group-harness/toolregistry.ts +264 -0
  209. package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +29 -17
  210. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +72 -45
  211. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +14 -15
  212. package/ts_web/elements/00group-input/dees-input-list/dees-input-list.ts +1 -3
  213. package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.ts +35 -14
  214. package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.ts +4 -3
  215. package/ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.ts +9 -88
  216. package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -7
  217. package/ts_web/elements/00group-layout/dees-chips/dees-chips.ts +1 -1
  218. package/ts_web/elements/00group-layout/dees-pagination/dees-pagination.ts +26 -11
  219. package/ts_web/elements/00group-layout/dees-settings/dees-settings.ts +1 -1
  220. package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +13 -17
  221. package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +5 -6
  222. package/ts_web/elements/00group-overlay/dees-modal/dees-modal.ts +5 -20
  223. package/ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.ts +10 -3
  224. package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +1 -1
  225. package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +8 -7
  226. package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +1 -1
  227. package/ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.ts +2 -3
  228. package/ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.ts +7 -77
  229. package/ts_web/elements/00syntax.ts +124 -0
  230. package/ts_web/elements/00theme.ts +25 -13
  231. package/ts_web/elements/index.ts +1 -0
@@ -0,0 +1,342 @@
1
+ import { demoFunc } from './dees-harness-message-list.demo.js';
2
+ import {
3
+ DeesElement,
4
+ html,
5
+ css,
6
+ customElement,
7
+ type TemplateResult,
8
+ property,
9
+ state,
10
+ cssManager,
11
+ directives,
12
+ } from '@design.estate/dees-element';
13
+ import { themeDefaultStyles } from '../../00theme.js';
14
+ import type { IHarnessMessage, IHarnessStatus, THarnessStreamDelta } from '../interfaces.js';
15
+ import { DeesHarnessMessage } from '../dees-harness-message/dees-harness-message.js';
16
+ import { DeesHarnessToolRegistry } from '../toolregistry.js';
17
+ import '../dees-harness-status/dees-harness-status.js';
18
+ import '../../00group-utility/dees-icon/dees-icon.js';
19
+
20
+ const { repeat } = directives;
21
+
22
+ declare global {
23
+ interface HTMLElementTagNameMap {
24
+ 'dees-harness-message-list': DeesHarnessMessageList;
25
+ }
26
+ }
27
+
28
+ const pinThresholdPx = 48;
29
+
30
+ /**
31
+ * Scrollable, streaming-safe message log. Messages render through a keyed
32
+ * repeat (stable DOM per message id); `applyDelta()` routes incremental
33
+ * updates to the affected message element only. Auto-follows the bottom
34
+ * while the user is pinned there; otherwise new content raises a
35
+ * "jump to latest" chip instead of yanking the scroll position.
36
+ */
37
+ @customElement('dees-harness-message-list')
38
+ export class DeesHarnessMessageList extends DeesElement {
39
+ public static demo = demoFunc;
40
+ public static demoGroups = ['Agent Chat'];
41
+
42
+ @property({ attribute: false })
43
+ accessor messages: IHarnessMessage[] = [];
44
+
45
+ @property({ attribute: false })
46
+ accessor status: IHarnessStatus = { type: 'idle' };
47
+
48
+ @property({ type: Boolean })
49
+ accessor autoFollow: boolean = true;
50
+
51
+ @property({ attribute: false })
52
+ accessor toolRegistry: DeesHarnessToolRegistry = DeesHarnessToolRegistry.default;
53
+
54
+ @property({ type: Boolean })
55
+ accessor showRoles: boolean = true;
56
+
57
+ @property({ type: Boolean })
58
+ accessor showTimestamps: boolean = false;
59
+
60
+ @property()
61
+ accessor emptyTitle: string = 'No messages yet';
62
+
63
+ @property()
64
+ accessor emptyText: string = 'Start a conversation to see it here.';
65
+
66
+ @state()
67
+ accessor showJumpChip: boolean = false;
68
+
69
+ @state()
70
+ accessor entryAnimationsEnabled: boolean = false;
71
+
72
+ public static styles = [
73
+ themeDefaultStyles,
74
+ cssManager.defaultStyles,
75
+ css`
76
+ :host {
77
+ position: relative;
78
+ display: block;
79
+ min-height: 0;
80
+ font-family: var(--dees-font-family);
81
+ }
82
+
83
+ .scroll {
84
+ height: 100%;
85
+ overflow-y: auto;
86
+ scrollbar-width: thin;
87
+ scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
88
+ padding: var(--dees-spacing-md);
89
+ box-sizing: border-box;
90
+ }
91
+
92
+ .stack {
93
+ display: block;
94
+ }
95
+
96
+ /* spacing via sibling margins (not grid gap) so a new entry's margin
97
+ animates together with its height while it fades in */
98
+ .stack > * + * {
99
+ margin-top: var(--dees-spacing-sm);
100
+ }
101
+
102
+ .statusRow {
103
+ padding: 0 var(--dees-spacing-xs);
104
+ }
105
+
106
+ .empty {
107
+ display: grid;
108
+ place-content: center;
109
+ gap: var(--dees-spacing-xs);
110
+ height: 100%;
111
+ min-height: 120px;
112
+ text-align: center;
113
+ }
114
+
115
+ .emptyTitle {
116
+ color: var(--dees-color-text-primary);
117
+ font-size: var(--dees-font-control-size, 13px);
118
+ font-weight: 600;
119
+ }
120
+
121
+ .emptyText {
122
+ color: var(--dees-color-text-secondary);
123
+ font-size: var(--dees-font-control-size-sm, 12px);
124
+ }
125
+
126
+ .jumpChip {
127
+ position: absolute;
128
+ left: 50%;
129
+ bottom: var(--dees-spacing-md);
130
+ transform: translateX(-50%);
131
+ display: flex;
132
+ align-items: center;
133
+ gap: var(--dees-spacing-xs);
134
+ padding: 4px 12px;
135
+ border: 1px solid var(--dees-color-border-default);
136
+ border-radius: var(--dees-radius-full);
137
+ background: var(--dees-material-thin-bg);
138
+ backdrop-filter: var(--dees-material-thin-filter);
139
+ color: var(--dees-color-text-primary);
140
+ cursor: pointer;
141
+ font-family: inherit;
142
+ font-size: var(--dees-font-control-size-sm, 12px);
143
+ box-shadow: var(--dees-shadow-md);
144
+ }
145
+
146
+ .jumpChip:hover {
147
+ background: var(--dees-material-thick-bg);
148
+ }
149
+ `,
150
+ ];
151
+
152
+ public render(): TemplateResult {
153
+ return html`
154
+ <div class="scroll" @scroll=${this.handleScroll}>
155
+ ${this.messages.length
156
+ ? html`
157
+ <div class="stack">
158
+ ${repeat(
159
+ this.messages,
160
+ (message) => message.id,
161
+ (message) => html`
162
+ <dees-harness-message
163
+ data-message-id=${message.id}
164
+ .message=${message}
165
+ .showRole=${this.showRoles}
166
+ .showTimestamp=${this.showTimestamps}
167
+ .toolRegistry=${this.toolRegistry}
168
+ .suppressEntry=${!this.entryAnimationsEnabled}
169
+ ></dees-harness-message>
170
+ `,
171
+ )}
172
+ <div class="statusRow">
173
+ <dees-harness-status .status=${this.status}></dees-harness-status>
174
+ </div>
175
+ </div>
176
+ `
177
+ : html`
178
+ <div class="empty">
179
+ <slot name="empty">
180
+ <div class="emptyTitle">${this.emptyTitle}</div>
181
+ <div class="emptyText">${this.emptyText}</div>
182
+ </slot>
183
+ </div>
184
+ `}
185
+ </div>
186
+ ${this.showJumpChip
187
+ ? html`
188
+ <button class="jumpChip" type="button" @click=${() => this.scrollToBottom(true)}>
189
+ <dees-icon icon="lucide:ArrowDown" iconSize="12"></dees-icon>
190
+ Jump to latest
191
+ </button>
192
+ `
193
+ : ''}
194
+ `;
195
+ }
196
+
197
+ // ------------------------------------------------------------------ deltas
198
+
199
+ /**
200
+ * Routes an incremental update to the affected message. Mutates the
201
+ * message object held in `.messages` so a later full re-assignment stays
202
+ * idempotent; only the target element re-renders.
203
+ */
204
+ public applyDelta(delta: THarnessStreamDelta): void {
205
+ const message = this.messages.find((candidate) => candidate.id === delta.messageId);
206
+ if (!message) return;
207
+ const element = this.messageElement(delta.messageId);
208
+ switch (delta.type) {
209
+ case 'text':
210
+ if (element) element.appendTextDelta(delta.delta);
211
+ else {
212
+ message.text += delta.delta;
213
+ message.streaming = true;
214
+ }
215
+ break;
216
+ case 'reasoning-start':
217
+ if (element) element.appendReasoningDelta(delta.partId, '', delta.startedAt);
218
+ else {
219
+ message.reasoning ??= [];
220
+ message.reasoning.push({ id: delta.partId, text: '', startedAt: delta.startedAt ?? Date.now() });
221
+ }
222
+ break;
223
+ case 'reasoning':
224
+ if (element) element.appendReasoningDelta(delta.partId, delta.delta);
225
+ else {
226
+ message.reasoning ??= [];
227
+ const part = message.reasoning.find((candidate) => candidate.id === delta.partId);
228
+ if (part) part.text += delta.delta;
229
+ else message.reasoning.push({ id: delta.partId, text: delta.delta, startedAt: Date.now() });
230
+ }
231
+ break;
232
+ case 'reasoning-end':
233
+ if (element) element.endReasoning(delta.partId, delta.endedAt);
234
+ else {
235
+ const part = message.reasoning?.find((candidate) => candidate.id === delta.partId);
236
+ if (part) part.endedAt = delta.endedAt ?? Date.now();
237
+ }
238
+ break;
239
+ case 'tool-update':
240
+ message.toolCall = { ...(message.toolCall ?? { id: delta.tool.id, name: '', status: 'pending' }), ...delta.tool };
241
+ element?.requestUpdate();
242
+ break;
243
+ case 'message-end':
244
+ if (element) element.endStream(delta.usage, delta.error);
245
+ else {
246
+ message.streaming = false;
247
+ if (delta.usage) message.usage = delta.usage;
248
+ if (delta.error) message.error = delta.error;
249
+ }
250
+ break;
251
+ }
252
+ this.followAfterContentChange();
253
+ }
254
+
255
+ private messageElement(messageId: string): DeesHarnessMessage | undefined {
256
+ const element = this.shadowRoot?.querySelector(`dees-harness-message[data-message-id="${CSS.escape(messageId)}"]`);
257
+ return element instanceof DeesHarnessMessage ? element : undefined;
258
+ }
259
+
260
+ // ------------------------------------------------------------------ scroll
261
+
262
+ private get scrollContainer(): HTMLElement | null {
263
+ return this.shadowRoot?.querySelector('.scroll') ?? null;
264
+ }
265
+
266
+ public get isPinnedToBottom(): boolean {
267
+ const container = this.scrollContainer;
268
+ if (!container) return true;
269
+ return container.scrollHeight - container.scrollTop - container.clientHeight < pinThresholdPx;
270
+ }
271
+
272
+ private followFrame = 0;
273
+ private settleTimeout: ReturnType<typeof setTimeout> | null = null;
274
+
275
+ private followAfterContentChange(): void {
276
+ if (!this.autoFollow) return;
277
+ if (this.isPinnedToBottom) {
278
+ if (!this.followFrame) {
279
+ this.followFrame = requestAnimationFrame(() => {
280
+ this.followFrame = 0;
281
+ this.scrollToBottom(true);
282
+ });
283
+ }
284
+ // entry animations grow content for ~200ms after insertion; follow
285
+ // through once they settle (unless the user scrolled far away)
286
+ if (this.settleTimeout) clearTimeout(this.settleTimeout);
287
+ this.settleTimeout = setTimeout(() => {
288
+ this.settleTimeout = null;
289
+ const container = this.scrollContainer;
290
+ if (!container) return;
291
+ const distance = container.scrollHeight - container.scrollTop - container.clientHeight;
292
+ if (distance < 400) this.scrollToBottom(true);
293
+ }, 250);
294
+ } else {
295
+ this.showJumpChip = true;
296
+ }
297
+ }
298
+
299
+ public scrollToBottom(force = false): void {
300
+ const container = this.scrollContainer;
301
+ if (!container) return;
302
+ if (force || this.isPinnedToBottom) {
303
+ container.scrollTop = container.scrollHeight;
304
+ this.showJumpChip = false;
305
+ }
306
+ }
307
+
308
+ private handleScroll = (): void => {
309
+ if (this.isPinnedToBottom && this.showJumpChip) {
310
+ this.showJumpChip = false;
311
+ }
312
+ };
313
+
314
+ public updated(changedProperties: Map<string, any>): void {
315
+ super.updated(changedProperties);
316
+ if (changedProperties.has('messages') || changedProperties.has('status')) {
317
+ this.followAfterContentChange();
318
+ }
319
+ }
320
+
321
+ public firstUpdated(changedProperties: Map<string, any>): void {
322
+ super.firstUpdated(changedProperties);
323
+ // let the initial batch paint without entry animations, then enable them
324
+ requestAnimationFrame(() => {
325
+ requestAnimationFrame(() => {
326
+ this.entryAnimationsEnabled = true;
327
+ });
328
+ });
329
+ }
330
+
331
+ public async disconnectedCallback(): Promise<void> {
332
+ if (this.followFrame) {
333
+ cancelAnimationFrame(this.followFrame);
334
+ this.followFrame = 0;
335
+ }
336
+ if (this.settleTimeout) {
337
+ clearTimeout(this.settleTimeout);
338
+ this.settleTimeout = null;
339
+ }
340
+ await super.disconnectedCallback();
341
+ }
342
+ }
@@ -0,0 +1 @@
1
+ export * from './dees-harness-message-list.js';
@@ -0,0 +1,47 @@
1
+ import { html } from '@design.estate/dees-element';
2
+
3
+ const logResponse = (event: CustomEvent) => {
4
+ console.log('harness-permission-response', event.detail);
5
+ };
6
+
7
+ export const demoFunc = () => html`
8
+ <style>
9
+ .permissionDemo {
10
+ display: grid;
11
+ gap: 16px;
12
+ max-width: 640px;
13
+ margin: 40px auto;
14
+ padding: 24px;
15
+ border-radius: var(--dees-radius-xl);
16
+ background: var(--dees-color-bg-primary);
17
+ }
18
+ </style>
19
+ <div class="permissionDemo" @harness-permission-response=${logResponse}>
20
+ <dees-harness-permission-card
21
+ .request=${{
22
+ id: 'p1',
23
+ title: 'Run shell command',
24
+ type: 'shell',
25
+ createdAt: Date.now(),
26
+ metadata: { command: 'rm -rf node_modules && pnpm install', cwd: '/srv/app' },
27
+ }}
28
+ ></dees-harness-permission-card>
29
+ <dees-harness-permission-card
30
+ .request=${{
31
+ id: 'p2',
32
+ title: 'Write file',
33
+ type: 'write',
34
+ metadata: { path: '/srv/app/src/config.ts', bytes: 812 },
35
+ }}
36
+ ></dees-harness-permission-card>
37
+ <dees-harness-permission-card
38
+ busy
39
+ .request=${{
40
+ id: 'p3',
41
+ title: 'Navigate browser',
42
+ type: 'browser',
43
+ metadata: { action: 'navigate', url: 'https://admin.example.com' },
44
+ }}
45
+ ></dees-harness-permission-card>
46
+ </div>
47
+ `;
@@ -0,0 +1,225 @@
1
+ import { demoFunc } from './dees-harness-permission-card.demo.js';
2
+ import {
3
+ DeesElement,
4
+ html,
5
+ css,
6
+ customElement,
7
+ type TemplateResult,
8
+ property,
9
+ state,
10
+ cssManager,
11
+ } from '@design.estate/dees-element';
12
+ import { themeDefaultStyles } from '../../00theme.js';
13
+ import type { IHarnessPermissionRequest, THarnessPermissionResponse } from '../interfaces.js';
14
+ import { harnessStringifyValue } from '../harness.helpers.js';
15
+ import '../../00group-button/dees-button/dees-button.js';
16
+ import '../../00group-feedback/dees-badge/dees-badge.js';
17
+ import '../../00group-utility/dees-icon/dees-icon.js';
18
+
19
+ declare global {
20
+ interface HTMLElementTagNameMap {
21
+ 'dees-harness-permission-card': DeesHarnessPermissionCard;
22
+ }
23
+ }
24
+
25
+ const badgeTypeForPermission = (permissionType: string): 'error' | 'warning' | 'default' => {
26
+ if (permissionType === 'delete' || permissionType === 'shell') return 'error';
27
+ if (permissionType === 'write' || permissionType === 'browser') return 'warning';
28
+ return 'default';
29
+ };
30
+
31
+ /**
32
+ * Permission prompt card: title, type badge, metadata key/values, and the
33
+ * once / always / reject choices with an optional remember checkbox. Emits
34
+ * `harness-permission-response` (bubbles, composed) and disables itself
35
+ * once answered or while `busy`.
36
+ */
37
+ @customElement('dees-harness-permission-card')
38
+ export class DeesHarnessPermissionCard extends DeesElement {
39
+ public static demo = demoFunc;
40
+ public static demoGroups = ['Agent Chat'];
41
+
42
+ @property({ attribute: false })
43
+ accessor request: IHarnessPermissionRequest = { id: '', title: '', type: 'permission' };
44
+
45
+ @property({ type: Boolean })
46
+ accessor busy: boolean = false;
47
+
48
+ @state()
49
+ accessor remember: boolean = false;
50
+
51
+ @state()
52
+ accessor answered: THarnessPermissionResponse | undefined = undefined;
53
+
54
+ public static styles = [
55
+ themeDefaultStyles,
56
+ cssManager.defaultStyles,
57
+ css`
58
+ :host {
59
+ display: block;
60
+ font-family: var(--dees-font-family);
61
+ /* entry: new boxes make space for themselves while fading in.
62
+ A keyframes animation (not a transition) so the parent tree's
63
+ universal theme-transition rule cannot override it in the shadow
64
+ cascade; interpolate-size lets height animate from 0 to auto
65
+ (Chromium 129+), elsewhere the height snaps and opacity still
66
+ fades. */
67
+ interpolate-size: allow-keywords;
68
+ overflow: clip;
69
+ animation: harness-entry var(--dees-transition-default) var(--dees-ease-out);
70
+ }
71
+
72
+ @keyframes harness-entry {
73
+ from {
74
+ height: 0;
75
+ margin-top: 0;
76
+ opacity: 0;
77
+ }
78
+ }
79
+
80
+ @media (prefers-reduced-motion: reduce) {
81
+ :host {
82
+ animation: none;
83
+ }
84
+ }
85
+
86
+ .card {
87
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
88
+ border: 1px solid var(--dees-color-border-default);
89
+ border-left: 2px solid var(--dees-color-accent-warning);
90
+ border-radius: var(--dees-radius-lg);
91
+ corner-shape: var(--dees-corner-shape);
92
+ background: var(--dees-color-badge-warning-bg);
93
+ }
94
+
95
+ .titleRow {
96
+ display: flex;
97
+ align-items: center;
98
+ gap: var(--dees-spacing-sm);
99
+ margin-bottom: var(--dees-spacing-xs);
100
+ }
101
+
102
+ .titleRow dees-icon {
103
+ color: var(--dees-color-accent-warning);
104
+ }
105
+
106
+ .title {
107
+ flex: 1;
108
+ min-width: 0;
109
+ color: var(--dees-color-text-primary);
110
+ font-size: var(--dees-font-control-size-sm, 12px);
111
+ font-weight: 600;
112
+ }
113
+
114
+ .metaGrid {
115
+ display: grid;
116
+ grid-template-columns: auto minmax(0, 1fr);
117
+ gap: 2px var(--dees-spacing-md);
118
+ margin: var(--dees-spacing-xs) 0 var(--dees-spacing-sm);
119
+ font-size: var(--dees-font-caption1-size, 11px);
120
+ }
121
+
122
+ .metaKey {
123
+ color: var(--dees-color-text-secondary);
124
+ white-space: nowrap;
125
+ }
126
+
127
+ .metaValue {
128
+ color: var(--dees-color-text-primary);
129
+ font-family: var(--dees-font-family-mono);
130
+ overflow-wrap: anywhere;
131
+ }
132
+
133
+ .actions {
134
+ display: flex;
135
+ align-items: center;
136
+ gap: var(--dees-spacing-sm);
137
+ flex-wrap: wrap;
138
+ }
139
+
140
+ .rememberLabel {
141
+ display: inline-flex;
142
+ align-items: center;
143
+ gap: var(--dees-spacing-xs);
144
+ margin-left: auto;
145
+ color: var(--dees-color-text-secondary);
146
+ font-size: var(--dees-font-caption1-size, 11px);
147
+ cursor: pointer;
148
+ user-select: none;
149
+ }
150
+
151
+ .answeredNote {
152
+ color: var(--dees-color-text-secondary);
153
+ font-size: var(--dees-font-caption1-size, 11px);
154
+ }
155
+ `,
156
+ ];
157
+
158
+ public render(): TemplateResult {
159
+ const request = this.request;
160
+ const disabled = this.busy || this.answered !== undefined;
161
+ const metadataEntries = Object.entries(request.metadata ?? {});
162
+ return html`
163
+ <div class="card">
164
+ <div class="titleRow">
165
+ <dees-icon icon="lucide:ShieldQuestionMark" iconSize="15"></dees-icon>
166
+ <span class="title">${request.title || 'Permission requested'}</span>
167
+ <dees-badge type=${badgeTypeForPermission(request.type)} .text=${request.type} rounded></dees-badge>
168
+ </div>
169
+ ${metadataEntries.length
170
+ ? html`
171
+ <div class="metaGrid">
172
+ ${metadataEntries.map(([key, value]) => html`
173
+ <div class="metaKey">${key}</div>
174
+ <div class="metaValue">${harnessStringifyValue(value)}</div>
175
+ `)}
176
+ </div>
177
+ `
178
+ : ''}
179
+ <div class="actions">
180
+ ${this.answered
181
+ ? html`<span class="answeredNote">Answered: ${this.answered}${this.remember ? ' (remembered)' : ''}</span>`
182
+ : html`
183
+ <dees-button type="accent" size="sm" ?disabled=${disabled} @clicked=${() => this.respond('once')}>
184
+ Allow Once
185
+ </dees-button>
186
+ <dees-button size="sm" ?disabled=${disabled} @clicked=${() => this.respond('always')}>
187
+ Always Allow
188
+ </dees-button>
189
+ <dees-button type="destructive" size="sm" ?disabled=${disabled} @clicked=${() => this.respond('reject')}>
190
+ Reject
191
+ </dees-button>
192
+ <label class="rememberLabel">
193
+ <input
194
+ type="checkbox"
195
+ .checked=${this.remember}
196
+ ?disabled=${disabled}
197
+ @change=${(event: Event) => {
198
+ this.remember = (event.currentTarget as HTMLInputElement).checked;
199
+ }}
200
+ />
201
+ remember for this session
202
+ </label>
203
+ `}
204
+ </div>
205
+ </div>
206
+ `;
207
+ }
208
+
209
+ private respond(response: THarnessPermissionResponse): void {
210
+ if (this.busy || this.answered !== undefined) return;
211
+ this.answered = response;
212
+ this.dispatchEvent(
213
+ new CustomEvent('harness-permission-response', {
214
+ detail: {
215
+ requestId: this.request.id,
216
+ response,
217
+ remember: this.remember || response === 'always',
218
+ request: this.request,
219
+ },
220
+ bubbles: true,
221
+ composed: true,
222
+ }),
223
+ );
224
+ }
225
+ }
@@ -0,0 +1 @@
1
+ export * from './dees-harness-permission-card.js';
@@ -0,0 +1,32 @@
1
+ import { html } from '@design.estate/dees-element';
2
+
3
+ export const demoFunc = () => html`
4
+ <style>
5
+ .reasoningDemo {
6
+ display: grid;
7
+ gap: 16px;
8
+ max-width: 640px;
9
+ margin: 40px auto;
10
+ padding: 24px;
11
+ border-radius: var(--dees-radius-xl);
12
+ background: var(--dees-color-bg-secondary);
13
+ }
14
+ </style>
15
+ <div class="reasoningDemo">
16
+ <dees-harness-reasoning
17
+ .reasoningPart=${{
18
+ id: 'r1',
19
+ text: 'The user wants a summary of the failing test. I should read the test output first, then check the assertion that failed and compare with the fixture data.',
20
+ startedAt: Date.now() - 4200,
21
+ endedAt: Date.now(),
22
+ }}
23
+ ></dees-harness-reasoning>
24
+ <dees-harness-reasoning
25
+ .reasoningPart=${{
26
+ id: 'r2',
27
+ text: 'Considering the tradeoffs between the two migration paths',
28
+ startedAt: Date.now() - 1500,
29
+ }}
30
+ ></dees-harness-reasoning>
31
+ </div>
32
+ `;