@xpert-ai/chatkit-ui 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/dist/app/assets/{_baseUniq-DAi_U6eJ.js → _baseUniq-DUmeJXMF.js} +1 -1
  2. package/dist/app/assets/{abap-ChIrIedY.js → abap-CAHc26jT.js} +1 -1
  3. package/dist/app/assets/{abnf-BmyKeVYS.js → abnf-CVkfvAG7.js} +1 -1
  4. package/dist/app/assets/{actionscript-C9wzeSLx.js → actionscript-BEzJB7WT.js} +1 -1
  5. package/dist/app/assets/{ada-CnZwIcQD.js → ada-DFt4d8s0.js} +1 -1
  6. package/dist/app/assets/{agda-BC6tdZrt.js → agda-Dgk-d8Ej.js} +1 -1
  7. package/dist/app/assets/{al-1IyjxpDM.js → al-CgIwrIi7.js} +1 -1
  8. package/dist/app/assets/{antlr4-CHd-fyh6.js → antlr4-v8CVE7fu.js} +1 -1
  9. package/dist/app/assets/{apacheconf-2lN3gJw-.js → apacheconf-DJRGF6BS.js} +1 -1
  10. package/dist/app/assets/{apex-BlHo9TNy.js → apex-uUgU4D2N.js} +1 -1
  11. package/dist/app/assets/{apl-LQvIBwOu.js → apl-QLgjdSly.js} +1 -1
  12. package/dist/app/assets/{applescript-DWoMPELD.js → applescript-BFVeekYt.js} +1 -1
  13. package/dist/app/assets/{aql-C9S6c12M.js → aql-mHS01Klr.js} +1 -1
  14. package/dist/app/assets/{arc-Dt2ofM0k.js → arc-CuZh5y_d.js} +1 -1
  15. package/dist/app/assets/{architectureDiagram-Q4EWVU46-Bt8nuJ35.js → architectureDiagram-Q4EWVU46-Cp-oqFuq.js} +1 -1
  16. package/dist/app/assets/{arduino-1xWm7Tq4.js → arduino-D3yikoHI.js} +1 -1
  17. package/dist/app/assets/{arff-COOkNnH1.js → arff-Bzp22yLm.js} +1 -1
  18. package/dist/app/assets/{asciidoc-DFECG2l7.js → asciidoc-DyMmgwzJ.js} +1 -1
  19. package/dist/app/assets/{asm6502-CzDAeDcX.js → asm6502-B80D95Jm.js} +1 -1
  20. package/dist/app/assets/{asmatmel-CBtEsKji.js → asmatmel-D7eDDNLW.js} +1 -1
  21. package/dist/app/assets/{aspnet-BezxKLhu.js → aspnet-DP6URAXF.js} +1 -1
  22. package/dist/app/assets/{autohotkey-CHatwkez.js → autohotkey-CkErJpFg.js} +1 -1
  23. package/dist/app/assets/{autoit-CI77RO6k.js → autoit-BdpOTPpv.js} +1 -1
  24. package/dist/app/assets/{avisynth-DagCdNDY.js → avisynth-Dmhp2heE.js} +1 -1
  25. package/dist/app/assets/{avro-idl-Cy1rg8Yn.js → avro-idl-DUhKaWgN.js} +1 -1
  26. package/dist/app/assets/{bash-BzvlO_s6.js → bash-BivYb6BT.js} +1 -1
  27. package/dist/app/assets/{basic-MZAshZcs.js → basic-D-8b5r6a.js} +1 -1
  28. package/dist/app/assets/{batch-czYKl46o.js → batch-BgMIK1_X.js} +1 -1
  29. package/dist/app/assets/{bbcode-cLlsKGAK.js → bbcode-DVoSXbR6.js} +1 -1
  30. package/dist/app/assets/{bicep-DZ2Qthyi.js → bicep-DAyvfnBb.js} +1 -1
  31. package/dist/app/assets/{birb-G8OGp_MU.js → birb-MciDoImB.js} +1 -1
  32. package/dist/app/assets/{bison-Bskzz9x7.js → bison-MfDz2wSW.js} +1 -1
  33. package/dist/app/assets/{blockDiagram-DXYQGD6D-BdBXVdp9.js → blockDiagram-DXYQGD6D-D6fzklHs.js} +1 -1
  34. package/dist/app/assets/{bnf-BOEOLky_.js → bnf-NfFrR8D5.js} +1 -1
  35. package/dist/app/assets/{brainfuck-h8bJ3DFC.js → brainfuck-ClI8X4SF.js} +1 -1
  36. package/dist/app/assets/{brightscript-BIR8Gf--.js → brightscript-zS1iu4vq.js} +1 -1
  37. package/dist/app/assets/{bro-B5XbyZQT.js → bro-DljtPq2D.js} +1 -1
  38. package/dist/app/assets/{bsl-C-sazznb.js → bsl-hhgsw8vw.js} +1 -1
  39. package/dist/app/assets/{c-DotRXvuU.js → c-DrpFfWnr.js} +1 -1
  40. package/dist/app/assets/{c4Diagram-AHTNJAMY-Dd8x_6AZ.js → c4Diagram-AHTNJAMY-DFqBpiK8.js} +1 -1
  41. package/dist/app/assets/{cfscript-ByuErNyc.js → cfscript-DDb6Lyf6.js} +1 -1
  42. package/dist/app/assets/{chaiscript-xSeu7-zW.js → chaiscript-DF48gGB2.js} +1 -1
  43. package/dist/app/assets/channel-DFkA7Odq.js +1 -0
  44. package/dist/app/assets/{chunk-4BX2VUAB-DZN1JqGD.js → chunk-4BX2VUAB-B12wPqT-.js} +1 -1
  45. package/dist/app/assets/{chunk-4TB4RGXK-bBSVyHgs.js → chunk-4TB4RGXK-DvBRV7Wa.js} +1 -1
  46. package/dist/app/assets/{chunk-55IACEB6-Ds-SW37D.js → chunk-55IACEB6-DYYpJnIt.js} +1 -1
  47. package/dist/app/assets/{chunk-EDXVE4YY-Dri8feOV.js → chunk-EDXVE4YY-C_cgU5oo.js} +1 -1
  48. package/dist/app/assets/{chunk-FMBD7UC4-DJ8k-IiR.js → chunk-FMBD7UC4-B3gAIARW.js} +1 -1
  49. package/dist/app/assets/{chunk-OYMX7WX6-k7E98ZJe.js → chunk-OYMX7WX6-DfeuAq49.js} +1 -1
  50. package/dist/app/assets/{chunk-QZHKN3VN-DJhFI2vO.js → chunk-QZHKN3VN-B_q1wkHk.js} +1 -1
  51. package/dist/app/assets/{chunk-YZCP3GAM-B1p0s5ao.js → chunk-YZCP3GAM-BI51-5Xl.js} +1 -1
  52. package/dist/app/assets/{cil-BvhK6LJY.js → cil-5e3EFNQ-.js} +1 -1
  53. package/dist/app/assets/classDiagram-6PBFFD2Q-BhcMxOX3.js +1 -0
  54. package/dist/app/assets/classDiagram-v2-HSJHXN6E-BhcMxOX3.js +1 -0
  55. package/dist/app/assets/{clike-FuCuUpd8.js → clike-CGm019RU.js} +1 -1
  56. package/dist/app/assets/{clojure-CU75lO9p.js → clojure-EUxmeflx.js} +1 -1
  57. package/dist/app/assets/clone-D0zp_cmi.js +1 -0
  58. package/dist/app/assets/{cmake-BRgcPG29.js → cmake-Cx_TgZnP.js} +1 -1
  59. package/dist/app/assets/{cobol-CTa8YX63.js → cobol-BthqexLq.js} +1 -1
  60. package/dist/app/assets/{coffeescript-C1tCgHyE.js → coffeescript-Gvi0WUl9.js} +1 -1
  61. package/dist/app/assets/{concurnas-Wgt7FQyC.js → concurnas-DIsKiUcY.js} +1 -1
  62. package/dist/app/assets/{coq-CpXQQvmF.js → coq-Cbm4LAk7.js} +1 -1
  63. package/dist/app/assets/{core-dcDIevRF.js → core-DbOl2YVH.js} +1 -1
  64. package/dist/app/assets/{cose-bilkent-S5V4N54A-AWnydwPj.js → cose-bilkent-S5V4N54A-tDz06OBa.js} +1 -1
  65. package/dist/app/assets/{cpp-PopsO2HF.js → cpp-DvM1W1M3.js} +1 -1
  66. package/dist/app/assets/{crystal-Bkd2nMwS.js → crystal-Cgeclk0-.js} +1 -1
  67. package/dist/app/assets/{csharp-BA1kER1p.js → csharp-DLajxlCH.js} +1 -1
  68. package/dist/app/assets/{cshtml-BmNdnWsC.js → cshtml-D4WJuQ28.js} +1 -1
  69. package/dist/app/assets/{csp-BV7K_LnK.js → csp-DlOt0mll.js} +1 -1
  70. package/dist/app/assets/{css-D_do90Bs.js → css-BzsDxt7h.js} +1 -1
  71. package/dist/app/assets/{css-extras-D0dKqzph.js → css-extras-yKv4-OYr.js} +1 -1
  72. package/dist/app/assets/{csv-Dy2-4DqS.js → csv-Bv1CB32G.js} +1 -1
  73. package/dist/app/assets/{cypher-Bbt867j9.js → cypher-p1eqx6Jt.js} +1 -1
  74. package/dist/app/assets/{d-BJKjKDuh.js → d-Beqwk42F.js} +1 -1
  75. package/dist/app/assets/{dagre-KV5264BT-qACi6DAC.js → dagre-KV5264BT-Bva9KEQ3.js} +1 -1
  76. package/dist/app/assets/{dart-C7zj4vyl.js → dart-DGUIre7b.js} +1 -1
  77. package/dist/app/assets/{dataweave-XWkmXL_n.js → dataweave-BKEvzZhX.js} +1 -1
  78. package/dist/app/assets/{dax-C12CMdhM.js → dax-7DSfOdOt.js} +1 -1
  79. package/dist/app/assets/{dhall-luyA3uBM.js → dhall-D96qT6GR.js} +1 -1
  80. package/dist/app/assets/{diagram-5BDNPKRD-D2DNhSOw.js → diagram-5BDNPKRD-BLdVEgIg.js} +1 -1
  81. package/dist/app/assets/{diagram-G4DWMVQ6-D2e2KRjm.js → diagram-G4DWMVQ6-B1mGc4DZ.js} +1 -1
  82. package/dist/app/assets/{diagram-MMDJMWI5-knmYakCW.js → diagram-MMDJMWI5-BCbX9vwv.js} +1 -1
  83. package/dist/app/assets/{diagram-TYMM5635-DORhYdkc.js → diagram-TYMM5635-BbiM5rwX.js} +1 -1
  84. package/dist/app/assets/{diff-B8UdoaQV.js → diff-BJy0ijGD.js} +1 -1
  85. package/dist/app/assets/{django-DtYp2PYt.js → django-CA3Li7Xc.js} +1 -1
  86. package/dist/app/assets/{dns-zone-file-DrtEuPTT.js → dns-zone-file-CQ5FJ0e2.js} +1 -1
  87. package/dist/app/assets/{docker-2GV5UON2.js → docker-C_jKEoBB.js} +1 -1
  88. package/dist/app/assets/{dot-OL5v0gu4.js → dot-UuhFwEC4.js} +1 -1
  89. package/dist/app/assets/{ebnf-C9eB4mQh.js → ebnf-v-JYoSll.js} +1 -1
  90. package/dist/app/assets/{editorconfig-Bt1KhC9s.js → editorconfig-Be3ygJWd.js} +1 -1
  91. package/dist/app/assets/{eiffel-5tZX-H1U.js → eiffel-wc_Ly8vK.js} +1 -1
  92. package/dist/app/assets/{ejs-5X_EH25G.js → ejs-DkUkLWO_.js} +1 -1
  93. package/dist/app/assets/{elixir-B3cIfaev.js → elixir-D4YWMnOb.js} +1 -1
  94. package/dist/app/assets/{elm-BZzmZArh.js → elm-DvpgkmZw.js} +1 -1
  95. package/dist/app/assets/{erDiagram-SMLLAGMA-D6XJaFtW.js → erDiagram-SMLLAGMA-DeYRxjbM.js} +1 -1
  96. package/dist/app/assets/{erb-B3vztRAF.js → erb-BrK-PMgA.js} +1 -1
  97. package/dist/app/assets/{erlang-ViBllQb_.js → erlang-BYb5M5Pb.js} +1 -1
  98. package/dist/app/assets/{etlua-CLh8MAjG.js → etlua-Bhe3IDc-.js} +1 -1
  99. package/dist/app/assets/{excel-formula-us8LQ5A8.js → excel-formula-jODZlBfX.js} +1 -1
  100. package/dist/app/assets/{factor-Sxzieg9m.js → factor-BKsD6d0K.js} +1 -1
  101. package/dist/app/assets/{false-CNugF9H4.js → false-CcGNJYns.js} +1 -1
  102. package/dist/app/assets/{firestore-security-rules-Xl5Y-ePD.js → firestore-security-rules-5vyxJaeJ.js} +1 -1
  103. package/dist/app/assets/{flow-275bTxGc.js → flow-NU1izkCa.js} +1 -1
  104. package/dist/app/assets/{flowDiagram-DWJPFMVM-riJvcRDk.js → flowDiagram-DWJPFMVM-Bj0SYU-k.js} +1 -1
  105. package/dist/app/assets/{fortran-Dzu99g0z.js → fortran-DCGTQjju.js} +1 -1
  106. package/dist/app/assets/{fsharp-D0oFScfK.js → fsharp-DNhO6FM-.js} +1 -1
  107. package/dist/app/assets/{ftl-CgLUYfhw.js → ftl-P_p2wyPG.js} +1 -1
  108. package/dist/app/assets/{ganttDiagram-T4ZO3ILL-DD-HGvMl.js → ganttDiagram-T4ZO3ILL-Dv-WNsgb.js} +1 -1
  109. package/dist/app/assets/{gap-B44Er8-4.js → gap-DgF9ZGYZ.js} +1 -1
  110. package/dist/app/assets/{gcode-DuMJg2M0.js → gcode-CMhuYhvh.js} +1 -1
  111. package/dist/app/assets/{gdscript-x-7hd2Cg.js → gdscript-BaNvmSXL.js} +1 -1
  112. package/dist/app/assets/{gedcom-BMCTbYS6.js → gedcom-BLjWW8zc.js} +1 -1
  113. package/dist/app/assets/{gherkin-BcBvM988.js → gherkin-BxsMbJgE.js} +1 -1
  114. package/dist/app/assets/{git-BTGg5sN4.js → git-C3JKKGbu.js} +1 -1
  115. package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-b-kntfTC.js → gitGraphDiagram-UUTBAWPF-antOmae7.js} +1 -1
  116. package/dist/app/assets/{glsl-DByr37nv.js → glsl-Dy963NrS.js} +1 -1
  117. package/dist/app/assets/{gml-36I_9f_U.js → gml-RHKUDQYR.js} +1 -1
  118. package/dist/app/assets/{gn-BLDlPwNQ.js → gn-B5wX0kjQ.js} +1 -1
  119. package/dist/app/assets/{go-Boj1uPSx.js → go-BO0hAT1N.js} +1 -1
  120. package/dist/app/assets/{go-module-L2WDzHgB.js → go-module-C2Fr-9ms.js} +1 -1
  121. package/dist/app/assets/{graph-BYtz-_6s.js → graph-DLqezY1N.js} +1 -1
  122. package/dist/app/assets/{graphql-BfN-CNvc.js → graphql-D58aRI9g.js} +1 -1
  123. package/dist/app/assets/{groovy-Di6yQ_XB.js → groovy-IGpaqhY4.js} +1 -1
  124. package/dist/app/assets/{haml-CJKYBDrb.js → haml-C2z2yhSa.js} +1 -1
  125. package/dist/app/assets/{handlebars-C_d7SzSb.js → handlebars-BobMlUhh.js} +1 -1
  126. package/dist/app/assets/{haskell-DvCoQrPY.js → haskell-nIuVVanU.js} +1 -1
  127. package/dist/app/assets/{haxe-g-aQ5l_r.js → haxe-D5efufya.js} +1 -1
  128. package/dist/app/assets/{hcl-B2sKOa6X.js → hcl-D9KAZKAO.js} +1 -1
  129. package/dist/app/assets/{hlsl-DWW7PgMK.js → hlsl-BFWBj6lA.js} +1 -1
  130. package/dist/app/assets/{hoon-Cgs2pF0p.js → hoon-B5vc2PPa.js} +1 -1
  131. package/dist/app/assets/{hpkp-PIZ7CodS.js → hpkp-X9Vy-aP4.js} +1 -1
  132. package/dist/app/assets/{hsts-Bdp-yuRT.js → hsts-BTHtjxYA.js} +1 -1
  133. package/dist/app/assets/{http-VYp76tRU.js → http-D93SJiT9.js} +1 -1
  134. package/dist/app/assets/{ichigojam-DvtKARkc.js → ichigojam-DFGOLrmf.js} +1 -1
  135. package/dist/app/assets/{icon-d06F6rDq.js → icon-BsJxVaoC.js} +1 -1
  136. package/dist/app/assets/{icu-message-format-aVC9gogJ.js → icu-message-format-C0hqHQFf.js} +1 -1
  137. package/dist/app/assets/{idris-BQ2Vr1Lo.js → idris-D_XFEa4Y.js} +1 -1
  138. package/dist/app/assets/{iecst-o62IQ8Ar.js → iecst-BBDx_Apd.js} +1 -1
  139. package/dist/app/assets/{ignore-CXf2VZ3C.js → ignore-5mrYyBCy.js} +1 -1
  140. package/dist/app/assets/{index-KkR7szpv.js → index-OJL54NcI.js} +170 -170
  141. package/dist/app/assets/index-s5_akYUB.css +1 -0
  142. package/dist/app/assets/{infoDiagram-42DDH7IO-BFBpKPZd.js → infoDiagram-42DDH7IO-DHNCTrQo.js} +1 -1
  143. package/dist/app/assets/{inform7-CsQNRaGw.js → inform7-D_BK4Whb.js} +1 -1
  144. package/dist/app/assets/{ini-BlQytVce.js → ini-DHL1U3zm.js} +1 -1
  145. package/dist/app/assets/{io-Bo6fwZ5O.js → io-Bw7TS_7w.js} +1 -1
  146. package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-D5AkPKrc.js → ishikawaDiagram-UXIWVN3A-CjewUobx.js} +1 -1
  147. package/dist/app/assets/{j-Cz5UUgV-.js → j-DfX-jMbV.js} +1 -1
  148. package/dist/app/assets/{java-CjUD3NXn.js → java-BldkMImw.js} +1 -1
  149. package/dist/app/assets/{javadoc-yF8ZVFyi.js → javadoc-6dOM24mQ.js} +1 -1
  150. package/dist/app/assets/{javadoclike-DnQ7gClD.js → javadoclike-BHmZlS5e.js} +1 -1
  151. package/dist/app/assets/{javascript-PRMAjM-s.js → javascript-FvrzCcvc.js} +1 -1
  152. package/dist/app/assets/{javastacktrace-C6-F9CMW.js → javastacktrace-Byn0DB0K.js} +1 -1
  153. package/dist/app/assets/{jexl-oI1gkWTn.js → jexl-CB5kP-Am.js} +1 -1
  154. package/dist/app/assets/{jolie-KHDj467I.js → jolie-C7Q5mImX.js} +1 -1
  155. package/dist/app/assets/{journeyDiagram-VCZTEJTY-DgMvhqym.js → journeyDiagram-VCZTEJTY-DD8qNzmh.js} +1 -1
  156. package/dist/app/assets/{jq-CqB-vLgA.js → jq-C9deMLmZ.js} +1 -1
  157. package/dist/app/assets/{js-extras--LnkBZGI.js → js-extras-Brhyk9ef.js} +1 -1
  158. package/dist/app/assets/{js-templates-CdUH3dZg.js → js-templates-DhpXMSuF.js} +1 -1
  159. package/dist/app/assets/{jsdoc-C8SPD3A9.js → jsdoc-BEesq6va.js} +1 -1
  160. package/dist/app/assets/{json-CCZ95ADF.js → json-CRGHFhSS.js} +1 -1
  161. package/dist/app/assets/{json5-CQoP6QWS.js → json5-CbPQgQz7.js} +1 -1
  162. package/dist/app/assets/{jsonp-BzvcroET.js → jsonp-BBjDy5AO.js} +1 -1
  163. package/dist/app/assets/{jsstacktrace-D3CXOSM-.js → jsstacktrace-CcOPcdH3.js} +1 -1
  164. package/dist/app/assets/{jsx-Bd3mMffB.js → jsx-DRgBFrjX.js} +1 -1
  165. package/dist/app/assets/{julia-qBdVr2Tr.js → julia-DAe7WbG-.js} +1 -1
  166. package/dist/app/assets/{kanban-definition-6JOO6SKY-DPXkILDM.js → kanban-definition-6JOO6SKY-DgTSO2X8.js} +1 -1
  167. package/dist/app/assets/{keepalived-FNAJGQz5.js → keepalived-COsmSeDV.js} +1 -1
  168. package/dist/app/assets/{keyman-B0NqoQM-.js → keyman-Biz_0q7B.js} +1 -1
  169. package/dist/app/assets/{kotlin-CdWWxHY0.js → kotlin-C3V8Z8W0.js} +1 -1
  170. package/dist/app/assets/{kumir-bAKuoUwp.js → kumir-clIi7e8-.js} +1 -1
  171. package/dist/app/assets/{kusto-D1hPCkmo.js → kusto-BhEtzjY8.js} +1 -1
  172. package/dist/app/assets/{latex-BYk1hc9y.js → latex-kWox6R5Q.js} +1 -1
  173. package/dist/app/assets/{latte-BWv6hwOU.js → latte-C8Xd4YKa.js} +1 -1
  174. package/dist/app/assets/{layout-2Js2q7Wp.js → layout-CD5_V8sq.js} +1 -1
  175. package/dist/app/assets/{less-wnHPSvJJ.js → less-8ceLguvR.js} +1 -1
  176. package/dist/app/assets/{lilypond-xuX4YO1U.js → lilypond-CfYHEM-K.js} +1 -1
  177. package/dist/app/assets/{linear-B6WywDat.js → linear-B5jHFagM.js} +1 -1
  178. package/dist/app/assets/{liquid-xFGU1AAd.js → liquid-BJ6eYcfk.js} +1 -1
  179. package/dist/app/assets/{lisp-DjvMW89a.js → lisp--smLUoul.js} +1 -1
  180. package/dist/app/assets/{livescript-D5MDpvjh.js → livescript-BBflhyer.js} +1 -1
  181. package/dist/app/assets/{llvm-BTbu6b_B.js → llvm-Stc38VbV.js} +1 -1
  182. package/dist/app/assets/{log-BXtPvqUh.js → log-Dl9NGCxx.js} +1 -1
  183. package/dist/app/assets/{lolcode-Cg2KO8Bk.js → lolcode-7yqzBped.js} +1 -1
  184. package/dist/app/assets/{lua-D1_Kwv1l.js → lua-BEWp6yVC.js} +1 -1
  185. package/dist/app/assets/{magma-DT5ABiea.js → magma-a1ZYdqHu.js} +1 -1
  186. package/dist/app/assets/{makefile-B0kz2zIF.js → makefile-QpxduTfi.js} +1 -1
  187. package/dist/app/assets/{markdown-Ccqy3gK-.js → markdown-Dr9rg3gd.js} +1 -1
  188. package/dist/app/assets/{markup-B-Gm3D06.js → markup-DWdbcYGh.js} +1 -1
  189. package/dist/app/assets/{markup-templating-CVIiYen0.js → markup-templating-BduvWqLe.js} +1 -1
  190. package/dist/app/assets/{matlab-CpRokG-g.js → matlab-C9LyN81W.js} +1 -1
  191. package/dist/app/assets/{maxscript-CifzwyQN.js → maxscript-BMf24IEz.js} +1 -1
  192. package/dist/app/assets/{mel-CyTX6M-N.js → mel-C_j2S2hb.js} +1 -1
  193. package/dist/app/assets/{mermaid-DnF0NJk0.js → mermaid-G8stp4Fu.js} +1 -1
  194. package/dist/app/assets/{min-CeO0o-VZ.js → min-BGvlJ2dI.js} +1 -1
  195. package/dist/app/assets/{mindmap-definition-QFDTVHPH-C1GLNszO.js → mindmap-definition-QFDTVHPH-Dxkf-h1G.js} +1 -1
  196. package/dist/app/assets/{mizar-DX-L7mf3.js → mizar-J5U-ieUu.js} +1 -1
  197. package/dist/app/assets/{mongodb-CrNBr4YD.js → mongodb-DsLKEq_k.js} +1 -1
  198. package/dist/app/assets/{monkey-EVsyFzXp.js → monkey-lZP0TIai.js} +1 -1
  199. package/dist/app/assets/{moonscript-Bb5VMmq0.js → moonscript-OiCHzZ6_.js} +1 -1
  200. package/dist/app/assets/{n1ql-B8avGgLU.js → n1ql-C6sbE8_e.js} +1 -1
  201. package/dist/app/assets/{n4js-BA_CeBpN.js → n4js-BpPLTwi3.js} +1 -1
  202. package/dist/app/assets/{nand2tetris-hdl-BNrrwWv7.js → nand2tetris-hdl-BONzgEmL.js} +1 -1
  203. package/dist/app/assets/{naniscript-PcEQKYGG.js → naniscript-DmYZ1vD6.js} +1 -1
  204. package/dist/app/assets/{nasm-BF2RPhuG.js → nasm-BfiJTfj8.js} +1 -1
  205. package/dist/app/assets/{neon-BH4eKGLv.js → neon-CM742PO-.js} +1 -1
  206. package/dist/app/assets/{nevod-DLUuPv3n.js → nevod-Dlk8fgIJ.js} +1 -1
  207. package/dist/app/assets/{nginx-Fnshx0R8.js → nginx-BZ-0DFHd.js} +1 -1
  208. package/dist/app/assets/{nim-D0A0og2Z.js → nim-CU13w-pb.js} +1 -1
  209. package/dist/app/assets/{nix-Bon-hCg-.js → nix-DKrd4S8j.js} +1 -1
  210. package/dist/app/assets/{nsis-B0Op3uDI.js → nsis-B6Grq7ob.js} +1 -1
  211. package/dist/app/assets/{objectivec-CI9W2RmC.js → objectivec-Dbl3oSVf.js} +1 -1
  212. package/dist/app/assets/{ocaml-CPuytBAo.js → ocaml-Dp6vkH1l.js} +1 -1
  213. package/dist/app/assets/{opencl-ckicWmRb.js → opencl-BGEl-B5f.js} +1 -1
  214. package/dist/app/assets/{openqasm-DNNaR-Mb.js → openqasm-CBrpfqoP.js} +1 -1
  215. package/dist/app/assets/{oz-Cp5S2lvu.js → oz-Bcy_Q3m9.js} +1 -1
  216. package/dist/app/assets/{parigp-BiU88-BW.js → parigp-C8xRJQCD.js} +1 -1
  217. package/dist/app/assets/{parser-BJoKleAv.js → parser-Cey9DM6y.js} +1 -1
  218. package/dist/app/assets/{pascal-CcE4xcIX.js → pascal-l6HUvzh7.js} +1 -1
  219. package/dist/app/assets/{pascaligo-r-ZE34N3.js → pascaligo-B0R2oVyK.js} +1 -1
  220. package/dist/app/assets/{pcaxis-CW4NowQv.js → pcaxis-B7gTfCp3.js} +1 -1
  221. package/dist/app/assets/{peoplecode-Bbokkn0k.js → peoplecode-BrynhEhk.js} +1 -1
  222. package/dist/app/assets/{perl-NWBFpbg8.js → perl-DGnem1ta.js} +1 -1
  223. package/dist/app/assets/{php-extras-DvwbSAqp.js → php-extras-UxJ7EW_B.js} +1 -1
  224. package/dist/app/assets/{php-DzJJC1FF.js → php-ymrnn-Sa.js} +1 -1
  225. package/dist/app/assets/{phpdoc-vc489EfZ.js → phpdoc-D9_wAKK9.js} +1 -1
  226. package/dist/app/assets/{pieDiagram-DEJITSTG-DakoqX91.js → pieDiagram-DEJITSTG-DQU88qux.js} +1 -1
  227. package/dist/app/assets/{plsql-BSYYydG4.js → plsql-DAA7FuKL.js} +1 -1
  228. package/dist/app/assets/{powerquery-TIsxOi6u.js → powerquery-iAxKW4DJ.js} +1 -1
  229. package/dist/app/assets/{powershell-Bh2wJ04E.js → powershell-CWnnAMh5.js} +1 -1
  230. package/dist/app/assets/{processing-0Xg8ooVg.js → processing-Fx5vM2Rk.js} +1 -1
  231. package/dist/app/assets/{prolog-CxppYjwG.js → prolog-MDMz_07H.js} +1 -1
  232. package/dist/app/assets/{promql-M_6Fk7_i.js → promql-pDapTiOR.js} +1 -1
  233. package/dist/app/assets/{properties-DaA3ENH6.js → properties-Cq5vAXr4.js} +1 -1
  234. package/dist/app/assets/{protobuf-C7yrawyt.js → protobuf-BSKn03IB.js} +1 -1
  235. package/dist/app/assets/{psl-D7EDqlli.js → psl-DJWnJ0aZ.js} +1 -1
  236. package/dist/app/assets/{pug-CqBJblJn.js → pug-6thMZc-l.js} +1 -1
  237. package/dist/app/assets/{puppet-Z388LiOc.js → puppet-DcBfOA0r.js} +1 -1
  238. package/dist/app/assets/{pure-CXCKqVIH.js → pure-BMCCjO23.js} +1 -1
  239. package/dist/app/assets/{purebasic-CH-UTkQE.js → purebasic-DUfq0bVz.js} +1 -1
  240. package/dist/app/assets/{purescript-DvOvPLcm.js → purescript-Bmj-jbV7.js} +1 -1
  241. package/dist/app/assets/{q-CTsCA7pz.js → q-o6FC2Oci.js} +1 -1
  242. package/dist/app/assets/{qml-C2L45_tT.js → qml-CaBbPt0f.js} +1 -1
  243. package/dist/app/assets/{qore-CgIwfQn-.js → qore-C0fJNj2s.js} +1 -1
  244. package/dist/app/assets/{qsharp-Cfohf27J.js → qsharp-nrwk7Iu2.js} +1 -1
  245. package/dist/app/assets/{quadrantDiagram-34T5L4WZ-BJHhj_jc.js → quadrantDiagram-34T5L4WZ-DQQGChO4.js} +1 -1
  246. package/dist/app/assets/{r-C5o21RDe.js → r-s3d67ipT.js} +1 -1
  247. package/dist/app/assets/{racket-CN9RmGia.js → racket-CvnxUTxS.js} +1 -1
  248. package/dist/app/assets/{reason-C0TktVj3.js → reason-abnvbDHw.js} +1 -1
  249. package/dist/app/assets/{regex-BlijmS7y.js → regex-Dyp7nyFE.js} +1 -1
  250. package/dist/app/assets/{rego-D8yKAPUb.js → rego-D9o_M1Kt.js} +1 -1
  251. package/dist/app/assets/{renpy-HRBI32Rj.js → renpy-P-s55mrw.js} +1 -1
  252. package/dist/app/assets/{requirementDiagram-MS252O5E-DlLBwibk.js → requirementDiagram-MS252O5E-CQyaMifY.js} +1 -1
  253. package/dist/app/assets/{rest--RXtECt5.js → rest-CJGNsPIO.js} +1 -1
  254. package/dist/app/assets/{rip-mE2Wb308.js → rip--_Kjyshk.js} +1 -1
  255. package/dist/app/assets/{roboconf-DRTv7VeG.js → roboconf-CzO4IdEr.js} +1 -1
  256. package/dist/app/assets/{robotframework-BnkzJa4T.js → robotframework-CqMBjau5.js} +1 -1
  257. package/dist/app/assets/{ruby-CbnYMgfx.js → ruby-CcbP52GS.js} +1 -1
  258. package/dist/app/assets/{rust-D9ZEey-F.js → rust-BDcJmAdg.js} +1 -1
  259. package/dist/app/assets/{sankeyDiagram-XADWPNL6-CQ0D4FEy.js → sankeyDiagram-XADWPNL6-BR5ykQyP.js} +1 -1
  260. package/dist/app/assets/{sas-DEOAT5T8.js → sas-6ZRrxGY4.js} +1 -1
  261. package/dist/app/assets/{sass-CFnXYw-w.js → sass-LQWASCzx.js} +1 -1
  262. package/dist/app/assets/{scala-Cdyre3LC.js → scala-dLVC34jC.js} +1 -1
  263. package/dist/app/assets/{scheme-C7TzUGNb.js → scheme-ljjM-kw4.js} +1 -1
  264. package/dist/app/assets/{scss-DqOdGhXG.js → scss-BjZr9V6H.js} +1 -1
  265. package/dist/app/assets/{sequenceDiagram-FGHM5R23-Cliyp3uP.js → sequenceDiagram-FGHM5R23-C_CfyMdO.js} +1 -1
  266. package/dist/app/assets/{shell-session-C18Fh-Mo.js → shell-session-DN7Q5cOF.js} +1 -1
  267. package/dist/app/assets/{smali-Ba-NYTBy.js → smali-BSUZr7sT.js} +1 -1
  268. package/dist/app/assets/{smalltalk-D4_HH51D.js → smalltalk-DNUcII1j.js} +1 -1
  269. package/dist/app/assets/{smarty-ve8WueLi.js → smarty-w3V8wJ8q.js} +1 -1
  270. package/dist/app/assets/{sml-B1M_nKm2.js → sml-DSoVmt8E.js} +1 -1
  271. package/dist/app/assets/{solidity-CIvnWntJ.js → solidity-r-lFr53c.js} +1 -1
  272. package/dist/app/assets/{solution-file-R2nyikO3.js → solution-file-BE-32cJO.js} +1 -1
  273. package/dist/app/assets/{soy-C_3SFG7Z.js → soy-BH05VIly.js} +1 -1
  274. package/dist/app/assets/{sparql-C2k3cKYf.js → sparql-BmZSbo8m.js} +1 -1
  275. package/dist/app/assets/{splunk-spl-ByIFO0Ol.js → splunk-spl-BBtbm42X.js} +1 -1
  276. package/dist/app/assets/{sqf-Vjg8AD_x.js → sqf-2G5YaT6f.js} +1 -1
  277. package/dist/app/assets/{sql-DjDfr2VA.js → sql-BhZO3kQ8.js} +1 -1
  278. package/dist/app/assets/{squirrel-BlPI0NeA.js → squirrel-6NG1h2a_.js} +1 -1
  279. package/dist/app/assets/{stan-EA9jmZ4B.js → stan-DlLgeY1f.js} +1 -1
  280. package/dist/app/assets/{stateDiagram-FHFEXIEX-BaG7xzbX.js → stateDiagram-FHFEXIEX-BK6LRJ_J.js} +1 -1
  281. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-kcyyVi9f.js +1 -0
  282. package/dist/app/assets/{stylus-D2qHhNmV.js → stylus-9MANoABX.js} +1 -1
  283. package/dist/app/assets/{swift-CzeQnM5g.js → swift-rgVRgAqK.js} +1 -1
  284. package/dist/app/assets/{systemd-BL_IyZfy.js → systemd-DH306ton.js} +1 -1
  285. package/dist/app/assets/{t4-cs-BpATtOyQ.js → t4-cs-CqAUhraT.js} +1 -1
  286. package/dist/app/assets/{t4-templating-DarnFlia.js → t4-templating-CdnkPXAS.js} +1 -1
  287. package/dist/app/assets/{t4-vb-DlsRn2Cj.js → t4-vb-BGXI99pE.js} +1 -1
  288. package/dist/app/assets/{tap-swtRUhHW.js → tap-BAZJNbLK.js} +1 -1
  289. package/dist/app/assets/{tcl-C6d9gcmI.js → tcl-BOEKRtOp.js} +1 -1
  290. package/dist/app/assets/{textile-ue6vVR7H.js → textile-D7X0Sgyn.js} +1 -1
  291. package/dist/app/assets/{timeline-definition-GMOUNBTQ-CXGgHbNE.js → timeline-definition-GMOUNBTQ-B_LU5nDM.js} +1 -1
  292. package/dist/app/assets/{toml-DzLpuKYb.js → toml-CfzGw53h.js} +1 -1
  293. package/dist/app/assets/{tremor-DVx5napI.js → tremor-DYByk7ar.js} +1 -1
  294. package/dist/app/assets/{tt2-CfBoG1D5.js → tt2-CNCaPxhQ.js} +1 -1
  295. package/dist/app/assets/{turtle-03crZiO0.js → turtle-Bzs_at2N.js} +1 -1
  296. package/dist/app/assets/{twig-KE1rmB-l.js → twig-o2S4KNvE.js} +1 -1
  297. package/dist/app/assets/{typescript-BdOSmjy2.js → typescript-OnTd0yu3.js} +1 -1
  298. package/dist/app/assets/{typoscript-B28vjRk7.js → typoscript-CSmcWd5z.js} +1 -1
  299. package/dist/app/assets/{unrealscript-CTh7n3tv.js → unrealscript-cdAqsg1H.js} +1 -1
  300. package/dist/app/assets/{uorazor-QSSsUqoY.js → uorazor-It80EI2m.js} +1 -1
  301. package/dist/app/assets/{uri-Ui2KPDFN.js → uri-DsMi8rd7.js} +1 -1
  302. package/dist/app/assets/{v-Bbxf1ds9.js → v-B_-3T97Y.js} +1 -1
  303. package/dist/app/assets/{vala-BlgZ9glv.js → vala-Bege32x4.js} +1 -1
  304. package/dist/app/assets/{vbnet-DSInurkl.js → vbnet-DxWsZHmf.js} +1 -1
  305. package/dist/app/assets/{velocity-CpoD6Pq0.js → velocity-D8j2-t5T.js} +1 -1
  306. package/dist/app/assets/{vennDiagram-DHZGUBPP-Db2TlePA.js → vennDiagram-DHZGUBPP-DfQHyCke.js} +1 -1
  307. package/dist/app/assets/{verilog-yw--B1wx.js → verilog-BOdg-tSC.js} +1 -1
  308. package/dist/app/assets/{vhdl-CHBhtgXL.js → vhdl-Ce-nebP4.js} +1 -1
  309. package/dist/app/assets/{vim-CdXJ9W72.js → vim-Xv1PHa_E.js} +1 -1
  310. package/dist/app/assets/{visual-basic-DtOe-guS.js → visual-basic-Dxm3bTj4.js} +1 -1
  311. package/dist/app/assets/{wardley-RL74JXVD-CMqZ314T.js → wardley-RL74JXVD-B6u0ieiH.js} +1 -1
  312. package/dist/app/assets/{wardleyDiagram-NUSXRM2D-Diu9QsPH.js → wardleyDiagram-NUSXRM2D-DFue6QoQ.js} +1 -1
  313. package/dist/app/assets/{warpscript-DwowGOOS.js → warpscript-CXGTE5kB.js} +1 -1
  314. package/dist/app/assets/{wasm-BkLUVFyv.js → wasm-DkO34hDs.js} +1 -1
  315. package/dist/app/assets/{web-idl-C1GVfRt2.js → web-idl-BPq5ywx_.js} +1 -1
  316. package/dist/app/assets/{wiki-DURYVzTz.js → wiki-DPqgO5Yt.js} +1 -1
  317. package/dist/app/assets/{wolfram-CxvLgL5P.js → wolfram-BUOqMX2F.js} +1 -1
  318. package/dist/app/assets/{wren-BIEilPFe.js → wren-KDTDLR_P.js} +1 -1
  319. package/dist/app/assets/{xeora-CdxWp6rT.js → xeora-tlwdZtLE.js} +1 -1
  320. package/dist/app/assets/{xml-doc-Cqq7E-Uw.js → xml-doc-mP74j5_p.js} +1 -1
  321. package/dist/app/assets/{xojo-TX_aeoYq.js → xojo-C9Z4cCIr.js} +1 -1
  322. package/dist/app/assets/{xquery-CL0gFxeo.js → xquery-CNxehrYO.js} +1 -1
  323. package/dist/app/assets/{xychartDiagram-5P7HB3ND-BYaDUge6.js → xychartDiagram-5P7HB3ND-B_zEnzIh.js} +1 -1
  324. package/dist/app/assets/{yaml-lCG0Z7vx.js → yaml-CYOcRzsc.js} +1 -1
  325. package/dist/app/assets/{yang-BjQjWvFO.js → yang-CdXyvG4d.js} +1 -1
  326. package/dist/app/assets/{zig-DMlo7Ol7.js → zig-DisfpEah.js} +1 -1
  327. package/dist/app/index.html +2 -2
  328. package/dist/index.cjs +704 -659
  329. package/dist/index.js +704 -659
  330. package/package.json +2 -2
  331. package/dist/app/assets/channel-BFsqVDof.js +0 -1
  332. package/dist/app/assets/classDiagram-6PBFFD2Q-Bn8c7G_r.js +0 -1
  333. package/dist/app/assets/classDiagram-v2-HSJHXN6E-Bn8c7G_r.js +0 -1
  334. package/dist/app/assets/clone-IlBC1DaN.js +0 -1
  335. package/dist/app/assets/index-ByruneYs.css +0 -1
  336. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-CFVaPbpw.js +0 -1
