@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.
- package/dist_bundle/bundle.js +10399 -4790
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/elements/00group-appui/dees-appui/dees-appui.js +5 -4
- package/dist_ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.js +6 -7
- package/dist_ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.js +4 -6
- package/dist_ts_web/elements/00group-button/dees-button/dees-button.d.ts +7 -1
- package/dist_ts_web/elements/00group-button/dees-button/dees-button.demo.js +16 -2
- package/dist_ts_web/elements/00group-button/dees-button/dees-button.js +65 -25
- package/dist_ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.js +1 -1
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.d.ts +69 -0
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.js +342 -0
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.d.ts +48 -3
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.js +128 -39
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.js +663 -190
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-dataview/dees-dataview-codebox/index.js +2 -1
- package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.d.ts +3 -0
- package/dist_ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.js +48 -30
- package/dist_ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.js +1 -1
- package/dist_ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.js +1 -2
- package/dist_ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.js +1 -1
- package/dist_ts_web/elements/00group-dataview/dees-table/styles.js +1 -1
- package/dist_ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.js +9 -9
- package/dist_ts_web/elements/00group-form/dees-form-submit/dees-form-submit.d.ts +1 -1
- package/dist_ts_web/elements/00group-form/dees-form-submit/dees-form-submit.js +1 -1
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +55 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.js +183 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +412 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-chat/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +65 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +55 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +589 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-composer/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.d.ts +21 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.js +41 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.js +215 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-content-blocks/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.d.ts +58 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.js +126 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.js +551 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.d.ts +50 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.js +101 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.js +424 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-message-list/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.d.ts +27 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.js +46 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.js +282 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-permission-card/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.d.ts +24 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.js +32 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.js +241 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-reasoning/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.d.ts +28 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.js +56 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.js +279 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-session-list/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.d.ts +30 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.js +35 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.js +235 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-status/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-status/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.d.ts +27 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.js +41 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.js +258 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-todos/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.d.ts +35 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.js +162 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.js +368 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.d.ts +2 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/index.js +3 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.d.ts +5 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-tool-card/renderers.js +183 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.d.ts +19 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.js +25 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.js +148 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.d.ts +1 -0
- package/dist_ts_web/elements/00group-harness/dees-harness-usage/index.js +2 -0
- package/dist_ts_web/elements/00group-harness/harness.demodata.d.ts +22 -0
- package/dist_ts_web/elements/00group-harness/harness.demodata.js +94 -0
- package/dist_ts_web/elements/00group-harness/harness.helpers.d.ts +37 -0
- package/dist_ts_web/elements/00group-harness/harness.helpers.js +221 -0
- package/dist_ts_web/elements/00group-harness/harness.markdown.d.ts +25 -0
- package/dist_ts_web/elements/00group-harness/harness.markdown.js +147 -0
- package/dist_ts_web/elements/00group-harness/harness.styles.d.ts +9 -0
- package/dist_ts_web/elements/00group-harness/harness.styles.js +94 -0
- package/dist_ts_web/elements/00group-harness/index.d.ts +18 -0
- package/dist_ts_web/elements/00group-harness/index.js +22 -0
- package/dist_ts_web/elements/00group-harness/interfaces.d.ts +210 -0
- package/dist_ts_web/elements/00group-harness/interfaces.js +11 -0
- package/dist_ts_web/elements/00group-harness/toolregistry.d.ts +76 -0
- package/dist_ts_web/elements/00group-harness/toolregistry.js +210 -0
- package/dist_ts_web/elements/00group-input/dees-input-code/dees-input-code.js +30 -18
- package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +73 -46
- package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +15 -16
- package/dist_ts_web/elements/00group-input/dees-input-list/dees-input-list.js +2 -4
- package/dist_ts_web/elements/00group-input/dees-input-tags/dees-input-tags.js +36 -15
- package/dist_ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.js +5 -4
- package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.js +10 -89
- package/dist_ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.js +12 -8
- package/dist_ts_web/elements/00group-layout/dees-chips/dees-chips.js +1 -1
- package/dist_ts_web/elements/00group-layout/dees-pagination/dees-pagination.js +27 -12
- package/dist_ts_web/elements/00group-layout/dees-settings/dees-settings.js +1 -1
- package/dist_ts_web/elements/00group-layout/dees-stepper/dees-stepper.js +14 -18
- package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +6 -7
- package/dist_ts_web/elements/00group-overlay/dees-modal/dees-modal.js +6 -21
- package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.d.ts +2 -1
- package/dist_ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.js +10 -4
- package/dist_ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.js +1 -1
- package/dist_ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.js +9 -8
- package/dist_ts_web/elements/00group-workspace/dees-workspace/dees-workspace.js +1 -1
- package/dist_ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.js +3 -4
- package/dist_ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.js +8 -78
- package/dist_ts_web/elements/00syntax.d.ts +28 -0
- package/dist_ts_web/elements/00syntax.js +98 -0
- package/dist_ts_web/elements/00theme.js +26 -14
- package/dist_ts_web/elements/index.d.ts +1 -0
- package/dist_ts_web/elements/index.js +2 -1
- package/dist_watch/bundle.js +233948 -0
- package/dist_watch/bundle.js.map +7 -0
- package/dist_watch/index.html +28 -0
- package/package.json +2 -2
- package/readme.hints.md +7 -1
- package/readme.md +116 -9
- package/readme.playbook.md +10 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/elements/00group-appui/dees-appui/dees-appui.ts +4 -3
- package/ts_web/elements/00group-appui/dees-appui-profiledropdown/dees-appui-profiledropdown.ts +5 -6
- package/ts_web/elements/00group-appui/dees-appui-tabs/dees-appui-tabs.ts +3 -5
- package/ts_web/elements/00group-button/dees-button/dees-button.demo.ts +15 -1
- package/ts_web/elements/00group-button/dees-button/dees-button.ts +59 -24
- package/ts_web/elements/00group-chart/dees-chart-log/dees-chart-log.ts +1 -1
- package/ts_web/elements/00group-dataview/dees-dataview-codebox/codebox.diff.ts +401 -0
- package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.demo.ts +132 -38
- package/ts_web/elements/00group-dataview/dees-dataview-codebox/dees-dataview-codebox.ts +649 -187
- package/ts_web/elements/00group-dataview/dees-dataview-codebox/index.ts +1 -0
- package/ts_web/elements/00group-dataview/dees-dataview-statusobject/dees-dataview-statusobject.ts +45 -30
- package/ts_web/elements/00group-dataview/dees-grouped-list/dees-grouped-list.ts +1 -1
- package/ts_web/elements/00group-dataview/dees-statsgrid/dees-statsgrid.ts +0 -1
- package/ts_web/elements/00group-dataview/dees-storage-browser/dees-storage-keys.ts +1 -1
- package/ts_web/elements/00group-dataview/dees-table/styles.ts +1 -1
- package/ts_web/elements/00group-feedback/dees-progressbar/dees-progressbar.ts +9 -9
- package/ts_web/elements/00group-form/dees-form-submit/dees-form-submit.ts +1 -1
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.demo.ts +193 -0
- package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +301 -0
- package/ts_web/elements/00group-harness/dees-harness-chat/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +56 -0
- package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +514 -0
- package/ts_web/elements/00group-harness/dees-harness-composer/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.demo.ts +44 -0
- package/ts_web/elements/00group-harness/dees-harness-content-blocks/dees-harness-content-blocks.ts +172 -0
- package/ts_web/elements/00group-harness/dees-harness-content-blocks/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.demo.ts +129 -0
- package/ts_web/elements/00group-harness/dees-harness-message/dees-harness-message.ts +498 -0
- package/ts_web/elements/00group-harness/dees-harness-message/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.demo.ts +105 -0
- package/ts_web/elements/00group-harness/dees-harness-message-list/dees-harness-message-list.ts +342 -0
- package/ts_web/elements/00group-harness/dees-harness-message-list/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.demo.ts +47 -0
- package/ts_web/elements/00group-harness/dees-harness-permission-card/dees-harness-permission-card.ts +225 -0
- package/ts_web/elements/00group-harness/dees-harness-permission-card/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.demo.ts +32 -0
- package/ts_web/elements/00group-harness/dees-harness-reasoning/dees-harness-reasoning.ts +195 -0
- package/ts_web/elements/00group-harness/dees-harness-reasoning/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.demo.ts +59 -0
- package/ts_web/elements/00group-harness/dees-harness-session-list/dees-harness-session-list.ts +222 -0
- package/ts_web/elements/00group-harness/dees-harness-session-list/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.demo.ts +35 -0
- package/ts_web/elements/00group-harness/dees-harness-status/dees-harness-status.ts +187 -0
- package/ts_web/elements/00group-harness/dees-harness-status/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.demo.ts +43 -0
- package/ts_web/elements/00group-harness/dees-harness-todos/dees-harness-todos.ts +206 -0
- package/ts_web/elements/00group-harness/dees-harness-todos/index.ts +1 -0
- package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.demo.ts +166 -0
- package/ts_web/elements/00group-harness/dees-harness-tool-card/dees-harness-tool-card.ts +315 -0
- package/ts_web/elements/00group-harness/dees-harness-tool-card/index.ts +2 -0
- package/ts_web/elements/00group-harness/dees-harness-tool-card/renderers.ts +205 -0
- package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.demo.ts +25 -0
- package/ts_web/elements/00group-harness/dees-harness-usage/dees-harness-usage.ts +96 -0
- package/ts_web/elements/00group-harness/dees-harness-usage/index.ts +1 -0
- package/ts_web/elements/00group-harness/harness.demodata.ts +113 -0
- package/ts_web/elements/00group-harness/harness.helpers.ts +227 -0
- package/ts_web/elements/00group-harness/harness.markdown.ts +151 -0
- package/ts_web/elements/00group-harness/harness.styles.ts +96 -0
- package/ts_web/elements/00group-harness/index.ts +22 -0
- package/ts_web/elements/00group-harness/interfaces.ts +203 -0
- package/ts_web/elements/00group-harness/toolregistry.ts +264 -0
- package/ts_web/elements/00group-input/dees-input-code/dees-input-code.ts +29 -17
- package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +72 -45
- package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +14 -15
- package/ts_web/elements/00group-input/dees-input-list/dees-input-list.ts +1 -3
- package/ts_web/elements/00group-input/dees-input-tags/dees-input-tags.ts +35 -14
- package/ts_web/elements/00group-input/dees-input-toggle/dees-input-toggle.ts +4 -3
- package/ts_web/elements/00group-input/dees-input-wysiwyg/blocks/text/code.block.ts +9 -88
- package/ts_web/elements/00group-input/dees-input-wysiwyg/dees-input-wysiwyg.ts +11 -7
- package/ts_web/elements/00group-layout/dees-chips/dees-chips.ts +1 -1
- package/ts_web/elements/00group-layout/dees-pagination/dees-pagination.ts +26 -11
- package/ts_web/elements/00group-layout/dees-settings/dees-settings.ts +1 -1
- package/ts_web/elements/00group-layout/dees-stepper/dees-stepper.ts +13 -17
- package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +5 -6
- package/ts_web/elements/00group-overlay/dees-modal/dees-modal.ts +5 -20
- package/ts_web/elements/00group-overlay/dees-windowlayer/dees-windowlayer.ts +10 -3
- package/ts_web/elements/00group-simple/dees-shopping-productcard/dees-shopping-productcard.ts +1 -1
- package/ts_web/elements/00group-simple/dees-simple-appdash/dees-simple-appdash.ts +8 -7
- package/ts_web/elements/00group-workspace/dees-workspace/dees-workspace.ts +1 -1
- package/ts_web/elements/00group-workspace/dees-workspace-filetree/dees-workspace-filetree.ts +2 -3
- package/ts_web/elements/00group-workspace/dees-workspace-markdownoutlet/dees-workspace-markdownoutlet.ts +7 -77
- package/ts_web/elements/00syntax.ts +124 -0
- package/ts_web/elements/00theme.ts +25 -13
- package/ts_web/elements/index.ts +1 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { demoFunc } from './dees-harness-usage.demo.js';
|
|
36
|
+
import { DeesElement, html, css, customElement, property, cssManager, } from '@design.estate/dees-element';
|
|
37
|
+
import { themeDefaultStyles } from '../../00theme.js';
|
|
38
|
+
const formatTokenCount = (count) => {
|
|
39
|
+
if (!count)
|
|
40
|
+
return '0';
|
|
41
|
+
if (count < 1000)
|
|
42
|
+
return String(count);
|
|
43
|
+
if (count < 1_000_000)
|
|
44
|
+
return `${(count / 1000).toFixed(count < 10_000 ? 1 : 0)}k`;
|
|
45
|
+
return `${(count / 1_000_000).toFixed(1)}M`;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Token-usage chip. Compact mode shows only the total; the full mode shows
|
|
49
|
+
* in/out/total. Cache read/write detail lives in the tooltip.
|
|
50
|
+
*/
|
|
51
|
+
let DeesHarnessUsage = (() => {
|
|
52
|
+
let _classDecorators = [customElement('dees-harness-usage')];
|
|
53
|
+
let _classDescriptor;
|
|
54
|
+
let _classExtraInitializers = [];
|
|
55
|
+
let _classThis;
|
|
56
|
+
let _classSuper = DeesElement;
|
|
57
|
+
let _usage_decorators;
|
|
58
|
+
let _usage_initializers = [];
|
|
59
|
+
let _usage_extraInitializers = [];
|
|
60
|
+
let _compact_decorators;
|
|
61
|
+
let _compact_initializers = [];
|
|
62
|
+
let _compact_extraInitializers = [];
|
|
63
|
+
var DeesHarnessUsage = class extends _classSuper {
|
|
64
|
+
static { _classThis = this; }
|
|
65
|
+
static {
|
|
66
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
67
|
+
_usage_decorators = [property({ attribute: false })];
|
|
68
|
+
_compact_decorators = [property({ type: Boolean })];
|
|
69
|
+
__esDecorate(this, null, _usage_decorators, { kind: "accessor", name: "usage", static: false, private: false, access: { has: obj => "usage" in obj, get: obj => obj.usage, set: (obj, value) => { obj.usage = value; } }, metadata: _metadata }, _usage_initializers, _usage_extraInitializers);
|
|
70
|
+
__esDecorate(this, null, _compact_decorators, { kind: "accessor", name: "compact", static: false, private: false, access: { has: obj => "compact" in obj, get: obj => obj.compact, set: (obj, value) => { obj.compact = value; } }, metadata: _metadata }, _compact_initializers, _compact_extraInitializers);
|
|
71
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
72
|
+
DeesHarnessUsage = _classThis = _classDescriptor.value;
|
|
73
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
74
|
+
}
|
|
75
|
+
static demo = demoFunc;
|
|
76
|
+
static demoGroups = ['Agent Chat'];
|
|
77
|
+
#usage_accessor_storage = __runInitializers(this, _usage_initializers, {});
|
|
78
|
+
get usage() { return this.#usage_accessor_storage; }
|
|
79
|
+
set usage(value) { this.#usage_accessor_storage = value; }
|
|
80
|
+
#compact_accessor_storage = (__runInitializers(this, _usage_extraInitializers), __runInitializers(this, _compact_initializers, false));
|
|
81
|
+
get compact() { return this.#compact_accessor_storage; }
|
|
82
|
+
set compact(value) { this.#compact_accessor_storage = value; }
|
|
83
|
+
static styles = [
|
|
84
|
+
themeDefaultStyles,
|
|
85
|
+
cssManager.defaultStyles,
|
|
86
|
+
css `
|
|
87
|
+
:host {
|
|
88
|
+
display: inline-block;
|
|
89
|
+
font-family: var(--dees-font-family);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.chip {
|
|
93
|
+
display: inline-flex;
|
|
94
|
+
align-items: center;
|
|
95
|
+
gap: var(--dees-spacing-xs);
|
|
96
|
+
padding: 2px 10px;
|
|
97
|
+
border-radius: var(--dees-radius-full);
|
|
98
|
+
background: var(--dees-color-fill-secondary);
|
|
99
|
+
color: var(--dees-color-text-secondary);
|
|
100
|
+
font-size: var(--dees-font-caption1-size, 11px);
|
|
101
|
+
white-space: nowrap;
|
|
102
|
+
cursor: default;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.total {
|
|
106
|
+
color: var(--dees-color-text-primary);
|
|
107
|
+
font-weight: 600;
|
|
108
|
+
}
|
|
109
|
+
`,
|
|
110
|
+
];
|
|
111
|
+
render() {
|
|
112
|
+
const usage = this.usage;
|
|
113
|
+
if (!usage.totalTokens && !usage.inputTokens && !usage.outputTokens)
|
|
114
|
+
return html ``;
|
|
115
|
+
const total = usage.totalTokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
|
|
116
|
+
const tooltip = [
|
|
117
|
+
`input: ${usage.inputTokens ?? 0}`,
|
|
118
|
+
`output: ${usage.outputTokens ?? 0}`,
|
|
119
|
+
`total: ${total}`,
|
|
120
|
+
usage.cacheReadTokens ? `cache read: ${usage.cacheReadTokens}` : '',
|
|
121
|
+
usage.cacheWriteTokens ? `cache write: ${usage.cacheWriteTokens}` : '',
|
|
122
|
+
].filter(Boolean).join('\n');
|
|
123
|
+
return html `
|
|
124
|
+
<span class="chip" title=${tooltip}>
|
|
125
|
+
${this.compact
|
|
126
|
+
? html `<span class="total">${formatTokenCount(total)}</span> tokens`
|
|
127
|
+
: html `
|
|
128
|
+
<span>${formatTokenCount(usage.inputTokens)} in</span>
|
|
129
|
+
<span>·</span>
|
|
130
|
+
<span>${formatTokenCount(usage.outputTokens)} out</span>
|
|
131
|
+
<span>·</span>
|
|
132
|
+
<span class="total">${formatTokenCount(total)}</span>
|
|
133
|
+
`}
|
|
134
|
+
</span>
|
|
135
|
+
`;
|
|
136
|
+
}
|
|
137
|
+
constructor() {
|
|
138
|
+
super(...arguments);
|
|
139
|
+
__runInitializers(this, _compact_extraInitializers);
|
|
140
|
+
}
|
|
141
|
+
static {
|
|
142
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
return DeesHarnessUsage = _classThis;
|
|
146
|
+
})();
|
|
147
|
+
export { DeesHarnessUsage };
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1oYXJuZXNzLXVzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9kZWVzLWhhcm5lc3MtdXNhZ2UvZGVlcy1oYXJuZXNzLXVzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUNMLFdBQVcsRUFDWCxJQUFJLEVBQ0osR0FBRyxFQUNILGFBQWEsRUFFYixRQUFRLEVBQ1IsVUFBVSxHQUNYLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFTdEQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWMsRUFBVSxFQUFFO0lBQ2xELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDdkIsSUFBSSxLQUFLLEdBQUcsSUFBSTtRQUFFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLElBQUksS0FBSyxHQUFHLFNBQVM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNuRixPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDOUMsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0lBRVUsZ0JBQWdCOzRCQUQ1QixhQUFhLENBQUMsb0JBQW9CLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7OztnQ0FBbkIsU0FBUSxXQUFXOzs7O2lDQUk5QyxRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBRzlCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUY1QixvS0FBUyxLQUFLLDZCQUFMLEtBQUsscUZBQXFCO1lBR25DLDBLQUFTLE9BQU8sNkJBQVAsT0FBTyx5RkFBa0I7WUFScEMsNktBZ0VDOzs7O1FBL0RRLE1BQU0sQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUcxQyx1RUFBZ0MsRUFBRSxFQUFDO1FBQW5DLElBQVMsS0FBSywyQ0FBcUI7UUFBbkMsSUFBUyxLQUFLLGlEQUFxQjtRQUduQywrSEFBNEIsS0FBSyxHQUFDO1FBQWxDLElBQVMsT0FBTyw2Q0FBa0I7UUFBbEMsSUFBUyxPQUFPLG1EQUFrQjtRQUUzQixNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ3JCLGtCQUFrQjtZQUNsQixVQUFVLENBQUMsYUFBYTtZQUN4QixHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBdUJGO1NBQ0YsQ0FBQztRQUVLLE1BQU07WUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO2dCQUFFLE9BQU8sSUFBSSxDQUFBLEVBQUUsQ0FBQztZQUNuRixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDeEYsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsVUFBVSxLQUFLLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRTtnQkFDbEMsV0FBVyxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsRUFBRTtnQkFDcEMsVUFBVSxLQUFLLEVBQUU7Z0JBQ2pCLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNuRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTthQUN2RSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUE7aUNBQ2tCLE9BQU87VUFDOUIsSUFBSSxDQUFDLE9BQU87Z0JBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQSx1QkFBdUIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtnQkFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQTtzQkFDTSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDOztzQkFFbkMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQzs7b0NBRXRCLGdCQUFnQixDQUFDLEtBQUssQ0FBQzthQUM5Qzs7S0FFUixDQUFDO1FBQ0osQ0FBQzs7Ozs7O1lBL0RVLHVEQUFnQjs7Ozs7U0FBaEIsZ0JBQWdCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dees-harness-usage.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './dees-harness-usage.js';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1oYXJuZXNzL2RlZXMtaGFybmVzcy11c2FnZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDIn0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared demo fixtures for the harness group. Pure data plus a small
|
|
3
|
+
* streaming simulator used by the demos to exercise the delta fast path.
|
|
4
|
+
* Tool-call and MCP fixtures grow with the tool-card components.
|
|
5
|
+
*/
|
|
6
|
+
import type { IHarnessMessage, THarnessStreamDelta } from './interfaces.js';
|
|
7
|
+
export declare const harnessDemoMarkdown: string;
|
|
8
|
+
export declare const harnessDemoConversation: () => IHarnessMessage[];
|
|
9
|
+
export interface IHarnessStreamSimulatorTarget {
|
|
10
|
+
applyDelta(delta: THarnessStreamDelta): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Streams a canned reply into a target (message list or chat) through the
|
|
14
|
+
* delta fast path. Returns a stop function. The caller adds the (initially
|
|
15
|
+
* empty, streaming) message to the target's `.messages` first.
|
|
16
|
+
*/
|
|
17
|
+
export declare const makeStreamingSimulator: (target: IHarnessStreamSimulatorTarget, messageId: string, options?: {
|
|
18
|
+
intervalMs?: number;
|
|
19
|
+
chunkSize?: number;
|
|
20
|
+
text?: string;
|
|
21
|
+
withReasoning?: boolean;
|
|
22
|
+
}) => (() => void);
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
export const harnessDemoMarkdown = [
|
|
2
|
+
'## Deploy summary',
|
|
3
|
+
'',
|
|
4
|
+
'The pipeline finished in **4m 12s** — one job regressed:',
|
|
5
|
+
'',
|
|
6
|
+
'| job | duration | baseline |',
|
|
7
|
+
'| --- | --- | --- |',
|
|
8
|
+
'| build | 61s | 58s |',
|
|
9
|
+
'| tests | 122s | 119s |',
|
|
10
|
+
'| sitemap | 41s | 13s |',
|
|
11
|
+
'',
|
|
12
|
+
'```typescript',
|
|
13
|
+
"const cacheKey = hash(routeManifest); // pin to manifest, not locale",
|
|
14
|
+
'```',
|
|
15
|
+
'',
|
|
16
|
+
'Recommendation: pin the sitemap cache key to the route manifest hash.',
|
|
17
|
+
].join('\n');
|
|
18
|
+
export const harnessDemoConversation = () => [
|
|
19
|
+
{
|
|
20
|
+
id: 'demo-u1',
|
|
21
|
+
role: 'user',
|
|
22
|
+
text: 'Summarize the last deploy and flag anything that regressed.',
|
|
23
|
+
createdAt: Date.now() - 420_000,
|
|
24
|
+
attachments: [
|
|
25
|
+
{ id: 'demo-att1', name: 'deploy.log', mediaType: 'text/plain', size: 18_432, kind: 'text', truncated: true },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: 'demo-a1',
|
|
30
|
+
role: 'assistant',
|
|
31
|
+
text: harnessDemoMarkdown,
|
|
32
|
+
createdAt: Date.now() - 400_000,
|
|
33
|
+
reasoning: [
|
|
34
|
+
{
|
|
35
|
+
id: 'demo-r1',
|
|
36
|
+
text: 'Compare job timings against the previous three runs; anything above 2× baseline is a regression worth naming.',
|
|
37
|
+
startedAt: Date.now() - 415_000,
|
|
38
|
+
endedAt: Date.now() - 411_000,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
usage: { inputTokens: 1840, outputTokens: 310, totalTokens: 2150 },
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'demo-u2',
|
|
45
|
+
role: 'user',
|
|
46
|
+
text: 'Prepare the cache-key patch please.',
|
|
47
|
+
createdAt: Date.now() - 300_000,
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
/**
|
|
51
|
+
* Streams a canned reply into a target (message list or chat) through the
|
|
52
|
+
* delta fast path. Returns a stop function. The caller adds the (initially
|
|
53
|
+
* empty, streaming) message to the target's `.messages` first.
|
|
54
|
+
*/
|
|
55
|
+
export const makeStreamingSimulator = (target, messageId, options = {}) => {
|
|
56
|
+
const text = options.text
|
|
57
|
+
?? 'Working on the patch: pinning the sitemap cache key to the route manifest hash. The change is three lines in `sitemap.job.ts`, plus a regression test that asserts the cache key stays stable across locale rollouts.';
|
|
58
|
+
const intervalMs = options.intervalMs ?? 40;
|
|
59
|
+
const chunkSize = options.chunkSize ?? 6;
|
|
60
|
+
let offset = 0;
|
|
61
|
+
let reasoningDone = !(options.withReasoning ?? true);
|
|
62
|
+
const reasoningText = 'The cache key currently includes the locale list, which changed with the rollout — that is why every route re-crawled.';
|
|
63
|
+
let reasoningOffset = 0;
|
|
64
|
+
if (!reasoningDone) {
|
|
65
|
+
target.applyDelta({ type: 'reasoning-start', messageId, partId: `${messageId}-r1`, startedAt: Date.now() });
|
|
66
|
+
}
|
|
67
|
+
const interval = setInterval(() => {
|
|
68
|
+
if (!reasoningDone) {
|
|
69
|
+
const chunk = reasoningText.slice(reasoningOffset, reasoningOffset + chunkSize * 2);
|
|
70
|
+
reasoningOffset += chunkSize * 2;
|
|
71
|
+
if (chunk) {
|
|
72
|
+
target.applyDelta({ type: 'reasoning', messageId, partId: `${messageId}-r1`, delta: chunk });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
target.applyDelta({ type: 'reasoning-end', messageId, partId: `${messageId}-r1`, endedAt: Date.now() });
|
|
76
|
+
reasoningDone = true;
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const chunk = text.slice(offset, offset + chunkSize);
|
|
80
|
+
offset += chunkSize;
|
|
81
|
+
if (!chunk) {
|
|
82
|
+
clearInterval(interval);
|
|
83
|
+
target.applyDelta({
|
|
84
|
+
type: 'message-end',
|
|
85
|
+
messageId,
|
|
86
|
+
usage: { inputTokens: 980, outputTokens: 140, totalTokens: 1120 },
|
|
87
|
+
});
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
target.applyDelta({ type: 'text', messageId, delta: chunk });
|
|
91
|
+
}, intervalMs);
|
|
92
|
+
return () => clearInterval(interval);
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFybmVzcy5kZW1vZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWhhcm5lc3MvaGFybmVzcy5kZW1vZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxtQkFBbUI7SUFDbkIsRUFBRTtJQUNGLDBEQUEwRDtJQUMxRCxFQUFFO0lBQ0YsK0JBQStCO0lBQy9CLHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixFQUFFO0lBQ0YsZUFBZTtJQUNmLHNFQUFzRTtJQUN0RSxLQUFLO0lBQ0wsRUFBRTtJQUNGLHVFQUF1RTtDQUN4RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUViLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQXNCLEVBQUUsQ0FBQztJQUM5RDtRQUNFLEVBQUUsRUFBRSxTQUFTO1FBQ2IsSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsNkRBQTZEO1FBQ25FLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTztRQUMvQixXQUFXLEVBQUU7WUFDWCxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1NBQzlHO0tBQ0Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxTQUFTO1FBQ2IsSUFBSSxFQUFFLFdBQVc7UUFDakIsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU87UUFDL0IsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsSUFBSSxFQUFFLCtHQUErRztnQkFDckgsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPO2dCQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU87YUFDOUI7U0FDRjtRQUNELEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO0tBQ25FO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsU0FBUztRQUNiLElBQUksRUFBRSxNQUFNO1FBQ1osSUFBSSxFQUFFLHFDQUFxQztRQUMzQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU87S0FDaEM7Q0FDRixDQUFDO0FBTUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLE1BQXFDLEVBQ3JDLFNBQWlCLEVBQ2pCLFVBQStGLEVBQUUsRUFDbkYsRUFBRTtJQUNoQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSTtXQUNwQix1TkFBdU4sQ0FBQztJQUM3TixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNyRCxNQUFNLGFBQWEsR0FBRyx3SEFBd0gsQ0FBQztJQUMvSSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7SUFFeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxlQUFlLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLGVBQWUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLFNBQVMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sSUFBSSxTQUFTLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQ2hCLElBQUksRUFBRSxhQUFhO2dCQUNuQixTQUFTO2dCQUNULEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2FBQ2xFLENBQUMsQ0FBQztZQUNILE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVmLE9BQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers shared across the harness group: formatting, language
|
|
3
|
+
* detection, attachment constraints, and defensive value summarization.
|
|
4
|
+
* No DOM access; safe to import from anywhere including tests.
|
|
5
|
+
*/
|
|
6
|
+
import type { IHarnessTodoItem } from './interfaces.js';
|
|
7
|
+
export declare const harnessMaxAttachmentBytes: number;
|
|
8
|
+
export declare const harnessMaxTotalAttachmentBytes: number;
|
|
9
|
+
export declare const harnessSupportedImageTypes: Set<string>;
|
|
10
|
+
export declare const harnessSupportedTextTypes: Set<string>;
|
|
11
|
+
export declare const harnessIsRecord: (value: unknown) => value is Record<string, unknown>;
|
|
12
|
+
export declare const harnessFormatBytes: (bytes: unknown) => string;
|
|
13
|
+
export declare const harnessFormatDuration: (startedAt?: number, finishedAt?: number) => string;
|
|
14
|
+
export declare const harnessFormatRelativeTime: (epochMs?: number) => string;
|
|
15
|
+
export declare const harnessLanguageForPath: (filePath: unknown) => string;
|
|
16
|
+
export declare const harnessMediaTypeForFile: (file: File) => string;
|
|
17
|
+
export declare const harnessIsSupportedAttachmentType: (mediaType: string) => boolean;
|
|
18
|
+
export declare const harnessFileToBase64: (file: File) => Promise<string>;
|
|
19
|
+
export declare const harnessTruncate: (text: string, maxChars?: number) => {
|
|
20
|
+
text: string;
|
|
21
|
+
truncated: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare const harnessStringifyValue: (value: unknown) => string;
|
|
24
|
+
/**
|
|
25
|
+
* Defensive one-glance summary of an arbitrary tool input/output object:
|
|
26
|
+
* well-known keys first, then remaining scalars. Ported from the git.zone
|
|
27
|
+
* IDE's agent formatting layer.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Extracts todo items from a todo-tool input/output. Accepts { todos: [...] }
|
|
31
|
+
* or a bare array; items may carry content/subject/title and unknown statuses
|
|
32
|
+
* normalize to 'pending'.
|
|
33
|
+
*/
|
|
34
|
+
export declare const harnessParseTodos: (value: unknown) => IHarnessTodoItem[];
|
|
35
|
+
export declare const harnessSummarizeValue: (value: unknown) => string;
|
|
36
|
+
/** First meaningful line of a summarized value; used for card subtitles. */
|
|
37
|
+
export declare const harnessSummaryLine: (value: unknown) => string;
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
export const harnessMaxAttachmentBytes = 10 * 1024 * 1024;
|
|
2
|
+
export const harnessMaxTotalAttachmentBytes = 30 * 1024 * 1024;
|
|
3
|
+
export const harnessSupportedImageTypes = new Set([
|
|
4
|
+
'image/png',
|
|
5
|
+
'image/jpeg',
|
|
6
|
+
'image/webp',
|
|
7
|
+
'image/gif',
|
|
8
|
+
]);
|
|
9
|
+
export const harnessSupportedTextTypes = new Set([
|
|
10
|
+
'application/csv',
|
|
11
|
+
'application/json',
|
|
12
|
+
'application/ld+json',
|
|
13
|
+
'application/xml',
|
|
14
|
+
'application/yaml',
|
|
15
|
+
'text/csv',
|
|
16
|
+
'text/html',
|
|
17
|
+
'text/javascript',
|
|
18
|
+
'text/markdown',
|
|
19
|
+
'text/plain',
|
|
20
|
+
'text/xml',
|
|
21
|
+
'text/yaml',
|
|
22
|
+
]);
|
|
23
|
+
const mediaTypeByExtension = {
|
|
24
|
+
css: 'text/css',
|
|
25
|
+
csv: 'text/csv',
|
|
26
|
+
html: 'text/html',
|
|
27
|
+
jpeg: 'image/jpeg',
|
|
28
|
+
jpg: 'image/jpeg',
|
|
29
|
+
js: 'text/javascript',
|
|
30
|
+
json: 'application/json',
|
|
31
|
+
jsonl: 'application/json',
|
|
32
|
+
log: 'text/plain',
|
|
33
|
+
md: 'text/markdown',
|
|
34
|
+
mjs: 'text/javascript',
|
|
35
|
+
png: 'image/png',
|
|
36
|
+
svg: 'image/svg+xml',
|
|
37
|
+
ts: 'text/plain',
|
|
38
|
+
tsx: 'text/plain',
|
|
39
|
+
txt: 'text/plain',
|
|
40
|
+
webp: 'image/webp',
|
|
41
|
+
xml: 'application/xml',
|
|
42
|
+
yaml: 'application/yaml',
|
|
43
|
+
yml: 'application/yaml',
|
|
44
|
+
};
|
|
45
|
+
const languageByExtension = {
|
|
46
|
+
c: 'c',
|
|
47
|
+
cjs: 'javascript',
|
|
48
|
+
cpp: 'cpp',
|
|
49
|
+
cs: 'csharp',
|
|
50
|
+
css: 'css',
|
|
51
|
+
go: 'go',
|
|
52
|
+
h: 'c',
|
|
53
|
+
html: 'html',
|
|
54
|
+
java: 'java',
|
|
55
|
+
js: 'javascript',
|
|
56
|
+
json: 'json',
|
|
57
|
+
jsx: 'javascript',
|
|
58
|
+
kt: 'kotlin',
|
|
59
|
+
md: 'markdown',
|
|
60
|
+
mjs: 'javascript',
|
|
61
|
+
php: 'php',
|
|
62
|
+
py: 'python',
|
|
63
|
+
rb: 'ruby',
|
|
64
|
+
rs: 'rust',
|
|
65
|
+
sh: 'bash',
|
|
66
|
+
sql: 'sql',
|
|
67
|
+
swift: 'swift',
|
|
68
|
+
toml: 'ini',
|
|
69
|
+
ts: 'typescript',
|
|
70
|
+
tsx: 'typescript',
|
|
71
|
+
xml: 'xml',
|
|
72
|
+
yaml: 'yaml',
|
|
73
|
+
yml: 'yaml',
|
|
74
|
+
zsh: 'bash',
|
|
75
|
+
};
|
|
76
|
+
export const harnessIsRecord = (value) => {
|
|
77
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
78
|
+
};
|
|
79
|
+
export const harnessFormatBytes = (bytes) => {
|
|
80
|
+
const value = typeof bytes === 'number' && Number.isFinite(bytes) ? bytes : 0;
|
|
81
|
+
if (value < 1024)
|
|
82
|
+
return `${value} B`;
|
|
83
|
+
if (value < 1024 * 1024)
|
|
84
|
+
return `${(value / 1024).toFixed(value < 10 * 1024 ? 1 : 0)} KB`;
|
|
85
|
+
return `${(value / 1024 / 1024).toFixed(value < 10 * 1024 * 1024 ? 1 : 0)} MB`;
|
|
86
|
+
};
|
|
87
|
+
export const harnessFormatDuration = (startedAt, finishedAt) => {
|
|
88
|
+
if (!startedAt || !finishedAt || finishedAt < startedAt)
|
|
89
|
+
return '';
|
|
90
|
+
const ms = finishedAt - startedAt;
|
|
91
|
+
if (ms < 1000)
|
|
92
|
+
return `${ms}ms`;
|
|
93
|
+
if (ms < 60_000)
|
|
94
|
+
return `${(ms / 1000).toFixed(ms < 10_000 ? 1 : 0)}s`;
|
|
95
|
+
return `${Math.floor(ms / 60_000)}m ${Math.round((ms % 60_000) / 1000)}s`;
|
|
96
|
+
};
|
|
97
|
+
export const harnessFormatRelativeTime = (epochMs) => {
|
|
98
|
+
if (!epochMs)
|
|
99
|
+
return '';
|
|
100
|
+
const deltaMs = Date.now() - epochMs;
|
|
101
|
+
if (deltaMs < 45_000)
|
|
102
|
+
return 'just now';
|
|
103
|
+
const minutes = Math.round(deltaMs / 60_000);
|
|
104
|
+
if (minutes < 60)
|
|
105
|
+
return `${minutes}m ago`;
|
|
106
|
+
const hours = Math.round(minutes / 60);
|
|
107
|
+
if (hours < 24)
|
|
108
|
+
return `${hours}h ago`;
|
|
109
|
+
const days = Math.round(hours / 24);
|
|
110
|
+
if (days < 7)
|
|
111
|
+
return `${days}d ago`;
|
|
112
|
+
return new Date(epochMs).toLocaleDateString();
|
|
113
|
+
};
|
|
114
|
+
export const harnessLanguageForPath = (filePath) => {
|
|
115
|
+
const extension = String(filePath || '').split('.').pop()?.toLowerCase() || '';
|
|
116
|
+
return languageByExtension[extension] || 'plaintext';
|
|
117
|
+
};
|
|
118
|
+
export const harnessMediaTypeForFile = (file) => {
|
|
119
|
+
if (file.type)
|
|
120
|
+
return file.type;
|
|
121
|
+
const extension = file.name.split('.').pop()?.toLowerCase() || '';
|
|
122
|
+
return mediaTypeByExtension[extension] || 'application/octet-stream';
|
|
123
|
+
};
|
|
124
|
+
export const harnessIsSupportedAttachmentType = (mediaType) => {
|
|
125
|
+
return (harnessSupportedImageTypes.has(mediaType)
|
|
126
|
+
|| mediaType.startsWith('text/')
|
|
127
|
+
|| harnessSupportedTextTypes.has(mediaType));
|
|
128
|
+
};
|
|
129
|
+
export const harnessFileToBase64 = (file) => new Promise((resolve, reject) => {
|
|
130
|
+
const reader = new FileReader();
|
|
131
|
+
reader.onload = () => {
|
|
132
|
+
const result = typeof reader.result === 'string' ? reader.result : '';
|
|
133
|
+
const marker = ';base64,';
|
|
134
|
+
const markerIndex = result.indexOf(marker);
|
|
135
|
+
resolve(markerIndex === -1 ? result : result.slice(markerIndex + marker.length));
|
|
136
|
+
};
|
|
137
|
+
reader.onerror = () => reject(reader.error || new Error(`Could not read ${file.name || 'file'}.`));
|
|
138
|
+
reader.readAsDataURL(file);
|
|
139
|
+
});
|
|
140
|
+
export const harnessTruncate = (text, maxChars = 6000) => {
|
|
141
|
+
if (text.length <= maxChars)
|
|
142
|
+
return { text, truncated: false };
|
|
143
|
+
return { text: text.slice(0, maxChars), truncated: true };
|
|
144
|
+
};
|
|
145
|
+
export const harnessStringifyValue = (value) => {
|
|
146
|
+
if (value === undefined || value === null)
|
|
147
|
+
return '';
|
|
148
|
+
if (typeof value === 'string')
|
|
149
|
+
return value;
|
|
150
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
151
|
+
return String(value);
|
|
152
|
+
try {
|
|
153
|
+
return JSON.stringify(value, undefined, 2);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return String(value);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
160
|
+
* Defensive one-glance summary of an arbitrary tool input/output object:
|
|
161
|
+
* well-known keys first, then remaining scalars. Ported from the git.zone
|
|
162
|
+
* IDE's agent formatting layer.
|
|
163
|
+
*/
|
|
164
|
+
/**
|
|
165
|
+
* Extracts todo items from a todo-tool input/output. Accepts { todos: [...] }
|
|
166
|
+
* or a bare array; items may carry content/subject/title and unknown statuses
|
|
167
|
+
* normalize to 'pending'.
|
|
168
|
+
*/
|
|
169
|
+
export const harnessParseTodos = (value) => {
|
|
170
|
+
const rawList = Array.isArray(value)
|
|
171
|
+
? value
|
|
172
|
+
: harnessIsRecord(value) && Array.isArray(value.todos)
|
|
173
|
+
? value.todos
|
|
174
|
+
: [];
|
|
175
|
+
const result = [];
|
|
176
|
+
for (const entry of rawList) {
|
|
177
|
+
if (typeof entry === 'string') {
|
|
178
|
+
result.push({ content: entry, status: 'pending' });
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (!harnessIsRecord(entry))
|
|
182
|
+
continue;
|
|
183
|
+
const content = String(entry.content ?? entry.subject ?? entry.title ?? '').trim();
|
|
184
|
+
if (!content)
|
|
185
|
+
continue;
|
|
186
|
+
const status = entry.status === 'completed' || entry.status === 'in_progress' ? entry.status : 'pending';
|
|
187
|
+
result.push({
|
|
188
|
+
id: entry.id !== undefined ? String(entry.id) : undefined,
|
|
189
|
+
content,
|
|
190
|
+
status,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return result;
|
|
194
|
+
};
|
|
195
|
+
export const harnessSummarizeValue = (value) => {
|
|
196
|
+
if (!harnessIsRecord(value))
|
|
197
|
+
return harnessStringifyValue(value);
|
|
198
|
+
const lines = [];
|
|
199
|
+
const seenKeys = new Set();
|
|
200
|
+
for (const key of ['description', 'command', 'workdir', 'cwd', 'filePath', 'path', 'pattern', 'query', 'url', 'action']) {
|
|
201
|
+
const item = value[key];
|
|
202
|
+
if (typeof item === 'string' && item) {
|
|
203
|
+
lines.push(`${key}: ${item}`);
|
|
204
|
+
seenKeys.add(key);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
for (const [key, item] of Object.entries(value)) {
|
|
208
|
+
if (seenKeys.has(key) || item === undefined || item === null)
|
|
209
|
+
continue;
|
|
210
|
+
if (typeof item === 'string' || typeof item === 'number' || typeof item === 'boolean') {
|
|
211
|
+
const text = String(item);
|
|
212
|
+
lines.push(`${key}: ${text.length > 240 ? `${text.slice(0, 240)}…` : text}`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return lines.join('\n');
|
|
216
|
+
};
|
|
217
|
+
/** First meaningful line of a summarized value; used for card subtitles. */
|
|
218
|
+
export const harnessSummaryLine = (value) => {
|
|
219
|
+
return harnessSummarizeValue(value).split('\n')[0] || '';
|
|
220
|
+
};
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFybmVzcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAtaGFybmVzcy9oYXJuZXNzLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDaEQsV0FBVztJQUNYLFlBQVk7SUFDWixZQUFZO0lBQ1osV0FBVztDQUNaLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQy9DLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsVUFBVTtJQUNWLFdBQVc7SUFDWCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLFlBQVk7SUFDWixVQUFVO0lBQ1YsV0FBVztDQUNaLENBQUMsQ0FBQztBQUVILE1BQU0sb0JBQW9CLEdBQTJCO0lBQ25ELEdBQUcsRUFBRSxVQUFVO0lBQ2YsR0FBRyxFQUFFLFVBQVU7SUFDZixJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUsWUFBWTtJQUNsQixHQUFHLEVBQUUsWUFBWTtJQUNqQixFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixHQUFHLEVBQUUsWUFBWTtJQUNqQixFQUFFLEVBQUUsZUFBZTtJQUNuQixHQUFHLEVBQUUsaUJBQWlCO0lBQ3RCLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEdBQUcsRUFBRSxlQUFlO0lBQ3BCLEVBQUUsRUFB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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type CSSResult } from '@design.estate/dees-element';
|
|
2
|
+
/**
|
|
3
|
+
* Markdown service for harness messages. Uses smartmarkdown (already in the
|
|
4
|
+
* dependency graph via dees-domtools; GFM-capable, sanitized-by-default) so
|
|
5
|
+
* the group adds zero dependencies. Results are LRU-cached because streaming
|
|
6
|
+
* re-parses the same growing text repeatedly. Swap seam: if the parser ever
|
|
7
|
+
* changes, only this file does.
|
|
8
|
+
*/
|
|
9
|
+
export declare class HarnessMarkdown {
|
|
10
|
+
private static instance;
|
|
11
|
+
static getInstance(): HarnessMarkdown;
|
|
12
|
+
private cache;
|
|
13
|
+
private static readonly maxCacheEntries;
|
|
14
|
+
renderToHtml(markdownText: string): Promise<string>;
|
|
15
|
+
/** External links open in a new context and never leak the opener. */
|
|
16
|
+
private postProcess;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Token-based typography for rendered markdown. Included by components that
|
|
20
|
+
* render HarnessMarkdown output inside a `.markdown-body` container. Code
|
|
21
|
+
* fence syntax colors reuse the codebox palette convention (dark defaults,
|
|
22
|
+
* `:host([gobright])` for light) — kept in the consuming component's styles
|
|
23
|
+
* where :host is available; this block covers structure and rhythm.
|
|
24
|
+
*/
|
|
25
|
+
export declare const markdownStyles: CSSResult;
|