@xpert-ai/chatkit-ui 0.5.13 → 0.5.14

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 (334) hide show
  1. package/dist/app/assets/{_baseUniq-6ZFgK1tY.js → _baseUniq-BXI7T8Dw.js} +1 -1
  2. package/dist/app/assets/{abap-DWF9Trwf.js → abap-D-EyZ4nz.js} +1 -1
  3. package/dist/app/assets/{abnf-TAj8odMm.js → abnf-C4D_ajan.js} +1 -1
  4. package/dist/app/assets/{actionscript-C6mhOoWx.js → actionscript-r0CeEwQ2.js} +1 -1
  5. package/dist/app/assets/{ada-D-8eCfSH.js → ada-BVnErPbz.js} +1 -1
  6. package/dist/app/assets/{agda-DnlHkQLu.js → agda-DGFLmVOF.js} +1 -1
  7. package/dist/app/assets/{al-wth0pvZQ.js → al-CqRMXVdp.js} +1 -1
  8. package/dist/app/assets/{antlr4-DeV2mrOi.js → antlr4-DBHBm6uq.js} +1 -1
  9. package/dist/app/assets/{apacheconf-axi7NdXK.js → apacheconf-DYjz_OYf.js} +1 -1
  10. package/dist/app/assets/{apex-BIWbapRI.js → apex--V3KuTol.js} +1 -1
  11. package/dist/app/assets/{apl-DLp60373.js → apl-CxqY9-GY.js} +1 -1
  12. package/dist/app/assets/{applescript-DJFERC3T.js → applescript-DeSEz3nk.js} +1 -1
  13. package/dist/app/assets/{aql-DT6gSXyQ.js → aql-ivXRGp4L.js} +1 -1
  14. package/dist/app/assets/{arc-Ds6XkYc-.js → arc-BuBWtq_B.js} +1 -1
  15. package/dist/app/assets/{architectureDiagram-Q4EWVU46-BSeUKXpW.js → architectureDiagram-Q4EWVU46-UFZ94GIQ.js} +1 -1
  16. package/dist/app/assets/{arduino-Bjw55sXZ.js → arduino-CUcHKCgr.js} +1 -1
  17. package/dist/app/assets/{arff-C2FmmHbU.js → arff-Cu79UaXp.js} +1 -1
  18. package/dist/app/assets/{asciidoc-Cra_4rtA.js → asciidoc-D-i3ZczB.js} +1 -1
  19. package/dist/app/assets/{asm6502-SKvVoauI.js → asm6502-20VW9EjJ.js} +1 -1
  20. package/dist/app/assets/{asmatmel-CZ9yXIuT.js → asmatmel-WPH5nSLe.js} +1 -1
  21. package/dist/app/assets/{aspnet-Cu4nTtKj.js → aspnet-MW3pllRq.js} +1 -1
  22. package/dist/app/assets/{autohotkey-DGR-bmww.js → autohotkey-0J3Fd6zK.js} +1 -1
  23. package/dist/app/assets/{autoit-foDsJo_-.js → autoit-BQuPP7VJ.js} +1 -1
  24. package/dist/app/assets/{avisynth-nHNE11uo.js → avisynth-DORBGGmg.js} +1 -1
  25. package/dist/app/assets/{avro-idl-Dmx_NCmz.js → avro-idl-0byWqgGX.js} +1 -1
  26. package/dist/app/assets/{bash-0HrDY6Lc.js → bash-CJDzp2aL.js} +1 -1
  27. package/dist/app/assets/{basic-CKgAasoo.js → basic-BlnaVEi_.js} +1 -1
  28. package/dist/app/assets/{batch-B6U0xIP9.js → batch-DVgl_KJ-.js} +1 -1
  29. package/dist/app/assets/{bbcode-BsYxIGOX.js → bbcode-CjBPn0t5.js} +1 -1
  30. package/dist/app/assets/{bicep-CTms9RW8.js → bicep-D7HSDEDP.js} +1 -1
  31. package/dist/app/assets/{birb-TqMRWcJ-.js → birb-DqKONCaK.js} +1 -1
  32. package/dist/app/assets/{bison-BmX2KdpY.js → bison-ag9smHtW.js} +1 -1
  33. package/dist/app/assets/{blockDiagram-DXYQGD6D-Bx8AIk97.js → blockDiagram-DXYQGD6D-B9hN_ikD.js} +1 -1
  34. package/dist/app/assets/{bnf-JQJ5eQdZ.js → bnf-DQ2kHYa5.js} +1 -1
  35. package/dist/app/assets/{brainfuck-C2u9JGjo.js → brainfuck-9bKpsRk-.js} +1 -1
  36. package/dist/app/assets/{brightscript-StgFgAi9.js → brightscript-uddTcu4C.js} +1 -1
  37. package/dist/app/assets/{bro-BQBwNPz1.js → bro-Bd870iTO.js} +1 -1
  38. package/dist/app/assets/{bsl-DsMpfd5F.js → bsl-Avfe_ADM.js} +1 -1
  39. package/dist/app/assets/{c-Mo5AGsdB.js → c-2uS1ohnd.js} +1 -1
  40. package/dist/app/assets/{c4Diagram-AHTNJAMY-DT-mA7uO.js → c4Diagram-AHTNJAMY-sGgLuinA.js} +1 -1
  41. package/dist/app/assets/{cfscript-5DcO-yfP.js → cfscript-DqvHFL4D.js} +1 -1
  42. package/dist/app/assets/{chaiscript-UzHjuA-1.js → chaiscript-MloEatV-.js} +1 -1
  43. package/dist/app/assets/channel-Cse2bgqv.js +1 -0
  44. package/dist/app/assets/{chunk-4BX2VUAB-D4OlwbGP.js → chunk-4BX2VUAB-BmW6GdsH.js} +1 -1
  45. package/dist/app/assets/{chunk-4TB4RGXK-e9KeJY17.js → chunk-4TB4RGXK-CKRcBflB.js} +1 -1
  46. package/dist/app/assets/{chunk-55IACEB6-CZAtEArU.js → chunk-55IACEB6-Eav3nSJJ.js} +1 -1
  47. package/dist/app/assets/{chunk-EDXVE4YY-COxJh3DH.js → chunk-EDXVE4YY-Bvp7aZNS.js} +1 -1
  48. package/dist/app/assets/{chunk-FMBD7UC4-D_dBWPlk.js → chunk-FMBD7UC4-Vg_B-ILm.js} +1 -1
  49. package/dist/app/assets/{chunk-OYMX7WX6-BqoQo_Ev.js → chunk-OYMX7WX6-CxZ29xXq.js} +1 -1
  50. package/dist/app/assets/{chunk-QZHKN3VN-Bx-8w8DJ.js → chunk-QZHKN3VN-BPIWo3Iz.js} +1 -1
  51. package/dist/app/assets/{chunk-YZCP3GAM-DJqQhrr8.js → chunk-YZCP3GAM-GC-seHwv.js} +1 -1
  52. package/dist/app/assets/{cil-8yfoE6xO.js → cil-zMiCTMd2.js} +1 -1
  53. package/dist/app/assets/classDiagram-6PBFFD2Q-HDuPp24m.js +1 -0
  54. package/dist/app/assets/classDiagram-v2-HSJHXN6E-HDuPp24m.js +1 -0
  55. package/dist/app/assets/{clike-5gubaaDF.js → clike-DeMktiAr.js} +1 -1
  56. package/dist/app/assets/{clojure-BU6IXSBW.js → clojure-BgDuO6KJ.js} +1 -1
  57. package/dist/app/assets/clone-DHnqgElx.js +1 -0
  58. package/dist/app/assets/{cmake-DBSoV6JC.js → cmake-pfbh49RZ.js} +1 -1
  59. package/dist/app/assets/{cobol-CVwPaGMX.js → cobol-gRo96oV8.js} +1 -1
  60. package/dist/app/assets/{coffeescript-Yr9sfBFB.js → coffeescript-joAYXd76.js} +1 -1
  61. package/dist/app/assets/{concurnas-CEYA2nSC.js → concurnas-L83u7tgM.js} +1 -1
  62. package/dist/app/assets/{coq-C2Nkpmyg.js → coq-Cj-rcPnX.js} +1 -1
  63. package/dist/app/assets/{core-BpLJDSQz.js → core-DiP7EQIw.js} +1 -1
  64. package/dist/app/assets/{cose-bilkent-S5V4N54A-Djhwby_J.js → cose-bilkent-S5V4N54A-SSRonnIL.js} +1 -1
  65. package/dist/app/assets/{cpp-Dlvu7zEC.js → cpp-BkfeVaCa.js} +1 -1
  66. package/dist/app/assets/{crystal-C-NuH51e.js → crystal-Dg25tlyL.js} +1 -1
  67. package/dist/app/assets/{csharp-BiFSEt98.js → csharp-BiJxgdPO.js} +1 -1
  68. package/dist/app/assets/{cshtml-tg8jBeUN.js → cshtml-DTgJhoLW.js} +1 -1
  69. package/dist/app/assets/{csp-DjFcLsKu.js → csp-CrnaYZDk.js} +1 -1
  70. package/dist/app/assets/{css-HzYb-mkB.js → css-BmfKLG2T.js} +1 -1
  71. package/dist/app/assets/{css-extras-BdXLVqkQ.js → css-extras-B8pVT9JD.js} +1 -1
  72. package/dist/app/assets/{csv-BRmsOX-t.js → csv-CewM0jHO.js} +1 -1
  73. package/dist/app/assets/{cypher-CNIiH4Do.js → cypher-D9L0Xpp7.js} +1 -1
  74. package/dist/app/assets/{d-DtAgdegv.js → d-3alF6-58.js} +1 -1
  75. package/dist/app/assets/{dagre-KV5264BT-W0gS_n5A.js → dagre-KV5264BT-DYq3BOKQ.js} +1 -1
  76. package/dist/app/assets/{dart-LZOryyfk.js → dart-D-tUUe4U.js} +1 -1
  77. package/dist/app/assets/{dataweave-NCXDKb_T.js → dataweave-CdigFRVm.js} +1 -1
  78. package/dist/app/assets/{dax-Bn12wjU2.js → dax-BfoZJt-Z.js} +1 -1
  79. package/dist/app/assets/{dhall-vpyA1fIP.js → dhall-DdxXJMMZ.js} +1 -1
  80. package/dist/app/assets/{diagram-5BDNPKRD-B1DgxwOs.js → diagram-5BDNPKRD-DXKj6X7M.js} +1 -1
  81. package/dist/app/assets/{diagram-G4DWMVQ6-BfbFkNwe.js → diagram-G4DWMVQ6-DD4aKlwj.js} +1 -1
  82. package/dist/app/assets/{diagram-MMDJMWI5-btOcDbqz.js → diagram-MMDJMWI5-njm017YR.js} +1 -1
  83. package/dist/app/assets/{diagram-TYMM5635-C2Jip2Pk.js → diagram-TYMM5635-azeX36n2.js} +1 -1
  84. package/dist/app/assets/{diff-CtiFCx9L.js → diff-C-yn8RRu.js} +1 -1
  85. package/dist/app/assets/{django-CLA1Ea5N.js → django-OwPewiXK.js} +1 -1
  86. package/dist/app/assets/{dns-zone-file-BLRs1VDf.js → dns-zone-file-GJuMO-5M.js} +1 -1
  87. package/dist/app/assets/{docker-tMg2PBwj.js → docker-BCNqopqW.js} +1 -1
  88. package/dist/app/assets/{dot-CScyHsco.js → dot-pTr4m1z8.js} +1 -1
  89. package/dist/app/assets/{ebnf-Dbto0Gzd.js → ebnf-D9hA1wBK.js} +1 -1
  90. package/dist/app/assets/{editorconfig-CXuKRBfR.js → editorconfig-auCVaEE_.js} +1 -1
  91. package/dist/app/assets/{eiffel-C2hw5pN0.js → eiffel-DPbyAFdd.js} +1 -1
  92. package/dist/app/assets/{ejs-DENlwqyK.js → ejs-Cba0JpAI.js} +1 -1
  93. package/dist/app/assets/{elixir-l7EJ9gd7.js → elixir-Bc_bvYHD.js} +1 -1
  94. package/dist/app/assets/{elm-BOxDipBg.js → elm-DdX2q9P-.js} +1 -1
  95. package/dist/app/assets/{erDiagram-SMLLAGMA-DthDd7Ea.js → erDiagram-SMLLAGMA-hbYypg4k.js} +1 -1
  96. package/dist/app/assets/{erb-BG16G-EJ.js → erb-umtVPOwV.js} +1 -1
  97. package/dist/app/assets/{erlang-DTXv9ULs.js → erlang-_x64G89-.js} +1 -1
  98. package/dist/app/assets/{etlua-DMAVDR7i.js → etlua-C1AB2uqK.js} +1 -1
  99. package/dist/app/assets/{excel-formula-Cyb-8eGe.js → excel-formula-C1Rjk813.js} +1 -1
  100. package/dist/app/assets/{factor-oeciKduw.js → factor-BGzHN0HR.js} +1 -1
  101. package/dist/app/assets/{false-DgmIo1dN.js → false-CcOKyoeO.js} +1 -1
  102. package/dist/app/assets/{firestore-security-rules-DtjxKyUA.js → firestore-security-rules-DpY_QU6q.js} +1 -1
  103. package/dist/app/assets/{flow-cBoaYynS.js → flow-DTW9n3_O.js} +1 -1
  104. package/dist/app/assets/{flowDiagram-DWJPFMVM-jE-friCu.js → flowDiagram-DWJPFMVM-DHpbncsk.js} +1 -1
  105. package/dist/app/assets/{fortran-Bbgqa3YN.js → fortran-CrH4xGT8.js} +1 -1
  106. package/dist/app/assets/{fsharp-Dg4Cxhfj.js → fsharp-BOAVk84R.js} +1 -1
  107. package/dist/app/assets/{ftl-BgyX-G2_.js → ftl-Bf7e4ohH.js} +1 -1
  108. package/dist/app/assets/{ganttDiagram-T4ZO3ILL-iM-RmS8g.js → ganttDiagram-T4ZO3ILL-Dg7OrRry.js} +1 -1
  109. package/dist/app/assets/{gap-SY68x2A5.js → gap-DEnT59qr.js} +1 -1
  110. package/dist/app/assets/{gcode-BvGPctTN.js → gcode-DIMe2vjZ.js} +1 -1
  111. package/dist/app/assets/{gdscript-B19GrgYm.js → gdscript-Cf2tApbU.js} +1 -1
  112. package/dist/app/assets/{gedcom-OCgqKeZM.js → gedcom-TyWpffRf.js} +1 -1
  113. package/dist/app/assets/{gherkin-Abjyq31i.js → gherkin-CtAYOd2n.js} +1 -1
  114. package/dist/app/assets/{git-Ii6Pg8tm.js → git-HN03lGdF.js} +1 -1
  115. package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-BYRfaC8Z.js → gitGraphDiagram-UUTBAWPF-mnmmS1yy.js} +1 -1
  116. package/dist/app/assets/{glsl-BJE11FOX.js → glsl-BiZ-slvl.js} +1 -1
  117. package/dist/app/assets/{gml-CDxepHTY.js → gml-qNaKxT1M.js} +1 -1
  118. package/dist/app/assets/{gn-B6Vy0I-L.js → gn-CrCreTwP.js} +1 -1
  119. package/dist/app/assets/{go-DFpqQzU0.js → go-D-GmUWFF.js} +1 -1
  120. package/dist/app/assets/{go-module-DklZG6hD.js → go-module-CwsdUHrV.js} +1 -1
  121. package/dist/app/assets/{graph-ByIAcL_S.js → graph-d5dA6b9r.js} +1 -1
  122. package/dist/app/assets/{graphql-Dprg1sSR.js → graphql-B2q2lsn_.js} +1 -1
  123. package/dist/app/assets/{groovy-DGH1y-dA.js → groovy-DeymKzSD.js} +1 -1
  124. package/dist/app/assets/{haml-BtBB94NQ.js → haml-CChf8tT6.js} +1 -1
  125. package/dist/app/assets/{handlebars-Anm_gWy_.js → handlebars-ZL4EGXwB.js} +1 -1
  126. package/dist/app/assets/{haskell-DzJtEOF4.js → haskell-DxalTt0K.js} +1 -1
  127. package/dist/app/assets/{haxe-Dk-QHEY7.js → haxe-CRB7OG4j.js} +1 -1
  128. package/dist/app/assets/{hcl-ClhI4wv-.js → hcl-_Ibwt3jR.js} +1 -1
  129. package/dist/app/assets/{hlsl-9fFB-v6O.js → hlsl-2M5RnjJv.js} +1 -1
  130. package/dist/app/assets/{hoon-C8xF2ABJ.js → hoon-Bzj-oQ3m.js} +1 -1
  131. package/dist/app/assets/{hpkp-DGjTIjOk.js → hpkp-DH7SmT5L.js} +1 -1
  132. package/dist/app/assets/{hsts-CJCweg07.js → hsts-C6L_MMV3.js} +1 -1
  133. package/dist/app/assets/{http-17qWz8X9.js → http-gjFQjV0P.js} +1 -1
  134. package/dist/app/assets/{ichigojam-DXvpD529.js → ichigojam-C-GH_u3s.js} +1 -1
  135. package/dist/app/assets/{icon-CAZspcds.js → icon-BVswkxlX.js} +1 -1
  136. package/dist/app/assets/{icu-message-format-C6jXAnXd.js → icu-message-format-eBhF3V70.js} +1 -1
  137. package/dist/app/assets/{idris-J3UTRYwl.js → idris-Cb6W3_-q.js} +1 -1
  138. package/dist/app/assets/{iecst-4WL79ek5.js → iecst-56grWiTv.js} +1 -1
  139. package/dist/app/assets/{ignore-_tm9LFvX.js → ignore-4XHcQ9vx.js} +1 -1
  140. package/dist/app/assets/{index-u1mkD0qp.js → index-DY1b1qzN.js} +138 -138
  141. package/dist/app/assets/{infoDiagram-42DDH7IO-syPKSQF7.js → infoDiagram-42DDH7IO-DZfsNiyO.js} +1 -1
  142. package/dist/app/assets/{inform7-Cc8Ia9ol.js → inform7-BWlRbsT9.js} +1 -1
  143. package/dist/app/assets/{ini-VVKCzOqn.js → ini-kTA-a-YT.js} +1 -1
  144. package/dist/app/assets/{io-JNDhxl0F.js → io-CLtJ5RFn.js} +1 -1
  145. package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-XyLxBtiD.js → ishikawaDiagram-UXIWVN3A-CEFbPMXR.js} +1 -1
  146. package/dist/app/assets/{j-BHUyDBez.js → j-B04Qo9HS.js} +1 -1
  147. package/dist/app/assets/{java-DtoEHi0Q.js → java-DANIgJ8u.js} +1 -1
  148. package/dist/app/assets/{javadoc-D0EqGQCT.js → javadoc-DWaynIjd.js} +1 -1
  149. package/dist/app/assets/{javadoclike-CLvYgAKV.js → javadoclike-Bh7jL2IJ.js} +1 -1
  150. package/dist/app/assets/{javascript-DLHmXfnQ.js → javascript-697spk67.js} +1 -1
  151. package/dist/app/assets/{javastacktrace-DFIrDubt.js → javastacktrace-BmhiUWZE.js} +1 -1
  152. package/dist/app/assets/{jexl-BW-XseY9.js → jexl-DvcrnKUU.js} +1 -1
  153. package/dist/app/assets/{jolie-DebTzbDr.js → jolie-C134P_jy.js} +1 -1
  154. package/dist/app/assets/{journeyDiagram-VCZTEJTY-DT0_1QjQ.js → journeyDiagram-VCZTEJTY-CZyOkNPH.js} +1 -1
  155. package/dist/app/assets/{jq-D3aZcCzB.js → jq-lBQfmzFU.js} +1 -1
  156. package/dist/app/assets/{js-extras-B-LEn2Pj.js → js-extras-Bvktqp7t.js} +1 -1
  157. package/dist/app/assets/{js-templates-ivFLl5w2.js → js-templates-BgeqKRHr.js} +1 -1
  158. package/dist/app/assets/{jsdoc-Cs5pswPx.js → jsdoc-C-dqugja.js} +1 -1
  159. package/dist/app/assets/{json-DchHgDYQ.js → json-Dyfzed8o.js} +1 -1
  160. package/dist/app/assets/{json5-DVwOmNXl.js → json5-B6cu6fBu.js} +1 -1
  161. package/dist/app/assets/{jsonp-BRHPl4d1.js → jsonp-CwWMW6U4.js} +1 -1
  162. package/dist/app/assets/{jsstacktrace-fTjz0PX0.js → jsstacktrace-CTJJuL1N.js} +1 -1
  163. package/dist/app/assets/{jsx-DAqizUfV.js → jsx-BK5VV-Bc.js} +1 -1
  164. package/dist/app/assets/{julia-XXWJxlc4.js → julia-O6BULbE3.js} +1 -1
  165. package/dist/app/assets/{kanban-definition-6JOO6SKY-BALi0bF0.js → kanban-definition-6JOO6SKY-t4B-2de6.js} +1 -1
  166. package/dist/app/assets/{keepalived-BZHdkplB.js → keepalived-NJhOHvb3.js} +1 -1
  167. package/dist/app/assets/{keyman-2I11eKM6.js → keyman-BAOohQH4.js} +1 -1
  168. package/dist/app/assets/{kotlin-kjwJFFdd.js → kotlin-DRgEDt2x.js} +1 -1
  169. package/dist/app/assets/{kumir-CfgPMU5v.js → kumir-CHQw-Q2J.js} +1 -1
  170. package/dist/app/assets/{kusto-DO0qzP2e.js → kusto-CQ7VRhiZ.js} +1 -1
  171. package/dist/app/assets/{latex-CojTGFIP.js → latex-Bcv7CKb8.js} +1 -1
  172. package/dist/app/assets/{latte-G-yuW-i2.js → latte-wHK8wk1M.js} +1 -1
  173. package/dist/app/assets/{layout-D2nfdZhR.js → layout-ClyezRwh.js} +1 -1
  174. package/dist/app/assets/{less-V3QyGdEn.js → less-AcCx2OSh.js} +1 -1
  175. package/dist/app/assets/{lilypond-Bs3htHG0.js → lilypond-CyXolOPs.js} +1 -1
  176. package/dist/app/assets/{linear-D585IpEg.js → linear-CNZSlS9R.js} +1 -1
  177. package/dist/app/assets/{liquid-BROVidwA.js → liquid-R1_I489g.js} +1 -1
  178. package/dist/app/assets/{lisp-BuKmiSQ0.js → lisp-BoH2sXHo.js} +1 -1
  179. package/dist/app/assets/{livescript-BkOC69KT.js → livescript-BoZRg_1B.js} +1 -1
  180. package/dist/app/assets/{llvm-BEOuLbHt.js → llvm-el2xhJyq.js} +1 -1
  181. package/dist/app/assets/{log-CBHfMsx5.js → log-DDUo0D7L.js} +1 -1
  182. package/dist/app/assets/{lolcode-BtmDxNNh.js → lolcode-DSV8deXb.js} +1 -1
  183. package/dist/app/assets/{lua-DDf-Ah8a.js → lua-CKeK5k7Q.js} +1 -1
  184. package/dist/app/assets/{magma-Dm5_uhPM.js → magma-BRKc4Tic.js} +1 -1
  185. package/dist/app/assets/{makefile--n3oMszP.js → makefile-UbMQ2A1c.js} +1 -1
  186. package/dist/app/assets/{markdown-Ctzuv0r_.js → markdown-C3XSz14_.js} +1 -1
  187. package/dist/app/assets/{markup-Dfl-0CWq.js → markup-CexvwbP4.js} +1 -1
  188. package/dist/app/assets/{markup-templating-De32Zpcx.js → markup-templating-Dt15tksf.js} +1 -1
  189. package/dist/app/assets/{matlab-DAm-y67H.js → matlab-By53YHOl.js} +1 -1
  190. package/dist/app/assets/{maxscript-D4xpVuQI.js → maxscript-C14jq75Q.js} +1 -1
  191. package/dist/app/assets/{mel-C56EZOPv.js → mel-N2i-hVeF.js} +1 -1
  192. package/dist/app/assets/{mermaid-BUojmUbK.js → mermaid-9Tq0j11d.js} +1 -1
  193. package/dist/app/assets/{min-DiwQj-mK.js → min-S_pP2xdu.js} +1 -1
  194. package/dist/app/assets/{mindmap-definition-QFDTVHPH-JKTcRI_P.js → mindmap-definition-QFDTVHPH-CQoQCXxA.js} +1 -1
  195. package/dist/app/assets/{mizar-EwWemVFX.js → mizar-D27s94v7.js} +1 -1
  196. package/dist/app/assets/{mongodb-CY_xtl82.js → mongodb-COHhFrKH.js} +1 -1
  197. package/dist/app/assets/{monkey-CcLpEhVw.js → monkey-BPFS8v_V.js} +1 -1
  198. package/dist/app/assets/{moonscript-BK3rdVpx.js → moonscript-qcdf0FsJ.js} +1 -1
  199. package/dist/app/assets/{n1ql-BxFD2AAF.js → n1ql-CAMJ9BUI.js} +1 -1
  200. package/dist/app/assets/{n4js-Dw4n_3ZU.js → n4js-DsEQbbRu.js} +1 -1
  201. package/dist/app/assets/{nand2tetris-hdl-USZv6bGA.js → nand2tetris-hdl-BTJS-ZaQ.js} +1 -1
  202. package/dist/app/assets/{naniscript-DTWcDUeq.js → naniscript-CHqpUyQp.js} +1 -1
  203. package/dist/app/assets/{nasm-D5y29hdi.js → nasm-DFxuk91d.js} +1 -1
  204. package/dist/app/assets/{neon-C7MMOaKb.js → neon-nJr6YZoU.js} +1 -1
  205. package/dist/app/assets/{nevod-KyPcyq8u.js → nevod-DEc3NK27.js} +1 -1
  206. package/dist/app/assets/{nginx-DI5DWas1.js → nginx-Tjm7q69C.js} +1 -1
  207. package/dist/app/assets/{nim-Bf7cNxf4.js → nim-VguiS6Bq.js} +1 -1
  208. package/dist/app/assets/{nix-DqdX6j1Y.js → nix-yWM9t3CY.js} +1 -1
  209. package/dist/app/assets/{nsis-CwpSmNvk.js → nsis-BM0iXiok.js} +1 -1
  210. package/dist/app/assets/{objectivec-CGz28Htp.js → objectivec-C3LCnAv0.js} +1 -1
  211. package/dist/app/assets/{ocaml-C0Qs1R7e.js → ocaml--5vg_KaF.js} +1 -1
  212. package/dist/app/assets/{opencl-CbcT4zk_.js → opencl-Ctv6lBFw.js} +1 -1
  213. package/dist/app/assets/{openqasm-Dn97wqeX.js → openqasm-J15i0TDx.js} +1 -1
  214. package/dist/app/assets/{oz-DY7-JJSa.js → oz-Blpgy3wX.js} +1 -1
  215. package/dist/app/assets/{parigp-I_awX_TH.js → parigp-DsSx3jqA.js} +1 -1
  216. package/dist/app/assets/{parser-B5y53mqh.js → parser-CP79vB9K.js} +1 -1
  217. package/dist/app/assets/{pascal-BDb6KN1X.js → pascal-DF4tgT6s.js} +1 -1
  218. package/dist/app/assets/{pascaligo-OpMBAxrN.js → pascaligo-P4ePWM4l.js} +1 -1
  219. package/dist/app/assets/{pcaxis-iFtQjQRs.js → pcaxis-D0W39cSD.js} +1 -1
  220. package/dist/app/assets/{peoplecode-B0zod9MZ.js → peoplecode-yIGizDz9.js} +1 -1
  221. package/dist/app/assets/{perl-Cz6lJlZo.js → perl-BozAvdb7.js} +1 -1
  222. package/dist/app/assets/{php-bGC5BlGY.js → php-BCUi-P1U.js} +1 -1
  223. package/dist/app/assets/{php-extras-CkZ9encI.js → php-extras-D2Tq9L8S.js} +1 -1
  224. package/dist/app/assets/{phpdoc-CU0pLZC-.js → phpdoc-4Waez8Jr.js} +1 -1
  225. package/dist/app/assets/{pieDiagram-DEJITSTG-D7e7cLnS.js → pieDiagram-DEJITSTG-BpkNL3Si.js} +1 -1
  226. package/dist/app/assets/{plsql-BIskjoqp.js → plsql-BOQEzHOU.js} +1 -1
  227. package/dist/app/assets/{powerquery-ZlfqD1RN.js → powerquery-C9dswOUo.js} +1 -1
  228. package/dist/app/assets/{powershell-DpZ48_Z3.js → powershell-peQmnf7t.js} +1 -1
  229. package/dist/app/assets/{processing-BLVsWgLL.js → processing-Clzi_VlF.js} +1 -1
  230. package/dist/app/assets/{prolog-iwjHzZZh.js → prolog-D_MNGIZA.js} +1 -1
  231. package/dist/app/assets/{promql-BkSPUqzV.js → promql-D2GrCJ7g.js} +1 -1
  232. package/dist/app/assets/{properties-DWuP1Y6w.js → properties-C1UFMkb6.js} +1 -1
  233. package/dist/app/assets/{protobuf-Cy4V05b-.js → protobuf-BCJM4lLJ.js} +1 -1
  234. package/dist/app/assets/{psl-BxTfwXpV.js → psl-Chkg-F6m.js} +1 -1
  235. package/dist/app/assets/{pug-DgWmL07a.js → pug-DVl3jqV0.js} +1 -1
  236. package/dist/app/assets/{puppet-CinHgGuF.js → puppet-DuMFcNc5.js} +1 -1
  237. package/dist/app/assets/{pure-BI-SA0Ee.js → pure-rZfaWhS5.js} +1 -1
  238. package/dist/app/assets/{purebasic-CLosFLJz.js → purebasic-DV3yvOHh.js} +1 -1
  239. package/dist/app/assets/{purescript-CYRb1XZ0.js → purescript-BnUKC-jf.js} +1 -1
  240. package/dist/app/assets/{q-Cu8YxC-p.js → q-C38kJymJ.js} +1 -1
  241. package/dist/app/assets/{qml-OF1DwKXi.js → qml-snU_RaaT.js} +1 -1
  242. package/dist/app/assets/{qore-BQnxV4XB.js → qore-DpTRPFtu.js} +1 -1
  243. package/dist/app/assets/{qsharp-k5eJXqUq.js → qsharp-CPZ5yHlv.js} +1 -1
  244. package/dist/app/assets/{quadrantDiagram-34T5L4WZ-B7Z9w4UC.js → quadrantDiagram-34T5L4WZ-B7_Qfocy.js} +1 -1
  245. package/dist/app/assets/{r-Oc5SWiw7.js → r-BvzM1hZQ.js} +1 -1
  246. package/dist/app/assets/{racket-XA2O6BAA.js → racket-ErmuKwH-.js} +1 -1
  247. package/dist/app/assets/{reason-BlPV_-ih.js → reason-G7Zu0nSD.js} +1 -1
  248. package/dist/app/assets/{regex-lLlWVBI5.js → regex-D_BN_jue.js} +1 -1
  249. package/dist/app/assets/{rego-Cju6HngJ.js → rego-DvwvduBH.js} +1 -1
  250. package/dist/app/assets/{renpy-D4YiCuiK.js → renpy-3NuLSjJo.js} +1 -1
  251. package/dist/app/assets/{requirementDiagram-MS252O5E-WxC8Qdk2.js → requirementDiagram-MS252O5E-syvqq2_Q.js} +1 -1
  252. package/dist/app/assets/{rest-CZreUelq.js → rest-CHSSIHMs.js} +1 -1
  253. package/dist/app/assets/{rip-CseFqLdk.js → rip-DZ3RdFTN.js} +1 -1
  254. package/dist/app/assets/{roboconf-CsSE0UBl.js → roboconf-Bo8Ycr-R.js} +1 -1
  255. package/dist/app/assets/{robotframework-pIJmgAYP.js → robotframework-C8YuXAD5.js} +1 -1
  256. package/dist/app/assets/{ruby-D1emo2Mn.js → ruby-CbPTMHul.js} +1 -1
  257. package/dist/app/assets/{rust-CPDAYJ8R.js → rust-Be6tRdyn.js} +1 -1
  258. package/dist/app/assets/{sankeyDiagram-XADWPNL6-DnzC9Lo8.js → sankeyDiagram-XADWPNL6-DIbRw1Eb.js} +1 -1
  259. package/dist/app/assets/{sas-DFxnymmq.js → sas-CEgNcYVW.js} +1 -1
  260. package/dist/app/assets/{sass-DdlvBdYn.js → sass-CugWuS5v.js} +1 -1
  261. package/dist/app/assets/{scala-G_4XubRc.js → scala-_i3ArlCz.js} +1 -1
  262. package/dist/app/assets/{scheme-DGP-mNqB.js → scheme-CeS9bTp6.js} +1 -1
  263. package/dist/app/assets/{scss-C1G-8kab.js → scss-DkziYd94.js} +1 -1
  264. package/dist/app/assets/{sequenceDiagram-FGHM5R23-DMP_cyFC.js → sequenceDiagram-FGHM5R23-BnsEmyT-.js} +1 -1
  265. package/dist/app/assets/{shell-session-C65geZNK.js → shell-session-0So4PVyL.js} +1 -1
  266. package/dist/app/assets/{smali-BW7qfB4z.js → smali-CMKqjHCB.js} +1 -1
  267. package/dist/app/assets/{smalltalk-CEf3KR-0.js → smalltalk-C82ppWp6.js} +1 -1
  268. package/dist/app/assets/{smarty-CYa-Qg4N.js → smarty-D8aTwHdz.js} +1 -1
  269. package/dist/app/assets/{sml-D-TJsKFs.js → sml-BbwlNtiO.js} +1 -1
  270. package/dist/app/assets/{solidity-ZHwj7ygS.js → solidity-CXfgGVXF.js} +1 -1
  271. package/dist/app/assets/{solution-file-BDARUPM2.js → solution-file-ke_Pmp9Z.js} +1 -1
  272. package/dist/app/assets/{soy-CVzY9-gc.js → soy-DeDIRSJd.js} +1 -1
  273. package/dist/app/assets/{sparql-CtxmuAog.js → sparql-CGXxvkVC.js} +1 -1
  274. package/dist/app/assets/{splunk-spl-BwgIAcdV.js → splunk-spl-0vgXm5QS.js} +1 -1
  275. package/dist/app/assets/{sqf-CEg9K7dB.js → sqf-D7aTsMsn.js} +1 -1
  276. package/dist/app/assets/{sql-C5IOPypk.js → sql-D_e1F0WW.js} +1 -1
  277. package/dist/app/assets/{squirrel-B51VDZR6.js → squirrel-D-rgyYo7.js} +1 -1
  278. package/dist/app/assets/{stan-BJ2IulXg.js → stan-DDTA2Ska.js} +1 -1
  279. package/dist/app/assets/{stateDiagram-FHFEXIEX-CV3HoD83.js → stateDiagram-FHFEXIEX-BObgBUbY.js} +1 -1
  280. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-DtJXELhk.js +1 -0
  281. package/dist/app/assets/{stylus-DIJkk-Ef.js → stylus-Dv08c1SQ.js} +1 -1
  282. package/dist/app/assets/{swift-RQKmu9fi.js → swift-31QglOo3.js} +1 -1
  283. package/dist/app/assets/{systemd-Z9hVcf5D.js → systemd-CbNNwmhS.js} +1 -1
  284. package/dist/app/assets/{t4-cs-DNjRuH01.js → t4-cs-ByVeOnvZ.js} +1 -1
  285. package/dist/app/assets/{t4-templating-DwOKUx3X.js → t4-templating-D647kWrr.js} +1 -1
  286. package/dist/app/assets/{t4-vb-CYg-ky6L.js → t4-vb-Ca8y-TZT.js} +1 -1
  287. package/dist/app/assets/{tap-CSfV-S4B.js → tap-Chk1z2pT.js} +1 -1
  288. package/dist/app/assets/{tcl-OS8u4Jpj.js → tcl-BGksyNQV.js} +1 -1
  289. package/dist/app/assets/{textile--buHK3Ng.js → textile-DcUtfExh.js} +1 -1
  290. package/dist/app/assets/{timeline-definition-GMOUNBTQ-MVmom_nT.js → timeline-definition-GMOUNBTQ-BuR19jYF.js} +1 -1
  291. package/dist/app/assets/{toml-CKOXVMhj.js → toml-B0TYIIa9.js} +1 -1
  292. package/dist/app/assets/{tremor-CUfnVYnJ.js → tremor-LtVZDdaa.js} +1 -1
  293. package/dist/app/assets/{tt2-TL3Wbn7N.js → tt2-DWtZAkIs.js} +1 -1
  294. package/dist/app/assets/{turtle-BED3JMG_.js → turtle-mAcr_dta.js} +1 -1
  295. package/dist/app/assets/{twig-BXa5CWMf.js → twig-CnthLasK.js} +1 -1
  296. package/dist/app/assets/{typescript-BpKCj3Te.js → typescript-DvIa4B81.js} +1 -1
  297. package/dist/app/assets/{typoscript-BEq0cKP-.js → typoscript-Dit5zlyB.js} +1 -1
  298. package/dist/app/assets/{unrealscript-D-6_918o.js → unrealscript-DpVrLAK2.js} +1 -1
  299. package/dist/app/assets/{uorazor-fp8VffOr.js → uorazor-CCeycVPo.js} +1 -1
  300. package/dist/app/assets/{uri-DtOlaNC_.js → uri-3slUKT4e.js} +1 -1
  301. package/dist/app/assets/{v-jFMXRvTW.js → v-Xa4RTBYN.js} +1 -1
  302. package/dist/app/assets/{vala-Ckm-PMbW.js → vala-DlSAZsSo.js} +1 -1
  303. package/dist/app/assets/{vbnet-C8pY22Wp.js → vbnet-R4lo24u-.js} +1 -1
  304. package/dist/app/assets/{velocity-FBSQz-ob.js → velocity-0kxr-DsA.js} +1 -1
  305. package/dist/app/assets/{vennDiagram-DHZGUBPP-D6CB2BIX.js → vennDiagram-DHZGUBPP-DpnN0Uez.js} +1 -1
  306. package/dist/app/assets/{verilog-CpZCf2P8.js → verilog-D49nXLHN.js} +1 -1
  307. package/dist/app/assets/{vhdl-DpqAgdea.js → vhdl-C3QFfzxo.js} +1 -1
  308. package/dist/app/assets/{vim-DQGrssWG.js → vim-DxGkT-EF.js} +1 -1
  309. package/dist/app/assets/{visual-basic-CFed8djL.js → visual-basic-DBYUPVrP.js} +1 -1
  310. package/dist/app/assets/{wardley-RL74JXVD-BzE43Hta.js → wardley-RL74JXVD-B4EKgg8d.js} +1 -1
  311. package/dist/app/assets/{wardleyDiagram-NUSXRM2D-CPnAc2pw.js → wardleyDiagram-NUSXRM2D-Cl8sbyJw.js} +1 -1
  312. package/dist/app/assets/{warpscript-1dCJMiAX.js → warpscript-Bx-L4-ub.js} +1 -1
  313. package/dist/app/assets/{wasm-BZwtOF0e.js → wasm-BDh2nJ-X.js} +1 -1
  314. package/dist/app/assets/{web-idl-B7QCr-7x.js → web-idl-CPQTa02_.js} +1 -1
  315. package/dist/app/assets/{wiki-CcgiGBFq.js → wiki-DYhE8r_p.js} +1 -1
  316. package/dist/app/assets/{wolfram-DThfInJ4.js → wolfram-CgkPY_Hg.js} +1 -1
  317. package/dist/app/assets/{wren-BW7TdpYd.js → wren-YJsqIMex.js} +1 -1
  318. package/dist/app/assets/{xeora-CgLSMyWL.js → xeora-DWC5BtDD.js} +1 -1
  319. package/dist/app/assets/{xml-doc-bDSgYLiB.js → xml-doc-D4-ryj_1.js} +1 -1
  320. package/dist/app/assets/{xojo-DDCJ1kNo.js → xojo-_kax1uV3.js} +1 -1
  321. package/dist/app/assets/{xquery-DZM80jRL.js → xquery-DhN4MqTq.js} +1 -1
  322. package/dist/app/assets/{xychartDiagram-5P7HB3ND-DqkTpuEJ.js → xychartDiagram-5P7HB3ND-DKoR-cDG.js} +1 -1
  323. package/dist/app/assets/{yaml-DTJcZpTY.js → yaml-ClZ8DfcQ.js} +1 -1
  324. package/dist/app/assets/{yang-B_NxH6lp.js → yang-D4ENFlHK.js} +1 -1
  325. package/dist/app/assets/{zig-BbnKSoUc.js → zig-BXCpCUuJ.js} +1 -1
  326. package/dist/app/index.html +1 -1
  327. package/dist/index.cjs +214 -170
  328. package/dist/index.js +170 -126
  329. package/package.json +4 -4
  330. package/dist/app/assets/channel-CzIMlEsT.js +0 -1
  331. package/dist/app/assets/classDiagram-6PBFFD2Q-BhqPR1-m.js +0 -1
  332. package/dist/app/assets/classDiagram-v2-HSJHXN6E-BhqPR1-m.js +0 -1
  333. package/dist/app/assets/clone-BgfhAKUH.js +0 -1
  334. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-DYMcqzDG.js +0 -1