package/dist/index.cjs CHANGED
@@ -11622,7 +11622,7 @@ function appendQuery(path, params) {
11622
11622
  const query = params.toString();
11623
11623
  return query ? `${path}?${query}` : path;
11624
11624
  }
11625
- function buildMcpAppReviveParams(data) {
11625
+ function buildMcpAppReviveParams(data, options) {
11626
11626
  const params = new URLSearchParams();
11627
11627
  const add = (key, value) => {
11628
11628
  if (value) {
@@ -11635,15 +11635,16 @@ function buildMcpAppReviveParams(data) {
11635
11635
  add("toolCallId", data.toolCallId);
11636
11636
  add("resourceUri", data.resourceUri);
11637
11637
  add("title", typeof data.title === "string" ? data.title : void 0);
11638
- add("token", data.appInstanceToken);
11638
+ add("messageId", options?.messageId);
11639
+ add("token", options?.appInstanceToken ?? data.appInstanceToken);
11639
11640
  return params;
11640
11641
  }
11641
- function buildMcpAppEndpointPath(data, endpoint) {
11642
+ function buildMcpAppEndpointPath(data, endpoint, options) {
11642
11643
  return appendQuery(
11643
11644
  `/api/xpert-toolset/mcp-apps/${encodeURIComponent(
11644
11645
  data.appInstanceId
11645
11646
  )}/${endpoint}`,
11646
- buildMcpAppReviveParams(data)
11647
+ buildMcpAppReviveParams(data, options)
11647
11648
  );
11648
11649
  }
11649
11650
  function escapeHtmlAttribute(value) {
@@ -12102,6 +12103,7 @@ function normalizeMcpAppResourceResponse(value, data) {
12102
12103
  uri: readString3(raw.uri),
12103
12104
  mimeType: readString3(raw.mimeType),
12104
12105
  html,
12106
+ appInstanceToken: readString3(raw.appInstanceToken),
12105
12107
  resourceUri: readString3(raw.resourceUri),
12106
12108
  title: resourceInfo.title,
12107
12109
  description: resourceInfo.description,
@@ -12147,6 +12149,7 @@ function isMcpAppComponentData(data) {
12147
12149
  }
12148
12150
  function McpAppMessage({
12149
12151
  data,
12152
+ messageId,
12150
12153
  className
12151
12154
  }) {
12152
12155
  const { i18n: i18n2 } = useChatkitTranslation();
@@ -12162,6 +12165,7 @@ function McpAppMessage({
12162
12165
  const sentInitialResultRef = React35.useRef(false);
12163
12166
  const modelContextRef = React35.useRef(null);
12164
12167
  const [resource, setResource] = React35.useState(null);
12168
+ const [runtimeAppInstanceToken, setRuntimeAppInstanceToken] = React35.useState(data.appInstanceToken);
12165
12169
  const [srcDoc, setSrcDoc] = React35.useState(null);
12166
12170
  const [height, setHeight] = React35.useState(420);
12167
12171
  const [error, setError] = React35.useState(null);
@@ -12169,16 +12173,21 @@ function McpAppMessage({
12169
12173
  const resourceUrl = React35.useMemo(
12170
12174
  () => buildXpertApiUrl(
12171
12175
  apiUrl,
12172
- buildMcpAppEndpointPath(data, "resource")
12176
+ buildMcpAppEndpointPath(data, "resource", {
12177
+ messageId
12178
+ })
12173
12179
  ),
12174
- [apiUrl, data]
12180
+ [apiUrl, data, messageId]
12175
12181
  );
12176
12182
  const rpcUrl = React35.useMemo(
12177
12183
  () => buildXpertApiUrl(
12178
12184
  apiUrl,
12179
- buildMcpAppEndpointPath(data, "rpc")
12185
+ buildMcpAppEndpointPath(data, "rpc", {
12186
+ appInstanceToken: runtimeAppInstanceToken,
12187
+ messageId
12188
+ })
12180
12189
  ),
12181
- [apiUrl, data]
12190
+ [apiUrl, data, messageId, runtimeAppInstanceToken]
12182
12191
  );
12183
12192
  const postToApp = React35.useCallback((message) => {
12184
12193
  iframeRef.current?.contentWindow?.postMessage(message, "*");
@@ -12235,6 +12244,7 @@ function McpAppMessage({
12235
12244
  const controller = new AbortController();
12236
12245
  initializedRef.current = false;
12237
12246
  sentInitialResultRef.current = false;
12247
+ setRuntimeAppInstanceToken(data.appInstanceToken);
12238
12248
  setIsLoading(true);
12239
12249
  setError(null);
12240
12250
  setResource(null);
@@ -12253,6 +12263,9 @@ function McpAppMessage({
12253
12263
  data
12254
12264
  );
12255
12265
  setResource(normalizedResource);
12266
+ setRuntimeAppInstanceToken(
12267
+ normalizedResource.appInstanceToken ?? data.appInstanceToken
12268
+ );
12256
12269
  const hostLocale = normalizeHostLocale(i18n2.language);
12257
12270
  setSrcDoc(
12258
12271
  injectMcpAppTheme(
@@ -12280,6 +12293,7 @@ function McpAppMessage({
12280
12293
  authenticatedFetch,
12281
12294
  data,
12282
12295
  data.appInstanceId,
12296
+ data.appInstanceToken,
12283
12297
  data.csp,
12284
12298
  i18n2.language,
12285
12299
  resourceUrl
@@ -12826,7 +12840,7 @@ function renderContentItem(content, index, message, lookupMessages, options) {
12826
12840
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(WidgetMessage, { messageId, data: content.data }) }, content.id ?? `widget-${index}`);
12827
12841
  }
12828
12842
  if (isMcpAppComponent(content)) {
12829
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(McpAppMessage, { data: content.data }) }, content.id ?? `mcp-app-${index}`);
12843
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(McpAppMessage, { messageId, data: content.data }) }, content.id ?? `mcp-app-${index}`);
12830
12844
  }
12831
12845
  if (getComponentMessagePresentation(content, getToolStepData(content)) === "grouped-step") {
12832
12846
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
@@ -17081,6 +17095,13 @@ function Chat({
17081
17095
  fallbackTitle: t("history.threadFallback")
17082
17096
  });
17083
17097
  const assistantTitle = assistantName || resolvedTitle;
17098
+ const layoutMaxWidth = options?.layout?.maxWidth;
17099
+ const chatColumnStyle = React49.useMemo(() => {
17100
+ if (layoutMaxWidth === void 0 || layoutMaxWidth === null || layoutMaxWidth === "") {
17101
+ return void 0;
17102
+ }
17103
+ return { maxWidth: layoutMaxWidth };
17104
+ }, [layoutMaxWidth]);
17084
17105
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17085
17106
  UploadDroppedFiles,
17086
17107
  {
@@ -17096,309 +17117,325 @@ function Chat({
17096
17117
  className
17097
17118
  ),
17098
17119
  children: [
17099
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center justify-between border-b p-2 sticky top-0 z-10 bg-background", children: [
17100
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
17101
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "relative shrink-0", children: [
17102
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17103
- ChatkitAvatar,
17104
- {
17105
- avatar: assistantAvatar,
17106
- className: "h-9 w-9 border border-border/60",
17107
- label: assistantTitle
17108
- }
17109
- ),
17110
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
17111
- ] }),
17112
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "truncate", children: [
17113
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17114
- "h2",
17115
- {
17116
- className: "text-lg font-semibold truncate",
17117
- title: assistantTitle,
17118
- children: assistantTitle
17119
- }
17120
- ),
17121
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
17122
- ] })
17123
- ] }),
17124
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1", children: [
17125
- canMinimizeToPet && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17126
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17127
- "button",
17128
- {
17129
- type: "button",
17130
- onClick: handleMinimizeToPet,
17131
- className: cn(
17132
- "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17133
- "text-muted-foreground hover:text-foreground hover:bg-muted",
17134
- "transition-colors duration-150"
17120
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17121
+ "div",
17122
+ {
17123
+ "data-slot": "chatkit-chat-header",
17124
+ className: "mx-auto flex w-full items-center justify-between border-b p-2 sticky top-0 z-10 bg-background",
17125
+ style: chatColumnStyle,
17126
+ children: [
17127
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
17128
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "relative shrink-0", children: [
17129
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17130
+ ChatkitAvatar,
17131
+ {
17132
+ avatar: assistantAvatar,
17133
+ className: "h-9 w-9 border border-border/60",
17134
+ label: assistantTitle
17135
+ }
17135
17136
  ),
17136
- "aria-label": t("chat.minimizeToPet"),
17137
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Minus, { size: 16 })
17138
- }
17139
- ) }) }),
17140
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
17141
- ] }),
17142
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17143
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17144
- "button",
17145
- {
17146
- type: "button",
17147
- onClick: () => setPetSettingsOpen(true),
17148
- className: cn(
17149
- "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17150
- "text-muted-foreground hover:text-foreground hover:bg-muted",
17151
- "transition-colors duration-150"
17137
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
17138
+ ] }),
17139
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "truncate", children: [
17140
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17141
+ "h2",
17142
+ {
17143
+ className: "text-lg font-semibold truncate",
17144
+ title: assistantTitle,
17145
+ children: assistantTitle
17146
+ }
17152
17147
  ),
17153
- "aria-label": t("settings.open"),
17154
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Settings, { size: 16 })
17155
- }
17156
- ) }) }),
17157
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
17158
- ] }),
17159
- history?.enabled !== false && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17160
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17161
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17162
- "button",
17163
- {
17164
- type: "button",
17165
- onClick: handleNewThread,
17166
- disabled: missingConfig || isHistoryLoading,
17167
- className: cn(
17168
- "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17169
- "text-muted-foreground hover:text-foreground hover:bg-muted",
17170
- "transition-colors duration-150",
17171
- "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
17172
- ),
17173
- "aria-label": t("history.newThread"),
17174
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { size: 16 })
17175
- }
17176
- ) }) }),
17177
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
17148
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
17149
+ ] })
17178
17150
  ] }),
