@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.
- package/dist/app/assets/{_baseUniq-6ZFgK1tY.js → _baseUniq-BXI7T8Dw.js} +1 -1
- package/dist/app/assets/{abap-DWF9Trwf.js → abap-D-EyZ4nz.js} +1 -1
- package/dist/app/assets/{abnf-TAj8odMm.js → abnf-C4D_ajan.js} +1 -1
- package/dist/app/assets/{actionscript-C6mhOoWx.js → actionscript-r0CeEwQ2.js} +1 -1
- package/dist/app/assets/{ada-D-8eCfSH.js → ada-BVnErPbz.js} +1 -1
- package/dist/app/assets/{agda-DnlHkQLu.js → agda-DGFLmVOF.js} +1 -1
- package/dist/app/assets/{al-wth0pvZQ.js → al-CqRMXVdp.js} +1 -1
- package/dist/app/assets/{antlr4-DeV2mrOi.js → antlr4-DBHBm6uq.js} +1 -1
- package/dist/app/assets/{apacheconf-axi7NdXK.js → apacheconf-DYjz_OYf.js} +1 -1
- package/dist/app/assets/{apex-BIWbapRI.js → apex--V3KuTol.js} +1 -1
- package/dist/app/assets/{apl-DLp60373.js → apl-CxqY9-GY.js} +1 -1
- package/dist/app/assets/{applescript-DJFERC3T.js → applescript-DeSEz3nk.js} +1 -1
- package/dist/app/assets/{aql-DT6gSXyQ.js → aql-ivXRGp4L.js} +1 -1
- package/dist/app/assets/{arc-Ds6XkYc-.js → arc-BuBWtq_B.js} +1 -1
- package/dist/app/assets/{architectureDiagram-Q4EWVU46-BSeUKXpW.js → architectureDiagram-Q4EWVU46-UFZ94GIQ.js} +1 -1
- package/dist/app/assets/{arduino-Bjw55sXZ.js → arduino-CUcHKCgr.js} +1 -1
- package/dist/app/assets/{arff-C2FmmHbU.js → arff-Cu79UaXp.js} +1 -1
- package/dist/app/assets/{asciidoc-Cra_4rtA.js → asciidoc-D-i3ZczB.js} +1 -1
- package/dist/app/assets/{asm6502-SKvVoauI.js → asm6502-20VW9EjJ.js} +1 -1
- package/dist/app/assets/{asmatmel-CZ9yXIuT.js → asmatmel-WPH5nSLe.js} +1 -1
- package/dist/app/assets/{aspnet-Cu4nTtKj.js → aspnet-MW3pllRq.js} +1 -1
- package/dist/app/assets/{autohotkey-DGR-bmww.js → autohotkey-0J3Fd6zK.js} +1 -1
- package/dist/app/assets/{autoit-foDsJo_-.js → autoit-BQuPP7VJ.js} +1 -1
- package/dist/app/assets/{avisynth-nHNE11uo.js → avisynth-DORBGGmg.js} +1 -1
- package/dist/app/assets/{avro-idl-Dmx_NCmz.js → avro-idl-0byWqgGX.js} +1 -1
- package/dist/app/assets/{bash-0HrDY6Lc.js → bash-CJDzp2aL.js} +1 -1
- package/dist/app/assets/{basic-CKgAasoo.js → basic-BlnaVEi_.js} +1 -1
- package/dist/app/assets/{batch-B6U0xIP9.js → batch-DVgl_KJ-.js} +1 -1
- package/dist/app/assets/{bbcode-BsYxIGOX.js → bbcode-CjBPn0t5.js} +1 -1
- package/dist/app/assets/{bicep-CTms9RW8.js → bicep-D7HSDEDP.js} +1 -1
- package/dist/app/assets/{birb-TqMRWcJ-.js → birb-DqKONCaK.js} +1 -1
- package/dist/app/assets/{bison-BmX2KdpY.js → bison-ag9smHtW.js} +1 -1
- package/dist/app/assets/{blockDiagram-DXYQGD6D-Bx8AIk97.js → blockDiagram-DXYQGD6D-B9hN_ikD.js} +1 -1
- package/dist/app/assets/{bnf-JQJ5eQdZ.js → bnf-DQ2kHYa5.js} +1 -1
- package/dist/app/assets/{brainfuck-C2u9JGjo.js → brainfuck-9bKpsRk-.js} +1 -1
- package/dist/app/assets/{brightscript-StgFgAi9.js → brightscript-uddTcu4C.js} +1 -1
- package/dist/app/assets/{bro-BQBwNPz1.js → bro-Bd870iTO.js} +1 -1
- package/dist/app/assets/{bsl-DsMpfd5F.js → bsl-Avfe_ADM.js} +1 -1
- package/dist/app/assets/{c-Mo5AGsdB.js → c-2uS1ohnd.js} +1 -1
- package/dist/app/assets/{c4Diagram-AHTNJAMY-DT-mA7uO.js → c4Diagram-AHTNJAMY-sGgLuinA.js} +1 -1
- package/dist/app/assets/{cfscript-5DcO-yfP.js → cfscript-DqvHFL4D.js} +1 -1
- package/dist/app/assets/{chaiscript-UzHjuA-1.js → chaiscript-MloEatV-.js} +1 -1
- package/dist/app/assets/channel-Cse2bgqv.js +1 -0
- package/dist/app/assets/{chunk-4BX2VUAB-D4OlwbGP.js → chunk-4BX2VUAB-BmW6GdsH.js} +1 -1
- package/dist/app/assets/{chunk-4TB4RGXK-e9KeJY17.js → chunk-4TB4RGXK-CKRcBflB.js} +1 -1
- package/dist/app/assets/{chunk-55IACEB6-CZAtEArU.js → chunk-55IACEB6-Eav3nSJJ.js} +1 -1
- package/dist/app/assets/{chunk-EDXVE4YY-COxJh3DH.js → chunk-EDXVE4YY-Bvp7aZNS.js} +1 -1
- package/dist/app/assets/{chunk-FMBD7UC4-D_dBWPlk.js → chunk-FMBD7UC4-Vg_B-ILm.js} +1 -1
- package/dist/app/assets/{chunk-OYMX7WX6-BqoQo_Ev.js → chunk-OYMX7WX6-CxZ29xXq.js} +1 -1
- package/dist/app/assets/{chunk-QZHKN3VN-Bx-8w8DJ.js → chunk-QZHKN3VN-BPIWo3Iz.js} +1 -1
- package/dist/app/assets/{chunk-YZCP3GAM-DJqQhrr8.js → chunk-YZCP3GAM-GC-seHwv.js} +1 -1
- package/dist/app/assets/{cil-8yfoE6xO.js → cil-zMiCTMd2.js} +1 -1
- package/dist/app/assets/classDiagram-6PBFFD2Q-HDuPp24m.js +1 -0
- package/dist/app/assets/classDiagram-v2-HSJHXN6E-HDuPp24m.js +1 -0
- package/dist/app/assets/{clike-5gubaaDF.js → clike-DeMktiAr.js} +1 -1
- package/dist/app/assets/{clojure-BU6IXSBW.js → clojure-BgDuO6KJ.js} +1 -1
- package/dist/app/assets/clone-DHnqgElx.js +1 -0
- package/dist/app/assets/{cmake-DBSoV6JC.js → cmake-pfbh49RZ.js} +1 -1
- package/dist/app/assets/{cobol-CVwPaGMX.js → cobol-gRo96oV8.js} +1 -1
- package/dist/app/assets/{coffeescript-Yr9sfBFB.js → coffeescript-joAYXd76.js} +1 -1
- package/dist/app/assets/{concurnas-CEYA2nSC.js → concurnas-L83u7tgM.js} +1 -1
- package/dist/app/assets/{coq-C2Nkpmyg.js → coq-Cj-rcPnX.js} +1 -1
- package/dist/app/assets/{core-BpLJDSQz.js → core-DiP7EQIw.js} +1 -1
- package/dist/app/assets/{cose-bilkent-S5V4N54A-Djhwby_J.js → cose-bilkent-S5V4N54A-SSRonnIL.js} +1 -1
- package/dist/app/assets/{cpp-Dlvu7zEC.js → cpp-BkfeVaCa.js} +1 -1
- package/dist/app/assets/{crystal-C-NuH51e.js → crystal-Dg25tlyL.js} +1 -1
- package/dist/app/assets/{csharp-BiFSEt98.js → csharp-BiJxgdPO.js} +1 -1
- package/dist/app/assets/{cshtml-tg8jBeUN.js → cshtml-DTgJhoLW.js} +1 -1
- package/dist/app/assets/{csp-DjFcLsKu.js → csp-CrnaYZDk.js} +1 -1
- package/dist/app/assets/{css-HzYb-mkB.js → css-BmfKLG2T.js} +1 -1
- package/dist/app/assets/{css-extras-BdXLVqkQ.js → css-extras-B8pVT9JD.js} +1 -1
- package/dist/app/assets/{csv-BRmsOX-t.js → csv-CewM0jHO.js} +1 -1
- package/dist/app/assets/{cypher-CNIiH4Do.js → cypher-D9L0Xpp7.js} +1 -1
- package/dist/app/assets/{d-DtAgdegv.js → d-3alF6-58.js} +1 -1
- package/dist/app/assets/{dagre-KV5264BT-W0gS_n5A.js → dagre-KV5264BT-DYq3BOKQ.js} +1 -1
- package/dist/app/assets/{dart-LZOryyfk.js → dart-D-tUUe4U.js} +1 -1
- package/dist/app/assets/{dataweave-NCXDKb_T.js → dataweave-CdigFRVm.js} +1 -1
- package/dist/app/assets/{dax-Bn12wjU2.js → dax-BfoZJt-Z.js} +1 -1
- package/dist/app/assets/{dhall-vpyA1fIP.js → dhall-DdxXJMMZ.js} +1 -1
- package/dist/app/assets/{diagram-5BDNPKRD-B1DgxwOs.js → diagram-5BDNPKRD-DXKj6X7M.js} +1 -1
- package/dist/app/assets/{diagram-G4DWMVQ6-BfbFkNwe.js → diagram-G4DWMVQ6-DD4aKlwj.js} +1 -1
- package/dist/app/assets/{diagram-MMDJMWI5-btOcDbqz.js → diagram-MMDJMWI5-njm017YR.js} +1 -1
- package/dist/app/assets/{diagram-TYMM5635-C2Jip2Pk.js → diagram-TYMM5635-azeX36n2.js} +1 -1
- package/dist/app/assets/{diff-CtiFCx9L.js → diff-C-yn8RRu.js} +1 -1
- package/dist/app/assets/{django-CLA1Ea5N.js → django-OwPewiXK.js} +1 -1
- package/dist/app/assets/{dns-zone-file-BLRs1VDf.js → dns-zone-file-GJuMO-5M.js} +1 -1
- package/dist/app/assets/{docker-tMg2PBwj.js → docker-BCNqopqW.js} +1 -1
- package/dist/app/assets/{dot-CScyHsco.js → dot-pTr4m1z8.js} +1 -1
- package/dist/app/assets/{ebnf-Dbto0Gzd.js → ebnf-D9hA1wBK.js} +1 -1
- package/dist/app/assets/{editorconfig-CXuKRBfR.js → editorconfig-auCVaEE_.js} +1 -1
- package/dist/app/assets/{eiffel-C2hw5pN0.js → eiffel-DPbyAFdd.js} +1 -1
- package/dist/app/assets/{ejs-DENlwqyK.js → ejs-Cba0JpAI.js} +1 -1
- package/dist/app/assets/{elixir-l7EJ9gd7.js → elixir-Bc_bvYHD.js} +1 -1
- package/dist/app/assets/{elm-BOxDipBg.js → elm-DdX2q9P-.js} +1 -1
- package/dist/app/assets/{erDiagram-SMLLAGMA-DthDd7Ea.js → erDiagram-SMLLAGMA-hbYypg4k.js} +1 -1
- package/dist/app/assets/{erb-BG16G-EJ.js → erb-umtVPOwV.js} +1 -1
- package/dist/app/assets/{erlang-DTXv9ULs.js → erlang-_x64G89-.js} +1 -1
- package/dist/app/assets/{etlua-DMAVDR7i.js → etlua-C1AB2uqK.js} +1 -1
- package/dist/app/assets/{excel-formula-Cyb-8eGe.js → excel-formula-C1Rjk813.js} +1 -1
- package/dist/app/assets/{factor-oeciKduw.js → factor-BGzHN0HR.js} +1 -1
- package/dist/app/assets/{false-DgmIo1dN.js → false-CcOKyoeO.js} +1 -1
- package/dist/app/assets/{firestore-security-rules-DtjxKyUA.js → firestore-security-rules-DpY_QU6q.js} +1 -1
- package/dist/app/assets/{flow-cBoaYynS.js → flow-DTW9n3_O.js} +1 -1
- package/dist/app/assets/{flowDiagram-DWJPFMVM-jE-friCu.js → flowDiagram-DWJPFMVM-DHpbncsk.js} +1 -1
- package/dist/app/assets/{fortran-Bbgqa3YN.js → fortran-CrH4xGT8.js} +1 -1
- package/dist/app/assets/{fsharp-Dg4Cxhfj.js → fsharp-BOAVk84R.js} +1 -1
- package/dist/app/assets/{ftl-BgyX-G2_.js → ftl-Bf7e4ohH.js} +1 -1
- package/dist/app/assets/{ganttDiagram-T4ZO3ILL-iM-RmS8g.js → ganttDiagram-T4ZO3ILL-Dg7OrRry.js} +1 -1
- package/dist/app/assets/{gap-SY68x2A5.js → gap-DEnT59qr.js} +1 -1
- package/dist/app/assets/{gcode-BvGPctTN.js → gcode-DIMe2vjZ.js} +1 -1
- package/dist/app/assets/{gdscript-B19GrgYm.js → gdscript-Cf2tApbU.js} +1 -1
- package/dist/app/assets/{gedcom-OCgqKeZM.js → gedcom-TyWpffRf.js} +1 -1
- package/dist/app/assets/{gherkin-Abjyq31i.js → gherkin-CtAYOd2n.js} +1 -1
- package/dist/app/assets/{git-Ii6Pg8tm.js → git-HN03lGdF.js} +1 -1
- package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-BYRfaC8Z.js → gitGraphDiagram-UUTBAWPF-mnmmS1yy.js} +1 -1
- package/dist/app/assets/{glsl-BJE11FOX.js → glsl-BiZ-slvl.js} +1 -1
- package/dist/app/assets/{gml-CDxepHTY.js → gml-qNaKxT1M.js} +1 -1
- package/dist/app/assets/{gn-B6Vy0I-L.js → gn-CrCreTwP.js} +1 -1
- package/dist/app/assets/{go-DFpqQzU0.js → go-D-GmUWFF.js} +1 -1
- package/dist/app/assets/{go-module-DklZG6hD.js → go-module-CwsdUHrV.js} +1 -1
- package/dist/app/assets/{graph-ByIAcL_S.js → graph-d5dA6b9r.js} +1 -1
- package/dist/app/assets/{graphql-Dprg1sSR.js → graphql-B2q2lsn_.js} +1 -1
- package/dist/app/assets/{groovy-DGH1y-dA.js → groovy-DeymKzSD.js} +1 -1
- package/dist/app/assets/{haml-BtBB94NQ.js → haml-CChf8tT6.js} +1 -1
- package/dist/app/assets/{handlebars-Anm_gWy_.js → handlebars-ZL4EGXwB.js} +1 -1
- package/dist/app/assets/{haskell-DzJtEOF4.js → haskell-DxalTt0K.js} +1 -1
- package/dist/app/assets/{haxe-Dk-QHEY7.js → haxe-CRB7OG4j.js} +1 -1
- package/dist/app/assets/{hcl-ClhI4wv-.js → hcl-_Ibwt3jR.js} +1 -1
- package/dist/app/assets/{hlsl-9fFB-v6O.js → hlsl-2M5RnjJv.js} +1 -1
- package/dist/app/assets/{hoon-C8xF2ABJ.js → hoon-Bzj-oQ3m.js} +1 -1
- package/dist/app/assets/{hpkp-DGjTIjOk.js → hpkp-DH7SmT5L.js} +1 -1
- package/dist/app/assets/{hsts-CJCweg07.js → hsts-C6L_MMV3.js} +1 -1
- package/dist/app/assets/{http-17qWz8X9.js → http-gjFQjV0P.js} +1 -1
- package/dist/app/assets/{ichigojam-DXvpD529.js → ichigojam-C-GH_u3s.js} +1 -1
- package/dist/app/assets/{icon-CAZspcds.js → icon-BVswkxlX.js} +1 -1
- package/dist/app/assets/{icu-message-format-C6jXAnXd.js → icu-message-format-eBhF3V70.js} +1 -1
- package/dist/app/assets/{idris-J3UTRYwl.js → idris-Cb6W3_-q.js} +1 -1
- package/dist/app/assets/{iecst-4WL79ek5.js → iecst-56grWiTv.js} +1 -1
- package/dist/app/assets/{ignore-_tm9LFvX.js → ignore-4XHcQ9vx.js} +1 -1
- package/dist/app/assets/{index-u1mkD0qp.js → index-DY1b1qzN.js} +138 -138
- package/dist/app/assets/{infoDiagram-42DDH7IO-syPKSQF7.js → infoDiagram-42DDH7IO-DZfsNiyO.js} +1 -1
- package/dist/app/assets/{inform7-Cc8Ia9ol.js → inform7-BWlRbsT9.js} +1 -1
- package/dist/app/assets/{ini-VVKCzOqn.js → ini-kTA-a-YT.js} +1 -1
- package/dist/app/assets/{io-JNDhxl0F.js → io-CLtJ5RFn.js} +1 -1
- package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-XyLxBtiD.js → ishikawaDiagram-UXIWVN3A-CEFbPMXR.js} +1 -1
- package/dist/app/assets/{j-BHUyDBez.js → j-B04Qo9HS.js} +1 -1
- package/dist/app/assets/{java-DtoEHi0Q.js → java-DANIgJ8u.js} +1 -1
- package/dist/app/assets/{javadoc-D0EqGQCT.js → javadoc-DWaynIjd.js} +1 -1
- package/dist/app/assets/{javadoclike-CLvYgAKV.js → javadoclike-Bh7jL2IJ.js} +1 -1
- package/dist/app/assets/{javascript-DLHmXfnQ.js → javascript-697spk67.js} +1 -1
- package/dist/app/assets/{javastacktrace-DFIrDubt.js → javastacktrace-BmhiUWZE.js} +1 -1
- package/dist/app/assets/{jexl-BW-XseY9.js → jexl-DvcrnKUU.js} +1 -1
- package/dist/app/assets/{jolie-DebTzbDr.js → jolie-C134P_jy.js} +1 -1
- package/dist/app/assets/{journeyDiagram-VCZTEJTY-DT0_1QjQ.js → journeyDiagram-VCZTEJTY-CZyOkNPH.js} +1 -1
- package/dist/app/assets/{jq-D3aZcCzB.js → jq-lBQfmzFU.js} +1 -1
- package/dist/app/assets/{js-extras-B-LEn2Pj.js → js-extras-Bvktqp7t.js} +1 -1
- package/dist/app/assets/{js-templates-ivFLl5w2.js → js-templates-BgeqKRHr.js} +1 -1
- package/dist/app/assets/{jsdoc-Cs5pswPx.js → jsdoc-C-dqugja.js} +1 -1
- package/dist/app/assets/{json-DchHgDYQ.js → json-Dyfzed8o.js} +1 -1
- package/dist/app/assets/{json5-DVwOmNXl.js → json5-B6cu6fBu.js} +1 -1
- package/dist/app/assets/{jsonp-BRHPl4d1.js → jsonp-CwWMW6U4.js} +1 -1
- package/dist/app/assets/{jsstacktrace-fTjz0PX0.js → jsstacktrace-CTJJuL1N.js} +1 -1
- package/dist/app/assets/{jsx-DAqizUfV.js → jsx-BK5VV-Bc.js} +1 -1
- package/dist/app/assets/{julia-XXWJxlc4.js → julia-O6BULbE3.js} +1 -1
- package/dist/app/assets/{kanban-definition-6JOO6SKY-BALi0bF0.js → kanban-definition-6JOO6SKY-t4B-2de6.js} +1 -1
- package/dist/app/assets/{keepalived-BZHdkplB.js → keepalived-NJhOHvb3.js} +1 -1
- package/dist/app/assets/{keyman-2I11eKM6.js → keyman-BAOohQH4.js} +1 -1
- package/dist/app/assets/{kotlin-kjwJFFdd.js → kotlin-DRgEDt2x.js} +1 -1
- package/dist/app/assets/{kumir-CfgPMU5v.js → kumir-CHQw-Q2J.js} +1 -1
- package/dist/app/assets/{kusto-DO0qzP2e.js → kusto-CQ7VRhiZ.js} +1 -1
- package/dist/app/assets/{latex-CojTGFIP.js → latex-Bcv7CKb8.js} +1 -1
- package/dist/app/assets/{latte-G-yuW-i2.js → latte-wHK8wk1M.js} +1 -1
- package/dist/app/assets/{layout-D2nfdZhR.js → layout-ClyezRwh.js} +1 -1
- package/dist/app/assets/{less-V3QyGdEn.js → less-AcCx2OSh.js} +1 -1
- package/dist/app/assets/{lilypond-Bs3htHG0.js → lilypond-CyXolOPs.js} +1 -1
- package/dist/app/assets/{linear-D585IpEg.js → linear-CNZSlS9R.js} +1 -1
- package/dist/app/assets/{liquid-BROVidwA.js → liquid-R1_I489g.js} +1 -1
- package/dist/app/assets/{lisp-BuKmiSQ0.js → lisp-BoH2sXHo.js} +1 -1
- package/dist/app/assets/{livescript-BkOC69KT.js → livescript-BoZRg_1B.js} +1 -1
- package/dist/app/assets/{llvm-BEOuLbHt.js → llvm-el2xhJyq.js} +1 -1
- package/dist/app/assets/{log-CBHfMsx5.js → log-DDUo0D7L.js} +1 -1
- package/dist/app/assets/{lolcode-BtmDxNNh.js → lolcode-DSV8deXb.js} +1 -1
- package/dist/app/assets/{lua-DDf-Ah8a.js → lua-CKeK5k7Q.js} +1 -1
- package/dist/app/assets/{magma-Dm5_uhPM.js → magma-BRKc4Tic.js} +1 -1
- package/dist/app/assets/{makefile--n3oMszP.js → makefile-UbMQ2A1c.js} +1 -1
- package/dist/app/assets/{markdown-Ctzuv0r_.js → markdown-C3XSz14_.js} +1 -1
- package/dist/app/assets/{markup-Dfl-0CWq.js → markup-CexvwbP4.js} +1 -1
- package/dist/app/assets/{markup-templating-De32Zpcx.js → markup-templating-Dt15tksf.js} +1 -1
- package/dist/app/assets/{matlab-DAm-y67H.js → matlab-By53YHOl.js} +1 -1
- package/dist/app/assets/{maxscript-D4xpVuQI.js → maxscript-C14jq75Q.js} +1 -1
- package/dist/app/assets/{mel-C56EZOPv.js → mel-N2i-hVeF.js} +1 -1
- package/dist/app/assets/{mermaid-BUojmUbK.js → mermaid-9Tq0j11d.js} +1 -1
- package/dist/app/assets/{min-DiwQj-mK.js → min-S_pP2xdu.js} +1 -1
- package/dist/app/assets/{mindmap-definition-QFDTVHPH-JKTcRI_P.js → mindmap-definition-QFDTVHPH-CQoQCXxA.js} +1 -1
- package/dist/app/assets/{mizar-EwWemVFX.js → mizar-D27s94v7.js} +1 -1
- package/dist/app/assets/{mongodb-CY_xtl82.js → mongodb-COHhFrKH.js} +1 -1
- package/dist/app/assets/{monkey-CcLpEhVw.js → monkey-BPFS8v_V.js} +1 -1
- package/dist/app/assets/{moonscript-BK3rdVpx.js → moonscript-qcdf0FsJ.js} +1 -1
- package/dist/app/assets/{n1ql-BxFD2AAF.js → n1ql-CAMJ9BUI.js} +1 -1
- package/dist/app/assets/{n4js-Dw4n_3ZU.js → n4js-DsEQbbRu.js} +1 -1
- package/dist/app/assets/{nand2tetris-hdl-USZv6bGA.js → nand2tetris-hdl-BTJS-ZaQ.js} +1 -1
- package/dist/app/assets/{naniscript-DTWcDUeq.js → naniscript-CHqpUyQp.js} +1 -1
- package/dist/app/assets/{nasm-D5y29hdi.js → nasm-DFxuk91d.js} +1 -1
- package/dist/app/assets/{neon-C7MMOaKb.js → neon-nJr6YZoU.js} +1 -1
- package/dist/app/assets/{nevod-KyPcyq8u.js → nevod-DEc3NK27.js} +1 -1
- package/dist/app/assets/{nginx-DI5DWas1.js → nginx-Tjm7q69C.js} +1 -1
- package/dist/app/assets/{nim-Bf7cNxf4.js → nim-VguiS6Bq.js} +1 -1
- package/dist/app/assets/{nix-DqdX6j1Y.js → nix-yWM9t3CY.js} +1 -1
- package/dist/app/assets/{nsis-CwpSmNvk.js → nsis-BM0iXiok.js} +1 -1
- package/dist/app/assets/{objectivec-CGz28Htp.js → objectivec-C3LCnAv0.js} +1 -1
- package/dist/app/assets/{ocaml-C0Qs1R7e.js → ocaml--5vg_KaF.js} +1 -1
- package/dist/app/assets/{opencl-CbcT4zk_.js → opencl-Ctv6lBFw.js} +1 -1
- package/dist/app/assets/{openqasm-Dn97wqeX.js → openqasm-J15i0TDx.js} +1 -1
- package/dist/app/assets/{oz-DY7-JJSa.js → oz-Blpgy3wX.js} +1 -1
- package/dist/app/assets/{parigp-I_awX_TH.js → parigp-DsSx3jqA.js} +1 -1
- package/dist/app/assets/{parser-B5y53mqh.js → parser-CP79vB9K.js} +1 -1
- package/dist/app/assets/{pascal-BDb6KN1X.js → pascal-DF4tgT6s.js} +1 -1
- package/dist/app/assets/{pascaligo-OpMBAxrN.js → pascaligo-P4ePWM4l.js} +1 -1
- package/dist/app/assets/{pcaxis-iFtQjQRs.js → pcaxis-D0W39cSD.js} +1 -1
- package/dist/app/assets/{peoplecode-B0zod9MZ.js → peoplecode-yIGizDz9.js} +1 -1
- package/dist/app/assets/{perl-Cz6lJlZo.js → perl-BozAvdb7.js} +1 -1
- package/dist/app/assets/{php-bGC5BlGY.js → php-BCUi-P1U.js} +1 -1
- package/dist/app/assets/{php-extras-CkZ9encI.js → php-extras-D2Tq9L8S.js} +1 -1
- package/dist/app/assets/{phpdoc-CU0pLZC-.js → phpdoc-4Waez8Jr.js} +1 -1
- package/dist/app/assets/{pieDiagram-DEJITSTG-D7e7cLnS.js → pieDiagram-DEJITSTG-BpkNL3Si.js} +1 -1
- package/dist/app/assets/{plsql-BIskjoqp.js → plsql-BOQEzHOU.js} +1 -1
- package/dist/app/assets/{powerquery-ZlfqD1RN.js → powerquery-C9dswOUo.js} +1 -1
- package/dist/app/assets/{powershell-DpZ48_Z3.js → powershell-peQmnf7t.js} +1 -1
- package/dist/app/assets/{processing-BLVsWgLL.js → processing-Clzi_VlF.js} +1 -1
- package/dist/app/assets/{prolog-iwjHzZZh.js → prolog-D_MNGIZA.js} +1 -1
- package/dist/app/assets/{promql-BkSPUqzV.js → promql-D2GrCJ7g.js} +1 -1
- package/dist/app/assets/{properties-DWuP1Y6w.js → properties-C1UFMkb6.js} +1 -1
- package/dist/app/assets/{protobuf-Cy4V05b-.js → protobuf-BCJM4lLJ.js} +1 -1
- package/dist/app/assets/{psl-BxTfwXpV.js → psl-Chkg-F6m.js} +1 -1
- package/dist/app/assets/{pug-DgWmL07a.js → pug-DVl3jqV0.js} +1 -1
- package/dist/app/assets/{puppet-CinHgGuF.js → puppet-DuMFcNc5.js} +1 -1
- package/dist/app/assets/{pure-BI-SA0Ee.js → pure-rZfaWhS5.js} +1 -1
- package/dist/app/assets/{purebasic-CLosFLJz.js → purebasic-DV3yvOHh.js} +1 -1
- package/dist/app/assets/{purescript-CYRb1XZ0.js → purescript-BnUKC-jf.js} +1 -1
- package/dist/app/assets/{q-Cu8YxC-p.js → q-C38kJymJ.js} +1 -1
- package/dist/app/assets/{qml-OF1DwKXi.js → qml-snU_RaaT.js} +1 -1
- package/dist/app/assets/{qore-BQnxV4XB.js → qore-DpTRPFtu.js} +1 -1
- package/dist/app/assets/{qsharp-k5eJXqUq.js → qsharp-CPZ5yHlv.js} +1 -1
- package/dist/app/assets/{quadrantDiagram-34T5L4WZ-B7Z9w4UC.js → quadrantDiagram-34T5L4WZ-B7_Qfocy.js} +1 -1
- package/dist/app/assets/{r-Oc5SWiw7.js → r-BvzM1hZQ.js} +1 -1
- package/dist/app/assets/{racket-XA2O6BAA.js → racket-ErmuKwH-.js} +1 -1
- package/dist/app/assets/{reason-BlPV_-ih.js → reason-G7Zu0nSD.js} +1 -1
- package/dist/app/assets/{regex-lLlWVBI5.js → regex-D_BN_jue.js} +1 -1
- package/dist/app/assets/{rego-Cju6HngJ.js → rego-DvwvduBH.js} +1 -1
- package/dist/app/assets/{renpy-D4YiCuiK.js → renpy-3NuLSjJo.js} +1 -1
- package/dist/app/assets/{requirementDiagram-MS252O5E-WxC8Qdk2.js → requirementDiagram-MS252O5E-syvqq2_Q.js} +1 -1
- package/dist/app/assets/{rest-CZreUelq.js → rest-CHSSIHMs.js} +1 -1
- package/dist/app/assets/{rip-CseFqLdk.js → rip-DZ3RdFTN.js} +1 -1
- package/dist/app/assets/{roboconf-CsSE0UBl.js → roboconf-Bo8Ycr-R.js} +1 -1
- package/dist/app/assets/{robotframework-pIJmgAYP.js → robotframework-C8YuXAD5.js} +1 -1
- package/dist/app/assets/{ruby-D1emo2Mn.js → ruby-CbPTMHul.js} +1 -1
- package/dist/app/assets/{rust-CPDAYJ8R.js → rust-Be6tRdyn.js} +1 -1
- package/dist/app/assets/{sankeyDiagram-XADWPNL6-DnzC9Lo8.js → sankeyDiagram-XADWPNL6-DIbRw1Eb.js} +1 -1
- package/dist/app/assets/{sas-DFxnymmq.js → sas-CEgNcYVW.js} +1 -1
- package/dist/app/assets/{sass-DdlvBdYn.js → sass-CugWuS5v.js} +1 -1
- package/dist/app/assets/{scala-G_4XubRc.js → scala-_i3ArlCz.js} +1 -1
- package/dist/app/assets/{scheme-DGP-mNqB.js → scheme-CeS9bTp6.js} +1 -1
- package/dist/app/assets/{scss-C1G-8kab.js → scss-DkziYd94.js} +1 -1
- package/dist/app/assets/{sequenceDiagram-FGHM5R23-DMP_cyFC.js → sequenceDiagram-FGHM5R23-BnsEmyT-.js} +1 -1
- package/dist/app/assets/{shell-session-C65geZNK.js → shell-session-0So4PVyL.js} +1 -1
- package/dist/app/assets/{smali-BW7qfB4z.js → smali-CMKqjHCB.js} +1 -1
- package/dist/app/assets/{smalltalk-CEf3KR-0.js → smalltalk-C82ppWp6.js} +1 -1
- package/dist/app/assets/{smarty-CYa-Qg4N.js → smarty-D8aTwHdz.js} +1 -1
- package/dist/app/assets/{sml-D-TJsKFs.js → sml-BbwlNtiO.js} +1 -1
- package/dist/app/assets/{solidity-ZHwj7ygS.js → solidity-CXfgGVXF.js} +1 -1
- package/dist/app/assets/{solution-file-BDARUPM2.js → solution-file-ke_Pmp9Z.js} +1 -1
- package/dist/app/assets/{soy-CVzY9-gc.js → soy-DeDIRSJd.js} +1 -1
- package/dist/app/assets/{sparql-CtxmuAog.js → sparql-CGXxvkVC.js} +1 -1
- package/dist/app/assets/{splunk-spl-BwgIAcdV.js → splunk-spl-0vgXm5QS.js} +1 -1
- package/dist/app/assets/{sqf-CEg9K7dB.js → sqf-D7aTsMsn.js} +1 -1
- package/dist/app/assets/{sql-C5IOPypk.js → sql-D_e1F0WW.js} +1 -1
- package/dist/app/assets/{squirrel-B51VDZR6.js → squirrel-D-rgyYo7.js} +1 -1
- package/dist/app/assets/{stan-BJ2IulXg.js → stan-DDTA2Ska.js} +1 -1
- package/dist/app/assets/{stateDiagram-FHFEXIEX-CV3HoD83.js → stateDiagram-FHFEXIEX-BObgBUbY.js} +1 -1
- package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-DtJXELhk.js +1 -0
- package/dist/app/assets/{stylus-DIJkk-Ef.js → stylus-Dv08c1SQ.js} +1 -1
- package/dist/app/assets/{swift-RQKmu9fi.js → swift-31QglOo3.js} +1 -1
- package/dist/app/assets/{systemd-Z9hVcf5D.js → systemd-CbNNwmhS.js} +1 -1
- package/dist/app/assets/{t4-cs-DNjRuH01.js → t4-cs-ByVeOnvZ.js} +1 -1
- package/dist/app/assets/{t4-templating-DwOKUx3X.js → t4-templating-D647kWrr.js} +1 -1
- package/dist/app/assets/{t4-vb-CYg-ky6L.js → t4-vb-Ca8y-TZT.js} +1 -1
- package/dist/app/assets/{tap-CSfV-S4B.js → tap-Chk1z2pT.js} +1 -1
- package/dist/app/assets/{tcl-OS8u4Jpj.js → tcl-BGksyNQV.js} +1 -1
- package/dist/app/assets/{textile--buHK3Ng.js → textile-DcUtfExh.js} +1 -1
- package/dist/app/assets/{timeline-definition-GMOUNBTQ-MVmom_nT.js → timeline-definition-GMOUNBTQ-BuR19jYF.js} +1 -1
- package/dist/app/assets/{toml-CKOXVMhj.js → toml-B0TYIIa9.js} +1 -1
- package/dist/app/assets/{tremor-CUfnVYnJ.js → tremor-LtVZDdaa.js} +1 -1
- package/dist/app/assets/{tt2-TL3Wbn7N.js → tt2-DWtZAkIs.js} +1 -1
- package/dist/app/assets/{turtle-BED3JMG_.js → turtle-mAcr_dta.js} +1 -1
- package/dist/app/assets/{twig-BXa5CWMf.js → twig-CnthLasK.js} +1 -1
- package/dist/app/assets/{typescript-BpKCj3Te.js → typescript-DvIa4B81.js} +1 -1
- package/dist/app/assets/{typoscript-BEq0cKP-.js → typoscript-Dit5zlyB.js} +1 -1
- package/dist/app/assets/{unrealscript-D-6_918o.js → unrealscript-DpVrLAK2.js} +1 -1
- package/dist/app/assets/{uorazor-fp8VffOr.js → uorazor-CCeycVPo.js} +1 -1
- package/dist/app/assets/{uri-DtOlaNC_.js → uri-3slUKT4e.js} +1 -1
- package/dist/app/assets/{v-jFMXRvTW.js → v-Xa4RTBYN.js} +1 -1
- package/dist/app/assets/{vala-Ckm-PMbW.js → vala-DlSAZsSo.js} +1 -1
- package/dist/app/assets/{vbnet-C8pY22Wp.js → vbnet-R4lo24u-.js} +1 -1
- package/dist/app/assets/{velocity-FBSQz-ob.js → velocity-0kxr-DsA.js} +1 -1
- package/dist/app/assets/{vennDiagram-DHZGUBPP-D6CB2BIX.js → vennDiagram-DHZGUBPP-DpnN0Uez.js} +1 -1
- package/dist/app/assets/{verilog-CpZCf2P8.js → verilog-D49nXLHN.js} +1 -1
- package/dist/app/assets/{vhdl-DpqAgdea.js → vhdl-C3QFfzxo.js} +1 -1
- package/dist/app/assets/{vim-DQGrssWG.js → vim-DxGkT-EF.js} +1 -1
- package/dist/app/assets/{visual-basic-CFed8djL.js → visual-basic-DBYUPVrP.js} +1 -1
- package/dist/app/assets/{wardley-RL74JXVD-BzE43Hta.js → wardley-RL74JXVD-B4EKgg8d.js} +1 -1
- package/dist/app/assets/{wardleyDiagram-NUSXRM2D-CPnAc2pw.js → wardleyDiagram-NUSXRM2D-Cl8sbyJw.js} +1 -1
- package/dist/app/assets/{warpscript-1dCJMiAX.js → warpscript-Bx-L4-ub.js} +1 -1
- package/dist/app/assets/{wasm-BZwtOF0e.js → wasm-BDh2nJ-X.js} +1 -1
- package/dist/app/assets/{web-idl-B7QCr-7x.js → web-idl-CPQTa02_.js} +1 -1
- package/dist/app/assets/{wiki-CcgiGBFq.js → wiki-DYhE8r_p.js} +1 -1
- package/dist/app/assets/{wolfram-DThfInJ4.js → wolfram-CgkPY_Hg.js} +1 -1
- package/dist/app/assets/{wren-BW7TdpYd.js → wren-YJsqIMex.js} +1 -1
- package/dist/app/assets/{xeora-CgLSMyWL.js → xeora-DWC5BtDD.js} +1 -1
- package/dist/app/assets/{xml-doc-bDSgYLiB.js → xml-doc-D4-ryj_1.js} +1 -1
- package/dist/app/assets/{xojo-DDCJ1kNo.js → xojo-_kax1uV3.js} +1 -1
- package/dist/app/assets/{xquery-DZM80jRL.js → xquery-DhN4MqTq.js} +1 -1
- package/dist/app/assets/{xychartDiagram-5P7HB3ND-DqkTpuEJ.js → xychartDiagram-5P7HB3ND-DKoR-cDG.js} +1 -1
- package/dist/app/assets/{yaml-DTJcZpTY.js → yaml-ClZ8DfcQ.js} +1 -1
- package/dist/app/assets/{yang-B_NxH6lp.js → yang-D4ENFlHK.js} +1 -1
- package/dist/app/assets/{zig-BbnKSoUc.js → zig-BXCpCUuJ.js} +1 -1
- package/dist/app/index.html +1 -1
- package/dist/index.cjs +214 -170
- package/dist/index.js +170 -126
- package/package.json +4 -4
- package/dist/app/assets/channel-CzIMlEsT.js +0 -1
- package/dist/app/assets/classDiagram-6PBFFD2Q-BhqPR1-m.js +0 -1
- package/dist/app/assets/classDiagram-v2-HSJHXN6E-BhqPR1-m.js +0 -1
- package/dist/app/assets/clone-BgfhAKUH.js +0 -1
- 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
|
|
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 [
|
|
18855
|
-
|
|
18856
|
-
|
|
18857
|
-
const
|
|
18858
|
-
|
|
18859
|
-
|
|
18860
|
-
|
|
18861
|
-
|
|
18862
|
-
|
|
18863
|
-
|
|
18864
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18884
|
-
|
|
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
|
-
|
|
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
|
-
|
|
18897
|
-
|
|
18898
|
-
|
|
18899
|
-
|
|
18900
|
-
|
|
18901
|
-
|
|
18902
|
-
|
|
18903
|
-
|
|
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 (!
|
|
18911
|
-
|
|
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
|
|
18918
|
-
const requestAgentKey = assistantAgentKey;
|
|
18927
|
+
const realtimeAtRequest = latestRealtimeUsageRef.current;
|
|
18919
18928
|
stream.client.threads.getContextUsage(
|
|
18920
|
-
|
|
18921
|
-
|
|
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)
|
|
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
|
-
|
|
18931
|
-
|
|
18932
|
-
|
|
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)
|
|
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
|
-
|
|
18963
|
+
assistantReady,
|
|
18944
18964
|
hasApiConfiguration,
|
|
18945
|
-
|
|
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.
|
|
19002
|
-
|
|
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
|
|
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)(
|
|
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
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
21617
|
-
!loading && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
21666
|
-
trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
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)(
|
|
21680
|
-
trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
21728
|
-
trailing: item.resource ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
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)(
|
|
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)(
|
|
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" ?
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
23954
|
-
|
|
23955
|
-
|
|
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:
|
|
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:
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
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)(
|
|
25253
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_lucide_react42.X, { className: "size-3 shrink-0" })
|
|
25210
25254
|
}
|
|
25211
25255
|
)
|
|
25212
25256
|
]
|