package/dist/index.cjs CHANGED
@@ -68,7 +68,7 @@ module.exports = __toCommonJS(index_exports);
68
68
 
69
69
  // src/components/chat.tsx
70
70
  var React65 = __toESM(require("react"), 1);
71
- var import_lucide_react41 = require("lucide-react");
71
+ var import_lucide_react42 = require("lucide-react");
72
72
  var import_chatkit_types16 = require("@xpert-ai/chatkit-types");
73
73
 
74
74
  // src/lib/utils.ts
@@ -113,6 +113,16 @@ var import_lodash_es = require("lodash-es");
113
113
 
114
114
  // src/lib/thread-context-usage.ts
115
115
  var THREAD_CONTEXT_USAGE_EVENT_TYPE = "thread_context_usage";
116
+ function readStoredContextUsage(result) {
117
+ const usedTokens = normalizeContextUsageNumber(result.usage.context_tokens);
118
+ if ("status" in result && result.status === "unavailable" || usedTokens == null || usedTokens === 0) {
119
+ return { usedTokens: null, status: "unavailable" };
120
+ }
121
+ return {
122
+ usedTokens,
123
+ status: "status" in result && result.status === "stale" ? "stale" : "current"
124
+ };
125
+ }
116
126
  function isRecord(value) {
117
127
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
118
128
  }