17179
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17180
- HistorySidebar,
17181
- {
17182
- threads,
17183
- currentThreadId: stream.threadId ?? void 0,
17184
- onNewThread: handleNewThread,
17185
- onSelectThread: handleSelectThread,
17186
- onDeleteThread: handleDeleteThread,
17187
- showDelete: history?.showDelete !== false,
17188
- disabled: missingConfig || isThreadsLoading || isHistoryLoading
17189
- }
17190
- )
17191
- ] })
17192
- ] })
17193
- ] }),
17194
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex-1 p-4", children: [
17195
- errorMessage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
17196
- historyError && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
17197
- showMissingConfig && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
17198
- isHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
17199
- messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17200
- StartScreen,
17201
- {
17202
- startScreen,
17203
- onPromptClick: handlePromptClick,
17204
- onPromptEdit: handlePromptEdit,
17205
- promptSendDisabled: isSubmissionBlocked,
17206
- promptEditDisabled: isPromptEditDisabled
17207
- }
17208
- ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "space-y-4", children: [
17209
- canLoadMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 py-1", children: [
17210
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" }),
17211
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17212
- Button,
17151
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1", children: [
17152
+ canMinimizeToPet && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17153
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17154
+ "button",
17155
+ {
17156
+ type: "button",
17157
+ onClick: handleMinimizeToPet,
17158
+ className: cn(
17159
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17160
+ "text-muted-foreground hover:text-foreground hover:bg-muted",
17161
+ "transition-colors duration-150"
17162
+ ),
17163
+ "aria-label": t("chat.minimizeToPet"),
17164
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Minus, { size: 16 })
17165
+ }
17166
+ ) }) }),
17167
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
17168
+ ] }),
17169
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17170
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17171
+ "button",
17172
+ {
17173
+ type: "button",
17174
+ onClick: () => setPetSettingsOpen(true),
17175
+ className: cn(
17176
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17177
+ "text-muted-foreground hover:text-foreground hover:bg-muted",
17178
+ "transition-colors duration-150"
17179
+ ),
17180
+ "aria-label": t("settings.open"),
17181
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Settings, { size: 16 })
17182
+ }
17183
+ ) }) }),
17184
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
17185
+ ] }),
17186
+ history?.enabled !== false && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17187
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17188
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17189
+ "button",
17190
+ {
17191
+ type: "button",
17192
+ onClick: handleNewThread,
17193
+ disabled: missingConfig || isHistoryLoading,
17194
+ className: cn(
17195
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17196
+ "text-muted-foreground hover:text-foreground hover:bg-muted",
17197
+ "transition-colors duration-150",
17198
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
17199
+ ),
17200
+ "aria-label": t("history.newThread"),
17201
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { size: 16 })
17202
+ }
17203
+ ) }) }),
17204
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
17205
+ ] }),
17206
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17207
+ HistorySidebar,
17208
+ {
17209
+ threads,
17210
+ currentThreadId: stream.threadId ?? void 0,
17211
+ onNewThread: handleNewThread,
17212
+ onSelectThread: handleSelectThread,
17213
+ onDeleteThread: handleDeleteThread,
17214
+ showDelete: history?.showDelete !== false,
17215
+ disabled: missingConfig || isThreadsLoading || isHistoryLoading
17216
+ }
17217
+ )
17218
+ ] })
17219
+ ] })
17220
+ ]
17221
+ }
17222
+ ),
17223
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17224
+ "div",
17225
+ {
17226
+ "data-slot": "chatkit-chat-content",
17227
+ className: "mx-auto w-full flex-1 p-4",
17228
+ style: chatColumnStyle,
17229
+ children: [
17230
+ errorMessage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
17231
+ historyError && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
17232
+ showMissingConfig && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
17233
+ isHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
17234
+ messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17235
+ StartScreen,
17213
17236
  {
17214
- type: "button",
17215
- variant: "ghost",
17216
- size: "sm",
17217
- onClick: handleLoadMoreMessages,
17218
- disabled: isLoadingMoreMessages,
17219
- className: "h-7 px-2 text-xs font-medium text-muted-foreground hover:text-foreground",
17220
- children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
17237
+ startScreen,
17238
+ onPromptClick: handlePromptClick,
17239
+ onPromptEdit: handlePromptEdit,
17240
+ promptSendDisabled: isSubmissionBlocked,
17241
+ promptEditDisabled: isPromptEditDisabled
17221
17242
  }
17222
- ),
17223
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" })
17224
- ] }),
17225
- messages.map((message, index) => {
17226
- const messageType = String(message.type);
17227
- const isAssistantMessage = messageType === "assistant" || messageType === "ai";
17228
- const isStreamingMessage = stream.isLoading && index === messages.length - 1;
17229
- const streamingStatus = isAssistantMessage ? getAssistantStreamingStatus(
17230
- {
17231
- ...message,
17232
- lastStreamOutputAt: lastStreamOutputAtRef.current
17233
- },
17234
- isStreamingMessage,
17235
- { now: streamingNow }
17236
- ) : null;
17237
- if (isAssistantMessage && !hasRenderableAssistantMessage(message) && !streamingStatus) {
17238
- return null;
17239
- }
17240
- const messageContent = typeof message.content === "string" ? message.content : Array.isArray(message.content) ? message.content.map((part) => formatMessageContent(part)).join("") : formatMessageContent(message.content);
17241
- const hasPlainRenderableContent = messageContent.trim().length > 0;
17242
- const humanMessage = message;
17243
- const humanReferences = humanMessage.references ?? [];
17244
- const humanAttachments = [
17245
- ...humanMessage.fileAssets ?? [],
17246
- ...humanMessage.attachments ?? []
17247
- ];
17248
- const humanRuntimeCapabilityOptions = message.type === "human" ? humanMessage.runtimeCapabilityOptions ?? getSelectedRuntimeCapabilityOptions(
17249
- getRecommendedRuntimeCapabilitiesSelection(
17250
- humanMessage.runtimeCapabilities
17251
- ),
17252
- runtimeCapabilityOptions
17253
- ) : [];
17254
- const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
17255
- const canQuoteMessage = message.type === "human" || isAssistantMessage;
17256
- const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
17257
- if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
17258
- return null;
17259
- }
17260
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17261
- "div",
17262
- {
17263
- className: cn(
17264
- "group flex gap-3",
17265
- message.type === "human" ? "justify-end" : "justify-start -ml-1"
17266
- // AI messages: slightly closer to left
17243
+ ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "space-y-4", children: [
17244
+ canLoadMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 py-1", children: [
17245
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" }),
17246
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17247
+ Button,
17248
+ {
17249
+ type: "button",
17250
+ variant: "ghost",
17251
+ size: "sm",
17252
+ onClick: handleLoadMoreMessages,
17253
+ disabled: isLoadingMoreMessages,
17254
+ className: "h-7 px-2 text-xs font-medium text-muted-foreground hover:text-foreground",
17255
+ children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
17256
+ }
17267
17257
  ),
17268
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17258
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" })
17259
+ ] }),
17260
+ messages.map((message, index) => {
17261
+ const messageType = String(message.type);
17262
+ const isAssistantMessage = messageType === "assistant" || messageType === "ai";
17263
+ const isStreamingMessage = stream.isLoading && index === messages.length - 1;
17264
+ const streamingStatus = isAssistantMessage ? getAssistantStreamingStatus(
17265
+ {
17266
+ ...message,
17267
+ lastStreamOutputAt: lastStreamOutputAtRef.current
17268
+ },
17269
+ isStreamingMessage,
17270
+ { now: streamingNow }
17271
+ ) : null;
17272
+ if (isAssistantMessage && !hasRenderableAssistantMessage(message) && !streamingStatus) {
17273
+ return null;
17274
+ }
17275
+ const messageContent = typeof message.content === "string" ? message.content : Array.isArray(message.content) ? message.content.map((part) => formatMessageContent(part)).join("") : formatMessageContent(message.content);
17276
+ const hasPlainRenderableContent = messageContent.trim().length > 0;
17277
+ const humanMessage = message;
17278
+ const humanReferences = humanMessage.references ?? [];
17279
+ const humanAttachments = [
17280
+ ...humanMessage.fileAssets ?? [],
17281
+ ...humanMessage.attachments ?? []
17282
+ ];
17283
+ const humanRuntimeCapabilityOptions = message.type === "human" ? humanMessage.runtimeCapabilityOptions ?? getSelectedRuntimeCapabilityOptions(
17284
+ getRecommendedRuntimeCapabilitiesSelection(
17285
+ humanMessage.runtimeCapabilities
17286
+ ),
17287
+ runtimeCapabilityOptions
17288
+ ) : [];
17289
+ const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
17290
+ const canQuoteMessage = message.type === "human" || isAssistantMessage;
17291
+ const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
17292
+ if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
17293
+ return null;
17294
+ }
17295
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17269
17296
  "div",
17270
17297
  {
17271
17298
  className: cn(
17272
- "flex flex-col px-3 overflow-hidden",
17273
- isAssistantMessage && "min-w-0 flex-1"
17299
+ "group flex gap-3",
17300
+ message.type === "human" ? "justify-end" : "justify-start -ml-1"
17301
+ // AI messages: slightly closer to left
17274
17302
  ),
17275
- children: [
17276
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17277
- "div",
17278
- {
17279
- ...canQuoteMessage ? {
17280
- "data-quote-message-id": message.id,
17281
- "data-quote-source": quoteSource
17282
- } : {},
17283
- className: cn(
17284
- "max-w-full rounded-2xl",
17285
- message.type === "human" ? "bg-primary text-primary-foreground px-4 py-2.5" : message.type === "system" ? "bg-muted text-muted-foreground text-xs px-4 py-2.5" : "py-1 text-chat-foreground"
17286
- // AI messages: use chat-specific foreground color
17287
- ),
17288
- children: isAssistantMessage ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17289
- AssistantMessage,
17303
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17304
+ "div",
17305
+ {
17306
+ className: cn(
17307
+ "flex flex-col px-3 overflow-hidden",
17308
+ isAssistantMessage && "min-w-0 flex-1"
17309
+ ),
17310
+ children: [
17311
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17312
+ "div",
17290
17313
  {
17291
- message: {
17292
- ...message,
17293
- type: "assistant"
17294
- },
17295
- messages: messages.slice(0, index + 1).map(
17296
- (item) => ({
17297
- ...item,
17298
- type: String(item.type) === "ai" ? "assistant" : item.type
17299
- })
17314
+ ...canQuoteMessage ? {
17315
+ "data-quote-message-id": message.id,
17316
+ "data-quote-source": quoteSource
17317
+ } : {},
17318
+ className: cn(
17319
+ "max-w-full rounded-2xl",
17320
+ message.type === "human" ? "bg-primary text-primary-foreground px-4 py-2.5" : message.type === "system" ? "bg-muted text-muted-foreground text-xs px-4 py-2.5" : "py-1 text-chat-foreground"
17321
+ // AI messages: use chat-specific foreground color
17300
17322
  ),
17323
+ children: isAssistantMessage ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17324
+ AssistantMessage,
17325
+ {
17326
+ message: {
17327
+ ...message,
17328
+ type: "assistant"
17329
+ },
17330
+ messages: messages.slice(0, index + 1).map(
17331
+ (item) => ({
17332
+ ...item,
17333
+ type: String(item.type) === "ai" ? "assistant" : item.type
17334
+ })
17335
+ ),
17336
+ isStreaming: isStreamingMessage,
17337
+ streamingStatus,
17338
+ isThreadRunning: currentThreadIsRunning,
17339
+ organizationId: stream.organizationId,
17340
+ apiUrl: stream.apiUrl
17341
+ }
17342
+ ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17343
+ message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17344
+ "span",
17345
+ {
17346
+ className: "inline-flex max-w-full items-center gap-1 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs font-medium text-primary-foreground",
17347
+ children: [
17348
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17349
+ RuntimeCapabilityIcon,
17350
+ {
17351
+ option,
17352
+ variant: "chip"
17353
+ }
17354
+ ),
17355
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[9rem] truncate", children: option.label })
17356
+ ]
17357
+ },
17358
+ `${option.type}:${option.id}`
17359
+ )) }),
17360
+ message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17361
+ ReferenceChip,
17362
+ {
17363
+ reference,
17364
+ variant: "message"
17365
+ },
17366
+ getReferenceKey(reference)
17367
+ )) }),
17368
+ message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17369
+ "div",
17370
+ {
17371
+ className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
17372
+ children: [
17373
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.FileText, { size: 12 }),
17374
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
17375
+ ]
17376
+ },
17377
+ fileIndex
17378
+ )) }),
17379
+ Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17380
+ "p",
17381
+ {
17382
+ className: "wrap-break-word text-sm leading-relaxed",
17383
+ children: formatMessageContent(part)
17384
+ },
17385
+ `${part.type}-${partIndex}`
17386
+ )) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
17387
+ ] })
17388
+ }
17389
+ ),
17390
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17391
+ MessageActions,
17392
+ {
17393
+ content: messageContent,
17394
+ isAssistant: isAssistantMessage,
17301
17395
  isStreaming: isStreamingMessage,
17302
- streamingStatus,
17303
- isThreadRunning: currentThreadIsRunning,
17304
- organizationId: stream.organizationId,
17305
- apiUrl: stream.apiUrl
17396
+ onRetry: isAssistantMessage && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
17306
17397
  }
