@xpert-ai/chatkit-ui 0.4.2 → 0.4.4

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-DhcCNE2L.js → _baseUniq-TMxiHmEt.js} +1 -1
  2. package/dist/app/assets/{abap-_IjCfpBS.js → abap-Ck-A--kS.js} +1 -1
  3. package/dist/app/assets/{abnf-CekkQUy9.js → abnf-ETC1zUJ3.js} +1 -1
  4. package/dist/app/assets/{actionscript-C9XSSYhb.js → actionscript-D--OP--K.js} +1 -1
  5. package/dist/app/assets/{ada-4vLfjsZX.js → ada-CDetVdj6.js} +1 -1
  6. package/dist/app/assets/{agda-CER1MQer.js → agda-BMJYMk52.js} +1 -1
  7. package/dist/app/assets/{al-DVApc0ak.js → al-Db9ENOd3.js} +1 -1
  8. package/dist/app/assets/{antlr4-CTOuYhug.js → antlr4-BW8d6D2N.js} +1 -1
  9. package/dist/app/assets/{apacheconf-Cx3fh3do.js → apacheconf-BQPffoZs.js} +1 -1
  10. package/dist/app/assets/{apex-CQChIoUK.js → apex-BDhwAKiF.js} +1 -1
  11. package/dist/app/assets/{apl-rqEDU7gi.js → apl-BS9tU3lX.js} +1 -1
  12. package/dist/app/assets/{applescript-SibyzsWq.js → applescript-CAuteGTO.js} +1 -1
  13. package/dist/app/assets/{aql-D5s-oH6r.js → aql-DlV09MnJ.js} +1 -1
  14. package/dist/app/assets/{arc-CqOJzRv3.js → arc-D3dvEiRa.js} +1 -1
  15. package/dist/app/assets/{architectureDiagram-Q4EWVU46-Sc4cdTS9.js → architectureDiagram-Q4EWVU46-BJNOb03u.js} +1 -1
  16. package/dist/app/assets/{arduino-CAvcLJph.js → arduino-Fwp0Gqjn.js} +1 -1
  17. package/dist/app/assets/{arff-DXHd3IWb.js → arff-D1ze2M6G.js} +1 -1
  18. package/dist/app/assets/{asciidoc-D1qamWMF.js → asciidoc-DuSG0rE-.js} +1 -1
  19. package/dist/app/assets/{asm6502-CLD-Uamm.js → asm6502-DiyS793s.js} +1 -1
  20. package/dist/app/assets/{asmatmel-CTTTETEh.js → asmatmel-BgPjOvKk.js} +1 -1
  21. package/dist/app/assets/{aspnet-gANAeiiI.js → aspnet-DS6cVlO8.js} +1 -1
  22. package/dist/app/assets/{autohotkey-DZzEICDN.js → autohotkey-BhOfSyb7.js} +1 -1
  23. package/dist/app/assets/{autoit-DU2qU7yP.js → autoit-qharvHka.js} +1 -1
  24. package/dist/app/assets/{avisynth-CW7VMs_l.js → avisynth-DuYY8hq9.js} +1 -1
  25. package/dist/app/assets/{avro-idl-m7lwvLZF.js → avro-idl-CVlpaCRn.js} +1 -1
  26. package/dist/app/assets/{bash-DhNYFOgQ.js → bash-CRdlMYvM.js} +1 -1
  27. package/dist/app/assets/{basic-CBgclVFD.js → basic-DupsYiAg.js} +1 -1
  28. package/dist/app/assets/{batch-_m1D2SzT.js → batch-SuJmV6In.js} +1 -1
  29. package/dist/app/assets/{bbcode-BuWXKUuN.js → bbcode-BS6lj-GP.js} +1 -1
  30. package/dist/app/assets/{bicep-CNNhU7qf.js → bicep-rkAfEJ7t.js} +1 -1
  31. package/dist/app/assets/{birb-Df15PWNN.js → birb-iXd4GkHj.js} +1 -1
  32. package/dist/app/assets/{bison-pTGuYt5R.js → bison-DXF-YZke.js} +1 -1
  33. package/dist/app/assets/{blockDiagram-DXYQGD6D-COmjjfPf.js → blockDiagram-DXYQGD6D-FJZrsqQ2.js} +1 -1
  34. package/dist/app/assets/{bnf-5rjVHg1A.js → bnf-H9nHTWOC.js} +1 -1
  35. package/dist/app/assets/{brainfuck-2M-a_fzt.js → brainfuck-6HhEdVzI.js} +1 -1
  36. package/dist/app/assets/{brightscript-BUcx3Uan.js → brightscript-B00Ory-q.js} +1 -1
  37. package/dist/app/assets/{bro-BtT_dXGd.js → bro-BguB8PwR.js} +1 -1
  38. package/dist/app/assets/{bsl-C1h-9jbB.js → bsl-CnoKMnh1.js} +1 -1
  39. package/dist/app/assets/{c-Cn84DM0m.js → c-BLZaQSul.js} +1 -1
  40. package/dist/app/assets/{c4Diagram-AHTNJAMY-BE1kXuuS.js → c4Diagram-AHTNJAMY-aFMpHsr7.js} +1 -1
  41. package/dist/app/assets/{cfscript-2H4o-JIw.js → cfscript-Dj3sn5qb.js} +1 -1
  42. package/dist/app/assets/{chaiscript-C1Bjxsfh.js → chaiscript-B2Li8_Xi.js} +1 -1
  43. package/dist/app/assets/channel-DYgM_zKD.js +1 -0
  44. package/dist/app/assets/{chunk-4BX2VUAB-DZ_C_iKC.js → chunk-4BX2VUAB-mNkmACgc.js} +1 -1
  45. package/dist/app/assets/{chunk-4TB4RGXK-DApXi72F.js → chunk-4TB4RGXK-UImL1Qph.js} +1 -1
  46. package/dist/app/assets/{chunk-55IACEB6-Dk5pcDDA.js → chunk-55IACEB6-BrbuP7ej.js} +1 -1
  47. package/dist/app/assets/{chunk-EDXVE4YY-C3768OfQ.js → chunk-EDXVE4YY-nIuwelfS.js} +1 -1
  48. package/dist/app/assets/{chunk-FMBD7UC4-BvglBVER.js → chunk-FMBD7UC4-BcWvK3ua.js} +1 -1
  49. package/dist/app/assets/{chunk-OYMX7WX6-DMLEPpZh.js → chunk-OYMX7WX6-NFSrvN2K.js} +1 -1
  50. package/dist/app/assets/{chunk-QZHKN3VN-_kOwjXni.js → chunk-QZHKN3VN-A-S7sUFp.js} +1 -1
  51. package/dist/app/assets/{chunk-YZCP3GAM-BofXuboV.js → chunk-YZCP3GAM-NsOgLJm6.js} +1 -1
  52. package/dist/app/assets/{cil-DHyrqdX_.js → cil-BSYlNEvs.js} +1 -1
  53. package/dist/app/assets/classDiagram-6PBFFD2Q-G-7-i5lY.js +1 -0
  54. package/dist/app/assets/classDiagram-v2-HSJHXN6E-G-7-i5lY.js +1 -0
  55. package/dist/app/assets/{clike-Bf02ej9F.js → clike-DaoHXpYs.js} +1 -1
  56. package/dist/app/assets/{clojure-LoSvb9pa.js → clojure-CtOotL0u.js} +1 -1
  57. package/dist/app/assets/clone-4Dzzc8I_.js +1 -0
  58. package/dist/app/assets/{cmake-BkWc04wT.js → cmake-BSiUfJHf.js} +1 -1
  59. package/dist/app/assets/{cobol-_nZTdMgt.js → cobol-Blq62nOS.js} +1 -1
  60. package/dist/app/assets/{coffeescript-DT5ySztk.js → coffeescript-wfCQi2dy.js} +1 -1
  61. package/dist/app/assets/{concurnas-DSAYXuEZ.js → concurnas-BptxXLM6.js} +1 -1
  62. package/dist/app/assets/{coq-CrgIrANd.js → coq-m0xx6QVk.js} +1 -1
  63. package/dist/app/assets/{core-C27f_Wct.js → core-BlK5liku.js} +1 -1
  64. package/dist/app/assets/{cose-bilkent-S5V4N54A-BqnGiR9q.js → cose-bilkent-S5V4N54A-BVlJJjjG.js} +1 -1
  65. package/dist/app/assets/{cpp-DNsF-Kz_.js → cpp-DrIwjXt4.js} +1 -1
  66. package/dist/app/assets/{crystal-yRp-Ck4J.js → crystal-B2OownN0.js} +1 -1
  67. package/dist/app/assets/{csharp-Dh8DUZOE.js → csharp-C8hT9u31.js} +1 -1
  68. package/dist/app/assets/{cshtml-CuaqD5vI.js → cshtml-Bqk4UcKH.js} +1 -1
  69. package/dist/app/assets/{csp-TuU29N7c.js → csp-B23dqIVk.js} +1 -1
  70. package/dist/app/assets/{css-DfThiGDT.js → css-C7bAsgCD.js} +1 -1
  71. package/dist/app/assets/{css-extras-DN46Xx9D.js → css-extras-BxAj6HIM.js} +1 -1
  72. package/dist/app/assets/{csv-BEpZMNNd.js → csv-CITuvdZl.js} +1 -1
  73. package/dist/app/assets/{cypher-CXuYSM3m.js → cypher-BdWaNEPh.js} +1 -1
  74. package/dist/app/assets/{d-DBLRM2HM.js → d-DWzNEoy_.js} +1 -1
  75. package/dist/app/assets/{dagre-KV5264BT-YbfphbKk.js → dagre-KV5264BT-Cwq32s4A.js} +1 -1
  76. package/dist/app/assets/{dart-ClooZxtE.js → dart-Cct8-2Yi.js} +1 -1
  77. package/dist/app/assets/{dataweave-iLNtOM4o.js → dataweave-sykaGSqb.js} +1 -1
  78. package/dist/app/assets/{dax-OQ4SKQyZ.js → dax-CZ69LQsy.js} +1 -1
  79. package/dist/app/assets/{dhall-BcEs9_Il.js → dhall-DThgzXZx.js} +1 -1
  80. package/dist/app/assets/{diagram-5BDNPKRD-CrSfz4ol.js → diagram-5BDNPKRD-BfciTHMz.js} +1 -1
  81. package/dist/app/assets/{diagram-G4DWMVQ6-COOuGquM.js → diagram-G4DWMVQ6-Q37x31io.js} +1 -1
  82. package/dist/app/assets/{diagram-MMDJMWI5-CLudV92t.js → diagram-MMDJMWI5-Cyyx6ZUw.js} +1 -1
  83. package/dist/app/assets/{diagram-TYMM5635-7hK6dmHH.js → diagram-TYMM5635-BUh40K6u.js} +1 -1
  84. package/dist/app/assets/{diff-C3sAjilP.js → diff-UDoi3FBV.js} +1 -1
  85. package/dist/app/assets/{django-DWDamL3u.js → django-CUQxRbf9.js} +1 -1
  86. package/dist/app/assets/{dns-zone-file-Bs-k24AT.js → dns-zone-file-9UmAuR-l.js} +1 -1
  87. package/dist/app/assets/{docker-CbsxZOR_.js → docker-vhZ6HugE.js} +1 -1
  88. package/dist/app/assets/{dot-cmPUgJiw.js → dot-Dlao8ZwH.js} +1 -1
  89. package/dist/app/assets/{ebnf-B20H8M5E.js → ebnf-BfWJycwn.js} +1 -1
  90. package/dist/app/assets/{editorconfig-CD8ZN3N0.js → editorconfig-DsrBDVtJ.js} +1 -1
  91. package/dist/app/assets/{eiffel-A2f55FY2.js → eiffel-ZZ7Z0b2_.js} +1 -1
  92. package/dist/app/assets/{ejs-DFRIdoGh.js → ejs-SLmpmzms.js} +1 -1
  93. package/dist/app/assets/{elixir-_kwd_REn.js → elixir-BdkxsFt4.js} +1 -1
  94. package/dist/app/assets/{elm-DQY_1HmV.js → elm-DSgkBbD-.js} +1 -1
  95. package/dist/app/assets/{erDiagram-SMLLAGMA-S51NLIRq.js → erDiagram-SMLLAGMA-CKj18meA.js} +1 -1
  96. package/dist/app/assets/{erb-Dhn1_rOy.js → erb-AX38416h.js} +1 -1
  97. package/dist/app/assets/{erlang-X69_IFoF.js → erlang-DY2BVWMP.js} +1 -1
  98. package/dist/app/assets/{etlua-KG8BhZyB.js → etlua-BSaUvZH7.js} +1 -1
  99. package/dist/app/assets/{excel-formula-CNlbsFIR.js → excel-formula-CGTOeZhB.js} +1 -1
  100. package/dist/app/assets/{factor-B3wH4xq3.js → factor-CtvOHq60.js} +1 -1
  101. package/dist/app/assets/{false-CgytrAC7.js → false-C4FtFKhi.js} +1 -1
  102. package/dist/app/assets/{firestore-security-rules-Coo0DWR5.js → firestore-security-rules-Z8TPJQpU.js} +1 -1
  103. package/dist/app/assets/{flow-Cy8AbL-B.js → flow-0LSCeVxZ.js} +1 -1
  104. package/dist/app/assets/{flowDiagram-DWJPFMVM-3gGb45g_.js → flowDiagram-DWJPFMVM-CmW1pCPp.js} +1 -1
  105. package/dist/app/assets/{fortran-h5riSewD.js → fortran-DR7--sEx.js} +1 -1
  106. package/dist/app/assets/{fsharp-CkvWu7RS.js → fsharp-CoiFf2ek.js} +1 -1
  107. package/dist/app/assets/{ftl-A8LPSp4k.js → ftl-BsfZdglK.js} +1 -1
  108. package/dist/app/assets/{ganttDiagram-T4ZO3ILL-LEeFMCzh.js → ganttDiagram-T4ZO3ILL-C1vWI0vT.js} +1 -1
  109. package/dist/app/assets/{gap-Db8FJjp9.js → gap-D5rs685K.js} +1 -1
  110. package/dist/app/assets/{gcode-CmfDqUKZ.js → gcode-ioide_II.js} +1 -1
  111. package/dist/app/assets/{gdscript-DJWWbktQ.js → gdscript-C1ZWRkkr.js} +1 -1
  112. package/dist/app/assets/{gedcom-DZLZnv4o.js → gedcom-DS1yKzLz.js} +1 -1
  113. package/dist/app/assets/{gherkin-dhrCyYj5.js → gherkin-uIhE-MbH.js} +1 -1
  114. package/dist/app/assets/{git-Dee4nqm_.js → git-B5BRNNT7.js} +1 -1
  115. package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-Cx0_OfVi.js → gitGraphDiagram-UUTBAWPF-DEg-duQZ.js} +1 -1
  116. package/dist/app/assets/{glsl-CGkGtKvP.js → glsl-B9fhkctz.js} +1 -1
  117. package/dist/app/assets/{gml-Cyovha5T.js → gml-offEglBU.js} +1 -1
  118. package/dist/app/assets/{gn-CZZWsczF.js → gn-FZ0bWEld.js} +1 -1
  119. package/dist/app/assets/{go-TELCDRfl.js → go-BIRlaT1a.js} +1 -1
  120. package/dist/app/assets/{go-module-DwdrJQUt.js → go-module-SjD6zijS.js} +1 -1
  121. package/dist/app/assets/{graph-Def3Ff6O.js → graph-sBvKxujm.js} +1 -1
  122. package/dist/app/assets/{graphql-BQkD7E1b.js → graphql-Be74WDAY.js} +1 -1
  123. package/dist/app/assets/{groovy-DSpGF2Ks.js → groovy-ChbEq3v0.js} +1 -1
  124. package/dist/app/assets/{haml-VPtmscyv.js → haml-C6FObrUo.js} +1 -1
  125. package/dist/app/assets/{handlebars-B6tGrDNr.js → handlebars-36OFp0YX.js} +1 -1
  126. package/dist/app/assets/{haskell-sD0oStLn.js → haskell-DuohgBoX.js} +1 -1
  127. package/dist/app/assets/{haxe-CHQlINJc.js → haxe-CNMh78ZV.js} +1 -1
  128. package/dist/app/assets/{hcl-B8fn6CLE.js → hcl-BpxVSY5Z.js} +1 -1
  129. package/dist/app/assets/{hlsl-BRt3KlBi.js → hlsl-DnxGKW3m.js} +1 -1
  130. package/dist/app/assets/{hoon-Y1tyBFu_.js → hoon-XUklDmVn.js} +1 -1
  131. package/dist/app/assets/{hpkp-B6tkTng1.js → hpkp-Did6vsrG.js} +1 -1
  132. package/dist/app/assets/{hsts-BT0gpx-A.js → hsts-DS9blmxt.js} +1 -1
  133. package/dist/app/assets/{http-Vi5xN3SQ.js → http-DA2WLFiQ.js} +1 -1
  134. package/dist/app/assets/{ichigojam-DwzjQwUK.js → ichigojam-DdOMt5rE.js} +1 -1
  135. package/dist/app/assets/{icon-CpNOZuom.js → icon-PVJAVx5C.js} +1 -1
  136. package/dist/app/assets/{icu-message-format-E7DXI-1d.js → icu-message-format-6jii1RVV.js} +1 -1
  137. package/dist/app/assets/{idris-Z32VP4RM.js → idris-UxX24g1J.js} +1 -1
  138. package/dist/app/assets/{iecst-CN5WMb2J.js → iecst-BynNGYT2.js} +1 -1
  139. package/dist/app/assets/{ignore-BPsyPKDL.js → ignore-4EVq7-cE.js} +1 -1
  140. package/dist/app/assets/{index-t-7uVNvT.js → index-CAfb2sup.js} +165 -165
  141. package/dist/app/assets/index-E0F-_Dk8.css +1 -0
  142. package/dist/app/assets/{infoDiagram-42DDH7IO-CloBfZbd.js → infoDiagram-42DDH7IO-BfATVLk8.js} +1 -1
  143. package/dist/app/assets/{inform7-DGLBlAGK.js → inform7-BXb820VQ.js} +1 -1
  144. package/dist/app/assets/{ini-BV3KOH-Q.js → ini-Cmr0cBrX.js} +1 -1
  145. package/dist/app/assets/{io-CRo9k3OJ.js → io-BdLksOc2.js} +1 -1
  146. package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-CYPPbF3l.js → ishikawaDiagram-UXIWVN3A-B6I8Yqfq.js} +1 -1
  147. package/dist/app/assets/{j-CHGRxEkV.js → j-CAftgdTa.js} +1 -1
  148. package/dist/app/assets/{java-DcCc37S9.js → java-fwAzePp5.js} +1 -1
  149. package/dist/app/assets/{javadoc-BajT0oRQ.js → javadoc-BcYkNCK0.js} +1 -1
  150. package/dist/app/assets/{javadoclike-BMMsIcdV.js → javadoclike-B57hwpBc.js} +1 -1
  151. package/dist/app/assets/{javascript-DyXwMbB3.js → javascript-u1gm812-.js} +1 -1
  152. package/dist/app/assets/{javastacktrace-DTvR039l.js → javastacktrace-cj9BHFXH.js} +1 -1
  153. package/dist/app/assets/{jexl-Ot_nPhCk.js → jexl-DrO8YpRi.js} +1 -1
  154. package/dist/app/assets/{jolie-BUy51jNj.js → jolie-C5CF-EiA.js} +1 -1
  155. package/dist/app/assets/{journeyDiagram-VCZTEJTY-Brna5vzp.js → journeyDiagram-VCZTEJTY-62Da_9fB.js} +1 -1
  156. package/dist/app/assets/{jq-5mmxZEvV.js → jq-BQS35fYF.js} +1 -1
  157. package/dist/app/assets/{js-extras-zVUUAKO_.js → js-extras-Dc8Ge9lP.js} +1 -1
  158. package/dist/app/assets/{js-templates-iJxD_2Sa.js → js-templates-BChMs7zu.js} +1 -1
  159. package/dist/app/assets/{jsdoc-DJ_m_yCh.js → jsdoc-Dsh0OaeE.js} +1 -1
  160. package/dist/app/assets/{json-CZjhVgPK.js → json-DSLB2HLl.js} +1 -1
  161. package/dist/app/assets/{json5-BNvFsIbI.js → json5-cRfUF1uJ.js} +1 -1
  162. package/dist/app/assets/{jsonp-gRo4PPGN.js → jsonp-DXOWbjE0.js} +1 -1
  163. package/dist/app/assets/{jsstacktrace-CT2oLlCK.js → jsstacktrace-DlgtDbr8.js} +1 -1
  164. package/dist/app/assets/{jsx-d0efg1vk.js → jsx-CyFeFIQM.js} +1 -1
  165. package/dist/app/assets/{julia-Dqs_RiDo.js → julia-vGoL8D9z.js} +1 -1
  166. package/dist/app/assets/{kanban-definition-6JOO6SKY-tE-1j_ia.js → kanban-definition-6JOO6SKY-JAtH1H2c.js} +1 -1
  167. package/dist/app/assets/{keepalived-Ber37oOF.js → keepalived-u6JnaMHj.js} +1 -1
  168. package/dist/app/assets/{keyman-C5bFTeeI.js → keyman-C2x0si7Y.js} +1 -1
  169. package/dist/app/assets/{kotlin-DBq0G8Hn.js → kotlin-l8__XfWl.js} +1 -1
  170. package/dist/app/assets/{kumir-_r-igbu1.js → kumir-CaQaIRBf.js} +1 -1
  171. package/dist/app/assets/{kusto-Dnrek9TI.js → kusto-DYDxqji-.js} +1 -1
  172. package/dist/app/assets/{latex-B78lTwvc.js → latex-D2qjbQmB.js} +1 -1
  173. package/dist/app/assets/{latte-CaSKAGnv.js → latte-CmbmgbPe.js} +1 -1
  174. package/dist/app/assets/{layout-BZiHvIMv.js → layout-BMTuSUP-.js} +1 -1
  175. package/dist/app/assets/{less-C0gq5vaY.js → less-DpljErLD.js} +1 -1
  176. package/dist/app/assets/{lilypond-GMV-kxfc.js → lilypond-DAeqUsI_.js} +1 -1
  177. package/dist/app/assets/{linear-sCxwL64x.js → linear-CqSIeBnp.js} +1 -1
  178. package/dist/app/assets/{liquid-Bjcywher.js → liquid-Bo11FNrj.js} +1 -1
  179. package/dist/app/assets/{lisp-Di4LOhy9.js → lisp-BNBGpNSq.js} +1 -1
  180. package/dist/app/assets/{livescript-CgOnolfS.js → livescript-CNBuUGwr.js} +1 -1
  181. package/dist/app/assets/{llvm-BGjbbrCi.js → llvm-BCQgrmMc.js} +1 -1
  182. package/dist/app/assets/{log-D7n8H9fm.js → log-7C67ffIH.js} +1 -1
  183. package/dist/app/assets/{lolcode-Cu9-2TFS.js → lolcode-tyVOf0-i.js} +1 -1
  184. package/dist/app/assets/{lua-lccF9r61.js → lua-D1tjiZGJ.js} +1 -1
  185. package/dist/app/assets/{magma-DcqQ1hwM.js → magma-DvpErL5E.js} +1 -1
  186. package/dist/app/assets/{makefile-kISpU6yQ.js → makefile-DVopM6_I.js} +1 -1
  187. package/dist/app/assets/{markdown-ClsPn-UJ.js → markdown-zDaJjBqz.js} +1 -1
  188. package/dist/app/assets/{markup-GKEZzmxD.js → markup-Dn7T0Xgl.js} +1 -1
  189. package/dist/app/assets/{markup-templating-CWO2xZeJ.js → markup-templating-jmwD3Mv5.js} +1 -1
  190. package/dist/app/assets/{matlab-gPoR8X9J.js → matlab-Dmd8VzKM.js} +1 -1
  191. package/dist/app/assets/{maxscript-BHY3xiu7.js → maxscript-FjCyY0j5.js} +1 -1
  192. package/dist/app/assets/{mel-rpDPR1uL.js → mel-BDzXY19C.js} +1 -1
  193. package/dist/app/assets/{mermaid-BuzahRsL.js → mermaid-lu-_cgAH.js} +1 -1
  194. package/dist/app/assets/{min-qX6PyCsg.js → min-DYtuudAi.js} +1 -1
  195. package/dist/app/assets/{mindmap-definition-QFDTVHPH-ssFAYwGj.js → mindmap-definition-QFDTVHPH-C0LlKYnG.js} +1 -1
  196. package/dist/app/assets/{mizar-uCD34iKQ.js → mizar-BDWlOEMd.js} +1 -1
  197. package/dist/app/assets/{mongodb-BHQiMgqu.js → mongodb-BqhqCTUF.js} +1 -1
  198. package/dist/app/assets/{monkey-DgUxfqRD.js → monkey-DD_wkxjO.js} +1 -1
  199. package/dist/app/assets/{moonscript-jEu2rBFy.js → moonscript-5BliHqu8.js} +1 -1
  200. package/dist/app/assets/{n1ql-Dt-1d48e.js → n1ql-BI9d8-dk.js} +1 -1
  201. package/dist/app/assets/{n4js-DhUX1sWN.js → n4js-CiGP0jcT.js} +1 -1
  202. package/dist/app/assets/{nand2tetris-hdl-B1sxYngv.js → nand2tetris-hdl-h4B9YPVX.js} +1 -1
  203. package/dist/app/assets/{naniscript-CLirJ9GC.js → naniscript-0FP5ZgNv.js} +1 -1
  204. package/dist/app/assets/{nasm-DFO6i9-v.js → nasm-CfsxN3sz.js} +1 -1
  205. package/dist/app/assets/{neon-CJVuQ87S.js → neon-Ds1qWnTS.js} +1 -1
  206. package/dist/app/assets/{nevod-BKKiVTjs.js → nevod-CpogMq0t.js} +1 -1
  207. package/dist/app/assets/{nginx-B_LEBTut.js → nginx-CBAywKyc.js} +1 -1
  208. package/dist/app/assets/{nim-DgvJ6hOl.js → nim-CKndoR7P.js} +1 -1
  209. package/dist/app/assets/{nix-CJ0KPl9Q.js → nix-C2aGN04i.js} +1 -1
  210. package/dist/app/assets/{nsis-C6JwEFTE.js → nsis-BS2FD5Ui.js} +1 -1
  211. package/dist/app/assets/{objectivec-B9B-kBxR.js → objectivec-BV3I8zfq.js} +1 -1
  212. package/dist/app/assets/{ocaml-SkFdro3L.js → ocaml-CumNTZrg.js} +1 -1
  213. package/dist/app/assets/{opencl-DSfJf34E.js → opencl-BA7HxeS1.js} +1 -1
  214. package/dist/app/assets/{openqasm-CDzDtizQ.js → openqasm-CVlYcfEb.js} +1 -1
  215. package/dist/app/assets/{oz-BWs_ndEf.js → oz-BgNzyTQm.js} +1 -1
  216. package/dist/app/assets/{parigp-_-pO98W4.js → parigp-HAeKHx70.js} +1 -1
  217. package/dist/app/assets/{parser-BwdpGZPJ.js → parser-DBm9W7gH.js} +1 -1
  218. package/dist/app/assets/{pascal-AEdKVQZ6.js → pascal-DVVWX7c3.js} +1 -1
  219. package/dist/app/assets/{pascaligo-B3FRz8ot.js → pascaligo-9sC0JINE.js} +1 -1
  220. package/dist/app/assets/{pcaxis-5fq3uU8R.js → pcaxis-BExTG1b5.js} +1 -1
  221. package/dist/app/assets/{peoplecode-DZ4fk8ON.js → peoplecode-BYMaBssU.js} +1 -1
  222. package/dist/app/assets/{perl-B3MXzetZ.js → perl-BnEaJyRt.js} +1 -1
  223. package/dist/app/assets/{php-vEB1iVno.js → php-DTvaAe6L.js} +1 -1
  224. package/dist/app/assets/{php-extras-DLRpD8nq.js → php-extras-BryvmqOr.js} +1 -1
  225. package/dist/app/assets/{phpdoc-BCqSfVX6.js → phpdoc-DNQcJB7n.js} +1 -1
  226. package/dist/app/assets/{pieDiagram-DEJITSTG-DxXi7DQ2.js → pieDiagram-DEJITSTG-CNyUzOEA.js} +1 -1
  227. package/dist/app/assets/{plsql-DPtxfxuA.js → plsql-C53Rqwl3.js} +1 -1
  228. package/dist/app/assets/{powerquery-BOfyovx0.js → powerquery-CBDVLr0E.js} +1 -1
  229. package/dist/app/assets/{powershell-DxVo8OSN.js → powershell-BTjXHGcn.js} +1 -1
  230. package/dist/app/assets/{processing-ijqSDZY0.js → processing-LU1Q4Xrp.js} +1 -1
  231. package/dist/app/assets/{prolog-DlYEmyH_.js → prolog-CAkqp_8e.js} +1 -1
  232. package/dist/app/assets/{promql-BjVFHQmv.js → promql-qm_oe_qq.js} +1 -1
  233. package/dist/app/assets/{properties-bwk71nw-.js → properties-CkopXTtp.js} +1 -1
  234. package/dist/app/assets/{protobuf-Cih2akTP.js → protobuf-Y8NjvM3i.js} +1 -1
  235. package/dist/app/assets/{psl-Cw1dOcRa.js → psl-C6tOp1_K.js} +1 -1
  236. package/dist/app/assets/{pug-DwJYMQlV.js → pug-CS_9WzOj.js} +1 -1
  237. package/dist/app/assets/{puppet-Caud_s-m.js → puppet-CUp_EgdL.js} +1 -1
  238. package/dist/app/assets/{pure-B5oj-gCx.js → pure-Blo1Mo0B.js} +1 -1
  239. package/dist/app/assets/{purebasic-BgeP5DDD.js → purebasic-Ca8-6hSG.js} +1 -1
  240. package/dist/app/assets/{purescript-CsHryjK3.js → purescript-NTJk_TqU.js} +1 -1
  241. package/dist/app/assets/{q-BP8bBuGv.js → q-B6Zcp4zx.js} +1 -1
  242. package/dist/app/assets/{qml-BgY-HmDG.js → qml-BWFD-5NF.js} +1 -1
  243. package/dist/app/assets/{qore-uOYNMdCg.js → qore-CDatToXb.js} +1 -1
  244. package/dist/app/assets/{qsharp-Cmp5vMRr.js → qsharp-D7nj5IOf.js} +1 -1
  245. package/dist/app/assets/{quadrantDiagram-34T5L4WZ-f7twVcyL.js → quadrantDiagram-34T5L4WZ-DhG4JpPn.js} +1 -1
  246. package/dist/app/assets/{r-BPMuS20T.js → r-B1QI-AqR.js} +1 -1
  247. package/dist/app/assets/{racket-qc2-NKzR.js → racket-B4nDtIWF.js} +1 -1
  248. package/dist/app/assets/{reason-Rphq4wU8.js → reason-JWfMNNZ5.js} +1 -1
  249. package/dist/app/assets/{regex-lUJxQlEc.js → regex-CJNXHeEg.js} +1 -1
  250. package/dist/app/assets/{rego-CgRMQR4R.js → rego-LQxbhCWr.js} +1 -1
  251. package/dist/app/assets/{renpy-O53RZ3yB.js → renpy-BDFd6l-h.js} +1 -1
  252. package/dist/app/assets/{requirementDiagram-MS252O5E-C-2UwVat.js → requirementDiagram-MS252O5E-VIZnTHe_.js} +1 -1
  253. package/dist/app/assets/{rest-lCVyRpHi.js → rest-CGwOWaqn.js} +1 -1
  254. package/dist/app/assets/{rip-Cb9MAixU.js → rip-BIv3Yp6n.js} +1 -1
  255. package/dist/app/assets/{roboconf-p--JilwP.js → roboconf-DGg8AzxQ.js} +1 -1
  256. package/dist/app/assets/{robotframework-CJWG7axQ.js → robotframework-Cu4U-LJt.js} +1 -1
  257. package/dist/app/assets/{ruby-DgHGg4xu.js → ruby-jJNeRq1e.js} +1 -1
  258. package/dist/app/assets/{rust-mfoZutVO.js → rust-DBMO8o-k.js} +1 -1
  259. package/dist/app/assets/{sankeyDiagram-XADWPNL6-DtWni1zR.js → sankeyDiagram-XADWPNL6-D109kLbO.js} +1 -1
  260. package/dist/app/assets/{sas-hkuUJbuO.js → sas-BXMgxJ5D.js} +1 -1
  261. package/dist/app/assets/{sass-DdYTeGYi.js → sass-BXkCPsxr.js} +1 -1
  262. package/dist/app/assets/{scala-BmqlMvBk.js → scala-A2dbBlRv.js} +1 -1
  263. package/dist/app/assets/{scheme-DGuanVCO.js → scheme-5YfcUkz6.js} +1 -1
  264. package/dist/app/assets/{scss-CQnillil.js → scss-CKQrod7s.js} +1 -1
  265. package/dist/app/assets/{sequenceDiagram-FGHM5R23-V1Ofbw_p.js → sequenceDiagram-FGHM5R23-BWFRA3S4.js} +1 -1
  266. package/dist/app/assets/{shell-session-DCSmJkzu.js → shell-session-7xRIeziW.js} +1 -1
  267. package/dist/app/assets/{smali-ffxofes2.js → smali-Dp3s5TDa.js} +1 -1
  268. package/dist/app/assets/{smalltalk-B3WSwake.js → smalltalk-Cn6dJ_DR.js} +1 -1
  269. package/dist/app/assets/{smarty-TkH0F2ZR.js → smarty-B62Phcz3.js} +1 -1
  270. package/dist/app/assets/{sml-Dn0OaBIX.js → sml-CRGJcRiK.js} +1 -1
  271. package/dist/app/assets/{solidity-X5AVGR0y.js → solidity-CmijFrY5.js} +1 -1
  272. package/dist/app/assets/{solution-file-CPrmt5Hs.js → solution-file-CMlGbfWf.js} +1 -1
  273. package/dist/app/assets/{soy-BWtqIhQj.js → soy-DfV0L1AX.js} +1 -1
  274. package/dist/app/assets/{sparql-B3dCbOij.js → sparql-UU0JEsJN.js} +1 -1
  275. package/dist/app/assets/{splunk-spl-DFme2x2-.js → splunk-spl-CoMa2odZ.js} +1 -1
  276. package/dist/app/assets/{sqf-B6O1kNSS.js → sqf-BK0u4w1w.js} +1 -1
  277. package/dist/app/assets/{sql-CJQw5AKW.js → sql-DNyh2fmD.js} +1 -1
  278. package/dist/app/assets/{squirrel-CzQsXTWv.js → squirrel-inCt7JHG.js} +1 -1
  279. package/dist/app/assets/{stan-lf0anrTR.js → stan-Doi4GinI.js} +1 -1
  280. package/dist/app/assets/{stateDiagram-FHFEXIEX-DCCf5FXE.js → stateDiagram-FHFEXIEX-BrDgd0rD.js} +1 -1
  281. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-DrNQuVcu.js +1 -0
  282. package/dist/app/assets/{stylus-COiHJR5i.js → stylus-B--PyNIy.js} +1 -1
  283. package/dist/app/assets/{swift-DkkKYkZS.js → swift-CzynVDjb.js} +1 -1
  284. package/dist/app/assets/{systemd-yMlv02T9.js → systemd-BzRtQaxY.js} +1 -1
  285. package/dist/app/assets/{t4-cs-rnhIAIrb.js → t4-cs-DRmWJZc9.js} +1 -1
  286. package/dist/app/assets/{t4-templating-DMWX9YhQ.js → t4-templating-DPZ7hNhf.js} +1 -1
  287. package/dist/app/assets/{t4-vb-ftpXLDQa.js → t4-vb-DJ-j33dQ.js} +1 -1
  288. package/dist/app/assets/{tap-BPZr3MHO.js → tap-Cxx_PgyE.js} +1 -1
  289. package/dist/app/assets/{tcl-Da5z37GP.js → tcl-Bs4a0Dfs.js} +1 -1
  290. package/dist/app/assets/{textile-D_cVONZR.js → textile-BoRmwUMy.js} +1 -1
  291. package/dist/app/assets/{timeline-definition-GMOUNBTQ-BUqjHP-0.js → timeline-definition-GMOUNBTQ-CzfKhXYm.js} +1 -1
  292. package/dist/app/assets/{toml-DKAIAUDo.js → toml-Dt03eQXy.js} +1 -1
  293. package/dist/app/assets/{tremor-UPWxEF30.js → tremor-DAjHRWBi.js} +1 -1
  294. package/dist/app/assets/{tt2-F3kwqgAK.js → tt2-BeNFgyN2.js} +1 -1
  295. package/dist/app/assets/{turtle-BGEC3Tea.js → turtle-BzI8BWIV.js} +1 -1
  296. package/dist/app/assets/{twig-BF1UtTiF.js → twig-Df--35lw.js} +1 -1
  297. package/dist/app/assets/{typescript-0Q55yGyu.js → typescript-BAKA2fdq.js} +1 -1
  298. package/dist/app/assets/{typoscript-BZzT6IZ0.js → typoscript-r0z-RS5y.js} +1 -1
  299. package/dist/app/assets/{unrealscript-CRZUJaDf.js → unrealscript-dT1dIQam.js} +1 -1
  300. package/dist/app/assets/{uorazor-DQbuUO_0.js → uorazor-C4wimjxD.js} +1 -1
  301. package/dist/app/assets/{uri-DaYUWj2f.js → uri-D7oE-PoJ.js} +1 -1
  302. package/dist/app/assets/{v-B_keUXs0.js → v-DwJtB8Vm.js} +1 -1
  303. package/dist/app/assets/{vala-C280zAuu.js → vala-D0mTgP2k.js} +1 -1
  304. package/dist/app/assets/{vbnet-BP5k7ovm.js → vbnet-BJfu6o8X.js} +1 -1
  305. package/dist/app/assets/{velocity-Cpzxjvpc.js → velocity-BJB5m8fQ.js} +1 -1
  306. package/dist/app/assets/{vennDiagram-DHZGUBPP-DMBYuFGJ.js → vennDiagram-DHZGUBPP-Cgb8-zyn.js} +1 -1
  307. package/dist/app/assets/{verilog-CsCWJCKK.js → verilog-Ci2D8dFC.js} +1 -1
  308. package/dist/app/assets/{vhdl-CnOBMJDT.js → vhdl-DcEoROdo.js} +1 -1
  309. package/dist/app/assets/{vim-BHrvXFGg.js → vim-BzWQ6rL0.js} +1 -1
  310. package/dist/app/assets/{visual-basic-DVMUkaLe.js → visual-basic-C9jUzYfG.js} +1 -1
  311. package/dist/app/assets/{wardley-RL74JXVD-D39mFmVb.js → wardley-RL74JXVD-Btw_ODEd.js} +1 -1
  312. package/dist/app/assets/{wardleyDiagram-NUSXRM2D-tYKT99K6.js → wardleyDiagram-NUSXRM2D-B84YCqkj.js} +1 -1
  313. package/dist/app/assets/{warpscript-D6-BbIHr.js → warpscript-BVhze8vt.js} +1 -1
  314. package/dist/app/assets/{wasm-Bi73rb7-.js → wasm-zAS-bEPo.js} +1 -1
  315. package/dist/app/assets/{web-idl-D5ZtoJL_.js → web-idl-G3r7q-fK.js} +1 -1
  316. package/dist/app/assets/{wiki-CorqGblj.js → wiki-exG7pUTP.js} +1 -1
  317. package/dist/app/assets/{wolfram-CfD99H8b.js → wolfram-C_Mj1MJG.js} +1 -1
  318. package/dist/app/assets/{wren-Bxtd03-U.js → wren-CdV44Tnx.js} +1 -1
  319. package/dist/app/assets/{xeora-CK88z6DA.js → xeora-2KKn4X5q.js} +1 -1
  320. package/dist/app/assets/{xml-doc-CG1bthfs.js → xml-doc-DLPYHfMi.js} +1 -1
  321. package/dist/app/assets/{xojo-ClNCxa3l.js → xojo-B6ggSUBg.js} +1 -1
  322. package/dist/app/assets/{xquery-KJgwBO7a.js → xquery-B2tHFdf8.js} +1 -1
  323. package/dist/app/assets/{xychartDiagram-5P7HB3ND-Cpkqm7JZ.js → xychartDiagram-5P7HB3ND-CWuLJaAz.js} +1 -1
  324. package/dist/app/assets/{yaml-BN5ddz6N.js → yaml-BkS8H31d.js} +1 -1
  325. package/dist/app/assets/{yang-wM3Tqav1.js → yang-DT_nuuZI.js} +1 -1
  326. package/dist/app/assets/{zig-At4jiVd0.js → zig-B0zYSJvR.js} +1 -1
  327. package/dist/app/index.html +2 -2
  328. package/dist/index.cjs +750 -662
  329. package/dist/index.js +752 -663
  330. package/package.json +4 -4
  331. package/dist/app/assets/channel-BVeXXlex.js +0 -1
  332. package/dist/app/assets/classDiagram-6PBFFD2Q-Bx9mt6fp.js +0 -1
  333. package/dist/app/assets/classDiagram-v2-HSJHXN6E-Bx9mt6fp.js +0 -1
  334. package/dist/app/assets/clone-C3qA4Qv-.js +0 -1
  335. package/dist/app/assets/index-ByruneYs.css +0 -1
  336. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-CWJp5A97.js +0 -1