@@ -146,15 +156,6 @@ function getThreadContextUsage(state, agentKey) {
146
156
  function getThreadContextUsageTotalTokens(event) {
147
157
  return normalizeContextUsageNumber(event?.usage?.totalTokens);
148
158
  }
149
- function resolveUsedContextSize(options) {
150
- const realtimeUsedTokens = getThreadContextUsageTotalTokens(
151
- options.realtimeUsage
152
- );
153
- if (realtimeUsedTokens != null) {
154
- return realtimeUsedTokens;
155
- }
156
- return normalizeContextUsageNumber(options.fallbackUsedTokens) ?? 0;
157
- }
158
159
 
159
160
  // src/lib/message.ts
160
161
  var ASSISTANT_STREAM_IDLE_TO_THINKING_MS = 2e3;
@@ -2706,7 +2707,9 @@ var en_US_default = {
2706
2707
  contextUsage: {
2707
2708
  label: "Context window",
2708
2709
  full: "{{usedPercent}}% used ({{remainingPercent}}% left)",
2709
- tokensUsed: "{{used}} / {{max}} tokens used"
2710
+ tokensUsed: "{{used}} / {{max}} tokens used",
2711
+ stale: "Last valid usage (not updated by the latest call)",
2712
+ unavailable: "No valid usage available"
2710
2713
  },
2711
2714
  goal: {
2712
2715
  label: "Goal",
@@ -3306,7 +3309,9 @@ var zh_CN_default = {
3306
3309
  contextUsage: {
3307
3310
  label: "\u4E0A\u4E0B\u6587\u7A97\u53E3",
3308
3311
  full: "\u5DF2\u4F7F\u7528 {{usedPercent}}%\uFF08\u5269\u4F59 {{remainingPercent}}%\uFF09",
3309
- tokensUsed: "\u5DF2\u4F7F\u7528 {{used}} / {{max}} tokens"
3312
+ tokensUsed: "\u5DF2\u4F7F\u7528 {{used}} / {{max}} tokens",
3313
+ stale: "\u4E0A\u6B21\u6709\u6548\u7528\u91CF\uFF08\u672C\u6B21\u8C03\u7528\u672A\u66F4\u65B0\uFF09",
3314
+ unavailable: "\u6682\u65E0\u6709\u6548\u7528\u91CF"
3310
3315
  },
3311
3316
  goal: {
3312
3317
  label: "\u76EE\u6807",
@@ -18762,6 +18767,7 @@ function useThreads(limit = DEFAULT_LIMIT, enabled = true) {
18762
18767
 
18763
18768
  // src/components/thread/context-usage-indicator.tsx
18764
18769
  var React52 = __toESM(require("react"), 1);
18770
+ var import_lucide_react36 = require("lucide-react");
18765
18771
 
18766
18772
  // src/components/ui/progress-circle.tsx
18767
18773
  var import_jsx_runtime59 = (
@@ -18851,102 +18857,115 @@ function ContextUsageIndicator({
18851
18857
  }) {
18852
18858
  const { t } = useChatkitTranslation();
18853
18859
  const stream = useStreamContext();
18854
- const [maxContextSize, setMaxContextSize] = React52.useState(
18855
- null
18856
- );
18857
- const [usedContextSize, setUsedContextSize] = React52.useState(
18858
- null
18859
- );
18860
- const [assistantAgentKey, setAssistantAgentKey] = React52.useState(null);
18861
- const latestRealtimeUsageRef = React52.useRef({
18862
- threadId: null,
18863
- agentKey: null,
18864
- usedTokens: null
18865
- });
18866
- const realtimeUsage = React52.useMemo(
18867
- () => getThreadContextUsage(stream.contextUsageByAgentKey, assistantAgentKey),
18868
- [assistantAgentKey, stream.contextUsageByAgentKey]
18860
+ const [assistantContext, setAssistantContext] = React52.useState(null);
18861
+ const assistantReady = assistantContext?.assistantId === stream.assistantId;
18862
+ const assistantAgentKey = assistantReady ? assistantContext?.agentKey ?? null : null;
18863
+ const maxContextSize = assistantReady ? assistantContext?.maxContextSize ?? null : null;
18864
+ const scope = React52.useMemo(
18865
+ () => ({
18866
+ threadId: stream.threadId ?? null,
18867
+ assistantId: stream.assistantId,
18868
+ agentKey: assistantAgentKey
18869
+ }),
18870
+ [stream.threadId, stream.assistantId, assistantAgentKey]
18869
18871
  );
18872
+ const [measurement, setMeasurement] = React52.useState(null);
18873
+ const realtimeUsage = React52.useMemo(() => {
18874
+ const usage = getThreadContextUsage(
18875
+ stream.contextUsageByAgentKey,
18876
+ assistantAgentKey
18877
+ );
18878
+ return usage?.threadId === scope.threadId ? usage : null;
18879
+ }, [assistantAgentKey, scope.threadId, stream.contextUsageByAgentKey]);
18870
18880
  const realtimeUsedContextSize = getThreadContextUsageTotalTokens(realtimeUsage);
18881
+ const latestRealtimeUsageRef = React52.useRef(realtimeUsage);
18871
18882
  const hasApiConfiguration = Boolean(
18872
18883
  stream.apiUrl?.trim() && stream.apiKey?.trim()
18873
18884
  );
18874
18885
  React52.useEffect(() => {
18875
18886
  if (!hasApiConfiguration || !stream.client || !stream.assistantId) {
18876
- setMaxContextSize(null);
18877
- setAssistantAgentKey(null);
18887
+ setAssistantContext(null);
18878
18888
  return;
18879
18889
  }
18880
18890
  let cancelled = false;
18881
18891
  stream.client.assistants.get(stream.assistantId).then((assistant) => {
18882
18892
  if (cancelled || !assistant) return;
18883
- setMaxContextSize(resolveAssistantContextSize(assistant));
18884
- setAssistantAgentKey(resolveAssistantAgentKey(assistant));
18893
+ setAssistantContext({
18894
+ assistantId: stream.assistantId,
18895
+ maxContextSize: resolveAssistantContextSize(assistant),
18896
+ agentKey: resolveAssistantAgentKey(assistant)
18897
+ });
18885
18898
  }).catch((err) => {
18886
18899
  if (cancelled) return;
18887
18900
  console.warn("[Chat] Failed to load assistant context size:", err);
18888
- setAssistantAgentKey(null);
18901
+ setAssistantContext(null);
18889
18902
  });
18890
18903
  return () => {
18891
18904
  cancelled = true;
18892
18905
  };
18893
18906
  }, [hasApiConfiguration, stream.client, stream.assistantId]);
18894
18907
  React52.useEffect(() => {
18895
- latestRealtimeUsageRef.current = {
18896
- threadId: stream.threadId ?? null,
18897
- agentKey: assistantAgentKey,
18898
- usedTokens: realtimeUsedContextSize
18899
- };
18900
- }, [assistantAgentKey, realtimeUsedContextSize, stream.threadId]);
18901
- React52.useEffect(() => {
18902
- if (realtimeUsedContextSize == null) return;
18903
- setUsedContextSize(realtimeUsedContextSize);
18904
- }, [realtimeUsedContextSize]);
18908
+ latestRealtimeUsageRef.current = realtimeUsage;
18909
+ if (realtimeUsedContextSize == null || realtimeUsedContextSize === 0)
18910
+ return;
18911
+ setMeasurement({
18912
+ scope,
18913
+ usedTokens: realtimeUsedContextSize,
18914
+ status: "current"
18915
+ });
18916
+ }, [scope, realtimeUsage, realtimeUsedContextSize]);
18905
18917
  React52.useEffect(() => {
18906
- if (!hasApiConfiguration || !stream.client) {
18907
- setUsedContextSize(null);
18918
+ if (!hasApiConfiguration || !stream.client || !assistantReady) {
18908
18919
  return;
18909
18920
  }
18910
- if (!stream.threadId) {
18911
- setUsedContextSize(0);
18921
+ if (!scope.threadId) {
18922
+ setMeasurement({ scope, usedTokens: 0, status: "current" });
18912
18923
  return;
18913
18924
  }
18914
- if (realtimeUsedContextSize != null) return;
18915
18925
  if (stream.isLoading) return;
18916
18926
  let cancelled = false;
18917
- const requestThreadId = stream.threadId;
18918
- const requestAgentKey = assistantAgentKey;
18927
+ const realtimeAtRequest = latestRealtimeUsageRef.current;
18919
18928
  stream.client.threads.getContextUsage(
18920
- requestThreadId,
18921
- requestAgentKey ? { agentKey: requestAgentKey } : void 0
18922
- ).then(
18923
- (result) => normalizeContextUsageNumber(result?.usage?.context_tokens)
18929
+ scope.threadId,
18930
+ scope.agentKey ? { agentKey: scope.agentKey } : void 0
18924
18931
  ).then((result) => {
18925
- if (cancelled) return;
18926
- const latestRealtimeUsage = latestRealtimeUsageRef.current;
18927
- if (latestRealtimeUsage.usedTokens != null && latestRealtimeUsage.threadId === requestThreadId && latestRealtimeUsage.agentKey === requestAgentKey) {
18932
+ if (cancelled || latestRealtimeUsageRef.current !== realtimeAtRequest)
18928
18933
  return;
18929
- }
18930
- setUsedContextSize(
18931
- resolveUsedContextSize({
18932
- fallbackUsedTokens: result
18933
- })
18934
- );
18934
+ const stored = readStoredContextUsage(result);
18935
+ const realtimeTokens = getThreadContextUsageTotalTokens(realtimeAtRequest);
18936
+ const sameRun = realtimeAtRequest && (!result.run_id || result.run_id === realtimeAtRequest.runId);
18937
+ setMeasurement((previous) => {
18938
+ const previousTokens = previous?.scope === scope ? previous.usedTokens : null;
18939
+ const usedTokens = stored.usedTokens == null ? previousTokens : sameRun && realtimeTokens != null && realtimeTokens > 0 ? realtimeTokens : stored.usedTokens;
18940
+ return {
18941
+ scope,
18942
+ usedTokens,
18943
+ status: stored.status === "unavailable" && usedTokens != null ? "stale" : stored.status
18944
+ };
18945
+ });
18935
18946
  }).catch((err) => {
18936
- if (cancelled) return;
18947
+ if (cancelled || latestRealtimeUsageRef.current !== realtimeAtRequest)
18948
+ return;
18937
18949
  console.warn("[Chat] Failed to load thread context usage:", err);
18950
+ setMeasurement((previous) => {
18951
+ const usedTokens = previous?.scope === scope ? previous.usedTokens : null;
18952
+ return {
18953
+ scope,
18954
+ usedTokens,
18955
+ status: usedTokens == null ? "unavailable" : "stale"
18956
+ };
18957
+ });
18938
18958
  });
18939
18959
  return () => {
18940
18960
  cancelled = true;
18941
18961
  };
18942
18962
  }, [
18943
- assistantAgentKey,
18963
+ assistantReady,
18944
18964
  hasApiConfiguration,
18945
- realtimeUsedContextSize,
18965
+ scope,
18946
18966
  stream.apiKey,
18947
18967
  stream.apiUrl,
18948
18968
  stream.client,
18949
- stream.threadId,
18950
18969
  stream.isLoading
18951
18970
  ]);
18952
18971
  const effectiveMaxContextSize = realtimeUsage?.effectiveModel?.contextWindow ?? maxContextSize;
@@ -18954,6 +18973,9 @@ function ContextUsageIndicator({
18954
18973
  return null;
18955
18974
  }
18956
18975
  const max = Math.floor(effectiveMaxContextSize);
18976
+ const usedContextSize = measurement?.scope === scope ? measurement.usedTokens : null;
18977
+ const usageStatus = measurement?.scope === scope ? measurement.status : "unavailable";
18978
+ const hasMeasurement = usedContextSize != null;
18957
18979
  const used = clampUsage(usedContextSize, max);
18958
18980
  const percent = Math.max(0, Math.min(100, used / max * 100));
18959
18981
  const roundedPercent = Math.round(percent);
@@ -18970,6 +18992,7 @@ function ContextUsageIndicator({
18970
18992
  max: formattedMax
18971
18993
  });
18972
18994
  const usageLabelWithSuffix = usageLabel.endsWith(":") ? usageLabel : `${usageLabel}:`;
18995
+ const statusLabel = usageStatus === "stale" ? t("chat.contextUsage.stale") : !hasMeasurement ? t("chat.contextUsage.unavailable") : null;
18973
18996
  const progressClassName = percent >= 90 ? "text-destructive" : percent >= 75 ? "text-amber-500" : "text-primary dark:text-zinc-300";
18974
18997
  return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Tooltip, { children: [
18975
18998
  /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
@@ -18980,13 +19003,19 @@ function ContextUsageIndicator({
18980
19003
  "inline-flex items-center justify-center rounded-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background",
18981
19004
  className
18982
19005
  ),
18983
- "aria-label": `${usageLabelWithSuffix} ${usageFullLabel}. ${usageTokensLabel}`,
18984
- children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19006
+ "aria-label": `${usageLabelWithSuffix} ${hasMeasurement ? `${usageFullLabel}. ${usageTokensLabel}` : ""}${statusLabel ? ` ${statusLabel}` : ""}`,
19007
+ children: hasMeasurement ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
18985
19008
  ProgressCircle,
18986
19009
  {
18987
19010
  value: percent,
18988
19011
  className: cn("size-5", progressClassName)
18989
19012
  }
19013
+ ) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19014
+ import_lucide_react36.CircleHelp,
19015
+ {
19016
+ className: "size-5 text-muted-foreground",
19017
+ "aria-hidden": "true"
19018
+ }
18990
19019
  )
18991
19020
  }
18992
19021
  ) }),
@@ -18998,8 +19027,11 @@ function ContextUsageIndicator({
18998
19027
  className: "space-y-0.5 px-3 py-2 text-center",
18999
19028
  children: [
19000
19029
  /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "text-primary-foreground/70", children: usageLabelWithSuffix }),
19001
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
19002
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "text-sm font-semibold", children: usageTokensLabel })
19030
+ hasMeasurement && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
19031
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
19032
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "text-sm font-semibold", children: usageTokensLabel })
19033
+ ] }),
19034
+ !hasMeasurement && statusLabel && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "text-sm", children: statusLabel })
19003
19035
  ]