17307
- ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17308
- message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17309
- "span",
17310
- {
17311
- className: "inline-flex max-w-full items-center gap-1 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs font-medium text-primary-foreground",
17312
- children: [
17313
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17314
- RuntimeCapabilityIcon,
17315
- {
17316
- option,
17317
- variant: "chip"
17318
- }
17319
- ),
17320
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[9rem] truncate", children: option.label })
17321
- ]
17322
- },
17323
- `${option.type}:${option.id}`
17324
- )) }),
17325
- message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17326
- ReferenceChip,
17327
- {
17328
- reference,
17329
- variant: "message"
17330
- },
17331
- getReferenceKey(reference)
17332
- )) }),
17333
- message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17334
- "div",
17335
- {
17336
- className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
17337
- children: [
17338
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.FileText, { size: 12 }),
17339
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
17340
- ]
17341
- },
17342
- fileIndex
17343
- )) }),
17344
- Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17345
- "p",
17346
- {
17347
- className: "wrap-break-word text-sm leading-relaxed",
17348
- children: formatMessageContent(part)
17349
- },
17350
- `${part.type}-${partIndex}`
17351
- )) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
17352
- ] })
17353
- }
17354
- ),
17355
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17356
- MessageActions,
17357
- {
17358
- content: messageContent,
17359
- isAssistant: isAssistantMessage,
17360
- isStreaming: isStreamingMessage,
17361
- onRetry: isAssistantMessage && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
17362
- }
17363
- )
17364
- ]
17398
+ )
17399
+ ]
17400
+ }
17401
+ )
17402
+ },
17403
+ message.id ?? `${message.type}-${index}`
17404
+ );
17405
+ }),
17406
+ showLoadingDots && (() => {
17407
+ const lastMessage = messages[messages.length - 1];
17408
+ const lastMessageType = lastMessage ? String(lastMessage.type) : "";
17409
+ const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
17410
+ const lastAssistantStatus = isLastMessageFromAI ? getAssistantStreamingStatus(
17411
+ {
17412
+ ...lastMessage,
17413
+ lastStreamOutputAt: lastStreamOutputAtRef.current
17414
+ },
17415
+ stream.isLoading,
17416
+ { now: streamingNow }
17417
+ ) : null;
17418
+ if (lastAssistantStatus) return null;
17419
+ const fallbackStreamingStatus = getAssistantStreamingStatus(
17420
+ {
17421
+ status: void 0,
17422
+ reasoning: void 0,
17423
+ lastStreamOutputAt: lastStreamOutputAtRef.current
17424
+ },
17425
+ stream.isLoading,
17426
+ { now: streamingNow }
17427
+ );
17428
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17429
+ AssistantStreamingIndicator,
17430
+ {
17431
+ status: fallbackStreamingStatus ?? "loading"
17365
17432
  }
17366
- )
17367
- },
17368
- message.id ?? `${message.type}-${index}`
17369
- );
17370
- }),
17371
- showLoadingDots && (() => {
17372
- const lastMessage = messages[messages.length - 1];
17373
- const lastMessageType = lastMessage ? String(lastMessage.type) : "";
17374
- const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
17375
- const lastAssistantStatus = isLastMessageFromAI ? getAssistantStreamingStatus(
17376
- {
17377
- ...lastMessage,
17378
- lastStreamOutputAt: lastStreamOutputAtRef.current
17379
- },
17380
- stream.isLoading,
17381
- { now: streamingNow }
17382
- ) : null;
17383
- if (lastAssistantStatus) return null;
17384
- const fallbackStreamingStatus = getAssistantStreamingStatus(
17385
- {
17386
- status: void 0,
17387
- reasoning: void 0,
17388
- lastStreamOutputAt: lastStreamOutputAtRef.current
17389
- },
17390
- stream.isLoading,
17391
- { now: streamingNow }
17392
- );
17393
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17394
- AssistantStreamingIndicator,
17395
- {
17396
- status: fallbackStreamingStatus ?? "loading"
17397
- }
17398
- ) }) });
17399
- })()
17400
- ] })
17401
- ] }),
17433
+ ) }) });
17434
+ })()
17435
+ ] })
17436
+ ]
17437
+ }
17438
+ ),
17402
17439
  !isAtBottom && messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "sticky bottom-20 z-20 flex justify-center px-4 pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17403
