@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.js CHANGED
@@ -61,6 +61,16 @@ import { isNil, omitBy } from "lodash-es";
61
61
 
62
62
  // src/lib/thread-context-usage.ts
63
63
  var THREAD_CONTEXT_USAGE_EVENT_TYPE = "thread_context_usage";
64
+ function readStoredContextUsage(result) {
65
+ const usedTokens = normalizeContextUsageNumber(result.usage.context_tokens);
66
+ if ("status" in result && result.status === "unavailable" || usedTokens == null || usedTokens === 0) {
67
+ return { usedTokens: null, status: "unavailable" };
68
+ }
69
+ return {
70
+ usedTokens,
71
+ status: "status" in result && result.status === "stale" ? "stale" : "current"
72
+ };
73
+ }
64
74
  function isRecord(value) {
65
75
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
66
76
  }
@@ -94,15 +104,6 @@ function getThreadContextUsage(state, agentKey) {
94
104
  function getThreadContextUsageTotalTokens(event) {
95
105
  return normalizeContextUsageNumber(event?.usage?.totalTokens);
96
106
  }
97
- function resolveUsedContextSize(options) {
98
- const realtimeUsedTokens = getThreadContextUsageTotalTokens(
99
- options.realtimeUsage
100
- );
101
- if (realtimeUsedTokens != null) {
102
- return realtimeUsedTokens;
103
- }
104
- return normalizeContextUsageNumber(options.fallbackUsedTokens) ?? 0;
105
- }
106
107
 
107
108
  // src/lib/message.ts
108
109
  var ASSISTANT_STREAM_IDLE_TO_THINKING_MS = 2e3;
@@ -2710,7 +2711,9 @@ var en_US_default = {
2710
2711
  contextUsage: {
2711
2712
  label: "Context window",
2712
2713
  full: "{{usedPercent}}% used ({{remainingPercent}}% left)",
2713
- tokensUsed: "{{used}} / {{max}} tokens used"
2714
+ tokensUsed: "{{used}} / {{max}} tokens used",
2715
+ stale: "Last valid usage (not updated by the latest call)",
2716
+ unavailable: "No valid usage available"
2714
2717
  },
2715
2718
  goal: {
2716
2719
  label: "Goal",
@@ -3310,7 +3313,9 @@ var zh_CN_default = {
3310
3313
  contextUsage: {
3311
3314
  label: "\u4E0A\u4E0B\u6587\u7A97\u53E3",
3312
3315
  full: "\u5DF2\u4F7F\u7528 {{usedPercent}}%\uFF08\u5269\u4F59 {{remainingPercent}}%\uFF09",
3313
- tokensUsed: "\u5DF2\u4F7F\u7528 {{used}} / {{max}} tokens"
3316
+ tokensUsed: "\u5DF2\u4F7F\u7528 {{used}} / {{max}} tokens",
3317
+ stale: "\u4E0A\u6B21\u6709\u6548\u7528\u91CF\uFF08\u672C\u6B21\u8C03\u7528\u672A\u66F4\u65B0\uFF09",
3318
+ unavailable: "\u6682\u65E0\u6709\u6548\u7528\u91CF"
3314
3319
  },
3315
3320
  goal: {
3316
3321
  label: "\u76EE\u6807",
@@ -18918,6 +18923,7 @@ function useThreads(limit = DEFAULT_LIMIT, enabled = true) {
18918
18923
 
18919
18924
  // src/components/thread/context-usage-indicator.tsx
18920
18925
  import * as React52 from "react";
18926
+ import { CircleHelp as CircleHelp2 } from "lucide-react";
18921
18927
 
18922
18928
  // src/components/ui/progress-circle.tsx
18923
18929
  import { jsx as jsx59, jsxs as jsxs43 } from "react/jsx-runtime";
@@ -18974,7 +18980,7 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
18974
18980
  };
18975
18981
 
18976
18982
  // src/components/thread/context-usage-indicator.tsx
18977
- import { jsx as jsx60, jsxs as jsxs44 } from "react/jsx-runtime";
18983
+ import { Fragment as Fragment11, jsx as jsx60, jsxs as jsxs44 } from "react/jsx-runtime";
18978
18984
  var kNumberFormatter = new Intl.NumberFormat("en-US", {
18979
18985
  minimumFractionDigits: 0,
18980
18986
  maximumFractionDigits: 1
@@ -19007,102 +19013,115 @@ function ContextUsageIndicator({
19007
19013
  }) {
19008
19014
  const { t } = useChatkitTranslation();
19009
19015
  const stream = useStreamContext();
19010
- const [maxContextSize, setMaxContextSize] = React52.useState(
19011
- null
19012
- );
19013
- const [usedContextSize, setUsedContextSize] = React52.useState(
19014
- null
19015
- );
19016
- const [assistantAgentKey, setAssistantAgentKey] = React52.useState(null);
19017
- const latestRealtimeUsageRef = React52.useRef({
19018
- threadId: null,
19019
- agentKey: null,
19020
- usedTokens: null
19021
- });
19022
- const realtimeUsage = React52.useMemo(
19023
- () => getThreadContextUsage(stream.contextUsageByAgentKey, assistantAgentKey),
19024
- [assistantAgentKey, stream.contextUsageByAgentKey]
19016
+ const [assistantContext, setAssistantContext] = React52.useState(null);
19017
+ const assistantReady = assistantContext?.assistantId === stream.assistantId;
19018
+ const assistantAgentKey = assistantReady ? assistantContext?.agentKey ?? null : null;
19019
+ const maxContextSize = assistantReady ? assistantContext?.maxContextSize ?? null : null;
19020
+ const scope = React52.useMemo(
19021
+ () => ({
19022
+ threadId: stream.threadId ?? null,
19023
+ assistantId: stream.assistantId,
19024
+ agentKey: assistantAgentKey
19025
+ }),
19026
+ [stream.threadId, stream.assistantId, assistantAgentKey]
19025
19027
  );
19028
+ const [measurement, setMeasurement] = React52.useState(null);
19029
+ const realtimeUsage = React52.useMemo(() => {
19030
+ const usage = getThreadContextUsage(
19031
+ stream.contextUsageByAgentKey,
19032
+ assistantAgentKey
19033
+ );
19034
+ return usage?.threadId === scope.threadId ? usage : null;
19035
+ }, [assistantAgentKey, scope.threadId, stream.contextUsageByAgentKey]);
19026
19036
  const realtimeUsedContextSize = getThreadContextUsageTotalTokens(realtimeUsage);
19037
+ const latestRealtimeUsageRef = React52.useRef(realtimeUsage);
19027
19038
  const hasApiConfiguration = Boolean(
19028
19039
  stream.apiUrl?.trim() && stream.apiKey?.trim()
19029
19040
  );
19030
19041
  React52.useEffect(() => {
19031
19042
  if (!hasApiConfiguration || !stream.client || !stream.assistantId) {
19032
- setMaxContextSize(null);
19033
- setAssistantAgentKey(null);
19043
+ setAssistantContext(null);
19034
19044
  return;
19035
19045
  }
19036
19046
  let cancelled = false;
19037
19047
  stream.client.assistants.get(stream.assistantId).then((assistant) => {
19038
19048
  if (cancelled || !assistant) return;
19039
- setMaxContextSize(resolveAssistantContextSize(assistant));
19040
- setAssistantAgentKey(resolveAssistantAgentKey(assistant));
19049
+ setAssistantContext({
19050
+ assistantId: stream.assistantId,
19051
+ maxContextSize: resolveAssistantContextSize(assistant),
19052
+ agentKey: resolveAssistantAgentKey(assistant)
19053
+ });
19041
19054
  }).catch((err) => {
19042
19055
  if (cancelled) return;
19043
19056
  console.warn("[Chat] Failed to load assistant context size:", err);
19044
- setAssistantAgentKey(null);
19057
+ setAssistantContext(null);
19045
19058
  });
19046
19059
  return () => {
19047
19060
  cancelled = true;
19048
19061
  };
19049
19062
  }, [hasApiConfiguration, stream.client, stream.assistantId]);
19050
19063
  React52.useEffect(() => {
19051
- latestRealtimeUsageRef.current = {
19052
- threadId: stream.threadId ?? null,
19053
- agentKey: assistantAgentKey,
19054
- usedTokens: realtimeUsedContextSize
19055
- };
19056
- }, [assistantAgentKey, realtimeUsedContextSize, stream.threadId]);
19057
- React52.useEffect(() => {
19058
- if (realtimeUsedContextSize == null) return;
19059
- setUsedContextSize(realtimeUsedContextSize);
19060
- }, [realtimeUsedContextSize]);
19064
+ latestRealtimeUsageRef.current = realtimeUsage;
19065
+ if (realtimeUsedContextSize == null || realtimeUsedContextSize === 0)
19066
+ return;
19067
+ setMeasurement({
19068
+ scope,
19069
+ usedTokens: realtimeUsedContextSize,
19070
+ status: "current"
19071
+ });
19072
+ }, [scope, realtimeUsage, realtimeUsedContextSize]);
19061
19073
  React52.useEffect(() => {
19062
- if (!hasApiConfiguration || !stream.client) {
19063
- setUsedContextSize(null);
19074
+ if (!hasApiConfiguration || !stream.client || !assistantReady) {
19064
19075
  return;
19065
19076
  }
19066
- if (!stream.threadId) {
19067
- setUsedContextSize(0);
19077
+ if (!scope.threadId) {
19078
+ setMeasurement({ scope, usedTokens: 0, status: "current" });
19068
19079
  return;
19069
19080
  }
19070
- if (realtimeUsedContextSize != null) return;
19071
19081
  if (stream.isLoading) return;
19072
19082
  let cancelled = false;
19073
- const requestThreadId = stream.threadId;
19074
- const requestAgentKey = assistantAgentKey;
19083
+ const realtimeAtRequest = latestRealtimeUsageRef.current;
19075
19084
  stream.client.threads.getContextUsage(
19076
- requestThreadId,
19077
- requestAgentKey ? { agentKey: requestAgentKey } : void 0
19078
- ).then(
19079
- (result) => normalizeContextUsageNumber(result?.usage?.context_tokens)
19085
+ scope.threadId,
19086
+ scope.agentKey ? { agentKey: scope.agentKey } : void 0
19080
19087
  ).then((result) => {
19081
- if (cancelled) return;
19082
- const latestRealtimeUsage = latestRealtimeUsageRef.current;
19083
- if (latestRealtimeUsage.usedTokens != null && latestRealtimeUsage.threadId === requestThreadId && latestRealtimeUsage.agentKey === requestAgentKey) {
19088
+ if (cancelled || latestRealtimeUsageRef.current !== realtimeAtRequest)
19084
19089
  return;
19085
- }
19086
- setUsedContextSize(
19087
- resolveUsedContextSize({
19088
- fallbackUsedTokens: result
19089
- })
19090
- );
19090
+ const stored = readStoredContextUsage(result);
19091
+ const realtimeTokens = getThreadContextUsageTotalTokens(realtimeAtRequest);
19092
+ const sameRun = realtimeAtRequest && (!result.run_id || result.run_id === realtimeAtRequest.runId);
19093
+ setMeasurement((previous) => {
19094
+ const previousTokens = previous?.scope === scope ? previous.usedTokens : null;
19095
+ const usedTokens = stored.usedTokens == null ? previousTokens : sameRun && realtimeTokens != null && realtimeTokens > 0 ? realtimeTokens : stored.usedTokens;
19096
+ return {
19097
+ scope,
19098
+ usedTokens,
19099
+ status: stored.status === "unavailable" && usedTokens != null ? "stale" : stored.status
19100
+ };
19101
+ });
19091
19102
  }).catch((err) => {
19092
- if (cancelled) return;
19103
+ if (cancelled || latestRealtimeUsageRef.current !== realtimeAtRequest)
19104
+ return;
19093
19105
  console.warn("[Chat] Failed to load thread context usage:", err);
19106
+ setMeasurement((previous) => {
19107
+ const usedTokens = previous?.scope === scope ? previous.usedTokens : null;
19108
+ return {
19109
+ scope,
19110
+ usedTokens,
19111
+ status: usedTokens == null ? "unavailable" : "stale"
19112
+ };
19113
+ });
19094
19114
  });
19095
19115
  return () => {
19096
19116
  cancelled = true;
19097
19117
  };
19098
19118
  }, [
19099
- assistantAgentKey,
19119
+ assistantReady,
19100
19120
  hasApiConfiguration,
19101
- realtimeUsedContextSize,
19121
+ scope,
19102
19122
  stream.apiKey,
19103
19123
  stream.apiUrl,
19104
19124
  stream.client,
19105
- stream.threadId,
19106
19125
  stream.isLoading
19107
19126
  ]);
19108
19127
  const effectiveMaxContextSize = realtimeUsage?.effectiveModel?.contextWindow ?? maxContextSize;
@@ -19110,6 +19129,9 @@ function ContextUsageIndicator({
19110
19129
  return null;
19111
19130
  }
19112
19131
  const max = Math.floor(effectiveMaxContextSize);
19132
+ const usedContextSize = measurement?.scope === scope ? measurement.usedTokens : null;
19133
+ const usageStatus = measurement?.scope === scope ? measurement.status : "unavailable";
19134
+ const hasMeasurement = usedContextSize != null;
19113
19135
  const used = clampUsage(usedContextSize, max);
19114
19136
  const percent = Math.max(0, Math.min(100, used / max * 100));
19115
19137
  const roundedPercent = Math.round(percent);
@@ -19126,6 +19148,7 @@ function ContextUsageIndicator({
19126
19148
  max: formattedMax
19127
19149
  });
19128
19150
  const usageLabelWithSuffix = usageLabel.endsWith(":") ? usageLabel : `${usageLabel}:`;
19151
+ const statusLabel = usageStatus === "stale" ? t("chat.contextUsage.stale") : !hasMeasurement ? t("chat.contextUsage.unavailable") : null;
19129
19152
  const progressClassName = percent >= 90 ? "text-destructive" : percent >= 75 ? "text-amber-500" : "text-primary dark:text-zinc-300";
19130
19153
  return /* @__PURE__ */ jsxs44(Tooltip, { children: [
19131
19154
  /* @__PURE__ */ jsx60(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx60(
@@ -19136,13 +19159,19 @@ function ContextUsageIndicator({
19136
19159
  "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",
19137
19160
  className
19138
19161
  ),
19139
- "aria-label": `${usageLabelWithSuffix} ${usageFullLabel}. ${usageTokensLabel}`,
19140
- children: /* @__PURE__ */ jsx60(
19162
+ "aria-label": `${usageLabelWithSuffix} ${hasMeasurement ? `${usageFullLabel}. ${usageTokensLabel}` : ""}${statusLabel ? ` ${statusLabel}` : ""}`,
19163
+ children: hasMeasurement ? /* @__PURE__ */ jsx60(
19141
19164
  ProgressCircle,
19142
19165
  {
19143
19166
  value: percent,
19144
19167
  className: cn("size-5", progressClassName)
19145
19168
  }
19169
+ ) : /* @__PURE__ */ jsx60(
19170
+ CircleHelp2,
19171
+ {
19172
+ className: "size-5 text-muted-foreground",
19173
+ "aria-hidden": "true"
19174
+ }
19146
19175
  )
19147
19176
  }
19148
19177
  ) }),
@@ -19154,8 +19183,11 @@ function ContextUsageIndicator({
19154
19183
  className: "space-y-0.5 px-3 py-2 text-center",
19155
19184
  children: [
19156
19185
  /* @__PURE__ */ jsx60("div", { className: "text-primary-foreground/70", children: usageLabelWithSuffix }),
19157
- /* @__PURE__ */ jsx60("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
19158
- /* @__PURE__ */ jsx60("div", { className: "text-sm font-semibold", children: usageTokensLabel })
19186
+ hasMeasurement && /* @__PURE__ */ jsxs44(Fragment11, { children: [
19187
+ /* @__PURE__ */ jsx60("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
19188
+ /* @__PURE__ */ jsx60("div", { className: "text-sm font-semibold", children: usageTokensLabel })
19189
+ ] }),
19190
+ !hasMeasurement && statusLabel && /* @__PURE__ */ jsx60("div", { className: "text-sm", children: statusLabel })
19159
19191
  ]
19160
19192
  }
19161
19193
  )
@@ -22000,7 +22032,7 @@ function formatElapsed(value) {
22000
22032
  }
22001
22033
 
22002
22034
  // src/components/chat.tsx
22003
- import { Fragment as Fragment12, jsx as jsx71, jsxs as jsxs52 } from "react/jsx-runtime";
22035
+ import { Fragment as Fragment13, jsx as jsx71, jsxs as jsxs52 } from "react/jsx-runtime";
22004
22036
  var defaultApiUrl2 = import.meta.env.VITE_XPERTAI_API_URL;
22005
22037
  var LONG_TEXT_REFERENCE_THRESHOLD = 5e3;
22006
22038
  var GOAL_RUN_INPUT = "Continue working toward the active goal.";
@@ -23239,6 +23271,10 @@ function Chat({
23239
23271
  const isSubmissionBlocked = hasPendingInteractiveRequest || missingConfig || isHistoryUnavailable || hasUploadingFiles || isUploadingReferenceImages;
23240
23272
  const isSendDisabled = !trimmedDraft && !hasReferences || isSubmissionBlocked;
23241
23273
  const isPromptEditDisabled = hasPendingInteractiveRequest || missingConfig || isHistoryLoading;
23274
+ const canUploadAttachments = composer?.attachments?.enabled === true && !isPromptEditDisabled;
23275
+ const queueAttachmentFiles = React65.useCallback((files) => {
23276
+ return attachmentsRef.current?.queueFiles(files) ?? false;
23277
+ }, []);
23242
23278
  React65.useLayoutEffect(() => {
23243
23279
  composerPartsRef.current = composerParts;
23244
23280
  const caretOffset = pendingComposerCaretOffsetRef.current;
@@ -24121,9 +24157,18 @@ function Chat({
24121
24157
  if (!clipboardData) {
24122
24158
  return;
24123
24159
  }
24124
- const imageFiles = Array.from(clipboardData.items).filter(
24125
- (item) => item.kind === "file" && item.type.startsWith("image/")
24126
- ).map((item) => item.getAsFile()).filter((item) => Boolean(item));
24160
+ const clipboardFiles = Array.from(clipboardData.files ?? []);
24161
+ const pastedFiles = clipboardFiles.length ? clipboardFiles : Array.from(clipboardData.items ?? []).filter((item) => item.kind === "file").map((item) => item.getAsFile()).filter((item) => Boolean(item));
24162
+ const attachmentFiles = pastedFiles.filter(
24163
+ (file) => !file.type.startsWith("image/")
24164
+ );
24165
+ if (attachmentFiles.length > 0) {
24166
+ event.preventDefault();
24167
+ if (canUploadAttachments) queueAttachmentFiles(attachmentFiles);
24168
+ }
24169
+ const imageFiles = pastedFiles.filter(
24170
+ (file) => file.type.startsWith("image/")
24171
+ );
24127
24172
  if (imageFiles.length > 0) {
24128
24173
  event.preventDefault();
24129
24174
  const maxCount = composer?.attachments?.maxCount ?? 10;
@@ -24171,6 +24216,7 @@ function Chat({
24171
24216
  });
24172
24217
  return;
24173
24218
  }
24219
+ if (attachmentFiles.length > 0) return;
24174
24220
  const pastedText = clipboardData.getData("text/plain");
24175
24221
  if (pastedText.trim().length <= LONG_TEXT_REFERENCE_THRESHOLD) {
24176
24222
  if (!pastedText) {
@@ -24206,9 +24252,11 @@ function Chat({
24206
24252
  composerInputRef.current?.focus();
24207
24253
  },
24208
24254
  [
24255
+ canUploadAttachments,
24209
24256
  composer?.attachments?.maxCount,
24210
24257
  composer?.attachments?.maxSize,
24211
24258
  commitComposerParts,
24259
+ queueAttachmentFiles,
24212
24260
  references,
24213
24261
  updateRuntimeCapabilityPalette,
24214
24262
  uploadContextFile
@@ -24365,10 +24413,6 @@ function Chat({
24365
24413
  }
24366
24414
  };
24367
24415
  const acceptMimes = composer?.attachments?.accept ? Object.entries(composer.attachments.accept).map(([mime, exts]) => [mime, ...exts.map((e) => `.${e}`)].join(",")).join(",") : void 0;
24368
- const canUploadDroppedFiles = composer?.attachments?.enabled === true && !missingConfig && !isHistoryLoading && !hasPendingInteractiveRequest;
24369
- const handleDroppedFiles = React65.useCallback((files) => {
24370
- return attachmentsRef.current?.queueFiles(files) ?? false;
24371
- }, []);
24372
24416
  const currentThread = React65.useMemo(
24373
24417
  () => threads.find((item) => item.id === stream.threadId),
24374
24418
  [threads, stream.threadId]
@@ -24503,11 +24547,11 @@ function Chat({
24503
24547
  {
24504
24548
  ref: viewportRef,
24505
24549
  "data-chatkit-root": "",
24506
- enabled: canUploadDroppedFiles,
24550
+ enabled: canUploadAttachments,
24507
24551
  dropTitle: t("chat.dropFilesTitle"),
24508
24552
  dropHint: t("chat.dropFilesHint"),
24509
24553
  activeClassName: "ring-2 ring-primary/40 ring-inset",
24510
- onFiles: handleDroppedFiles,
24554
+ onFiles: queueAttachmentFiles,
24511
24555
  className: cn(
24512
24556
  "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",
24513
24557
  className
@@ -24597,7 +24641,7 @@ function Chat({
24597
24641
  ) }) }),
24598
24642
  /* @__PURE__ */ jsx71(TooltipContent, { side: "bottom", children: t("settings.open") })
24599
24643
  ] }),
24600
- history?.enabled !== false && /* @__PURE__ */ jsxs52(Fragment12, { children: [
24644
+ history?.enabled !== false && /* @__PURE__ */ jsxs52(Fragment13, { children: [
24601
24645
  /* @__PURE__ */ jsxs52(Tooltip, { children: [
24602
24646
  /* @__PURE__ */ jsx71(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx71("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx71(
24603
24647
  "button",
@@ -24790,7 +24834,7 @@ function Chat({
24790
24834
  pet: effectivePet,
24791
24835
  mcpApps: options?.mcpApps
24792
24836
  }
24793
- ) : /* @__PURE__ */ jsxs52(Fragment12, { children: [
24837
+ ) : /* @__PURE__ */ jsxs52(Fragment13, { children: [
24794
24838
  message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsx71(
24795
24839
  HumanRuntimeCapabilityChips,
24796
24840
  {
@@ -24962,50 +25006,6 @@ function Chat({
24962
25006
  }
24963
25007
  ),
24964
25008
  threadErrorMessage && /* @__PURE__ */ jsx71("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 }),
24965
- /* @__PURE__ */ jsx71(
24966
- ChatAttachments,
24967
- {
24968
- ref: attachmentsRef,
24969
- accept: acceptMimes,
24970
- maxCount: composer?.attachments?.maxCount ?? 10,
24971
- maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
24972
- retryUploadLabel: t("chat.retryUpload"),
24973
- uploadFile: uploadContextFile,
24974
- deleteFile: deleteContextFile,
24975
- getFileStatus: getContextFileStatus,
24976
- onStateChange: setAttachmentState
24977
- }
24978
- ),
24979
- references.length > 0 && /* @__PURE__ */ jsx71("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx71(
24980
- ReferenceChip,
24981
- {
24982
- reference,
24983
- variant: "composer",
24984
- onRemove: () => setReferences(
24985
- (previous) => previous.filter(
24986
- (item) => getReferenceKey(item) !== getReferenceKey(reference)
24987
- )
24988
- ),
24989
- removeLabel: t("composer.removeReference")
24990
- },
24991
- getReferenceKey(reference)
24992
- )) }),
24993
- referencedWorkspaceFiles.length > 0 && /* @__PURE__ */ jsx71("div", { className: "mb-3 flex flex-wrap gap-2", children: referencedWorkspaceFiles.map((file) => {
24994
- const id = file.workspacePath ?? file.filePath ?? file.fileAssetId ?? file.fileId ?? file.id;
24995
- return /* @__PURE__ */ jsx71(
24996
- WorkspaceFileChip,
24997
- {
24998
- file,
24999
- onRemove: () => setReferencedWorkspaceFiles(
25000
- (current) => current.filter(
25001
- (item) => (item.workspacePath ?? item.filePath ?? item.fileAssetId ?? item.fileId ?? item.id) !== id
25002
- )
25003
- ),
25004
- removeLabel: t("composer.fileMentions.remove")
25005
- },
25006
- id
25007
- );
25008
- }) }),
25009
25009
  showGoalStatus && /* @__PURE__ */ jsxs52(
25010
25010
  "div",
25011
25011
  {
@@ -25194,6 +25194,50 @@ function Chat({
25194
25194
  onBack: promptWorkflow.showPrompts
25195
25195
  }
25196
25196
  ),
25197
+ /* @__PURE__ */ jsx71(
25198
+ ChatAttachments,
25199
+ {
25200
+ ref: attachmentsRef,
25201
+ accept: acceptMimes,
25202
+ maxCount: composer?.attachments?.maxCount ?? 10,
25203
+ maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
25204
+ retryUploadLabel: t("chat.retryUpload"),
25205
+ uploadFile: uploadContextFile,
25206
+ deleteFile: deleteContextFile,
25207
+ getFileStatus: getContextFileStatus,
25208
+ onStateChange: setAttachmentState
25209
+ }
25210
+ ),
25211
+ references.length > 0 && /* @__PURE__ */ jsx71("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx71(
25212
+ ReferenceChip,
25213
+ {
25214
+ reference,
25215
+ variant: "composer",
25216
+ onRemove: () => setReferences(
25217
+ (previous) => previous.filter(
25218
+ (item) => getReferenceKey(item) !== getReferenceKey(reference)
25219
+ )
25220
+ ),
25221
+ removeLabel: t("composer.removeReference")
25222
+ },
25223
+ getReferenceKey(reference)
25224
+ )) }),
25225
+ referencedWorkspaceFiles.length > 0 && /* @__PURE__ */ jsx71("div", { className: "mb-3 flex flex-wrap gap-2", children: referencedWorkspaceFiles.map((file) => {
25226
+ const id = file.workspacePath ?? file.filePath ?? file.fileAssetId ?? file.fileId ?? file.id;
25227
+ return /* @__PURE__ */ jsx71(
25228
+ WorkspaceFileChip,
25229
+ {
25230
+ file,
25231
+ onRemove: () => setReferencedWorkspaceFiles(
25232
+ (current) => current.filter(
25233
+ (item) => (item.workspacePath ?? item.filePath ?? item.fileAssetId ?? item.fileId ?? item.id) !== id
25234
+ )
25235
+ ),
25236
+ removeLabel: t("composer.fileMentions.remove")
25237
+ },
25238
+ id
25239
+ );
25240
+ }) }),
25197
25241
  workspaceFileMention && /* @__PURE__ */ jsx71(
25198
25242
  WorkspaceFileMentionPalette,
25199
25243
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xpert-ai/chatkit-ui",
3
- "version": "0.5.13",
3
+ "version": "0.5.14",
4
4
  "description": "ChatKit UI.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -35,7 +35,7 @@
35
35
  "@radix-ui/react-slot": "^1.1.2",
36
36
  "@radix-ui/react-tooltip": "^1.1.20",
37
37
  "@tailwindcss/vite": "^4.1.17",
38
- "@xpert-ai/xpert-sdk": "^0.1.0",
38
+ "@xpert-ai/xpert-sdk": "^0.1.1",
39
39
  "class-variance-authority": "^0.7.1",
40
40
  "clsx": "^2.1.1",
41
41
  "framer-motion": "^12.4.9",
@@ -59,9 +59,9 @@
59
59
  "tw-animate-css": "^1.4.0",
60
60
  "uuid": "^11.1.0",
61
61
  "zod": "^4.1.12",
62
- "@xpert-ai/chatkit-types": "~0.5.9",
63
62
  "@xpert-ai/a2ui-react": "~0.1.0",
64
- "@xpert-ai/chatkit-web-shared": "~0.4.4"
63
+ "@xpert-ai/chatkit-web-shared": "~0.4.4",
64
+ "@xpert-ai/chatkit-types": "~0.5.9"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@testing-library/jest-dom": "^6.9.1",
@@ -1 +0,0 @@
1
- import{aq as o,ar as n}from"./index-u1mkD0qp.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-e9KeJY17.js";import{_ as i}from"./index-u1mkD0qp.js";import"./chunk-FMBD7UC4-D_dBWPlk.js";import"./chunk-YZCP3GAM-DJqQhrr8.js";import"./chunk-55IACEB6-CZAtEArU.js";import"./chunk-EDXVE4YY-COxJh3DH.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-e9KeJY17.js";import{_ as i}from"./index-u1mkD0qp.js";import"./chunk-FMBD7UC4-D_dBWPlk.js";import"./chunk-YZCP3GAM-DJqQhrr8.js";import"./chunk-55IACEB6-CZAtEArU.js";import"./chunk-EDXVE4YY-COxJh3DH.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./graph-ByIAcL_S.js";var e=4;function a(o){return r(o,e)}export{a as c};
@@ -1 +0,0 @@
1
- import{s as t,b as r,a,S as s}from"./chunk-OYMX7WX6-BqoQo_Ev.js";import{_ as i}from"./index-u1mkD0qp.js";import"./chunk-55IACEB6-CZAtEArU.js";import"./chunk-EDXVE4YY-COxJh3DH.js";var l={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{l as diagram};