19004
19036
  }
19005
19037
  )
@@ -19035,7 +19067,7 @@ function normalizeModelOptions(models) {
19035
19067
  }
19036
19068
 
19037
19069
  // src/components/composer/ComposerCapabilityChip.tsx
19038
- var import_lucide_react36 = require("lucide-react");
19070
+ var import_lucide_react37 = require("lucide-react");
19039
19071
  var import_jsx_runtime61 = require("react/jsx-runtime");
19040
19072
  function ComposerCapabilityChip({
19041
19073
  option,
@@ -19073,7 +19105,7 @@ ${option.description}` : option.label,
19073
19105
  name: option.label
19074
19106
  }),
19075
19107
  className: "flex size-5 shrink-0 items-center justify-center rounded-full hover:bg-primary/15 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-50",
19076
- children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react36.X, { className: "size-3" })
19108
+ children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react37.X, { className: "size-3" })
19077
19109
  }
19078
19110
  )
19079
19111
  ]
@@ -19494,12 +19526,12 @@ function PetBridge({ pet, state }) {
19494
19526
 
19495
19527
  // src/components/settings/SettingsSheet.tsx
19496
19528
  var React60 = __toESM(require("react"), 1);
19497
- var import_lucide_react38 = require("lucide-react");
19529
+ var import_lucide_react39 = require("lucide-react");
19498
19530
 
19499
19531
  // src/components/ui/select.tsx
19500
19532
  var React55 = require("react");
19501
19533
  var import_radix_ui2 = require("radix-ui");
19502
- var import_lucide_react37 = require("lucide-react");
19534
+ var import_lucide_react38 = require("lucide-react");
19503
19535
  var import_jsx_runtime62 = require("react/jsx-runtime");
19504
19536
  function Select({
19505
19537
  ...props
@@ -19542,7 +19574,7 @@ function SelectTrigger({
19542
19574
  ...props,
19543
19575
  children: [
19544
19576
  children,
19545
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_radix_ui2.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react37.ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })
19577
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_radix_ui2.Select.Icon, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react38.ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })
19546
19578
  ]
19547
19579
  }
19548
19580
  );
@@ -19596,7 +19628,7 @@ function SelectItem({
19596
19628
  ),
19597
19629
  ...props,
19598
19630
  children: [
19599
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_radix_ui2.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react37.CheckIcon, { className: "pointer-events-none" }) }) }),
19631
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_radix_ui2.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react38.CheckIcon, { className: "pointer-events-none" }) }) }),
19600
19632
  /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_radix_ui2.Select.ItemText, { children })
19601
19633
  ]
19602
19634
  }
@@ -19616,7 +19648,7 @@ function SelectScrollUpButton({
19616
19648
  ),
19617
19649
  ...props,
19618
19650
  children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19619
- import_lucide_react37.ChevronUpIcon,
19651
+ import_lucide_react38.ChevronUpIcon,
19620
19652
  {}
19621
19653
  )
19622
19654
  }
@@ -19636,7 +19668,7 @@ function SelectScrollDownButton({
19636
19668
  ),
19637
19669
  ...props,
19638
19670
  children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19639
- import_lucide_react37.ChevronDownIcon,
19671
+ import_lucide_react38.ChevronDownIcon,
19640
19672
  {}
19641
19673
  )
19642
19674
  }
@@ -20097,13 +20129,13 @@ function SettingsSheet({
20097
20129
  );
20098
20130
  return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Sheet, { open, onOpenChange, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(SheetContent, { side: "right", className: "w-[min(92vw,26rem)] overflow-y-auto", children: [
20099
20131
  /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SheetHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center gap-2", children: [
20100
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-primary/10 text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react38.Settings, { size: 16 }) }),
20132
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-primary/10 text-primary", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react39.Settings, { size: 16 }) }),
20101
20133
  /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(SheetTitle, { children: t("settings.title") })
20102
20134
  ] }) }),
20103
20135
  /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("form", { className: "mt-6 space-y-5", onSubmit: handleSubmit, children: [
20104
20136
  /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("section", { className: "space-y-5", children: [
20105
20137
  /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex items-center gap-2", children: [
20106
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react38.PawPrint, { size: 15 }) }),
20138
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_lucide_react39.PawPrint, { size: 15 }) }),
20107
20139
  /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("h3", { className: "text-sm font-semibold", children: t("pet.settings.title") })
20108
20140
  ] }),
20109
20141
  /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("label", { className: "flex items-center justify-between gap-4 rounded-md border border-border px-3 py-2", children: [
@@ -20465,7 +20497,7 @@ function createXpertThreadGoalAdapter(client, scope) {
20465
20497
 
20466
20498
  // src/workbench/context.tsx
20467
20499
  var React61 = __toESM(require("react"), 1);
20468
- var import_lucide_react39 = require("lucide-react");
20500
+ var import_lucide_react40 = require("lucide-react");
20469
20501
  var import_jsx_runtime68 = require("react/jsx-runtime");
20470
20502
  var WorkbenchContext = React61.createContext({
20471
20503
  enabled: false,
@@ -20499,7 +20531,7 @@ function WorkbenchToggleButton() {
20499
20531
  ),
20500
20532
  "aria-label": label,
20501
20533
  "aria-expanded": false,
20502
- children: workbench.loading ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react39.Loader2, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react39.PanelRight, { size: 16 })
20534
+ children: workbench.loading ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react40.Loader2, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react40.PanelRight, { size: 16 })
20503
20535
  }
20504
20536
  ) }) }),
20505
20537
  /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(TooltipContent, { side: "bottom", children: tooltip })
@@ -21481,7 +21513,7 @@ function useTaskSummary({
21481
21513
 
21482
21514
  // src/components/task-summary/TaskSummary.tsx
21483
21515
  var React64 = __toESM(require("react"), 1);
21484
- var import_lucide_react40 = require("lucide-react");
21516
+ var import_lucide_react41 = require("lucide-react");
21485
21517
  var import_jsx_runtime70 = require("react/jsx-runtime");
21486
21518
  var PREVIEW_SIZE = 3;
21487
21519
  function TaskSummaryTrigger({
@@ -21510,7 +21542,7 @@ function TaskSummaryTrigger({
21510
21542
  "aria-label": t("taskSummary.open"),
21511
21543
  "aria-expanded": open,
21512
21544
  onClick: displayMode === "docked" ? () => setOpen(!open) : void 0,
21513
- children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ListChecks, { size: 16 })
21545
+ children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ListChecks, { size: 16 })
21514
21546
  }
21515
21547
  );
21516
21548
  if (displayMode === "docked") {
@@ -21613,8 +21645,8 @@ function TaskSummaryContent({
21613
21645
  disabled: loading,
21614
21646
  onClick: () => canLoadMore ? void onLoadSection(section) : toggleSection(section),
21615
21647
  children: [
21616
- loading && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.Loader2, { className: "size-3 animate-spin" }),
21617
- !loading && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ListChecks, { className: "size-3.5" }),
21648
+ loading && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.Loader2, { className: "size-3 animate-spin" }),
21649
+ !loading && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ListChecks, { className: "size-3.5" }),
21618
21650
  canLoadMore ? t("taskSummary.loadMore") : expanded[section] ? t("taskSummary.collapse") : t("taskSummary.viewAll", { count: total2 })
21619
21651
  ]
21620
21652
  }
@@ -21633,7 +21665,7 @@ function TaskSummaryContent({
21633
21665
  [section]: !isExpanded
21634
21666
  })),
21635
21667
  children: [
21636
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ListChecks, { className: "size-3.5" }),
21668
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ListChecks, { className: "size-3.5" }),
21637
21669
  isExpanded ? t("taskSummary.collapse") : t("taskSummary.viewAll", { count: total2 })
21638
21670
  ]
21639
21671
  }
@@ -21649,7 +21681,7 @@ function TaskSummaryContent({
21649
21681
  className: "inline-flex shrink-0 items-center gap-1 font-medium hover:underline",
21650
21682
  onClick: onRetryHistory,
21651
21683
  children: [
21652
- /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.RotateCcw, { className: "size-3" }),
21684
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.RotateCcw, { className: "size-3" }),
21653
21685
  t("taskSummary.retry")
21654
21686
  ]
21655
21687
  }
@@ -21662,8 +21694,8 @@ function TaskSummaryContent({
21662
21694
  title: item.title,
21663
21695
  metadata: localizedStatus(item.status),
21664
21696
  description: item.description,
21665
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.FileOutput, { className: "size-4" }),
21666
- trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ExternalLink, { className: "size-3.5" }) : void 0,
21697
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.FileOutput, { className: "size-4" }),
21698
+ trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ExternalLink, { className: "size-3.5" }) : void 0,
21667
21699
  onClick: () => openSummaryItem(item.resource, item.messageId, item.title)
21668
21700
  },
21669
21701
  item.id
@@ -21676,8 +21708,8 @@ function TaskSummaryContent({
21676
21708
  {
21677
21709
  title: item.title,
21678
21710
  description: item.description,
21679
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.BookOpen, { className: "size-4" }),
21680
- trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ExternalLink, { className: "size-3.5" }) : void 0,
21711
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.BookOpen, { className: "size-4" }),
21712
+ trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ExternalLink, { className: "size-3.5" }) : void 0,
21681
21713
  onClick: () => openSummaryItem(item.resource, item.messageId, item.title)
21682
21714
  },
21683
21715
  item.id
@@ -21690,7 +21722,7 @@ function TaskSummaryContent({
21690
21722
  {
21691
21723
  title: summary.goal.objective,
21692
21724
  metadata: localizedStatus(summary.goal.status),
21693
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.Target, { className: "size-4" }),
21725
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.Target, { className: "size-4" }),
21694
21726
  onClick: onFocusComposer
21695
21727
  }
21696
21728
  ),
@@ -21699,7 +21731,7 @@ function TaskSummaryContent({
21699
21731
  {
21700
21732
  title: summary.plan.title,
21701
21733
  description: summary.plan.excerpt,
21702
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ListChecks, { className: "size-4" }),
21734
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ListChecks, { className: "size-4" }),
21703
21735
  onClick: () => summary.plan?.messageId ? onNavigateMessage(summary.plan.messageId) : onFocusComposer()
21704
21736
  }
21705
21737
  ),
@@ -21709,7 +21741,7 @@ function TaskSummaryContent({
21709
21741
  {
21710
21742
  title: todo.content,
21711
21743
  metadata: localizedStatus(todo.status),
21712
- leading: todo.status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.CheckCircle2, { className: "size-4 text-muted-foreground" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.CircleEllipsis, { className: "size-4 text-muted-foreground" }),
21744
+ leading: todo.status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.CheckCircle2, { className: "size-4 text-muted-foreground" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.CircleEllipsis, { className: "size-4 text-muted-foreground" }),
21713
21745
  onClick: () => summary.todos?.messageId ? onNavigateMessage(summary.todos.messageId) : onFocusComposer()
21714
21746
  },
21715
21747
  todo.id
@@ -21724,8 +21756,8 @@ function TaskSummaryContent({
21724
21756
  title: item.title,
21725
21757
  metadata: localizedStatus(item.status),
21726
21758
  description: item.description,
21727
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.PlayCircle, { className: "size-4" }),
21728
- trailing: item.resource ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.ExternalLink, { className: "size-3.5" }) : void 0,
21759
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.PlayCircle, { className: "size-4" }),
21760
+ trailing: item.resource ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.ExternalLink, { className: "size-3.5" }) : void 0,
21729
21761
  onClick: () => item.resource && onOpenResource(item.resource, void 0, item.title)
21730
21762
  },
21731
21763
  item.id
@@ -21742,7 +21774,7 @@ function TaskSummaryContent({
21742
21774
  formatElapsed(item.elapsedTime)
21743
21775
  ].filter(Boolean).join(" \xB7 "),
21744
21776
  description: item.error,
21745
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.Bot, { className: "size-4" }),
21777
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.Bot, { className: "size-4" }),
21746
21778
  onClick: () => item.messageId ? onNavigateMessage(item.messageId) : onFocusComposer()
21747
21779
  },
21748
21780
  item.id
@@ -21755,7 +21787,7 @@ function TaskSummaryContent({
21755
21787
  {
21756
21788
  title: item.title,
21757
21789
  description: item.description,
21758
- leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react40.CircleEllipsis, { className: "size-4" }),
21790
+ leading: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react41.CircleEllipsis, { className: "size-4" }),
21759
21791
  onClick: () => item.messageId ? onNavigateMessage(item.messageId) : onFocusComposer()
21760
21792
  },
21761
21793
  item.id
@@ -21966,7 +21998,7 @@ function ReferenceChip({
21966
21998
  }) {
21967
21999
  const metaLine = getReferenceMetaLine(reference);
21968
22000
  const isComposer = variant === "composer";
21969
- const Icon = reference.type === "quote" ? import_lucide_react41.Quote : reference.type === "image" ? import_lucide_react41.ImageIcon : import_lucide_react41.FileText;
22001
+ const Icon = reference.type === "quote" ? import_lucide_react42.Quote : reference.type === "image" ? import_lucide_react42.ImageIcon : import_lucide_react42.FileText;
21970
22002
  return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
21971
22003
  "div",
21972
22004
  {
@@ -22019,7 +22051,7 @@ function ReferenceChip({
22019
22051
  ),
22020
22052
  title: removeLabel,
22021
22053
  "aria-label": removeLabel,
22022
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.X, { size: 12 })
22054
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.X, { size: 12 })
22023
22055
  }
22024
22056
  )
22025
22057
  ]
@@ -22040,7 +22072,7 @@ function WorkspaceFileChip({
22040
22072
  className: "flex min-w-0 items-start gap-2 rounded-md bg-muted px-2 py-1 text-foreground",
22041
22073
  title: label,
22042
22074
  children: [
22043
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.FileText, { className: "mt-0.5 size-3.5 shrink-0 text-muted-foreground" }),
22075
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.FileText, { className: "mt-0.5 size-3.5 shrink-0 text-muted-foreground" }),
22044
22076
  /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "min-w-0 flex-1", children: [
22045
22077
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "truncate text-sm", children: label }),
22046
22078
  meta ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "truncate text-xs text-muted-foreground", children: meta }) : null
@@ -22053,7 +22085,7 @@ function WorkspaceFileChip({
22053
22085
  className: "ml-1 rounded-full p-0.5 hover:bg-muted-foreground/20",
22054
22086
  title: removeLabel,
22055
22087
  "aria-label": removeLabel,
22056
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.X, { size: 12 })
22088
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.X, { size: 12 })
22057
22089
  }
22058
22090
  )
22059
22091
  ]
@@ -23068,6 +23100,10 @@ function Chat({
23068
23100
  const isSubmissionBlocked = hasPendingInteractiveRequest || missingConfig || isHistoryUnavailable || hasUploadingFiles || isUploadingReferenceImages;
23069
23101
  const isSendDisabled = !trimmedDraft && !hasReferences || isSubmissionBlocked;
23070
23102
  const isPromptEditDisabled = hasPendingInteractiveRequest || missingConfig || isHistoryLoading;
23103
+ const canUploadAttachments = composer?.attachments?.enabled === true && !isPromptEditDisabled;
23104
+ const queueAttachmentFiles = React65.useCallback((files) => {
23105
+ return attachmentsRef.current?.queueFiles(files) ?? false;
23106
+ }, []);
23071
23107
  React65.useLayoutEffect(() => {
23072
23108
  composerPartsRef.current = composerParts;
23073
23109
  const caretOffset = pendingComposerCaretOffsetRef.current;
@@ -23950,9 +23986,18 @@ function Chat({
23950
23986
  if (!clipboardData) {
23951
23987
  return;
23952
23988
  }
23953
- const imageFiles = Array.from(clipboardData.items).filter(
23954
- (item) => item.kind === "file" && item.type.startsWith("image/")
23955
- ).map((item) => item.getAsFile()).filter((item) => Boolean(item));
23989
+ const clipboardFiles = Array.from(clipboardData.files ?? []);
23990
+ const pastedFiles = clipboardFiles.length ? clipboardFiles : Array.from(clipboardData.items ?? []).filter((item) => item.kind === "file").map((item) => item.getAsFile()).filter((item) => Boolean(item));
23991
+ const attachmentFiles = pastedFiles.filter(
23992
+ (file) => !file.type.startsWith("image/")
23993
+ );
23994
+ if (attachmentFiles.length > 0) {
23995
+ event.preventDefault();
23996
+ if (canUploadAttachments) queueAttachmentFiles(attachmentFiles);
23997
+ }
23998
+ const imageFiles = pastedFiles.filter(
23999
+ (file) => file.type.startsWith("image/")
24000
+ );
23956
24001
  if (imageFiles.length > 0) {
23957
24002
  event.preventDefault();
23958
24003
  const maxCount = composer?.attachments?.maxCount ?? 10;
@@ -24000,6 +24045,7 @@ function Chat({
24000
24045
  });
24001
24046
  return;
24002
24047
  }
24048
+ if (attachmentFiles.length > 0) return;
24003
24049
  const pastedText = clipboardData.getData("text/plain");
24004
24050
  if (pastedText.trim().length <= LONG_TEXT_REFERENCE_THRESHOLD) {
24005
24051
  if (!pastedText) {
@@ -24035,9 +24081,11 @@ function Chat({
24035
24081
  composerInputRef.current?.focus();
24036
24082
  },
24037
24083
  [
24084
+ canUploadAttachments,
24038
24085
  composer?.attachments?.maxCount,
24039
24086
  composer?.attachments?.maxSize,
24040
24087
  commitComposerParts,
24088
+ queueAttachmentFiles,
24041
24089
  references,
24042
24090
  updateRuntimeCapabilityPalette,
24043
24091
  uploadContextFile
@@ -24194,10 +24242,6 @@ function Chat({
24194
24242
  }
24195
24243
  };
24196
24244
  const acceptMimes = composer?.attachments?.accept ? Object.entries(composer.attachments.accept).map(([mime, exts]) => [mime, ...exts.map((e) => `.${e}`)].join(",")).join(",") : void 0;
24197
- const canUploadDroppedFiles = composer?.attachments?.enabled === true && !missingConfig && !isHistoryLoading && !hasPendingInteractiveRequest;
24198
- const handleDroppedFiles = React65.useCallback((files) => {
24199
- return attachmentsRef.current?.queueFiles(files) ?? false;
24200
- }, []);
24201
24245
  const currentThread = React65.useMemo(
24202
24246
  () => threads.find((item) => item.id === stream.threadId),
24203
24247
  [threads, stream.threadId]
@@ -24332,11 +24376,11 @@ function Chat({
24332
24376
  {
24333
24377
  ref: viewportRef,
24334
24378
  "data-chatkit-root": "",
24335
- enabled: canUploadDroppedFiles,
24379
+ enabled: canUploadAttachments,
24336
24380
  dropTitle: t("chat.dropFilesTitle"),
24337
24381
  dropHint: t("chat.dropFilesHint"),
24338
24382
  activeClassName: "ring-2 ring-primary/40 ring-inset",
24339
- onFiles: handleDroppedFiles,
24383
+ onFiles: queueAttachmentFiles,
24340
24384
  className: cn(
24341
24385
  "relative flex h-full w-full min-w-0 flex-col flex-1 overflow-x-hidden overflow-y-auto bg-background shadow-sm transition-[box-shadow] duration-150",
24342
24386
  className
@@ -24404,7 +24448,7 @@ function Chat({
24404
24448
  "transition-colors duration-150"
24405
24449
  ),
24406
24450
  "aria-label": t("chat.minimizeToPet"),
24407
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Minus, { size: 16 })
24451
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Minus, { size: 16 })
24408
24452
  }
24409
24453
  ) }) }),
24410
24454
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
@@ -24421,7 +24465,7 @@ function Chat({
24421
24465
  "transition-colors duration-150"
24422
24466
  ),
24423
24467
  "aria-label": t("settings.open"),
24424
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Settings, { size: 16 })
24468
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Settings, { size: 16 })
24425
24469
  }
24426
24470
  ) }) }),
24427
24471
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
@@ -24441,7 +24485,7 @@ function Chat({
24441
24485
  "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
24442
24486
  ),
24443
24487
  "aria-label": t("history.newThread"),
24444
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Pencil, { size: 16 })
24488
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Pencil, { size: 16 })
24445
24489
  }
24446
24490
  ) }) }),
24447
24491
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
@@ -24639,7 +24683,7 @@ function Chat({
24639
24683
  {
24640
24684
  className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
24641
24685
  children: [
24642
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.FileText, { size: 12 }),
24686
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.FileText, { size: 12 }),
24643
24687
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
24644
24688
  ]
24645
24689
  },
@@ -24728,7 +24772,7 @@ function Chat({
24728
24772
  "aria-label": t("composer.quoteSelection"),
24729
24773
  title: t("composer.quoteSelection"),
24730
24774
  children: [
24731
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Quote, { size: 14 }),
24775
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Quote, { size: 14 }),
24732
24776
  t("composer.quoteSelection")
24733
24777
  ]
24734
24778
  }
@@ -24746,7 +24790,7 @@ function Chat({
24746
24790
  "aria-label": t("composer.askInSideChat"),
24747
24791
  title: t("composer.askInSideChat"),
24748
24792
  children: [
24749
- isOpeningSideChat ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Loader2, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.MessageSquarePlus, { size: 14 }),
24793
+ isOpeningSideChat ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Loader2, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.MessageSquarePlus, { size: 14 }),
24750
24794
  t("composer.askInSideChat")
24751
24795
  ]
24752
24796
  }
@@ -24785,56 +24829,12 @@ function Chat({
24785
24829
  onClick: () => scrollToBottom(true, true),
24786
24830
  "aria-label": t("chat.scrollToBottom"),
24787
24831
  title: t("chat.scrollToBottom"),
24788
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.ArrowDown, { size: 16 })
24832
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.ArrowDown, { size: 16 })
24789
24833
  }
24790
24834
  )
24791
24835
  }
24792
24836
  ),
24793
24837
  threadErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "mb-3 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive overflow-auto", children: threadErrorMessage }),
24794
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
24795
- ChatAttachments,
24796
- {
24797
- ref: attachmentsRef,
24798
- accept: acceptMimes,
24799
- maxCount: composer?.attachments?.maxCount ?? 10,
24800
- maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
24801
- retryUploadLabel: t("chat.retryUpload"),
24802
- uploadFile: uploadContextFile,
24803
- deleteFile: deleteContextFile,
24804
- getFileStatus: getContextFileStatus,
24805
- onStateChange: setAttachmentState
24806
- }
24807
- ),
24808
- references.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
24809
- ReferenceChip,
24810
- {
24811
- reference,
24812
- variant: "composer",
24813
- onRemove: () => setReferences(
24814
- (previous) => previous.filter(
24815
- (item) => getReferenceKey(item) !== getReferenceKey(reference)
24816
- )
24817
- ),
24818
- removeLabel: t("composer.removeReference")
24819
- },
24820
- getReferenceKey(reference)
24821
- )) }),
24822
- referencedWorkspaceFiles.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: referencedWorkspaceFiles.map((file) => {
24823
- const id = file.workspacePath ?? file.filePath ?? file.fileAssetId ?? file.fileId ?? file.id;
24824
- return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
24825
- WorkspaceFileChip,
24826
- {
24827
- file,
24828
- onRemove: () => setReferencedWorkspaceFiles(
24829
- (current) => current.filter(
24830
- (item) => (item.workspacePath ?? item.filePath ?? item.fileAssetId ?? item.fileId ?? item.id) !== id
24831
- )
24832
- ),
24833
- removeLabel: t("composer.fileMentions.remove")
24834
- },
24835
- id
24836
- );
24837
- }) }),
24838
24838
  showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
24839
24839
  "div",
24840
24840
  {
@@ -24844,7 +24844,7 @@ function Chat({
24844
24844
  ),
24845
24845
  children: [
24846
24846
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
24847
- import_lucide_react41.Target,
24847
+ import_lucide_react42.Target,
24848
24848
  {
24849
24849
  className: cn(
24850
24850
  "size-4 shrink-0 text-muted-foreground",
@@ -24856,7 +24856,7 @@ function Chat({
24856
24856
  /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
24857
24857
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
24858
24858
  threadGoal && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "shrink-0 rounded-md bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground", children: t(`chat.goal.status.${threadGoal.status}`) }),
24859
- isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
24859
+ isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
24860
24860
  ] }),
24861
24861
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
24862
24862
  "div",
@@ -24885,7 +24885,7 @@ function Chat({
24885
24885
  const prefix = "/goal edit ";
24886
24886
  setComposerText(`${prefix}${threadGoal.objective}`);
24887
24887
  },
24888
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Pencil, { className: "size-3" })
24888
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Pencil, { className: "size-3" })
24889
24889
  }
24890
24890
  ) }),
24891
24891
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TooltipContent, { children: t("chat.goal.edit") })
@@ -24907,7 +24907,7 @@ function Chat({
24907
24907
  executionType: "insert_invocation"
24908
24908
  }
24909
24909
  }),
24910
- children: threadGoal.status === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Play, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Pause, { className: "size-3" })
24910
+ children: threadGoal.status === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Play, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Pause, { className: "size-3" })
24911
24911
  }
24912
24912
  ) }),
24913
24913
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
@@ -24929,7 +24929,7 @@ function Chat({
24929
24929
  executionType: "insert_invocation"
24930
24930
  }
24931
24931
  }),
24932
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.Trash2, { className: "size-3" })
24932
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.Trash2, { className: "size-3" })
24933
24933
  }
24934
24934
  ) }),
24935
24935
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(TooltipContent, { children: t("chat.goal.clear") })
@@ -24945,7 +24945,7 @@ function Chat({
24945
24945
  "aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
24946
24946
  onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
24947
24947
  children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
24948
- import_lucide_react41.ChevronDown,
24948
+ import_lucide_react42.ChevronDown,
24949
24949
  {
24950
24950
  className: cn(
24951
24951
  "size-3 transition-transform",
@@ -25023,6 +25023,50 @@ function Chat({
25023
25023
  onBack: promptWorkflow.showPrompts
25024
25024
  }
25025
25025
  ),
25026
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
25027
+ ChatAttachments,
25028
+ {
25029
+ ref: attachmentsRef,
25030
+ accept: acceptMimes,
25031
+ maxCount: composer?.attachments?.maxCount ?? 10,
25032
+ maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
25033
+ retryUploadLabel: t("chat.retryUpload"),
25034
+ uploadFile: uploadContextFile,
25035
+ deleteFile: deleteContextFile,
25036
+ getFileStatus: getContextFileStatus,
25037
+ onStateChange: setAttachmentState
25038
+ }
25039
+ ),
25040
+ references.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
25041
+ ReferenceChip,
25042
+ {
25043
+ reference,
25044
+ variant: "composer",
25045
+ onRemove: () => setReferences(
25046
+ (previous) => previous.filter(
25047
+ (item) => getReferenceKey(item) !== getReferenceKey(reference)
25048
+ )
25049
+ ),
25050
+ removeLabel: t("composer.removeReference")
25051
+ },
25052
+ getReferenceKey(reference)
25053
+ )) }),
25054
+ referencedWorkspaceFiles.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: referencedWorkspaceFiles.map((file) => {
25055
+ const id = file.workspacePath ?? file.filePath ?? file.fileAssetId ?? file.fileId ?? file.id;
25056
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
25057
+ WorkspaceFileChip,
25058
+ {
25059
+ file,
25060
+ onRemove: () => setReferencedWorkspaceFiles(
25061
+ (current) => current.filter(
25062
+ (item) => (item.workspacePath ?? item.filePath ?? item.fileAssetId ?? item.fileId ?? item.id) !== id
25063
+ )
25064
+ ),
25065
+ removeLabel: t("composer.fileMentions.remove")
25066
+ },
25067
+ id
25068
+ );
25069
+ }) }),
25026
25070
  workspaceFileMention && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
25027
25071
  WorkspaceFileMentionPalette,
25028
25072
  {
@@ -25206,7 +25250,7 @@ function Chat({
25206
25250
  "focus-visible:pointer-events-auto focus-visible:ml-1 focus-visible:w-4 focus-visible:opacity-100",
25207
25251
  "hover:bg-primary/10 hover:text-primary focus-visible:bg-primary/10 focus-visible:text-primary"
25208
25252
  ),
25209
- children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react41.X, { className: "size-3 shrink-0" })
25253
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.X, { className: "size-3 shrink-0" })
25210
25254
  }
25211
25255
  )
25212
25256
  ]