17440
  Button,
17404
17441
  {
@@ -17443,386 +17480,394 @@ function Chat({
17443
17480
  )
17444
17481
  }
17445
17482
  ),
17446
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "p-2 sticky bottom-0 z-10 bg-background", children: [
17447
- threadErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-3 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive overflow-auto", children: threadErrorMessage }),
17448
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17449
- ChatAttachments,
17450
- {
17451
- ref: attachmentsRef,
17452
- accept: acceptMimes,
17453
- maxCount: composer?.attachments?.maxCount ?? 10,
17454
- maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
17455
- retryUploadLabel: t("chat.retryUpload"),
17456
- uploadFile: uploadContextFile,
17457
- deleteFile: deleteContextFile,
17458
- getFileStatus: getContextFileStatus,
17459
- onStateChange: setAttachmentState
17460
- }
17461
- ),
17462
- references.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17463
- ReferenceChip,
17464
- {
17465
- reference,
17466
- variant: "composer",
17467
- onRemove: () => setReferences(
17468
- (previous) => previous.filter(
17469
- (item) => getReferenceKey(item) !== getReferenceKey(reference)
17470
- )
17471
- ),
17472
- removeLabel: t("composer.removeReference")
17473
- },
17474
- getReferenceKey(reference)
17475
- )) }),
17476
- detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
17477
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
17478
- detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17479
- "span",
17480
- {
17481
- className: "inline-flex max-w-full items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",
17482
- children: [
17483
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RuntimeCapabilityIcon, { option, variant: "chip" }),
17484
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-40 truncate", children: option.label }),
17485
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17486
- "button",
17487
- {
17488
- type: "button",
17489
- onClick: () => removeRunRuntimeCapability(option),
17490
- className: "rounded-full p-0.5 hover:bg-primary/15",
17491
- title: t("composer.capabilities.removeRunCapability"),
17492
- "aria-label": t("composer.capabilities.removeRunCapability"),
17493
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 11 })
17494
- }
17495
- )
17496
- ]
17497
- },
17498
- `${option.type}:${option.id}`
17499
- ))
17500
- ] }),
17501
- showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17502
- "div",
17503
- {
17504
- className: cn(
17505
- "mb-2 flex min-h-10 gap-2 rounded-md border border-border bg-background px-2.5 py-2 text-xs text-foreground shadow-sm",
17506
- isGoalObjectiveExpanded ? "items-start" : "items-center"
17483
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17484
+ "div",
17485
+ {
17486
+ "data-slot": "chatkit-chat-composer",
17487
+ className: "mx-auto w-full p-2 sticky bottom-0 z-10 bg-background",
17488
+ style: chatColumnStyle,
17489
+ children: [
17490
+ threadErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-3 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive overflow-auto", children: threadErrorMessage }),
17491
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17492
+ ChatAttachments,
17493
+ {
17494
+ ref: attachmentsRef,
17495
+ accept: acceptMimes,
17496
+ maxCount: composer?.attachments?.maxCount ?? 10,
17497
+ maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
17498
+ retryUploadLabel: t("chat.retryUpload"),
17499
+ uploadFile: uploadContextFile,
17500
+ deleteFile: deleteContextFile,
17501
+ getFileStatus: getContextFileStatus,
17502
+ onStateChange: setAttachmentState
17503
+ }
17507
17504
  ),
17508
- children: [
17509
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17510
- import_lucide_react29.Target,
17511
- {
17512
- className: cn(
17513
- "size-4 shrink-0 text-muted-foreground",
17514
- isGoalObjectiveExpanded && "mt-1"
17505
+ references.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17506
+ ReferenceChip,
17507
+ {
17508
+ reference,
17509
+ variant: "composer",
17510
+ onRemove: () => setReferences(
17511
+ (previous) => previous.filter(
17512
+ (item) => getReferenceKey(item) !== getReferenceKey(reference)
17515
17513
  )
17516
- }
17517
- ),
17518
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "min-w-0 flex-1", children: [
17519
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
17520
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
17521
- threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "shrink-0 rounded-md bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground", children: t(`chat.goal.status.${threadGoal.status}`) }),
17522
- isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
17523
- ] }),
17524
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17525
- "div",
17526
- {
17527
- className: cn(
17528
- "mt-0.5 text-muted-foreground",
17529
- threadGoal?.objective && !goalError && isGoalObjectiveExpanded ? "whitespace-pre-wrap break-words" : "truncate"
17530
- ),
17531
- children: goalError || threadGoal?.objective
17532
- }
17533
17514
  ),
17534
- threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.goal.elapsed", {
17535
- elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
17536
- }) }) })
17537
- ] }),
17538
- threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
17539
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17540
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17541
- Button,
17515
+ removeLabel: t("composer.removeReference")
17516
+ },
17517
+ getReferenceKey(reference)
17518
+ )) }),
17519
+ detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
17520
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
17521
+ detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17522
+ "span",
17523
+ {
17524
+ className: "inline-flex max-w-full items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",
17525
+ children: [
17526
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RuntimeCapabilityIcon, { option, variant: "chip" }),
17527
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-40 truncate", children: option.label }),
17528
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17529
+ "button",
17530
+ {
17531
+ type: "button",
17532
+ onClick: () => removeRunRuntimeCapability(option),
17533
+ className: "rounded-full p-0.5 hover:bg-primary/15",
17534
+ title: t("composer.capabilities.removeRunCapability"),
17535
+ "aria-label": t("composer.capabilities.removeRunCapability"),
17536
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 11 })
17537
+ }
17538
+ )
17539
+ ]
17540
+ },
17541
+ `${option.type}:${option.id}`
17542
+ ))
17543
+ ] }),
17544
+ showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17545
+ "div",
17546
+ {
17547
+ className: cn(
17548
+ "mb-2 flex min-h-10 gap-2 rounded-md border border-border bg-background px-2.5 py-2 text-xs text-foreground shadow-sm",
17549
+ isGoalObjectiveExpanded ? "items-start" : "items-center"
17550
+ ),
17551
+ children: [
17552
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17553
+ import_lucide_react29.Target,
17542
17554
  {
17543
- type: "button",
17544
- variant: "ghost",
17545
- size: "icon-xs",
17546
- disabled: isGoalLoading,
17547
- onClick: () => {
17548
- const prefix = "/goal edit ";
17549
- setComposerText(`${prefix}${threadGoal.objective}`);
17550
- },
17551
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { className: "size-3" })
17555
+ className: cn(
17556
+ "size-4 shrink-0 text-muted-foreground",
17557
+ isGoalObjectiveExpanded && "mt-1"
17558
+ )
17552
17559
  }
17553
- ) }),
17554
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.edit") })
17555
- ] }),
17556
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17557
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17558
- Button,
17559
- {
17560
- type: "button",
17561
- variant: "ghost",
17562
- size: "icon-xs",
17563
- disabled: isGoalLoading,
17564
- onClick: () => void handleGoalCommand({
17565
- args: threadGoal.status === "paused" ? "resume" : "pause",
17566
- commandSource: {
17567
- type: "slash_command",
17568
- name: "goal",
17569
- source: "runtime",
17570
- executionType: "insert_invocation"
17560
+ ),
17561
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "min-w-0 flex-1", children: [
17562
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
17563
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
17564
+ threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "shrink-0 rounded-md bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground", children: t(`chat.goal.status.${threadGoal.status}`) }),
17565
+ isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
17566
+ ] }),
17567
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17568
+ "div",
17569
+ {
17570
+ className: cn(
17571
+ "mt-0.5 text-muted-foreground",
17572
+ threadGoal?.objective && !goalError && isGoalObjectiveExpanded ? "whitespace-pre-wrap break-words" : "truncate"
17573
+ ),
17574
+ children: goalError || threadGoal?.objective
17575
+ }
17576
+ ),
17577
+ threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.goal.elapsed", {
17578
+ elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
17579
+ }) }) })
17580
+ ] }),
17581
+ threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
17582
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17583
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17584
+ Button,
17585
+ {
17586
+ type: "button",
17587
+ variant: "ghost",
17588
+ size: "icon-xs",
17589
+ disabled: isGoalLoading,
17590
+ onClick: () => {
17591
+ const prefix = "/goal edit ";
17592
+ setComposerText(`${prefix}${threadGoal.objective}`);
17593
+ },
17594
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { className: "size-3" })
17571
17595
  }
