@genesislcap/ai-assistant 15.19.2-FUI-2596.1 → 15.19.2

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.
@@ -9961,6 +9961,201 @@
9961
9961
  }
9962
9962
  ]
9963
9963
  },
9964
+ {
9965
+ "kind": "javascript-module",
9966
+ "path": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts",
9967
+ "declarations": [
9968
+ {
9969
+ "kind": "variable",
9970
+ "name": "AiChatInteractionWrapperStyles",
9971
+ "default": "css`\n :host {\n display: block;\n }\n`"
9972
+ }
9973
+ ],
9974
+ "exports": [
9975
+ {
9976
+ "kind": "js",
9977
+ "name": "AiChatInteractionWrapperStyles",
9978
+ "declaration": {
9979
+ "name": "AiChatInteractionWrapperStyles",
9980
+ "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts"
9981
+ }
9982
+ }
9983
+ ]
9984
+ },
9985
+ {
9986
+ "kind": "javascript-module",
9987
+ "path": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts",
9988
+ "declarations": [
9989
+ {
9990
+ "kind": "variable",
9991
+ "name": "AiChatInteractionWrapperTemplate",
9992
+ "default": "html<AiChatInteractionWrapper>`\n <div ${ref('container')} class=\"container\" part=\"container\"></div>\n`"
9993
+ }
9994
+ ],
9995
+ "exports": [
9996
+ {
9997
+ "kind": "js",
9998
+ "name": "AiChatInteractionWrapperTemplate",
9999
+ "declaration": {
10000
+ "name": "AiChatInteractionWrapperTemplate",
10001
+ "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts"
10002
+ }
10003
+ }
10004
+ ]
10005
+ },
10006
+ {
10007
+ "kind": "javascript-module",
10008
+ "path": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts",
10009
+ "declarations": [
10010
+ {
10011
+ "kind": "class",
10012
+ "description": "Hosts an interactive AI chat sub-component by tag name.",
10013
+ "name": "AiChatInteractionWrapper",
10014
+ "members": [
10015
+ {
10016
+ "kind": "field",
10017
+ "name": "resolved",
10018
+ "type": {
10019
+ "text": "InteractionResult<unknown> | undefined"
10020
+ },
10021
+ "default": "undefined",
10022
+ "description": "The resolved result once the interaction has completed. Forwarded to the rendered component. @internal"
10023
+ },
10024
+ {
10025
+ "kind": "field",
10026
+ "name": "_resizeObserver",
10027
+ "type": {
10028
+ "text": "ResizeObserver | undefined"
10029
+ },
10030
+ "privacy": "private",
10031
+ "description": "Observes the rendered widget for mid-lifecycle size changes — see observeWidgetResize."
10032
+ },
10033
+ {
10034
+ "kind": "method",
10035
+ "name": "componentNameChanged"
10036
+ },
10037
+ {
10038
+ "kind": "method",
10039
+ "name": "interactionIdChanged",
10040
+ "description": "Re-render the hosted widget when the interaction identity changes. This\nensures widgets don't go stale with them being rendered with `recycle: true`\nwhen messages are dynamically filtered, showing/hiding thinking/tool calls\n\n`interactionId` is a per-interaction UUID, so it changes exactly when the\nhosted interaction does. Property bindings apply in template order\n(componentName, data, interactionId), so `data` is already rebound by the\ntime this fires and the fresh widget is built with the correct data."
10041
+ },
10042
+ {
10043
+ "kind": "method",
10044
+ "name": "resolvedChanged"
10045
+ },
10046
+ {
10047
+ "kind": "method",
10048
+ "name": "observeWidgetResize",
10049
+ "privacy": "private",
10050
+ "parameters": [
10051
+ {
10052
+ "name": "element",
10053
+ "type": {
10054
+ "text": "Element"
10055
+ }
10056
+ }
10057
+ ],
10058
+ "description": "Watch the rendered widget element for box-size changes. When the widget\ngrows or shrinks mid-lifecycle (e.g. expanding a \"More info\" panel,\nappending an SSE status row, revealing generated code), bubble a\n`request-scroll-to-bottom` event so `FoundationAiAssistant` re-snaps to\nthe bottom. `scrollToBottom` respects `_userScrolledAway`, so a user\nreading old messages is not yanked back.\n\nThe first ResizeObserver callback fires synchronously with the initial\nsize when `observe()` is called; we skip it so freshly-rendered widgets\ndon't double up with the existing `handleMessagesUpdate` auto-scroll for\nnew messages."
10059
+ },
10060
+ {
10061
+ "kind": "method",
10062
+ "name": "renderComponent",
10063
+ "privacy": "private"
10064
+ },
10065
+ {
10066
+ "kind": "method",
10067
+ "name": "buildInteraction",
10068
+ "privacy": "private",
10069
+ "return": {
10070
+ "type": {
10071
+ "text": "AiChatInteraction"
10072
+ }
10073
+ },
10074
+ "parameters": [
10075
+ {
10076
+ "name": "host",
10077
+ "type": {
10078
+ "text": "InteractionHost | null"
10079
+ }
10080
+ }
10081
+ ],
10082
+ "description": "Project the wrapper's current `data`/`resolved`/`interactionId` into the\ndiscriminated AiChatInteraction the widget consumes (GENC-1390)."
10083
+ }
10084
+ ],
10085
+ "events": [
10086
+ {
10087
+ "name": "request-scroll-to-bottom",
10088
+ "type": {
10089
+ "text": "CustomEvent"
10090
+ }
10091
+ },
10092
+ {
10093
+ "description": "Fired when the interaction finishes. detail: `InteractionCompletedEventDetail`",
10094
+ "name": "interaction-completed"
10095
+ },
10096
+ {
10097
+ "description": "Fired when a widget spends money AFTER resolving. detail: `InteractionCostEventDetail`",
10098
+ "name": "interaction-cost"
10099
+ }
10100
+ ],
10101
+ "superclass": {
10102
+ "name": "GenesisElement",
10103
+ "package": "@genesislcap/web-core"
10104
+ },
10105
+ "tagName": "ai-chat-interaction-wrapper",
10106
+ "customElement": true
10107
+ }
10108
+ ],
10109
+ "exports": [
10110
+ {
10111
+ "kind": "js",
10112
+ "name": "AiChatInteractionWrapper",
10113
+ "declaration": {
10114
+ "name": "AiChatInteractionWrapper",
10115
+ "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts"
10116
+ }
10117
+ },
10118
+ {
10119
+ "kind": "custom-element-definition",
10120
+ "name": "ai-chat-interaction-wrapper",
10121
+ "declaration": {
10122
+ "name": "AiChatInteractionWrapper",
10123
+ "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts"
10124
+ }
10125
+ }
10126
+ ]
10127
+ },
10128
+ {
10129
+ "kind": "javascript-module",
10130
+ "path": "src/components/chat-interaction-wrapper/index.ts",
10131
+ "declarations": [],
10132
+ "exports": [
10133
+ {
10134
+ "kind": "js",
10135
+ "name": "*",
10136
+ "declaration": {
10137
+ "name": "*",
10138
+ "package": "./chat-interaction-wrapper"
10139
+ }
10140
+ },
10141
+ {
10142
+ "kind": "js",
10143
+ "name": "*",
10144
+ "declaration": {
10145
+ "name": "*",
10146
+ "package": "./chat-interaction-wrapper.styles"
10147
+ }
10148
+ },
10149
+ {
10150
+ "kind": "js",
10151
+ "name": "*",
10152
+ "declaration": {
10153
+ "name": "*",
10154
+ "package": "./chat-interaction-wrapper.template"
10155
+ }
10156
+ }
10157
+ ]
10158
+ },
9964
10159
  {
9965
10160
  "kind": "javascript-module",
9966
10161
  "path": "src/components/chat-markdown/chat-markdown.ts",
@@ -10656,201 +10851,6 @@
10656
10851
  }
