@design.estate/dees-catalog 3.91.0 → 3.93.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 +10531 -4765
  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 +64 -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 +294 -0
  27. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +485 -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 +234121 -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 +112 -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 +306 -0
  163. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +363 -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,294 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ import { harnessDemoConversation } from '../harness.demodata.js';
3
+ const toolShowcase = () => {
4
+ const now = Date.now();
5
+ return [
6
+ {
7
+ id: 'demo-t1',
8
+ role: 'tool',
9
+ text: '',
10
+ createdAt: now - 240_000,
11
+ toolCall: {
12
+ id: 'call-1',
13
+ name: 'run_command',
14
+ status: 'completed',
15
+ input: { command: 'pnpm test --filter sitemap', cwd: '/srv/app' },
16
+ output: { exitCode: 0, stdout: '14 tests passed' },
17
+ startedAt: now - 250_000,
18
+ finishedAt: now - 243_000,
19
+ },
20
+ },
21
+ {
22
+ id: 'demo-t2',
23
+ role: 'tool',
24
+ text: '',
25
+ createdAt: now - 200_000,
26
+ toolCall: {
27
+ id: 'call-2',
28
+ name: 'write_file',
29
+ status: 'completed',
30
+ input: {
31
+ path: '/srv/app/src/jobs/sitemap.job.ts',
32
+ oldContent: "const cacheKey = hash(locales);",
33
+ content: "const cacheKey = hash(routeManifest);",
34
+ },
35
+ startedAt: now - 205_000,
36
+ finishedAt: now - 202_000,
37
+ },
38
+ },
39
+ {
40
+ id: 'demo-t3',
41
+ role: 'tool',
42
+ text: '',
43
+ createdAt: now - 150_000,
44
+ toolCall: {
45
+ id: 'call-3',
46
+ name: 'kb__lookup_article',
47
+ status: 'completed',
48
+ mcp: {
49
+ serverName: 'kb',
50
+ toolName: 'lookup_article',
51
+ annotations: { title: 'Knowledge Lookup', readOnlyHint: true, openWorldHint: true },
52
+ },
53
+ input: { query: 'sitemap cache determinism' },
54
+ contentBlocks: [
55
+ { type: 'text', text: 'Found “Deterministic sitemap builds”.' },
56
+ {
57
+ type: 'resource_link',
58
+ uri: 'https://kb.example.com/articles/812',
59
+ name: 'deterministic-sitemap-builds',
60
+ title: 'Deterministic sitemap builds',
61
+ mimeType: 'text/html',
62
+ },
63
+ ],
64
+ startedAt: now - 155_000,
65
+ finishedAt: now - 152_000,
66
+ },
67
+ },
68
+ ];
69
+ };
70
+ const pendingPermission = {
71
+ id: 'perm-demo',
72
+ title: 'Write file',
73
+ type: 'write',
74
+ createdAt: Date.now(),
75
+ metadata: { path: '/srv/app/src/jobs/sitemap.job.ts', bytes: 812 },
76
+ };
77
+ let stopStream;
78
+ const chatOf = (event) => event.target.closest('.chatDemo')?.querySelector('dees-harness-chat') ?? null;
79
+ /**
80
+ * Streams a realistic turn: reasoning, a todo write, a test run, a file
81
+ * edit rendered as a diff, then the streamed summary text.
82
+ */
83
+ const simulate = (event) => {
84
+ const chat = chatOf(event);
85
+ if (!chat)
86
+ return;
87
+ stopStream?.();
88
+ const runId = Date.now();
89
+ const cancels = [];
90
+ const at = (ms, action) => {
91
+ const timeout = setTimeout(action, ms);
92
+ cancels.push(() => clearTimeout(timeout));
93
+ };
94
+ stopStream = () => {
95
+ for (const cancel of cancels)
96
+ cancel();
97
+ chat.status = { type: 'idle' };
98
+ };
99
+ const pushMessage = (message) => {
100
+ chat.messages = [...chat.messages, message];
101
+ };
102
+ const updateTool = (messageId, tool) => {
103
+ chat.applyDelta({ type: 'tool-update', messageId, tool: tool });
104
+ };
105
+ chat.status = { type: 'busy', message: 'Planning…' };
106
+ // 1) reasoning streams first
107
+ const reasoningMessage = {
108
+ id: `sim-${runId}-reasoning`, role: 'assistant', text: '', createdAt: Date.now(), streaming: true,
109
+ };
110
+ pushMessage(reasoningMessage);
111
+ chat.applyDelta({ type: 'reasoning-start', messageId: reasoningMessage.id, partId: 'r1', startedAt: Date.now() });
112
+ const reasoningText = 'The cache key includes the locale list, so every rollout re-crawls. Plan: track the fix as todos, run the tests, then pin the key to the route manifest.';
113
+ reasoningText.split(' ').forEach((word, index) => {
114
+ at(80 + index * 45, () => chat.applyDelta({ type: 'reasoning', messageId: reasoningMessage.id, partId: 'r1', delta: word + ' ' }));
115
+ });
116
+ const reasoningDoneAt = 80 + reasoningText.split(' ').length * 45 + 150;
117
+ at(reasoningDoneAt, () => {
118
+ chat.applyDelta({ type: 'reasoning-end', messageId: reasoningMessage.id, partId: 'r1', endedAt: Date.now() });
119
+ chat.applyDelta({ type: 'message-end', messageId: reasoningMessage.id });
120
+ });
121
+ // 2) todo write
122
+ const todoId = `sim-${runId}-todos`;
123
+ at(reasoningDoneAt + 300, () => {
124
+ chat.status = { type: 'busy', message: 'Updating task list…' };
125
+ pushMessage({
126
+ id: todoId, role: 'tool', text: '', createdAt: Date.now(),
127
+ toolCall: {
128
+ id: `${todoId}-call`, name: 'todowrite', status: 'running',
129
+ input: { todos: [
130
+ { content: 'Pin sitemap cache key to route manifest hash', status: 'in_progress' },
131
+ { content: 'Run the sitemap test suite', status: 'pending' },
132
+ { content: 'Apply the cache-key patch', status: 'pending' },
133
+ { content: 'Verify staging timings', status: 'pending' },
134
+ ] },
135
+ startedAt: Date.now(),
136
+ },
137
+ });
138
+ });
139
+ at(reasoningDoneAt + 1000, () => updateTool(todoId, { id: `${todoId}-call`, status: 'completed', finishedAt: Date.now() }));
140
+ // 3) test run
141
+ const testId = `sim-${runId}-test`;
142
+ at(reasoningDoneAt + 1400, () => {
143
+ chat.status = { type: 'busy', message: 'Running tests…' };
144
+ pushMessage({
145
+ id: testId, role: 'tool', text: '', createdAt: Date.now(),
146
+ toolCall: {
147
+ id: `${testId}-call`, name: 'run_command', status: 'running',
148
+ input: { command: 'pnpm test --filter sitemap', cwd: '/srv/app' },
149
+ startedAt: Date.now(),
150
+ },
151
+ });
152
+ });
153
+ at(reasoningDoneAt + 3200, () => updateTool(testId, {
154
+ id: `${testId}-call`, status: 'completed',
155
+ output: { exitCode: 0, stdout: '14 tests passed\n0 failed' },
156
+ finishedAt: Date.now(),
157
+ }));
158
+ // 4) file edit rendered as a diff
159
+ const editId = `sim-${runId}-edit`;
160
+ at(reasoningDoneAt + 3600, () => {
161
+ chat.status = { type: 'busy', message: 'Applying the patch…' };
162
+ pushMessage({
163
+ id: editId, role: 'tool', text: '', createdAt: Date.now(),
164
+ toolCall: {
165
+ id: `${editId}-call`, name: 'write_file', status: 'running',
166
+ input: {
167
+ path: '/srv/app/src/jobs/sitemap.job.ts',
168
+ oldContent: 'const cacheKey = hash(locales);\nconst ttl = 3600;',
169
+ content: 'const cacheKey = hash(routeManifest);\nconst ttl = 3600;',
170
+ },
171
+ startedAt: Date.now(),
172
+ },
173
+ });
174
+ });
175
+ at(reasoningDoneAt + 4600, () => updateTool(editId, { id: `${editId}-call`, status: 'completed', finishedAt: Date.now() }));
176
+ // 5) updated todos, then the streamed summary
177
+ const todoDoneId = `sim-${runId}-todos-2`;
178
+ at(reasoningDoneAt + 5000, () => {
179
+ pushMessage({
180
+ id: todoDoneId, role: 'tool', text: '', createdAt: Date.now(),
181
+ toolCall: {
182
+ id: `${todoDoneId}-call`, name: 'todowrite', status: 'completed',
183
+ input: { todos: [
184
+ { content: 'Pin sitemap cache key to route manifest hash', status: 'completed' },
185
+ { content: 'Run the sitemap test suite', status: 'completed' },
186
+ { content: 'Apply the cache-key patch', status: 'completed' },
187
+ { content: 'Verify staging timings', status: 'in_progress' },
188
+ ] },
189
+ startedAt: Date.now(), finishedAt: Date.now(),
190
+ },
191
+ });
192
+ });
193
+ const summaryId = `sim-${runId}-summary`;
194
+ at(reasoningDoneAt + 5400, () => {
195
+ chat.status = { type: 'busy', message: 'Responding…' };
196
+ pushMessage({ id: summaryId, role: 'assistant', text: '', createdAt: Date.now(), streaming: true });
197
+ const summary = 'Patched `sitemap.job.ts` to key the cache on the **route manifest hash** — tests pass (14/14). Staging verification is the last open task.';
198
+ let offset = 0;
199
+ const interval = setInterval(() => {
200
+ const chunk = summary.slice(offset, offset + 6);
201
+ offset += 6;
202
+ if (!chunk) {
203
+ clearInterval(interval);
204
+ chat.applyDelta({ type: 'message-end', messageId: summaryId, usage: { inputTokens: 2100, outputTokens: 260, totalTokens: 2360 } });
205
+ chat.status = { type: 'idle' };
206
+ return;
207
+ }
208
+ chat.applyDelta({ type: 'text', messageId: summaryId, delta: chunk });
209
+ }, 40);
210
+ cancels.push(() => clearInterval(interval));
211
+ });
212
+ };
213
+ const askPermission = (event) => {
214
+ const chat = chatOf(event);
215
+ if (!chat)
216
+ return;
217
+ chat.permissions = [...chat.permissions, { ...pendingPermission, id: `perm-${Date.now()}` }];
218
+ };
219
+ const toggleError = (event) => {
220
+ const chat = chatOf(event);
221
+ if (!chat)
222
+ return;
223
+ chat.status = chat.status.type === 'error'
224
+ ? { type: 'idle' }
225
+ : { type: 'error', message: 'The model endpoint returned 429 — retrying in 20s.' };
226
+ };
227
+ const resetChat = (event) => {
228
+ const chat = chatOf(event);
229
+ if (!chat)
230
+ return;
231
+ stopStream?.();
232
+ chat.messages = [...harnessDemoConversation(), ...toolShowcase()];
233
+ chat.permissions = [];
234
+ chat.status = { type: 'idle' };
235
+ };
236
+ export const demoFunc = () => html `
237
+ <style>
238
+ .chatDemo {
239
+ display: grid;
240
+ grid-template-rows: auto minmax(0, 1fr);
241
+ gap: 12px;
242
+ height: 640px;
243
+ max-width: 860px;
244
+ margin: 40px auto;
245
+ }
246
+ .chatDemo .controls {
247
+ display: flex;
248
+ gap: 8px;
249
+ flex-wrap: wrap;
250
+ }
251
+ .chatDemo dees-harness-chat {
252
+ border: 1px solid var(--dees-color-border-subtle);
253
+ border-radius: var(--dees-radius-xl);
254
+ overflow: hidden;
255
+ }
256
+ </style>
257
+ <div
258
+ class="chatDemo"
259
+ @harness-send=${(event) => console.log('harness-send', event.detail)}
260
+ @harness-permission-response=${(event) => {
261
+ console.log('harness-permission-response', event.detail);
262
+ const chat = event.target.closest('.chatDemo')?.querySelector('dees-harness-chat');
263
+ if (chat) {
264
+ setTimeout(() => {
265
+ chat.permissions = chat.permissions.filter((request) => request.id !== event.detail.requestId);
266
+ }, 600);
267
+ }
268
+ }}
269
+ @harness-new-session=${() => console.log('harness-new-session')}
270
+ @harness-open-sessions=${() => console.log('harness-open-sessions')}
271
+ @harness-abort=${() => {
272
+ stopStream?.();
273
+ console.log('harness-abort');
274
+ }}
275
+ >
276
+ <div class="controls">
277
+ <dees-button type="accent" @clicked=${simulate}>Simulate streaming</dees-button>
278
+ <dees-button @clicked=${askPermission}>Ask permission</dees-button>
279
+ <dees-button @clicked=${toggleError}>Toggle error status</dees-button>
280
+ <dees-button type="ghost" @clicked=${resetChat}>Reset</dees-button>
281
+ </div>
282
+ <dees-harness-chat
283
+ heading="Deploy assistant"
284
+ subheading="acme-app · main · connected"
285
+ model="gpt-5.5"
286
+ reasoningEffort="high"
287
+ .modelOptions=${['gpt-5.5', 'gpt-5', 'o4-mini']}
288
+ .effortOptions=${['xhigh', 'high', 'medium', 'low']}
289
+ .usage=${{ inputTokens: 18_400, outputTokens: 3_100, totalTokens: 21_500 }}
290
+ .messages=${[...harnessDemoConversation(), ...toolShowcase()]}
291
+ ></dees-harness-chat>
292
+ </div>
293
+ `;
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLWNoYXQuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvZGVlcy1oYXJuZXNzLWNoYXQvZGVlcy1oYXJuZXNzLWNoYXQuZGVtby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsTUFBTSxZQUFZLEdBQUcsR0FBc0IsRUFBRTtJQUMzQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsT0FBTztRQUNMO1lBQ0UsRUFBRSxFQUFFLFNBQVM7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsTUFBTSxFQUFFLFdBQVc7Z0JBQ25CLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUNqRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtnQkFDbEQsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO2dCQUN4QixVQUFVLEVBQUUsR0FBRyxHQUFHLE9BQU87YUFDMUI7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLFNBQVM7WUFDYixJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLEdBQUcsR0FBRyxPQUFPO1lBQ3hCLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUUsUUFBUTtnQkFDWixJQUFJLEVBQUUsWUFBWTtnQkFD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