17572
- }),
17573
- children: threadGoal.status === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Play, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pause, { className: "size-3" })
17574
- }
17575
- ) }),
17576
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
17577
- ] }),
17578
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17579
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17580
- Button,
17581
- {
17582
- type: "button",
17583
- variant: "ghost",
17584
- size: "icon-xs",
17585
- disabled: isGoalLoading,
17586
- onClick: () => void handleGoalCommand({
17587
- args: "clear",
17588
- commandSource: {
17589
- type: "slash_command",
17590
- name: "goal",
17591
- source: "runtime",
17592
- executionType: "insert_invocation"
17596
+ ) }),
17597
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.edit") })
17598
+ ] }),
17599
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17600
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17601
+ Button,
17602
+ {
17603
+ type: "button",
17604
+ variant: "ghost",
17605
+ size: "icon-xs",
17606
+ disabled: isGoalLoading,
17607
+ onClick: () => void handleGoalCommand({
17608
+ args: threadGoal.status === "paused" ? "resume" : "pause",
17609
+ commandSource: {
17610
+ type: "slash_command",
17611
+ name: "goal",
17612
+ source: "runtime",
17613
+ executionType: "insert_invocation"
17614
+ }
17615
+ }),
17616
+ children: threadGoal.status === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Play, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pause, { className: "size-3" })
17593
17617
  }
