@xpert-ai/chatkit-ui 0.4.10 → 0.4.12

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 (339) hide show
  1. package/dist/app/assets/{_baseUniq-L_C0UtBf.js → _baseUniq-DDAF6NS1.js} +1 -1
  2. package/dist/app/assets/{abap-BpnyPh6e.js → abap-B5kuZMBU.js} +1 -1
  3. package/dist/app/assets/{abnf-CePQrE9v.js → abnf-vB7f2WMu.js} +1 -1
  4. package/dist/app/assets/{actionscript-CEbXXYWC.js → actionscript-DdKBH_MP.js} +1 -1
  5. package/dist/app/assets/{ada-6ojm7R_Z.js → ada-UAF-C5fV.js} +1 -1
  6. package/dist/app/assets/{agda-BJJMgT72.js → agda-Df0jhwc3.js} +1 -1
  7. package/dist/app/assets/{al-CjM03tR4.js → al-atU_jzsj.js} +1 -1
  8. package/dist/app/assets/{antlr4-CN9DxFQq.js → antlr4-DFy3C0i-.js} +1 -1
  9. package/dist/app/assets/{apacheconf-DIP0dEtR.js → apacheconf-oqf3cl-S.js} +1 -1
  10. package/dist/app/assets/{apex-Dk0IZjGB.js → apex-BH2e-BHs.js} +1 -1
  11. package/dist/app/assets/{apl-Bzb4FgpE.js → apl-DQSChDxy.js} +1 -1
  12. package/dist/app/assets/{applescript-B0UaluN5.js → applescript-DKiAqciQ.js} +1 -1
  13. package/dist/app/assets/{aql-CUf7Ed1z.js → aql-CaPJIphH.js} +1 -1
  14. package/dist/app/assets/{arc-CAj2CWKM.js → arc-CebqIIwp.js} +1 -1
  15. package/dist/app/assets/{architectureDiagram-Q4EWVU46-BOSyiusQ.js → architectureDiagram-Q4EWVU46-BGCwMfQN.js} +1 -1
  16. package/dist/app/assets/{arduino-B1HB_jXM.js → arduino-BBjE6dsG.js} +1 -1
  17. package/dist/app/assets/{arff-CPQ25yN1.js → arff-CNCoJ57r.js} +1 -1
  18. package/dist/app/assets/{asciidoc-DV5p79UO.js → asciidoc-DKCMYIb5.js} +1 -1
  19. package/dist/app/assets/{asm6502-CpY5r4lk.js → asm6502-KuppTAQi.js} +1 -1
  20. package/dist/app/assets/{asmatmel-CxbyxEbb.js → asmatmel-5HYURTVr.js} +1 -1
  21. package/dist/app/assets/{aspnet-CJaAnWH-.js → aspnet-VRY1dAhW.js} +1 -1
  22. package/dist/app/assets/{autohotkey-C582BAaU.js → autohotkey-Bgr_lUvQ.js} +1 -1
  23. package/dist/app/assets/{autoit-Ct1i1FKr.js → autoit-Dq59UEgn.js} +1 -1
  24. package/dist/app/assets/{avisynth-DtDpdH0z.js → avisynth-BlWjnAOD.js} +1 -1
  25. package/dist/app/assets/{avro-idl-B_TsIBE2.js → avro-idl-BQp8Ix-w.js} +1 -1
  26. package/dist/app/assets/{bash-DwYhdU-w.js → bash-LWvFzRGa.js} +1 -1
  27. package/dist/app/assets/{basic-C07QA6Vo.js → basic-VqcPtabW.js} +1 -1
  28. package/dist/app/assets/{batch-DjR7VTRm.js → batch-uVNhIbGZ.js} +1 -1
  29. package/dist/app/assets/{bbcode-CwHqfRZe.js → bbcode-CCcQPp5e.js} +1 -1
  30. package/dist/app/assets/{bicep-C1vVTkRE.js → bicep-Bb19eGzd.js} +1 -1
  31. package/dist/app/assets/{birb-CBTuHWN7.js → birb-4bthZwkl.js} +1 -1
  32. package/dist/app/assets/{bison-C08f83AH.js → bison-BF4Jifgg.js} +1 -1
  33. package/dist/app/assets/{blockDiagram-DXYQGD6D-BwfXbVr_.js → blockDiagram-DXYQGD6D-CgPQseHK.js} +1 -1
  34. package/dist/app/assets/{bnf-eixMjfhu.js → bnf-B1jl6Wb4.js} +1 -1
  35. package/dist/app/assets/{brainfuck-OXBW4BZH.js → brainfuck-B4A_qSfv.js} +1 -1
  36. package/dist/app/assets/{brightscript-BSDqAE-U.js → brightscript-BQKGhJ6R.js} +1 -1
  37. package/dist/app/assets/{bro-Bi8eHVX-.js → bro-B2NgcV4s.js} +1 -1
  38. package/dist/app/assets/{bsl-CEhRIRY7.js → bsl-BGr1F29Q.js} +1 -1
  39. package/dist/app/assets/{c-Czzvuksm.js → c-r9YaBxRP.js} +1 -1
  40. package/dist/app/assets/{c4Diagram-AHTNJAMY-BGp37t4h.js → c4Diagram-AHTNJAMY-Y45uJy2D.js} +1 -1
  41. package/dist/app/assets/{cfscript-BDye0SUz.js → cfscript-CQ4VHw9c.js} +1 -1
  42. package/dist/app/assets/{chaiscript-DapUhojE.js → chaiscript-DrQAGaNh.js} +1 -1
  43. package/dist/app/assets/channel-VVzQBc9p.js +1 -0
  44. package/dist/app/assets/{chunk-4BX2VUAB-xQQ1b4Co.js → chunk-4BX2VUAB-DR0YnzMw.js} +1 -1
  45. package/dist/app/assets/{chunk-4TB4RGXK-ChvEc_zS.js → chunk-4TB4RGXK-Dc4lLBE6.js} +1 -1
  46. package/dist/app/assets/{chunk-55IACEB6-CSgtZuqU.js → chunk-55IACEB6-C-TU0K9X.js} +1 -1
  47. package/dist/app/assets/{chunk-EDXVE4YY-D6bAHfe-.js → chunk-EDXVE4YY-BaOX0v_0.js} +1 -1
  48. package/dist/app/assets/{chunk-FMBD7UC4-CfqAGzwt.js → chunk-FMBD7UC4-D359WI80.js} +1 -1
  49. package/dist/app/assets/{chunk-OYMX7WX6-DppYEx9e.js → chunk-OYMX7WX6-BuRuBFpQ.js} +1 -1
  50. package/dist/app/assets/{chunk-QZHKN3VN-OcXmUBXK.js → chunk-QZHKN3VN-CyEi-ra2.js} +1 -1
  51. package/dist/app/assets/{chunk-YZCP3GAM-DEM4F_gM.js → chunk-YZCP3GAM-BEEy2K1W.js} +1 -1
  52. package/dist/app/assets/{cil-CkS5pr8z.js → cil-BuADaDKW.js} +1 -1
  53. package/dist/app/assets/classDiagram-6PBFFD2Q-e30oqMPQ.js +1 -0
  54. package/dist/app/assets/classDiagram-v2-HSJHXN6E-e30oqMPQ.js +1 -0
  55. package/dist/app/assets/{clike-BnesBfd1.js → clike-B1D1DBL3.js} +1 -1
  56. package/dist/app/assets/{clojure-CMTJuYgr.js → clojure-B3SPLK7c.js} +1 -1
  57. package/dist/app/assets/clone-qx55TFbv.js +1 -0
  58. package/dist/app/assets/{cmake-Bad4-rPE.js → cmake-COH8dih1.js} +1 -1
  59. package/dist/app/assets/{cobol-BVGOaTIA.js → cobol-C7vZDD37.js} +1 -1
  60. package/dist/app/assets/{coffeescript-BfGXelSK.js → coffeescript-B94CG8h3.js} +1 -1
  61. package/dist/app/assets/{concurnas-CIwpz7d6.js → concurnas-DhVx0CX_.js} +1 -1
  62. package/dist/app/assets/{coq-DSIeTmBw.js → coq-DYvqTP2L.js} +1 -1
  63. package/dist/app/assets/{core-aBCdKGFg.js → core-B-Vt8qye.js} +1 -1
  64. package/dist/app/assets/{cose-bilkent-S5V4N54A-BsOe3ZRA.js → cose-bilkent-S5V4N54A-cnDgdkBZ.js} +1 -1
  65. package/dist/app/assets/{cpp-6tyvrJuf.js → cpp-DepCH_qd.js} +1 -1
  66. package/dist/app/assets/{crystal-CiyZx3nA.js → crystal-D-5NBLXj.js} +1 -1
  67. package/dist/app/assets/{csharp-aV-8z_7S.js → csharp-nWa20obb.js} +1 -1
  68. package/dist/app/assets/{cshtml-DXQwMOL2.js → cshtml-7093-HJ_.js} +1 -1
  69. package/dist/app/assets/{csp-QFnPub4X.js → csp-JmmQah6c.js} +1 -1
  70. package/dist/app/assets/{css-NG8SQHFd.js → css-BuEd2fz2.js} +1 -1
  71. package/dist/app/assets/{css-extras-BYOlAC_J.js → css-extras-DiYkseu8.js} +1 -1
  72. package/dist/app/assets/{csv-CRVKaEXK.js → csv-Bbn7Sw0h.js} +1 -1
  73. package/dist/app/assets/{cypher-N4lavBWi.js → cypher-SppGYMTi.js} +1 -1
  74. package/dist/app/assets/{d-CXsOP2vo.js → d-nLANT3dy.js} +1 -1
  75. package/dist/app/assets/{dagre-KV5264BT-DeGuPXts.js → dagre-KV5264BT-B1i-BBiR.js} +1 -1
  76. package/dist/app/assets/{dart-QuR1URa-.js → dart-Dhl_qWV4.js} +1 -1
  77. package/dist/app/assets/{dataweave-DSZsHkWW.js → dataweave-DCCRWXjr.js} +1 -1
  78. package/dist/app/assets/{dax-316zZNcC.js → dax-BoA2R2N8.js} +1 -1
  79. package/dist/app/assets/{dhall-RmKM9GKI.js → dhall-DTGUaN-4.js} +1 -1
  80. package/dist/app/assets/{diagram-5BDNPKRD-rnVFbmh_.js → diagram-5BDNPKRD-Dow19hef.js} +1 -1
  81. package/dist/app/assets/{diagram-G4DWMVQ6-C_06tcEj.js → diagram-G4DWMVQ6-D0pE9nCA.js} +1 -1
  82. package/dist/app/assets/{diagram-MMDJMWI5-CU4PzLKC.js → diagram-MMDJMWI5-DbcRh2vE.js} +1 -1
  83. package/dist/app/assets/{diagram-TYMM5635-B6DWOJFf.js → diagram-TYMM5635-CXx2ZaT4.js} +1 -1
  84. package/dist/app/assets/{diff-D1VyyUNE.js → diff-2OXQn6o9.js} +1 -1
  85. package/dist/app/assets/{django-1g5s3FD9.js → django-CdPAzoCC.js} +1 -1
  86. package/dist/app/assets/{dns-zone-file-DPyAfyNh.js → dns-zone-file-BBwevRlw.js} +1 -1
  87. package/dist/app/assets/{docker-B6Ppya8s.js → docker-DjHVT1mA.js} +1 -1
  88. package/dist/app/assets/{dot-qEA9Iscp.js → dot-BSnCaGTC.js} +1 -1
  89. package/dist/app/assets/{ebnf-Dq27JvcF.js → ebnf-DdZmyGKH.js} +1 -1
  90. package/dist/app/assets/{editorconfig-DTKOOxka.js → editorconfig-CUSgZ2y_.js} +1 -1
  91. package/dist/app/assets/{eiffel-M573bWnZ.js → eiffel-DsJFaSFl.js} +1 -1
  92. package/dist/app/assets/{ejs-5_NMM1D1.js → ejs-BbBJ5QIA.js} +1 -1
  93. package/dist/app/assets/{elixir-Czvfyjv_.js → elixir-SDkPmJm7.js} +1 -1
  94. package/dist/app/assets/{elm-B8ew8DwL.js → elm-Dug0EDUq.js} +1 -1
  95. package/dist/app/assets/{erDiagram-SMLLAGMA-CLBUx2BT.js → erDiagram-SMLLAGMA-CeMLsOHD.js} +1 -1
  96. package/dist/app/assets/{erb-B6kN8bOV.js → erb-DyyrQtQr.js} +1 -1
  97. package/dist/app/assets/{erlang-DB9zwFPB.js → erlang-ChCNopdz.js} +1 -1
  98. package/dist/app/assets/{etlua-BO-uDffT.js → etlua-Dl5Qy9QZ.js} +1 -1
  99. package/dist/app/assets/{excel-formula-DggXv9UI.js → excel-formula-DwMTBw2T.js} +1 -1
  100. package/dist/app/assets/{factor-DyMYAmFt.js → factor-DauUqCmK.js} +1 -1
  101. package/dist/app/assets/{false-D6qsKvn8.js → false-BXnJ9_dh.js} +1 -1
  102. package/dist/app/assets/{firestore-security-rules-CmxC6hqr.js → firestore-security-rules-ORamZFqd.js} +1 -1
  103. package/dist/app/assets/{flow-CuYyVwSm.js → flow-21ezBa1O.js} +1 -1
  104. package/dist/app/assets/{flowDiagram-DWJPFMVM-BXqpXcQj.js → flowDiagram-DWJPFMVM-DFUCTxTh.js} +1 -1
  105. package/dist/app/assets/{fortran-B9VZ0rBH.js → fortran-Z9uQlm38.js} +1 -1
  106. package/dist/app/assets/{fsharp-GO7xyDtk.js → fsharp-DdLoygGu.js} +1 -1
  107. package/dist/app/assets/{ftl-miAH75V3.js → ftl-DqQYPDj9.js} +1 -1
  108. package/dist/app/assets/{ganttDiagram-T4ZO3ILL-Dwt1tgUY.js → ganttDiagram-T4ZO3ILL-D3MmdPUG.js} +1 -1
  109. package/dist/app/assets/{gap-CId1dUrj.js → gap-DpSNB7Jg.js} +1 -1
  110. package/dist/app/assets/{gcode-C59Bc_Q_.js → gcode-CBAQGw-1.js} +1 -1
  111. package/dist/app/assets/{gdscript-fCaxiH5y.js → gdscript-BsIrRHU-.js} +1 -1
  112. package/dist/app/assets/{gedcom-Fz0PyMGL.js → gedcom-CGU-RC0C.js} +1 -1
  113. package/dist/app/assets/{gherkin-DpCy-yO5.js → gherkin-DIE5QZSL.js} +1 -1
  114. package/dist/app/assets/{git-CDabPQd8.js → git-CkU9sVQK.js} +1 -1
  115. package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-DKdTEA1Q.js → gitGraphDiagram-UUTBAWPF-u7-eDWQK.js} +1 -1
  116. package/dist/app/assets/{glsl-CAuBdubM.js → glsl-Blh9LfIt.js} +1 -1
  117. package/dist/app/assets/{gml-B1-KFSC-.js → gml-Cc45yLFS.js} +1 -1
  118. package/dist/app/assets/{gn-z9JlBynS.js → gn-DZ0DddHN.js} +1 -1
  119. package/dist/app/assets/{go-Bh8RVnCA.js → go-mGyH9IXp.js} +1 -1
  120. package/dist/app/assets/{go-module-BxEHBAUj.js → go-module-BvUYZ0sz.js} +1 -1
  121. package/dist/app/assets/{graph-C5VCXRja.js → graph-BoY8t1-O.js} +1 -1
  122. package/dist/app/assets/{graphql-UVwaZqUP.js → graphql-u2Rgmvln.js} +1 -1
  123. package/dist/app/assets/{groovy-Bm3Dr_U_.js → groovy-zZaRUKNR.js} +1 -1
  124. package/dist/app/assets/{haml-BQkZhweN.js → haml-Su2CtJnF.js} +1 -1
  125. package/dist/app/assets/{handlebars-UliZj7od.js → handlebars-F5ADzMhi.js} +1 -1
  126. package/dist/app/assets/{haskell-EGerwJvN.js → haskell-DzWmpx32.js} +1 -1
  127. package/dist/app/assets/{haxe-f4j0SE6I.js → haxe-BGpweLG2.js} +1 -1
  128. package/dist/app/assets/{hcl-CuuY0fvP.js → hcl-BjhBcKSg.js} +1 -1
  129. package/dist/app/assets/{hlsl-C4nrcroF.js → hlsl-SjDbMdjn.js} +1 -1
  130. package/dist/app/assets/{hoon-YAf2AIOr.js → hoon-Cx3E-s_o.js} +1 -1
  131. package/dist/app/assets/{hpkp-ClJhCK_W.js → hpkp-DPoMyYoU.js} +1 -1
  132. package/dist/app/assets/{hsts-CEpwd5fr.js → hsts-lhpshNTY.js} +1 -1
  133. package/dist/app/assets/{http-BR64Nyk9.js → http-C3R3gVhT.js} +1 -1
  134. package/dist/app/assets/{ichigojam-DTWmfCcD.js → ichigojam-CwUu39sX.js} +1 -1
  135. package/dist/app/assets/{icon-D0qxhzhu.js → icon-TJHjWHXx.js} +1 -1
  136. package/dist/app/assets/{icu-message-format-Cr2MhD47.js → icu-message-format-DxKTlbxf.js} +1 -1
  137. package/dist/app/assets/{idris-D6urX37y.js → idris-DWqaccK2.js} +1 -1
  138. package/dist/app/assets/{iecst-D9PNLpyA.js → iecst-DORlcjzm.js} +1 -1
  139. package/dist/app/assets/{ignore-hxaHGT6e.js → ignore-B9gAYbh1.js} +1 -1
  140. package/dist/app/assets/index-CUC_NpQM.js +762 -0
  141. package/dist/app/assets/index-CtioO_Xd.css +1 -0
  142. package/dist/app/assets/{infoDiagram-42DDH7IO-CCZ9EqBH.js → infoDiagram-42DDH7IO-tYjxziGL.js} +1 -1
  143. package/dist/app/assets/{inform7-DGwJlX9w.js → inform7-DkK-RZMY.js} +1 -1
  144. package/dist/app/assets/{ini-HbQ_pZ9w.js → ini-0w9Xb91U.js} +1 -1
  145. package/dist/app/assets/{io-Dhyv4fqE.js → io-DvaCkiMR.js} +1 -1
  146. package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-CnOAK-IZ.js → ishikawaDiagram-UXIWVN3A-2JB0y6an.js} +1 -1
  147. package/dist/app/assets/{j-DAcUG2zB.js → j-C0RkbTNn.js} +1 -1
  148. package/dist/app/assets/{java-CdeMY3IG.js → java-D75f0yzo.js} +1 -1
  149. package/dist/app/assets/{javadoc-BeQ0Pg6D.js → javadoc-DJI4x2pb.js} +1 -1
  150. package/dist/app/assets/{javadoclike-DPYVfShk.js → javadoclike-CDXreW48.js} +1 -1
  151. package/dist/app/assets/{javascript-BGlZ4jdn.js → javascript-CYoWsxZG.js} +1 -1
  152. package/dist/app/assets/{javastacktrace-Jex9eXtr.js → javastacktrace-DxkS056-.js} +1 -1
  153. package/dist/app/assets/{jexl-BFt920Jf.js → jexl-CDS1hv_s.js} +1 -1
  154. package/dist/app/assets/{jolie-YCJV5cqd.js → jolie-EuNI73RV.js} +1 -1
  155. package/dist/app/assets/{journeyDiagram-VCZTEJTY-C5RrtwyC.js → journeyDiagram-VCZTEJTY-B1X5hCIz.js} +1 -1
  156. package/dist/app/assets/{jq-BlHh9d3G.js → jq-PhGKEDcu.js} +1 -1
  157. package/dist/app/assets/{js-extras-DqpdICye.js → js-extras-jtc33ycC.js} +1 -1
  158. package/dist/app/assets/{js-templates-CvnMgk4Z.js → js-templates-B3cXQFLp.js} +1 -1
  159. package/dist/app/assets/{jsdoc-D4a3LTWc.js → jsdoc-CqjI_w-r.js} +1 -1
  160. package/dist/app/assets/{json-Deb7FFLA.js → json-Ne2BRWg4.js} +1 -1
  161. package/dist/app/assets/{json5-BJMK5K1n.js → json5-CiKaM-_C.js} +1 -1
  162. package/dist/app/assets/{jsonp-C04DhIsm.js → jsonp-zvJEur-6.js} +1 -1
  163. package/dist/app/assets/{jsstacktrace-dnLb08RQ.js → jsstacktrace-CiHGr1oh.js} +1 -1
  164. package/dist/app/assets/{jsx-qoVtXIf0.js → jsx-Cjxo93ea.js} +1 -1
  165. package/dist/app/assets/{julia-Din5szlb.js → julia-BRHMuu5e.js} +1 -1
  166. package/dist/app/assets/{kanban-definition-6JOO6SKY-CbNOvC3e.js → kanban-definition-6JOO6SKY-DOIj_2Hw.js} +1 -1
  167. package/dist/app/assets/{keepalived-B4pmJFAA.js → keepalived-B17LIaaB.js} +1 -1
  168. package/dist/app/assets/{keyman-GZkMiOR4.js → keyman-BC0CTO_c.js} +1 -1
  169. package/dist/app/assets/{kotlin-BaVFlKSj.js → kotlin-DSDl2yr2.js} +1 -1
  170. package/dist/app/assets/{kumir-BYgnVncN.js → kumir-DH3qkefY.js} +1 -1
  171. package/dist/app/assets/{kusto-iC0N6VZB.js → kusto-CJxTK0ap.js} +1 -1
  172. package/dist/app/assets/{latex-DJsq4A7S.js → latex-BN2yX_Ed.js} +1 -1
  173. package/dist/app/assets/{latte-4-D5JQy6.js → latte-Bvavolyx.js} +1 -1
  174. package/dist/app/assets/{layout-woS_Ptld.js → layout-DGwxOXfn.js} +1 -1
  175. package/dist/app/assets/{less-BEGF0T8s.js → less-BHMIRXn5.js} +1 -1
  176. package/dist/app/assets/{lilypond-DaScaqz9.js → lilypond-Dks2Yn4E.js} +1 -1
  177. package/dist/app/assets/{linear-BihMu0qn.js → linear-BbQHAsyX.js} +1 -1
  178. package/dist/app/assets/{liquid-D0JwjezM.js → liquid-1Rh_VBgV.js} +1 -1
  179. package/dist/app/assets/{lisp-Ba08UZ8Y.js → lisp-B8F7GnzZ.js} +1 -1
  180. package/dist/app/assets/{livescript-Ba6INIPm.js → livescript-CnMl3GUW.js} +1 -1
  181. package/dist/app/assets/{llvm-B0HbpJgY.js → llvm-kit0j3fk.js} +1 -1
  182. package/dist/app/assets/{log-CUZTDc-a.js → log-BceSrVhl.js} +1 -1
  183. package/dist/app/assets/{lolcode-D40bzDOF.js → lolcode-BnIVqr1e.js} +1 -1
  184. package/dist/app/assets/{lua-jHZMGpQf.js → lua-T-5MUo9C.js} +1 -1
  185. package/dist/app/assets/{magma-BMKUCiAE.js → magma-gHe2O1FT.js} +1 -1
  186. package/dist/app/assets/{makefile-CrnMbIy3.js → makefile-bjFHqbvE.js} +1 -1
  187. package/dist/app/assets/{markdown-BpxRx0s_.js → markdown-CuFRHNGb.js} +1 -1
  188. package/dist/app/assets/{markup-D_2bSIGF.js → markup-BvcMGiKs.js} +1 -1
  189. package/dist/app/assets/{markup-templating-BQJ4eRFE.js → markup-templating-BmOIQpVF.js} +1 -1
  190. package/dist/app/assets/{matlab-uyhAjnN1.js → matlab-MUaweOP2.js} +1 -1
  191. package/dist/app/assets/{maxscript-H8QAZVCr.js → maxscript-C-vFH8dn.js} +1 -1
  192. package/dist/app/assets/{mel-Os9gRUqz.js → mel-Des6FEsu.js} +1 -1
  193. package/dist/app/assets/{mermaid-B2iIz3n5.js → mermaid-uLNvYeU7.js} +1 -1
  194. package/dist/app/assets/{min-BTBcsdCC.js → min-xlulTJHq.js} +1 -1
  195. package/dist/app/assets/{mindmap-definition-QFDTVHPH-Dvj885ud.js → mindmap-definition-QFDTVHPH-CfBB94BK.js} +1 -1
  196. package/dist/app/assets/{mizar-D9MjA9UN.js → mizar-D6rM1QfB.js} +1 -1
  197. package/dist/app/assets/{mongodb-Dn0muF6d.js → mongodb-yE586N9z.js} +1 -1
  198. package/dist/app/assets/{monkey-DOTSILMn.js → monkey-F6R8O6cT.js} +1 -1
  199. package/dist/app/assets/{moonscript-DfQiWdI-.js → moonscript-BRGQgk_O.js} +1 -1
  200. package/dist/app/assets/{n1ql-Di7PgXpN.js → n1ql-C5HrwbXh.js} +1 -1
  201. package/dist/app/assets/{n4js-4FGHhLWQ.js → n4js-CJi-EH8r.js} +1 -1
  202. package/dist/app/assets/{nand2tetris-hdl-RPNTjDij.js → nand2tetris-hdl-DxBTUunr.js} +1 -1
  203. package/dist/app/assets/{naniscript-DlBeU5rv.js → naniscript-BBXcDzDo.js} +1 -1
  204. package/dist/app/assets/{nasm-DOfW-U1c.js → nasm-CXaelFZU.js} +1 -1
  205. package/dist/app/assets/{neon-DIaK0ba7.js → neon-DoPefS15.js} +1 -1
  206. package/dist/app/assets/{nevod-MZznxw70.js → nevod-CX8n8gut.js} +1 -1
  207. package/dist/app/assets/{nginx-B_evwEEx.js → nginx-BXXCb5zs.js} +1 -1
  208. package/dist/app/assets/{nim-CKV8H1in.js → nim-Dryxvpf7.js} +1 -1
  209. package/dist/app/assets/{nix-snnJAJ52.js → nix-C3SgS0sm.js} +1 -1
  210. package/dist/app/assets/{nsis-BkQHvfnw.js → nsis-CuoIbU9u.js} +1 -1
  211. package/dist/app/assets/{objectivec-MasMMXjt.js → objectivec-ByW5tlUk.js} +1 -1
  212. package/dist/app/assets/{ocaml-DfMICclm.js → ocaml-BwrG1vxe.js} +1 -1
  213. package/dist/app/assets/{opencl-DMGsaXz-.js → opencl-DUXY7e6n.js} +1 -1
  214. package/dist/app/assets/{openqasm-HESEWwwi.js → openqasm--XSPIHP9.js} +1 -1
  215. package/dist/app/assets/{oz-Dnbv1xyS.js → oz-BxcK1fCk.js} +1 -1
  216. package/dist/app/assets/{parigp-BA7vMMvc.js → parigp-Cq_RScYD.js} +1 -1
  217. package/dist/app/assets/{parser-CpgehIIr.js → parser-BhBh9_yj.js} +1 -1
  218. package/dist/app/assets/{pascal-CHpGLduo.js → pascal-B8xwG_-H.js} +1 -1
  219. package/dist/app/assets/{pascaligo-gC_Fmy9X.js → pascaligo-DVI5vd0W.js} +1 -1
  220. package/dist/app/assets/{pcaxis-ClUcRdeO.js → pcaxis-CVhxW8dN.js} +1 -1
  221. package/dist/app/assets/{peoplecode-DQzgxy54.js → peoplecode-6atfhw90.js} +1 -1
  222. package/dist/app/assets/{perl-oGp9SxLw.js → perl-Bii6ZVZr.js} +1 -1
  223. package/dist/app/assets/{php-DgxqR0GZ.js → php-CUw8Uhwa.js} +1 -1
  224. package/dist/app/assets/{php-extras-BfS-aY8o.js → php-extras-DPujDZz7.js} +1 -1
  225. package/dist/app/assets/{phpdoc-BmMoLBHI.js → phpdoc-DfEawTrK.js} +1 -1
  226. package/dist/app/assets/{pieDiagram-DEJITSTG-DZ0yFuk7.js → pieDiagram-DEJITSTG-BdxkrLEe.js} +1 -1
  227. package/dist/app/assets/{plsql-CPXmCYYW.js → plsql-BwYNPHZc.js} +1 -1
  228. package/dist/app/assets/{powerquery-FtFYTUVW.js → powerquery-BQQvuflw.js} +1 -1
  229. package/dist/app/assets/{powershell-DuDoHsht.js → powershell-IqR72QQg.js} +1 -1
  230. package/dist/app/assets/{processing-CjEmSLbF.js → processing-DBFWv5cx.js} +1 -1
  231. package/dist/app/assets/{prolog-BrB4XKYQ.js → prolog-IDQzlcDI.js} +1 -1
  232. package/dist/app/assets/{promql-Bo3Yo-85.js → promql-pvhJxEyv.js} +1 -1
  233. package/dist/app/assets/{properties-C12E8Vrx.js → properties-DMEQb5Fo.js} +1 -1
  234. package/dist/app/assets/{protobuf-ZSbyt_tp.js → protobuf-pPaOApuw.js} +1 -1
  235. package/dist/app/assets/{psl-C8BZ04EB.js → psl-7h3UTxBj.js} +1 -1
  236. package/dist/app/assets/{pug-tFtksCnz.js → pug-BSBM9dXD.js} +1 -1
  237. package/dist/app/assets/{puppet-DIKGEmsp.js → puppet-dYx_z5u4.js} +1 -1
  238. package/dist/app/assets/{pure-Dl1I5Uf9.js → pure-DV_eZfCY.js} +1 -1
  239. package/dist/app/assets/{purebasic-BKUq9_IV.js → purebasic-BOeezX__.js} +1 -1
  240. package/dist/app/assets/{purescript-BfKdBG7f.js → purescript-BgbK6O1d.js} +1 -1
  241. package/dist/app/assets/{q-Bc-J6oNm.js → q-DXmJs7IN.js} +1 -1
  242. package/dist/app/assets/{qml-CtblfTL-.js → qml-CXjat1gE.js} +1 -1
  243. package/dist/app/assets/{qore-C_WhRfpS.js → qore-DJTbKkUa.js} +1 -1
  244. package/dist/app/assets/{qsharp-CkQWjHnz.js → qsharp-D7KET1nO.js} +1 -1
  245. package/dist/app/assets/{quadrantDiagram-34T5L4WZ-BFAfZEAg.js → quadrantDiagram-34T5L4WZ-BZQlafcX.js} +1 -1
  246. package/dist/app/assets/{r-BLXGPVPD.js → r-ojalpXiN.js} +1 -1
  247. package/dist/app/assets/{racket-E6RQ7R9a.js → racket-CEfT6hAc.js} +1 -1
  248. package/dist/app/assets/{reason-DCm-poIN.js → reason-DBNmE4oL.js} +1 -1
  249. package/dist/app/assets/{regex-BQMYuSFJ.js → regex-COhTZxZE.js} +1 -1
  250. package/dist/app/assets/{rego-kN2r0Pui.js → rego-wNAgtW3q.js} +1 -1
  251. package/dist/app/assets/{renpy-ifyhyky1.js → renpy-DGwLL0fG.js} +1 -1
  252. package/dist/app/assets/{requirementDiagram-MS252O5E-Cy6vLX6y.js → requirementDiagram-MS252O5E-CcAhbUz5.js} +1 -1
  253. package/dist/app/assets/{rest-sNHXO2Rp.js → rest-DYSbFKPV.js} +1 -1
  254. package/dist/app/assets/{rip-DiG06njh.js → rip-Bfbupelm.js} +1 -1
  255. package/dist/app/assets/{roboconf-Go3FkVXZ.js → roboconf-DAfuDy2O.js} +1 -1
  256. package/dist/app/assets/{robotframework-B0KjSDge.js → robotframework-BUPkauKC.js} +1 -1
  257. package/dist/app/assets/{ruby-lembbibU.js → ruby-9VNUAQYV.js} +1 -1
  258. package/dist/app/assets/{rust-lLanU6M8.js → rust-BeuepAML.js} +1 -1
  259. package/dist/app/assets/{sankeyDiagram-XADWPNL6-CHNcaRfC.js → sankeyDiagram-XADWPNL6-jLgXeIwH.js} +1 -1
  260. package/dist/app/assets/{sas-CepPfFuK.js → sas-e7kS8SsS.js} +1 -1
  261. package/dist/app/assets/{sass-CJ9PFEHC.js → sass-DYKC0MKE.js} +1 -1
  262. package/dist/app/assets/{scala-BOTmxIAg.js → scala-ClrUfcj7.js} +1 -1
  263. package/dist/app/assets/{scheme-DebY6fXZ.js → scheme-CfwROFXg.js} +1 -1
  264. package/dist/app/assets/{scss-I831DfbF.js → scss-2lQldpbe.js} +1 -1
  265. package/dist/app/assets/{sequenceDiagram-FGHM5R23-B262jGYI.js → sequenceDiagram-FGHM5R23-B2LyA3XJ.js} +1 -1
  266. package/dist/app/assets/{shell-session-Bc2Vf63x.js → shell-session-DPaZHV-K.js} +1 -1
  267. package/dist/app/assets/{smali-BvHZ9KC5.js → smali-CKuJc0cP.js} +1 -1
  268. package/dist/app/assets/{smalltalk-CnJHUQDi.js → smalltalk-PubA0-OK.js} +1 -1
  269. package/dist/app/assets/{smarty-C52pWLjT.js → smarty-_JLI79Cv.js} +1 -1
  270. package/dist/app/assets/{sml-BIsAmqJZ.js → sml-Bg8pvE9C.js} +1 -1
  271. package/dist/app/assets/{solidity-CmIQhZ4P.js → solidity-DP74t6-m.js} +1 -1
  272. package/dist/app/assets/{solution-file-BIQSOYlV.js → solution-file-CstqiDH0.js} +1 -1
  273. package/dist/app/assets/{soy-3fx5uUfg.js → soy-QD4r-fge.js} +1 -1
  274. package/dist/app/assets/{sparql-BVOpxY0k.js → sparql-Ctv8wN_S.js} +1 -1
  275. package/dist/app/assets/{splunk-spl-BY78MSNc.js → splunk-spl-DXfTugwh.js} +1 -1
  276. package/dist/app/assets/{sqf-C829Cqkw.js → sqf-DDYE8u1s.js} +1 -1
  277. package/dist/app/assets/{sql-BjXleg-C.js → sql-CwcCLvnC.js} +1 -1
  278. package/dist/app/assets/{squirrel-hVXB9A_k.js → squirrel-Cnsc9D7K.js} +1 -1
  279. package/dist/app/assets/{stan-DR8-Ksro.js → stan-AKGk2epv.js} +1 -1
  280. package/dist/app/assets/{stateDiagram-FHFEXIEX-DASFzkGA.js → stateDiagram-FHFEXIEX-BSl_DTWy.js} +1 -1
  281. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-BJqUpXJV.js +1 -0
  282. package/dist/app/assets/{stylus-BLgROJFn.js → stylus-BZzQ2RYd.js} +1 -1
  283. package/dist/app/assets/{swift-BFiTbikL.js → swift-DE2c2XNt.js} +1 -1
  284. package/dist/app/assets/{systemd-BH7-HakT.js → systemd-B4iOELli.js} +1 -1
  285. package/dist/app/assets/{t4-cs-BhRgiInj.js → t4-cs-Drfumg_5.js} +1 -1
  286. package/dist/app/assets/{t4-templating-DVcctKts.js → t4-templating-CWe1Wj1T.js} +1 -1
  287. package/dist/app/assets/{t4-vb-BWdGVqZt.js → t4-vb-Dw48h-8D.js} +1 -1
  288. package/dist/app/assets/{tap-O_XkewC5.js → tap-QOawf4s6.js} +1 -1
  289. package/dist/app/assets/{tcl-yX1XNQSP.js → tcl-DCNBICRw.js} +1 -1
  290. package/dist/app/assets/{textile-BLezi3e1.js → textile-DIZodGDg.js} +1 -1
  291. package/dist/app/assets/{timeline-definition-GMOUNBTQ-BNGwgyTF.js → timeline-definition-GMOUNBTQ-Z9RQmNUy.js} +1 -1
  292. package/dist/app/assets/{toml-Eph7qw5M.js → toml-CiK0hA2t.js} +1 -1
  293. package/dist/app/assets/{tremor-CSl2ZVP1.js → tremor-zgXyG1cv.js} +1 -1
  294. package/dist/app/assets/{tt2-0Brdd3gb.js → tt2-D1YpVJXr.js} +1 -1
  295. package/dist/app/assets/{turtle-Cc0fFjp3.js → turtle-B1trqDSm.js} +1 -1
  296. package/dist/app/assets/{twig-Dt5yL5pH.js → twig-Bf9SEHBb.js} +1 -1
  297. package/dist/app/assets/{typescript-gPQes0uv.js → typescript-C-4JYtNM.js} +1 -1
  298. package/dist/app/assets/{typoscript-J9BtBWlv.js → typoscript-hB_DOtTY.js} +1 -1
  299. package/dist/app/assets/{unrealscript-g2cMrNeY.js → unrealscript-D8m_f-UH.js} +1 -1
  300. package/dist/app/assets/{uorazor-ChupejQE.js → uorazor-7OFkiaZN.js} +1 -1
  301. package/dist/app/assets/{uri-DKyJK53l.js → uri-Bg5uoy-A.js} +1 -1
  302. package/dist/app/assets/{v-gE-bfjKA.js → v-crNEWQ0o.js} +1 -1
  303. package/dist/app/assets/{vala-COAZWYR5.js → vala-I7-r3sF5.js} +1 -1
  304. package/dist/app/assets/{vbnet-Bu2O5wTQ.js → vbnet-Ch5CuGnJ.js} +1 -1
  305. package/dist/app/assets/{velocity-QORnuopg.js → velocity-DOxzqRXl.js} +1 -1
  306. package/dist/app/assets/{vennDiagram-DHZGUBPP-7IQLntaa.js → vennDiagram-DHZGUBPP-YeOFYz1P.js} +1 -1
  307. package/dist/app/assets/{verilog-qxGjqHLf.js → verilog-D41Pfqh8.js} +1 -1
  308. package/dist/app/assets/{vhdl-cIq_dULQ.js → vhdl-CTcWCQJD.js} +1 -1
  309. package/dist/app/assets/{vim-DY-IJIKY.js → vim-BuN7t_SM.js} +1 -1
  310. package/dist/app/assets/{visual-basic-Coo2C3Qj.js → visual-basic-JQAH8AZk.js} +1 -1
  311. package/dist/app/assets/{wardley-RL74JXVD-D5caMcOT.js → wardley-RL74JXVD-BUjHb5HT.js} +1 -1
  312. package/dist/app/assets/{wardleyDiagram-NUSXRM2D-BbTN3RD2.js → wardleyDiagram-NUSXRM2D-C15gNPrf.js} +1 -1
  313. package/dist/app/assets/{warpscript-BaMVI_Yi.js → warpscript-Ch53ljcr.js} +1 -1
  314. package/dist/app/assets/{wasm-C1KcjV4l.js → wasm-BOYqb1W1.js} +1 -1
  315. package/dist/app/assets/{web-idl-C1V0GjBc.js → web-idl-B-9jGBdG.js} +1 -1
  316. package/dist/app/assets/{wiki-QJuJkorv.js → wiki-BED0tcyV.js} +1 -1
  317. package/dist/app/assets/{wolfram-fbFFHeKH.js → wolfram-BzxMBieL.js} +1 -1
  318. package/dist/app/assets/{wren-CZ1XKEHc.js → wren-BGHq8rsm.js} +1 -1
  319. package/dist/app/assets/{xeora-O0sY3eom.js → xeora-B9qNkvY8.js} +1 -1
  320. package/dist/app/assets/{xml-doc-Bs1K40y6.js → xml-doc-DSfu_FBO.js} +1 -1
  321. package/dist/app/assets/{xojo-DsepgQ0E.js → xojo-BT2W_WXT.js} +1 -1
  322. package/dist/app/assets/{xquery-C2-xF6LZ.js → xquery-D1t5F9ed.js} +1 -1
  323. package/dist/app/assets/{xychartDiagram-5P7HB3ND-D_u6cobc.js → xychartDiagram-5P7HB3ND-DCVn10Kq.js} +1 -1
  324. package/dist/app/assets/{yaml-CSCOF77O.js → yaml-D2dqe7Hw.js} +1 -1
  325. package/dist/app/assets/{yang-Dupiqe8o.js → yang-5UPIMSAR.js} +1 -1
  326. package/dist/app/assets/{zig-BVtaAQ9o.js → zig-BvxlkZ0r.js} +1 -1
  327. package/dist/app/index.html +2 -2
  328. package/dist/index.cjs +492 -379
  329. package/dist/index.d.cts +16 -0
  330. package/dist/index.d.ts +16 -0
  331. package/dist/index.js +508 -385
  332. package/package.json +3 -3
  333. package/dist/app/assets/channel-CKs0hRBa.js +0 -1
  334. package/dist/app/assets/classDiagram-6PBFFD2Q-BSlTfNc_.js +0 -1
  335. package/dist/app/assets/classDiagram-v2-HSJHXN6E-BSlTfNc_.js +0 -1
  336. package/dist/app/assets/clone-Qytsv1Ng.js +0 -1
  337. package/dist/app/assets/index-CIhQPDQc.css +0 -1
  338. package/dist/app/assets/index-Ca6boVeh.js +0 -762
  339. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-VSJXuK_v.js +0 -1
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  // src/components/chat.tsx
2
- import * as React54 from "react";
2
+ import * as React55 from "react";
3
3
  import {
4
4
  ArrowDown as ArrowDown2,
5
5
  ChevronDown as ChevronDown5,
6
6
  FileText as FileText5,
7
7
  ImageIcon,
8
- Loader2 as Loader210,
8
+ Loader2 as Loader211,
9
9
  Minus,
10
10
  Pause,
11
11
  Pencil as Pencil4,
@@ -14,7 +14,7 @@ import {
14
14
  Settings as Settings2,
15
15
  Target as Target3,
16
16
  Trash2 as Trash23,
17
- X as X8
17
+ X as X9
18
18
  } from "lucide-react";
19
19
  import { CHATKIT_TASK_SUMMARY_OPEN_RESOURCE_EFFECT } from "@xpert-ai/chatkit-types";
20
20
 
@@ -806,6 +806,7 @@ function isRuntimeCapabilitiesSelection(value) {
806
806
 
807
807
  // src/providers/ParentMessenger.tsx
808
808
  import { jsx } from "react/jsx-runtime";
809
+ var CHATKIT_INTERNAL_PARENT_EVENT = "chatkit:internal-parent-event";
809
810
  var handledSendUserMessageNonces = /* @__PURE__ */ new Set();
810
811
  var handledSendUserMessageEvents = /* @__PURE__ */ new WeakSet();
811
812
  var getParentOrigin = () => {
@@ -1123,6 +1124,16 @@ function ParentMessengerProvider({
1123
1124
  );
1124
1125
  const sendEvent = useCallback(
1125
1126
  (event, data, transfer) => {
1127
+ if (typeof window !== "undefined") {
1128
+ window.dispatchEvent(
1129
+ new CustomEvent(
1130
+ CHATKIT_INTERNAL_PARENT_EVENT,
1131
+ {
1132
+ detail: { event, data }
1133
+ }
1134
+ )
1135
+ );
1136
+ }
1126
1137
  if (!isParentAvailable) return;
1127
1138
  const message = {
1128
1139
  __xpaiChatKit: true,
@@ -2118,6 +2129,32 @@ import { initReactI18next } from "react-i18next";
2118
2129
 
2119
2130
  // src/i18n/locales/en-US.json
2120
2131
  var en_US_default = {
2132
+ workbench: {
2133
+ title: "Views",
2134
+ description: "Remote workbench views",
2135
+ views: "Available views",
2136
+ open: "Open views",
2137
+ close: "Close views",
2138
+ expandPanel: "Expand panel",
2139
+ restorePanel: "Restore panel",
2140
+ toggleSidebar: "Show or hide sidebar",
2141
+ resize: "Resize views panel",
2142
+ loading: "Loading views...",
2143
+ loadingView: "Loading view...",
2144
+ empty: "No compatible views are available.",
2145
+ loadFailed: "Views could not be loaded.",
2146
+ entryUnavailable: "Remote view content is unavailable.",
2147
+ missingAssistant: "An assistant is required to load views.",
2148
+ retry: "Retry",
2149
+ errors: {
2150
+ contextKeyRequired: "Context key is required.",
2151
+ messageRequired: "Message text is required.",
2152
+ sendFailed: "The message could not be sent.",
2153
+ requestFailed: "The remote view request failed.",
2154
+ requestTimeout: "The remote view request timed out.",
2155
+ clientCommandUnavailable: "No handler is configured for client command {{commandKey}}."
2156
+ }
2157
+ },
2121
2158
  chat: {
2122
2159
  title: "Chat",
2123
2160
  placeholder: "Type a message...",
@@ -2562,6 +2599,32 @@ var en_US_default = {
2562
2599
 
2563
2600
  // src/i18n/locales/zh-CN.json
2564
2601
  var zh_CN_default = {
2602
+ workbench: {
2603
+ title: "\u89C6\u56FE",
2604
+ description: "\u8FDC\u7A0B\u5DE5\u4F5C\u53F0\u89C6\u56FE",
2605
+ views: "\u53EF\u7528\u89C6\u56FE",
2606
+ open: "\u6253\u5F00\u89C6\u56FE",
2607
+ close: "\u5173\u95ED\u89C6\u56FE",
2608
+ expandPanel: "\u5C55\u5F00\u9762\u677F",
2609
+ restorePanel: "\u8FD8\u539F\u9762\u677F",
2610
+ toggleSidebar: "\u663E\u793A/\u9690\u85CF\u4FA7\u8FB9\u680F",
2611
+ resize: "\u8C03\u6574\u89C6\u56FE\u9762\u677F\u5BBD\u5EA6",
2612
+ loading: "\u6B63\u5728\u52A0\u8F7D\u89C6\u56FE...",
2613
+ loadingView: "\u6B63\u5728\u52A0\u8F7D\u89C6\u56FE...",
2614
+ empty: "\u6682\u65E0\u517C\u5BB9\u7684\u89C6\u56FE\u3002",
2615
+ loadFailed: "\u89C6\u56FE\u52A0\u8F7D\u5931\u8D25\u3002",
2616
+ entryUnavailable: "\u8FDC\u7A0B\u89C6\u56FE\u5185\u5BB9\u4E0D\u53EF\u7528\u3002",
2617
+ missingAssistant: "\u9700\u8981 Assistant \u624D\u80FD\u52A0\u8F7D\u89C6\u56FE\u3002",
2618
+ retry: "\u91CD\u8BD5",
2619
+ errors: {
2620
+ contextKeyRequired: "\u5FC5\u987B\u63D0\u4F9B\u4E0A\u4E0B\u6587\u952E\u3002",
2621
+ messageRequired: "\u5FC5\u987B\u63D0\u4F9B\u6D88\u606F\u5185\u5BB9\u3002",
2622
+ sendFailed: "\u6D88\u606F\u53D1\u9001\u5931\u8D25\u3002",
2623
+ requestFailed: "\u8FDC\u7A0B\u89C6\u56FE\u8BF7\u6C42\u5931\u8D25\u3002",
2624
+ requestTimeout: "\u8FDC\u7A0B\u89C6\u56FE\u8BF7\u6C42\u8D85\u65F6\u3002",
2625
+ clientCommandUnavailable: "\u672A\u914D\u7F6E\u5BA2\u6237\u7AEF\u547D\u4EE4 {{commandKey}} \u7684\u5904\u7406\u5668\u3002"
2626
+ }
2627
+ },
2565
2628
  chat: {
2566
2629
  title: "\u804A\u5929",
2567
2630
  placeholder: "\u8F93\u5165\u6D88\u606F...",
@@ -3236,6 +3299,7 @@ function generateGrayscaleColors(grayscale, isDarkMode) {
3236
3299
  }
3237
3300
  function ThemeProvider({ children, theme: themeProp }) {
3238
3301
  const themeRef = React4.useRef(null);
3302
+ const [themeRevision, setThemeRevision] = React4.useState(0);
3239
3303
  const theme = React4.useMemo(() => {
3240
3304
  if (typeof themeProp === "string") {
3241
3305
  return {
@@ -3248,8 +3312,13 @@ function ThemeProvider({ children, theme: themeProp }) {
3248
3312
  return theme.colorScheme === "dark";
3249
3313
  }, [theme]);
3250
3314
  const contextValue = React4.useMemo(
3251
- () => ({ theme, isDarkMode }),
3252
- [theme, isDarkMode]
3315
+ () => ({
3316
+ theme,
3317
+ isDarkMode,
3318
+ themeRootRef: themeRef,
3319
+ themeRevision
3320
+ }),
3321
+ [theme, isDarkMode, themeRevision]
3253
3322
  );
3254
3323
  React4.useEffect(() => {
3255
3324
  if (!themeRef.current) return;
@@ -3346,6 +3415,7 @@ function ThemeProvider({ children, theme: themeProp }) {
3346
3415
  }
3347
3416
  }
3348
3417
  }
3418
+ setThemeRevision((current) => current + 1);
3349
3419
  return () => {
3350
3420
  const root = document.documentElement;
3351
3421
  el.classList.remove("dark");
@@ -9274,7 +9344,7 @@ import {
9274
9344
  memo,
9275
9345
  useContext as useContext5,
9276
9346
  useId as useId4,
9277
- useState as useState14
9347
+ useState as useState15
9278
9348
  } from "react";
9279
9349
  import { CheckIcon as CheckIcon3, ChevronDownIcon, CopyIcon as CopyIcon2, DownloadIcon as DownloadIcon2, ListChecksIcon } from "lucide-react";
9280
9350
 
@@ -10029,7 +10099,7 @@ function PlanCard({ children }) {
10029
10099
  const { t } = useChatkitTranslation();
10030
10100
  const planMarkdown = normalizePlanMarkdown(children);
10031
10101
  const contentId = useId4();
10032
- const [isExpanded, setIsExpanded] = useState14(false);
10102
+ const [isExpanded, setIsExpanded] = useState15(false);
10033
10103
  const { isCopied, copyToClipboard } = useCopyToClipboard();
10034
10104
  const onCopy = () => {
10035
10105
  if (!planMarkdown || isCopied) return;
@@ -10135,7 +10205,7 @@ var isMermaidCodeElement = (child) => isValidElement(child) && typeof child.prop
10135
10205
  function useCopyToClipboard({
10136
10206
  copiedDuration = 3e3
10137
10207
  } = {}) {
10138
- const [isCopied, setIsCopied] = useState14(false);
10208
+ const [isCopied, setIsCopied] = useState15(false);
10139
10209
  const copyToClipboard = (value) => {
10140
10210
  if (!value) return;
10141
10211
  navigator.clipboard.writeText(value).then(() => {
@@ -12471,7 +12541,7 @@ function RequestUserInputResultCard({
12471
12541
  }
12472
12542
 
12473
12543
  // src/components/thread/messages/widget.tsx
12474
- import { useEffect as useEffect17, useMemo as useMemo12, useState as useState18 } from "react";
12544
+ import { useEffect as useEffect17, useMemo as useMemo12, useState as useState19 } from "react";
12475
12545
  import {
12476
12546
  A2UIRenderer,
12477
12547
  SurfaceRenderer,
@@ -12514,7 +12584,7 @@ function FlatWidgetSurface({
12514
12584
  surfaceId
12515
12585
  }) {
12516
12586
  const { processMessages } = useA2UI();
12517
- const [renderError, setRenderError] = useState18(false);
12587
+ const [renderError, setRenderError] = useState19(false);
12518
12588
  const normalizedMessages = useMemo12(
12519
12589
  () => normalizeFlatWidgetMessages(messages, surfaceId),
12520
12590
  [messages, surfaceId]
@@ -16537,10 +16607,62 @@ function findDomPointForComposerOffset(root, offset) {
16537
16607
  return result ?? { node: lastNode, offset: lastOffset };
16538
16608
  }
16539
16609
 
16540
- // src/components/chat/runtime-capabilities.tsx
16610
+ // src/workbench/WorkbenchShell.tsx
16541
16611
  import * as React51 from "react";
16542
- import { X as X7 } from "lucide-react";
16543
- import { jsx as jsx56, jsxs as jsxs38 } from "react/jsx-runtime";
16612
+ import {
16613
+ ASSISTANT_CHAT_SEND_MESSAGE_COMMAND,
16614
+ ASSISTANT_CONTEXT_SET_COMMAND
16615
+ } from "@xpert-ai/xpert-sdk";
16616
+ import {
16617
+ Loader2 as Loader29,
16618
+ Maximize2,
16619
+ Minimize2,
16620
+ PanelRight,
16621
+ RotateCcw,
16622
+ X as X7
16623
+ } from "lucide-react";
16624
+ import { Fragment as Fragment8, jsx as jsx56, jsxs as jsxs38 } from "react/jsx-runtime";
16625
+ var WorkbenchContext = React51.createContext({
16626
+ enabled: false,
16627
+ open: false,
16628
+ loading: false,
16629
+ available: false,
16630
+ toggle: () => void 0
16631
+ });
16632
+ function useWorkbench() {
16633
+ return React51.useContext(WorkbenchContext);
16634
+ }
16635
+ function WorkbenchToggleButton() {
16636
+ const workbench = useWorkbench();
16637
+ const { t } = useChatkitTranslation();
16638
+ if (!workbench.enabled || workbench.open) return null;
16639
+ const label = t("workbench.open");
16640
+ const tooltip = workbench.disabledReason ?? label;
16641
+ return /* @__PURE__ */ jsxs38(Tooltip, { children: [
16642
+ /* @__PURE__ */ jsx56(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx56("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx56(
16643
+ "button",
16644
+ {
16645
+ type: "button",
16646
+ onClick: workbench.toggle,
16647
+ disabled: !workbench.available,
16648
+ className: cn(
16649
+ "flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
16650
+ "text-muted-foreground transition-colors duration-150 hover:bg-muted hover:text-foreground",
16651
+ "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50"
16652
+ ),
16653
+ "aria-label": label,
16654
+ "aria-expanded": false,
16655
+ children: workbench.loading ? /* @__PURE__ */ jsx56(Loader29, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ jsx56(PanelRight, { size: 16 })
16656
+ }
16657
+ ) }) }),
16658
+ /* @__PURE__ */ jsx56(TooltipContent, { side: "bottom", children: tooltip })
16659
+ ] });
16660
+ }
16661
+
16662
+ // src/components/chat/runtime-capabilities.tsx
16663
+ import * as React52 from "react";
16664
+ import { X as X8 } from "lucide-react";
16665
+ import { jsx as jsx57, jsxs as jsxs39 } from "react/jsx-runtime";
16544
16666
  function createComposerCapabilityInsertionParts(options) {
16545
16667
  return options.flatMap((option) => [
16546
16668
  createComposerCapabilityPart(option, createMessageId()),
@@ -16613,29 +16735,29 @@ function useRuntimeCapabilitiesState({
16613
16735
  disabled,
16614
16736
  composerParts
16615
16737
  }) {
16616
- const [runtimeCapabilities, setRuntimeCapabilities] = React51.useState(null);
16617
- const [runtimeCapabilitiesReady, setRuntimeCapabilitiesReady] = React51.useState(false);
16618
- const [sessionRuntimeCapabilities, setSessionRuntimeCapabilities] = React51.useState(
16738
+ const [runtimeCapabilities, setRuntimeCapabilities] = React52.useState(null);
16739
+ const [runtimeCapabilitiesReady, setRuntimeCapabilitiesReady] = React52.useState(false);
16740
+ const [sessionRuntimeCapabilities, setSessionRuntimeCapabilities] = React52.useState(
16619
16741
  () => createEmptyRuntimeCapabilitiesSelection()
16620
16742
  );
16621
- const [runRuntimeCapabilities, setRunRuntimeCapabilities] = React51.useState(
16743
+ const [runRuntimeCapabilities, setRunRuntimeCapabilities] = React52.useState(
16622
16744
  () => createEmptyRuntimeCapabilitiesSelection()
16623
16745
  );
16624
- const [runtimeCapabilityPalette, setRuntimeCapabilityPalette] = React51.useState(null);
16625
- const runtimeCapabilityPreferenceLoadRef = React51.useRef(0);
16626
- const pendingExternalRuntimeCapabilitiesRef = React51.useRef(null);
16627
- const runtimeCapabilityOptions = React51.useMemo(
16746
+ const [runtimeCapabilityPalette, setRuntimeCapabilityPalette] = React52.useState(null);
16747
+ const runtimeCapabilityPreferenceLoadRef = React52.useRef(0);
16748
+ const pendingExternalRuntimeCapabilitiesRef = React52.useRef(null);
16749
+ const runtimeCapabilityOptions = React52.useMemo(
16628
16750
  () => getRuntimeCapabilityOptions(runtimeCapabilities),
16629
16751
  [runtimeCapabilities]
16630
16752
  );
16631
- const effectiveSessionRuntimeCapabilities = React51.useMemo(
16753
+ const effectiveSessionRuntimeCapabilities = React52.useMemo(
16632
16754
  () => runtimeCapabilitiesReady && runtimeCapabilities ? mergeRuntimeCapabilitiesSelections(
16633
16755
  runtimeCapabilities,
16634
16756
  sessionRuntimeCapabilities
16635
16757
  ) : null,
16636
16758
  [runtimeCapabilities, runtimeCapabilitiesReady, sessionRuntimeCapabilities]
16637
16759
  );
16638
- const runRuntimeCapabilityOptions = React51.useMemo(
16760
+ const runRuntimeCapabilityOptions = React52.useMemo(
16639
16761
  () => runtimeCapabilityOptions.filter(
16640
16762
  (option) => isRuntimeCapabilitySelected(
16641
16763
  runRuntimeCapabilities,
@@ -16645,11 +16767,11 @@ function useRuntimeCapabilitiesState({
16645
16767
  ),
16646
16768
  [runRuntimeCapabilities, runtimeCapabilityOptions]
16647
16769
  );
16648
- const composerRuntimeCapabilitySelectionKeys = React51.useMemo(
16770
+ const composerRuntimeCapabilitySelectionKeys = React52.useMemo(
16649
16771
  () => getComposerCapabilitySelectionKeys(composerParts),
16650
16772
  [composerParts]
16651
16773
  );
16652
- const detachedRunRuntimeCapabilityOptions = React51.useMemo(
16774
+ const detachedRunRuntimeCapabilityOptions = React52.useMemo(
16653
16775
  () => runRuntimeCapabilityOptions.filter(
16654
16776
  (option) => !composerRuntimeCapabilitySelectionKeys.has(
16655
16777
  getRuntimeCapabilityOptionKey(option)
@@ -16657,7 +16779,7 @@ function useRuntimeCapabilitiesState({
16657
16779
  ),
16658
16780
  [composerRuntimeCapabilitySelectionKeys, runRuntimeCapabilityOptions]
16659
16781
  );
16660
- const persistSessionRuntimeCapabilities = React51.useCallback(
16782
+ const persistSessionRuntimeCapabilities = React52.useCallback(
16661
16783
  async (nextThreadId, selection) => {
16662
16784
  if (!runtimeCapabilities || !selection || !client) {
16663
16785
  return;
@@ -16682,7 +16804,7 @@ function useRuntimeCapabilitiesState({
16682
16804
  },
16683
16805
  [client, runtimeCapabilities]
16684
16806
  );
16685
- const applyExternalRuntimeCapabilities = React51.useCallback(
16807
+ const applyExternalRuntimeCapabilities = React52.useCallback(
16686
16808
  (selection) => {
16687
16809
  pendingExternalRuntimeCapabilitiesRef.current = selection;
16688
16810
  setRunRuntimeCapabilities(() => {
@@ -16703,7 +16825,7 @@ function useRuntimeCapabilitiesState({
16703
16825
  },
16704
16826
  [runtimeCapabilities]
16705
16827
  );
16706
- const handleSessionRuntimeCapabilityToggle = React51.useCallback(
16828
+ const handleSessionRuntimeCapabilityToggle = React52.useCallback(
16707
16829
  (type, id, selected) => {
16708
16830
  setSessionRuntimeCapabilities((previous) => {
16709
16831
  const nextSelection = toggleRuntimeCapabilitySelection(
@@ -16724,7 +16846,7 @@ function useRuntimeCapabilitiesState({
16724
16846
  },
16725
16847
  [persistSessionRuntimeCapabilities, threadId]
16726
16848
  );
16727
- const addRunRuntimeCapabilities = React51.useCallback(
16849
+ const addRunRuntimeCapabilities = React52.useCallback(
16728
16850
  (selection) => {
16729
16851
  setRunRuntimeCapabilities(
16730
16852
  (previous) => runtimeCapabilities ? mergeRuntimeCapabilitiesSelections(
@@ -16736,13 +16858,13 @@ function useRuntimeCapabilitiesState({
16736
16858
  },
16737
16859
  [runtimeCapabilities]
16738
16860
  );
16739
- const resetRunRuntimeCapabilities = React51.useCallback(() => {
16861
+ const resetRunRuntimeCapabilities = React52.useCallback(() => {
16740
16862
  setRunRuntimeCapabilities(
16741
16863
  createEmptyRuntimeCapabilitiesSelection(runtimeCapabilities)
16742
16864
  );
16743
16865
  setRuntimeCapabilityPalette(null);
16744
16866
  }, [runtimeCapabilities]);
16745
- const getRuntimeCapabilitiesForSubmit = React51.useCallback(
16867
+ const getRuntimeCapabilitiesForSubmit = React52.useCallback(
16746
16868
  (recommended) => {
16747
16869
  const recommendedRuntimeCapabilitiesForSubmit = recommended && runtimeCapabilities && runtimeCapabilitiesReady ? mergeRuntimeCapabilitiesSelections(
16748
16870
  runtimeCapabilities,
@@ -16773,7 +16895,7 @@ function useRuntimeCapabilitiesState({
16773
16895
  runtimeCapabilityOptions
16774
16896
  ]
16775
16897
  );
16776
- const getRuntimeCapabilitiesForCommand = React51.useCallback(
16898
+ const getRuntimeCapabilitiesForCommand = React52.useCallback(
16777
16899
  (recommended) => runtimeCapabilities && runtimeCapabilitiesReady ? createRuntimeCapabilitiesForSubmit({
16778
16900
  capabilities: runtimeCapabilities,
16779
16901
  available: effectiveSessionRuntimeCapabilities,
@@ -16785,7 +16907,7 @@ function useRuntimeCapabilitiesState({
16785
16907
  runtimeCapabilitiesReady
16786
16908
  ]
16787
16909
  );
16788
- React51.useEffect(() => {
16910
+ React52.useEffect(() => {
16789
16911
  if (disabled || !client || !assistantId) {
16790
16912
  pendingExternalRuntimeCapabilitiesRef.current = null;
16791
16913
  setRuntimeCapabilities(null);
@@ -16833,7 +16955,7 @@ function useRuntimeCapabilitiesState({
16833
16955
  });
16834
16956
  return () => controller.abort();
16835
16957
  }, [assistantId, client, disabled]);
16836
- React51.useEffect(() => {
16958
+ React52.useEffect(() => {
16837
16959
  const emptyRunSelection = createEmptyRuntimeCapabilitiesSelection(runtimeCapabilities);
16838
16960
  const pendingExternalSelection = pendingExternalRuntimeCapabilitiesRef.current;
16839
16961
  if (pendingExternalSelection && runtimeCapabilities) {
@@ -16925,8 +17047,8 @@ function useRuntimeCapabilityComposerActions({
16925
17047
  commitComposerParts,
16926
17048
  focusComposerAt
16927
17049
  }) {
16928
- const pendingExternalRuntimeCapabilityInsertRef = React51.useRef(null);
16929
- const insertExternalRuntimeCapabilities = React51.useCallback(
17050
+ const pendingExternalRuntimeCapabilityInsertRef = React52.useRef(null);
17051
+ const insertExternalRuntimeCapabilities = React52.useCallback(
16930
17052
  (selection, options) => {
16931
17053
  applyExternalRuntimeCapabilities(selection);
16932
17054
  if (!selection) {
@@ -16981,7 +17103,7 @@ function useRuntimeCapabilityComposerActions({
16981
17103
  setRuntimeCapabilityPalette
16982
17104
  ]
16983
17105
  );
16984
- const applyComposerValueRuntimeCapabilities = React51.useCallback(
17106
+ const applyComposerValueRuntimeCapabilities = React52.useCallback(
16985
17107
  (payload, options) => {
16986
17108
  const runtimeCapabilitiesPayload = isRuntimeCapabilitiesSelection(
16987
17109
  payload.runtimeCapabilities
@@ -16997,7 +17119,7 @@ function useRuntimeCapabilityComposerActions({
16997
17119
  },
16998
17120
  [applyExternalRuntimeCapabilities, insertExternalRuntimeCapabilities]
16999
17121
  );
17000
- const updateRuntimeCapabilityPalette = React51.useCallback(
17122
+ const updateRuntimeCapabilityPalette = React52.useCallback(
17001
17123
  (parts, selectionStart) => {
17002
17124
  const input = composerInputRef.current;
17003
17125
  const editingText = getComposerEditingText(parts);
@@ -17009,7 +17131,7 @@ function useRuntimeCapabilityComposerActions({
17009
17131
  },
17010
17132
  [composerInputRef, setRuntimeCapabilityPalette]
17011
17133
  );
17012
- const removeRunRuntimeCapability = React51.useCallback(
17134
+ const removeRunRuntimeCapability = React52.useCallback(
17013
17135
  (option) => {
17014
17136
  setRunRuntimeCapabilities(
17015
17137
  (previous) => toggleRuntimeCapabilitySelection(
@@ -17029,7 +17151,7 @@ function useRuntimeCapabilityComposerActions({
17029
17151
  },
17030
17152
  [commitComposerParts, composerPartsRef, setRunRuntimeCapabilities]
17031
17153
  );
17032
- const insertComposerCapabilityToken = React51.useCallback(
17154
+ const insertComposerCapabilityToken = React52.useCallback(
17033
17155
  (capability, range) => {
17034
17156
  const replacementParts = createComposerCapabilityInsertionParts([
17035
17157
  capability
@@ -17070,7 +17192,7 @@ function useRuntimeCapabilityComposerActions({
17070
17192
  setRuntimeCapabilityPalette
17071
17193
  ]
17072
17194
  );
17073
- React51.useEffect(() => {
17195
+ React52.useEffect(() => {
17074
17196
  if (!runtimeCapabilitiesReady || !runtimeCapabilities) {
17075
17197
  return;
17076
17198
  }
@@ -17100,16 +17222,16 @@ function HumanRuntimeCapabilityChips({
17100
17222
  if (options.length === 0) {
17101
17223
  return null;
17102
17224
  }
17103
- return /* @__PURE__ */ jsx56("div", { className: "mb-2 flex flex-wrap gap-1.5", children: options.map((option) => {
17225
+ return /* @__PURE__ */ jsx57("div", { className: "mb-2 flex flex-wrap gap-1.5", children: options.map((option) => {
17104
17226
  const color = option.type === "skill" ? void 0 : getRuntimeCapabilityColor(option);
17105
- return /* @__PURE__ */ jsxs38(
17227
+ return /* @__PURE__ */ jsxs39(
17106
17228
  "span",
17107
17229
  {
17108
17230
  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",
17109
17231
  style: color ? { color } : void 0,
17110
17232
  children: [
17111
- /* @__PURE__ */ jsx56(RuntimeCapabilityIcon, { option, variant: "chip" }),
17112
- /* @__PURE__ */ jsx56("span", { className: "max-w-[9rem] truncate", children: option.label })
17233
+ /* @__PURE__ */ jsx57(RuntimeCapabilityIcon, { option, variant: "chip" }),
17234
+ /* @__PURE__ */ jsx57("span", { className: "max-w-[9rem] truncate", children: option.label })
17113
17235
  ]
17114
17236
  },
17115
17237
  `${option.type}:${option.id}`
@@ -17125,19 +17247,19 @@ function DetachedRunRuntimeCapabilities({
17125
17247
  if (options.length === 0) {
17126
17248
  return null;
17127
17249
  }
17128
- return /* @__PURE__ */ jsxs38("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
17129
- /* @__PURE__ */ jsx56("span", { className: "text-xs text-muted-foreground", children: runOnlyLabel }),
17250
+ return /* @__PURE__ */ jsxs39("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
17251
+ /* @__PURE__ */ jsx57("span", { className: "text-xs text-muted-foreground", children: runOnlyLabel }),
17130
17252
  options.map((option) => {
17131
17253
  const color = getRuntimeCapabilityColor(option);
17132
- return /* @__PURE__ */ jsxs38(
17254
+ return /* @__PURE__ */ jsxs39(
17133
17255
  "span",
17134
17256
  {
17135
17257
  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",
17136
17258
  style: color ? { color } : void 0,
17137
17259
  children: [
17138
- /* @__PURE__ */ jsx56(RuntimeCapabilityIcon, { option, variant: "chip" }),
17139
- /* @__PURE__ */ jsx56("span", { className: "max-w-40 truncate", children: option.label }),
17140
- /* @__PURE__ */ jsx56(
17260
+ /* @__PURE__ */ jsx57(RuntimeCapabilityIcon, { option, variant: "chip" }),
17261
+ /* @__PURE__ */ jsx57("span", { className: "max-w-40 truncate", children: option.label }),
17262
+ /* @__PURE__ */ jsx57(
17141
17263
  "button",
17142
17264
  {
17143
17265
  type: "button",
@@ -17145,7 +17267,7 @@ function DetachedRunRuntimeCapabilities({
17145
17267
  className: "rounded-full p-0.5 hover:bg-primary/15",
17146
17268
  title: removeLabel,
17147
17269
  "aria-label": removeLabel,
17148
- children: /* @__PURE__ */ jsx56(X7, { size: 11 })
17270
+ children: /* @__PURE__ */ jsx57(X8, { size: 11 })
17149
17271
  }
17150
17272
  )
17151
17273
  ]
@@ -17159,7 +17281,7 @@ function ComposerCapabilityToken({
17159
17281
  part
17160
17282
  }) {
17161
17283
  const color = getRuntimeCapabilityColor(part.capability);
17162
- return /* @__PURE__ */ jsxs38(
17284
+ return /* @__PURE__ */ jsxs39(
17163
17285
  "span",
17164
17286
  {
17165
17287
  "data-composer-capability-key": part.key,
@@ -17169,8 +17291,8 @@ function ComposerCapabilityToken({
17169
17291
  className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
17170
17292
  style: color ? { color } : void 0,
17171
17293
  children: [
17172
- /* @__PURE__ */ jsx56(RuntimeCapabilityIcon, { option: part.capability, variant: "chip" }),
17173
- /* @__PURE__ */ jsx56("span", { className: "truncate", children: part.capability.label })
17294
+ /* @__PURE__ */ jsx57(RuntimeCapabilityIcon, { option: part.capability, variant: "chip" }),
17295
+ /* @__PURE__ */ jsx57("span", { className: "truncate", children: part.capability.label })
17174
17296
  ]
17175
17297
  },
17176
17298
  part.key
@@ -17430,30 +17552,30 @@ function buildMessageNavigationItems(messages, options) {
17430
17552
  }
17431
17553
 
17432
17554
  // src/hooks/useTaskSummary.ts
17433
- import * as React52 from "react";
17555
+ import * as React53 from "react";
17434
17556
  function useTaskSummary({
17435
17557
  enabled,
17436
17558
  conversationId,
17437
17559
  client,
17438
17560
  live
17439
17561
  }) {
17440
- const [loaded, setLoaded] = React52.useState(null);
17441
- const [historySections, setHistorySections] = React52.useState({});
17442
- const [historySectionsConversationId, setHistorySectionsConversationId] = React52.useState(null);
17443
- const [loadingSections, setLoadingSections] = React52.useState({});
17444
- const [error, setError] = React52.useState(null);
17445
- const [retryVersion, setRetryVersion] = React52.useState(0);
17446
- const requestVersionRef = React52.useRef(0);
17447
- const conversationIdRef = React52.useRef(conversationId);
17448
- const sectionControllersRef = React52.useRef(
17562
+ const [loaded, setLoaded] = React53.useState(null);
17563
+ const [historySections, setHistorySections] = React53.useState({});
17564
+ const [historySectionsConversationId, setHistorySectionsConversationId] = React53.useState(null);
17565
+ const [loadingSections, setLoadingSections] = React53.useState({});
17566
+ const [error, setError] = React53.useState(null);
17567
+ const [retryVersion, setRetryVersion] = React53.useState(0);
17568
+ const requestVersionRef = React53.useRef(0);
17569
+ const conversationIdRef = React53.useRef(conversationId);
17570
+ const sectionControllersRef = React53.useRef(
17449
17571
  /* @__PURE__ */ new Map()
17450
17572
  );
17451
17573
  conversationIdRef.current = conversationId;
17452
- const abortSectionRequests = React52.useCallback(() => {
17574
+ const abortSectionRequests = React53.useCallback(() => {
17453
17575
  sectionControllersRef.current.forEach((controller) => controller.abort());
17454
17576
  sectionControllersRef.current.clear();
17455
17577
  }, []);
17456
- React52.useEffect(() => {
17578
+ React53.useEffect(() => {
17457
17579
  abortSectionRequests();
17458
17580
  setHistorySections({});
17459
17581
  setHistorySectionsConversationId(conversationId);
@@ -17482,11 +17604,11 @@ function useTaskSummary({
17482
17604
  };
17483
17605
  }, [abortSectionRequests, client, conversationId, enabled, retryVersion]);
17484
17606
  const snapshot = loaded?.conversationId === conversationId ? loaded.snapshot : null;
17485
- const activeHistorySections = React52.useMemo(
17607
+ const activeHistorySections = React53.useMemo(
17486
17608
  () => historySectionsConversationId === conversationId ? historySections : {},
17487
17609
  [conversationId, historySections, historySectionsConversationId]
17488
17610
  );
17489
- const loadSection = React52.useCallback(
17611
+ const loadSection = React53.useCallback(
17490
17612
  async (section) => {
17491
17613
  if (!enabled || !conversationId || loadingSections[section]) {
17492
17614
  return;
@@ -17546,7 +17668,7 @@ function useTaskSummary({
17546
17668
  }
17547
17669
 
17548
17670
  // src/components/task-summary/TaskSummary.tsx
17549
- import * as React53 from "react";
17671
+ import * as React54 from "react";
17550
17672
  import {
17551
17673
  Bot as Bot4,
17552
17674
  BookOpen as BookOpen3,
@@ -17555,12 +17677,12 @@ import {
17555
17677
  ExternalLink,
17556
17678
  FileOutput,
17557
17679
  ListChecks as ListChecks3,
17558
- Loader2 as Loader29,
17680
+ Loader2 as Loader210,
17559
17681
  PlayCircle,
17560
- RotateCcw,
17682
+ RotateCcw as RotateCcw2,
17561
17683
  Target as Target2
17562
17684
  } from "lucide-react";
17563
- import { jsx as jsx57, jsxs as jsxs39 } from "react/jsx-runtime";
17685
+ import { jsx as jsx58, jsxs as jsxs40 } from "react/jsx-runtime";
17564
17686
  var PREVIEW_SIZE = 3;
17565
17687
  function TaskSummaryTrigger({
17566
17688
  displayMode = "popover",
@@ -17569,9 +17691,9 @@ function TaskSummaryTrigger({
17569
17691
  ...props
17570
17692
  }) {
17571
17693
  const { t } = useChatkitTranslation();
17572
- const [uncontrolledOpen, setUncontrolledOpen] = React53.useState(false);
17694
+ const [uncontrolledOpen, setUncontrolledOpen] = React54.useState(false);
17573
17695
  const open = controlledOpen ?? uncontrolledOpen;
17574
- const setOpen = React53.useCallback(
17696
+ const setOpen = React54.useCallback(
17575
17697
  (nextOpen) => {
17576
17698
  if (controlledOpen === void 0) {
17577
17699
  setUncontrolledOpen(nextOpen);
@@ -17580,7 +17702,7 @@ function TaskSummaryTrigger({
17580
17702
  },
17581
17703
  [controlledOpen, onOpenChange]
17582
17704
  );
17583
- const triggerButton = /* @__PURE__ */ jsx57(
17705
+ const triggerButton = /* @__PURE__ */ jsx58(
17584
17706
  "button",
17585
17707
  {
17586
17708
  type: "button",
@@ -17588,28 +17710,28 @@ function TaskSummaryTrigger({
17588
17710
  "aria-label": t("taskSummary.open"),
17589
17711
  "aria-expanded": open,
17590
17712
  onClick: displayMode === "docked" ? () => setOpen(!open) : void 0,
17591
- children: /* @__PURE__ */ jsx57(ListChecks3, { size: 16 })
17713
+ children: /* @__PURE__ */ jsx58(ListChecks3, { size: 16 })
17592
17714
  }
17593
17715
  );
17594
17716
  if (displayMode === "docked") {
17595
- return /* @__PURE__ */ jsxs39(Tooltip, { children: [
17596
- /* @__PURE__ */ jsx57(TooltipTrigger, { asChild: true, children: triggerButton }),
17597
- /* @__PURE__ */ jsx57(TooltipContent, { side: "bottom", children: t("taskSummary.open") })
17717
+ return /* @__PURE__ */ jsxs40(Tooltip, { children: [
17718
+ /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: triggerButton }),
17719
+ /* @__PURE__ */ jsx58(TooltipContent, { side: "bottom", children: t("taskSummary.open") })
17598
17720
  ] });
17599
17721
  }
17600
- return /* @__PURE__ */ jsxs39(Popover, { open, onOpenChange: setOpen, children: [
17601
- /* @__PURE__ */ jsxs39(Tooltip, { children: [
17602
- /* @__PURE__ */ jsx57(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx57(PopoverTrigger, { asChild: true, children: triggerButton }) }),
17603
- /* @__PURE__ */ jsx57(TooltipContent, { side: "bottom", children: t("taskSummary.open") })
17722
+ return /* @__PURE__ */ jsxs40(Popover, { open, onOpenChange: setOpen, children: [
17723
+ /* @__PURE__ */ jsxs40(Tooltip, { children: [
17724
+ /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58(PopoverTrigger, { asChild: true, children: triggerButton }) }),
17725
+ /* @__PURE__ */ jsx58(TooltipContent, { side: "bottom", children: t("taskSummary.open") })
17604
17726
  ] }),
17605
- /* @__PURE__ */ jsx57(
17727
+ /* @__PURE__ */ jsx58(
17606
17728
  PopoverContent,
17607
17729
  {
17608
17730
  align: "end",
17609
17731
  sideOffset: 8,
17610
17732
  className: "w-[min(20rem,calc(100vw-2rem))] max-h-[min(44rem,calc(100vh-5rem))] overflow-y-auto rounded-2xl border-border/70 bg-popover p-0 shadow-lg",
17611
17733
  "aria-label": t("taskSummary.title"),
17612
- children: /* @__PURE__ */ jsx57(TaskSummaryContent, { ...props })
17734
+ children: /* @__PURE__ */ jsx58(TaskSummaryContent, { ...props })
17613
17735
  }
17614
17736
  )
17615
17737
  ] });
@@ -17619,7 +17741,7 @@ function TaskSummaryPanel({
17619
17741
  ...props
17620
17742
  }) {
17621
17743
  const { t } = useChatkitTranslation();
17622
- return /* @__PURE__ */ jsx57(
17744
+ return /* @__PURE__ */ jsx58(
17623
17745
  "aside",
17624
17746
  {
17625
17747
  "data-slot": "task-summary-panel",
@@ -17628,7 +17750,7 @@ function TaskSummaryPanel({
17628
17750
  "h-fit max-h-full overflow-y-auto rounded-2xl border border-border/70 bg-popover text-popover-foreground shadow-lg",
17629
17751
  className
17630
17752
  ),
17631
- children: /* @__PURE__ */ jsx57(TaskSummaryContent, { ...props })
17753
+ children: /* @__PURE__ */ jsx58(TaskSummaryContent, { ...props })
17632
17754
  }
17633
17755
  );
17634
17756
  }
@@ -17644,7 +17766,7 @@ function TaskSummaryContent({
17644
17766
  onOpenResource
17645
17767
  }) {
17646
17768
  const { t } = useChatkitTranslation();
17647
- const [expanded, setExpanded] = React53.useState({});
17769
+ const [expanded, setExpanded] = React54.useState({});
17648
17770
  const hasTask = Boolean(
17649
17771
  summary.goal || summary.plan || summary.todos?.items.length
17650
17772
  );
@@ -17676,7 +17798,7 @@ function TaskSummaryContent({
17676
17798
  if (total2 <= PREVIEW_SIZE && !expanded[section]) return null;
17677
17799
  const loading = loadingSections[section];
17678
17800
  const canLoadMore = Boolean(expanded[section]) && loadedSectionCounts[section] < total2;
17679
- return /* @__PURE__ */ jsxs39(
17801
+ return /* @__PURE__ */ jsxs40(
17680
17802
  "button",
17681
17803
  {
17682
17804
  type: "button",
@@ -17684,41 +17806,41 @@ function TaskSummaryContent({
17684
17806
  disabled: loading,
17685
17807
  onClick: () => canLoadMore ? void onLoadSection(section) : toggleSection(section),
17686
17808
  children: [
17687
- loading && /* @__PURE__ */ jsx57(Loader29, { className: "size-3 animate-spin" }),
17688
- !loading && /* @__PURE__ */ jsx57(ListChecks3, { className: "size-3.5" }),
17809
+ loading && /* @__PURE__ */ jsx58(Loader210, { className: "size-3 animate-spin" }),
17810
+ !loading && /* @__PURE__ */ jsx58(ListChecks3, { className: "size-3.5" }),
17689
17811
  canLoadMore ? t("taskSummary.loadMore") : expanded[section] ? t("taskSummary.collapse") : t("taskSummary.viewAll", { count: total2 })
17690
17812
  ]
17691
17813
  }
17692
17814
  );
17693
17815
  };
17694
- return /* @__PURE__ */ jsxs39("div", { className: "divide-y divide-border/70", children: [
17695
- Boolean(historyError) && /* @__PURE__ */ jsxs39("div", { className: "m-3 flex items-start justify-between gap-3 rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive", children: [
17696
- /* @__PURE__ */ jsx57("span", { children: t("taskSummary.historyError") }),
17697
- /* @__PURE__ */ jsxs39(
17816
+ return /* @__PURE__ */ jsxs40("div", { className: "divide-y divide-border/70", children: [
17817
+ Boolean(historyError) && /* @__PURE__ */ jsxs40("div", { className: "m-3 flex items-start justify-between gap-3 rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive", children: [
17818
+ /* @__PURE__ */ jsx58("span", { children: t("taskSummary.historyError") }),
17819
+ /* @__PURE__ */ jsxs40(
17698
17820
  "button",
17699
17821
  {
17700
17822
  type: "button",
17701
17823
  className: "inline-flex shrink-0 items-center gap-1 font-medium hover:underline",
17702
17824
  onClick: onRetryHistory,
17703
17825
  children: [
17704
- /* @__PURE__ */ jsx57(RotateCcw, { className: "size-3" }),
17826
+ /* @__PURE__ */ jsx58(RotateCcw2, { className: "size-3" }),
17705
17827
  t("taskSummary.retry")
17706
17828
  ]
17707
17829
  }
17708
17830
  )
17709
17831
  ] }),
17710
- /* @__PURE__ */ jsxs39(
17832
+ /* @__PURE__ */ jsxs40(
17711
17833
  SummarySection,
17712
17834
  {
17713
17835
  title: t("taskSummary.sections.outputs"),
17714
17836
  children: [
17715
- summary.outputs.length === 0 ? /* @__PURE__ */ jsx57(SummaryPrompt, { onClick: onFocusComposer, children: t("taskSummary.createOutput") }) : sectionItems("outputs", summary.outputs).map((item) => /* @__PURE__ */ jsx57(
17837
+ summary.outputs.length === 0 ? /* @__PURE__ */ jsx58(SummaryPrompt, { onClick: onFocusComposer, children: t("taskSummary.createOutput") }) : sectionItems("outputs", summary.outputs).map((item) => /* @__PURE__ */ jsx58(
17716
17838
  SummaryButton,
17717
17839
  {
17718
17840
  title: item.title,
17719
17841
  description: item.description ?? item.status,
17720
- leading: /* @__PURE__ */ jsx57(FileOutput, { className: "size-4" }),
17721
- trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ jsx57(ExternalLink, { className: "size-3.5" }) : void 0,
17842
+ leading: /* @__PURE__ */ jsx58(FileOutput, { className: "size-4" }),
17843
+ trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ jsx58(ExternalLink, { className: "size-3.5" }) : void 0,
17722
17844
  onClick: () => openSummaryItem(item.resource, item.messageId, item.title)
17723
17845
  },
17724
17846
  item.id
@@ -17727,18 +17849,18 @@ function TaskSummaryContent({
17727
17849
  ]
17728
17850
  }
17729
17851
  ),
17730
- /* @__PURE__ */ jsxs39(
17852
+ /* @__PURE__ */ jsxs40(
17731
17853
  SummarySection,
17732
17854
  {
17733
17855
  title: t("taskSummary.sections.sources"),
17734
17856
  children: [
17735
- sectionItems("sources", summary.sources).map((item) => /* @__PURE__ */ jsx57(
17857
+ sectionItems("sources", summary.sources).map((item) => /* @__PURE__ */ jsx58(
17736
17858
  SummaryButton,
17737
17859
  {
17738
17860
  title: item.title,
17739
17861
  description: item.description,
17740
- leading: /* @__PURE__ */ jsx57(BookOpen3, { className: "size-4" }),
17741
- trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ jsx57(ExternalLink, { className: "size-3.5" }) : void 0,
17862
+ leading: /* @__PURE__ */ jsx58(BookOpen3, { className: "size-4" }),
17863
+ trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ jsx58(ExternalLink, { className: "size-3.5" }) : void 0,
17742
17864
  onClick: () => openSummaryItem(item.resource, item.messageId, item.title)
17743
17865
  },
17744
17866
  item.id
@@ -17747,67 +17869,67 @@ function TaskSummaryContent({
17747
17869
  ]
17748
17870
  }
17749
17871
  ),
17750
- hasTask && /* @__PURE__ */ jsxs39(SummarySection, { title: t("taskSummary.sections.task"), children: [
17751
- summary.goal && /* @__PURE__ */ jsx57(
17872
+ hasTask && /* @__PURE__ */ jsxs40(SummarySection, { title: t("taskSummary.sections.task"), children: [
17873
+ summary.goal && /* @__PURE__ */ jsx58(
17752
17874
  SummaryButton,
17753
17875
  {
17754
17876
  title: summary.goal.objective,
17755
17877
  description: summary.goal.status,
17756
- leading: /* @__PURE__ */ jsx57(Target2, { className: "size-4" }),
17878
+ leading: /* @__PURE__ */ jsx58(Target2, { className: "size-4" }),
17757
17879
  onClick: onFocusComposer
17758
17880
  }
17759
17881
  ),
17760
- summary.plan && /* @__PURE__ */ jsx57(
17882
+ summary.plan && /* @__PURE__ */ jsx58(
17761
17883
  SummaryButton,
17762
17884
  {
17763
17885
  title: summary.plan.title,
17764
17886
  description: summary.plan.excerpt,
17765
- leading: /* @__PURE__ */ jsx57(ListChecks3, { className: "size-4" }),
17887
+ leading: /* @__PURE__ */ jsx58(ListChecks3, { className: "size-4" }),
17766
17888
  onClick: () => summary.plan?.messageId ? onNavigateMessage(summary.plan.messageId) : onFocusComposer()
17767
17889
  }
17768
17890
  ),
17769
- (summary.todos?.items ?? []).slice(0, PREVIEW_SIZE).map((todo) => /* @__PURE__ */ jsx57(
17891
+ (summary.todos?.items ?? []).slice(0, PREVIEW_SIZE).map((todo) => /* @__PURE__ */ jsx58(
17770
17892
  SummaryButton,
17771
17893
  {
17772
17894
  title: todo.content,
17773
17895
  description: t(`taskSummary.status.${todo.status}`),
17774
- leading: todo.status === "completed" ? /* @__PURE__ */ jsx57(CheckCircle25, { className: "size-4 text-muted-foreground" }) : /* @__PURE__ */ jsx57(CircleEllipsis, { className: "size-4 text-muted-foreground" }),
17896
+ leading: todo.status === "completed" ? /* @__PURE__ */ jsx58(CheckCircle25, { className: "size-4 text-muted-foreground" }) : /* @__PURE__ */ jsx58(CircleEllipsis, { className: "size-4 text-muted-foreground" }),
17775
17897
  onClick: () => summary.todos?.messageId ? onNavigateMessage(summary.todos.messageId) : onFocusComposer()
17776
17898
  },
17777
17899
  todo.id
17778
17900
  ))
17779
17901
  ] }),
17780
- summary.running.length > 0 && /* @__PURE__ */ jsx57(SummarySection, { title: t("taskSummary.sections.running"), children: summary.running.slice(0, PREVIEW_SIZE).map((item) => /* @__PURE__ */ jsx57(
17902
+ summary.running.length > 0 && /* @__PURE__ */ jsx58(SummarySection, { title: t("taskSummary.sections.running"), children: summary.running.slice(0, PREVIEW_SIZE).map((item) => /* @__PURE__ */ jsx58(
17781
17903
  SummaryButton,
17782
17904
  {
17783
17905
  title: item.title,
17784
17906
  description: item.description ?? item.status,
17785
- leading: /* @__PURE__ */ jsx57(PlayCircle, { className: "size-4" }),
17786
- trailing: item.resource ? /* @__PURE__ */ jsx57(ExternalLink, { className: "size-3.5" }) : void 0,
17907
+ leading: /* @__PURE__ */ jsx58(PlayCircle, { className: "size-4" }),
17908
+ trailing: item.resource ? /* @__PURE__ */ jsx58(ExternalLink, { className: "size-3.5" }) : void 0,
17787
17909
  onClick: () => item.resource && onOpenResource(item.resource, void 0, item.title)
17788
17910
  },
17789
17911
  item.id
17790
17912
  )) }),
17791
- summary.agents.length > 0 && /* @__PURE__ */ jsxs39(SummarySection, { title: t("taskSummary.sections.agents"), children: [
17792
- sectionItems("agents", summary.agents).map((item) => /* @__PURE__ */ jsx57(
17913
+ summary.agents.length > 0 && /* @__PURE__ */ jsxs40(SummarySection, { title: t("taskSummary.sections.agents"), children: [
17914
+ sectionItems("agents", summary.agents).map((item) => /* @__PURE__ */ jsx58(
17793
17915
  SummaryButton,
17794
17916
  {
17795
17917
  title: item.title,
17796
17918
  description: [item.status, formatElapsed(item.elapsedTime)].filter(Boolean).join(" \xB7 "),
17797
- leading: /* @__PURE__ */ jsx57(Bot4, { className: "size-4" }),
17919
+ leading: /* @__PURE__ */ jsx58(Bot4, { className: "size-4" }),
17798
17920
  onClick: () => item.messageId ? onNavigateMessage(item.messageId) : onFocusComposer()
17799
17921
  },
17800
17922
  item.id
17801
17923
  )),
17802
17924
  sectionAction("agents", summary.totals.agents)
17803
17925
  ] }),
17804
- summary.pending.length > 0 && /* @__PURE__ */ jsxs39(SummarySection, { title: t("taskSummary.sections.pending"), children: [
17805
- sectionItems("pending", summary.pending).map((item) => /* @__PURE__ */ jsx57(
17926
+ summary.pending.length > 0 && /* @__PURE__ */ jsxs40(SummarySection, { title: t("taskSummary.sections.pending"), children: [
17927
+ sectionItems("pending", summary.pending).map((item) => /* @__PURE__ */ jsx58(
17806
17928
  SummaryButton,
17807
17929
  {
17808
17930
  title: item.title,
17809
17931
  description: item.description,
17810
- leading: /* @__PURE__ */ jsx57(CircleEllipsis, { className: "size-4" }),
17932
+ leading: /* @__PURE__ */ jsx58(CircleEllipsis, { className: "size-4" }),
17811
17933
  onClick: () => item.messageId ? onNavigateMessage(item.messageId) : onFocusComposer()
17812
17934
  },
17813
17935
  item.id
@@ -17820,16 +17942,16 @@ function SummarySection({
17820
17942
  title,
17821
17943
  children
17822
17944
  }) {
17823
- return /* @__PURE__ */ jsxs39("section", { "aria-label": title, className: "px-4 py-3", children: [
17824
- /* @__PURE__ */ jsx57("div", { className: "flex min-h-7 items-center justify-between gap-3", children: /* @__PURE__ */ jsx57("h3", { className: "text-sm font-medium text-muted-foreground", children: title }) }),
17825
- /* @__PURE__ */ jsx57("div", { className: "mt-1 space-y-0.5", children })
17945
+ return /* @__PURE__ */ jsxs40("section", { "aria-label": title, className: "px-4 py-3", children: [
17946
+ /* @__PURE__ */ jsx58("div", { className: "flex min-h-7 items-center justify-between gap-3", children: /* @__PURE__ */ jsx58("h3", { className: "text-sm font-medium text-muted-foreground", children: title }) }),
17947
+ /* @__PURE__ */ jsx58("div", { className: "mt-1 space-y-0.5", children })
17826
17948
  ] });
17827
17949
  }
17828
17950
  function SummaryPrompt({
17829
17951
  children,
17830
17952
  onClick
17831
17953
  }) {
17832
- return /* @__PURE__ */ jsx57(
17954
+ return /* @__PURE__ */ jsx58(
17833
17955
  "button",
17834
17956
  {
17835
17957
  type: "button",
@@ -17846,7 +17968,7 @@ function SummaryButton({
17846
17968
  trailing,
17847
17969
  onClick
17848
17970
  }) {
17849
- return /* @__PURE__ */ jsxs39(
17971
+ return /* @__PURE__ */ jsxs40(
17850
17972
  "button",
17851
17973
  {
17852
17974
  type: "button",
@@ -17858,12 +17980,12 @@ function SummaryButton({
17858
17980
  !onClick && "cursor-default"
17859
17981
  ),
17860
17982
  children: [
17861
- leading && /* @__PURE__ */ jsx57("span", { className: "mt-0.5 shrink-0 text-muted-foreground", children: leading }),
17862
- /* @__PURE__ */ jsxs39("span", { className: "min-w-0 flex-1", children: [
17863
- /* @__PURE__ */ jsx57("span", { className: "block truncate text-sm font-medium leading-5 text-foreground", children: title }),
17864
- description && /* @__PURE__ */ jsx57("span", { className: "mt-0.5 block line-clamp-2 text-xs text-muted-foreground", children: description })
17983
+ leading && /* @__PURE__ */ jsx58("span", { className: "mt-0.5 shrink-0 text-muted-foreground", children: leading }),
17984
+ /* @__PURE__ */ jsxs40("span", { className: "min-w-0 flex-1", children: [
17985
+ /* @__PURE__ */ jsx58("span", { className: "block truncate text-sm font-medium leading-5 text-foreground", children: title }),
17986
+ description && /* @__PURE__ */ jsx58("span", { className: "mt-0.5 block line-clamp-2 text-xs text-muted-foreground", children: description })
17865
17987
  ] }),
17866
- trailing && /* @__PURE__ */ jsx57("span", { className: "mt-0.5 text-muted-foreground", children: trailing })
17988
+ trailing && /* @__PURE__ */ jsx58("span", { className: "mt-0.5 text-muted-foreground", children: trailing })
17867
17989
  ]
17868
17990
  }
17869
17991
  );
@@ -17875,7 +17997,7 @@ function formatElapsed(value) {
17875
17997
  }
17876
17998
 
17877
17999
  // src/components/chat.tsx
17878
- import { Fragment as Fragment9, jsx as jsx58, jsxs as jsxs40 } from "react/jsx-runtime";
18000
+ import { Fragment as Fragment10, jsx as jsx59, jsxs as jsxs41 } from "react/jsx-runtime";
17879
18001
  var defaultApiUrl2 = import.meta.env.VITE_XPERTAI_API_URL;
17880
18002
  var COMPOSER_INPUT_MAX_HEIGHT = 128;
17881
18003
  var LONG_TEXT_REFERENCE_THRESHOLD = 5e3;
@@ -17982,7 +18104,7 @@ function ReferenceChip({
17982
18104
  const metaLine = getReferenceMetaLine(reference);
17983
18105
  const isComposer = variant === "composer";
17984
18106
  const Icon = reference.type === "quote" ? Quote : reference.type === "image" ? ImageIcon : FileText5;
17985
- return /* @__PURE__ */ jsxs40(
18107
+ return /* @__PURE__ */ jsxs41(
17986
18108
  "div",
17987
18109
  {
17988
18110
  className: cn(
@@ -17991,7 +18113,7 @@ function ReferenceChip({
17991
18113
  ),
17992
18114
  title: getReferenceTitle(reference),
17993
18115
  children: [
17994
- /* @__PURE__ */ jsx58(
18116
+ /* @__PURE__ */ jsx59(
17995
18117
  Icon,
17996
18118
  {
17997
18119
  size: isComposer ? 14 : 12,
@@ -18001,8 +18123,8 @@ function ReferenceChip({
18001
18123
  )
18002
18124
  }
18003
18125
  ),
18004
- /* @__PURE__ */ jsxs40("div", { className: "min-w-0 flex-1", children: [
18005
- /* @__PURE__ */ jsx58(
18126
+ /* @__PURE__ */ jsxs41("div", { className: "min-w-0 flex-1", children: [
18127
+ /* @__PURE__ */ jsx59(
18006
18128
  "div",
18007
18129
  {
18008
18130
  className: cn(
@@ -18012,7 +18134,7 @@ function ReferenceChip({
18012
18134
  children: getReferenceLabel(reference)
18013
18135
  }
18014
18136
  ),
18015
- metaLine && /* @__PURE__ */ jsx58(
18137
+ metaLine && /* @__PURE__ */ jsx59(
18016
18138
  "div",
18017
18139
  {
18018
18140
  className: cn(
@@ -18023,7 +18145,7 @@ function ReferenceChip({
18023
18145
  }
18024
18146
  )
18025
18147
  ] }),
18026
- onRemove && removeLabel && /* @__PURE__ */ jsx58(
18148
+ onRemove && removeLabel && /* @__PURE__ */ jsx59(
18027
18149
  "button",
18028
18150
  {
18029
18151
  type: "button",
@@ -18034,7 +18156,7 @@ function ReferenceChip({
18034
18156
  ),
18035
18157
  title: removeLabel,
18036
18158
  "aria-label": removeLabel,
18037
- children: /* @__PURE__ */ jsx58(X8, { size: 12 })
18159
+ children: /* @__PURE__ */ jsx59(X9, { size: 12 })
18038
18160
  }
18039
18161
  )
18040
18162
  ]
@@ -18065,7 +18187,7 @@ function Chat({
18065
18187
  clientSecret: effectiveClientSecret
18066
18188
  });
18067
18189
  const missingConfig = Boolean(missingConfigKind);
18068
- const missingConfigShortMessage = React54.useMemo(() => {
18190
+ const missingConfigShortMessage = React55.useMemo(() => {
18069
18191
  switch (missingConfigKind) {
18070
18192
  case "apiUrl":
18071
18193
  return t("chat.missingApiUrlShort");
@@ -18077,7 +18199,7 @@ function Chat({
18077
18199
  return t("chat.missingConfigShort");
18078
18200
  }
18079
18201
  }, [missingConfigKind, t]);
18080
- const missingConfigDetailMessage = React54.useMemo(() => {
18202
+ const missingConfigDetailMessage = React55.useMemo(() => {
18081
18203
  switch (missingConfigKind) {
18082
18204
  case "apiUrl":
18083
18205
  return t("chat.missingApiUrlDetail");
@@ -18089,26 +18211,26 @@ function Chat({
18089
18211
  return t("chat.missingConfigDetail");
18090
18212
  }
18091
18213
  }, [missingConfigKind, t]);
18092
- const [isHistoryLoading, setIsHistoryLoading] = React54.useState(false);
18093
- const [historyError, setHistoryError] = React54.useState(null);
18094
- const [assistantName, setAssistantName] = React54.useState(null);
18095
- const [assistantAvatar, setAssistantAvatar] = React54.useState(null);
18096
- const [threadGoal, setThreadGoal] = React54.useState(null);
18097
- const [goalError, setGoalError] = React54.useState(null);
18098
- const [isGoalLoading, setIsGoalLoading] = React54.useState(false);
18099
- const [isGoalPanelOpen, setIsGoalPanelOpen] = React54.useState(false);
18100
- const [isGoalObjectiveExpanded, setIsGoalObjectiveExpanded] = React54.useState(false);
18101
- const [goalElapsedStartedAt, setGoalElapsedStartedAt] = React54.useState(null);
18214
+ const [isHistoryLoading, setIsHistoryLoading] = React55.useState(false);
18215
+ const [historyError, setHistoryError] = React55.useState(null);
18216
+ const [assistantName, setAssistantName] = React55.useState(null);
18217
+ const [assistantAvatar, setAssistantAvatar] = React55.useState(null);
18218
+ const [threadGoal, setThreadGoal] = React55.useState(null);
18219
+ const [goalError, setGoalError] = React55.useState(null);
18220
+ const [isGoalLoading, setIsGoalLoading] = React55.useState(false);
18221
+ const [isGoalPanelOpen, setIsGoalPanelOpen] = React55.useState(false);
18222
+ const [isGoalObjectiveExpanded, setIsGoalObjectiveExpanded] = React55.useState(false);
18223
+ const [goalElapsedStartedAt, setGoalElapsedStartedAt] = React55.useState(null);
18102
18224
  const LOADING_DOTS_MIN_DURATION = 800;
18103
18225
  const STREAMING_STATUS_REFRESH_MS = 250;
18104
- const [showLoadingDots, setShowLoadingDots] = React54.useState(false);
18105
- const [streamingNow, setStreamingNow] = React54.useState(() => Date.now());
18106
- const loadingStartTimeRef = React54.useRef(null);
18107
- const lastStreamOutputAtRef = React54.useRef(null);
18108
- React54.useEffect(() => {
18226
+ const [showLoadingDots, setShowLoadingDots] = React55.useState(false);
18227
+ const [streamingNow, setStreamingNow] = React55.useState(() => Date.now());
18228
+ const loadingStartTimeRef = React55.useRef(null);
18229
+ const lastStreamOutputAtRef = React55.useRef(null);
18230
+ React55.useEffect(() => {
18109
18231
  setStream(stream);
18110
18232
  }, [setStream, stream]);
18111
- React54.useEffect(() => {
18233
+ React55.useEffect(() => {
18112
18234
  if (stream.isLoading) {
18113
18235
  if (!loadingStartTimeRef.current) {
18114
18236
  loadingStartTimeRef.current = Date.now();
@@ -18131,7 +18253,7 @@ function Chat({
18131
18253
  }
18132
18254
  }
18133
18255
  }, [stream.isLoading]);
18134
- React54.useEffect(() => {
18256
+ React55.useEffect(() => {
18135
18257
  if (!stream.isLoading) {
18136
18258
  lastStreamOutputAtRef.current = null;
18137
18259
  setStreamingNow(Date.now());
@@ -18141,7 +18263,7 @@ function Chat({
18141
18263
  lastStreamOutputAtRef.current = now;
18142
18264
  setStreamingNow(now);
18143
18265
  }, [stream.messages, stream.isLoading]);
18144
- React54.useEffect(() => {
18266
+ React55.useEffect(() => {
18145
18267
  if (!stream.isLoading) {
18146
18268
  return;
18147
18269
  }
@@ -18150,7 +18272,7 @@ function Chat({
18150
18272
  }, STREAMING_STATUS_REFRESH_MS);
18151
18273
  return () => window.clearInterval(timer);
18152
18274
  }, [stream.isLoading]);
18153
- React54.useEffect(() => {
18275
+ React55.useEffect(() => {
18154
18276
  if (threadGoal?.status === "active" && stream.isLoading) {
18155
18277
  setGoalElapsedStartedAt(Date.now());
18156
18278
  return;
@@ -18162,55 +18284,55 @@ function Chat({
18162
18284
  threadGoal?.id,
18163
18285
  threadGoal?.status
18164
18286
  ]);
18165
- React54.useEffect(() => {
18287
+ React55.useEffect(() => {
18166
18288
  setIsGoalObjectiveExpanded(false);
18167
18289
  }, [threadGoal?.id]);
18168
- const [composerParts, setComposerParts] = React54.useState([]);
18169
- const [renderedComposerParts, setRenderedComposerParts] = React54.useState([]);
18170
- const [composerDomVersion, setComposerDomVersion] = React54.useState(0);
18171
- const [selectedTool, setSelectedTool] = React54.useState(
18290
+ const [composerParts, setComposerParts] = React55.useState([]);
18291
+ const [renderedComposerParts, setRenderedComposerParts] = React55.useState([]);
18292
+ const [composerDomVersion, setComposerDomVersion] = React55.useState(0);
18293
+ const [selectedTool, setSelectedTool] = React55.useState(
18172
18294
  null
18173
18295
  );
18174
- const [planModeEnabled, setPlanModeEnabled] = React54.useState(false);
18175
- const [petSettingsOpen, setPetSettingsOpen] = React54.useState(false);
18176
- const [petLocalSettings, setPetLocalSettings] = React54.useState(() => readPetLocalSettings());
18177
- const [attachmentState, setAttachmentState] = React54.useState({
18296
+ const [planModeEnabled, setPlanModeEnabled] = React55.useState(false);
18297
+ const [petSettingsOpen, setPetSettingsOpen] = React55.useState(false);
18298
+ const [petLocalSettings, setPetLocalSettings] = React55.useState(() => readPetLocalSettings());
18299
+ const [attachmentState, setAttachmentState] = React55.useState({
18178
18300
  uploadedFiles: [],
18179
18301
  hasUploadingFiles: false,
18180
18302
  hasParsingFiles: false
18181
18303
  });
18182
- const [references, setReferences] = React54.useState([]);
18183
- const [isUploadingReferenceImages, setIsUploadingReferenceImages] = React54.useState(false);
18184
- const [quoteSelection, setQuoteSelection] = React54.useState(null);
18185
- const [isAtBottom, setIsAtBottom] = React54.useState(true);
18186
- const [hasUpdatesBelow, setHasUpdatesBelow] = React54.useState(false);
18304
+ const [references, setReferences] = React55.useState([]);
18305
+ const [isUploadingReferenceImages, setIsUploadingReferenceImages] = React55.useState(false);
18306
+ const [quoteSelection, setQuoteSelection] = React55.useState(null);
18307
+ const [isAtBottom, setIsAtBottom] = React55.useState(true);
18308
+ const [hasUpdatesBelow, setHasUpdatesBelow] = React55.useState(false);
18187
18309
  const {
18188
18310
  threads,
18189
18311
  deleteThread,
18190
18312
  refreshThreads,
18191
18313
  isLoading: isThreadsLoading
18192
18314
  } = useThreads();
18193
- const viewportRef = React54.useRef(null);
18194
- const chatColumnRef = React54.useRef(null);
18195
- const messageNavigationAnchorsRef = React54.useRef(
18315
+ const viewportRef = React55.useRef(null);
18316
+ const chatColumnRef = React55.useRef(null);
18317
+ const messageNavigationAnchorsRef = React55.useRef(
18196
18318
  /* @__PURE__ */ new Map()
18197
18319
  );
18198
- const attachmentsRef = React54.useRef(null);
18199
- const composerInputRef = React54.useRef(null);
18200
- const slashPaletteRef = React54.useRef(null);
18201
- const slashPaletteOptionRefs = React54.useRef(
18320
+ const attachmentsRef = React55.useRef(null);
18321
+ const composerInputRef = React55.useRef(null);
18322
+ const slashPaletteRef = React55.useRef(null);
18323
+ const slashPaletteOptionRefs = React55.useRef(
18202
18324
  []
18203
18325
  );
18204
- const composerPartsRef = React54.useRef([]);
18205
- const pendingComposerCaretOffsetRef = React54.useRef(null);
18206
- const shouldAutoScrollRef = React54.useRef(true);
18207
- const forceFollowRef = React54.useRef(false);
18208
- const previousMessageCountRef = React54.useRef(0);
18209
- const previousScrollTopRef = React54.useRef(0);
18210
- const isPrependingHistoryMessagesRef = React54.useRef(false);
18211
- const autoScrollFrameRef = React54.useRef(null);
18212
- const isPointerDownRef = React54.useRef(false);
18213
- const lastTouchYRef = React54.useRef(null);
18326
+ const composerPartsRef = React55.useRef([]);
18327
+ const pendingComposerCaretOffsetRef = React55.useRef(null);
18328
+ const shouldAutoScrollRef = React55.useRef(true);
18329
+ const forceFollowRef = React55.useRef(false);
18330
+ const previousMessageCountRef = React55.useRef(0);
18331
+ const previousScrollTopRef = React55.useRef(0);
18332
+ const isPrependingHistoryMessagesRef = React55.useRef(false);
18333
+ const autoScrollFrameRef = React55.useRef(null);
18334
+ const isPointerDownRef = React55.useRef(false);
18335
+ const lastTouchYRef = React55.useRef(null);
18214
18336
  const {
18215
18337
  runtimeCapabilities,
18216
18338
  runtimeCapabilitiesReady,
@@ -18239,24 +18361,24 @@ function Chat({
18239
18361
  const resolvedPlaceholder = placeholder ?? t("chat.placeholder");
18240
18362
  const assistantTitle = assistantName || resolvedTitle;
18241
18363
  const petRequired = options?.displayMode === "pet";
18242
- const basePetSettings = React54.useMemo(
18364
+ const basePetSettings = React55.useMemo(
18243
18365
  () => derivePetLocalSettings(options?.pet),
18244
18366
  [options?.pet]
18245
18367
  );
18246
- const displayedPetSettings = React54.useMemo(
18368
+ const displayedPetSettings = React55.useMemo(
18247
18369
  () => ({
18248
18370
  ...petLocalSettings ?? basePetSettings,
18249
18371
  ...petRequired ? { enabled: true } : {}
18250
18372
  }),
18251
18373
  [basePetSettings, petLocalSettings, petRequired]
18252
18374
  );
18253
- const effectivePet = React54.useMemo(() => {
18375
+ const effectivePet = React55.useMemo(() => {
18254
18376
  if (petRequired || petLocalSettings) {
18255
18377
  return buildPetOptionsFromLocalSettings(displayedPetSettings);
18256
18378
  }
18257
18379
  return options?.pet ?? null;
18258
18380
  }, [displayedPetSettings, options?.pet, petLocalSettings, petRequired]);
18259
- const savePetLocalSettings = React54.useCallback(
18381
+ const savePetLocalSettings = React55.useCallback(
18260
18382
  (settings) => {
18261
18383
  const nextSettings = petRequired ? { ...settings, enabled: true } : settings;
18262
18384
  setPetLocalSettings(nextSettings);
@@ -18264,7 +18386,7 @@ function Chat({
18264
18386
  },
18265
18387
  [petRequired]
18266
18388
  );
18267
- const handlePetCommand = React54.useCallback(
18389
+ const handlePetCommand = React55.useCallback(
18268
18390
  (mode) => {
18269
18391
  if (mode === "settings") {
18270
18392
  setPetSettingsOpen(true);
@@ -18286,11 +18408,11 @@ function Chat({
18286
18408
  [displayedPetSettings, effectivePet, petRequired, savePetLocalSettings]
18287
18409
  );
18288
18410
  const inputPlaceholder = selectedTool?.placeholderOverride ?? composer?.placeholder ?? resolvedPlaceholder;
18289
- const messages = React54.useMemo(
18411
+ const messages = React55.useMemo(
18290
18412
  () => stream.messages ?? [],
18291
18413
  [stream.messages]
18292
18414
  );
18293
- const messageNavigationLabels = React54.useMemo(
18415
+ const messageNavigationLabels = React55.useMemo(
18294
18416
  () => ({
18295
18417
  user: t("chat.youLabel"),
18296
18418
  assistant: assistantTitle,
@@ -18309,7 +18431,7 @@ function Chat({
18309
18431
  }),
18310
18432
  [assistantTitle, t]
18311
18433
  );
18312
- const messageNavigationItems = React54.useMemo(
18434
+ const messageNavigationItems = React55.useMemo(
18313
18435
  () => messageNavigationEnabled ? buildMessageNavigationItems(
18314
18436
  messages,
18315
18437
  {
@@ -18332,7 +18454,7 @@ function Chat({
18332
18454
  historyMessagePagination?.isLoadingMore
18333
18455
  );
18334
18456
  const canLoadMoreMessages = Boolean(historyMessagePagination?.hasMore);
18335
- const draft = React54.useMemo(
18457
+ const draft = React55.useMemo(
18336
18458
  () => getComposerPlainText(composerParts),
18337
18459
  [composerParts]
18338
18460
  );
@@ -18346,7 +18468,7 @@ function Chat({
18346
18468
  isEmpty: isComposerInputEmpty,
18347
18469
  isStacked: isComposerStacked
18348
18470
  });
18349
- const pendingFollowUps = React54.useMemo(
18471
+ const pendingFollowUps = React55.useMemo(
18350
18472
  () => sortVisiblePendingFollowUps(stream.pendingFollowUps ?? []),
18351
18473
  [stream.pendingFollowUps]
18352
18474
  );
@@ -18355,7 +18477,7 @@ function Chat({
18355
18477
  const hasPendingHITLRequest = Boolean(stream.pendingHITLRequest);
18356
18478
  const hasPendingInteractiveRequest = hasPendingRequestUserInput || hasPendingHITLRequest;
18357
18479
  const hasPendingTodos = Boolean(stream.todos?.items.length);
18358
- const goalAdapter = React54.useMemo(() => {
18480
+ const goalAdapter = React55.useMemo(() => {
18359
18481
  if (isGoalAdapter(options?.goal)) {
18360
18482
  return options.goal;
18361
18483
  }
@@ -18368,10 +18490,10 @@ function Chat({
18368
18490
  "goal"
18369
18491
  );
18370
18492
  const showGoalStatus = goalCommandAvailable && !hasCompletedGoal && (Boolean(goalError) || threadGoal?.status === "active" && stream.isLoading);
18371
- const clearQuoteSelection = React54.useCallback(() => {
18493
+ const clearQuoteSelection = React55.useCallback(() => {
18372
18494
  setQuoteSelection(null);
18373
18495
  }, []);
18374
- const commitComposerParts = React54.useCallback(
18496
+ const commitComposerParts = React55.useCallback(
18375
18497
  (nextParts, options2) => {
18376
18498
  const normalized = normalizeComposerParts(nextParts);
18377
18499
  const previous = composerPartsRef.current;
@@ -18401,7 +18523,7 @@ function Chat({
18401
18523
  },
18402
18524
  [setRunRuntimeCapabilities]
18403
18525
  );
18404
- const setComposerText = React54.useCallback(
18526
+ const setComposerText = React55.useCallback(
18405
18527
  (text, caretOffset = text.length) => {
18406
18528
  commitComposerParts(createComposerTextParts(text), {
18407
18529
  caretOffset,
@@ -18411,7 +18533,7 @@ function Chat({
18411
18533
  },
18412
18534
  [commitComposerParts]
18413
18535
  );
18414
- const focusComposerAt = React54.useCallback((position) => {
18536
+ const focusComposerAt = React55.useCallback((position) => {
18415
18537
  const nextPosition = position ?? getComposerEditingLength(composerPartsRef.current);
18416
18538
  pendingComposerCaretOffsetRef.current = nextPosition;
18417
18539
  requestAnimationFrame(() => {
@@ -18440,7 +18562,7 @@ function Chat({
18440
18562
  focusComposerAt
18441
18563
  });
18442
18564
  const parentMessenger = useParentMessenger({
18443
- onSetComposerValue: React54.useCallback(
18565
+ onSetComposerValue: React55.useCallback(
18444
18566
  (payload) => {
18445
18567
  if (!payload) {
18446
18568
  return;
@@ -18468,16 +18590,16 @@ function Chat({
18468
18590
  },
18469
18591
  [applyComposerValueRuntimeCapabilities, composer?.tools, setComposerText]
18470
18592
  ),
18471
- onSetRuntimeCapabilities: React54.useCallback(
18593
+ onSetRuntimeCapabilities: React55.useCallback(
18472
18594
  (selection) => {
18473
18595
  applyExternalRuntimeCapabilities(selection);
18474
18596
  },
18475
18597
  [applyExternalRuntimeCapabilities]
18476
18598
  ),
18477
- onFocusComposer: React54.useCallback(() => {
18599
+ onFocusComposer: React55.useCallback(() => {
18478
18600
  composerInputRef.current?.focus();
18479
18601
  }, []),
18480
- onSetPetEnabled: React54.useCallback(
18602
+ onSetPetEnabled: React55.useCallback(
18481
18603
  (enabled) => {
18482
18604
  if (petRequired) {
18483
18605
  return;
@@ -18491,10 +18613,10 @@ function Chat({
18491
18613
  )
18492
18614
  });
18493
18615
  const canMinimizeToPet = parentMessenger?.isParentAvailable === true && isPetEnabled(effectivePet);
18494
- const handleMinimizeToPet = React54.useCallback(() => {
18616
+ const handleMinimizeToPet = React55.useCallback(() => {
18495
18617
  parentMessenger?.sendEvent("chat_minimize_change", { minimized: true });
18496
18618
  }, [parentMessenger]);
18497
- const syncQuoteSelection = React54.useCallback(() => {
18619
+ const syncQuoteSelection = React55.useCallback(() => {
18498
18620
  if (typeof window === "undefined") {
18499
18621
  clearQuoteSelection();
18500
18622
  return;
@@ -18539,23 +18661,23 @@ function Chat({
18539
18661
  left
18540
18662
  });
18541
18663
  }, [clearQuoteSelection]);
18542
- const cancelPendingAutoScroll = React54.useCallback(() => {
18664
+ const cancelPendingAutoScroll = React55.useCallback(() => {
18543
18665
  if (autoScrollFrameRef.current !== null) {
18544
18666
  cancelAnimationFrame(autoScrollFrameRef.current);
18545
18667
  autoScrollFrameRef.current = null;
18546
18668
  }
18547
18669
  }, []);
18548
- const disableAutoFollow = React54.useCallback(() => {
18670
+ const disableAutoFollow = React55.useCallback(() => {
18549
18671
  forceFollowRef.current = false;
18550
18672
  shouldAutoScrollRef.current = false;
18551
18673
  cancelPendingAutoScroll();
18552
18674
  }, [cancelPendingAutoScroll]);
18553
- const enableAutoFollow = React54.useCallback(() => {
18675
+ const enableAutoFollow = React55.useCallback(() => {
18554
18676
  forceFollowRef.current = true;
18555
18677
  shouldAutoScrollRef.current = true;
18556
18678
  setHasUpdatesBelow(false);
18557
18679
  }, []);
18558
- const scrollToBottom = React54.useCallback(
18680
+ const scrollToBottom = React55.useCallback(
18559
18681
  (smooth = false, force = false) => {
18560
18682
  if (force) {
18561
18683
  enableAutoFollow();
@@ -18582,7 +18704,7 @@ function Chat({
18582
18704
  },
18583
18705
  [cancelPendingAutoScroll, enableAutoFollow]
18584
18706
  );
18585
- const setMessageNavigationAnchor = React54.useCallback(
18707
+ const setMessageNavigationAnchor = React55.useCallback(
18586
18708
  (id, node) => {
18587
18709
  if (node) {
18588
18710
  messageNavigationAnchorsRef.current.set(id, node);
@@ -18592,22 +18714,22 @@ function Chat({
18592
18714
  },
18593
18715
  []
18594
18716
  );
18595
- const getMessageNavigationAnchor = React54.useCallback(
18717
+ const getMessageNavigationAnchor = React55.useCallback(
18596
18718
  (item) => messageNavigationAnchorsRef.current.get(item.id) ?? null,
18597
18719
  []
18598
18720
  );
18599
- const handleMessageNavigationNavigate = React54.useCallback(() => {
18721
+ const handleMessageNavigationNavigate = React55.useCallback(() => {
18600
18722
  disableAutoFollow();
18601
18723
  clearQuoteSelection();
18602
18724
  }, [clearQuoteSelection, disableAutoFollow]);
18603
18725
  const taskSummaryEnabled = options?.taskSummary?.enabled === true;
18604
18726
  const taskSummaryConversationId = stream.conversationId ?? null;
18605
- const [taskSummaryDocked, setTaskSummaryDocked] = React54.useState(false);
18606
- const [taskSummaryOpen, setTaskSummaryOpen] = React54.useState(false);
18607
- const manuallyClosedTaskSummaryConversationIdsRef = React54.useRef(
18727
+ const [taskSummaryDocked, setTaskSummaryDocked] = React55.useState(false);
18728
+ const [taskSummaryOpen, setTaskSummaryOpen] = React55.useState(false);
18729
+ const manuallyClosedTaskSummaryConversationIdsRef = React55.useRef(
18608
18730
  /* @__PURE__ */ new Set()
18609
18731
  );
18610
- const liveTaskSummaryPending = React54.useMemo(() => {
18732
+ const liveTaskSummaryPending = React55.useMemo(() => {
18611
18733
  const followUps = pendingFollowUps.map((item) => ({
18612
18734
  id: `follow-up:${item.id}`,
18613
18735
  kind: "follow_up",
@@ -18642,7 +18764,7 @@ function Chat({
18642
18764
  stream.pendingRequestUserInput,
18643
18765
  t
18644
18766
  ]);
18645
- const liveTaskSummaryRunning = React54.useMemo(
18767
+ const liveTaskSummaryRunning = React55.useMemo(
18646
18768
  () => stream.runtimeActivities.sandboxServices.services.filter(
18647
18769
  (service) => service.status === "starting" || service.status === "running" || service.status === "stopping"
18648
18770
  ).map((service) => ({
@@ -18659,7 +18781,7 @@ function Chat({
18659
18781
  })),
18660
18782
  [stream.runtimeActivities.sandboxServices.services]
18661
18783
  );
18662
- const taskSummaryAgentNames = React54.useMemo(() => {
18784
+ const taskSummaryAgentNames = React55.useMemo(() => {
18663
18785
  const names = /* @__PURE__ */ new Map();
18664
18786
  runtimeCapabilityOptions.forEach((option) => {
18665
18787
  if (option.type !== "subAgent") return;
@@ -18671,7 +18793,7 @@ function Chat({
18671
18793
  });
18672
18794
  return names;
18673
18795
  }, [runtimeCapabilityOptions]);
18674
- const liveTaskSummary = React54.useMemo(
18796
+ const liveTaskSummary = React55.useMemo(
18675
18797
  () => collectLiveTaskSummary({
18676
18798
  messages: messages.map(
18677
18799
  (message) => ({
@@ -18708,7 +18830,7 @@ function Chat({
18708
18830
  client: stream.client,
18709
18831
  live: liveTaskSummary
18710
18832
  });
18711
- const navigateToTaskSummaryMessage = React54.useCallback(
18833
+ const navigateToTaskSummaryMessage = React55.useCallback(
18712
18834
  async (messageId) => {
18713
18835
  try {
18714
18836
  let anchor = messageNavigationAnchorsRef.current.get(messageId);
@@ -18732,7 +18854,7 @@ function Chat({
18732
18854
  },
18733
18855
  [clearQuoteSelection, disableAutoFollow, stream]
18734
18856
  );
18735
- const openTaskSummaryResource = React54.useCallback(
18857
+ const openTaskSummaryResource = React55.useCallback(
18736
18858
  (resource, messageId, resourceTitle) => {
18737
18859
  const data = {
18738
18860
  resource,
@@ -18750,7 +18872,7 @@ function Chat({
18750
18872
  },
18751
18873
  [parentMessenger, taskSummaryConversationId]
18752
18874
  );
18753
- React54.useEffect(() => {
18875
+ React55.useEffect(() => {
18754
18876
  const viewport = viewportRef.current;
18755
18877
  if (!viewport) return;
18756
18878
  previousScrollTopRef.current = viewport.scrollTop;
@@ -18831,14 +18953,14 @@ function Chat({
18831
18953
  window.removeEventListener("pointercancel", stopPointerTracking);
18832
18954
  };
18833
18955
  }, [cancelPendingAutoScroll, disableAutoFollow]);
18834
- React54.useEffect(() => {
18956
+ React55.useEffect(() => {
18835
18957
  shouldAutoScrollRef.current = true;
18836
18958
  forceFollowRef.current = false;
18837
18959
  previousScrollTopRef.current = 0;
18838
18960
  setIsAtBottom(true);
18839
18961
  setHasUpdatesBelow(false);
18840
18962
  }, [stream.threadId]);
18841
- React54.useEffect(() => {
18963
+ React55.useEffect(() => {
18842
18964
  const messageCountChanged = messages.length !== previousMessageCountRef.current;
18843
18965
  previousMessageCountRef.current = messages.length;
18844
18966
  if (isPrependingHistoryMessagesRef.current) {
@@ -18860,7 +18982,7 @@ function Chat({
18860
18982
  const isSubmissionBlocked = hasPendingInteractiveRequest || missingConfig || isHistoryLoading || hasUploadingFiles || isUploadingReferenceImages;
18861
18983
  const isSendDisabled = !trimmedDraft && !hasReferences || isSubmissionBlocked;
18862
18984
  const isPromptEditDisabled = hasPendingInteractiveRequest || missingConfig || isHistoryLoading;
18863
- const resizeComposerInput = React54.useCallback(() => {
18985
+ const resizeComposerInput = React55.useCallback(() => {
18864
18986
  const input = composerInputRef.current;
18865
18987
  if (!input) {
18866
18988
  return;
@@ -18868,7 +18990,7 @@ function Chat({
18868
18990
  input.style.maxHeight = `${COMPOSER_INPUT_MAX_HEIGHT}px`;
18869
18991
  input.style.overflowY = input.scrollHeight > COMPOSER_INPUT_MAX_HEIGHT ? "auto" : "hidden";
18870
18992
  }, []);
18871
- React54.useLayoutEffect(() => {
18993
+ React55.useLayoutEffect(() => {
18872
18994
  composerPartsRef.current = composerParts;
18873
18995
  resizeComposerInput();
18874
18996
  const caretOffset = pendingComposerCaretOffsetRef.current;
@@ -18880,13 +19002,13 @@ function Chat({
18880
19002
  }
18881
19003
  }
18882
19004
  }, [composerDomVersion, composerParts, resizeComposerInput]);
18883
- React54.useEffect(() => {
19005
+ React55.useEffect(() => {
18884
19006
  document.addEventListener("selectionchange", syncQuoteSelection);
18885
19007
  return () => {
18886
19008
  document.removeEventListener("selectionchange", syncQuoteSelection);
18887
19009
  };
18888
19010
  }, [syncQuoteSelection]);
18889
- React54.useEffect(() => {
19011
+ React55.useEffect(() => {
18890
19012
  const viewport = viewportRef.current;
18891
19013
  if (!viewport) {
18892
19014
  return;
@@ -18903,14 +19025,14 @@ function Chat({
18903
19025
  window.removeEventListener("resize", handleViewportScroll);
18904
19026
  };
18905
19027
  }, [clearQuoteSelection]);
18906
- React54.useEffect(() => {
19028
+ React55.useEffect(() => {
18907
19029
  clearQuoteSelection();
18908
19030
  }, [messages.length, stream.threadId, clearQuoteSelection]);
18909
- React54.useEffect(() => {
19031
+ React55.useEffect(() => {
18910
19032
  if (missingConfig) return;
18911
19033
  void refreshThreads();
18912
19034
  }, [missingConfig, refreshThreads]);
18913
- React54.useEffect(() => {
19035
+ React55.useEffect(() => {
18914
19036
  if (missingConfig || !stream.client || !stream.assistantId) {
18915
19037
  setAssistantName(null);
18916
19038
  setAssistantAvatar(null);
@@ -18933,10 +19055,10 @@ function Chat({
18933
19055
  cancelled = true;
18934
19056
  };
18935
19057
  }, [missingConfig, stream.client, stream.assistantId]);
18936
- React54.useEffect(() => {
19058
+ React55.useEffect(() => {
18937
19059
  setThreadGoal(stream.threadGoal);
18938
19060
  }, [stream.threadGoal]);
18939
- React54.useEffect(() => {
19061
+ React55.useEffect(() => {
18940
19062
  const threadId = stream.threadId?.trim();
18941
19063
  if (!threadId || !goalCommandAvailable) {
18942
19064
  setThreadGoal(null);
@@ -18977,7 +19099,7 @@ function Chat({
18977
19099
  return () => controller.abort();
18978
19100
  }, [goalAdapter, goalCommandAvailable, stream.threadId]);
18979
19101
  const uploadedFiles = attachmentState.uploadedFiles;
18980
- const syncComposerInputFromElement = React54.useCallback(
19102
+ const syncComposerInputFromElement = React55.useCallback(
18981
19103
  (input) => {
18982
19104
  const previousCapabilities = getComposerCapabilityPartMap(
18983
19105
  composerPartsRef.current
@@ -18995,25 +19117,25 @@ function Chat({
18995
19117
  },
18996
19118
  [commitComposerParts, updateRuntimeCapabilityPalette]
18997
19119
  );
18998
- const handleComposerInput = React54.useCallback(
19120
+ const handleComposerInput = React55.useCallback(
18999
19121
  (event) => {
19000
19122
  syncComposerInputFromElement(event.currentTarget);
19001
19123
  },
19002
19124
  [syncComposerInputFromElement]
19003
19125
  );
19004
- const handleComposerCompositionEnd = React54.useCallback(
19126
+ const handleComposerCompositionEnd = React55.useCallback(
19005
19127
  (event) => {
19006
19128
  syncComposerInputFromElement(event.currentTarget);
19007
19129
  },
19008
19130
  [syncComposerInputFromElement]
19009
19131
  );
19010
- const handleComposerSelect = React54.useCallback(() => {
19132
+ const handleComposerSelect = React55.useCallback(() => {
19011
19133
  updateRuntimeCapabilityPalette(
19012
19134
  composerPartsRef.current,
19013
19135
  composerInputRef.current ? getComposerSelectionOffset(composerInputRef.current) : void 0
19014
19136
  );
19015
19137
  }, [updateRuntimeCapabilityPalette]);
19016
- const submitDraft = React54.useCallback(
19138
+ const submitDraft = React55.useCallback(
19017
19139
  (submitOptions = {}) => {
19018
19140
  if (isSubmissionBlocked) return;
19019
19141
  const contentToSubmit = (submitOptions.inputText ?? trimmedDraft).trim();
@@ -19119,7 +19241,7 @@ function Chat({
19119
19241
  t
19120
19242
  ]
19121
19243
  );
19122
- const handleGoalCommand = React54.useCallback(
19244
+ const handleGoalCommand = React55.useCallback(
19123
19245
  async ({
19124
19246
  args,
19125
19247
  commandSource,
@@ -19225,7 +19347,7 @@ function Chat({
19225
19347
  t
19226
19348
  ]
19227
19349
  );
19228
- const handleGoalPanelOpenChange = React54.useCallback((open) => {
19350
+ const handleGoalPanelOpenChange = React55.useCallback((open) => {
19229
19351
  setIsGoalPanelOpen(open);
19230
19352
  }, []);
19231
19353
  const {
@@ -19269,7 +19391,7 @@ function Chat({
19269
19391
  plugin: t("composer.slashCommands.empty.loadingCapabilities"),
19270
19392
  subAgent: t("composer.slashCommands.empty.loadingCapabilities")
19271
19393
  };
19272
- React54.useEffect(() => {
19394
+ React55.useEffect(() => {
19273
19395
  if (!runtimeCapabilityPalette) {
19274
19396
  return;
19275
19397
  }
@@ -19288,7 +19410,7 @@ function Chat({
19288
19410
  );
19289
19411
  }
19290
19412
  }, [slashPaletteOptions.length, runtimeCapabilityPalette]);
19291
- React54.useLayoutEffect(() => {
19413
+ React55.useLayoutEffect(() => {
19292
19414
  if (!runtimeCapabilityPalette) {
19293
19415
  return;
19294
19416
  }
@@ -19305,7 +19427,7 @@ function Chat({
19305
19427
  container.scrollTop += optionRect.bottom - containerRect.bottom;
19306
19428
  }
19307
19429
  }, [runtimeCapabilityPalette, slashPaletteOptions.length]);
19308
- const submitGoalModeDraft = React54.useCallback(() => {
19430
+ const submitGoalModeDraft = React55.useCallback(() => {
19309
19431
  const objective = getComposerPlainText(composerPartsRef.current).trim();
19310
19432
  if (!isGoalModeOpen || !goalCommandAvailable || !objective) {
19311
19433
  return false;
@@ -19343,7 +19465,7 @@ function Chat({
19343
19465
  }
19344
19466
  submitDraft();
19345
19467
  };
19346
- const handleEditPendingFollowUp = React54.useCallback(
19468
+ const handleEditPendingFollowUp = React55.useCallback(
19347
19469
  (id) => {
19348
19470
  const item = pendingFollowUps.find(
19349
19471
  (entry) => entry.id === id && entry.mode === "queue"
@@ -19370,7 +19492,7 @@ function Chat({
19370
19492
  },
19371
19493
  [pendingFollowUps, setComposerText, stream]
19372
19494
  );
19373
- const handleQuoteSelection = React54.useCallback(() => {
19495
+ const handleQuoteSelection = React55.useCallback(() => {
19374
19496
  if (!quoteSelection) {
19375
19497
  return;
19376
19498
  }
@@ -19386,7 +19508,7 @@ function Chat({
19386
19508
  const handleAttachmentClick = () => {
19387
19509
  attachmentsRef.current?.openFilePicker();
19388
19510
  };
19389
- const uploadContextFile = React54.useCallback(
19511
+ const uploadContextFile = React55.useCallback(
19390
19512
  (file) => {
19391
19513
  const formData = new FormData();
19392
19514
  formData.append("file", file, file.name || "upload");
@@ -19405,13 +19527,13 @@ function Chat({
19405
19527
  },
19406
19528
  [stream.assistantId, stream.client, stream.threadId]
19407
19529
  );
19408
- const getContextFileStatus = React54.useCallback(
19530
+ const getContextFileStatus = React55.useCallback(
19409
19531
  (fileId) => stream.client.contexts.fetch(`/files/${fileId}/status`, {
19410
19532
  method: "GET"
19411
19533
  }),
19412
19534
  [stream.client]
19413
19535
  );
19414
- const deleteContextFile = React54.useCallback(
19536
+ const deleteContextFile = React55.useCallback(
19415
19537
  (storageFileId) => stream.client.contexts.deleteFile(storageFileId),
19416
19538
  [stream.client]
19417
19539
  );
@@ -19519,7 +19641,7 @@ function Chat({
19519
19641
  }
19520
19642
  submitDraft();
19521
19643
  };
19522
- const handleComposerPaste = React54.useCallback(
19644
+ const handleComposerPaste = React55.useCallback(
19523
19645
  (event) => {
19524
19646
  const clipboardData = event.clipboardData;
19525
19647
  if (!clipboardData) {
@@ -19621,13 +19743,13 @@ function Chat({
19621
19743
  const handleToolSelect = (tool) => {
19622
19744
  setSelectedTool((prev) => prev?.id === tool.id ? null : tool);
19623
19745
  };
19624
- const handlePromptClick = React54.useCallback(
19746
+ const handlePromptClick = React55.useCallback(
19625
19747
  (prompt) => {
19626
19748
  submitDraft({ inputText: prompt, displayText: prompt });
19627
19749
  },
19628
19750
  [submitDraft]
19629
19751
  );
19630
- const handlePromptEdit = React54.useCallback(
19752
+ const handlePromptEdit = React55.useCallback(
19631
19753
  (prompt) => {
19632
19754
  if (isPromptEditDisabled) return;
19633
19755
  setComposerText(prompt, prompt.length);
@@ -19636,7 +19758,7 @@ function Chat({
19636
19758
  },
19637
19759
  [focusComposerAt, isPromptEditDisabled, setComposerText]
19638
19760
  );
19639
- const loadConversationMessages = React54.useCallback(
19761
+ const loadConversationMessages = React55.useCallback(
19640
19762
  async (recordId) => {
19641
19763
  if (missingConfig) {
19642
19764
  setHistoryError(missingConfigShortMessage);
@@ -19657,7 +19779,7 @@ function Chat({
19657
19779
  },
19658
19780
  [missingConfig, missingConfigShortMessage, stream, t]
19659
19781
  );
19660
- const handleLoadMoreMessages = React54.useCallback(async () => {
19782
+ const handleLoadMoreMessages = React55.useCallback(async () => {
19661
19783
  if (!canLoadMoreMessages || isLoadingMoreMessages) {
19662
19784
  return;
19663
19785
  }
@@ -19766,19 +19888,19 @@ function Chat({
19766
19888
  };
19767
19889
  const acceptMimes = composer?.attachments?.accept ? Object.entries(composer.attachments.accept).map(([mime, exts]) => [mime, ...exts.map((e) => `.${e}`)].join(",")).join(",") : void 0;
19768
19890
  const canUploadDroppedFiles = composer?.attachments?.enabled === true && !missingConfig && !isHistoryLoading && !hasPendingInteractiveRequest;
19769
- const handleDroppedFiles = React54.useCallback((files) => {
19891
+ const handleDroppedFiles = React55.useCallback((files) => {
19770
19892
  return attachmentsRef.current?.queueFiles(files) ?? false;
19771
19893
  }, []);
19772
- const currentThread = React54.useMemo(
19894
+ const currentThread = React55.useMemo(
19773
19895
  () => threads.find((item) => item.id === stream.threadId),
19774
19896
  [threads, stream.threadId]
19775
19897
  );
19776
- const assistantStatusText = React54.useMemo(() => {
19898
+ const assistantStatusText = React55.useMemo(() => {
19777
19899
  if (!stream.threadId) return t("chat.statusOnline");
19778
19900
  return currentThread?.title?.trim() || t("chat.statusOnline");
19779
19901
  }, [currentThread?.title, stream.threadId, t]);
19780
19902
  const streamErrorMessage = stream.error instanceof Error ? stream.error.message : void 0;
19781
- const threadErrorMessage = React54.useMemo(() => {
19903
+ const threadErrorMessage = React55.useMemo(() => {
19782
19904
  if (streamErrorMessage?.trim()) return streamErrorMessage.trim();
19783
19905
  if (currentThread?.status !== "error") return void 0;
19784
19906
  const message = currentThread.error?.trim();
@@ -19809,13 +19931,13 @@ function Chat({
19809
19931
  fallbackTitle: t("history.threadFallback")
19810
19932
  });
19811
19933
  const layoutMaxWidth = options?.layout?.maxWidth;
19812
- const chatColumnStyle = React54.useMemo(() => {
19934
+ const chatColumnStyle = React55.useMemo(() => {
19813
19935
  if (layoutMaxWidth === void 0 || layoutMaxWidth === null || layoutMaxWidth === "") {
19814
19936
  return void 0;
19815
19937
  }
19816
19938
  return { maxWidth: layoutMaxWidth };
19817
19939
  }, [layoutMaxWidth]);
19818
- React54.useLayoutEffect(() => {
19940
+ React55.useLayoutEffect(() => {
19819
19941
  if (!taskSummaryEnabled) {
19820
19942
  setTaskSummaryDocked(false);
19821
19943
  return;
@@ -19850,7 +19972,7 @@ function Chat({
19850
19972
  const taskSummaryAvailable = Boolean(
19851
19973
  taskSummaryEnabled && stream.threadId && taskSummaryConversationId
19852
19974
  );
19853
- const handleTaskSummaryOpenChange = React54.useCallback(
19975
+ const handleTaskSummaryOpenChange = React55.useCallback(
19854
19976
  (open) => {
19855
19977
  setTaskSummaryOpen(open);
19856
19978
  if (!taskSummaryConversationId) return;
@@ -19866,12 +19988,12 @@ function Chat({
19866
19988
  },
19867
19989
  [taskSummaryConversationId]
19868
19990
  );
19869
- React54.useEffect(() => {
19991
+ React55.useEffect(() => {
19870
19992
  if (!taskSummaryDocked) {
19871
19993
  setTaskSummaryOpen(false);
19872
19994
  }
19873
19995
  }, [taskSummaryDocked]);
19874
- React54.useEffect(() => {
19996
+ React55.useEffect(() => {
19875
19997
  if (!taskSummaryDocked || !taskSummaryAvailable || !taskSummaryConversationId || manuallyClosedTaskSummaryConversationIdsRef.current.has(
19876
19998
  taskSummaryConversationId
19877
19999
  )) {
@@ -19892,13 +20014,13 @@ function Chat({
19892
20014
  onFocusComposer: () => focusComposerAt(),
19893
20015
  onOpenResource: openTaskSummaryResource
19894
20016
  };
19895
- return /* @__PURE__ */ jsxs40(
20017
+ return /* @__PURE__ */ jsxs41(
19896
20018
  "div",
19897
20019
  {
19898
20020
  className: "relative flex h-full w-full min-w-0 bg-background",
19899
20021
  "data-task-summary-layout": taskSummaryDocked ? "docked" : "popover",
19900
20022
  children: [
19901
- /* @__PURE__ */ jsxs40(
20023
+ /* @__PURE__ */ jsxs41(
19902
20024
  UploadDroppedFiles,
19903
20025
  {
19904
20026
  ref: viewportRef,
@@ -19913,7 +20035,7 @@ function Chat({
19913
20035
  className
19914
20036
  ),
19915
20037
  children: [
19916
- /* @__PURE__ */ jsxs40(
20038
+ /* @__PURE__ */ jsxs41(
19917
20039
  "div",
19918
20040
  {
19919
20041
  ref: chatColumnRef,
@@ -19921,9 +20043,9 @@ function Chat({
19921
20043
  className: "mx-auto flex w-full items-center justify-between border-b p-2 sticky top-0 z-10 bg-background",
19922
20044
  style: chatColumnStyle,
19923
20045
  children: [
19924
- /* @__PURE__ */ jsxs40("div", { className: "flex min-w-0 items-center gap-3 overflow-hidden", children: [
19925
- /* @__PURE__ */ jsxs40("div", { className: "relative shrink-0", children: [
19926
- /* @__PURE__ */ jsx58(
20046
+ /* @__PURE__ */ jsxs41("div", { className: "flex min-w-0 items-center gap-3 overflow-hidden", children: [
20047
+ /* @__PURE__ */ jsxs41("div", { className: "relative shrink-0", children: [
20048
+ /* @__PURE__ */ jsx59(
19927
20049
  ChatkitAvatar,
19928
20050
  {
19929
20051
  avatar: assistantAvatar,
@@ -19931,10 +20053,10 @@ function Chat({
19931
20053
  label: assistantTitle
19932
20054
  }
19933
20055
  ),
19934
- /* @__PURE__ */ jsx58("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
20056
+ /* @__PURE__ */ jsx59("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
19935
20057
  ] }),
19936
- /* @__PURE__ */ jsxs40("div", { className: "min-w-0", children: [
19937
- /* @__PURE__ */ jsx58(
20058
+ /* @__PURE__ */ jsxs41("div", { className: "min-w-0", children: [
20059
+ /* @__PURE__ */ jsx59(
19938
20060
  "h2",
19939
20061
  {
19940
20062
  className: "text-lg font-semibold truncate",
@@ -19942,7 +20064,7 @@ function Chat({
19942
20064
  children: assistantTitle
19943
20065
  }
19944
20066
  ),
19945
- /* @__PURE__ */ jsx58(
20067
+ /* @__PURE__ */ jsx59(
19946
20068
  "p",
19947
20069
  {
19948
20070
  className: "truncate text-xs text-muted-foreground",
@@ -19952,8 +20074,8 @@ function Chat({
19952
20074
  )
19953
20075
  ] })
19954
20076
  ] }),
19955
- /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-1", children: [
19956
- taskSummaryAvailable && /* @__PURE__ */ jsx58(
20077
+ /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-1", children: [
20078
+ taskSummaryAvailable && /* @__PURE__ */ jsx59(
19957
20079
  TaskSummaryTrigger,
19958
20080
  {
19959
20081
  ...taskSummaryProps,
@@ -19962,8 +20084,9 @@ function Chat({
19962
20084
  onOpenChange: handleTaskSummaryOpenChange
19963
20085
  }
19964
20086
  ),
19965
- canMinimizeToPet && /* @__PURE__ */ jsxs40(Tooltip, { children: [
19966
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx58(
20087
+ /* @__PURE__ */ jsx59(WorkbenchToggleButton, {}),
20088
+ canMinimizeToPet && /* @__PURE__ */ jsxs41(Tooltip, { children: [
20089
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx59(
19967
20090
  "button",
19968
20091
  {
19969
20092
  type: "button",
@@ -19974,13 +20097,13 @@ function Chat({
19974
20097
  "transition-colors duration-150"
19975
20098
  ),
19976
20099
  "aria-label": t("chat.minimizeToPet"),
19977
- children: /* @__PURE__ */ jsx58(Minus, { size: 16 })
20100
+ children: /* @__PURE__ */ jsx59(Minus, { size: 16 })
19978
20101
  }
19979
20102
  ) }) }),
19980
- /* @__PURE__ */ jsx58(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
20103
+ /* @__PURE__ */ jsx59(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
19981
20104
  ] }),
19982
- /* @__PURE__ */ jsxs40(Tooltip, { children: [
19983
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx58(
20105
+ /* @__PURE__ */ jsxs41(Tooltip, { children: [
20106
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx59(
19984
20107
  "button",
19985
20108
  {
19986
20109
  type: "button",
@@ -19991,14 +20114,14 @@ function Chat({
19991
20114
  "transition-colors duration-150"
19992
20115
  ),
19993
20116
  "aria-label": t("settings.open"),
19994
- children: /* @__PURE__ */ jsx58(Settings2, { size: 16 })
20117
+ children: /* @__PURE__ */ jsx59(Settings2, { size: 16 })
19995
20118
  }
19996
20119
  ) }) }),
19997
- /* @__PURE__ */ jsx58(TooltipContent, { side: "bottom", children: t("settings.open") })
20120
+ /* @__PURE__ */ jsx59(TooltipContent, { side: "bottom", children: t("settings.open") })
19998
20121
  ] }),
19999
- history?.enabled !== false && /* @__PURE__ */ jsxs40(Fragment9, { children: [
20000
- /* @__PURE__ */ jsxs40(Tooltip, { children: [
20001
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx58(
20122
+ history?.enabled !== false && /* @__PURE__ */ jsxs41(Fragment10, { children: [
20123
+ /* @__PURE__ */ jsxs41(Tooltip, { children: [
20124
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx59(
20002
20125
  "button",
20003
20126
  {
20004
20127
  type: "button",
@@ -20011,12 +20134,12 @@ function Chat({
20011
20134
  "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
20012
20135
  ),
20013
20136
  "aria-label": t("history.newThread"),
20014
- children: /* @__PURE__ */ jsx58(Pencil4, { size: 16 })
20137
+ children: /* @__PURE__ */ jsx59(Pencil4, { size: 16 })
20015
20138
  }
20016
20139
  ) }) }),
20017
- /* @__PURE__ */ jsx58(TooltipContent, { side: "bottom", children: t("history.newThread") })
20140
+ /* @__PURE__ */ jsx59(TooltipContent, { side: "bottom", children: t("history.newThread") })
20018
20141
  ] }),
20019
- /* @__PURE__ */ jsx58(
20142
+ /* @__PURE__ */ jsx59(
20020
20143
  HistorySidebar,
20021
20144
  {
20022
20145
  threads,
@@ -20035,7 +20158,7 @@ function Chat({
20035
20158
  ]
20036
20159
  }
20037
20160
  ),
20038
- showMessageNavigation && /* @__PURE__ */ jsx58(
20161
+ showMessageNavigation && /* @__PURE__ */ jsx59(
20039
20162
  MessageNavigator,
20040
20163
  {
20041
20164
  items: messageNavigationItems,
@@ -20046,18 +20169,18 @@ function Chat({
20046
20169
  tagsOverflowLabel: (count) => t("message.navigation.moreTags", { count })
20047
20170
  }
20048
20171
  ),
20049
- /* @__PURE__ */ jsxs40(
20172
+ /* @__PURE__ */ jsxs41(
20050
20173
  "div",
20051
20174
  {
20052
20175
  "data-slot": "chatkit-chat-content",
20053
20176
  className: "mx-auto w-full flex-1 p-4",
20054
20177
  style: chatColumnStyle,
20055
20178
  children: [
20056
- errorMessage && /* @__PURE__ */ jsx58("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
20057
- historyError && /* @__PURE__ */ jsx58("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
20058
- showMissingConfig && /* @__PURE__ */ jsx58("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
20059
- isHistoryLoading && /* @__PURE__ */ jsx58("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
20060
- messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ jsx58(
20179
+ errorMessage && /* @__PURE__ */ jsx59("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
20180
+ historyError && /* @__PURE__ */ jsx59("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
20181
+ showMissingConfig && /* @__PURE__ */ jsx59("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
20182
+ isHistoryLoading && /* @__PURE__ */ jsx59("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
20183
+ messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ jsx59(
20061
20184
  StartScreen,
20062
20185
  {
20063
20186
  startScreen,
@@ -20066,10 +20189,10 @@ function Chat({
20066
20189
  promptSendDisabled: isSubmissionBlocked,
20067
20190
  promptEditDisabled: isPromptEditDisabled
20068
20191
  }
20069
- ) : /* @__PURE__ */ jsxs40("div", { className: "space-y-4", children: [
20070
- canLoadMoreMessages && /* @__PURE__ */ jsxs40("div", { className: "flex items-center gap-3 py-1", children: [
20071
- /* @__PURE__ */ jsx58("div", { className: "h-px min-w-8 flex-1 bg-border" }),
20072
- /* @__PURE__ */ jsx58(
20192
+ ) : /* @__PURE__ */ jsxs41("div", { className: "space-y-4", children: [
20193
+ canLoadMoreMessages && /* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-3 py-1", children: [
20194
+ /* @__PURE__ */ jsx59("div", { className: "h-px min-w-8 flex-1 bg-border" }),
20195
+ /* @__PURE__ */ jsx59(
20073
20196
  Button,
20074
20197
  {
20075
20198
  type: "button",
@@ -20081,7 +20204,7 @@ function Chat({
20081
20204
  children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
20082
20205
  }
20083
20206
  ),
20084
- /* @__PURE__ */ jsx58("div", { className: "h-px min-w-8 flex-1 bg-border" })
20207
+ /* @__PURE__ */ jsx59("div", { className: "h-px min-w-8 flex-1 bg-border" })
20085
20208
  ] }),
20086
20209
  messages.map((message, index) => {
20087
20210
  const messageType = String(message.type);
@@ -20125,7 +20248,7 @@ function Chat({
20125
20248
  if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
20126
20249
  return null;
20127
20250
  }
20128
- return /* @__PURE__ */ jsx58(
20251
+ return /* @__PURE__ */ jsx59(
20129
20252
  "div",
20130
20253
  {
20131
20254
  ref: (node) => setMessageNavigationAnchor(messageNavigationId, node),
@@ -20135,7 +20258,7 @@ function Chat({
20135
20258
  message.type === "human" ? "justify-end" : "justify-start -ml-1"
20136
20259
  // AI messages: slightly closer to left
20137
20260
  ),
20138
- children: /* @__PURE__ */ jsxs40(
20261
+ children: /* @__PURE__ */ jsxs41(
20139
20262
  "div",
20140
20263
  {
20141
20264
  className: cn(
@@ -20143,7 +20266,7 @@ function Chat({
20143
20266
  isAssistantMessage && "min-w-0 flex-1"
20144
20267
  ),
20145
20268
  children: [
20146
- /* @__PURE__ */ jsx58(
20269
+ /* @__PURE__ */ jsx59(
20147
20270
  "div",
20148
20271
  {
20149
20272
  ...canQuoteMessage ? {
@@ -20155,7 +20278,7 @@ function Chat({
20155
20278
  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"
20156
20279
  // AI messages: use chat-specific foreground color
20157
20280
  ),
20158
- children: isAssistantMessage ? /* @__PURE__ */ jsx58(
20281
+ children: isAssistantMessage ? /* @__PURE__ */ jsx59(
20159
20282
  AssistantMessage,
20160
20283
  {
20161
20284
  message: {
@@ -20175,14 +20298,14 @@ function Chat({
20175
20298
  apiUrl: stream.apiUrl,
20176
20299
  pet: effectivePet
20177
20300
  }
20178
- ) : /* @__PURE__ */ jsxs40(Fragment9, { children: [
20179
- message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsx58(
20301
+ ) : /* @__PURE__ */ jsxs41(Fragment10, { children: [
20302
+ message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsx59(
20180
20303
  HumanRuntimeCapabilityChips,
20181
20304
  {
20182
20305
  options: humanRuntimeCapabilityOptions
20183
20306
  }
20184
20307
  ),
20185
- message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ jsx58("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ jsx58(
20308
+ message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ jsx59("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ jsx59(
20186
20309
  ReferenceChip,
20187
20310
  {
20188
20311
  reference,
@@ -20190,29 +20313,29 @@ function Chat({
20190
20313
  },
20191
20314
  getReferenceKey(reference)
20192
20315
  )) }),
20193
- message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ jsx58("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ jsxs40(
20316
+ message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ jsx59("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ jsxs41(
20194
20317
  "div",
20195
20318
  {
20196
20319
  className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
20197
20320
  children: [
20198
- /* @__PURE__ */ jsx58(FileText5, { size: 12 }),
20199
- /* @__PURE__ */ jsx58("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
20321
+ /* @__PURE__ */ jsx59(FileText5, { size: 12 }),
20322
+ /* @__PURE__ */ jsx59("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
20200
20323
  ]
20201
20324
  },
20202
20325
  fileIndex
20203
20326
  )) }),
20204
- Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ jsx58(
20327
+ Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ jsx59(
20205
20328
  "p",
20206
20329
  {
20207
20330
  className: "wrap-break-word text-sm leading-relaxed",
20208
20331
  children: formatMessageContent(part)
20209
20332
  },
20210
20333
  `${part.type}-${partIndex}`
20211
- )) : /* @__PURE__ */ jsx58("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
20334
+ )) : /* @__PURE__ */ jsx59("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
20212
20335
  ] })
20213
20336
  }
20214
20337
  ),
20215
- /* @__PURE__ */ jsx58(
20338
+ /* @__PURE__ */ jsx59(
20216
20339
  MessageActions,
20217
20340
  {
20218
20341
  content: messageContent,
@@ -20250,7 +20373,7 @@ function Chat({
20250
20373
  stream.isLoading,
20251
20374
  { now: streamingNow }
20252
20375
  );
20253
- return /* @__PURE__ */ jsx58("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ jsx58("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ jsx58(
20376
+ return /* @__PURE__ */ jsx59("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ jsx59("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ jsx59(
20254
20377
  AssistantStreamingIndicator,
20255
20378
  {
20256
20379
  status: fallbackStreamingStatus ?? "loading"
@@ -20261,7 +20384,7 @@ function Chat({
20261
20384
  ]
20262
20385
  }
20263
20386
  ),
20264
- !isAtBottom && messages.length > 0 && /* @__PURE__ */ jsx58("div", { className: "sticky bottom-20 z-20 flex justify-center px-4 pointer-events-none", children: /* @__PURE__ */ jsx58(
20387
+ !isAtBottom && messages.length > 0 && /* @__PURE__ */ jsx59("div", { className: "sticky bottom-20 z-20 flex justify-center px-4 pointer-events-none", children: /* @__PURE__ */ jsx59(
20265
20388
  Button,
20266
20389
  {
20267
20390
  type: "button",
@@ -20274,10 +20397,10 @@ function Chat({
20274
20397
  onClick: () => scrollToBottom(true, true),
20275
20398
  "aria-label": t("chat.scrollToBottom"),
20276
20399
  title: t("chat.scrollToBottom"),
20277
- children: /* @__PURE__ */ jsx58(ArrowDown2, { size: 16 })
20400
+ children: /* @__PURE__ */ jsx59(ArrowDown2, { size: 16 })
20278
20401
  }
20279
20402
  ) }),
20280
- quoteSelection && /* @__PURE__ */ jsx58(
20403
+ quoteSelection && /* @__PURE__ */ jsx59(
20281
20404
  "div",
20282
20405
  {
20283
20406
  className: "pointer-events-none fixed z-50",
@@ -20286,7 +20409,7 @@ function Chat({
20286
20409
  left: `${quoteSelection.left}px`,
20287
20410
  transform: "translateX(-50%)"
20288
20411
  },
20289
- children: /* @__PURE__ */ jsxs40(
20412
+ children: /* @__PURE__ */ jsxs41(
20290
20413
  Button,
20291
20414
  {
20292
20415
  type: "button",
@@ -20298,22 +20421,22 @@ function Chat({
20298
20421
  "aria-label": t("composer.quoteSelection"),
20299
20422
  title: t("composer.quoteSelection"),
20300
20423
  children: [
20301
- /* @__PURE__ */ jsx58(Quote, { size: 14 }),
20424
+ /* @__PURE__ */ jsx59(Quote, { size: 14 }),
20302
20425
  t("composer.quoteSelection")
20303
20426
  ]
20304
20427
  }
20305
20428
  )
20306
20429
  }
20307
20430
  ),
20308
- /* @__PURE__ */ jsxs40(
20431
+ /* @__PURE__ */ jsxs41(
20309
20432
  "div",
20310
20433
  {
20311
20434
  "data-slot": "chatkit-chat-composer",
20312
20435
  className: "mx-auto w-full p-2 sticky bottom-0 z-10 bg-background",
20313
20436
  style: chatColumnStyle,
20314
20437
  children: [
20315
- threadErrorMessage && /* @__PURE__ */ jsx58("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 }),
20316
- /* @__PURE__ */ jsx58(
20438
+ threadErrorMessage && /* @__PURE__ */ jsx59("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 }),
20439
+ /* @__PURE__ */ jsx59(
20317
20440
  ChatAttachments,
20318
20441
  {
20319
20442
  ref: attachmentsRef,
@@ -20327,7 +20450,7 @@ function Chat({
20327
20450
  onStateChange: setAttachmentState
20328
20451
  }
20329
20452
  ),
20330
- references.length > 0 && /* @__PURE__ */ jsx58("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx58(
20453
+ references.length > 0 && /* @__PURE__ */ jsx59("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx59(
20331
20454
  ReferenceChip,
20332
20455
  {
20333
20456
  reference,
@@ -20341,7 +20464,7 @@ function Chat({
20341
20464
  },
20342
20465
  getReferenceKey(reference)
20343
20466
  )) }),
20344
- /* @__PURE__ */ jsx58(
20467
+ /* @__PURE__ */ jsx59(
20345
20468
  DetachedRunRuntimeCapabilities,
20346
20469
  {
20347
20470
  options: detachedRunRuntimeCapabilityOptions,
@@ -20350,7 +20473,7 @@ function Chat({
20350
20473
  onRemove: removeRunRuntimeCapability
20351
20474
  }
20352
20475
  ),
20353
- showGoalStatus && /* @__PURE__ */ jsxs40(
20476
+ showGoalStatus && /* @__PURE__ */ jsxs41(
20354
20477
  "div",
20355
20478
  {
20356
20479
  className: cn(
@@ -20358,7 +20481,7 @@ function Chat({
20358
20481
  isGoalObjectiveExpanded ? "items-start" : "items-center"
20359
20482
  ),
20360
20483
  children: [
20361
- /* @__PURE__ */ jsx58(
20484
+ /* @__PURE__ */ jsx59(
20362
20485
  Target3,
20363
20486
  {
20364
20487
  className: cn(
@@ -20367,13 +20490,13 @@ function Chat({
20367
20490
  )
20368
20491
  }
20369
20492
  ),
20370
- /* @__PURE__ */ jsxs40("div", { className: "min-w-0 flex-1", children: [
20371
- /* @__PURE__ */ jsxs40("div", { className: "flex min-w-0 items-center gap-2", children: [
20372
- /* @__PURE__ */ jsx58("span", { className: "font-medium", children: t("chat.goal.label") }),
20373
- threadGoal && /* @__PURE__ */ jsx58("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}`) }),
20374
- isGoalLoading && /* @__PURE__ */ jsx58(Loader210, { className: "size-3 animate-spin text-muted-foreground" })
20493
+ /* @__PURE__ */ jsxs41("div", { className: "min-w-0 flex-1", children: [
20494
+ /* @__PURE__ */ jsxs41("div", { className: "flex min-w-0 items-center gap-2", children: [
20495
+ /* @__PURE__ */ jsx59("span", { className: "font-medium", children: t("chat.goal.label") }),
20496
+ threadGoal && /* @__PURE__ */ jsx59("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}`) }),
20497
+ isGoalLoading && /* @__PURE__ */ jsx59(Loader211, { className: "size-3 animate-spin text-muted-foreground" })
20375
20498
  ] }),
20376
- /* @__PURE__ */ jsx58(
20499
+ /* @__PURE__ */ jsx59(
20377
20500
  "div",
20378
20501
  {
20379
20502
  className: cn(
@@ -20383,13 +20506,13 @@ function Chat({
20383
20506
  children: goalError || threadGoal?.objective
20384
20507
  }
20385
20508
  ),
20386
- threadGoal && /* @__PURE__ */ jsx58("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: /* @__PURE__ */ jsx58("span", { children: t("chat.goal.elapsed", {
20509
+ threadGoal && /* @__PURE__ */ jsx59("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: /* @__PURE__ */ jsx59("span", { children: t("chat.goal.elapsed", {
20387
20510
  elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
20388
20511
  }) }) })
20389
20512
  ] }),
20390
- threadGoal && /* @__PURE__ */ jsxs40("div", { className: "flex shrink-0 items-center gap-1", children: [
20391
- /* @__PURE__ */ jsxs40(Tooltip, { children: [
20392
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58(
20513
+ threadGoal && /* @__PURE__ */ jsxs41("div", { className: "flex shrink-0 items-center gap-1", children: [
20514
+ /* @__PURE__ */ jsxs41(Tooltip, { children: [
20515
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59(
20393
20516
  Button,
20394
20517
  {
20395
20518
  type: "button",
@@ -20400,13 +20523,13 @@ function Chat({
20400
20523
  const prefix = "/goal edit ";
20401
20524
  setComposerText(`${prefix}${threadGoal.objective}`);
20402
20525
  },
20403
- children: /* @__PURE__ */ jsx58(Pencil4, { className: "size-3" })
20526
+ children: /* @__PURE__ */ jsx59(Pencil4, { className: "size-3" })
20404
20527
  }
20405
20528
  ) }),
20406
- /* @__PURE__ */ jsx58(TooltipContent, { children: t("chat.goal.edit") })
20529
+ /* @__PURE__ */ jsx59(TooltipContent, { children: t("chat.goal.edit") })
20407
20530
  ] }),
20408
- /* @__PURE__ */ jsxs40(Tooltip, { children: [
20409
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58(
20531
+ /* @__PURE__ */ jsxs41(Tooltip, { children: [
20532
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59(
20410
20533
  Button,
20411
20534
  {
20412
20535
  type: "button",
@@ -20422,13 +20545,13 @@ function Chat({
20422
20545
  executionType: "insert_invocation"
20423
20546
  }
20424
20547
  }),
20425
- children: threadGoal.status === "paused" ? /* @__PURE__ */ jsx58(Play, { className: "size-3" }) : /* @__PURE__ */ jsx58(Pause, { className: "size-3" })
20548
+ children: threadGoal.status === "paused" ? /* @__PURE__ */ jsx59(Play, { className: "size-3" }) : /* @__PURE__ */ jsx59(Pause, { className: "size-3" })
20426
20549
  }
20427
20550
  ) }),
20428
- /* @__PURE__ */ jsx58(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
20551
+ /* @__PURE__ */ jsx59(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
20429
20552
  ] }),
20430
- /* @__PURE__ */ jsxs40(Tooltip, { children: [
20431
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58(
20553
+ /* @__PURE__ */ jsxs41(Tooltip, { children: [
20554
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59(
20432
20555
  Button,
20433
20556
  {
20434
20557
  type: "button",
@@ -20444,13 +20567,13 @@ function Chat({
20444
20567
  executionType: "insert_invocation"
20445
20568
  }
20446
20569
  }),
20447
- children: /* @__PURE__ */ jsx58(Trash23, { className: "size-3" })
20570
+ children: /* @__PURE__ */ jsx59(Trash23, { className: "size-3" })
20448
20571
  }
20449
20572
  ) }),
20450
- /* @__PURE__ */ jsx58(TooltipContent, { children: t("chat.goal.clear") })
20573
+ /* @__PURE__ */ jsx59(TooltipContent, { children: t("chat.goal.clear") })
20451
20574
  ] }),
20452
- threadGoal.objective && !goalError && /* @__PURE__ */ jsxs40(Tooltip, { children: [
20453
- /* @__PURE__ */ jsx58(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx58(
20575
+ threadGoal.objective && !goalError && /* @__PURE__ */ jsxs41(Tooltip, { children: [
20576
+ /* @__PURE__ */ jsx59(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx59(
20454
20577
  Button,
20455
20578
  {
20456
20579
  type: "button",
@@ -20459,7 +20582,7 @@ function Chat({
20459
20582
  "aria-expanded": isGoalObjectiveExpanded,
20460
20583
  "aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
20461
20584
  onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
20462
- children: /* @__PURE__ */ jsx58(
20585
+ children: /* @__PURE__ */ jsx59(
20463
20586
  ChevronDown5,
20464
20587
  {
20465
20588
  className: cn(
@@ -20470,13 +20593,13 @@ function Chat({
20470
20593
  )
20471
20594
  }
20472
20595
  ) }),
20473
- /* @__PURE__ */ jsx58(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
20596
+ /* @__PURE__ */ jsx59(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
20474
20597
  ] })
20475
20598
  ] })
20476
20599
  ]
20477
20600
  }
20478
20601
  ),
20479
- /* @__PURE__ */ jsx58(
20602
+ /* @__PURE__ */ jsx59(
20480
20603
  PendingRuntimeServices,
20481
20604
  {
20482
20605
  state: stream.runtimeActivities.sandboxServices,
@@ -20485,7 +20608,7 @@ function Chat({
20485
20608
  className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
20486
20609
  }
20487
20610
  ),
20488
- /* @__PURE__ */ jsx58(
20611
+ /* @__PURE__ */ jsx59(
20489
20612
  PendingTodos,
20490
20613
  {
20491
20614
  snapshot: stream.todos,
@@ -20493,7 +20616,7 @@ function Chat({
20493
20616
  className: hasPendingFollowUps ? "mb-2" : void 0
20494
20617
  }
20495
20618
  ),
20496
- /* @__PURE__ */ jsx58(
20619
+ /* @__PURE__ */ jsx59(
20497
20620
  PendingFollowUps,
20498
20621
  {
20499
20622
  items: pendingFollowUps,
@@ -20506,7 +20629,7 @@ function Chat({
20506
20629
  attachToComposer: true
20507
20630
  }
20508
20631
  ),
20509
- /* @__PURE__ */ jsx58(
20632
+ /* @__PURE__ */ jsx59(
20510
20633
  RequestUserInputPanel,
20511
20634
  {
20512
20635
  request: stream.pendingRequestUserInput,
@@ -20515,7 +20638,7 @@ function Chat({
20515
20638
  attachToComposer: true
20516
20639
  }
20517
20640
  ),
20518
- /* @__PURE__ */ jsx58(
20641
+ /* @__PURE__ */ jsx59(
20519
20642
  HITLApprovalPanel,
20520
20643
  {
20521
20644
  request: stream.pendingHITLRequest,
@@ -20524,7 +20647,7 @@ function Chat({
20524
20647
  attachToComposer: true
20525
20648
  }
20526
20649
  ),
20527
- runtimeCapabilityPalette && /* @__PURE__ */ jsx58(
20650
+ runtimeCapabilityPalette && /* @__PURE__ */ jsx59(
20528
20651
  SlashPalette,
20529
20652
  {
20530
20653
  palette: runtimeCapabilityPalette,
@@ -20538,7 +20661,7 @@ function Chat({
20538
20661
  onSelect: selectSlashPaletteOption
20539
20662
  }
20540
20663
  ),
20541
- /* @__PURE__ */ jsx58("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ jsxs40(
20664
+ /* @__PURE__ */ jsx59("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ jsxs41(
20542
20665
  "div",
20543
20666
  {
20544
20667
  "data-slot": "composer-input-shell",
@@ -20552,7 +20675,7 @@ function Chat({
20552
20675
  composerInputRoundedClass
20553
20676
  ),
20554
20677
  children: [
20555
- /* @__PURE__ */ jsx58(
20678
+ /* @__PURE__ */ jsx59(
20556
20679
  "div",
20557
20680
  {
20558
20681
  ref: composerInputRef,
@@ -20574,19 +20697,19 @@ function Chat({
20574
20697
  (missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
20575
20698
  ),
20576
20699
  children: renderedComposerParts.map(
20577
- (part, index) => part.type === "text" ? /* @__PURE__ */ jsx58(React54.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ jsx58(ComposerCapabilityToken, { part }, part.key)
20700
+ (part, index) => part.type === "text" ? /* @__PURE__ */ jsx59(React55.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ jsx59(ComposerCapabilityToken, { part }, part.key)
20578
20701
  )
20579
20702
  },
20580
20703
  composerDomVersion
20581
20704
  ),
20582
- /* @__PURE__ */ jsxs40(
20705
+ /* @__PURE__ */ jsxs41(
20583
20706
  "div",
20584
20707
  {
20585
20708
  "data-slot": "composer-action-bar",
20586
20709
  className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
20587
20710
  children: [
20588
- /* @__PURE__ */ jsxs40("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
20589
- /* @__PURE__ */ jsx58("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ jsx58(
20711
+ /* @__PURE__ */ jsxs41("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
20712
+ /* @__PURE__ */ jsx59("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ jsx59(
20590
20713
  ComposerMenu,
20591
20714
  {
20592
20715
  composer,
@@ -20604,20 +20727,20 @@ function Chat({
20604
20727
  disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
20605
20728
  }
20606
20729
  ) }),
20607
- selectedTool && /* @__PURE__ */ jsxs40("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: [
20608
- /* @__PURE__ */ jsx58("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
20609
- /* @__PURE__ */ jsx58(
20730
+ selectedTool && /* @__PURE__ */ jsxs41("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: [
20731
+ /* @__PURE__ */ jsx59("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
20732
+ /* @__PURE__ */ jsx59(
20610
20733
  "button",
20611
20734
  {
20612
20735
  type: "button",
20613
20736
  onClick: () => setSelectedTool(null),
20614
20737
  className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
20615
- children: /* @__PURE__ */ jsx58(X8, { size: 12 })
20738
+ children: /* @__PURE__ */ jsx59(X9, { size: 12 })
20616
20739
  }
20617
20740
  )
20618
20741
  ] })
20619
20742
  ] }),
20620
- /* @__PURE__ */ jsx58("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ jsx58(
20743
+ /* @__PURE__ */ jsx59("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ jsx59(
20621
20744
  SendButton,
20622
20745
  {
20623
20746
  disabled: isSendDisabled,
@@ -20640,7 +20763,7 @@ function Chat({
20640
20763
  ]
20641
20764
  }
20642
20765
  ) }),
20643
- disclaimer?.text && /* @__PURE__ */ jsx58(
20766
+ disclaimer?.text && /* @__PURE__ */ jsx59(
20644
20767
  "p",
20645
20768
  {
20646
20769
  className: cn(
@@ -20650,14 +20773,14 @@ function Chat({
20650
20773
  children: disclaimer.text
20651
20774
  }
20652
20775
  ),
20653
- /* @__PURE__ */ jsxs40("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
20654
- /* @__PURE__ */ jsx58("span", { children: t("chat.poweredBy") }),
20655
- /* @__PURE__ */ jsx58(ContextUsageIndicator, { className: "absolute right-4" })
20776
+ /* @__PURE__ */ jsxs41("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
20777
+ /* @__PURE__ */ jsx59("span", { children: t("chat.poweredBy") }),
20778
+ /* @__PURE__ */ jsx59(ContextUsageIndicator, { className: "absolute right-4" })
20656
20779
  ] })
20657
20780
  ]
20658
20781
  }
20659
20782
  ),
20660
- /* @__PURE__ */ jsx58(
20783
+ /* @__PURE__ */ jsx59(
20661
20784
  SettingsSheet,
20662
20785
  {
20663
20786
  open: petSettingsOpen,
@@ -20667,11 +20790,11 @@ function Chat({
20667
20790
  onSave: savePetLocalSettings
20668
20791
  }
20669
20792
  ),
20670
- /* @__PURE__ */ jsx58(PetBridge, { pet: effectivePet, state: petAutoState })
20793
+ /* @__PURE__ */ jsx59(PetBridge, { pet: effectivePet, state: petAutoState })
20671
20794
  ]
20672
20795
  }
20673
20796
  ),
20674
- taskSummaryAvailable && taskSummaryDocked && taskSummaryOpen && /* @__PURE__ */ jsx58("div", { className: "pointer-events-none absolute right-5 top-3 z-20 max-h-[calc(100%-1.5rem)] w-80", children: /* @__PURE__ */ jsx58(
20797
+ taskSummaryAvailable && taskSummaryDocked && taskSummaryOpen && /* @__PURE__ */ jsx59("div", { className: "pointer-events-none absolute right-5 top-3 z-20 max-h-[calc(100%-1.5rem)] w-80", children: /* @__PURE__ */ jsx59(
20675
20798
  TaskSummaryPanel,
20676
20799
  {
20677
20800
  ...taskSummaryProps,
@@ -20684,10 +20807,10 @@ function Chat({
20684
20807
  }
20685
20808
 
20686
20809
  // src/components/ui/separator.tsx
20687
- import * as React55 from "react";
20688
- import { jsx as jsx59 } from "react/jsx-runtime";
20689
- var Separator = React55.forwardRef(
20690
- ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsx59(
20810
+ import * as React56 from "react";
20811
+ import { jsx as jsx60 } from "react/jsx-runtime";
20812
+ var Separator = React56.forwardRef(
20813
+ ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsx60(
20691
20814
  "div",
20692
20815
  {
20693
20816
  ref,