package/dist/index.cjs CHANGED
@@ -8708,11 +8708,78 @@ var proposedPlanOpenPattern = /^\s*<proposed_plan>\s*$/;
8708
8708
  var proposedPlanClosePattern = /^\s*<\/proposed_plan>\s*$/;
8709
8709
  var markdownFencePattern = /^ {0,3}(`{3,}|~{3,})/;
8710
8710
  var planMarkdownFencePattern = /^\s*(`{3,}|~{3,})[ \t]*(?:markdown|md)[^\n]*\r?\n([\s\S]*?)\r?\n\1[ \t]*\s*$/i;
8711
+ var knowledgebaseCitationEffectName = "knowledgebase.open_citation";
8711
8712
  var stripMarkdownNode = (props) => {
8712
8713
  const elementProps = { ...props };
8713
8714
  delete elementProps.node;
8714
8715
  return elementProps;
8715
8716
  };
8717
+ var parseKnowledgebaseCitationHref = (href) => {
8718
+ if (typeof href !== "string" || !href.trim()) {
8719
+ return null;
8720
+ }
8721
+ try {
8722
+ const url = new URL(href);
8723
+ if (url.protocol !== "xpert:" || url.hostname !== "knowledgebase" || url.pathname !== "/chunk") {
8724
+ return null;
8725
+ }
8726
+ const documentId = url.searchParams.get("documentId")?.trim();
8727
+ if (!documentId) {
8728
+ return null;
8729
+ }
8730
+ const knowledgebaseId = url.searchParams.get("knowledgebaseId")?.trim();
8731
+ const chunkId = url.searchParams.get("chunkId")?.trim();
8732
+ const documentName = url.searchParams.get("documentName")?.trim();
8733
+ return {
8734
+ documentId,
8735
+ citationUrl: href,
8736
+ ...knowledgebaseId ? { knowledgebaseId } : {},
8737
+ ...chunkId ? { chunkId } : {},
8738
+ ...documentName ? { documentName } : {}
8739
+ };
8740
+ } catch {
8741
+ return null;
8742
+ }
8743
+ };
8744
+ var markdownUrlTransform = (value) => parseKnowledgebaseCitationHref(value) ? value : (0, import_react_markdown.defaultUrlTransform)(value);
8745
+ function MarkdownAnchor({
8746
+ className,
8747
+ href,
8748
+ onClick,
8749
+ ...props
8750
+ }) {
8751
+ const parentMessenger = (0, import_react6.useContext)(ParentMessengerContext);
8752
+ const citationTarget = parseKnowledgebaseCitationHref(href);
8753
+ const anchorProps = stripMarkdownNode(props);
8754
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
8755
+ "a",
8756
+ {
8757
+ className: cn(
8758
+ citationTarget ? "text-muted-foreground text-[0.85em] underline decoration-dotted underline-offset-4 transition-colors hover:text-primary" : "text-primary font-medium underline underline-offset-4",
8759
+ className
8760
+ ),
8761
+ href,
8762
+ target: citationTarget ? void 0 : "_blank",
8763
+ rel: citationTarget ? void 0 : "noopener noreferrer",
8764
+ "data-knowledgebase-citation": citationTarget ? "true" : void 0,
8765
+ onClick: (event) => {
8766
+ onClick?.(event);
8767
+ if (!citationTarget || event.defaultPrevented) {
8768
+ return;
8769
+ }
8770
+ event.preventDefault();
8771
+ parentMessenger?.sendEvent("public_event", [
8772
+ "effect",
8773
+ {
8774
+ name: knowledgebaseCitationEffectName,
8775
+ data: citationTarget
8776
+ }
8777
+ ]);
8778
+ },
8779
+ ...anchorProps
8780
+ }
8781
+ );
8782
+ }
8716
8783
  var getTextContent = (children) => import_react6.Children.toArray(children).map((child) => {
8717
8784
  if (typeof child === "string" || typeof child === "number") {
8718
8785
  return String(child);
@@ -8807,6 +8874,7 @@ function MarkdownContent({ children }) {
8807
8874
  {
8808
8875
  remarkPlugins: [import_remark_gfm.default, import_remark_math.default],
8809
8876
  rehypePlugins: [import_rehype_katex.default],
8877
+ urlTransform: markdownUrlTransform,
8810
8878
  components: defaultComponents,
8811
8879
  children
8812
8880
  }
@@ -9012,18 +9080,7 @@ var defaultComponents = {
9012
9080
  ...stripMarkdownNode(props)
9013
9081
  }
9014
9082
  ),
9015
- a: ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9016
- "a",
9017
- {
9018
- className: cn(
9019
- "text-primary font-medium underline underline-offset-4",
9020
- className
9021
- ),
9022
- target: "_blank",
9023
- rel: "noopener noreferrer",
9024
- ...stripMarkdownNode(props)
9025
- }
9026
- ),
9083
+ a: MarkdownAnchor,
9027
9084
  blockquote: ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
9028
9085
  "blockquote",
9029
9086
  {
@@ -17095,6 +17152,13 @@ function Chat({
17095
17152
  fallbackTitle: t("history.threadFallback")
17096
17153
  });
17097
17154
  const assistantTitle = assistantName || resolvedTitle;
17155
+ const layoutMaxWidth = options?.layout?.maxWidth;
17156
+ const chatColumnStyle = React49.useMemo(() => {
17157
+ if (layoutMaxWidth === void 0 || layoutMaxWidth === null || layoutMaxWidth === "") {
17158
+ return void 0;
17159
+ }
17160
+ return { maxWidth: layoutMaxWidth };
17161
+ }, [layoutMaxWidth]);
17098
17162
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17099
17163
  UploadDroppedFiles,
17100
17164
  {
@@ -17110,309 +17174,325 @@ function Chat({
17110
17174
  className
17111
17175
  ),
17112
17176
  children: [
17113
- /* @__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: [
17114
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
17115
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "relative shrink-0", children: [
17116
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17117
- ChatkitAvatar,
17118
- {
17119
- avatar: assistantAvatar,
17120
- className: "h-9 w-9 border border-border/60",
17121
- label: assistantTitle
17122
- }
17123
- ),
17124
- /* @__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" })
17125
- ] }),
17126
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "truncate", children: [
17127
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17128
- "h2",
17129
- {
17130
- className: "text-lg font-semibold truncate",
17131
- title: assistantTitle,
17132
- children: assistantTitle
17133
- }
17134
- ),
17135
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
17136
- ] })
17137
- ] }),
17138
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1", children: [
17139
- canMinimizeToPet && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17140
- /* @__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)(
17141
- "button",
17142
- {
17143
- type: "button",
17144
- onClick: handleMinimizeToPet,
17145
- className: cn(
17146
- "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17147
- "text-muted-foreground hover:text-foreground hover:bg-muted",
17148
- "transition-colors duration-150"
17177
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17178
+ "div",
17179
+ {
17180
+ "data-slot": "chatkit-chat-header",
17181
+ className: "mx-auto flex w-full items-center justify-between border-b p-2 sticky top-0 z-10 bg-background",
17182
+ style: chatColumnStyle,
17183
+ children: [
17184
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
17185
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "relative shrink-0", children: [
17186
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17187
+ ChatkitAvatar,
17188
+ {
17189
+ avatar: assistantAvatar,
17190
+ className: "h-9 w-9 border border-border/60",
17191
+ label: assistantTitle
17192
+ }
17149
17193
  ),
17150
- "aria-label": t("chat.minimizeToPet"),
17151
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Minus, { size: 16 })
17152
- }
17153
- ) }) }),
17154
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
17155
- ] }),
17156
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17157
- /* @__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)(
17158
- "button",
17159
- {
17160
- type: "button",
17161
- onClick: () => setPetSettingsOpen(true),
17162
- className: cn(
17163
- "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17164
- "text-muted-foreground hover:text-foreground hover:bg-muted",
17165
- "transition-colors duration-150"
17194
+ /* @__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" })
17195
+ ] }),
17196
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "truncate", children: [
17197
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17198
+ "h2",
17199
+ {
17200
+ className: "text-lg font-semibold truncate",
17201
+ title: assistantTitle,
17202
+ children: assistantTitle
17203
+ }
17166
17204
  ),
17167
- "aria-label": t("settings.open"),
17168
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Settings, { size: 16 })
17169
- }
17170
- ) }) }),
17171
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
17172
- ] }),
17173
- history?.enabled !== false && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17174
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17175
- /* @__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)(
17176
- "button",
17177
- {
17178
- type: "button",
17179
- onClick: handleNewThread,
17180
- disabled: missingConfig || isHistoryLoading,
17181
- className: cn(
17182
- "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17183
- "text-muted-foreground hover:text-foreground hover:bg-muted",
17184
- "transition-colors duration-150",
17185
- "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
17186
- ),
17187
- "aria-label": t("history.newThread"),
17188
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { size: 16 })
17189
- }
17190
- ) }) }),
17191
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
17205
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
17206
+ ] })
17192
17207
  ] }),
17193
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17194
- HistorySidebar,
17195
- {
17196
- threads,
17197
- currentThreadId: stream.threadId ?? void 0,
17198
- onNewThread: handleNewThread,
17199
- onSelectThread: handleSelectThread,
17200
- onDeleteThread: handleDeleteThread,
17201
- showDelete: history?.showDelete !== false,
17202
- disabled: missingConfig || isThreadsLoading || isHistoryLoading
17203
- }
17204
- )
17205
- ] })
17206
- ] })
17207
- ] }),
17208
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex-1 p-4", children: [
17209
- 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 }),
17210
- 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 }),
17211
- 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 }),
17212
- 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") }),
17213
- messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17214
- StartScreen,
17215
- {
17216
- startScreen,
17217
- onPromptClick: handlePromptClick,
17218
- onPromptEdit: handlePromptEdit,
17219
- promptSendDisabled: isSubmissionBlocked,
17220
- promptEditDisabled: isPromptEditDisabled
17221
- }
17222
- ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "space-y-4", children: [
17223
- canLoadMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 py-1", children: [
17224
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" }),
17225
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17226
- Button,
17208
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1", children: [
17209
+ canMinimizeToPet && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17210
+ /* @__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)(
17211
+ "button",
17212
+ {
17213
+ type: "button",
17214
+ onClick: handleMinimizeToPet,
17215
+ className: cn(
17216
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17217
+ "text-muted-foreground hover:text-foreground hover:bg-muted",
17218
+ "transition-colors duration-150"
17219
+ ),
17220
+ "aria-label": t("chat.minimizeToPet"),
17221
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Minus, { size: 16 })
17222
+ }
17223
+ ) }) }),
17224
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
17225
+ ] }),
17226
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17227
+ /* @__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)(
17228
+ "button",
17229
+ {
17230
+ type: "button",
17231
+ onClick: () => setPetSettingsOpen(true),
17232
+ className: cn(
17233
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17234
+ "text-muted-foreground hover:text-foreground hover:bg-muted",
17235
+ "transition-colors duration-150"
17236
+ ),
17237
+ "aria-label": t("settings.open"),
17238
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Settings, { size: 16 })
17239
+ }
17240
+ ) }) }),
17241
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
17242
+ ] }),
17243
+ history?.enabled !== false && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17244
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17245
+ /* @__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)(
17246
+ "button",
17247
+ {
17248
+ type: "button",
17249
+ onClick: handleNewThread,
17250
+ disabled: missingConfig || isHistoryLoading,
17251
+ className: cn(
17252
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
17253
+ "text-muted-foreground hover:text-foreground hover:bg-muted",
17254
+ "transition-colors duration-150",
17255
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
17256
+ ),
17257
+ "aria-label": t("history.newThread"),
17258
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { size: 16 })
17259
+ }
17260
+ ) }) }),
17261
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
17262
+ ] }),
17263
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17264
+ HistorySidebar,
17265
+ {
17266
+ threads,
17267
+ currentThreadId: stream.threadId ?? void 0,
17268
+ onNewThread: handleNewThread,
17269
+ onSelectThread: handleSelectThread,
17270
+ onDeleteThread: handleDeleteThread,
17271
+ showDelete: history?.showDelete !== false,
17272
+ disabled: missingConfig || isThreadsLoading || isHistoryLoading
17273
+ }
17274
+ )
17275
+ ] })
17276
+ ] })
17277
+ ]
17278
+ }
17279
+ ),
17280
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17281
+ "div",
17282
+ {
17283
+ "data-slot": "chatkit-chat-content",
17284
+ className: "mx-auto w-full flex-1 p-4",
17285
+ style: chatColumnStyle,
17286
+ children: [
17287
+ 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 }),
17288
+ 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 }),
17289
+ 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 }),
17290
+ 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") }),
17291
+ messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17292
+ StartScreen,
17227
17293
  {
17228
- type: "button",
17229
- variant: "ghost",
17230
- size: "sm",
17231
- onClick: handleLoadMoreMessages,
17232
- disabled: isLoadingMoreMessages,
17233
- className: "h-7 px-2 text-xs font-medium text-muted-foreground hover:text-foreground",
17234
- children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
17294
+ startScreen,
17295
+ onPromptClick: handlePromptClick,
17296
+ onPromptEdit: handlePromptEdit,
17297
+ promptSendDisabled: isSubmissionBlocked,
17298
+ promptEditDisabled: isPromptEditDisabled
17235
17299
  }
17236
- ),
17237
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" })
17238
- ] }),
17239
- messages.map((message, index) => {
17240
- const messageType = String(message.type);
17241
- const isAssistantMessage = messageType === "assistant" || messageType === "ai";
17242
- const isStreamingMessage = stream.isLoading && index === messages.length - 1;
17243
- const streamingStatus = isAssistantMessage ? getAssistantStreamingStatus(
17244
- {
17245
- ...message,
17246
- lastStreamOutputAt: lastStreamOutputAtRef.current
17247
- },
17248
- isStreamingMessage,
17249
- { now: streamingNow }
17250
- ) : null;
17251
- if (isAssistantMessage && !hasRenderableAssistantMessage(message) && !streamingStatus) {
17252
- return null;
17253
- }
17254
- const messageContent = typeof message.content === "string" ? message.content : Array.isArray(message.content) ? message.content.map((part) => formatMessageContent(part)).join("") : formatMessageContent(message.content);
17255
- const hasPlainRenderableContent = messageContent.trim().length > 0;
17256
- const humanMessage = message;
17257
- const humanReferences = humanMessage.references ?? [];
17258
- const humanAttachments = [
17259
- ...humanMessage.fileAssets ?? [],
17260
- ...humanMessage.attachments ?? []
17261
- ];
17262
- const humanRuntimeCapabilityOptions = message.type === "human" ? humanMessage.runtimeCapabilityOptions ?? getSelectedRuntimeCapabilityOptions(
17263
- getRecommendedRuntimeCapabilitiesSelection(
17264
- humanMessage.runtimeCapabilities
17265
- ),
17266
- runtimeCapabilityOptions
17267
- ) : [];
17268
- const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
17269
- const canQuoteMessage = message.type === "human" || isAssistantMessage;
17270
- const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
17271
- if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
17272
- return null;
17273
- }
17274
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17275
- "div",
17276
- {
17277
- className: cn(
17278
- "group flex gap-3",
17279
- message.type === "human" ? "justify-end" : "justify-start -ml-1"
17280
- // AI messages: slightly closer to left
17300
+ ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "space-y-4", children: [
17301
+ canLoadMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 py-1", children: [
17302
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" }),
17303
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17304
+ Button,
17305
+ {
17306
+ type: "button",
17307
+ variant: "ghost",
17308
+ size: "sm",
17309
+ onClick: handleLoadMoreMessages,
17310
+ disabled: isLoadingMoreMessages,
17311
+ className: "h-7 px-2 text-xs font-medium text-muted-foreground hover:text-foreground",
17312
+ children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
17313
+ }
17281
17314
  ),
17282
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17315
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" })
17316
+ ] }),
17317
+ messages.map((message, index) => {
17318
+ const messageType = String(message.type);
17319
+ const isAssistantMessage = messageType === "assistant" || messageType === "ai";
17320
+ const isStreamingMessage = stream.isLoading && index === messages.length - 1;
17321
+ const streamingStatus = isAssistantMessage ? getAssistantStreamingStatus(
17322
+ {
17323
+ ...message,
17324
+ lastStreamOutputAt: lastStreamOutputAtRef.current
17325
+ },
17326
+ isStreamingMessage,
17327
+ { now: streamingNow }
17328
+ ) : null;
17329
+ if (isAssistantMessage && !hasRenderableAssistantMessage(message) && !streamingStatus) {
17330
+ return null;
17331
+ }
17332
+ const messageContent = typeof message.content === "string" ? message.content : Array.isArray(message.content) ? message.content.map((part) => formatMessageContent(part)).join("") : formatMessageContent(message.content);
17333
+ const hasPlainRenderableContent = messageContent.trim().length > 0;
17334
+ const humanMessage = message;
17335
+ const humanReferences = humanMessage.references ?? [];
17336
+ const humanAttachments = [
17337
+ ...humanMessage.fileAssets ?? [],
17338
+ ...humanMessage.attachments ?? []
17339
+ ];
17340
+ const humanRuntimeCapabilityOptions = message.type === "human" ? humanMessage.runtimeCapabilityOptions ?? getSelectedRuntimeCapabilityOptions(
17341
+ getRecommendedRuntimeCapabilitiesSelection(
17342
+ humanMessage.runtimeCapabilities
17343
+ ),
17344
+ runtimeCapabilityOptions
17345
+ ) : [];
17346
+ const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
17347
+ const canQuoteMessage = message.type === "human" || isAssistantMessage;
17348
+ const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
17349
+ if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
17350
+ return null;
17351
+ }
17352
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17283
17353
  "div",
17284
17354
  {
17285
17355
  className: cn(
17286
- "flex flex-col px-3 overflow-hidden",
17287
- isAssistantMessage && "min-w-0 flex-1"
17356
+ "group flex gap-3",
17357
+ message.type === "human" ? "justify-end" : "justify-start -ml-1"
17358
+ // AI messages: slightly closer to left
17288
17359
  ),
17289
- children: [
17290
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17291
- "div",
17292
- {
17293
- ...canQuoteMessage ? {
17294
- "data-quote-message-id": message.id,
17295
- "data-quote-source": quoteSource
17296
- } : {},
17297
- className: cn(
17298
- "max-w-full rounded-2xl",
17299
- 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"
17300
- // AI messages: use chat-specific foreground color
17301
- ),
17302
- children: isAssistantMessage ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17303
- AssistantMessage,
17360
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17361
+ "div",
17362
+ {
17363
+ className: cn(
17364
+ "flex flex-col px-3 overflow-hidden",
17365
+ isAssistantMessage && "min-w-0 flex-1"
17366
+ ),
17367
+ children: [
17368
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17369
+ "div",
17304
17370
  {
17305
- message: {
17306
- ...message,
17307
- type: "assistant"
17308
- },
17309
- messages: messages.slice(0, index + 1).map(
17310
- (item) => ({
17311
- ...item,
17312
- type: String(item.type) === "ai" ? "assistant" : item.type
17313
- })
17371
+ ...canQuoteMessage ? {
17372
+ "data-quote-message-id": message.id,
17373
+ "data-quote-source": quoteSource
17374
+ } : {},
17375
+ className: cn(
17376
+ "max-w-full rounded-2xl",
17377
+ 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"
17378
+ // AI messages: use chat-specific foreground color
17314
17379
  ),
17380
+ children: isAssistantMessage ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17381
+ AssistantMessage,
17382
+ {
17383
+ message: {
17384
+ ...message,
17385
+ type: "assistant"
17386
+ },
17387
+ messages: messages.slice(0, index + 1).map(
17388
+ (item) => ({
17389
+ ...item,
17390
+ type: String(item.type) === "ai" ? "assistant" : item.type
17391
+ })
17392
+ ),
17393
+ isStreaming: isStreamingMessage,
17394
+ streamingStatus,
17395
+ isThreadRunning: currentThreadIsRunning,
17396
+ organizationId: stream.organizationId,
17397
+ apiUrl: stream.apiUrl
17398
+ }
17399
+ ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17400
+ 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)(
17401
+ "span",
17402
+ {
17403
+ 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",
17404
+ children: [
17405
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17406
+ RuntimeCapabilityIcon,
17407
+ {
17408
+ option,
17409
+ variant: "chip"
17410
+ }
17411
+ ),
17412
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[9rem] truncate", children: option.label })
17413
+ ]
17414
+ },
17415
+ `${option.type}:${option.id}`
17416
+ )) }),
17417
+ 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)(
17418
+ ReferenceChip,
17419
+ {
17420
+ reference,
17421
+ variant: "message"
17422
+ },
17423
+ getReferenceKey(reference)
17424
+ )) }),
17425
+ 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)(
17426
+ "div",
17427
+ {
17428
+ className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
17429
+ children: [
17430
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.FileText, { size: 12 }),
17431
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
17432
+ ]
17433
+ },
17434
+ fileIndex
17435
+ )) }),
17436
+ Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17437
+ "p",
17438
+ {
17439
+ className: "wrap-break-word text-sm leading-relaxed",
17440
+ children: formatMessageContent(part)
17441
+ },
17442
+ `${part.type}-${partIndex}`
17443
+ )) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
17444
+ ] })
17445
+ }
17446
+ ),
17447
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17448
+ MessageActions,
17449
+ {
17450
+ content: messageContent,
17451
+ isAssistant: isAssistantMessage,
17315
17452
  isStreaming: isStreamingMessage,
17316
- streamingStatus,
17317
- isThreadRunning: currentThreadIsRunning,
17318
- organizationId: stream.organizationId,
17319
- apiUrl: stream.apiUrl
17453
+ onRetry: isAssistantMessage && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
17320
17454
  }
17321
- ) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
17322
- 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)(
17323
- "span",
17324
- {
17325
- 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",
17326
- children: [
17327
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17328
- RuntimeCapabilityIcon,
17329
- {
17330
- option,
17331
- variant: "chip"
17332
- }
17333
- ),
17334
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[9rem] truncate", children: option.label })
17335
- ]
17336
- },
17337
- `${option.type}:${option.id}`
17338
- )) }),
17339
- 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)(
17340
- ReferenceChip,
17341
- {
17342
- reference,
17343
- variant: "message"
17344
- },
17345
- getReferenceKey(reference)
17346
- )) }),
17347
- 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)(
17348
- "div",
17349
- {
17350
- className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
17351
- children: [
17352
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.FileText, { size: 12 }),
17353
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
17354
- ]
17355
- },
17356
- fileIndex
17357
- )) }),
17358
- Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17359
- "p",
17360
- {
17361
- className: "wrap-break-word text-sm leading-relaxed",
17362
- children: formatMessageContent(part)
17363
- },
17364
- `${part.type}-${partIndex}`
17365
- )) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
17366
- ] })
17367
- }
17368
- ),
17369
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17370
- MessageActions,
17371
- {
17372
- content: messageContent,
17373
- isAssistant: isAssistantMessage,
17374
- isStreaming: isStreamingMessage,
17375
- onRetry: isAssistantMessage && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
17376
- }
17377
- )
17378
- ]
17455
+ )
17456
+ ]
17457
+ }
17458
+ )
17459
+ },
17460
+ message.id ?? `${message.type}-${index}`
17461
+ );
17462
+ }),
17463
+ showLoadingDots && (() => {
17464
+ const lastMessage = messages[messages.length - 1];
17465
+ const lastMessageType = lastMessage ? String(lastMessage.type) : "";
17466
+ const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
17467
+ const lastAssistantStatus = isLastMessageFromAI ? getAssistantStreamingStatus(
17468
+ {
17469
+ ...lastMessage,
17470
+ lastStreamOutputAt: lastStreamOutputAtRef.current
17471
+ },
17472
+ stream.isLoading,
17473
+ { now: streamingNow }
17474
+ ) : null;
17475
+ if (lastAssistantStatus) return null;
17476
+ const fallbackStreamingStatus = getAssistantStreamingStatus(
17477
+ {
17478
+ status: void 0,
17479
+ reasoning: void 0,
17480
+ lastStreamOutputAt: lastStreamOutputAtRef.current
17481
+ },
17482
+ stream.isLoading,
17483
+ { now: streamingNow }
17484
+ );
17485
+ 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)(
17486
+ AssistantStreamingIndicator,
17487
+ {
17488
+ status: fallbackStreamingStatus ?? "loading"
17379
17489
  }
17380
- )
17381
- },
17382
- message.id ?? `${message.type}-${index}`
17383
- );
17384
- }),
17385
- showLoadingDots && (() => {
17386
- const lastMessage = messages[messages.length - 1];
17387
- const lastMessageType = lastMessage ? String(lastMessage.type) : "";
17388
- const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
17389
- const lastAssistantStatus = isLastMessageFromAI ? getAssistantStreamingStatus(
17390
- {
17391
- ...lastMessage,
17392
- lastStreamOutputAt: lastStreamOutputAtRef.current
17393
- },
17394
- stream.isLoading,
17395
- { now: streamingNow }
17396
- ) : null;
17397
- if (lastAssistantStatus) return null;
17398
- const fallbackStreamingStatus = getAssistantStreamingStatus(
17399
- {
17400
- status: void 0,
17401
- reasoning: void 0,
17402
- lastStreamOutputAt: lastStreamOutputAtRef.current
17403
- },
17404
- stream.isLoading,
17405
- { now: streamingNow }
17406
- );
17407
- 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)(
17408
- AssistantStreamingIndicator,
17409
- {
17410
- status: fallbackStreamingStatus ?? "loading"
17411
- }
17412
- ) }) });
17413
- })()
17414
- ] })
17415
- ] }),
17490
+ ) }) });
17491
+ })()
17492
+ ] })
17493
+ ]
17494
+ }
17495
+ ),
17416
17496
  !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)(
17417
17497
  Button,
17418
17498
  {
@@ -17457,386 +17537,394 @@ function Chat({
17457
17537
  )
17458
17538
  }
17459
17539
  ),
17460
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "p-2 sticky bottom-0 z-10 bg-background", children: [
17461
- 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 }),
17462
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17463
- ChatAttachments,
17464
- {
17465
- ref: attachmentsRef,
17466
- accept: acceptMimes,
17467
- maxCount: composer?.attachments?.maxCount ?? 10,
17468
- maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
17469
- retryUploadLabel: t("chat.retryUpload"),
17470
- uploadFile: uploadContextFile,
17471
- deleteFile: deleteContextFile,
17472
- getFileStatus: getContextFileStatus,
17473
- onStateChange: setAttachmentState
17474
- }
17475
- ),
17476
- 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)(
17477
- ReferenceChip,
17478
- {
17479
- reference,
17480
- variant: "composer",
17481
- onRemove: () => setReferences(
17482
- (previous) => previous.filter(
17483
- (item) => getReferenceKey(item) !== getReferenceKey(reference)
17484
- )
17485
- ),
17486
- removeLabel: t("composer.removeReference")
17487
- },
17488
- getReferenceKey(reference)
17489
- )) }),
17490
- detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
17491
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
17492
- detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17493
- "span",
17494
- {
17495
- 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",
17496
- children: [
17497
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RuntimeCapabilityIcon, { option, variant: "chip" }),
17498
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-40 truncate", children: option.label }),
17499
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17500
- "button",
17501
- {
17502
- type: "button",
17503
- onClick: () => removeRunRuntimeCapability(option),
17504
- className: "rounded-full p-0.5 hover:bg-primary/15",
17505
- title: t("composer.capabilities.removeRunCapability"),
17506
- "aria-label": t("composer.capabilities.removeRunCapability"),
17507
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 11 })
17508
- }
17509
- )
17510
- ]
17511
- },
17512
- `${option.type}:${option.id}`
17513
- ))
17514
- ] }),
17515
- showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17516
- "div",
17517
- {
17518
- className: cn(
17519
- "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",
17520
- isGoalObjectiveExpanded ? "items-start" : "items-center"
17540
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17541
+ "div",
17542
+ {
17543
+ "data-slot": "chatkit-chat-composer",
17544
+ className: "mx-auto w-full p-2 sticky bottom-0 z-10 bg-background",
17545
+ style: chatColumnStyle,
17546
+ children: [
17547
+ 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 }),
17548
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17549
+ ChatAttachments,
17550
+ {
17551
+ ref: attachmentsRef,
17552
+ accept: acceptMimes,
17553
+ maxCount: composer?.attachments?.maxCount ?? 10,
17554
+ maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
17555
+ retryUploadLabel: t("chat.retryUpload"),
17556
+ uploadFile: uploadContextFile,
17557
+ deleteFile: deleteContextFile,
17558
+ getFileStatus: getContextFileStatus,
17559
+ onStateChange: setAttachmentState
17560
+ }
17521
17561
  ),
17522
- children: [
17523
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17524
- import_lucide_react29.Target,
17525
- {
17526
- className: cn(
17527
- "size-4 shrink-0 text-muted-foreground",
17528
- isGoalObjectiveExpanded && "mt-1"
17562
+ 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)(
17563
+ ReferenceChip,
17564
+ {
17565
+ reference,
17566
+ variant: "composer",
17567
+ onRemove: () => setReferences(
17568
+ (previous) => previous.filter(
17569
+ (item) => getReferenceKey(item) !== getReferenceKey(reference)
17529
17570
  )
17530
- }
17531
- ),
17532
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "min-w-0 flex-1", children: [
17533
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
17534
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
17535
- 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}`) }),
17536
- isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
17537
- ] }),
17538
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17539
- "div",
17540
- {
17541
- className: cn(
17542
- "mt-0.5 text-muted-foreground",
17543
- threadGoal?.objective && !goalError && isGoalObjectiveExpanded ? "whitespace-pre-wrap break-words" : "truncate"
17544
- ),
17545
- children: goalError || threadGoal?.objective
17546
- }
17547
17571
  ),
17548
- 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", {
17549
- elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
17550
- }) }) })
17551
- ] }),
17552
- threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
17553
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17554
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17555
- Button,
17572
+ removeLabel: t("composer.removeReference")
17573
+ },
17574
+ getReferenceKey(reference)
17575
+ )) }),
17576
+ detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
17577
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
17578
+ detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17579
+ "span",
17580
+ {
17581
+ 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",
17582
+ children: [
17583
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RuntimeCapabilityIcon, { option, variant: "chip" }),
17584
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-40 truncate", children: option.label }),
17585
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17586
+ "button",
17587
+ {
17588
+ type: "button",
17589
+ onClick: () => removeRunRuntimeCapability(option),
17590
+ className: "rounded-full p-0.5 hover:bg-primary/15",
17591
+ title: t("composer.capabilities.removeRunCapability"),
17592
+ "aria-label": t("composer.capabilities.removeRunCapability"),
17593
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 11 })
17594
+ }
17595
+ )
17596
+ ]
17597
+ },
17598
+ `${option.type}:${option.id}`
17599
+ ))
17600
+ ] }),
17601
+ showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17602
+ "div",
17603
+ {
17604
+ className: cn(
17605
+ "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",
17606
+ isGoalObjectiveExpanded ? "items-start" : "items-center"
17607
+ ),
17608
+ children: [
17609
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17610
+ import_lucide_react29.Target,
17556
17611
  {
17557
- type: "button",
17558
- variant: "ghost",
17559
- size: "icon-xs",
17560
- disabled: isGoalLoading,
17561
- onClick: () => {
17562
- const prefix = "/goal edit ";
17563
- setComposerText(`${prefix}${threadGoal.objective}`);
17564
- },
17565
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { className: "size-3" })
17612
+ className: cn(
17613
+ "size-4 shrink-0 text-muted-foreground",
17614
+ isGoalObjectiveExpanded && "mt-1"
17615
+ )
17566
17616
  }
17567
- ) }),
17568
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.edit") })
17569
- ] }),
17570
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17571
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17572
- Button,
17573
- {
17574
- type: "button",
17575
- variant: "ghost",
17576
- size: "icon-xs",
17577
- disabled: isGoalLoading,
17578
- onClick: () => void handleGoalCommand({
17579
- args: threadGoal.status === "paused" ? "resume" : "pause",
17580
- commandSource: {
17581
- type: "slash_command",
17582
- name: "goal",
17583
- source: "runtime",
17584
- executionType: "insert_invocation"
17617
+ ),
17618
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "min-w-0 flex-1", children: [
17619
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
17620
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
17621
+ 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}`) }),
17622
+ isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
17623
+ ] }),
17624
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17625
+ "div",
17626
+ {
17627
+ className: cn(
17628
+ "mt-0.5 text-muted-foreground",
17629
+ threadGoal?.objective && !goalError && isGoalObjectiveExpanded ? "whitespace-pre-wrap break-words" : "truncate"
17630
+ ),
17631
+ children: goalError || threadGoal?.objective
17632
+ }
17633
+ ),
17634
+ 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", {
17635
+ elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
17636
+ }) }) })
17637
+ ] }),
17638
+ threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
17639
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17640
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17641
+ Button,
17642
+ {
17643
+ type: "button",
17644
+ variant: "ghost",
17645
+ size: "icon-xs",
17646
+ disabled: isGoalLoading,
17647
+ onClick: () => {
17648
+ const prefix = "/goal edit ";
17649
+ setComposerText(`${prefix}${threadGoal.objective}`);
17650
+ },
17651
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { className: "size-3" })
17585
17652
  }
17586
- }),
17587
- 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" })
17588
- }
17589
- ) }),
17590
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
17591
- ] }),
17592
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17593
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17594
- Button,
17595
- {
17596
- type: "button",
17597
- variant: "ghost",
17598
- size: "icon-xs",
17599
- disabled: isGoalLoading,
17600
- onClick: () => void handleGoalCommand({
17601
- args: "clear",
17602
- commandSource: {
17603
- type: "slash_command",
17604
- name: "goal",
17605
- source: "runtime",
17606
- executionType: "insert_invocation"
17653
+ ) }),
17654
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.edit") })
17655
+ ] }),
17656
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17657
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17658
+ Button,
17659
+ {
17660
+ type: "button",
17661
+ variant: "ghost",
17662
+ size: "icon-xs",
17663
+ disabled: isGoalLoading,
17664
+ onClick: () => void handleGoalCommand({
17665
+ args: threadGoal.status === "paused" ? "resume" : "pause",
17666
+ commandSource: {
17667
+ type: "slash_command",
17668
+ name: "goal",
17669
+ source: "runtime",
17670
+ executionType: "insert_invocation"
17671
+ }
17672
+ }),
17673
+ 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" })
17607
17674
  }
17608
- }),
17609
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Trash2, { className: "size-3" })
17610
- }
17611
- ) }),
17612
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.clear") })
17613
- ] }),
17614
- threadGoal.objective && !goalError && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17615
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17616
- Button,
17617
- {
17618
- type: "button",
17619
- variant: "ghost",
17620
- size: "icon-xs",
17621
- "aria-expanded": isGoalObjectiveExpanded,
17622
- "aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
17623
- onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
17624
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17625
- import_lucide_react29.ChevronDown,
17675
+ ) }),
17676
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
17677
+ ] }),
17678
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17679
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17680
+ Button,
17626
17681
  {
17627
- className: cn(
17628
- "size-3 transition-transform",
17629
- isGoalObjectiveExpanded && "rotate-180"
17630
- )
17682
+ type: "button",
17683
+ variant: "ghost",
17684
+ size: "icon-xs",
17685
+ disabled: isGoalLoading,
17686
+ onClick: () => void handleGoalCommand({
17687
+ args: "clear",
17688
+ commandSource: {
17689
+ type: "slash_command",
17690
+ name: "goal",
17691
+ source: "runtime",
17692
+ executionType: "insert_invocation"
17693
+ }
17694
+ }),
17695
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Trash2, { className: "size-3" })
17631
17696
  }
17632
- )
17633
- }
17634
- ) }),
17635
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
17636
- ] })
17637
- ] })
17638
- ]
17639
- }
17640
- ),
17641
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17642
- PendingRuntimeServices,
17643
- {
17644
- state: stream.runtimeActivities.sandboxServices,
17645
- onStopService: (serviceId) => stream.stopRuntimeActivityItem("sandbox-services", serviceId),
17646
- attachToComposer: !hasPendingTodos && !hasPendingFollowUps,
17647
- className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
17648
- }
17649
- ),
17650
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17651
- PendingTodos,
17652
- {
17653
- snapshot: stream.todos,
17654
- attachToComposer: !hasPendingFollowUps,
17655
- className: hasPendingFollowUps ? "mb-2" : void 0
17656
- }
17657
- ),
17658
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17659
- PendingFollowUps,
17660
- {
17661
- items: pendingFollowUps,
17662
- isLoading: stream.isLoading,
17663
- onPromoteToSteer: (id) => stream.promotePendingFollowUpToSteer(id),
17664
- canSendNow: stream.canSendPendingFollowUpNow,
17665
- onSendNow: (id) => stream.sendPendingFollowUpNow(id),
17666
- onEdit: handleEditPendingFollowUp,
17667
- onRemove: stream.removePendingFollowUp,
17668
- attachToComposer: true
17669
- }
17670
- ),
17671
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17672
- RequestUserInputPanel,
17673
- {
17674
- request: stream.pendingRequestUserInput,
17675
- onSubmit: stream.submitRequestUserInput,
17676
- onDismiss: stream.stop,
17677
- attachToComposer: true
17678
- }
17679
- ),
17680
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17681
- HITLApprovalPanel,
17682
- {
17683
- request: stream.pendingHITLRequest,
17684
- onSubmit: stream.submitHITLDecision,
17685
- onDismiss: stream.stop,
17686
- attachToComposer: true
17687
- }
17688
- ),
17689
- runtimeCapabilityPalette && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17690
- SlashPalette,
17691
- {
17692
- palette: runtimeCapabilityPalette,
17693
- options: slashPaletteOptions,
17694
- paletteRef: slashPaletteRef,
17695
- optionRefs: slashPaletteOptionRefs,
17696
- panelRoundedClass: getPanelRoundedClass(theme.radius),
17697
- itemRoundedClass: getMenuItemRoundedClass(theme.radius),
17698
- emptyLabel: slashPaletteEmptyLabel,
17699
- capabilityEmptyLabels: slashPaletteCapabilityEmptyLabels,
17700
- onSelect: selectSlashPaletteOption
17701
- }
17702
- ),
17703
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17704
- "div",
17705
- {
17706
- "data-slot": "composer-input-shell",
17707
- "data-layout": isComposerStacked ? "stacked" : "inline",
17708
- className: cn(
17709
- "relative flex flex-1 overflow-hidden",
17710
- "bg-background border border-border shadow-sm",
17711
- isComposerStacked ? "min-h-[5.5rem] px-1.5 pt-1.5 pb-12" : "min-h-12 px-1.5 py-1",
17712
- "focus-within:border-muted-foreground/30 focus-within:shadow-md",
17713
- "transition-[min-height,padding,border-radius,box-shadow,border-color] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
17714
- composerInputRoundedClass
17715
- ),
17716
- children: [
17717
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17718
- "div",
17719
- {
17720
- ref: composerInputRef,
17721
- role: "textbox",
17722
- "aria-multiline": "true",
17723
- "aria-disabled": missingConfig || isHistoryLoading || hasPendingInteractiveRequest,
17724
- contentEditable: !(missingConfig || isHistoryLoading || hasPendingInteractiveRequest),
17725
- suppressContentEditableWarning: true,
17726
- onInput: handleComposerInput,
17727
- onCompositionEnd: handleComposerCompositionEnd,
17728
- onSelect: handleComposerSelect,
17729
- onPaste: handleComposerPaste,
17730
- onKeyDown: handleComposerKeyDown,
17731
- "data-placeholder": inputPlaceholder,
17732
- className: cn(
17733
- "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)]",
17734
- isComposerStacked ? "px-2 py-1.5" : "py-1 pr-11 pl-11 mt-1",
17735
- "empty:before:pointer-events-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
17736
- (missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
17737
- ),
17738
- children: renderedComposerParts.map(
17739
- (part, index) => part.type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React49.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17740
- "span",
17741
- {
17742
- "data-composer-capability-key": part.key,
17743
- "data-capability-type": part.capability.type,
17744
- "data-capability-id": part.capability.id,
17745
- contentEditable: false,
17746
- className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
17747
- children: [
17748
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17749
- RuntimeCapabilityIcon,
17697
+ ) }),
17698
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.clear") })
17699
+ ] }),
17700
+ threadGoal.objective && !goalError && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
17701
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17702
+ Button,
17703
+ {
17704
+ type: "button",
17705
+ variant: "ghost",
17706
+ size: "icon-xs",
17707
+ "aria-expanded": isGoalObjectiveExpanded,
17708
+ "aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
17709
+ onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
17710
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17711
+ import_lucide_react29.ChevronDown,
17750
17712
  {
17751
- option: part.capability,
17752
- variant: "chip"
17713
+ className: cn(
17714
+ "size-3 transition-transform",
17715
+ isGoalObjectiveExpanded && "rotate-180"
17716
+ )
17753
17717
  }
17754
- ),
17755
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: part.capability.label })
17756
- ]
17757
- },
17758
- part.key
17759
- )
17760
- )
17761
- },
17762
- composerDomVersion
17763
- ),
17764
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17765
- "div",
17766
- {
17767
- "data-slot": "composer-action-bar",
17768
- className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
17769
- children: [
17770
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
17771
- /* @__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)(
17772
- ComposerMenu,
17773
- {
17774
- composer,
17775
- onAttachmentClick: handleAttachmentClick,
17776
- onToolSelect: handleToolSelect,
17777
- selectedTool,
17778
- planModeEnabled,
17779
- onPlanModeChange: setPlanModeEnabled,
17780
- goalCommandAvailable,
17781
- goalPanelOpen: isGoalModeOpen,
17782
- onGoalPanelOpenChange: handleGoalPanelOpenChange,
17783
- runtimeCapabilities: runtimeCapabilitiesReady ? runtimeCapabilities : null,
17784
- selectedRuntimeCapabilities: effectiveSessionRuntimeCapabilities,
17785
- onRuntimeCapabilityToggle: handleSessionRuntimeCapabilityToggle,
17786
- disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
17718
+ )
17787
17719
  }
17788
17720
  ) }),
17789
- 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: [
17790
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
17791
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17792
- "button",
17721
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
17722
+ ] })
17723
+ ] })
17724
+ ]
17725
+ }
17726
+ ),
17727
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17728
+ PendingRuntimeServices,
17729
+ {
17730
+ state: stream.runtimeActivities.sandboxServices,
17731
+ onStopService: (serviceId) => stream.stopRuntimeActivityItem("sandbox-services", serviceId),
17732
+ attachToComposer: !hasPendingTodos && !hasPendingFollowUps,
17733
+ className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
17734
+ }
17735
+ ),
17736
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17737
+ PendingTodos,
17738
+ {
17739
+ snapshot: stream.todos,
17740
+ attachToComposer: !hasPendingFollowUps,
17741
+ className: hasPendingFollowUps ? "mb-2" : void 0
17742
+ }
17743
+ ),
17744
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17745
+ PendingFollowUps,
17746
+ {
17747
+ items: pendingFollowUps,
17748
+ isLoading: stream.isLoading,
17749
+ onPromoteToSteer: (id) => stream.promotePendingFollowUpToSteer(id),
17750
+ canSendNow: stream.canSendPendingFollowUpNow,
17751
+ onSendNow: (id) => stream.sendPendingFollowUpNow(id),
17752
+ onEdit: handleEditPendingFollowUp,
17753
+ onRemove: stream.removePendingFollowUp,
17754
+ attachToComposer: true
17755
+ }
17756
+ ),
17757
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17758
+ RequestUserInputPanel,
17759
+ {
17760
+ request: stream.pendingRequestUserInput,
17761
+ onSubmit: stream.submitRequestUserInput,
17762
+ onDismiss: stream.stop,
17763
+ attachToComposer: true
17764
+ }
17765
+ ),
17766
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17767
+ HITLApprovalPanel,
17768
+ {
17769
+ request: stream.pendingHITLRequest,
17770
+ onSubmit: stream.submitHITLDecision,
17771
+ onDismiss: stream.stop,
17772
+ attachToComposer: true
17773
+ }
17774
+ ),
17775
+ runtimeCapabilityPalette && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17776
+ SlashPalette,
17777
+ {
17778
+ palette: runtimeCapabilityPalette,
17779
+ options: slashPaletteOptions,
17780
+ paletteRef: slashPaletteRef,
17781
+ optionRefs: slashPaletteOptionRefs,
17782
+ panelRoundedClass: getPanelRoundedClass(theme.radius),
17783
+ itemRoundedClass: getMenuItemRoundedClass(theme.radius),
17784
+ emptyLabel: slashPaletteEmptyLabel,
17785
+ capabilityEmptyLabels: slashPaletteCapabilityEmptyLabels,
17786
+ onSelect: selectSlashPaletteOption
17787
+ }
17788
+ ),
17789
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17790
+ "div",
17791
+ {
17792
+ "data-slot": "composer-input-shell",
17793
+ "data-layout": isComposerStacked ? "stacked" : "inline",
17794
+ className: cn(
17795
+ "relative flex flex-1 overflow-hidden",
17796
+ "bg-background border border-border shadow-sm",
17797
+ isComposerStacked ? "min-h-[5.5rem] px-1.5 pt-1.5 pb-12" : "min-h-12 px-1.5 py-1",
17798
+ "focus-within:border-muted-foreground/30 focus-within:shadow-md",
17799
+ "transition-[min-height,padding,border-radius,box-shadow,border-color] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
17800
+ composerInputRoundedClass
17801
+ ),
17802
+ children: [
17803
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17804
+ "div",
17805
+ {
17806
+ ref: composerInputRef,
17807
+ role: "textbox",
17808
+ "aria-multiline": "true",
17809
+ "aria-disabled": missingConfig || isHistoryLoading || hasPendingInteractiveRequest,
17810
+ contentEditable: !(missingConfig || isHistoryLoading || hasPendingInteractiveRequest),
17811
+ suppressContentEditableWarning: true,
17812
+ onInput: handleComposerInput,
17813
+ onCompositionEnd: handleComposerCompositionEnd,
17814
+ onSelect: handleComposerSelect,
17815
+ onPaste: handleComposerPaste,
17816
+ onKeyDown: handleComposerKeyDown,
17817
+ "data-placeholder": inputPlaceholder,
17818
+ className: cn(
17819
+ "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)]",
17820
+ isComposerStacked ? "px-2 py-1.5" : "py-1 pr-11 pl-11 mt-1",
17821
+ "empty:before:pointer-events-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
17822
+ (missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
17823
+ ),
17824
+ children: renderedComposerParts.map(
17825
+ (part, index) => part.type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React49.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17826
+ "span",
17793
17827
  {
17794
- type: "button",
17795
- onClick: () => setSelectedTool(null),
17796
- className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
17797
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 12 })
17798
- }
17828
+ "data-composer-capability-key": part.key,
17829
+ "data-capability-type": part.capability.type,
17830
+ "data-capability-id": part.capability.id,
17831
+ contentEditable: false,
17832
+ className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
17833
+ children: [
17834
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17835
+ RuntimeCapabilityIcon,
17836
+ {
17837
+ option: part.capability,
17838
+ variant: "chip"
17839
+ }
17840
+ ),
17841
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: part.capability.label })
17842
+ ]
17843
+ },
17844
+ part.key
17799
17845
  )
17800
- ] })
17801
- ] }),
17802
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17803
- SendButton,
17804
- {
17805
- disabled: isSendDisabled,
17806
- isLoading: stream.isLoading,
17807
- showStop: stream.isLoading && (!trimmedDraft || hasPendingInteractiveRequest),
17808
- onStop: () => stream.stop(),
17809
- stopLabel: t("chat.stop"),
17810
- sendLabel: t("chat.send"),
17811
- shortcuts: stream.isLoading && trimmedDraft ? [
17846
+ )
17847
+ },
17848
+ composerDomVersion
17849
+ ),
17850
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
17851
+ "div",
17852
+ {
17853
+ "data-slot": "composer-action-bar",
17854
+ className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
17855
+ children: [
17856
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
17857
+ /* @__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)(
17858
+ ComposerMenu,
17859
+ {
17860
+ composer,
17861
+ onAttachmentClick: handleAttachmentClick,
17862
+ onToolSelect: handleToolSelect,
17863
+ selectedTool,
17864
+ planModeEnabled,
17865
+ onPlanModeChange: setPlanModeEnabled,
17866
+ goalCommandAvailable,
17867
+ goalPanelOpen: isGoalModeOpen,
17868
+ onGoalPanelOpenChange: handleGoalPanelOpenChange,
17869
+ runtimeCapabilities: runtimeCapabilitiesReady ? runtimeCapabilities : null,
17870
+ selectedRuntimeCapabilities: effectiveSessionRuntimeCapabilities,
17871
+ onRuntimeCapabilityToggle: handleSessionRuntimeCapabilityToggle,
17872
+ disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
17873
+ }
17874
+ ) }),
17875
+ 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: [
17876
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
17877
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17878
+ "button",
17879
+ {
17880
+ type: "button",
17881
+ onClick: () => setSelectedTool(null),
17882
+ className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
17883
+ children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 12 })
17884
+ }
17885
+ )
17886
+ ] })
17887
+ ] }),
17888
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17889
+ SendButton,
17812
17890
  {
17813
- label: t("chat.followUps.queue"),
17814
- keys: "Enter"
17891
+ disabled: isSendDisabled,
17892
+ isLoading: stream.isLoading,
17893
+ showStop: stream.isLoading && (!trimmedDraft || hasPendingInteractiveRequest),
17894
+ onStop: () => stream.stop(),
17895
+ stopLabel: t("chat.stop"),
17896
+ sendLabel: t("chat.send"),
17897
+ shortcuts: stream.isLoading && trimmedDraft ? [
17898
+ {
17899
+ label: t("chat.followUps.queue"),
17900
+ keys: "Enter"
17901
+ }
17902
+ ] : void 0
17815
17903
  }
17816
- ] : void 0
17817
- }
17818
- ) })
17819
- ]
17820
- }
17821
- )
17822
- ]
17823
- }
17824
- ) }),
17825
- disclaimer?.text && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17826
- "p",
17827
- {
17828
- className: cn(
17829
- "mt-2 text-center text-xs",
17830
- disclaimer.highContrast ? "text-foreground" : "text-muted-foreground"
17904
+ ) })
17905
+ ]
17906
+ }
17907
+ )
17908
+ ]
17909
+ }
17910
+ ) }),
17911
+ disclaimer?.text && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17912
+ "p",
17913
+ {
17914
+ className: cn(
17915
+ "mt-2 text-center text-xs",
17916
+ disclaimer.highContrast ? "text-foreground" : "text-muted-foreground"
17917
+ ),
17918
+ children: disclaimer.text
17919
+ }
17831
17920
  ),
17832
- children: disclaimer.text
17833
- }
17834
- ),
17835
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
17836
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.poweredBy") }),
17837
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ContextUsageIndicator, { className: "absolute right-4" })
17838
- ] })
17839
- ] }),
17921
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
17922
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.poweredBy") }),
17923
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ContextUsageIndicator, { className: "absolute right-4" })
17924
+ ] })
17925
+ ]
17926
+ }
17927
+ ),
17840
17928
  /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
17841
17929
  SettingsSheet,
17842
17930
  {