17594
- }),
17595
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Trash2, { className: "size-3" })
17596
- }
17597
- ) }),
17598
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.clear") })
17599
- ] }),
17600
- threadGoal.objective && !goalError && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17601
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17602
- Button,
17603
- {
17604
- type: "button",
17605
- variant: "ghost",
17606
- size: "icon-xs",
17607
- "aria-expanded": isGoalObjectiveExpanded,
17608
- "aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
17609
- onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
17610
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17611
- import_lucide_react29.ChevronDown,
17618
+ ) }),
17619
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
17620
+ ] }),
17621
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17622
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17623
+ Button,
17612
17624
  {
17613
- className: cn(
17614
- "size-3 transition-transform",
17615
- isGoalObjectiveExpanded && "rotate-180"
17616
- )
17625
+ type: "button",
17626
+ variant: "ghost",
17627
+ size: "icon-xs",
17628
+ disabled: isGoalLoading,
17629
+ onClick: () => void handleGoalCommand({
17630
+ args: "clear",
17631
+ commandSource: {
17632
+ type: "slash_command",
17633
+ name: "goal",
17634
+ source: "runtime",
17635
+ executionType: "insert_invocation"
17636
+ }
17637
+ }),
17638
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Trash2, { className: "size-3" })
17617
17639
  }
17618
- )
17619
- }
17620
- ) }),
17621
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
17622
- ] })
17623
- ] })
17624
- ]
17625
- }
17626
- ),
17627
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17628
- PendingRuntimeServices,
17629
- {
17630
- state: stream.runtimeActivities.sandboxServices,
17631
- onStopService: (serviceId) => stream.stopRuntimeActivityItem("sandbox-services", serviceId),
17632
- attachToComposer: !hasPendingTodos && !hasPendingFollowUps,
17633
- className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
17634
- }
17635
- ),
17636
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17637
- PendingTodos,
17638
- {
17639
- snapshot: stream.todos,
17640
- attachToComposer: !hasPendingFollowUps,
17641
- className: hasPendingFollowUps ? "mb-2" : void 0
17642
- }
17643
- ),
17644
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17645
- PendingFollowUps,
17646
- {
17647
- items: pendingFollowUps,
17648
- isLoading: stream.isLoading,
17649
- onPromoteToSteer: (id) => stream.promotePendingFollowUpToSteer(id),
17650
- canSendNow: stream.canSendPendingFollowUpNow,
17651
- onSendNow: (id) => stream.sendPendingFollowUpNow(id),
17652
- onEdit: handleEditPendingFollowUp,
17653
- onRemove: stream.removePendingFollowUp,
17654
- attachToComposer: true
17655
- }
17656
- ),
17657
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17658
- RequestUserInputPanel,
17659
- {
17660
- request: stream.pendingRequestUserInput,
17661
- onSubmit: stream.submitRequestUserInput,
17662
- onDismiss: stream.stop,
17663
- attachToComposer: true
17664
- }
17665
- ),
17666
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17667
- HITLApprovalPanel,
17668
- {
17669
- request: stream.pendingHITLRequest,
17670
- onSubmit: stream.submitHITLDecision,
17671
- onDismiss: stream.stop,
17672
- attachToComposer: true
17673
- }
17674
- ),
17675
- runtimeCapabilityPalette && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17676
- SlashPalette,
17677
- {
17678
- palette: runtimeCapabilityPalette,
17679
- options: slashPaletteOptions,
17680
- paletteRef: slashPaletteRef,
17681
- optionRefs: slashPaletteOptionRefs,
17682
- panelRoundedClass: getPanelRoundedClass(theme.radius),
17683
- itemRoundedClass: getMenuItemRoundedClass(theme.radius),
17684
- emptyLabel: slashPaletteEmptyLabel,
17685
- capabilityEmptyLabels: slashPaletteCapabilityEmptyLabels,
17686
- onSelect: selectSlashPaletteOption
17687
- }
17688
- ),
17689
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17690
- "div",
17691
- {
17692
- "data-slot": "composer-input-shell",
17693
- "data-layout": isComposerStacked ? "stacked" : "inline",
17694
- className: cn(
17695
- "relative flex flex-1 overflow-hidden",
17696
- "bg-background border border-border shadow-sm",
17697
- isComposerStacked ? "min-h-[5.5rem] px-1.5 pt-1.5 pb-12" : "min-h-12 px-1.5 py-1",
17698
- "focus-within:border-muted-foreground/30 focus-within:shadow-md",
17699
- "transition-[min-height,padding,border-radius,box-shadow,border-color] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
17700
- composerInputRoundedClass
17701
- ),
17702
- children: [
17703
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17704
- "div",
17705
- {
17706
- ref: composerInputRef,
17707
- role: "textbox",
17708
- "aria-multiline": "true",
17709
- "aria-disabled": missingConfig || isHistoryLoading || hasPendingInteractiveRequest,
17710
- contentEditable: !(missingConfig || isHistoryLoading || hasPendingInteractiveRequest),
17711
- suppressContentEditableWarning: true,
17712
- onInput: handleComposerInput,
17713
- onCompositionEnd: handleComposerCompositionEnd,
17714
- onSelect: handleComposerSelect,
17715
- onPaste: handleComposerPaste,
17716
- onKeyDown: handleComposerKeyDown,
17717
- "data-placeholder": inputPlaceholder,
17718
- className: cn(
17719
- "min-h-8 max-h-32 w-full overflow-hidden whitespace-pre-wrap break-words bg-transparent text-sm leading-5 text-foreground outline-none transition-[padding,min-height] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
17720
- isComposerStacked ? "px-2 py-1.5" : "py-1 pr-11 pl-11 mt-1",
17721
- "empty:before:pointer-events-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
17722
- (missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
17723
- ),
17724
- children: renderedComposerParts.map(
17725
- (part, index) => part.type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React49.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17726
- "span",
17727
- {
17728
- "data-composer-capability-key": part.key,
17729
- "data-capability-type": part.capability.type,
17730
- "data-capability-id": part.capability.id,
17731
- contentEditable: false,
17732
- className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
17733
- children: [
17734
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17735
- RuntimeCapabilityIcon,
17640
+ ) }),
17641
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.clear") })
17642
+ ] }),
17643
+ threadGoal.objective && !goalError && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17644
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17645
+ Button,
17646
+ {
17647
+ type: "button",
17648
+ variant: "ghost",
17649
+ size: "icon-xs",
17650
+ "aria-expanded": isGoalObjectiveExpanded,
17651
+ "aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
17652
+ onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
17653
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17654
+ import_lucide_react29.ChevronDown,
17736
17655
  {
17737
- option: part.capability,
17738
- variant: "chip"
17656
+ className: cn(
17657
+ "size-3 transition-transform",
17658
+ isGoalObjectiveExpanded && "rotate-180"
17659
+ )
17739
17660
  }
17740
- ),
17741
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: part.capability.label })
17742
- ]
17743
- },
17744
- part.key
17745
- )
17746
- )
17747
- },
17748
- composerDomVersion
17749
- ),
17750
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17751
- "div",
17752
- {
17753
- "data-slot": "composer-action-bar",
17754
- className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
17755
- children: [
17756
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
17757
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17758
- ComposerMenu,
17759
- {
17760
- composer,
17761
- onAttachmentClick: handleAttachmentClick,
17762
- onToolSelect: handleToolSelect,
17763
- selectedTool,
17764
- planModeEnabled,
17765
- onPlanModeChange: setPlanModeEnabled,
17766
- goalCommandAvailable,
17767
- goalPanelOpen: isGoalModeOpen,
17768
- onGoalPanelOpenChange: handleGoalPanelOpenChange,
17769
- runtimeCapabilities: runtimeCapabilitiesReady ? runtimeCapabilities : null,
17770
- selectedRuntimeCapabilities: effectiveSessionRuntimeCapabilities,
17771
- onRuntimeCapabilityToggle: handleSessionRuntimeCapabilityToggle,
17772
- disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
17661
+ )
17773
17662
  }
17774
17663
  ) }),