10657
10852
  ]
10658
10853
  },
10659
- {
10660
- "kind": "javascript-module",
10661
- "path": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts",
10662
- "declarations": [
10663
- {
10664
- "kind": "variable",
10665
- "name": "AiChatInteractionWrapperStyles",
10666
- "default": "css`\n :host {\n display: block;\n }\n`"
10667
- }
10668
- ],
10669
- "exports": [
10670
- {
10671
- "kind": "js",
10672
- "name": "AiChatInteractionWrapperStyles",
10673
- "declaration": {
10674
- "name": "AiChatInteractionWrapperStyles",
10675
- "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.styles.ts"
10676
- }
10677
- }
10678
- ]
10679
- },
10680
- {
10681
- "kind": "javascript-module",
10682
- "path": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts",
10683
- "declarations": [
10684
- {
10685
- "kind": "variable",
10686
- "name": "AiChatInteractionWrapperTemplate",
10687
- "default": "html<AiChatInteractionWrapper>`\n <div ${ref('container')} class=\"container\" part=\"container\"></div>\n`"
10688
- }
10689
- ],
10690
- "exports": [
10691
- {
10692
- "kind": "js",
10693
- "name": "AiChatInteractionWrapperTemplate",
10694
- "declaration": {
10695
- "name": "AiChatInteractionWrapperTemplate",
10696
- "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.template.ts"
10697
- }
10698
- }
10699
- ]
10700
- },
10701
- {
10702
- "kind": "javascript-module",
10703
- "path": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts",
10704
- "declarations": [
10705
- {
10706
- "kind": "class",
10707
- "description": "Hosts an interactive AI chat sub-component by tag name.",
10708
- "name": "AiChatInteractionWrapper",
10709
- "members": [
10710
- {
10711
- "kind": "field",
10712
- "name": "resolved",
10713
- "type": {
10714
- "text": "InteractionResult<unknown> | undefined"
10715
- },
10716
- "default": "undefined",
10717
- "description": "The resolved result once the interaction has completed. Forwarded to the rendered component. @internal"
10718
- },
10719
- {
10720
- "kind": "field",
10721
- "name": "_resizeObserver",
10722
- "type": {
10723
- "text": "ResizeObserver | undefined"
10724
- },
10725
- "privacy": "private",
10726
- "description": "Observes the rendered widget for mid-lifecycle size changes — see observeWidgetResize."
10727
- },
10728
- {
10729
- "kind": "method",
10730
- "name": "componentNameChanged"
10731
- },
10732
- {
10733
- "kind": "method",
10734
- "name": "interactionIdChanged",
10735
- "description": "Re-render the hosted widget when the interaction identity changes. This\nensures widgets don't go stale with them being rendered with `recycle: true`\nwhen messages are dynamically filtered, showing/hiding thinking/tool calls\n\n`interactionId` is a per-interaction UUID, so it changes exactly when the\nhosted interaction does. Property bindings apply in template order\n(componentName, data, interactionId), so `data` is already rebound by the\ntime this fires and the fresh widget is built with the correct data."
10736
- },
10737
- {
10738
- "kind": "method",
10739
- "name": "resolvedChanged"
10740
- },
10741
- {
10742
- "kind": "method",
10743
- "name": "observeWidgetResize",
10744
- "privacy": "private",
10745
- "parameters": [
10746
- {
10747
- "name": "element",
10748
- "type": {
10749
- "text": "Element"
10750
- }
10751
- }
10752
- ],
10753
- "description": "Watch the rendered widget element for box-size changes. When the widget\ngrows or shrinks mid-lifecycle (e.g. expanding a \"More info\" panel,\nappending an SSE status row, revealing generated code), bubble a\n`request-scroll-to-bottom` event so `FoundationAiAssistant` re-snaps to\nthe bottom. `scrollToBottom` respects `_userScrolledAway`, so a user\nreading old messages is not yanked back.\n\nThe first ResizeObserver callback fires synchronously with the initial\nsize when `observe()` is called; we skip it so freshly-rendered widgets\ndon't double up with the existing `handleMessagesUpdate` auto-scroll for\nnew messages."
10754
- },
10755
- {
10756
- "kind": "method",
10757
- "name": "renderComponent",
10758
- "privacy": "private"
10759
- },
10760
- {
10761
- "kind": "method",
10762
- "name": "buildInteraction",
10763
- "privacy": "private",
10764
- "return": {
10765
- "type": {
10766
- "text": "AiChatInteraction"
10767
- }
10768
- },
10769
- "parameters": [
10770
- {
10771
- "name": "host",
10772
- "type": {
10773
- "text": "InteractionHost | null"
10774
- }
10775
- }
10776
- ],
10777
- "description": "Project the wrapper's current `data`/`resolved`/`interactionId` into the\ndiscriminated AiChatInteraction the widget consumes (GENC-1390)."
10778
- }
10779
- ],
10780
- "events": [
10781
- {
10782
- "name": "request-scroll-to-bottom",
10783
- "type": {
10784
- "text": "CustomEvent"
10785
- }
10786
- },
10787
- {
10788
- "description": "Fired when the interaction finishes. detail: `InteractionCompletedEventDetail`",
10789
- "name": "interaction-completed"
10790
- },
10791
- {
10792
- "description": "Fired when a widget spends money AFTER resolving. detail: `InteractionCostEventDetail`",
10793
- "name": "interaction-cost"
10794
- }
10795
- ],
10796
- "superclass": {
10797
- "name": "GenesisElement",
10798
- "package": "@genesislcap/web-core"
10799
- },
10800
- "tagName": "ai-chat-interaction-wrapper",
10801
- "customElement": true
10802
- }
10803
- ],
10804
- "exports": [
10805
- {
10806
- "kind": "js",
10807
- "name": "AiChatInteractionWrapper",
10808
- "declaration": {
10809
- "name": "AiChatInteractionWrapper",
10810
- "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts"
10811
- }
10812
- },
10813
- {
10814
- "kind": "custom-element-definition",
10815
- "name": "ai-chat-interaction-wrapper",
10816
- "declaration": {
10817
- "name": "AiChatInteractionWrapper",
10818
- "module": "src/components/chat-interaction-wrapper/chat-interaction-wrapper.ts"
10819
- }
10820
- }
10821
- ]
10822
- },
10823
- {
10824
- "kind": "javascript-module",
10825
- "path": "src/components/chat-interaction-wrapper/index.ts",
10826
- "declarations": [],
10827
- "exports": [
10828
- {
10829
- "kind": "js",
10830
- "name": "*",
10831
- "declaration": {
10832
- "name": "*",
10833
- "package": "./chat-interaction-wrapper"
10834
- }
10835
- },
10836
- {
10837
- "kind": "js",
10838
- "name": "*",
10839
- "declaration": {
10840
- "name": "*",
10841
- "package": "./chat-interaction-wrapper.styles"
10842
- }
10843
- },
10844
- {
10845
- "kind": "js",
10846
- "name": "*",
10847
- "declaration": {
10848
- "name": "*",
10849
- "package": "./chat-interaction-wrapper.template"
10850
- }
10851
- }
10852
- ]
10853
- },
10854
10854
  {
10855
10855
  "kind": "javascript-module",
10856
10856
  "path": "src/components/popout-manager/index.ts",
@@ -132,15 +132,6 @@ export declare const AiChatBubble: React.ForwardRefExoticComponent<
132
132
  >;
133
133
  export type AiChatBubbleRef = AiChatBubbleWC;
134
134
 
135
- export declare const AiChatMarkdown: React.ForwardRefExoticComponent<
136
- React.PropsWithChildren<
137
- Omit<PublicOf<AiChatMarkdownWC>, 'children' | 'style'> &
138
- HTMLWCProps & {
139
- }
140
- > & React.RefAttributes<AiChatMarkdownWC>
141
- >;
142
- export type AiChatMarkdownRef = AiChatMarkdownWC;
143
-
144
135
  export declare const AiChatInteractionWrapper: React.ForwardRefExoticComponent<
145
136
  React.PropsWithChildren<
146
137
  Omit<PublicOf<AiChatInteractionWrapperWC>, 'children' | 'style'> &
@@ -153,6 +144,15 @@ export declare const AiChatInteractionWrapper: React.ForwardRefExoticComponent<
153
144
  >;
154
145
  export type AiChatInteractionWrapperRef = AiChatInteractionWrapperWC;
155
146
 
147
+ export declare const AiChatMarkdown: React.ForwardRefExoticComponent<
148
+ React.PropsWithChildren<
149
+ Omit<PublicOf<AiChatMarkdownWC>, 'children' | 'style'> &
150
+ HTMLWCProps & {
151
+ }
152
+ > & React.RefAttributes<AiChatMarkdownWC>
153
+ >;
154
+ export type AiChatMarkdownRef = AiChatMarkdownWC;
155
+
156
156
  export declare const FoundationAiPopoutManager: React.ForwardRefExoticComponent<
157
157
  React.PropsWithChildren<
158
158
  Omit<PublicOf<FoundationAiPopoutManagerWC>, 'children' | 'style'> &
package/dist/react.cjs CHANGED
@@ -107,11 +107,6 @@ const AiChatBubble = React.forwardRef(function AiChatBubble(props, ref) {
107
107
  return React.createElement(customElements.getName(AiChatBubbleWC) ?? 'foundation-ai-chat-bubble', { ...rest, ref }, children);
108
108
  });
109
109
 
110
- const AiChatMarkdown = React.forwardRef(function AiChatMarkdown(props, ref) {
111
- const { children, ...rest } = props;
112
- return React.createElement(customElements.getName(AiChatMarkdownWC) ?? 'ai-chat-markdown', { ...rest, ref }, children);
113
- });
114
-
115
110
  const AiChatInteractionWrapper = React.forwardRef(function AiChatInteractionWrapper(props, ref) {
116
111
  const { onRequestScrollToBottom, onInteractionCompleted, onInteractionCost, children, ...rest } = props;
117
112
  const _innerRef = React.useRef(null);
@@ -139,6 +134,11 @@ const AiChatInteractionWrapper = React.forwardRef(function AiChatInteractionWrap
139
134
  return React.createElement(customElements.getName(AiChatInteractionWrapperWC) ?? 'ai-chat-interaction-wrapper', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
140
135
  });
141
136
 
137
+ const AiChatMarkdown = React.forwardRef(function AiChatMarkdown(props, ref) {
138
+ const { children, ...rest } = props;
139
+ return React.createElement(customElements.getName(AiChatMarkdownWC) ?? 'ai-chat-markdown', { ...rest, ref }, children);
140
+ });
141
+
142
142
  const FoundationAiPopoutManager = React.forwardRef(function FoundationAiPopoutManager(props, ref) {
143
143
  const { children, ...rest } = props;
144
144
  return React.createElement(customElements.getName(FoundationAiPopoutManagerWC) ?? 'foundation-ai-popout-manager', { ...rest, ref }, children);
@@ -154,7 +154,7 @@ module.exports = {
154
154
  AiActivityHalo,
155
155
  AgentPicker,
156
156
  AiChatBubble,
157
- AiChatMarkdown,
158
157
  AiChatInteractionWrapper,
158
+ AiChatMarkdown,
159
159
  FoundationAiPopoutManager,
160
160
  };
package/dist/react.mjs CHANGED
@@ -105,11 +105,6 @@ export const AiChatBubble = React.forwardRef(function AiChatBubble(props, ref) {
105
105
  return React.createElement(customElements.getName(AiChatBubbleWC) ?? 'foundation-ai-chat-bubble', { ...rest, ref }, children);
106
106
  });
107
107
 
108
- export const AiChatMarkdown = React.forwardRef(function AiChatMarkdown(props, ref) {
109
- const { children, ...rest } = props;
110
- return React.createElement(customElements.getName(AiChatMarkdownWC) ?? 'ai-chat-markdown', { ...rest, ref }, children);
111
- });
112
-
113
108
  export const AiChatInteractionWrapper = React.forwardRef(function AiChatInteractionWrapper(props, ref) {
114
109
  const { onRequestScrollToBottom, onInteractionCompleted, onInteractionCost, children, ...rest } = props;
115
110
  const _innerRef = React.useRef(null);
@@ -137,6 +132,11 @@ export const AiChatInteractionWrapper = React.forwardRef(function AiChatInteract
137
132
  return React.createElement(customElements.getName(AiChatInteractionWrapperWC) ?? 'ai-chat-interaction-wrapper', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
138
133
  });
139
134
 
135
+ export const AiChatMarkdown = React.forwardRef(function AiChatMarkdown(props, ref) {
136
+ const { children, ...rest } = props;
137
+ return React.createElement(customElements.getName(AiChatMarkdownWC) ?? 'ai-chat-markdown', { ...rest, ref }, children);
138
+ });
139
+
140
140
  export const FoundationAiPopoutManager = React.forwardRef(function FoundationAiPopoutManager(props, ref) {
141
141
  const { children, ...rest } = props;
142
142
  return React.createElement(customElements.getName(FoundationAiPopoutManagerWC) ?? 'foundation-ai-popout-manager', { ...rest, ref }, children);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/ai-assistant",
3
3
  "description": "Genesis AI Assistant micro-frontend",
4
- "version": "15.19.2-FUI-2596.1",
4
+ "version": "15.19.2",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/ai-assistant.d.ts",
@@ -74,26 +74,26 @@
74
74
  }
75
75
  },
76
76
  "devDependencies": {
77
- "@genesislcap/foundation-testing": "15.19.2-FUI-2596.1",
78
- "@genesislcap/genx": "15.19.2-FUI-2596.1",
79
- "@genesislcap/rollup-builder": "15.19.2-FUI-2596.1",
80
- "@genesislcap/ts-builder": "15.19.2-FUI-2596.1",
81
- "@genesislcap/uvu-playwright-builder": "15.19.2-FUI-2596.1",
82
- "@genesislcap/vite-builder": "15.19.2-FUI-2596.1",
83
- "@genesislcap/webpack-builder": "15.19.2-FUI-2596.1",
77
+ "@genesislcap/foundation-testing": "15.19.2",
78
+ "@genesislcap/genx": "15.19.2",
79
+ "@genesislcap/rollup-builder": "15.19.2",
80
+ "@genesislcap/ts-builder": "15.19.2",
81
+ "@genesislcap/uvu-playwright-builder": "15.19.2",
82
+ "@genesislcap/vite-builder": "15.19.2",
83
+ "@genesislcap/webpack-builder": "15.19.2",
84
84
  "@types/dompurify": "^3.0.5",
85
85
  "@types/marked": "^5.0.2",
86
86
  "esbuild": "0.25.12"
87
87
  },
88
88
  "dependencies": {
89
- "@genesislcap/foundation-ai": "15.19.2-FUI-2596.1",
90
- "@genesislcap/foundation-logger": "15.19.2-FUI-2596.1",
91
- "@genesislcap/foundation-notifications": "15.19.2-FUI-2596.1",
92
- "@genesislcap/foundation-redux": "15.19.2-FUI-2596.1",
93
- "@genesislcap/foundation-ui": "15.19.2-FUI-2596.1",
94
- "@genesislcap/foundation-utils": "15.19.2-FUI-2596.1",
95
- "@genesislcap/rapid-design-system": "15.19.2-FUI-2596.1",
96
- "@genesislcap/web-core": "15.19.2-FUI-2596.1",
89
+ "@genesislcap/foundation-ai": "15.19.2",
90
+ "@genesislcap/foundation-logger": "15.19.2",
91
+ "@genesislcap/foundation-notifications": "15.19.2",
92
+ "@genesislcap/foundation-redux": "15.19.2",
93
+ "@genesislcap/foundation-ui": "15.19.2",
94
+ "@genesislcap/foundation-utils": "15.19.2",
95
+ "@genesislcap/rapid-design-system": "15.19.2",
96
+ "@genesislcap/web-core": "15.19.2",
97
97
  "dompurify": "^3.3.1",
98
98
  "marked": "^17.0.3"
99
99
  },