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

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,201 +9961,6 @@
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
- },
10159
9964
  {
10160
9965
  "kind": "javascript-module",
10161
9966
  "path": "src/components/chat-markdown/chat-markdown.ts",
@@ -10851,6 +10656,201 @@
10851
10656
  }
10852
10657
  ]
10853
10658
  },
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",
@@ -1 +1 @@
1
- {"version":3,"file":"main.styles.d.ts","sourceRoot":"","sources":["../../../src/main/main.styles.ts"],"names":[],"mappings":"AA09BA,eAAO,MAAM,MAAM,iDAQlB,CAAC"}
1
+ {"version":3,"file":"main.styles.d.ts","sourceRoot":"","sources":["../../../src/main/main.styles.ts"],"names":[],"mappings":"AA6gCA,eAAO,MAAM,MAAM,iDAQlB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.template.d.ts","sourceRoot":"","sources":["../../../src/main/main.template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,EAAuC,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AA2QpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,qBAAqB,KAAG,MAOlD,CAAC;AAEf;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,mBAAmB,GAAI,GAAG,qBAAqB,KAAG,MAAM,GAAG,IAC5B,CAAC;AAyJ7C,eAAO,MAAM,6BAA6B,GACxC,oBAAoB,MAAM,KACzB,YAAY,CAAC,qBAAqB,CA+lBpC,CAAC"}
1
+ {"version":3,"file":"main.template.d.ts","sourceRoot":"","sources":["../../../src/main/main.template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,EAAuC,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AA2QpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,qBAAqB,KAAG,MAOlD,CAAC;AAEf;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,mBAAmB,GAAI,GAAG,qBAAqB,KAAG,MAAM,GAAG,IAC5B,CAAC;AAyJ7C,eAAO,MAAM,6BAA6B,GACxC,oBAAoB,MAAM,KACzB,YAAY,CAAC,qBAAqB,CAwmBpC,CAAC"}
@@ -132,6 +132,15 @@ 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
+
135
144
  export declare const AiChatInteractionWrapper: React.ForwardRefExoticComponent<
136
145
  React.PropsWithChildren<
137
146
  Omit<PublicOf<AiChatInteractionWrapperWC>, 'children' | 'style'> &
@@ -144,15 +153,6 @@ export declare const AiChatInteractionWrapper: React.ForwardRefExoticComponent<
144
153
  >;
145
154
  export type AiChatInteractionWrapperRef = AiChatInteractionWrapperWC;
146
155
 
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'> &
@@ -596,6 +596,13 @@ const baseStyles = css `
596
596
  min-width: 0;
597
597
  padding: 0;
598
598
  justify-content: center;
599
+
600
+ /* See the note on .send-button::part(control) below — same two corrections, and
601
+ the pill needs the centring especially: it is the one button here that puts an
602
+ icon next to text, and baseline alignment lines those two up by their text
603
+ baselines rather than their middles. */
604
+ align-items: center;
605
+ height: 100%;
599
606
  }
600
607
 
601
608
  /* The agent pill is the one that carries a label, so it is the one that grows.
@@ -643,6 +650,23 @@ const baseStyles = css `
643
650
  height: calc(var(--design-unit) * 7px);
644
651
  }
645
652
 
653
+ /* Two corrections to the design-system button's inner control, both of which only
654
+ BITE once a host puts a border on the button — which is why they were invisible
655
+ here and showed up in a consuming app.
656
+
657
+ height: the control takes its height from the host, whose box-sizing is
658
+ border-box. With a border the host's content box is 2px shorter than that value,
659
+ so the control overflows the bottom and everything inside it sits a pixel low.
660
+ 100% resolves against the content box instead, which is what was meant.
661
+
662
+ align-items: the control aligns its children on their BASELINE. For a lone text
663
+ label that is survivable; for an icon beside text it is not, and it stops the
664
+ label centring once the box is taller than the line. */
665
+ .send-button::part(control) {
666
+ align-items: center;
667
+ height: 100%;
668
+ }
669
+
646
670
  /* The "stopping" state shows a spinner — rotate it (the icon set's glyph is
647
671
  static). Transform-only, so it never affects layout/width. */
648
672
  @keyframes ai-stop-spin {
@@ -732,6 +756,33 @@ const baseStyles = css `
732
756
  display: flex;
733
757
  flex-direction: column;
734
758
  gap: 1px;
759
+
760
+ /* Definite rather than shrink-to-fit — see the note below on why both axes
761
+ have to be pinned for this menu. */
762
+ width: min(100%, 300px);
763
+ }
764
+
765
+ /* This menu swaps its contents in place — Compact/Clear become Confirm/Cancel —
766
+ and it is anchored by its BOTTOM-LEFT corner, so ANY change in size moves an
767
+ edge and the menu appears to jump as you click. Both axes need pinning.
768
+
769
+ Width: an absolutely-positioned panel is shrink-to-fit, so each state sized
770
+ itself to its own longest hint and the Clear confirm came out 26px narrower
771
+ than the step before it. A definite width takes the copy out of it. The cap
772
+ is above the widest state's natural width so no hint re-wraps into a third
773
+ line, which is the one thing that would defeat the height rule below.
774
+
775
+ Height: the panel is anchored by its bottom edge, so a shorter state moves
776
+ the top edge down.
777
+
778
+ Giving every row the same hint text would only make the two states match by
779
+ coincidence: hints wrap at different widths, so at ~330px one state's hint
780
+ took two lines while the other's took one and the jump came back. Reserving
781
+ two lines on every hint makes the rows the same height whatever the wrapping,
782
+ so the states are equal by construction rather than by luck. 2.7em = two
783
+ lines at this element's own 1.35 line-height. */
784
+ .session-menu-panel .menu-item-hint {
785
+ min-height: 2.7em;
735
786
  }
736
787
 
737
788
  /* Shown in place of the transcript while a manual compaction runs (GENC-1351). */
@@ -679,6 +679,12 @@ ${(tc) => { var _a; return (((_a = tc.foldPath) === null || _a === void 0 ? void
679
679
  </span>
680
680
  </button>
681
681
  `;
682
+ // The hint is not decoration. Every other row in this menu has one, and the
683
+ // panel is anchored by its BOTTOM edge to the button: a hintless Cancel makes
684
+ // the confirm step ~16px shorter than the step before it, so the panel's top
685
+ // edge visibly drops as it swaps in. Matching the row shape keeps the two
686
+ // states the same height and the menu still. It also earns its place — on a
687
+ // destructive confirm, saying what happens if you back out is worth a line.
682
688
  const sessionMenuCancelTemplate = html `
683
689
  <button
684
690
  class="menu-item"
@@ -690,7 +696,10 @@ ${(tc) => { var _a; return (((_a = tc.foldPath) === null || _a === void 0 ? void
690
696
  }}
691
697
  >
692
698
  <span class="menu-item-icon" aria-hidden="true"><${iconTag} name="xmark"></${iconTag}></span>
693
- <span class="menu-item-body"><span class="menu-item-name">Cancel</span></span>
699
+ <span class="menu-item-body">
700
+ <span class="menu-item-name">Cancel</span>
701
+ <span class="menu-item-hint">Leave the conversation as it is</span>
702
+ </span>
694
703
  </button>
695
704
  `;
696
705
  const sessionMenuConfirmCompactTemplate = html `
package/dist/react.cjs CHANGED
@@ -107,6 +107,11 @@ 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
+
110
115
  const AiChatInteractionWrapper = React.forwardRef(function AiChatInteractionWrapper(props, ref) {
111
116
  const { onRequestScrollToBottom, onInteractionCompleted, onInteractionCost, children, ...rest } = props;
112
117
  const _innerRef = React.useRef(null);
@@ -134,11 +139,6 @@ const AiChatInteractionWrapper = React.forwardRef(function AiChatInteractionWrap
134
139
  return React.createElement(customElements.getName(AiChatInteractionWrapperWC) ?? 'ai-chat-interaction-wrapper', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
135
140
  });
136
141
 
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
- AiChatInteractionWrapper,
158
157
  AiChatMarkdown,
158
+ AiChatInteractionWrapper,
159
159
  FoundationAiPopoutManager,
160
160
  };
package/dist/react.mjs CHANGED
@@ -105,6 +105,11 @@ 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
+
108
113
  export const AiChatInteractionWrapper = React.forwardRef(function AiChatInteractionWrapper(props, ref) {
109
114
  const { onRequestScrollToBottom, onInteractionCompleted, onInteractionCost, children, ...rest } = props;
110
115
  const _innerRef = React.useRef(null);
@@ -132,11 +137,6 @@ export const AiChatInteractionWrapper = React.forwardRef(function AiChatInteract
132
137
  return React.createElement(customElements.getName(AiChatInteractionWrapperWC) ?? 'ai-chat-interaction-wrapper', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
133
138
  });
134
139
 
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.1",
4
+ "version": "15.19.2-FUI-2596.1",
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.1",
78
- "@genesislcap/genx": "15.19.1",
79
- "@genesislcap/rollup-builder": "15.19.1",
80
- "@genesislcap/ts-builder": "15.19.1",
81
- "@genesislcap/uvu-playwright-builder": "15.19.1",
82
- "@genesislcap/vite-builder": "15.19.1",
83
- "@genesislcap/webpack-builder": "15.19.1",
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",
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.1",
90
- "@genesislcap/foundation-logger": "15.19.1",
91
- "@genesislcap/foundation-notifications": "15.19.1",
92
- "@genesislcap/foundation-redux": "15.19.1",
93
- "@genesislcap/foundation-ui": "15.19.1",
94
- "@genesislcap/foundation-utils": "15.19.1",
95
- "@genesislcap/rapid-design-system": "15.19.1",
96
- "@genesislcap/web-core": "15.19.1",
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",
97
97
  "dompurify": "^3.3.1",
98
98
  "marked": "^17.0.3"
99
99
  },