17775
- selectedTool && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { className: "pointer-events-auto inline-flex h-8 min-w-0 max-w-[14rem] shrink items-center gap-1.5 rounded-full bg-primary/10 px-2 text-xs font-medium text-primary transition-all duration-200", children: [
17776
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
17777
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17778
- "button",
17664
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
17665
+ ] })
17666
+ ] })
17667
+ ]
17668
+ }
17669
+ ),
17670
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17671
+ PendingRuntimeServices,
17672
+ {
17673
+ state: stream.runtimeActivities.sandboxServices,
17674
+ onStopService: (serviceId) => stream.stopRuntimeActivityItem("sandbox-services", serviceId),
17675
+ attachToComposer: !hasPendingTodos && !hasPendingFollowUps,
17676
+ className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
17677
+ }
17678
+ ),
17679
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17680
+ PendingTodos,
17681
+ {
17682
+ snapshot: stream.todos,
17683
+ attachToComposer: !hasPendingFollowUps,
17684
+ className: hasPendingFollowUps ? "mb-2" : void 0
17685
+ }
17686
+ ),
17687
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17688
+ PendingFollowUps,
17689
+ {
17690
+ items: pendingFollowUps,
17691
+ isLoading: stream.isLoading,
17692
+ onPromoteToSteer: (id) => stream.promotePendingFollowUpToSteer(id),
17693
+ canSendNow: stream.canSendPendingFollowUpNow,
17694
+ onSendNow: (id) => stream.sendPendingFollowUpNow(id),
17695
+ onEdit: handleEditPendingFollowUp,
17696
+ onRemove: stream.removePendingFollowUp,
17697
+ attachToComposer: true
17698
+ }
17699
+ ),
17700
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17701
+ RequestUserInputPanel,
17702
+ {
17703
+ request: stream.pendingRequestUserInput,
17704
+ onSubmit: stream.submitRequestUserInput,
17705
+ onDismiss: stream.stop,
17706
+ attachToComposer: true
17707
+ }
17708
+ ),
17709
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17710
+ HITLApprovalPanel,
17711
+ {
17712
+ request: stream.pendingHITLRequest,
17713
+ onSubmit: stream.submitHITLDecision,
17714
+ onDismiss: stream.stop,
17715
+ attachToComposer: true
17716
+ }
17717
+ ),
17718
+ runtimeCapabilityPalette && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17719
+ SlashPalette,
17720
+ {
17721
+ palette: runtimeCapabilityPalette,
17722
+ options: slashPaletteOptions,
17723
+ paletteRef: slashPaletteRef,
17724
+ optionRefs: slashPaletteOptionRefs,
17725
+ panelRoundedClass: getPanelRoundedClass(theme.radius),
17726
+ itemRoundedClass: getMenuItemRoundedClass(theme.radius),
17727
+ emptyLabel: slashPaletteEmptyLabel,
17728
+ capabilityEmptyLabels: slashPaletteCapabilityEmptyLabels,
17729
+ onSelect: selectSlashPaletteOption
17730
+ }
17731
+ ),
17732
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17733
+ "div",
17734
+ {
17735
+ "data-slot": "composer-input-shell",
17736
+ "data-layout": isComposerStacked ? "stacked" : "inline",
17737
+ className: cn(
17738
+ "relative flex flex-1 overflow-hidden",
17739
+ "bg-background border border-border shadow-sm",
17740
+ isComposerStacked ? "min-h-[5.5rem] px-1.5 pt-1.5 pb-12" : "min-h-12 px-1.5 py-1",
17741
+ "focus-within:border-muted-foreground/30 focus-within:shadow-md",
17742
+ "transition-[min-height,padding,border-radius,box-shadow,border-color] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
17743
+ composerInputRoundedClass
17744
+ ),
17745
+ children: [
17746
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17747
+ "div",
17748
+ {
17749
+ ref: composerInputRef,
17750
+ role: "textbox",
17751
+ "aria-multiline": "true",
17752
+ "aria-disabled": missingConfig || isHistoryLoading || hasPendingInteractiveRequest,
17753
+ contentEditable: !(missingConfig || isHistoryLoading || hasPendingInteractiveRequest),
17754
+ suppressContentEditableWarning: true,
17755
+ onInput: handleComposerInput,
17756
+ onCompositionEnd: handleComposerCompositionEnd,
17757
+ onSelect: handleComposerSelect,
17758
+ onPaste: handleComposerPaste,
17759
+ onKeyDown: handleComposerKeyDown,
17760
+ "data-placeholder": inputPlaceholder,
17761
+ className: cn(
17762
+ "min-h-8 max-h-32 w-full overflow-hidden whitespace-pre-wrap break-words bg-transparent text-sm leading-5 text-foreground outline-none transition-[padding,min-height] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
17763
+ isComposerStacked ? "px-2 py-1.5" : "py-1 pr-11 pl-11 mt-1",
17764
+ "empty:before:pointer-events-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
17765
+ (missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
17766
+ ),
17767
+ children: renderedComposerParts.map(
17768
+ (part, index) => part.type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React49.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17769
+ "span",
17779
17770
  {
17780
- type: "button",
17781
- onClick: () => setSelectedTool(null),
17782
- className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
17783
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 12 })
17784
- }
17771
+ "data-composer-capability-key": part.key,
17772
+ "data-capability-type": part.capability.type,
17773
+ "data-capability-id": part.capability.id,
17774
+ contentEditable: false,
17775
+ className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
17776
+ children: [
17777
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17778
+ RuntimeCapabilityIcon,
17779
+ {
17780
+ option: part.capability,
17781
+ variant: "chip"
17782
+ }
17783
+ ),
17784
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: part.capability.label })
17785
+ ]
17786
+ },
17787
+ part.key
17785
17788
  )
17786
- ] })
17787
- ] }),
17788
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17789
- SendButton,
17790
- {
17791
- disabled: isSendDisabled,
17792
- isLoading: stream.isLoading,
17793
- showStop: stream.isLoading && (!trimmedDraft || hasPendingInteractiveRequest),
17794
- onStop: () => stream.stop(),
17795
- stopLabel: t("chat.stop"),
17796
- sendLabel: t("chat.send"),
17797
- shortcuts: stream.isLoading && trimmedDraft ? [
17789
+ )
17790
+ },
17791
+ composerDomVersion
17792
+ ),
17793
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17794
+ "div",
17795
+ {
17796
+ "data-slot": "composer-action-bar",
17797
+ className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
17798
+ children: [
17799
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
17800
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17801
+ ComposerMenu,
17802
+ {
17803
+ composer,
17804
+ onAttachmentClick: handleAttachmentClick,
17805
+ onToolSelect: handleToolSelect,
17806
+ selectedTool,
17807
+ planModeEnabled,
17808
+ onPlanModeChange: setPlanModeEnabled,
17809
+ goalCommandAvailable,
17810
+ goalPanelOpen: isGoalModeOpen,
17811
+ onGoalPanelOpenChange: handleGoalPanelOpenChange,
17812
+ runtimeCapabilities: runtimeCapabilitiesReady ? runtimeCapabilities : null,
17813
+ selectedRuntimeCapabilities: effectiveSessionRuntimeCapabilities,
17814
+ onRuntimeCapabilityToggle: handleSessionRuntimeCapabilityToggle,
17815
+ disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
17816
+ }
17817
+ ) }),
17818
+ selectedTool && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { className: "pointer-events-auto inline-flex h-8 min-w-0 max-w-[14rem] shrink items-center gap-1.5 rounded-full bg-primary/10 px-2 text-xs font-medium text-primary transition-all duration-200", children: [
17819
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
17820
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17821
+ "button",
17822
+ {
17823
+ type: "button",
17824
+ onClick: () => setSelectedTool(null),
17825
+ className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
17826
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 12 })
17827
+ }
17828
+ )
17829
+ ] })
17830
+ ] }),
17831
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17832
+ SendButton,
17798
17833
  {
17799
- label: t("chat.followUps.queue"),
17800
- keys: "Enter"
17834
+ disabled: isSendDisabled,
17835
+ isLoading: stream.isLoading,
17836
+ showStop: stream.isLoading && (!trimmedDraft || hasPendingInteractiveRequest),
17837
+ onStop: () => stream.stop(),
17838
+ stopLabel: t("chat.stop"),
17839
+ sendLabel: t("chat.send"),
17840
+ shortcuts: stream.isLoading && trimmedDraft ? [
17841
+ {
17842
+ label: t("chat.followUps.queue"),
17843
+ keys: "Enter"
17844
+ }
17845
+ ] : void 0
17801
17846
  }
17802
- ] : void 0
17803
- }
17804
- ) })
17805
- ]
17806
- }
17807
- )
17808
- ]
17809
- }
17810
- ) }),
17811
- disclaimer?.text && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17812
- "p",
17813
- {
17814
- className: cn(
17815
- "mt-2 text-center text-xs",
17816
- disclaimer.highContrast ? "text-foreground" : "text-muted-foreground"
17847
+ ) })
17848
+ ]
17849
+ }
17850
+ )
17851
+ ]
17852
+ }
17853
+ ) }),
17854
+ disclaimer?.text && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17855
+ "p",
17856
+ {
17857
+ className: cn(
17858
+ "mt-2 text-center text-xs",
17859
+ disclaimer.highContrast ? "text-foreground" : "text-muted-foreground"
17860
+ ),
17861
+ children: disclaimer.text
17862
+ }
17817
17863
  ),
17818
- children: disclaimer.text
17819
- }
17820
- ),
17821
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
17822
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.poweredBy") }),
17823
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ContextUsageIndicator, { className: "absolute right-4" })
17824
- ] })
17825
- ] }),
17864
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
17865
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.poweredBy") }),
17866
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ContextUsageIndicator, { className: "absolute right-4" })
17867
+ ] })
17868
+ ]
17869
+ }
17870
+ ),
17826
17871
  /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17827
17872
  SettingsSheet,
17828
17873
  {