@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,147 @@
1
+ import { css } from '@design.estate/dees-element';
2
+ import * as domtools from '@design.estate/dees-domtools';
3
+ /**
4
+ * Markdown service for harness messages. Uses smartmarkdown (already in the
5
+ * dependency graph via dees-domtools; GFM-capable, sanitized-by-default) so
6
+ * the group adds zero dependencies. Results are LRU-cached because streaming
7
+ * re-parses the same growing text repeatedly. Swap seam: if the parser ever
8
+ * changes, only this file does.
9
+ */
10
+ export class HarnessMarkdown {
11
+ static instance;
12
+ static getInstance() {
13
+ HarnessMarkdown.instance ??= new HarnessMarkdown();
14
+ return HarnessMarkdown.instance;
15
+ }
16
+ cache = new Map();
17
+ static maxCacheEntries = 200;
18
+ async renderToHtml(markdownText) {
19
+ const cached = this.cache.get(markdownText);
20
+ if (cached !== undefined) {
21
+ // refresh LRU position
22
+ this.cache.delete(markdownText);
23
+ this.cache.set(markdownText, cached);
24
+ return cached;
25
+ }
26
+ const html = await domtools.plugins.smartmarkdown.SmartMarkdown.easyMarkdownToHtml(markdownText);
27
+ const processed = this.postProcess(html);
28
+ this.cache.set(markdownText, processed);
29
+ if (this.cache.size > HarnessMarkdown.maxCacheEntries) {
30
+ const oldestKey = this.cache.keys().next().value;
31
+ if (oldestKey !== undefined)
32
+ this.cache.delete(oldestKey);
33
+ }
34
+ return processed;
35
+ }
36
+ /** External links open in a new context and never leak the opener. */
37
+ postProcess(html) {
38
+ return html.replaceAll('<a href=', '<a target="_blank" rel="noopener noreferrer" href=');
39
+ }
40
+ }
41
+ /**
42
+ * Token-based typography for rendered markdown. Included by components that
43
+ * render HarnessMarkdown output inside a `.markdown-body` container. Code
44
+ * fence syntax colors reuse the codebox palette convention (dark defaults,
45
+ * `:host([gobright])` for light) — kept in the consuming component's styles
46
+ * where :host is available; this block covers structure and rhythm.
47
+ */
48
+ export const markdownStyles = css `
49
+ .markdown-body {
50
+ color: var(--dees-color-text-primary);
51
+ font-size: var(--dees-font-control-size, 13px);
52
+ line-height: 1.55;
53
+ overflow-wrap: anywhere;
54
+ }
55
+ .markdown-body > :first-child {
56
+ margin-top: 0;
57
+ }
58
+ .markdown-body > :last-child {
59
+ margin-bottom: 0;
60
+ }
61
+ .markdown-body h1,
62
+ .markdown-body h2,
63
+ .markdown-body h3,
64
+ .markdown-body h4 {
65
+ margin: var(--dees-spacing-lg) 0 var(--dees-spacing-sm);
66
+ color: var(--dees-color-text-primary);
67
+ font-weight: 600;
68
+ line-height: 1.3;
69
+ }
70
+ .markdown-body h1 { font-size: 1.35em; }
71
+ .markdown-body h2 { font-size: 1.2em; }
72
+ .markdown-body h3 { font-size: 1.05em; }
73
+ .markdown-body h4 { font-size: 1em; }
74
+ .markdown-body p {
75
+ margin: var(--dees-spacing-sm) 0;
76
+ }
77
+ .markdown-body ul,
78
+ .markdown-body ol {
79
+ margin: var(--dees-spacing-sm) 0;
80
+ padding-left: 1.4em;
81
+ }
82
+ .markdown-body li {
83
+ margin: 2px 0;
84
+ }
85
+ .markdown-body a {
86
+ color: var(--dees-color-link);
87
+ text-decoration: none;
88
+ }
89
+ .markdown-body a:hover {
90
+ color: var(--dees-color-link-hover);
91
+ text-decoration: underline;
92
+ }
93
+ .markdown-body blockquote {
94
+ margin: var(--dees-spacing-sm) 0;
95
+ padding: var(--dees-spacing-xs) var(--dees-spacing-md);
96
+ border-left: 3px solid var(--dees-color-border-strong);
97
+ color: var(--dees-color-text-secondary);
98
+ }
99
+ .markdown-body code {
100
+ padding: 1px 5px;
101
+ border-radius: var(--dees-radius-xs);
102
+ background: var(--dees-color-code-bg);
103
+ font-family: var(--dees-font-family-mono);
104
+ font-size: 0.92em;
105
+ }
106
+ .markdown-body pre {
107
+ margin: var(--dees-spacing-sm) 0;
108
+ padding: var(--dees-spacing-md);
109
+ border: 1px solid var(--dees-color-border-subtle);
110
+ border-radius: var(--dees-radius-md);
111
+ corner-shape: var(--dees-corner-shape);
112
+ background: var(--dees-color-code-block-bg);
113
+ overflow: auto;
114
+ }
115
+ .markdown-body pre code {
116
+ padding: 0;
117
+ border-radius: 0;
118
+ background: transparent;
119
+ font-size: var(--dees-font-control-size-sm, 12px);
120
+ line-height: 1.5;
121
+ }
122
+ .markdown-body table {
123
+ margin: var(--dees-spacing-sm) 0;
124
+ border-collapse: collapse;
125
+ font-size: 0.95em;
126
+ }
127
+ .markdown-body th,
128
+ .markdown-body td {
129
+ padding: 4px 10px;
130
+ border: 1px solid var(--dees-color-border-default);
131
+ text-align: left;
132
+ }
133
+ .markdown-body th {
134
+ background: var(--dees-color-bg-tertiary);
135
+ font-weight: 600;
136
+ }
137
+ .markdown-body img {
138
+ max-width: 100%;
139
+ border-radius: var(--dees-radius-md);
140
+ }
141
+ .markdown-body hr {
142
+ margin: var(--dees-spacing-md) 0;
143
+ border: 0;
144
+ border-top: 1px solid var(--dees-color-border-subtle);
145
+ }
146
+ `;
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFybmVzcy5tYXJrZG93bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvaGFybmVzcy5tYXJrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sS0FBSyxRQUFRLE1BQU0sOEJBQThCLENBQUM7QUFFekQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDbEIsTUFBTSxDQUFDLFFBQVEsQ0FBOEI7SUFFOUMsTUFBTSxDQUFDLFdBQVc7UUFDdkIsZUFBZSxDQUFDLFFBQVEsS0FBSyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ25ELE9BQU8sZUFBZSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRU8sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ2xDLE1BQU0sQ0FBVSxlQUFlLEdBQUcsR0FBRyxDQUFDO0lBRXZDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBb0I7UUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekIsdUJBQXVCO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakcsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDakQsSUFBSSxTQUFTLEtBQUssU0FBUztnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHNFQUFzRTtJQUM5RCxXQUFXLENBQUMsSUFBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLG9EQUFvRCxDQUFDLENBQUM7SUFDM0YsQ0FBQzs7QUFHSDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWMsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtHM0MsQ0FBQyJ9
@@ -0,0 +1,9 @@
1
+ import { type CSSResult } from '@design.estate/dees-element';
2
+ /**
3
+ * Shared visual vocabulary for harness components: card chrome, status
4
+ * pills, and monospace output blocks. Tokens only — both themes flip
5
+ * automatically.
6
+ */
7
+ export declare const harnessCardStyles: CSSResult;
8
+ export declare const harnessPillStyles: CSSResult;
9
+ export declare const harnessMonoStyles: CSSResult;
@@ -0,0 +1,94 @@
1
+ import { css } from '@design.estate/dees-element';
2
+ /**
3
+ * Shared visual vocabulary for harness components: card chrome, status
4
+ * pills, and monospace output blocks. Tokens only — both themes flip
5
+ * automatically.
6
+ */
7
+ export const harnessCardStyles = css `
8
+ .harness-card {
9
+ border: 1px solid var(--dees-color-border-subtle);
10
+ border-left: 2px solid var(--dees-color-border-default);
11
+ border-radius: var(--dees-radius-lg);
12
+ corner-shape: var(--dees-corner-shape);
13
+ background: var(--dees-color-bg-secondary);
14
+ overflow: hidden;
15
+ }
16
+ .harness-card.status-running,
17
+ .harness-card.status-pending {
18
+ border-left-color: var(--dees-color-accent-primary);
19
+ }
20
+ .harness-card.status-completed {
21
+ border-left-color: var(--dees-color-accent-success);
22
+ }
23
+ .harness-card.status-error {
24
+ border-left-color: var(--dees-color-accent-error);
25
+ }
26
+ .harness-card.destructive {
27
+ border-left-color: var(--dees-color-accent-error);
28
+ }
29
+ `;
30
+ export const harnessPillStyles = css `
31
+ .harness-pill {
32
+ flex: 0 0 auto;
33
+ padding: 2px 8px;
34
+ border-radius: var(--dees-radius-full);
35
+ background: var(--dees-color-badge-default-bg);
36
+ color: var(--dees-color-badge-default-fg);
37
+ font-size: 10px;
38
+ font-weight: 700;
39
+ letter-spacing: 0.04em;
40
+ text-transform: uppercase;
41
+ white-space: nowrap;
42
+ }
43
+ .harness-pill.tone-running,
44
+ .harness-pill.tone-pending {
45
+ background: var(--dees-color-fill-secondary);
46
+ color: var(--dees-color-accent-primary);
47
+ }
48
+ .harness-pill.tone-success {
49
+ background: var(--dees-color-badge-success-bg);
50
+ color: var(--dees-color-badge-success-fg);
51
+ }
52
+ .harness-pill.tone-warning {
53
+ background: var(--dees-color-badge-warning-bg);
54
+ color: var(--dees-color-badge-warning-fg);
55
+ }
56
+ .harness-pill.tone-error {
57
+ background: var(--dees-color-badge-error-bg);
58
+ color: var(--dees-color-badge-error-fg);
59
+ }
60
+ `;
61
+ export const harnessMonoStyles = css `
62
+ .harness-mono {
63
+ margin: 0;
64
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md);
65
+ border: 1px solid var(--dees-color-border-subtle);
66
+ border-radius: var(--dees-radius-md);
67
+ corner-shape: var(--dees-corner-shape);
68
+ background: var(--dees-color-code-block-bg);
69
+ color: var(--dees-color-text-primary);
70
+ white-space: pre-wrap;
71
+ overflow-wrap: anywhere;
72
+ overflow: auto;
73
+ font-family: var(--dees-font-family-mono);
74
+ font-size: var(--dees-font-control-size-sm, 12px);
75
+ line-height: 1.5;
76
+ }
77
+ .harness-mono.tone-error {
78
+ color: var(--dees-color-text-error);
79
+ }
80
+ .harness-mono-expand {
81
+ margin-top: var(--dees-spacing-xs);
82
+ padding: 0;
83
+ border: 0;
84
+ background: transparent;
85
+ color: var(--dees-color-link);
86
+ cursor: pointer;
87
+ font-size: var(--dees-font-control-size-sm, 12px);
88
+ }
89
+ .harness-mono-expand:hover {
90
+ color: var(--dees-color-link-hover);
91
+ text-decoration: underline;
92
+ }
93
+ `;
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFybmVzcy5zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2hhcm5lc3Muc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQWtCLE1BQU0sNkJBQTZCLENBQUM7QUFFbEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNCOUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFjLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBOEI5QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWMsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWdDOUMsQ0FBQyJ9
@@ -0,0 +1,18 @@
1
+ export * from './interfaces.js';
2
+ export * from './toolregistry.js';
3
+ export * from './harness.helpers.js';
4
+ export { HarnessMarkdown, markdownStyles } from './harness.markdown.js';
5
+ export { harnessCardStyles, harnessPillStyles, harnessMonoStyles } from './harness.styles.js';
6
+ export * from './harness.demodata.js';
7
+ export * from './dees-harness-chat/index.js';
8
+ export * from './dees-harness-composer/index.js';
9
+ export * from './dees-harness-content-blocks/index.js';
10
+ export * from './dees-harness-message/index.js';
11
+ export * from './dees-harness-permission-card/index.js';
12
+ export * from './dees-harness-message-list/index.js';
13
+ export * from './dees-harness-reasoning/index.js';
14
+ export * from './dees-harness-session-list/index.js';
15
+ export * from './dees-harness-status/index.js';
16
+ export * from './dees-harness-todos/index.js';
17
+ export * from './dees-harness-tool-card/index.js';
18
+ export * from './dees-harness-usage/index.js';
@@ -0,0 +1,22 @@
1
+ // Agentic Chat (harness) Components
2
+ // Renders what an agent harness produces: messages, reasoning, tool calls,
3
+ // MCP content, permissions — plus the composer and session chrome around it.
4
+ export * from './interfaces.js';
5
+ export * from './toolregistry.js';
6
+ export * from './harness.helpers.js';
7
+ export { HarnessMarkdown, markdownStyles } from './harness.markdown.js';
8
+ export { harnessCardStyles, harnessPillStyles, harnessMonoStyles } from './harness.styles.js';
9
+ export * from './harness.demodata.js';
10
+ export * from './dees-harness-chat/index.js';
11
+ export * from './dees-harness-composer/index.js';
12
+ export * from './dees-harness-content-blocks/index.js';
13
+ export * from './dees-harness-message/index.js';
14
+ export * from './dees-harness-permission-card/index.js';
15
+ export * from './dees-harness-message-list/index.js';
16
+ export * from './dees-harness-reasoning/index.js';
17
+ export * from './dees-harness-session-list/index.js';
18
+ export * from './dees-harness-status/index.js';
19
+ export * from './dees-harness-todos/index.js';
20
+ export * from './dees-harness-tool-card/index.js';
21
+ export * from './dees-harness-usage/index.js';
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUYsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywrQkFBK0IsQ0FBQyJ9
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Normalized data contract for the harness (agentic chat) component group.
3
+ *
4
+ * Producers vary widely — smartagent callbacks, IDE runtime wire models,
5
+ * OpenCode-style part arrays, raw MCP results — so these interfaces define
6
+ * the ONE shape the components render. Consumers adapt their runtime's
7
+ * events into these types; everything here is plain data (no DOM, no
8
+ * framework types) so adapters can live anywhere.
9
+ */
10
+ export type THarnessRole = 'user' | 'assistant' | 'system' | 'tool';
11
+ export interface IHarnessReasoningPart {
12
+ id: string;
13
+ text: string;
14
+ /** epoch ms; adapters convert wire ISO strings */
15
+ startedAt?: number;
16
+ /** undefined while the model is still thinking */
17
+ endedAt?: number;
18
+ }
19
+ export interface IHarnessAttachment {
20
+ id: string;
21
+ name: string;
22
+ mediaType: string;
23
+ /** bytes */
24
+ size: number;
25
+ kind: 'image' | 'text' | 'binary';
26
+ /** base64 payload for images and binary previews */
27
+ dataBase64?: string;
28
+ /** inline payload for text attachments */
29
+ text?: string;
30
+ truncated?: boolean;
31
+ }
32
+ export interface IHarnessUsage {
33
+ inputTokens?: number;
34
+ outputTokens?: number;
35
+ totalTokens?: number;
36
+ cacheReadTokens?: number;
37
+ cacheWriteTokens?: number;
38
+ }
39
+ export interface IHarnessMessage {
40
+ /** stable id — used as the keyed-repeat key; never reuse across messages */
41
+ id: string;
42
+ role: THarnessRole;
43
+ text: string;
44
+ /** epoch ms */
45
+ createdAt: number;
46
+ updatedAt?: number;
47
+ /** gates the streaming cursor and markdown parse throttling */
48
+ streaming?: boolean;
49
+ /** defaults to role === 'assistant' when undefined */
50
+ markdown?: boolean;
51
+ reasoning?: IHarnessReasoningPart[];
52
+ attachments?: IHarnessAttachment[];
53
+ /** role 'tool' messages render as a tool card */
54
+ toolCall?: IHarnessToolCall;
55
+ usage?: IHarnessUsage;
56
+ error?: string;
57
+ /** consumer passthrough; never interpreted by the components */
58
+ meta?: Record<string, unknown>;
59
+ }
60
+ export type THarnessToolStatus = 'pending' | 'running' | 'completed' | 'error';
61
+ /**
62
+ * MCP-aligned content blocks (mirrors @modelcontextprotocol/sdk
63
+ * CallToolResult.content entries) so tool results keep their structure
64
+ * instead of being string-flattened.
65
+ */
66
+ export type THarnessContentBlock = {
67
+ type: 'text';
68
+ text: string;
69
+ } | {
70
+ type: 'image';
71
+ data: string;
72
+ mimeType: string;
73
+ } | {
74
+ type: 'audio';
75
+ data: string;
76
+ mimeType: string;
77
+ } | {
78
+ type: 'resource';
79
+ resource: {
80
+ uri: string;
81
+ mimeType?: string;
82
+ text?: string;
83
+ blob?: string;
84
+ };
85
+ } | {
86
+ type: 'resource_link';
87
+ uri: string;
88
+ name: string;
89
+ title?: string;
90
+ description?: string;
91
+ mimeType?: string;
92
+ size?: number;
93
+ };
94
+ export interface IHarnessMcpAnnotations {
95
+ title?: string;
96
+ readOnlyHint?: boolean;
97
+ destructiveHint?: boolean;
98
+ idempotentHint?: boolean;
99
+ openWorldHint?: boolean;
100
+ }
101
+ export interface IHarnessMcpMeta {
102
+ serverName: string;
103
+ /** un-namespaced tool name (the part after `server__`) */
104
+ toolName: string;
105
+ annotations?: IHarnessMcpAnnotations;
106
+ }
107
+ /**
108
+ * Tool calls are deliberately generic-plus-kind rather than a closed
109
+ * discriminated union: the set of tools is open (arbitrary MCP servers,
110
+ * app-specific tools), so classification happens at render time through the
111
+ * tool registry. `kind` is an optional explicit override.
112
+ */
113
+ export interface IHarnessToolCall {
114
+ id: string;
115
+ /** raw tool name as invoked, including `server__tool` MCP namespacing */
116
+ name: string;
117
+ kind?: string;
118
+ status: THarnessToolStatus;
119
+ input?: unknown;
120
+ output?: unknown;
121
+ /** MCP CallToolResult.content, rendered structurally when present */
122
+ contentBlocks?: THarnessContentBlock[];
123
+ /** MCP CallToolResult.structuredContent */
124
+ structuredContent?: unknown;
125
+ /** MCP CallToolResult.isError */
126
+ isError?: boolean;
127
+ errorText?: string;
128
+ mcp?: IHarnessMcpMeta;
129
+ /** epoch ms */
130
+ startedAt?: number;
131
+ finishedAt?: number;
132
+ }
133
+ export interface IHarnessPermissionRequest {
134
+ id: string;
135
+ sessionId?: string;
136
+ /** epoch ms */
137
+ createdAt?: number;
138
+ title: string;
139
+ /** open set; well-known values today: write | delete | shell | browser */
140
+ type: string;
141
+ metadata?: Record<string, unknown>;
142
+ }
143
+ export type THarnessPermissionResponse = 'once' | 'always' | 'reject';
144
+ export interface IHarnessPermissionResponseDetail {
145
+ requestId: string;
146
+ response: THarnessPermissionResponse;
147
+ remember: boolean;
148
+ request: IHarnessPermissionRequest;
149
+ }
150
+ export interface IHarnessSessionMeta {
151
+ id: string;
152
+ title: string;
153
+ createdAt?: number;
154
+ updatedAt?: number;
155
+ messageCount?: number;
156
+ preview?: string;
157
+ }
158
+ export type THarnessTodoStatus = 'pending' | 'in_progress' | 'completed';
159
+ export interface IHarnessTodoItem {
160
+ id?: string;
161
+ content: string;
162
+ status: THarnessTodoStatus;
163
+ }
164
+ export interface IHarnessStatus {
165
+ type: 'idle' | 'busy' | 'error';
166
+ message?: string;
167
+ }
168
+ export interface IHarnessComposerSendDetail {
169
+ text: string;
170
+ attachments: IHarnessAttachment[];
171
+ model?: string;
172
+ reasoningEffort?: string;
173
+ }
174
+ /**
175
+ * Incremental updates for the `applyDelta()` fast path. Deltas mutate the
176
+ * message object already held in `.messages` (so a later full property
177
+ * re-assignment is idempotent) and re-render only the affected message
178
+ * element.
179
+ */
180
+ export type THarnessStreamDelta = {
181
+ type: 'text';
182
+ messageId: string;
183
+ delta: string;
184
+ } | {
185
+ type: 'reasoning-start';
186
+ messageId: string;
187
+ partId: string;
188
+ startedAt?: number;
189
+ } | {
190
+ type: 'reasoning';
191
+ messageId: string;
192
+ partId: string;
193
+ delta: string;
194
+ } | {
195
+ type: 'reasoning-end';
196
+ messageId: string;
197
+ partId: string;
198
+ endedAt?: number;
199
+ } | {
200
+ type: 'tool-update';
201
+ messageId: string;
202
+ tool: Partial<IHarnessToolCall> & {
203
+ id: string;
204
+ };
205
+ } | {
206
+ type: 'message-end';
207
+ messageId: string;
208
+ usage?: IHarnessUsage;
209
+ error?: string;
210
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Normalized data contract for the harness (agentic chat) component group.
3
+ *
4
+ * Producers vary widely — smartagent callbacks, IDE runtime wire models,
5
+ * OpenCode-style part arrays, raw MCP results — so these interfaces define
6
+ * the ONE shape the components render. Consumers adapt their runtime's
7
+ * events into these types; everything here is plain data (no DOM, no
8
+ * framework types) so adapters can live anywhere.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyJ9
@@ -0,0 +1,76 @@
1
+ import type { TemplateResult } from '@design.estate/dees-element';
2
+ import type { IHarnessToolCall, THarnessContentBlock } from './interfaces.js';
3
+ /**
4
+ * Render helpers handed to tool body renderers. Implemented by
5
+ * dees-harness-tool-card (which owns the templates); typed here so custom
6
+ * descriptors can be authored against a stable surface.
7
+ */
8
+ export interface IHarnessToolRenderHelpers {
9
+ /** highlighted code block (dees-dataview-codebox) with optional filename */
10
+ codeBlock(code: string, language?: string, filename?: string): TemplateResult;
11
+ /** before/after diff (dees-dataview-codebox diff mode) */
12
+ diffBlock(before: string, after: string, options?: {
13
+ language?: string;
14
+ filename?: string;
15
+ view?: 'inline' | 'split';
16
+ }): TemplateResult;
17
+ /** plain monospace block with truncation + expand */
18
+ monoBlock(text: string, options?: {
19
+ maxChars?: number;
20
+ tone?: 'default' | 'error';
21
+ }): TemplateResult;
22
+ /** two-column key/value summary */
23
+ keyValues(pairs: Array<[string, string]>): TemplateResult;
24
+ /** MCP content blocks (dees-harness-content-blocks) */
25
+ contentBlocks(blocks: THarnessContentBlock[]): TemplateResult;
26
+ /** constrained inline image from base64 */
27
+ image(dataBase64: string, mimeType: string, alt?: string): TemplateResult;
28
+ }
29
+ export interface IHarnessToolDescriptor {
30
+ /** stable kind id, e.g. 'terminal', 'file-read', 'mcp', 'unknown' */
31
+ kind: string;
32
+ /** exact raw-name matches (fast path); lowercased on registration */
33
+ names?: string[];
34
+ /** fallback matcher when no name matched */
35
+ match?: (call: IHarnessToolCall) => boolean;
36
+ label: string | ((call: IHarnessToolCall) => string);
37
+ /** lucide icon spec, e.g. 'lucide:Terminal' */
38
+ icon: string;
39
+ subtitle?: (call: IHarnessToolCall) => string;
40
+ /**
41
+ * Custom body renderer. Built-in kinds leave this unset — the tool card
42
+ * ships body templates for them — so descriptors stay DOM-free unless a
43
+ * consumer wants a bespoke body.
44
+ */
45
+ renderBody?: (call: IHarnessToolCall, helpers: IHarnessToolRenderHelpers) => TemplateResult;
46
+ defaultExpanded?: boolean | ((call: IHarnessToolCall) => boolean);
47
+ /** styles the card with a destructive accent regardless of status */
48
+ destructive?: boolean;
49
+ }
50
+ /** Splits smartagent's MCP namespacing convention `server__tool`. */
51
+ export declare const parseMcpName: (rawName: string) => {
52
+ serverName: string;
53
+ toolName: string;
54
+ } | undefined;
55
+ /**
56
+ * Maps raw tool calls to render descriptors. A pre-seeded singleton covers
57
+ * the built-in and MCP conventions; apps register custom tools once at boot
58
+ * (`DeesHarnessToolRegistry.default.register(...)`) or hand an isolated
59
+ * `fork()` to individual elements via their `.toolRegistry` property.
60
+ */
61
+ export declare class DeesHarnessToolRegistry {
62
+ static readonly default: DeesHarnessToolRegistry;
63
+ private descriptors;
64
+ private byName;
65
+ private byKind;
66
+ constructor(seedDescriptors?: IHarnessToolDescriptor[]);
67
+ /** Registers (or replaces, by kind) a descriptor. Later wins on names. */
68
+ register(descriptor: IHarnessToolDescriptor): this;
69
+ unregister(kind: string): this;
70
+ descriptorForKind(kind: string): IHarnessToolDescriptor | undefined;
71
+ /** Never returns undefined — falls back to the 'unknown' descriptor. */
72
+ resolve(call: IHarnessToolCall): IHarnessToolDescriptor;
73
+ resolveKind(name: string): string;
74
+ /** Isolated copy for demos, tests, or per-pane toolsets. */
75
+ fork(): DeesHarnessToolRegistry;
76
+ }