@xpert-ai/chatkit-ui 0.5.15 → 0.5.16
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-9hdyHfR5.js → _baseUniq-CdqWVyDi.js} +1 -1
- package/dist/app/assets/{abap-y4N5ojeB.js → abap-DG6Ek7_c.js} +1 -1
- package/dist/app/assets/{abnf-CGxt_pi7.js → abnf-D4aLD9mZ.js} +1 -1
- package/dist/app/assets/{actionscript-DHtBtT7W.js → actionscript-B4H2PXyd.js} +1 -1
- package/dist/app/assets/{ada-CzTrTrOe.js → ada-DtM3Nnaa.js} +1 -1
- package/dist/app/assets/{agda-CV42rDct.js → agda-BDfZBc9b.js} +1 -1
- package/dist/app/assets/{al-B19rWg_7.js → al-CuMmj85N.js} +1 -1
- package/dist/app/assets/{antlr4-6j7higho.js → antlr4-CvOASiHP.js} +1 -1
- package/dist/app/assets/{apacheconf-BnTQXe7c.js → apacheconf-egtcsmgP.js} +1 -1
- package/dist/app/assets/{apex-CrGUf4vy.js → apex-aL2bFEJp.js} +1 -1
- package/dist/app/assets/{apl-CFYPxCJn.js → apl-CC_GmUZr.js} +1 -1
- package/dist/app/assets/{applescript-BZWvUcGU.js → applescript-DAxdm_ZL.js} +1 -1
- package/dist/app/assets/{aql-A5X6ON50.js → aql-CWpqz7Xs.js} +1 -1
- package/dist/app/assets/{arc-DfRbHjtJ.js → arc-BDGkEfCH.js} +1 -1
- package/dist/app/assets/{architectureDiagram-Q4EWVU46-bDnvhCp9.js → architectureDiagram-Q4EWVU46-CxmmRQKb.js} +1 -1
- package/dist/app/assets/{arduino-D-E6g3Ne.js → arduino-DeA-rcpQ.js} +1 -1
- package/dist/app/assets/{arff-CLPWjOWo.js → arff-DmVG-Rqm.js} +1 -1
- package/dist/app/assets/{asciidoc-unvw7QPv.js → asciidoc-TLFkcHSh.js} +1 -1
- package/dist/app/assets/{asm6502-D41umBFW.js → asm6502-C4Ip0b9p.js} +1 -1
- package/dist/app/assets/{asmatmel-alNRd3F9.js → asmatmel-thy6vzGi.js} +1 -1
- package/dist/app/assets/{aspnet-_0zU96S5.js → aspnet-DzllYmrW.js} +1 -1
- package/dist/app/assets/{autohotkey-BpMLT2LK.js → autohotkey-B8zy-gEV.js} +1 -1
- package/dist/app/assets/{autoit-mO3ghUI7.js → autoit-CkiepIGR.js} +1 -1
- package/dist/app/assets/{avisynth-DWLO42Rj.js → avisynth-_4CaW1AA.js} +1 -1
- package/dist/app/assets/{avro-idl-BBQRzylG.js → avro-idl-B5uauj2Y.js} +1 -1
- package/dist/app/assets/{bash-QIqJHBX-.js → bash-435vmYqx.js} +1 -1
- package/dist/app/assets/{basic-Bc5kyCr2.js → basic-CaYQWOe4.js} +1 -1
- package/dist/app/assets/{batch-4zRdbOHs.js → batch-BnbU0dwA.js} +1 -1
- package/dist/app/assets/{bbcode-Ketn398N.js → bbcode-ClK0qvV6.js} +1 -1
- package/dist/app/assets/{bicep-D2LZklJx.js → bicep-BNwB5eFu.js} +1 -1
- package/dist/app/assets/{birb-C5z-Tz7A.js → birb-pP0ceH0d.js} +1 -1
- package/dist/app/assets/{bison-BSdtws5Z.js → bison-kM83HWDk.js} +1 -1
- package/dist/app/assets/{blockDiagram-DXYQGD6D-C7-lDa8H.js → blockDiagram-DXYQGD6D-D_Y5pJpD.js} +1 -1
- package/dist/app/assets/{bnf-CzUBVS5p.js → bnf-XqmAKNgb.js} +1 -1
- package/dist/app/assets/{brainfuck-VF_hPzCx.js → brainfuck-DtES44L3.js} +1 -1
- package/dist/app/assets/{brightscript-DyjAyHnm.js → brightscript-CvjC2vRm.js} +1 -1
- package/dist/app/assets/{bro-DXD2kNH0.js → bro-BOO3M_vG.js} +1 -1
- package/dist/app/assets/{bsl-Dgcej-Ho.js → bsl-BnT3JyMb.js} +1 -1
- package/dist/app/assets/{c-B2MQTpqm.js → c-HSm0GKGX.js} +1 -1
- package/dist/app/assets/{c4Diagram-AHTNJAMY-B2bMwEb4.js → c4Diagram-AHTNJAMY-DWDSfX-E.js} +1 -1
- package/dist/app/assets/{cfscript-DATPhxH0.js → cfscript-BqD0iZt0.js} +1 -1
- package/dist/app/assets/{chaiscript-O52uWiyy.js → chaiscript-CBUa9IVb.js} +1 -1
- package/dist/app/assets/channel-BsvzoHJ-.js +1 -0
- package/dist/app/assets/{chunk-4BX2VUAB-Dr7WgjiQ.js → chunk-4BX2VUAB-G68_yQYv.js} +1 -1
- package/dist/app/assets/{chunk-4TB4RGXK-BG3Kd_Oz.js → chunk-4TB4RGXK-C8qWZWuz.js} +1 -1
- package/dist/app/assets/{chunk-55IACEB6-DyX9k3Y1.js → chunk-55IACEB6-D7_j-pa1.js} +1 -1
- package/dist/app/assets/{chunk-EDXVE4YY-pchaRAmm.js → chunk-EDXVE4YY-CIVEVHGi.js} +1 -1
- package/dist/app/assets/{chunk-FMBD7UC4-2yygKKXG.js → chunk-FMBD7UC4-BGwcTuE9.js} +1 -1
- package/dist/app/assets/{chunk-OYMX7WX6-2WusKNDh.js → chunk-OYMX7WX6-DiWZxi_A.js} +1 -1
- package/dist/app/assets/{chunk-QZHKN3VN-BZ5_Y8Zt.js → chunk-QZHKN3VN-C-YpJxwp.js} +1 -1
- package/dist/app/assets/{chunk-YZCP3GAM-_aa6WpMv.js → chunk-YZCP3GAM-QlE1i3zF.js} +1 -1
- package/dist/app/assets/{cil-KLF5l8H1.js → cil-KBR34Gqp.js} +1 -1
- package/dist/app/assets/classDiagram-6PBFFD2Q-CYjgx8Fr.js +1 -0
- package/dist/app/assets/classDiagram-v2-HSJHXN6E-CYjgx8Fr.js +1 -0
- package/dist/app/assets/{clike-D8oWEn5X.js → clike-Du4bbm-V.js} +1 -1
- package/dist/app/assets/{clojure-CT0PdwAd.js → clojure-BVHe2fH_.js} +1 -1
- package/dist/app/assets/clone-DbsXYxks.js +1 -0
- package/dist/app/assets/{cmake-Bo-pQuoI.js → cmake-LfltEGpZ.js} +1 -1
- package/dist/app/assets/{cobol-TNUQ4Zvz.js → cobol-CkSeF0to.js} +1 -1
- package/dist/app/assets/{coffeescript-COZuXnnc.js → coffeescript-CA0rPswf.js} +1 -1
- package/dist/app/assets/{concurnas-CndbEVcp.js → concurnas-PXz5fvZw.js} +1 -1
- package/dist/app/assets/{coq-CQF7xkg5.js → coq-IrOjIGL7.js} +1 -1
- package/dist/app/assets/{core-Ct-8nj69.js → core-DmoYxwYZ.js} +1 -1
- package/dist/app/assets/{cose-bilkent-S5V4N54A-COkBhJ5e.js → cose-bilkent-S5V4N54A-BOmveU-f.js} +1 -1
- package/dist/app/assets/{cpp-Cpt2kIfc.js → cpp-D1GZveGW.js} +1 -1
- package/dist/app/assets/{crystal-CC4A43sf.js → crystal-D8_W3h6-.js} +1 -1
- package/dist/app/assets/{csharp-DVX8Ptxd.js → csharp-DMr0pSHg.js} +1 -1
- package/dist/app/assets/{cshtml-DV8hsAFT.js → cshtml-DWsc6tEe.js} +1 -1
- package/dist/app/assets/{csp-BXIU2vr9.js → csp-BsffHyBO.js} +1 -1
- package/dist/app/assets/{css-hPXFq369.js → css-DftqNva8.js} +1 -1
- package/dist/app/assets/{css-extras-CRzZv0wt.js → css-extras-V_jK59dK.js} +1 -1
- package/dist/app/assets/{csv-DGM23MqA.js → csv-CAt3fUf2.js} +1 -1
- package/dist/app/assets/{cypher-CvafnXIa.js → cypher-DGhvVc6x.js} +1 -1
- package/dist/app/assets/{d-Bgz2Icvc.js → d-pY7u0cyQ.js} +1 -1
- package/dist/app/assets/{dagre-KV5264BT-COvMEU_C.js → dagre-KV5264BT-BCWr5q-a.js} +1 -1
- package/dist/app/assets/{dart-CsQMX65p.js → dart-BoHXdRLm.js} +1 -1
- package/dist/app/assets/{dataweave-7NSMtIoz.js → dataweave-T2yhDDoP.js} +1 -1
- package/dist/app/assets/{dax-DBH5GX3s.js → dax-9LuefO8-.js} +1 -1
- package/dist/app/assets/{dhall-Brj0ymLX.js → dhall-DPTyQCFs.js} +1 -1
- package/dist/app/assets/{diagram-5BDNPKRD-B62KSyFy.js → diagram-5BDNPKRD-DCpIhLj-.js} +1 -1
- package/dist/app/assets/{diagram-G4DWMVQ6-Bx19LSIi.js → diagram-G4DWMVQ6-CPbvjoKj.js} +1 -1
- package/dist/app/assets/{diagram-MMDJMWI5-BsD6FzFH.js → diagram-MMDJMWI5-C5KCxH6X.js} +1 -1
- package/dist/app/assets/{diagram-TYMM5635-W0Jp79ck.js → diagram-TYMM5635-BoWRoWWL.js} +1 -1
- package/dist/app/assets/{diff-CG5RwsI8.js → diff-CPrqhMrr.js} +1 -1
- package/dist/app/assets/{django-u_MMtcCx.js → django-Bmr0AE9I.js} +1 -1
- package/dist/app/assets/{dns-zone-file-B3Qz4Cjh.js → dns-zone-file-CVNIWnt5.js} +1 -1
- package/dist/app/assets/{docker-DoSgwNxw.js → docker-C_nohD9R.js} +1 -1
- package/dist/app/assets/{dot-Di4txxnz.js → dot-VJy9IudS.js} +1 -1
- package/dist/app/assets/{ebnf-E6Wus_Cg.js → ebnf-DRJfZtWN.js} +1 -1
- package/dist/app/assets/{editorconfig-Lhlz74Ag.js → editorconfig-CI0yOvrp.js} +1 -1
- package/dist/app/assets/{eiffel-UWWTQlxS.js → eiffel-BjzQ0RYg.js} +1 -1
- package/dist/app/assets/{ejs-ClYOd_ZG.js → ejs-CNG21MEH.js} +1 -1
- package/dist/app/assets/{elixir-CM0riPTA.js → elixir-C5gCfRcW.js} +1 -1
- package/dist/app/assets/{elm-CAE87IuH.js → elm-DfTUm9_v.js} +1 -1
- package/dist/app/assets/{erDiagram-SMLLAGMA-BBsk0oXF.js → erDiagram-SMLLAGMA-BN6ZY4jl.js} +1 -1
- package/dist/app/assets/{erb-zLjY2fAl.js → erb-Cpvn4OXN.js} +1 -1
- package/dist/app/assets/{erlang-CrvXKUc7.js → erlang-D7Wv7F6m.js} +1 -1
- package/dist/app/assets/{etlua-DxWXCLko.js → etlua-N2-g8XE3.js} +1 -1
- package/dist/app/assets/{excel-formula-CiH5d6mo.js → excel-formula-Cw4Ab24c.js} +1 -1
- package/dist/app/assets/{factor-CnItKGC9.js → factor-BStQHdsr.js} +1 -1
- package/dist/app/assets/{false-DLECb57n.js → false-BlEwh5Vd.js} +1 -1
- package/dist/app/assets/{firestore-security-rules-D8JjUoJD.js → firestore-security-rules-BoAPZA3m.js} +1 -1
- package/dist/app/assets/{flow-DT0Fnhbu.js → flow-CUBvjiZo.js} +1 -1
- package/dist/app/assets/{flowDiagram-DWJPFMVM-DVfHA-q_.js → flowDiagram-DWJPFMVM-D2Bjlr_z.js} +1 -1
- package/dist/app/assets/{fortran-DFlxq4UW.js → fortran-B1Sxq__Q.js} +1 -1
- package/dist/app/assets/{fsharp-DDme86W7.js → fsharp-BSMB546x.js} +1 -1
- package/dist/app/assets/{ftl-BwMSYXiB.js → ftl-BuKOtUHg.js} +1 -1
- package/dist/app/assets/{ganttDiagram-T4ZO3ILL-BX62svu-.js → ganttDiagram-T4ZO3ILL-CKhlQBbj.js} +1 -1
- package/dist/app/assets/{gap-BNsR5yzD.js → gap-C7esBRUR.js} +1 -1
- package/dist/app/assets/{gcode-CQfdO1HP.js → gcode-CSOoiF0K.js} +1 -1
- package/dist/app/assets/{gdscript-gl_2iPqv.js → gdscript-D8g2Ew_b.js} +1 -1
- package/dist/app/assets/{gedcom-C6dWfgdF.js → gedcom-Y6NV1dOA.js} +1 -1
- package/dist/app/assets/{gherkin-BV8Q-Ik0.js → gherkin-Ael2lJbZ.js} +1 -1
- package/dist/app/assets/{git-DHK1vesx.js → git-BrnMxv7k.js} +1 -1
- package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-BGdDTywt.js → gitGraphDiagram-UUTBAWPF-LfGc0_4G.js} +1 -1
- package/dist/app/assets/{glsl-Cttd0JqG.js → glsl-eyBBuWEz.js} +1 -1
- package/dist/app/assets/{gml-B1A7NVBI.js → gml-CIyVuxTV.js} +1 -1
- package/dist/app/assets/{gn-JTqPhQly.js → gn-BoEixtoM.js} +1 -1
- package/dist/app/assets/{go-DPP_uL2Z.js → go-PMtEnveV.js} +1 -1
- package/dist/app/assets/{go-module-DbFHis62.js → go-module-BITIjqE7.js} +1 -1
- package/dist/app/assets/{graph-Bvte0M4G.js → graph-Db4YdjHy.js} +1 -1
- package/dist/app/assets/{graphql-DmdIpbmB.js → graphql-BNykKyYV.js} +1 -1
- package/dist/app/assets/{groovy-DsONrbhy.js → groovy-UP4lI3F2.js} +1 -1
- package/dist/app/assets/{haml-Dt5fqj4m.js → haml-D5-Oeil3.js} +1 -1
- package/dist/app/assets/{handlebars-IWm0Rjeo.js → handlebars-rC5O1fKQ.js} +1 -1
- package/dist/app/assets/{haskell-CYqvIKUh.js → haskell-1MPzDJll.js} +1 -1
- package/dist/app/assets/{haxe-DNZaWUA6.js → haxe-CDQ14Qm9.js} +1 -1
- package/dist/app/assets/{hcl-BrFfKrsI.js → hcl-BrHSHT7r.js} +1 -1
- package/dist/app/assets/{hlsl-k83DlHUe.js → hlsl-ByJ0YyD8.js} +1 -1
- package/dist/app/assets/{hoon-BwGmnLFf.js → hoon-B4OItWIT.js} +1 -1
- package/dist/app/assets/{hpkp-DeruzFiI.js → hpkp-B-M7o-IY.js} +1 -1
- package/dist/app/assets/{hsts-9-LLFYdA.js → hsts-DPJNnaCG.js} +1 -1
- package/dist/app/assets/{http-C4MBAsdX.js → http-DoBNMUNG.js} +1 -1
- package/dist/app/assets/{ichigojam-BjuaS71I.js → ichigojam-CtW5s9_-.js} +1 -1
- package/dist/app/assets/{icon-B0i-wwut.js → icon-D-JQphN5.js} +1 -1
- package/dist/app/assets/{icu-message-format-eJ5-Ohmi.js → icu-message-format-ruU-kH-n.js} +1 -1
- package/dist/app/assets/{idris-DUmAppb-.js → idris-DnWSKw0X.js} +1 -1
- package/dist/app/assets/{iecst-AnSdtdbJ.js → iecst-Ci5w8cVm.js} +1 -1
- package/dist/app/assets/{ignore-BpkyQBzh.js → ignore-CXu1LoH2.js} +1 -1
- package/dist/app/assets/index-BYs7roX8.css +1 -0
- package/dist/app/assets/{index-BXQx0D-G.js → index-CEJlS2dp.js} +231 -231
- package/dist/app/assets/{infoDiagram-42DDH7IO-VnCCz30W.js → infoDiagram-42DDH7IO-CfplsLD4.js} +1 -1
- package/dist/app/assets/{inform7-BeHOP5Zh.js → inform7-CDxUTy2E.js} +1 -1
- package/dist/app/assets/{ini-CbPPFcs4.js → ini-DtN8RKTs.js} +1 -1
- package/dist/app/assets/{io-B8BGFXpt.js → io-COm0s1hx.js} +1 -1
- package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-pUpo21Dr.js → ishikawaDiagram-UXIWVN3A-kVT7MqRm.js} +1 -1
- package/dist/app/assets/{j-CL5Cqy2S.js → j-D0zs7nnU.js} +1 -1
- package/dist/app/assets/{java-CRSZ4_i0.js → java-DX0EZWJL.js} +1 -1
- package/dist/app/assets/{javadoc-laXgJpIa.js → javadoc-Ct0le1Z6.js} +1 -1
- package/dist/app/assets/{javadoclike-BP-snd7e.js → javadoclike-DdyCh3Ml.js} +1 -1
- package/dist/app/assets/{javascript-j_7E8SeD.js → javascript-CqMb2XU5.js} +1 -1
- package/dist/app/assets/{javastacktrace-CD4IrClv.js → javastacktrace-gPffXgcv.js} +1 -1
- package/dist/app/assets/{jexl-Dp1-qlX6.js → jexl-xIqbcJ4L.js} +1 -1
- package/dist/app/assets/{jolie-DZ_hHQV4.js → jolie-UZATV5_w.js} +1 -1
- package/dist/app/assets/{journeyDiagram-VCZTEJTY-CzMRf4DY.js → journeyDiagram-VCZTEJTY-CcqrW3YN.js} +1 -1
- package/dist/app/assets/{jq-DkwgKP8o.js → jq-7K9kiw1a.js} +1 -1
- package/dist/app/assets/{js-extras-BjnvxeRw.js → js-extras-0lF_oqDI.js} +1 -1
- package/dist/app/assets/{js-templates-DZiqSSas.js → js-templates-Db6UNOsA.js} +1 -1
- package/dist/app/assets/{jsdoc-DIxcnHGw.js → jsdoc-DCS6XG5S.js} +1 -1
- package/dist/app/assets/{json-JqASQvqr.js → json-RXFeoV2Y.js} +1 -1
- package/dist/app/assets/{json5-DI2p3cKU.js → json5-RlAi90PW.js} +1 -1
- package/dist/app/assets/{jsonp-CP7LCInQ.js → jsonp-DOSjGjiK.js} +1 -1
- package/dist/app/assets/{jsstacktrace-BXNcxOuD.js → jsstacktrace-CXGC4Q7U.js} +1 -1
- package/dist/app/assets/{jsx-BOQSBv-m.js → jsx-ChPmvVoO.js} +1 -1
- package/dist/app/assets/{julia-CbvO5E_j.js → julia-CpFEfIO7.js} +1 -1
- package/dist/app/assets/{kanban-definition-6JOO6SKY-mcpkFjYC.js → kanban-definition-6JOO6SKY-CXaOHoj7.js} +1 -1
- package/dist/app/assets/{keepalived-Brl1UwyB.js → keepalived-BfciQnnM.js} +1 -1
- package/dist/app/assets/{keyman-Diwjm1-r.js → keyman-Ca5SVuI1.js} +1 -1
- package/dist/app/assets/{kotlin-BKZDWgsH.js → kotlin-S88hlBjn.js} +1 -1
- package/dist/app/assets/{kumir-BDMBH7lL.js → kumir-DG6o3rhN.js} +1 -1
- package/dist/app/assets/{kusto-DW7-bPDb.js → kusto-BQLO52bI.js} +1 -1
- package/dist/app/assets/{latex-BJdSHYdZ.js → latex-CfcJ3nQF.js} +1 -1
- package/dist/app/assets/{latte-BZ1XIgcZ.js → latte-BJxUJ_gi.js} +1 -1
- package/dist/app/assets/{layout-TszSIt1Y.js → layout-DUQlwvoW.js} +1 -1
- package/dist/app/assets/{less-hJWBNocb.js → less-IeSPRI_D.js} +1 -1
- package/dist/app/assets/{lilypond-CbQ9DblC.js → lilypond-CKi0LlX4.js} +1 -1
- package/dist/app/assets/{linear-BpYMP2cC.js → linear-BRaSI2Us.js} +1 -1
- package/dist/app/assets/{liquid-CdUQHvBV.js → liquid-CWLL6Srj.js} +1 -1
- package/dist/app/assets/{lisp-BxbBtxPt.js → lisp-cwdEE2gO.js} +1 -1
- package/dist/app/assets/{livescript-C5gTgPtX.js → livescript-BnHbVQm9.js} +1 -1
- package/dist/app/assets/{llvm-Bm7Rf7dU.js → llvm-IOZ65oFi.js} +1 -1
- package/dist/app/assets/{log-Dzfp6rwH.js → log-iR5kcnKw.js} +1 -1
- package/dist/app/assets/{lolcode-DBCWtmwh.js → lolcode-B2Je5E97.js} +1 -1
- package/dist/app/assets/{lua-DSwn1ZWT.js → lua-CxR4UFVY.js} +1 -1
- package/dist/app/assets/{magma-rFMMJRhy.js → magma-D8yVNW7j.js} +1 -1
- package/dist/app/assets/{makefile-BV53Gfpx.js → makefile-BwsVphsP.js} +1 -1
- package/dist/app/assets/{markdown-C1EQVW4O.js → markdown-DoIUfG6n.js} +1 -1
- package/dist/app/assets/{markup-iv8ZNCgp.js → markup-lSNw5NdD.js} +1 -1
- package/dist/app/assets/{markup-templating-DJDij_Hc.js → markup-templating-Dqecsm_5.js} +1 -1
- package/dist/app/assets/{matlab-B0c4hfFK.js → matlab-CYZZYmT0.js} +1 -1
- package/dist/app/assets/{maxscript-Dlhq7LWv.js → maxscript-CoVwzSKG.js} +1 -1
- package/dist/app/assets/{mel-BeVlAXHA.js → mel-CwGYOeaV.js} +1 -1
- package/dist/app/assets/{mermaid-eqTFwloS.js → mermaid-BbSlv0xT.js} +1 -1
- package/dist/app/assets/{min-CGAWvuO0.js → min-DcInW5uf.js} +1 -1
- package/dist/app/assets/{mindmap-definition-QFDTVHPH-CAH7tpSK.js → mindmap-definition-QFDTVHPH-B2tkKckz.js} +1 -1
- package/dist/app/assets/{mizar-DgcUJzeP.js → mizar-BAhpXtjk.js} +1 -1
- package/dist/app/assets/{mongodb-DEUSb5Ms.js → mongodb-Cx_vk1-h.js} +1 -1
- package/dist/app/assets/{monkey-CZ9HWoOK.js → monkey-Cp8-Sq3C.js} +1 -1
- package/dist/app/assets/{moonscript-Dvb9TLm6.js → moonscript-CT9x7rB1.js} +1 -1
- package/dist/app/assets/{n1ql-CyMHvsrH.js → n1ql-BxsKejG5.js} +1 -1
- package/dist/app/assets/{n4js-B_97r3VW.js → n4js-Cb2xMLYB.js} +1 -1
- package/dist/app/assets/{nand2tetris-hdl-pF2SYN8Z.js → nand2tetris-hdl-BCp78K37.js} +1 -1
- package/dist/app/assets/{naniscript-puXUSTvu.js → naniscript-DbYn6KX-.js} +1 -1
- package/dist/app/assets/{nasm-DH6-TBi3.js → nasm-8NRS9VNe.js} +1 -1
- package/dist/app/assets/{neon-Ce8N5E3x.js → neon-BmveA7rn.js} +1 -1
- package/dist/app/assets/{nevod-DjZ-qNQ5.js → nevod-C-o0U806.js} +1 -1
- package/dist/app/assets/{nginx-ClqxqDpv.js → nginx-CsPRsHth.js} +1 -1
- package/dist/app/assets/{nim-CLOp7ISH.js → nim-DjBoBJrI.js} +1 -1
- package/dist/app/assets/{nix-BUI1HHhR.js → nix-CfkFK_4X.js} +1 -1
- package/dist/app/assets/{nsis-CoZWs28s.js → nsis-oX0BO1CF.js} +1 -1
- package/dist/app/assets/{objectivec-D7oxiJtv.js → objectivec-DTrD7w8V.js} +1 -1
- package/dist/app/assets/{ocaml-BZADKYY4.js → ocaml-CvB-CUyk.js} +1 -1
- package/dist/app/assets/{opencl-D_x8M_l6.js → opencl-BBJBsX4d.js} +1 -1
- package/dist/app/assets/{openqasm-DUe_Xd8r.js → openqasm-DB7mfscI.js} +1 -1
- package/dist/app/assets/{oz-C0f0E8I7.js → oz-BvTx7AIJ.js} +1 -1
- package/dist/app/assets/{parigp-DXzTc1rx.js → parigp-C9t14Vny.js} +1 -1
- package/dist/app/assets/{parser-C_eB_SAO.js → parser-DGgh-9XZ.js} +1 -1
- package/dist/app/assets/{pascal-BuDaRABN.js → pascal-CBrywbV2.js} +1 -1
- package/dist/app/assets/{pascaligo-DsQ5vX0o.js → pascaligo-DlaweMAR.js} +1 -1
- package/dist/app/assets/{pcaxis-Dp8ons9r.js → pcaxis-BP161RoS.js} +1 -1
- package/dist/app/assets/{peoplecode-D9Dy5D6r.js → peoplecode-ClPNXeMD.js} +1 -1
- package/dist/app/assets/{perl-IW2mnDG4.js → perl-B82k98ZA.js} +1 -1
- package/dist/app/assets/{php-C9wJbpXc.js → php-O_5ku-VG.js} +1 -1
- package/dist/app/assets/{php-extras-Dd0NGkAH.js → php-extras-DWUC7Ivz.js} +1 -1
- package/dist/app/assets/{phpdoc-DcttAIG_.js → phpdoc-Bek4yNUS.js} +1 -1
- package/dist/app/assets/{pieDiagram-DEJITSTG-D4cgvpRm.js → pieDiagram-DEJITSTG-CYEVSkhe.js} +1 -1
- package/dist/app/assets/{plsql-CvlRFEAJ.js → plsql-BlaQ9IoK.js} +1 -1
- package/dist/app/assets/{powerquery-BMKyritt.js → powerquery-Cx3Q-AYE.js} +1 -1
- package/dist/app/assets/{powershell-CAfpBbTC.js → powershell-3RLc3t0u.js} +1 -1
- package/dist/app/assets/{processing-DjYuzcaq.js → processing-AnTfwD0V.js} +1 -1
- package/dist/app/assets/{prolog-Ce-zjLfE.js → prolog-OvZLjDSo.js} +1 -1
- package/dist/app/assets/{promql-B5pdwV0L.js → promql-CuPGcqxq.js} +1 -1
- package/dist/app/assets/{properties-BizCduLB.js → properties-CKY9tON-.js} +1 -1
- package/dist/app/assets/{protobuf-BeXj0NkT.js → protobuf-CSGANi1A.js} +1 -1
- package/dist/app/assets/{psl-CCOrF3fG.js → psl-sDRzvTjB.js} +1 -1
- package/dist/app/assets/{pug-DBfhqVrT.js → pug-DI3BTEgs.js} +1 -1
- package/dist/app/assets/{puppet-cskfrihC.js → puppet-Dt9puHvs.js} +1 -1
- package/dist/app/assets/{pure-uP7Go2xi.js → pure-BibINdVm.js} +1 -1
- package/dist/app/assets/{purebasic-BzxFuhCY.js → purebasic-lfEZm_bJ.js} +1 -1
- package/dist/app/assets/{purescript-DAclKDFj.js → purescript-CjgjVGu8.js} +1 -1
- package/dist/app/assets/{q-Dj4c9jzw.js → q-CKYhNuGi.js} +1 -1
- package/dist/app/assets/{qml-C_WQAySg.js → qml-D5Il6_Lm.js} +1 -1
- package/dist/app/assets/{qore-C-UzVsUa.js → qore-C1uyIaih.js} +1 -1
- package/dist/app/assets/{qsharp-DhHVFASC.js → qsharp-Cde7m626.js} +1 -1
- package/dist/app/assets/{quadrantDiagram-34T5L4WZ-D76oNip7.js → quadrantDiagram-34T5L4WZ-CunYrfOP.js} +1 -1
- package/dist/app/assets/{r-CBOEAXGr.js → r-DTIfuxk3.js} +1 -1
- package/dist/app/assets/{racket-DVu6Dqdf.js → racket-CdH21hBI.js} +1 -1
- package/dist/app/assets/{reason-ETO6PU0a.js → reason-CoSJZFLF.js} +1 -1
- package/dist/app/assets/{regex-B_1z9nrW.js → regex-DLD55Glh.js} +1 -1
- package/dist/app/assets/{rego-CMx1q3ma.js → rego-BT2cOd8A.js} +1 -1
- package/dist/app/assets/{renpy-BNXwhZ6y.js → renpy-CuruShcb.js} +1 -1
- package/dist/app/assets/{requirementDiagram-MS252O5E-Cub81lLN.js → requirementDiagram-MS252O5E-2bmxoCD4.js} +1 -1
- package/dist/app/assets/{rest-C7Ju3aO_.js → rest-WCDfoasX.js} +1 -1
- package/dist/app/assets/{rip-BezD6ReZ.js → rip-DGv3__zG.js} +1 -1
- package/dist/app/assets/{roboconf-BCYNMrkD.js → roboconf-Bas02wjc.js} +1 -1
- package/dist/app/assets/{robotframework-DBnHxJ-E.js → robotframework-tGFzRD3G.js} +1 -1
- package/dist/app/assets/{ruby-DEY5WIqS.js → ruby-D8vE-7go.js} +1 -1
- package/dist/app/assets/{rust-DUoyQ2zP.js → rust-D9nPw-HY.js} +1 -1
- package/dist/app/assets/{sankeyDiagram-XADWPNL6-PiusOvgK.js → sankeyDiagram-XADWPNL6-DDJJQgu9.js} +1 -1
- package/dist/app/assets/{sas-4TFbJJbx.js → sas-CNQe8fmQ.js} +1 -1
- package/dist/app/assets/{sass-dE1FNaVr.js → sass-WIrPITxq.js} +1 -1
- package/dist/app/assets/{scala-Zhswyjm9.js → scala-BRyS8fHn.js} +1 -1
- package/dist/app/assets/{scheme-BTDb7rYq.js → scheme-sMkeVGM2.js} +1 -1
- package/dist/app/assets/{scss-5ZfA9WbF.js → scss-DScK7EFk.js} +1 -1
- package/dist/app/assets/{sequenceDiagram-FGHM5R23-B_xi91rE.js → sequenceDiagram-FGHM5R23--RbLQXIN.js} +1 -1
- package/dist/app/assets/{shell-session-Hwk6YMvp.js → shell-session-B7NWU4lC.js} +1 -1
- package/dist/app/assets/{smali-BvKNDUVq.js → smali-BHax8EIi.js} +1 -1
- package/dist/app/assets/{smalltalk-Cuj_IZOI.js → smalltalk-BT1-CEp0.js} +1 -1
- package/dist/app/assets/{smarty-YDqi5bLB.js → smarty-C8hT76Fl.js} +1 -1
- package/dist/app/assets/{sml-Cj6DYVC8.js → sml-CxB1b1Av.js} +1 -1
- package/dist/app/assets/{solidity-a7YwsEGV.js → solidity-CMhwxrSt.js} +1 -1
- package/dist/app/assets/{solution-file-D9JBb3wE.js → solution-file-DF2RWpk2.js} +1 -1
- package/dist/app/assets/{soy-CaAOEVjI.js → soy-BquGnVo6.js} +1 -1
- package/dist/app/assets/{sparql-DyXPgrW0.js → sparql-DsXRgXrC.js} +1 -1
- package/dist/app/assets/{splunk-spl-BIkU0fAL.js → splunk-spl-DU6lZWvQ.js} +1 -1
- package/dist/app/assets/{sqf-D57PcZVb.js → sqf-DuBryCfn.js} +1 -1
- package/dist/app/assets/{sql-MukaihY4.js → sql-DKbJMmuW.js} +1 -1
- package/dist/app/assets/{squirrel-CzYXWy6S.js → squirrel-CU-sQYjH.js} +1 -1
- package/dist/app/assets/{stan-FpLekD3U.js → stan-DorDVDUl.js} +1 -1
- package/dist/app/assets/{stateDiagram-FHFEXIEX-CpS745KL.js → stateDiagram-FHFEXIEX-B2u0vNWm.js} +1 -1
- package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-BSCHSkf5.js +1 -0
- package/dist/app/assets/{stylus-CLeCT1Qf.js → stylus-DtDJOQrY.js} +1 -1
- package/dist/app/assets/{swift-CpMxUQeA.js → swift-1SZPUwjy.js} +1 -1
- package/dist/app/assets/{systemd-CGjsVDc1.js → systemd-B5Z6ff1T.js} +1 -1
- package/dist/app/assets/{t4-cs-ChnaFLT7.js → t4-cs-CTScVUI-.js} +1 -1
- package/dist/app/assets/{t4-templating-B5pWafb8.js → t4-templating-CnFzEH8T.js} +1 -1
- package/dist/app/assets/{t4-vb-DK65bsRV.js → t4-vb-BU2-1O3l.js} +1 -1
- package/dist/app/assets/{tap-BjFFJfCu.js → tap-9vuRf2zf.js} +1 -1
- package/dist/app/assets/{tcl-6ZH-Ye76.js → tcl-4WzMBc3u.js} +1 -1
- package/dist/app/assets/{textile-Biidr0CK.js → textile-BJ9xWM53.js} +1 -1
- package/dist/app/assets/{timeline-definition-GMOUNBTQ-B71aIAPy.js → timeline-definition-GMOUNBTQ-C7wox-Nh.js} +1 -1
- package/dist/app/assets/{toml-CbA-hSQN.js → toml-CIfJtDJm.js} +1 -1
- package/dist/app/assets/{tremor-XnVSNc97.js → tremor-BCPKs7zG.js} +1 -1
- package/dist/app/assets/{tt2-Db0GSjWI.js → tt2-8cKWRoIL.js} +1 -1
- package/dist/app/assets/{turtle-bkAg37hd.js → turtle-BOX54zyV.js} +1 -1
- package/dist/app/assets/{twig-WKrEkAVe.js → twig-C8LLL6cb.js} +1 -1
- package/dist/app/assets/{typescript-CbA_8yl0.js → typescript-X2aSEXrA.js} +1 -1
- package/dist/app/assets/{typoscript-CNl71QFr.js → typoscript-D5ZXmrkV.js} +1 -1
- package/dist/app/assets/{unrealscript-Rq94tMZ9.js → unrealscript-D9UBRGN5.js} +1 -1
- package/dist/app/assets/{uorazor-5bxvkQjZ.js → uorazor-CTTqi2r1.js} +1 -1
- package/dist/app/assets/{uri-XOJXvqEY.js → uri-BFLn9hb5.js} +1 -1
- package/dist/app/assets/{v-DB2Yd9Sg.js → v-nb9ocvxh.js} +1 -1
- package/dist/app/assets/{vala-DZyPUHGF.js → vala-nEOqY-nY.js} +1 -1
- package/dist/app/assets/{vbnet-PpzMKvFE.js → vbnet-xRfCkZLw.js} +1 -1
- package/dist/app/assets/{velocity-qwehq1WR.js → velocity-DMb5Eobp.js} +1 -1
- package/dist/app/assets/{vennDiagram-DHZGUBPP-w6jfcHyz.js → vennDiagram-DHZGUBPP-BE_sjtU1.js} +1 -1
- package/dist/app/assets/{verilog-BaX6ehBO.js → verilog-MF3DQwrp.js} +1 -1
- package/dist/app/assets/{vhdl-CJ4oaOIm.js → vhdl-CaG_lZvs.js} +1 -1
- package/dist/app/assets/{vim-DsX1ZLAr.js → vim-DWEsvdkG.js} +1 -1
- package/dist/app/assets/{visual-basic-DcOgtvaV.js → visual-basic-BtAZxtsd.js} +1 -1
- package/dist/app/assets/{wardley-RL74JXVD-C6_5QD5-.js → wardley-RL74JXVD-BFsqjqU9.js} +1 -1
- package/dist/app/assets/{wardleyDiagram-NUSXRM2D-OBOS76Xf.js → wardleyDiagram-NUSXRM2D-BRCBl_Bo.js} +1 -1
- package/dist/app/assets/{warpscript-CsjaYEbC.js → warpscript-DaB6pxgc.js} +1 -1
- package/dist/app/assets/{wasm-C4s0Rskl.js → wasm-CYNiAZ8m.js} +1 -1
- package/dist/app/assets/{web-idl-CSSCDVy0.js → web-idl-BShUjsSx.js} +1 -1
- package/dist/app/assets/{wiki-B3uxFlGO.js → wiki-C92dpb1x.js} +1 -1
- package/dist/app/assets/{wolfram-BwGO75HU.js → wolfram-DpSRxPHz.js} +1 -1
- package/dist/app/assets/{wren-C57hzETc.js → wren-D33pCTT5.js} +1 -1
- package/dist/app/assets/{xeora-DrSuSyRC.js → xeora-Db0qw0Q1.js} +1 -1
- package/dist/app/assets/{xml-doc-CaRS8bMN.js → xml-doc-BlQp7vTd.js} +1 -1
- package/dist/app/assets/{xojo-C5eIw0DD.js → xojo-4-mS_JMd.js} +1 -1
- package/dist/app/assets/{xquery-BxZFMYbk.js → xquery-CHe6I6si.js} +1 -1
- package/dist/app/assets/{xychartDiagram-5P7HB3ND-zh-yE8PC.js → xychartDiagram-5P7HB3ND-k81eXzby.js} +1 -1
- package/dist/app/assets/{yaml-CwtSqOBb.js → yaml-CKVNhYrk.js} +1 -1
- package/dist/app/assets/{yang-DeNE_vI5.js → yang-CBuNW7y-.js} +1 -1
- package/dist/app/assets/{zig-AMjIOt6c.js → zig-rCC2YzXf.js} +1 -1
- package/dist/app/index.html +2 -2
- package/dist/index.cjs +788 -400
- package/dist/index.js +812 -424
- package/package.json +4 -4
- package/dist/app/assets/channel-Cuf4hwrt.js +0 -1
- package/dist/app/assets/classDiagram-6PBFFD2Q-y-yLSjJ4.js +0 -1
- package/dist/app/assets/classDiagram-v2-HSJHXN6E-y-yLSjJ4.js +0 -1
- package/dist/app/assets/clone-DHJkspmJ.js +0 -1
- package/dist/app/assets/index-BUlNsn5y.css +0 -1
- package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-49AEvAwI.js +0 -1
package/dist/index.js
CHANGED
|
@@ -3,14 +3,14 @@ import * as React66 from "react";
|
|
|
3
3
|
import {
|
|
4
4
|
ArrowDown as ArrowDown2,
|
|
5
5
|
ChevronDown as ChevronDown9,
|
|
6
|
-
FileText as
|
|
6
|
+
FileText as FileText6,
|
|
7
7
|
ImageIcon as ImageIcon2,
|
|
8
|
-
Loader2 as
|
|
8
|
+
Loader2 as Loader213,
|
|
9
9
|
MessageSquarePlus,
|
|
10
10
|
Minus,
|
|
11
11
|
Pause,
|
|
12
|
-
Pencil as
|
|
13
|
-
Play,
|
|
12
|
+
Pencil as Pencil6,
|
|
13
|
+
Play as Play2,
|
|
14
14
|
Quote,
|
|
15
15
|
Settings as Settings2,
|
|
16
16
|
Target as Target3,
|
|
@@ -3178,6 +3178,7 @@ var en_US_default = {
|
|
|
3178
3178
|
shell: {
|
|
3179
3179
|
success: "Success",
|
|
3180
3180
|
running: "Running",
|
|
3181
|
+
paused: "Paused",
|
|
3181
3182
|
failed: "Failed",
|
|
3182
3183
|
exitCode: "Exit code {{code}}",
|
|
3183
3184
|
ranCommand: "Ran {{command}}",
|
|
@@ -3214,6 +3215,28 @@ var en_US_default = {
|
|
|
3214
3215
|
}
|
|
3215
3216
|
}
|
|
3216
3217
|
}
|
|
3218
|
+
},
|
|
3219
|
+
threadControl: {
|
|
3220
|
+
branch: "Conversation branch",
|
|
3221
|
+
branchNumber: "Branch {{number}}",
|
|
3222
|
+
pause: "Pause workflow",
|
|
3223
|
+
resume: "Resume workflow",
|
|
3224
|
+
cancelRun: "Stop task",
|
|
3225
|
+
pausing: "Saving and pausing\u2026",
|
|
3226
|
+
paused: "Workflow paused",
|
|
3227
|
+
editMessage: "Edit message",
|
|
3228
|
+
sourcePauseUnavailable: "The original task cannot be paused yet. Try again after it finishes.",
|
|
3229
|
+
discardEdit: "Cancel",
|
|
3230
|
+
saveBranch: "Send",
|
|
3231
|
+
status: {
|
|
3232
|
+
busy: "Running",
|
|
3233
|
+
pausing: "Pausing",
|
|
3234
|
+
paused: "Paused",
|
|
3235
|
+
idle: "Idle",
|
|
3236
|
+
interrupted: "Waiting",
|
|
3237
|
+
error: "Error",
|
|
3238
|
+
running: "Running"
|
|
3239
|
+
}
|
|
3217
3240
|
}
|
|
3218
3241
|
};
|
|
3219
3242
|
|
|
@@ -3795,6 +3818,7 @@ var zh_CN_default = {
|
|
|
3795
3818
|
shell: {
|
|
3796
3819
|
success: "\u6210\u529F",
|
|
3797
3820
|
running: "\u8FD0\u884C\u4E2D",
|
|
3821
|
+
paused: "\u5DF2\u6682\u505C",
|
|
3798
3822
|
failed: "\u5931\u8D25",
|
|
3799
3823
|
exitCode: "\u9000\u51FA\u7801 {{code}}",
|
|
3800
3824
|
ranCommand: "\u5DF2\u8FD0\u884C {{command}}",
|
|
@@ -3831,6 +3855,28 @@ var zh_CN_default = {
|
|
|
3831
3855
|
}
|
|
3832
3856
|
}
|
|
3833
3857
|
}
|
|
3858
|
+
},
|
|
3859
|
+
threadControl: {
|
|
3860
|
+
branch: "\u5386\u53F2\u5206\u652F",
|
|
3861
|
+
branchNumber: "\u5206\u652F {{number}}",
|
|
3862
|
+
pause: "\u6682\u505C\u6D41\u7A0B",
|
|
3863
|
+
resume: "\u6062\u590D\u6D41\u7A0B",
|
|
3864
|
+
cancelRun: "\u505C\u6B62\u4EFB\u52A1",
|
|
3865
|
+
pausing: "\u6B63\u5728\u4FDD\u5B58\u5E76\u6682\u505C\u2026",
|
|
3866
|
+
paused: "\u6D41\u7A0B\u5DF2\u6682\u505C",
|
|
3867
|
+
editMessage: "\u7F16\u8F91\u6D88\u606F",
|
|
3868
|
+
sourcePauseUnavailable: "\u539F\u4EFB\u52A1\u6682\u4E0D\u652F\u6301\u6682\u505C\uFF0C\u8BF7\u5728\u4EFB\u52A1\u5B8C\u6210\u540E\u91CD\u8BD5\u3002",
|
|
3869
|
+
discardEdit: "\u53D6\u6D88",
|
|
3870
|
+
saveBranch: "\u53D1\u9001",
|
|
3871
|
+
status: {
|
|
3872
|
+
busy: "\u8FD0\u884C\u4E2D",
|
|
3873
|
+
pausing: "\u6B63\u5728\u6682\u505C",
|
|
3874
|
+
paused: "\u5DF2\u6682\u505C",
|
|
3875
|
+
idle: "\u7A7A\u95F2",
|
|
3876
|
+
interrupted: "\u7B49\u5F85\u5904\u7406",
|
|
3877
|
+
error: "\u51FA\u9519",
|
|
3878
|
+
running: "\u8FD0\u884C\u4E2D"
|
|
3879
|
+
}
|
|
3834
3880
|
}
|
|
3835
3881
|
};
|
|
3836
3882
|
|
|
@@ -8115,32 +8161,42 @@ function ProjectMessage({ children }) {
|
|
|
8115
8161
|
}
|
|
8116
8162
|
|
|
8117
8163
|
// src/components/composer/SendButton.tsx
|
|
8118
|
-
import { ArrowUp, Square } from "lucide-react";
|
|
8164
|
+
import { ArrowUp, Play, Square } from "lucide-react";
|
|
8119
8165
|
import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
8120
8166
|
function SendButton({
|
|
8121
8167
|
disabled = false,
|
|
8122
8168
|
isLoading = false,
|
|
8123
8169
|
showStop = isLoading,
|
|
8170
|
+
stopDisabled = false,
|
|
8124
8171
|
onStop,
|
|
8125
8172
|
stopLabel = "Stop",
|
|
8173
|
+
showResume = false,
|
|
8174
|
+
resumeDisabled = false,
|
|
8175
|
+
onResume,
|
|
8176
|
+
resumeLabel = "Resume",
|
|
8126
8177
|
sendLabel = "Send",
|
|
8127
8178
|
shortcuts
|
|
8128
8179
|
}) {
|
|
8129
|
-
if (showStop) {
|
|
8180
|
+
if (showStop || showResume) {
|
|
8181
|
+
const label = showStop ? stopLabel : resumeLabel;
|
|
8182
|
+
const Icon = showStop ? Square : Play;
|
|
8130
8183
|
return /* @__PURE__ */ jsx24(
|
|
8131
8184
|
"button",
|
|
8132
8185
|
{
|
|
8133
8186
|
type: "button",
|
|
8134
|
-
onClick: onStop,
|
|
8187
|
+
onClick: showStop ? onStop : onResume,
|
|
8188
|
+
disabled: showStop ? stopDisabled : resumeDisabled,
|
|
8135
8189
|
className: cn(
|
|
8136
8190
|
"flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-full",
|
|
8137
8191
|
"bg-foreground text-background",
|
|
8138
8192
|
"transition-transform duration-150 ease-out",
|
|
8139
|
-
"hover:scale-105 active:scale-95"
|
|
8193
|
+
"hover:scale-105 active:scale-95",
|
|
8194
|
+
"disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:scale-100"
|
|
8140
8195
|
),
|
|
8141
|
-
"aria-label":
|
|
8196
|
+
"aria-label": label,
|
|
8197
|
+
title: label,
|
|
8142
8198
|
children: /* @__PURE__ */ jsx24(
|
|
8143
|
-
|
|
8199
|
+
Icon,
|
|
8144
8200
|
{
|
|
8145
8201
|
size: 14,
|
|
8146
8202
|
fill: "currentColor",
|
|
@@ -12035,7 +12091,7 @@ import {
|
|
|
12035
12091
|
ChevronDown as ChevronDown8,
|
|
12036
12092
|
ChevronRight as ChevronRight9,
|
|
12037
12093
|
Clock3 as Clock32,
|
|
12038
|
-
Loader2 as
|
|
12094
|
+
Loader2 as Loader210
|
|
12039
12095
|
} from "lucide-react";
|
|
12040
12096
|
|
|
12041
12097
|
// src/lib/agent-run-render-tree.ts
|
|
@@ -12273,6 +12329,10 @@ function markIncompleteAgentRunStatusSuccess(node) {
|
|
|
12273
12329
|
}
|
|
12274
12330
|
function buildAssistantRenderTree(message) {
|
|
12275
12331
|
const rootExecutionId = message.executionId;
|
|
12332
|
+
const rootExecutionIds = /* @__PURE__ */ new Set([
|
|
12333
|
+
rootExecutionId,
|
|
12334
|
+
...message.rootExecutionIds ?? []
|
|
12335
|
+
]);
|
|
12276
12336
|
const runs = (message.agentRuns ?? []).filter(
|
|
12277
12337
|
(run) => !isMiddlewareAgentRunInfo(run)
|
|
12278
12338
|
);
|
|
@@ -12286,7 +12346,7 @@ function buildAssistantRenderTree(message) {
|
|
|
12286
12346
|
});
|
|
12287
12347
|
for (const entry of entries) {
|
|
12288
12348
|
const target = getEntryRunTarget(entry, runs, rootExecutionId);
|
|
12289
|
-
const shouldGroup = Boolean(target?.executionId) && (target?.executionId
|
|
12349
|
+
const shouldGroup = Boolean(target?.executionId) && (!rootExecutionIds.has(target?.executionId) || Boolean(target?.parentExecutionId));
|
|
12290
12350
|
if (!target || !shouldGroup) {
|
|
12291
12351
|
if (entry.source === "reasoning" && typeof entry.item !== "string") {
|
|
12292
12352
|
rootReasoning.push(entry.item);
|
|
@@ -12305,11 +12365,11 @@ function buildAssistantRenderTree(message) {
|
|
|
12305
12365
|
}
|
|
12306
12366
|
const roots = [];
|
|
12307
12367
|
for (const node of nodes.values()) {
|
|
12308
|
-
if (node.id
|
|
12368
|
+
if (rootExecutionIds.has(node.id) && !node.info.parentId && !node.info.parentExecutionId) {
|
|
12309
12369
|
continue;
|
|
12310
12370
|
}
|
|
12311
12371
|
const parentId = node.info.parentId ?? node.info.parentExecutionId;
|
|
12312
|
-
if (parentId && parentId
|
|
12372
|
+
if (parentId && !rootExecutionIds.has(parentId) && parentId !== node.id) {
|
|
12313
12373
|
const parent = nodes.get(parentId);
|
|
12314
12374
|
if (parent) {
|
|
12315
12375
|
parent.children.push(node);
|
|
@@ -14077,7 +14137,7 @@ import "react";
|
|
|
14077
14137
|
import {
|
|
14078
14138
|
resolveLocalizedText as resolveLocalizedText2
|
|
14079
14139
|
} from "@xpert-ai/chatkit-types";
|
|
14080
|
-
import {
|
|
14140
|
+
import { ScrollText, XCircle as XCircle2 } from "lucide-react";
|
|
14081
14141
|
import { jsx as jsx47, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
14082
14142
|
var CONTEXT_COMPRESSION_COMPONENT_TYPE = "context-compression";
|
|
14083
14143
|
function isContextCompressionComponent(content) {
|
|
@@ -14109,14 +14169,11 @@ function ContextCompressionIcon({
|
|
|
14109
14169
|
}) {
|
|
14110
14170
|
const status = data.status ?? "running";
|
|
14111
14171
|
const skipped = isSkipped(status, data.reason);
|
|
14112
|
-
if (status === "running") {
|
|
14113
|
-
return /* @__PURE__ */ jsx47(Loader27, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 animate-spin" });
|
|
14114
|
-
}
|
|
14115
14172
|
if (status === "fail") {
|
|
14116
14173
|
return /* @__PURE__ */ jsx47(XCircle2, { "aria-hidden": "true", className: "h-4 w-4 shrink-0" });
|
|
14117
14174
|
}
|
|
14118
14175
|
return /* @__PURE__ */ jsx47(
|
|
14119
|
-
|
|
14176
|
+
ScrollText,
|
|
14120
14177
|
{
|
|
14121
14178
|
"aria-hidden": "true",
|
|
14122
14179
|
className: cn("h-4 w-4 shrink-0", skipped && "opacity-80")
|
|
@@ -14137,13 +14194,13 @@ function ContextCompressionMessage({
|
|
|
14137
14194
|
const status = data.status ?? "running";
|
|
14138
14195
|
const tooltipText = getTooltipText(data, i18n2.language);
|
|
14139
14196
|
const label = /* @__PURE__ */ jsx47(ContextCompressionLabel, { data });
|
|
14140
|
-
const
|
|
14197
|
+
const row = /* @__PURE__ */ jsxs32(
|
|
14141
14198
|
"div",
|
|
14142
14199
|
{
|
|
14143
14200
|
className: cn(
|
|
14144
|
-
"inline-flex max-w-
|
|
14145
|
-
tooltipText && "cursor-help",
|
|
14146
|
-
status === "fail"
|
|
14201
|
+
"inline-flex max-w-full min-w-0 items-center gap-2 text-left text-sm font-medium text-muted-foreground transition-opacity",
|
|
14202
|
+
tooltipText && "cursor-help hover:opacity-100",
|
|
14203
|
+
status === "fail" ? "text-destructive" : "opacity-60"
|
|
14147
14204
|
),
|
|
14148
14205
|
children: [
|
|
14149
14206
|
/* @__PURE__ */ jsx47(ContextCompressionIcon, { data }),
|
|
@@ -14151,7 +14208,7 @@ function ContextCompressionMessage({
|
|
|
14151
14208
|
"span",
|
|
14152
14209
|
{
|
|
14153
14210
|
className: cn(
|
|
14154
|
-
"truncate",
|
|
14211
|
+
"min-w-0 truncate",
|
|
14155
14212
|
status === "running" && "ck-tool-call-running-text"
|
|
14156
14213
|
),
|
|
14157
14214
|
children: label
|
|
@@ -14160,21 +14217,17 @@ function ContextCompressionMessage({
|
|
|
14160
14217
|
]
|
|
14161
14218
|
}
|
|
14162
14219
|
);
|
|
14163
|
-
return /* @__PURE__ */
|
|
14164
|
-
/* @__PURE__ */ jsx47(
|
|
14165
|
-
|
|
14166
|
-
|
|
14167
|
-
|
|
14168
|
-
|
|
14169
|
-
|
|
14170
|
-
|
|
14171
|
-
|
|
14172
|
-
|
|
14173
|
-
|
|
14174
|
-
)
|
|
14175
|
-
] }) : center,
|
|
14176
|
-
/* @__PURE__ */ jsx47("div", { className: "h-px min-w-8 flex-1 bg-border" })
|
|
14177
|
-
] });
|
|
14220
|
+
return /* @__PURE__ */ jsx47("div", { className: "px-1 py-1", children: tooltipText ? /* @__PURE__ */ jsxs32(Tooltip, { children: [
|
|
14221
|
+
/* @__PURE__ */ jsx47(TooltipTrigger, { asChild: true, children: row }),
|
|
14222
|
+
/* @__PURE__ */ jsx47(
|
|
14223
|
+
TooltipContent,
|
|
14224
|
+
{
|
|
14225
|
+
side: "top",
|
|
14226
|
+
className: "max-h-80 max-w-xl overflow-auto whitespace-pre-wrap text-left text-xs leading-5",
|
|
14227
|
+
children: tooltipText
|
|
14228
|
+
}
|
|
14229
|
+
)
|
|
14230
|
+
] }) : row });
|
|
14178
14231
|
}
|
|
14179
14232
|
|
|
14180
14233
|
// src/components/thread/messages/knowledge-retriever-component-renderer.tsx
|
|
@@ -14566,9 +14619,9 @@ import {
|
|
|
14566
14619
|
ChevronRight as ChevronRight8,
|
|
14567
14620
|
CircleHelp,
|
|
14568
14621
|
Copy as Copy2,
|
|
14569
|
-
FileText as
|
|
14622
|
+
FileText as FileText5,
|
|
14570
14623
|
Files,
|
|
14571
|
-
Loader2 as
|
|
14624
|
+
Loader2 as Loader28,
|
|
14572
14625
|
ListTodo as ListTodo2,
|
|
14573
14626
|
Network,
|
|
14574
14627
|
Repeat2,
|
|
@@ -14781,12 +14834,16 @@ function ShellCopyButton({
|
|
|
14781
14834
|
}
|
|
14782
14835
|
function SandboxShellStatus({
|
|
14783
14836
|
data,
|
|
14784
|
-
exitCode
|
|
14837
|
+
exitCode,
|
|
14838
|
+
isPaused
|
|
14785
14839
|
}) {
|
|
14786
14840
|
const { t } = useChatkitTranslation();
|
|
14787
14841
|
if (exitCode !== null) {
|
|
14788
14842
|
return /* @__PURE__ */ jsx50("span", { className: "text-muted-foreground/90", children: t("message.toolGroup.shell.exitCode", { code: exitCode }) });
|
|
14789
14843
|
}
|
|
14844
|
+
if (isPaused && data.status === "running") {
|
|
14845
|
+
return /* @__PURE__ */ jsx50("span", { className: "text-muted-foreground/90", children: t("message.toolGroup.shell.paused") });
|
|
14846
|
+
}
|
|
14790
14847
|
if (data.status === "running") {
|
|
14791
14848
|
return /* @__PURE__ */ jsx50("span", { className: "text-muted-foreground/90", children: t("message.toolGroup.shell.running") });
|
|
14792
14849
|
}
|
|
@@ -14798,7 +14855,10 @@ function SandboxShellStatus({
|
|
|
14798
14855
|
t("message.toolGroup.shell.success")
|
|
14799
14856
|
] });
|
|
14800
14857
|
}
|
|
14801
|
-
function SandboxShellToolCallCard({
|
|
14858
|
+
function SandboxShellToolCallCard({
|
|
14859
|
+
data,
|
|
14860
|
+
isPaused
|
|
14861
|
+
}) {
|
|
14802
14862
|
const { i18n: i18n2 } = useChatkitTranslation();
|
|
14803
14863
|
const command = getSandboxShellCommand(data, i18n2.language);
|
|
14804
14864
|
const formattedCommand = formatShellCommand(command);
|
|
@@ -14875,7 +14935,7 @@ function SandboxShellToolCallCard({ data }) {
|
|
|
14875
14935
|
"mt-3 flex shrink-0 justify-end in-data-[density=compact]:mt-2 in-data-[density=spacious]:mt-4",
|
|
14876
14936
|
SANDBOX_SHELL_TEXT_CLASS
|
|
14877
14937
|
),
|
|
14878
|
-
children: /* @__PURE__ */ jsx50(SandboxShellStatus, { data, exitCode })
|
|
14938
|
+
children: /* @__PURE__ */ jsx50(SandboxShellStatus, { data, exitCode, isPaused })
|
|
14879
14939
|
}
|
|
14880
14940
|
)
|
|
14881
14941
|
]
|
|
@@ -14886,7 +14946,7 @@ function SandboxShellToolCallCard({ data }) {
|
|
|
14886
14946
|
// src/components/thread/messages/tool-output-attachments.tsx
|
|
14887
14947
|
import * as React44 from "react";
|
|
14888
14948
|
import * as Dialog2 from "@radix-ui/react-dialog";
|
|
14889
|
-
import { ImageIcon, Loader2 as
|
|
14949
|
+
import { ImageIcon, Loader2 as Loader27, RefreshCw as RefreshCw3, X as X7 } from "lucide-react";
|
|
14890
14950
|
import { jsx as jsx51, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
14891
14951
|
function useToolOutputAttachmentPreview(request) {
|
|
14892
14952
|
const parentMessenger = React44.useContext(ParentMessengerContext);
|
|
@@ -14973,7 +15033,7 @@ function ToolOutputImageAttachmentCard({
|
|
|
14973
15033
|
className: "flex aspect-video min-w-0 items-center justify-center rounded-lg border border-border bg-background",
|
|
14974
15034
|
"aria-label": t("message.toolGroup.attachments.loading", { title }),
|
|
14975
15035
|
children: /* @__PURE__ */ jsx51(
|
|
14976
|
-
|
|
15036
|
+
Loader27,
|
|
14977
15037
|
{
|
|
14978
15038
|
className: "h-5 w-5 animate-spin text-muted-foreground",
|
|
14979
15039
|
"aria-hidden": "true"
|
|
@@ -15109,7 +15169,7 @@ var toolStatusConfig = {
|
|
|
15109
15169
|
},
|
|
15110
15170
|
running: {
|
|
15111
15171
|
iconClass: "border-blue-500 text-blue-700",
|
|
15112
|
-
icon:
|
|
15172
|
+
icon: Loader28
|
|
15113
15173
|
}
|
|
15114
15174
|
};
|
|
15115
15175
|
var TOOL_GROUP_CATEGORY_ORDER = [
|
|
@@ -15178,8 +15238,11 @@ function parseStepDate(value) {
|
|
|
15178
15238
|
function isThreadKnownIdle(isThreadRunning) {
|
|
15179
15239
|
return isThreadRunning === false;
|
|
15180
15240
|
}
|
|
15181
|
-
function
|
|
15182
|
-
|
|
15241
|
+
function isPausedToolStep(data, isThreadPaused) {
|
|
15242
|
+
return data.status === "running" && isThreadPaused === true;
|
|
15243
|
+
}
|
|
15244
|
+
function getEffectiveToolStepStatus(data, isThreadRunning, isThreadPaused) {
|
|
15245
|
+
if (data.status === "running" && isThreadKnownIdle(isThreadRunning) && !isPausedToolStep(data, isThreadPaused)) {
|
|
15183
15246
|
return "fail";
|
|
15184
15247
|
}
|
|
15185
15248
|
return data.status;
|
|
@@ -15220,9 +15283,10 @@ function useToolStepDurationLabel(data, options) {
|
|
|
15220
15283
|
const createdAt = parseStepDate(data.created_date);
|
|
15221
15284
|
const explicitEndedAt = parseStepDate(data.end_date);
|
|
15222
15285
|
const status = options?.status ?? data.status;
|
|
15223
|
-
const
|
|
15286
|
+
const isElapsing = status === "running" && !options?.isPaused;
|
|
15287
|
+
const endedAt = explicitEndedAt ?? (!isElapsing ? options?.fallbackEndedAt ?? null : null);
|
|
15224
15288
|
React45.useEffect(() => {
|
|
15225
|
-
if (
|
|
15289
|
+
if (!isElapsing || createdAt === null || endedAt !== null) {
|
|
15226
15290
|
return;
|
|
15227
15291
|
}
|
|
15228
15292
|
setDurationNow(Date.now());
|
|
@@ -15232,7 +15296,7 @@ function useToolStepDurationLabel(data, options) {
|
|
|
15232
15296
|
return () => {
|
|
15233
15297
|
window.clearInterval(timer);
|
|
15234
15298
|
};
|
|
15235
|
-
}, [createdAt, endedAt,
|
|
15299
|
+
}, [createdAt, endedAt, isElapsing]);
|
|
15236
15300
|
if (createdAt === null) return null;
|
|
15237
15301
|
const durationMs = Math.max(0, (endedAt ?? durationNow) - createdAt);
|
|
15238
15302
|
return formatStepDuration2(durationMs);
|
|
@@ -15511,7 +15575,7 @@ function getStepTypeIcon(type) {
|
|
|
15511
15575
|
if (!normalized) return null;
|
|
15512
15576
|
switch (normalized) {
|
|
15513
15577
|
case "file":
|
|
15514
|
-
return
|
|
15578
|
+
return FileText5;
|
|
15515
15579
|
case "files":
|
|
15516
15580
|
return Files;
|
|
15517
15581
|
case "program":
|
|
@@ -15719,11 +15783,20 @@ function DefaultToolCallOutput({
|
|
|
15719
15783
|
output !== null ? /* @__PURE__ */ jsx52(ToolCallValueBlock, { value: output }) : null
|
|
15720
15784
|
] });
|
|
15721
15785
|
}
|
|
15722
|
-
function ToolCallDetails({
|
|
15786
|
+
function ToolCallDetails({
|
|
15787
|
+
content,
|
|
15788
|
+
isThreadPaused
|
|
15789
|
+
}) {
|
|
15723
15790
|
const { i18n: i18n2, t } = useChatkitTranslation();
|
|
15724
15791
|
const data = getToolStepData(content);
|
|
15725
15792
|
if (isSandboxShellStep(data)) {
|
|
15726
|
-
return /* @__PURE__ */ jsx52("div", { className: "ml-2 mt-1", children: /* @__PURE__ */ jsx52(
|
|
15793
|
+
return /* @__PURE__ */ jsx52("div", { className: "ml-2 mt-1", children: /* @__PURE__ */ jsx52(
|
|
15794
|
+
SandboxShellToolCallCard,
|
|
15795
|
+
{
|
|
15796
|
+
data,
|
|
15797
|
+
isPaused: isPausedToolStep(data, isThreadPaused)
|
|
15798
|
+
}
|
|
15799
|
+
) });
|
|
15727
15800
|
}
|
|
15728
15801
|
const renderer = getComponentMessageRenderer(content, data);
|
|
15729
15802
|
const hasCustomDetails = data.error === void 0 && hasComponentMessageRendererDetails(renderer, content, data);
|
|
@@ -15752,17 +15825,23 @@ function ToolCallDetails({ content }) {
|
|
|
15752
15825
|
] });
|
|
15753
15826
|
}
|
|
15754
15827
|
function areToolCallRowPropsEqual(previous, next) {
|
|
15755
|
-
return previous.content.id === next.content.id && previous.content.data === next.content.data && previous.isThreadRunning === next.isThreadRunning && previous.organizationId === next.organizationId && previous.apiUrl === next.apiUrl;
|
|
15828
|
+
return previous.content.id === next.content.id && previous.content.data === next.content.data && previous.isThreadRunning === next.isThreadRunning && previous.isThreadPaused === next.isThreadPaused && previous.organizationId === next.organizationId && previous.apiUrl === next.apiUrl;
|
|
15756
15829
|
}
|
|
15757
15830
|
function ToolCallRowContent({
|
|
15758
15831
|
content,
|
|
15759
15832
|
isThreadRunning,
|
|
15833
|
+
isThreadPaused,
|
|
15760
15834
|
organizationId,
|
|
15761
15835
|
apiUrl
|
|
15762
15836
|
}) {
|
|
15763
15837
|
const { i18n: i18n2, t } = useChatkitTranslation();
|
|
15764
15838
|
const data = getToolStepData(content);
|
|
15765
|
-
const
|
|
15839
|
+
const isPaused = isPausedToolStep(data, isThreadPaused);
|
|
15840
|
+
const status = getEffectiveToolStepStatus(
|
|
15841
|
+
data,
|
|
15842
|
+
isThreadRunning,
|
|
15843
|
+
isThreadPaused
|
|
15844
|
+
);
|
|
15766
15845
|
const hasError = status === "fail" || Boolean(data.error);
|
|
15767
15846
|
const isSandboxShell = isSandboxShellStep(data);
|
|
15768
15847
|
const detailsId = React45.useId();
|
|
@@ -15771,11 +15850,12 @@ function ToolCallRowContent({
|
|
|
15771
15850
|
const hasCustomDetails = data.error === void 0 && hasComponentMessageRendererDetails(renderer, content, data);
|
|
15772
15851
|
const hasDetails = isSandboxShell || data.input !== void 0 || data.error !== void 0 || data.output !== void 0 || data.artifact !== void 0 || hasCustomDetails;
|
|
15773
15852
|
const fallbackEndedAt = useFrozenTimestamp(
|
|
15774
|
-
data.status === "running" && status === "fail"
|
|
15853
|
+
data.status === "running" && (status === "fail" || isPaused)
|
|
15775
15854
|
);
|
|
15776
15855
|
const durationLabel = useToolStepDurationLabel(data, {
|
|
15777
15856
|
status,
|
|
15778
|
-
fallbackEndedAt
|
|
15857
|
+
fallbackEndedAt,
|
|
15858
|
+
isPaused
|
|
15779
15859
|
});
|
|
15780
15860
|
const [isExpanded, setIsExpanded] = React45.useState(false);
|
|
15781
15861
|
React45.useEffect(() => {
|
|
@@ -15818,7 +15898,7 @@ function ToolCallRowContent({
|
|
|
15818
15898
|
{
|
|
15819
15899
|
className: cn(
|
|
15820
15900
|
"min-w-0 truncate",
|
|
15821
|
-
status === "running" && "ck-tool-call-running-text"
|
|
15901
|
+
status === "running" && !isPaused && "ck-tool-call-running-text"
|
|
15822
15902
|
),
|
|
15823
15903
|
title: label,
|
|
15824
15904
|
children: label
|
|
@@ -15838,7 +15918,7 @@ function ToolCallRowContent({
|
|
|
15838
15918
|
]
|
|
15839
15919
|
}
|
|
15840
15920
|
),
|
|
15841
|
-
hasDetails && isExpanded ? /* @__PURE__ */ jsx52("div", { id: detailsId, children: /* @__PURE__ */ jsx52(ToolCallDetails, { content }) }) : null
|
|
15921
|
+
hasDetails && isExpanded ? /* @__PURE__ */ jsx52("div", { id: detailsId, children: /* @__PURE__ */ jsx52(ToolCallDetails, { content, isThreadPaused }) }) : null
|
|
15842
15922
|
] });
|
|
15843
15923
|
}
|
|
15844
15924
|
var ToolCallRow = React45.memo(ToolCallRowContent, areToolCallRowPropsEqual);
|
|
@@ -15847,6 +15927,7 @@ function ToolComponentGroup({
|
|
|
15847
15927
|
items,
|
|
15848
15928
|
hasFollowingItem,
|
|
15849
15929
|
isThreadRunning,
|
|
15930
|
+
isThreadPaused,
|
|
15850
15931
|
organizationId,
|
|
15851
15932
|
apiUrl
|
|
15852
15933
|
}) {
|
|
@@ -15902,6 +15983,7 @@ function ToolComponentGroup({
|
|
|
15902
15983
|
{
|
|
15903
15984
|
content: item,
|
|
15904
15985
|
isThreadRunning,
|
|
15986
|
+
isThreadPaused,
|
|
15905
15987
|
organizationId,
|
|
15906
15988
|
apiUrl
|
|
15907
15989
|
},
|
|
@@ -16412,7 +16494,7 @@ import {
|
|
|
16412
16494
|
} from "@xpert-ai/chatkit-types";
|
|
16413
16495
|
import {
|
|
16414
16496
|
AlertCircle as AlertCircle2,
|
|
16415
|
-
Loader2 as
|
|
16497
|
+
Loader2 as Loader29,
|
|
16416
16498
|
Maximize2,
|
|
16417
16499
|
Minimize2,
|
|
16418
16500
|
PictureInPicture2,
|
|
@@ -18132,7 +18214,7 @@ function McpAppMessage({
|
|
|
18132
18214
|
disabled: approvalAction !== null,
|
|
18133
18215
|
onClick: () => void resolvePendingApproval("reject"),
|
|
18134
18216
|
children: [
|
|
18135
|
-
approvalAction === "reject" ? /* @__PURE__ */ jsx55(
|
|
18217
|
+
approvalAction === "reject" ? /* @__PURE__ */ jsx55(Loader29, { className: "animate-spin" }) : null,
|
|
18136
18218
|
i18n2.t("message.mcpApp.reject")
|
|
18137
18219
|
]
|
|
18138
18220
|
}
|
|
@@ -18145,7 +18227,7 @@ function McpAppMessage({
|
|
|
18145
18227
|
disabled: approvalAction !== null,
|
|
18146
18228
|
onClick: () => void resolvePendingApproval("approve"),
|
|
18147
18229
|
children: [
|
|
18148
|
-
approvalAction === "approve" ? /* @__PURE__ */ jsx55(
|
|
18230
|
+
approvalAction === "approve" ? /* @__PURE__ */ jsx55(Loader29, { className: "animate-spin" }) : null,
|
|
18149
18231
|
i18n2.t("message.mcpApp.approve")
|
|
18150
18232
|
]
|
|
18151
18233
|
}
|
|
@@ -18162,7 +18244,7 @@ function McpAppMessage({
|
|
|
18162
18244
|
elevatedDisplayMode && "min-h-0 flex-1"
|
|
18163
18245
|
),
|
|
18164
18246
|
children: [
|
|
18165
|
-
/* @__PURE__ */ jsx55(
|
|
18247
|
+
/* @__PURE__ */ jsx55(Loader29, { className: "h-4 w-4 animate-spin" }),
|
|
18166
18248
|
/* @__PURE__ */ jsx55("span", { children: i18n2.t("message.mcpApp.loading") })
|
|
18167
18249
|
]
|
|
18168
18250
|
}
|
|
@@ -18549,6 +18631,7 @@ function renderContentItem(content, index, message, lookupMessages, options) {
|
|
|
18549
18631
|
items: [content],
|
|
18550
18632
|
hasFollowingItem: false,
|
|
18551
18633
|
isThreadRunning: options?.isThreadRunning,
|
|
18634
|
+
isThreadPaused: options?.isThreadPaused,
|
|
18552
18635
|
organizationId: options?.organizationId,
|
|
18553
18636
|
apiUrl: options?.apiUrl
|
|
18554
18637
|
}
|
|
@@ -18599,6 +18682,7 @@ function renderContentUnit(unit, message, lookupMessages, hasFollowingItem, opti
|
|
|
18599
18682
|
return renderContentItem(unit.item, unit.index, message, lookupMessages, {
|
|
18600
18683
|
isReasoning: options?.isReasoning && !hasFollowingItem && !options?.isAgentOutput,
|
|
18601
18684
|
isThreadRunning: options?.isThreadRunning,
|
|
18685
|
+
isThreadPaused: options?.isThreadPaused,
|
|
18602
18686
|
organizationId: options?.organizationId,
|
|
18603
18687
|
apiUrl: options?.apiUrl,
|
|
18604
18688
|
isAgentOutput: options?.isAgentOutput,
|
|
@@ -18611,6 +18695,7 @@ function renderContentUnit(unit, message, lookupMessages, hasFollowingItem, opti
|
|
|
18611
18695
|
items: unit.items,
|
|
18612
18696
|
hasFollowingItem,
|
|
18613
18697
|
isThreadRunning: options?.isThreadRunning,
|
|
18698
|
+
isThreadPaused: options?.isThreadPaused,
|
|
18614
18699
|
organizationId: options?.organizationId,
|
|
18615
18700
|
apiUrl: options?.apiUrl
|
|
18616
18701
|
}
|
|
@@ -18732,7 +18817,7 @@ function AssistantStreamingIndicator({
|
|
|
18732
18817
|
className
|
|
18733
18818
|
),
|
|
18734
18819
|
children: [
|
|
18735
|
-
status === "loading" && /* @__PURE__ */ jsx56(
|
|
18820
|
+
status === "loading" && /* @__PURE__ */ jsx56(Loader210, { className: "h-3.5 w-3.5 animate-spin" }),
|
|
18736
18821
|
status === "thinking" && /* @__PURE__ */ jsxs40("div", { className: "flex items-end gap-1", "aria-hidden": "true", children: [
|
|
18737
18822
|
/* @__PURE__ */ jsx56("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:-0.3s]" }),
|
|
18738
18823
|
/* @__PURE__ */ jsx56("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:-0.15s]" }),
|
|
@@ -18755,6 +18840,7 @@ function AssistantMessage({
|
|
|
18755
18840
|
isStreaming = false,
|
|
18756
18841
|
streamingStatus,
|
|
18757
18842
|
isThreadRunning,
|
|
18843
|
+
isThreadPaused,
|
|
18758
18844
|
organizationId,
|
|
18759
18845
|
apiUrl,
|
|
18760
18846
|
pet,
|
|
@@ -18774,6 +18860,7 @@ function AssistantMessage({
|
|
|
18774
18860
|
const answerNode = renderContent(message, lookupMessages, {
|
|
18775
18861
|
isReasoning,
|
|
18776
18862
|
isThreadRunning,
|
|
18863
|
+
isThreadPaused,
|
|
18777
18864
|
organizationId,
|
|
18778
18865
|
apiUrl,
|
|
18779
18866
|
mcpApps
|
|
@@ -18966,13 +19053,14 @@ function MessageNavigator({
|
|
|
18966
19053
|
|
|
18967
19054
|
// src/components/thread/MessageActions.tsx
|
|
18968
19055
|
import * as React50 from "react";
|
|
18969
|
-
import { Check as Check7, Copy as Copy3, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
19056
|
+
import { Check as Check7, Copy as Copy3, Pencil as Pencil3, RefreshCw as RefreshCw4 } from "lucide-react";
|
|
18970
19057
|
import { jsx as jsx58, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
18971
19058
|
function MessageActions({
|
|
18972
19059
|
content,
|
|
18973
19060
|
isAssistant = false,
|
|
18974
19061
|
isStreaming = false,
|
|
18975
19062
|
onRetry,
|
|
19063
|
+
onEdit,
|
|
18976
19064
|
className
|
|
18977
19065
|
}) {
|
|
18978
19066
|
const { t } = useChatkitTranslation();
|
|
@@ -19010,6 +19098,17 @@ function MessageActions({
|
|
|
19010
19098
|
children: copied ? /* @__PURE__ */ jsx58(Check7, { size: 14 }) : /* @__PURE__ */ jsx58(Copy3, { size: 14 })
|
|
19011
19099
|
}
|
|
19012
19100
|
),
|
|
19101
|
+
!isAssistant && onEdit && /* @__PURE__ */ jsx58(
|
|
19102
|
+
"button",
|
|
19103
|
+
{
|
|
19104
|
+
type: "button",
|
|
19105
|
+
onClick: onEdit,
|
|
19106
|
+
className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
19107
|
+
title: t("threadControl.editMessage"),
|
|
19108
|
+
"aria-label": t("threadControl.editMessage"),
|
|
19109
|
+
children: /* @__PURE__ */ jsx58(Pencil3, { size: 14 })
|
|
19110
|
+
}
|
|
19111
|
+
),
|
|
19013
19112
|
isAssistant && onRetry && /* @__PURE__ */ jsx58(
|
|
19014
19113
|
"button",
|
|
19015
19114
|
{
|
|
@@ -19025,6 +19124,107 @@ function MessageActions({
|
|
|
19025
19124
|
);
|
|
19026
19125
|
}
|
|
19027
19126
|
|
|
19127
|
+
// src/components/thread/MessageEditor.tsx
|
|
19128
|
+
import { useState as useState33 } from "react";
|
|
19129
|
+
import { jsx as jsx59, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
19130
|
+
function MessageEditor({
|
|
19131
|
+
initialText,
|
|
19132
|
+
onSave,
|
|
19133
|
+
onCancel
|
|
19134
|
+
}) {
|
|
19135
|
+
const { t } = useChatkitTranslation();
|
|
19136
|
+
const [text, setText] = useState33(initialText);
|
|
19137
|
+
const [busy, setBusy] = useState33(false);
|
|
19138
|
+
const [error, setError] = useState33(null);
|
|
19139
|
+
async function save() {
|
|
19140
|
+
setBusy(true);
|
|
19141
|
+
setError(null);
|
|
19142
|
+
try {
|
|
19143
|
+
await onSave(text);
|
|
19144
|
+
} catch (error2) {
|
|
19145
|
+
setError(error2 instanceof Error ? error2.message : String(error2));
|
|
19146
|
+
} finally {
|
|
19147
|
+
setBusy(false);
|
|
19148
|
+
}
|
|
19149
|
+
}
|
|
19150
|
+
return /* @__PURE__ */ jsxs43("div", { className: "w-full space-y-2 rounded-2xl border border-input bg-background p-3", children: [
|
|
19151
|
+
/* @__PURE__ */ jsx59(
|
|
19152
|
+
"textarea",
|
|
19153
|
+
{
|
|
19154
|
+
"aria-label": t("threadControl.editMessage"),
|
|
19155
|
+
value: text,
|
|
19156
|
+
onChange: (event) => setText(event.target.value),
|
|
19157
|
+
disabled: busy,
|
|
19158
|
+
rows: 4,
|
|
19159
|
+
autoFocus: true,
|
|
19160
|
+
className: "w-full resize-y bg-transparent text-sm leading-relaxed text-foreground outline-none"
|
|
19161
|
+
}
|
|
19162
|
+
),
|
|
19163
|
+
error && /* @__PURE__ */ jsx59("p", { role: "alert", className: "text-xs text-destructive", children: error }),
|
|
19164
|
+
/* @__PURE__ */ jsxs43("div", { className: "flex justify-end gap-2", children: [
|
|
19165
|
+
/* @__PURE__ */ jsx59(
|
|
19166
|
+
Button,
|
|
19167
|
+
{
|
|
19168
|
+
type: "button",
|
|
19169
|
+
size: "sm",
|
|
19170
|
+
variant: "ghost",
|
|
19171
|
+
disabled: busy,
|
|
19172
|
+
onClick: onCancel,
|
|
19173
|
+
children: t("threadControl.discardEdit")
|
|
19174
|
+
}
|
|
19175
|
+
),
|
|
19176
|
+
/* @__PURE__ */ jsx59(
|
|
19177
|
+
Button,
|
|
19178
|
+
{
|
|
19179
|
+
type: "button",
|
|
19180
|
+
size: "sm",
|
|
19181
|
+
disabled: busy || !text.trim(),
|
|
19182
|
+
onClick: () => void save(),
|
|
19183
|
+
children: t("threadControl.saveBranch")
|
|
19184
|
+
}
|
|
19185
|
+
)
|
|
19186
|
+
] })
|
|
19187
|
+
] });
|
|
19188
|
+
}
|
|
19189
|
+
|
|
19190
|
+
// src/hooks/useThreadBranches.ts
|
|
19191
|
+
import { useCallback as useCallback16, useEffect as useEffect27, useRef as useRef19, useState as useState34 } from "react";
|
|
19192
|
+
function useThreadBranches(client, conversationId, threadId, enabled, isLoading) {
|
|
19193
|
+
const scope = useRef19(threadId);
|
|
19194
|
+
scope.current = threadId;
|
|
19195
|
+
const [snapshot, setSnapshot] = useState34(null);
|
|
19196
|
+
const [error, setError] = useState34(null);
|
|
19197
|
+
const generation = useRef19(0);
|
|
19198
|
+
const refresh = useCallback16(async () => {
|
|
19199
|
+
if (!threadId || !conversationId || !enabled) return;
|
|
19200
|
+
const request = ++generation.current;
|
|
19201
|
+
try {
|
|
19202
|
+
const branches2 = await client.conversations.listThreads(conversationId);
|
|
19203
|
+
if (scope.current !== threadId || generation.current !== request) return;
|
|
19204
|
+
setSnapshot({ threadId, branches: branches2 });
|
|
19205
|
+
setError(null);
|
|
19206
|
+
} catch (error2) {
|
|
19207
|
+
if (scope.current !== threadId || generation.current !== request) return;
|
|
19208
|
+
if (error2 && typeof error2 === "object" && "status" in error2 && error2.status === 404) {
|
|
19209
|
+
setSnapshot(null);
|
|
19210
|
+
setError(null);
|
|
19211
|
+
return;
|
|
19212
|
+
}
|
|
19213
|
+
setError(error2 instanceof Error ? error2.message : String(error2));
|
|
19214
|
+
}
|
|
19215
|
+
}, [client, conversationId, enabled, threadId]);
|
|
19216
|
+
const branches = enabled && snapshot?.threadId === threadId ? snapshot.branches : [];
|
|
19217
|
+
const current = branches.find((branch) => branch.thread_id === threadId);
|
|
19218
|
+
useEffect27(() => {
|
|
19219
|
+
setError(null);
|
|
19220
|
+
void refresh();
|
|
19221
|
+
return () => {
|
|
19222
|
+
generation.current += 1;
|
|
19223
|
+
};
|
|
19224
|
+
}, [refresh, isLoading]);
|
|
19225
|
+
return { branches, current, error, refresh };
|
|
19226
|
+
}
|
|
19227
|
+
|
|
19028
19228
|
// src/components/thread/StartScreen.tsx
|
|
19029
19229
|
import "react";
|
|
19030
19230
|
import {
|
|
@@ -19033,23 +19233,23 @@ import {
|
|
|
19033
19233
|
Globe as Globe2,
|
|
19034
19234
|
HelpCircle,
|
|
19035
19235
|
Lightbulb as Lightbulb2,
|
|
19036
|
-
Pencil as
|
|
19236
|
+
Pencil as Pencil4,
|
|
19037
19237
|
Search as Search6,
|
|
19038
19238
|
Sparkles as Sparkles3,
|
|
19039
19239
|
Zap
|
|
19040
19240
|
} from "lucide-react";
|
|
19041
|
-
import { jsx as
|
|
19241
|
+
import { jsx as jsx60, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
19042
19242
|
function getIconComponent2(icon) {
|
|
19043
19243
|
const iconMap = {
|
|
19044
|
-
"circle-question": /* @__PURE__ */
|
|
19045
|
-
lightbulb: /* @__PURE__ */
|
|
19046
|
-
sparkle: /* @__PURE__ */
|
|
19047
|
-
write: /* @__PURE__ */
|
|
19048
|
-
search: /* @__PURE__ */
|
|
19049
|
-
globe: /* @__PURE__ */
|
|
19050
|
-
"book-open": /* @__PURE__ */
|
|
19051
|
-
compass: /* @__PURE__ */
|
|
19052
|
-
bolt: /* @__PURE__ */
|
|
19244
|
+
"circle-question": /* @__PURE__ */ jsx60(HelpCircle, { size: 20 }),
|
|
19245
|
+
lightbulb: /* @__PURE__ */ jsx60(Lightbulb2, { size: 20 }),
|
|
19246
|
+
sparkle: /* @__PURE__ */ jsx60(Sparkles3, { size: 20 }),
|
|
19247
|
+
write: /* @__PURE__ */ jsx60(Pencil4, { size: 20 }),
|
|
19248
|
+
search: /* @__PURE__ */ jsx60(Search6, { size: 20 }),
|
|
19249
|
+
globe: /* @__PURE__ */ jsx60(Globe2, { size: 20 }),
|
|
19250
|
+
"book-open": /* @__PURE__ */ jsx60(BookOpen2, { size: 20 }),
|
|
19251
|
+
compass: /* @__PURE__ */ jsx60(Compass, { size: 20 }),
|
|
19252
|
+
bolt: /* @__PURE__ */ jsx60(Zap, { size: 20 })
|
|
19053
19253
|
};
|
|
19054
19254
|
return icon ? iconMap[icon] || iconMap["sparkle"] : iconMap["sparkle"];
|
|
19055
19255
|
}
|
|
@@ -19066,7 +19266,7 @@ function StartScreen({
|
|
|
19066
19266
|
const prompts = startScreen?.prompts ?? [];
|
|
19067
19267
|
const hasPrompts = startScreen?.promptsLayout !== "list" && prompts.length > 0;
|
|
19068
19268
|
const editPromptLabel = t("startScreen.editPrompt");
|
|
19069
|
-
return /* @__PURE__ */
|
|
19269
|
+
return /* @__PURE__ */ jsxs44(
|
|
19070
19270
|
"div",
|
|
19071
19271
|
{
|
|
19072
19272
|
className: cn(
|
|
@@ -19074,8 +19274,8 @@ function StartScreen({
|
|
|
19074
19274
|
className
|
|
19075
19275
|
),
|
|
19076
19276
|
children: [
|
|
19077
|
-
/* @__PURE__ */
|
|
19078
|
-
hasPrompts && /* @__PURE__ */
|
|
19277
|
+
/* @__PURE__ */ jsx60("div", { className: cn("mb-4 text-center", hasPrompts && "mb-10"), children: /* @__PURE__ */ jsx60("h2", { className: "mb-4 text-4xl font-semibold text-foreground", children: greeting }) }),
|
|
19278
|
+
hasPrompts && /* @__PURE__ */ jsx60("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx60("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3", children: prompts.map((item, index) => /* @__PURE__ */ jsxs44(
|
|
19079
19279
|
"div",
|
|
19080
19280
|
{
|
|
19081
19281
|
className: cn(
|
|
@@ -19084,7 +19284,7 @@ function StartScreen({
|
|
|
19084
19284
|
"focus-within:ring-2 focus-within:ring-primary/20"
|
|
19085
19285
|
),
|
|
19086
19286
|
children: [
|
|
19087
|
-
/* @__PURE__ */
|
|
19287
|
+
/* @__PURE__ */ jsxs44(
|
|
19088
19288
|
"button",
|
|
19089
19289
|
{
|
|
19090
19290
|
type: "button",
|
|
@@ -19095,8 +19295,8 @@ function StartScreen({
|
|
|
19095
19295
|
"focus:outline-none disabled:cursor-not-allowed disabled:opacity-50"
|
|
19096
19296
|
),
|
|
19097
19297
|
children: [
|
|
19098
|
-
/* @__PURE__ */
|
|
19099
|
-
/* @__PURE__ */
|
|
19298
|
+
/* @__PURE__ */ jsx60("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary", children: getIconComponent2(item.icon) }),
|
|
19299
|
+
/* @__PURE__ */ jsx60(
|
|
19100
19300
|
"div",
|
|
19101
19301
|
{
|
|
19102
19302
|
className: "text-sm font-medium text-foreground line-clamp-3 overflow-hidden",
|
|
@@ -19107,7 +19307,7 @@ function StartScreen({
|
|
|
19107
19307
|
]
|
|
19108
19308
|
}
|
|
19109
19309
|
),
|
|
19110
|
-
/* @__PURE__ */
|
|
19310
|
+
/* @__PURE__ */ jsx60(
|
|
19111
19311
|
"button",
|
|
19112
19312
|
{
|
|
19113
19313
|
type: "button",
|
|
@@ -19120,7 +19320,7 @@ function StartScreen({
|
|
|
19120
19320
|
"rounded-r-xl transition-colors hover:bg-muted hover:text-foreground",
|
|
19121
19321
|
"focus:outline-none disabled:cursor-not-allowed disabled:opacity-50"
|
|
19122
19322
|
),
|
|
19123
|
-
children: /* @__PURE__ */
|
|
19323
|
+
children: /* @__PURE__ */ jsx60(Pencil4, { size: 16 })
|
|
19124
19324
|
}
|
|
19125
19325
|
)
|
|
19126
19326
|
]
|
|
@@ -19133,8 +19333,8 @@ function StartScreen({
|
|
|
19133
19333
|
}
|
|
19134
19334
|
|
|
19135
19335
|
// src/components/composer/StarterPromptSuggestions.tsx
|
|
19136
|
-
import { MessagesSquare, Pencil as
|
|
19137
|
-
import { jsx as
|
|
19336
|
+
import { MessagesSquare, Pencil as Pencil5 } from "lucide-react";
|
|
19337
|
+
import { jsx as jsx61, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
19138
19338
|
function StarterPromptSuggestions({
|
|
19139
19339
|
prompts,
|
|
19140
19340
|
onPromptClick,
|
|
@@ -19144,13 +19344,13 @@ function StarterPromptSuggestions({
|
|
|
19144
19344
|
}) {
|
|
19145
19345
|
const { t } = useChatkitTranslation();
|
|
19146
19346
|
if (!prompts.length) return null;
|
|
19147
|
-
return /* @__PURE__ */
|
|
19347
|
+
return /* @__PURE__ */ jsx61(
|
|
19148
19348
|
"div",
|
|
19149
19349
|
{
|
|
19150
19350
|
"data-slot": "starter-prompt-suggestions",
|
|
19151
19351
|
className: "mt-2 min-w-0 space-y-0.5 px-2",
|
|
19152
|
-
children: prompts.map((item, index) => /* @__PURE__ */
|
|
19153
|
-
/* @__PURE__ */
|
|
19352
|
+
children: prompts.map((item, index) => /* @__PURE__ */ jsxs45("div", { className: "group flex min-w-0 items-center gap-1", children: [
|
|
19353
|
+
/* @__PURE__ */ jsxs45(
|
|
19154
19354
|
Button,
|
|
19155
19355
|
{
|
|
19156
19356
|
type: "button",
|
|
@@ -19161,12 +19361,12 @@ function StarterPromptSuggestions({
|
|
|
19161
19361
|
title: item.label,
|
|
19162
19362
|
onClick: () => onPromptClick(item.prompt),
|
|
19163
19363
|
children: [
|
|
19164
|
-
/* @__PURE__ */
|
|
19165
|
-
/* @__PURE__ */
|
|
19364
|
+
/* @__PURE__ */ jsx61(MessagesSquare, { className: "size-4 shrink-0", "aria-hidden": "true" }),
|
|
19365
|
+
/* @__PURE__ */ jsx61("span", { className: "truncate", children: item.label })
|
|
19166
19366
|
]
|
|
19167
19367
|
}
|
|
19168
19368
|
),
|
|
19169
|
-
/* @__PURE__ */
|
|
19369
|
+
/* @__PURE__ */ jsx61(
|
|
19170
19370
|
Button,
|
|
19171
19371
|
{
|
|
19172
19372
|
type: "button",
|
|
@@ -19177,7 +19377,7 @@ function StarterPromptSuggestions({
|
|
|
19177
19377
|
"aria-label": t("startScreen.editPrompt"),
|
|
19178
19378
|
title: t("startScreen.editPrompt"),
|
|
19179
19379
|
onClick: () => onPromptEdit(item.prompt),
|
|
19180
|
-
children: /* @__PURE__ */
|
|
19380
|
+
children: /* @__PURE__ */ jsx61(Pencil5, { className: "size-3.5", "aria-hidden": "true" })
|
|
19181
19381
|
}
|
|
19182
19382
|
)
|
|
19183
19383
|
] }, `prompt-${index}`))
|
|
@@ -19396,7 +19596,7 @@ import * as React53 from "react";
|
|
|
19396
19596
|
import { CircleHelp as CircleHelp2 } from "lucide-react";
|
|
19397
19597
|
|
|
19398
19598
|
// src/components/ui/progress-circle.tsx
|
|
19399
|
-
import { jsx as
|
|
19599
|
+
import { jsx as jsx62, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
19400
19600
|
function clamp2(input, a, b) {
|
|
19401
19601
|
return Math.max(Math.min(input, Math.max(a, b)), Math.min(a, b));
|
|
19402
19602
|
}
|
|
@@ -19419,7 +19619,7 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
|
|
|
19419
19619
|
return (
|
|
19420
19620
|
// biome-ignore lint/a11y/useFocusableInteractive: false positive (progress + progressbar are not focusable interactives)
|
|
19421
19621
|
// biome-ignore lint/nursery/useAriaPropsSupportedByRole: biome rule at odds with mdn docs (presumed nursary bug with rule)
|
|
19422
|
-
/* @__PURE__ */
|
|
19622
|
+
/* @__PURE__ */ jsxs46(
|
|
19423
19623
|
"svg",
|
|
19424
19624
|
{
|
|
19425
19625
|
role: "progressbar",
|
|
@@ -19430,8 +19630,8 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
|
|
|
19430
19630
|
"aria-valuemax": 100,
|
|
19431
19631
|
...restSvgProps,
|
|
19432
19632
|
children: [
|
|
19433
|
-
/* @__PURE__ */
|
|
19434
|
-
/* @__PURE__ */
|
|
19633
|
+
/* @__PURE__ */ jsx62("circle", { ...commonParams, className: "stroke-current/25" }),
|
|
19634
|
+
/* @__PURE__ */ jsx62(
|
|
19435
19635
|
"circle",
|
|
19436
19636
|
{
|
|
19437
19637
|
...commonParams,
|
|
@@ -19450,7 +19650,7 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
|
|
|
19450
19650
|
};
|
|
19451
19651
|
|
|
19452
19652
|
// src/components/thread/context-usage-indicator.tsx
|
|
19453
|
-
import { Fragment as Fragment11, jsx as
|
|
19653
|
+
import { Fragment as Fragment11, jsx as jsx63, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
19454
19654
|
var kNumberFormatter = new Intl.NumberFormat("en-US", {
|
|
19455
19655
|
minimumFractionDigits: 0,
|
|
19456
19656
|
maximumFractionDigits: 1
|
|
@@ -19620,8 +19820,8 @@ function ContextUsageIndicator({
|
|
|
19620
19820
|
const usageLabelWithSuffix = usageLabel.endsWith(":") ? usageLabel : `${usageLabel}:`;
|
|
19621
19821
|
const statusLabel = usageStatus === "stale" ? t("chat.contextUsage.stale") : !hasMeasurement ? t("chat.contextUsage.unavailable") : null;
|
|
19622
19822
|
const progressClassName = percent >= 90 ? "text-destructive" : percent >= 75 ? "text-amber-500" : "text-primary dark:text-zinc-300";
|
|
19623
|
-
return /* @__PURE__ */
|
|
19624
|
-
/* @__PURE__ */
|
|
19823
|
+
return /* @__PURE__ */ jsxs47(Tooltip, { children: [
|
|
19824
|
+
/* @__PURE__ */ jsx63(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx63(
|
|
19625
19825
|
"button",
|
|
19626
19826
|
{
|
|
19627
19827
|
type: "button",
|
|
@@ -19630,13 +19830,13 @@ function ContextUsageIndicator({
|
|
|
19630
19830
|
className
|
|
19631
19831
|
),
|
|
19632
19832
|
"aria-label": `${usageLabelWithSuffix} ${hasMeasurement ? `${usageFullLabel}. ${usageTokensLabel}` : ""}${statusLabel ? ` ${statusLabel}` : ""}`,
|
|
19633
|
-
children: hasMeasurement ? /* @__PURE__ */
|
|
19833
|
+
children: hasMeasurement ? /* @__PURE__ */ jsx63(
|
|
19634
19834
|
ProgressCircle,
|
|
19635
19835
|
{
|
|
19636
19836
|
value: percent,
|
|
19637
19837
|
className: cn("size-5", progressClassName)
|
|
19638
19838
|
}
|
|
19639
|
-
) : /* @__PURE__ */
|
|
19839
|
+
) : /* @__PURE__ */ jsx63(
|
|
19640
19840
|
CircleHelp2,
|
|
19641
19841
|
{
|
|
19642
19842
|
className: "size-5 text-muted-foreground",
|
|
@@ -19645,19 +19845,19 @@ function ContextUsageIndicator({
|
|
|
19645
19845
|
)
|
|
19646
19846
|
}
|
|
19647
19847
|
) }),
|
|
19648
|
-
/* @__PURE__ */
|
|
19848
|
+
/* @__PURE__ */ jsxs47(
|
|
19649
19849
|
TooltipContent,
|
|
19650
19850
|
{
|
|
19651
19851
|
side: "top",
|
|
19652
19852
|
sideOffset: 6,
|
|
19653
19853
|
className: "space-y-0.5 px-3 py-2 text-center",
|
|
19654
19854
|
children: [
|
|
19655
|
-
/* @__PURE__ */
|
|
19656
|
-
hasMeasurement && /* @__PURE__ */
|
|
19657
|
-
/* @__PURE__ */
|
|
19658
|
-
/* @__PURE__ */
|
|
19855
|
+
/* @__PURE__ */ jsx63("div", { className: "text-primary-foreground/70", children: usageLabelWithSuffix }),
|
|
19856
|
+
hasMeasurement && /* @__PURE__ */ jsxs47(Fragment11, { children: [
|
|
19857
|
+
/* @__PURE__ */ jsx63("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
|
|
19858
|
+
/* @__PURE__ */ jsx63("div", { className: "text-sm font-semibold", children: usageTokensLabel })
|
|
19659
19859
|
] }),
|
|
19660
|
-
!hasMeasurement && statusLabel && /* @__PURE__ */
|
|
19860
|
+
!hasMeasurement && statusLabel && /* @__PURE__ */ jsx63("div", { className: "text-sm", children: statusLabel })
|
|
19661
19861
|
]
|
|
19662
19862
|
}
|
|
19663
19863
|
)
|
|
@@ -19694,7 +19894,7 @@ function normalizeModelOptions(models) {
|
|
|
19694
19894
|
|
|
19695
19895
|
// src/components/composer/ComposerCapabilityChip.tsx
|
|
19696
19896
|
import { X as X8 } from "lucide-react";
|
|
19697
|
-
import { jsx as
|
|
19897
|
+
import { jsx as jsx64, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
19698
19898
|
function ComposerCapabilityChip({
|
|
19699
19899
|
option,
|
|
19700
19900
|
onRemove,
|
|
@@ -19702,7 +19902,7 @@ function ComposerCapabilityChip({
|
|
|
19702
19902
|
}) {
|
|
19703
19903
|
const { t } = useChatkitTranslation();
|
|
19704
19904
|
const color = getRuntimeCapabilityColor(option);
|
|
19705
|
-
return /* @__PURE__ */
|
|
19905
|
+
return /* @__PURE__ */ jsxs48(
|
|
19706
19906
|
"span",
|
|
19707
19907
|
{
|
|
19708
19908
|
"data-slot": "composer-capability-chip",
|
|
@@ -19717,9 +19917,9 @@ function ComposerCapabilityChip({
|
|
|
19717
19917
|
${option.description}` : option.label,
|
|
19718
19918
|
contentEditable: false,
|
|
19719
19919
|
children: [
|
|
19720
|
-
/* @__PURE__ */
|
|
19721
|
-
/* @__PURE__ */
|
|
19722
|
-
/* @__PURE__ */
|
|
19920
|
+
/* @__PURE__ */ jsx64(RuntimeCapabilityIcon, { option, variant: "chip" }),
|
|
19921
|
+
/* @__PURE__ */ jsx64("span", { className: "min-w-0 truncate", children: option.label }),
|
|
19922
|
+
/* @__PURE__ */ jsx64(
|
|
19723
19923
|
"button",
|
|
19724
19924
|
{
|
|
19725
19925
|
type: "button",
|
|
@@ -19731,7 +19931,7 @@ ${option.description}` : option.label,
|
|
|
19731
19931
|
name: option.label
|
|
19732
19932
|
}),
|
|
19733
19933
|
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",
|
|
19734
|
-
children: /* @__PURE__ */
|
|
19934
|
+
children: /* @__PURE__ */ jsx64(X8, { className: "size-3" })
|
|
19735
19935
|
}
|
|
19736
19936
|
)
|
|
19737
19937
|
]
|
|
@@ -20158,17 +20358,17 @@ import { PawPrint, Settings } from "lucide-react";
|
|
|
20158
20358
|
import "react";
|
|
20159
20359
|
import { Select as SelectPrimitive } from "radix-ui";
|
|
20160
20360
|
import { ChevronDownIcon as ChevronDownIcon2, CheckIcon as CheckIcon4, ChevronUpIcon } from "lucide-react";
|
|
20161
|
-
import { jsx as
|
|
20361
|
+
import { jsx as jsx65, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
20162
20362
|
function Select({
|
|
20163
20363
|
...props
|
|
20164
20364
|
}) {
|
|
20165
|
-
return /* @__PURE__ */
|
|
20365
|
+
return /* @__PURE__ */ jsx65(SelectPrimitive.Root, { "data-slot": "select", ...props });
|
|
20166
20366
|
}
|
|
20167
20367
|
function SelectGroup({
|
|
20168
20368
|
className,
|
|
20169
20369
|
...props
|
|
20170
20370
|
}) {
|
|
20171
|
-
return /* @__PURE__ */
|
|
20371
|
+
return /* @__PURE__ */ jsx65(
|
|
20172
20372
|
SelectPrimitive.Group,
|
|
20173
20373
|
{
|
|
20174
20374
|
"data-slot": "select-group",
|
|
@@ -20180,7 +20380,7 @@ function SelectGroup({
|
|
|
20180
20380
|
function SelectValue({
|
|
20181
20381
|
...props
|
|
20182
20382
|
}) {
|
|
20183
|
-
return /* @__PURE__ */
|
|
20383
|
+
return /* @__PURE__ */ jsx65(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
|
|
20184
20384
|
}
|
|
20185
20385
|
function SelectTrigger({
|
|
20186
20386
|
className,
|
|
@@ -20188,7 +20388,7 @@ function SelectTrigger({
|
|
|
20188
20388
|
children,
|
|
20189
20389
|
...props
|
|
20190
20390
|
}) {
|
|
20191
|
-
return /* @__PURE__ */
|
|
20391
|
+
return /* @__PURE__ */ jsxs49(
|
|
20192
20392
|
SelectPrimitive.Trigger,
|
|
20193
20393
|
{
|
|
20194
20394
|
"data-slot": "select-trigger",
|
|
@@ -20200,7 +20400,7 @@ function SelectTrigger({
|
|
|
20200
20400
|
...props,
|
|
20201
20401
|
children: [
|
|
20202
20402
|
children,
|
|
20203
|
-
/* @__PURE__ */
|
|
20403
|
+
/* @__PURE__ */ jsx65(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx65(ChevronDownIcon2, { className: "pointer-events-none size-4 text-muted-foreground" }) })
|
|
20204
20404
|
]
|
|
20205
20405
|
}
|
|
20206
20406
|
);
|
|
@@ -20212,7 +20412,7 @@ function SelectContent({
|
|
|
20212
20412
|
align = "center",
|
|
20213
20413
|
...props
|
|
20214
20414
|
}) {
|
|
20215
|
-
return /* @__PURE__ */
|
|
20415
|
+
return /* @__PURE__ */ jsx65(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs49(
|
|
20216
20416
|
SelectPrimitive.Content,
|
|
20217
20417
|
{
|
|
20218
20418
|
"data-slot": "select-content",
|
|
@@ -20222,8 +20422,8 @@ function SelectContent({
|
|
|
20222
20422
|
align,
|
|
20223
20423
|
...props,
|
|
20224
20424
|
children: [
|
|
20225
|
-
/* @__PURE__ */
|
|
20226
|
-
/* @__PURE__ */
|
|
20425
|
+
/* @__PURE__ */ jsx65(SelectScrollUpButton, {}),
|
|
20426
|
+
/* @__PURE__ */ jsx65(
|
|
20227
20427
|
SelectPrimitive.Viewport,
|
|
20228
20428
|
{
|
|
20229
20429
|
"data-position": position,
|
|
@@ -20234,7 +20434,7 @@ function SelectContent({
|
|
|
20234
20434
|
children
|
|
20235
20435
|
}
|
|
20236
20436
|
),
|
|
20237
|
-
/* @__PURE__ */
|
|
20437
|
+
/* @__PURE__ */ jsx65(SelectScrollDownButton, {})
|
|
20238
20438
|
]
|
|
20239
20439
|
}
|
|
20240
20440
|
) });
|
|
@@ -20244,7 +20444,7 @@ function SelectItem({
|
|
|
20244
20444
|
children,
|
|
20245
20445
|
...props
|
|
20246
20446
|
}) {
|
|
20247
|
-
return /* @__PURE__ */
|
|
20447
|
+
return /* @__PURE__ */ jsxs49(
|
|
20248
20448
|
SelectPrimitive.Item,
|
|
20249
20449
|
{
|
|
20250
20450
|
"data-slot": "select-item",
|
|
@@ -20254,8 +20454,8 @@ function SelectItem({
|
|
|
20254
20454
|
),
|
|
20255
20455
|
...props,
|
|
20256
20456
|
children: [
|
|
20257
|
-
/* @__PURE__ */
|
|
20258
|
-
/* @__PURE__ */
|
|
20457
|
+
/* @__PURE__ */ jsx65("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx65(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx65(CheckIcon4, { className: "pointer-events-none" }) }) }),
|
|
20458
|
+
/* @__PURE__ */ jsx65(SelectPrimitive.ItemText, { children })
|
|
20259
20459
|
]
|
|
20260
20460
|
}
|
|
20261
20461
|
);
|
|
@@ -20264,7 +20464,7 @@ function SelectScrollUpButton({
|
|
|
20264
20464
|
className,
|
|
20265
20465
|
...props
|
|
20266
20466
|
}) {
|
|
20267
|
-
return /* @__PURE__ */
|
|
20467
|
+
return /* @__PURE__ */ jsx65(
|
|
20268
20468
|
SelectPrimitive.ScrollUpButton,
|
|
20269
20469
|
{
|
|
20270
20470
|
"data-slot": "select-scroll-up-button",
|
|
@@ -20273,7 +20473,7 @@ function SelectScrollUpButton({
|
|
|
20273
20473
|
className
|
|
20274
20474
|
),
|
|
20275
20475
|
...props,
|
|
20276
|
-
children: /* @__PURE__ */
|
|
20476
|
+
children: /* @__PURE__ */ jsx65(
|
|
20277
20477
|
ChevronUpIcon,
|
|
20278
20478
|
{}
|
|
20279
20479
|
)
|
|
@@ -20284,7 +20484,7 @@ function SelectScrollDownButton({
|
|
|
20284
20484
|
className,
|
|
20285
20485
|
...props
|
|
20286
20486
|
}) {
|
|
20287
|
-
return /* @__PURE__ */
|
|
20487
|
+
return /* @__PURE__ */ jsx65(
|
|
20288
20488
|
SelectPrimitive.ScrollDownButton,
|
|
20289
20489
|
{
|
|
20290
20490
|
"data-slot": "select-scroll-down-button",
|
|
@@ -20293,7 +20493,7 @@ function SelectScrollDownButton({
|
|
|
20293
20493
|
className
|
|
20294
20494
|
),
|
|
20295
20495
|
...props,
|
|
20296
|
-
children: /* @__PURE__ */
|
|
20496
|
+
children: /* @__PURE__ */ jsx65(
|
|
20297
20497
|
ChevronDownIcon2,
|
|
20298
20498
|
{}
|
|
20299
20499
|
)
|
|
@@ -20304,7 +20504,7 @@ function SelectScrollDownButton({
|
|
|
20304
20504
|
// src/components/ui/slider.tsx
|
|
20305
20505
|
import * as React57 from "react";
|
|
20306
20506
|
import { Slider as SliderPrimitive } from "radix-ui";
|
|
20307
|
-
import { jsx as
|
|
20507
|
+
import { jsx as jsx66, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
20308
20508
|
function Slider({
|
|
20309
20509
|
className,
|
|
20310
20510
|
defaultValue,
|
|
@@ -20317,7 +20517,7 @@ function Slider({
|
|
|
20317
20517
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
20318
20518
|
[value, defaultValue, min, max]
|
|
20319
20519
|
);
|
|
20320
|
-
return /* @__PURE__ */
|
|
20520
|
+
return /* @__PURE__ */ jsxs50(
|
|
20321
20521
|
SliderPrimitive.Root,
|
|
20322
20522
|
{
|
|
20323
20523
|
"data-slot": "slider",
|
|
@@ -20331,12 +20531,12 @@ function Slider({
|
|
|
20331
20531
|
),
|
|
20332
20532
|
...props,
|
|
20333
20533
|
children: [
|
|
20334
|
-
/* @__PURE__ */
|
|
20534
|
+
/* @__PURE__ */ jsx66(
|
|
20335
20535
|
SliderPrimitive.Track,
|
|
20336
20536
|
{
|
|
20337
20537
|
"data-slot": "slider-track",
|
|
20338
20538
|
className: "relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1",
|
|
20339
|
-
children: /* @__PURE__ */
|
|
20539
|
+
children: /* @__PURE__ */ jsx66(
|
|
20340
20540
|
SliderPrimitive.Range,
|
|
20341
20541
|
{
|
|
20342
20542
|
"data-slot": "slider-range",
|
|
@@ -20345,7 +20545,7 @@ function Slider({
|
|
|
20345
20545
|
)
|
|
20346
20546
|
}
|
|
20347
20547
|
),
|
|
20348
|
-
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */
|
|
20548
|
+
Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx66(
|
|
20349
20549
|
SliderPrimitive.Thumb,
|
|
20350
20550
|
{
|
|
20351
20551
|
"data-slot": "slider-thumb",
|
|
@@ -20367,7 +20567,7 @@ import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
|
|
|
20367
20567
|
import "react";
|
|
20368
20568
|
import { cva as cva2 } from "class-variance-authority";
|
|
20369
20569
|
import { Toggle as TogglePrimitive } from "radix-ui";
|
|
20370
|
-
import { jsx as
|
|
20570
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
20371
20571
|
var toggleVariants = cva2(
|
|
20372
20572
|
"group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
20373
20573
|
{
|
|
@@ -20390,7 +20590,7 @@ var toggleVariants = cva2(
|
|
|
20390
20590
|
);
|
|
20391
20591
|
|
|
20392
20592
|
// src/components/ui/toggle-group.tsx
|
|
20393
|
-
import { jsx as
|
|
20593
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
20394
20594
|
var ToggleGroupContext = React59.createContext({
|
|
20395
20595
|
size: "default",
|
|
20396
20596
|
variant: "default",
|
|
@@ -20406,7 +20606,7 @@ function ToggleGroup({
|
|
|
20406
20606
|
children,
|
|
20407
20607
|
...props
|
|
20408
20608
|
}) {
|
|
20409
|
-
return /* @__PURE__ */
|
|
20609
|
+
return /* @__PURE__ */ jsx68(
|
|
20410
20610
|
ToggleGroupPrimitive.Root,
|
|
20411
20611
|
{
|
|
20412
20612
|
"data-slot": "toggle-group",
|
|
@@ -20420,7 +20620,7 @@ function ToggleGroup({
|
|
|
20420
20620
|
className
|
|
20421
20621
|
),
|
|
20422
20622
|
...props,
|
|
20423
|
-
children: /* @__PURE__ */
|
|
20623
|
+
children: /* @__PURE__ */ jsx68(
|
|
20424
20624
|
ToggleGroupContext.Provider,
|
|
20425
20625
|
{
|
|
20426
20626
|
value: { variant, size: size2, spacing, orientation },
|
|
@@ -20438,7 +20638,7 @@ function ToggleGroupItem({
|
|
|
20438
20638
|
...props
|
|
20439
20639
|
}) {
|
|
20440
20640
|
const context = React59.useContext(ToggleGroupContext);
|
|
20441
|
-
return /* @__PURE__ */
|
|
20641
|
+
return /* @__PURE__ */ jsx68(
|
|
20442
20642
|
ToggleGroupPrimitive.Item,
|
|
20443
20643
|
{
|
|
20444
20644
|
"data-slot": "toggle-group-item",
|
|
@@ -20678,7 +20878,7 @@ import {
|
|
|
20678
20878
|
} from "@xpert-ai/chatkit-types";
|
|
20679
20879
|
|
|
20680
20880
|
// src/components/pet/PetPreview.tsx
|
|
20681
|
-
import { jsx as
|
|
20881
|
+
import { jsx as jsx69 } from "react/jsx-runtime";
|
|
20682
20882
|
function escapeCssUrl2(value) {
|
|
20683
20883
|
return value.replace(/["\\]/g, "\\$&");
|
|
20684
20884
|
}
|
|
@@ -20686,7 +20886,7 @@ function PetPreview({ src, label, className }) {
|
|
|
20686
20886
|
const scale = 0.13;
|
|
20687
20887
|
const width = petSpriteAtlas.cellWidth;
|
|
20688
20888
|
const height = petSpriteAtlas.cellHeight;
|
|
20689
|
-
return /* @__PURE__ */
|
|
20889
|
+
return /* @__PURE__ */ jsx69(
|
|
20690
20890
|
"span",
|
|
20691
20891
|
{
|
|
20692
20892
|
className: cn(
|
|
@@ -20695,7 +20895,7 @@ function PetPreview({ src, label, className }) {
|
|
|
20695
20895
|
),
|
|
20696
20896
|
"aria-hidden": "true",
|
|
20697
20897
|
title: label,
|
|
20698
|
-
children: /* @__PURE__ */
|
|
20898
|
+
children: /* @__PURE__ */ jsx69(
|
|
20699
20899
|
"span",
|
|
20700
20900
|
{
|
|
20701
20901
|
className: "absolute left-1/2 top-1/2 block",
|
|
@@ -20717,7 +20917,7 @@ function PetPreview({ src, label, className }) {
|
|
|
20717
20917
|
}
|
|
20718
20918
|
|
|
20719
20919
|
// src/components/settings/SettingsSheet.tsx
|
|
20720
|
-
import { jsx as
|
|
20920
|
+
import { jsx as jsx70, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
20721
20921
|
var CHARACTER_TYPES2 = [
|
|
20722
20922
|
"builtin",
|
|
20723
20923
|
"atlas"
|
|
@@ -20757,23 +20957,23 @@ function SettingsSheet({
|
|
|
20757
20957
|
defaultValue: selectedBuiltinPet.label
|
|
20758
20958
|
}
|
|
20759
20959
|
);
|
|
20760
|
-
return /* @__PURE__ */
|
|
20761
|
-
/* @__PURE__ */
|
|
20762
|
-
/* @__PURE__ */
|
|
20763
|
-
/* @__PURE__ */
|
|
20960
|
+
return /* @__PURE__ */ jsx70(Sheet, { open, onOpenChange, children: /* @__PURE__ */ jsxs51(SheetContent, { side: "right", className: "w-[min(92vw,26rem)] overflow-y-auto", children: [
|
|
20961
|
+
/* @__PURE__ */ jsx70(SheetHeader, { children: /* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-2", children: [
|
|
20962
|
+
/* @__PURE__ */ jsx70("span", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-primary/10 text-primary", children: /* @__PURE__ */ jsx70(Settings, { size: 16 }) }),
|
|
20963
|
+
/* @__PURE__ */ jsx70(SheetTitle, { children: t("settings.title") })
|
|
20764
20964
|
] }) }),
|
|
20765
|
-
/* @__PURE__ */
|
|
20766
|
-
/* @__PURE__ */
|
|
20767
|
-
/* @__PURE__ */
|
|
20768
|
-
/* @__PURE__ */
|
|
20769
|
-
/* @__PURE__ */
|
|
20965
|
+
/* @__PURE__ */ jsxs51("form", { className: "mt-6 space-y-5", onSubmit: handleSubmit, children: [
|
|
20966
|
+
/* @__PURE__ */ jsxs51("section", { className: "space-y-5", children: [
|
|
20967
|
+
/* @__PURE__ */ jsxs51("div", { className: "flex items-center gap-2", children: [
|
|
20968
|
+
/* @__PURE__ */ jsx70("span", { className: "flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground", children: /* @__PURE__ */ jsx70(PawPrint, { size: 15 }) }),
|
|
20969
|
+
/* @__PURE__ */ jsx70("h3", { className: "text-sm font-semibold", children: t("pet.settings.title") })
|
|
20770
20970
|
] }),
|
|
20771
|
-
/* @__PURE__ */
|
|
20772
|
-
/* @__PURE__ */
|
|
20773
|
-
/* @__PURE__ */
|
|
20774
|
-
petRequired && /* @__PURE__ */
|
|
20971
|
+
/* @__PURE__ */ jsxs51("label", { className: "flex items-center justify-between gap-4 rounded-md border border-border px-3 py-2", children: [
|
|
20972
|
+
/* @__PURE__ */ jsxs51("span", { className: "min-w-0", children: [
|
|
20973
|
+
/* @__PURE__ */ jsx70("span", { className: "block text-sm font-medium", children: t("pet.settings.enabled") }),
|
|
20974
|
+
petRequired && /* @__PURE__ */ jsx70("span", { className: "mt-0.5 block text-xs text-muted-foreground", children: t("pet.settings.requiredHint") })
|
|
20775
20975
|
] }),
|
|
20776
|
-
/* @__PURE__ */
|
|
20976
|
+
/* @__PURE__ */ jsx70(
|
|
20777
20977
|
"button",
|
|
20778
20978
|
{
|
|
20779
20979
|
type: "button",
|
|
@@ -20786,7 +20986,7 @@ function SettingsSheet({
|
|
|
20786
20986
|
draft.enabled ? "bg-primary" : "bg-muted-foreground/20",
|
|
20787
20987
|
petRequired ? "cursor-not-allowed opacity-70" : ""
|
|
20788
20988
|
].join(" "),
|
|
20789
|
-
children: /* @__PURE__ */
|
|
20989
|
+
children: /* @__PURE__ */ jsx70(
|
|
20790
20990
|
"span",
|
|
20791
20991
|
{
|
|
20792
20992
|
className: [
|
|
@@ -20799,9 +20999,9 @@ function SettingsSheet({
|
|
|
20799
20999
|
)
|
|
20800
21000
|
] })
|
|
20801
21001
|
] }),
|
|
20802
|
-
/* @__PURE__ */
|
|
20803
|
-
/* @__PURE__ */
|
|
20804
|
-
/* @__PURE__ */
|
|
21002
|
+
/* @__PURE__ */ jsxs51("div", { className: "space-y-2", children: [
|
|
21003
|
+
/* @__PURE__ */ jsx70("span", { id: "chatkit-pet-type-label", className: "text-sm font-medium", children: t("pet.settings.characterType") }),
|
|
21004
|
+
/* @__PURE__ */ jsx70(
|
|
20805
21005
|
ToggleGroup,
|
|
20806
21006
|
{
|
|
20807
21007
|
id: "chatkit-pet-type",
|
|
@@ -20816,7 +21016,7 @@ function SettingsSheet({
|
|
|
20816
21016
|
variant: "outline",
|
|
20817
21017
|
spacing: 2,
|
|
20818
21018
|
className: "!w-full",
|
|
20819
|
-
children: CHARACTER_TYPES2.map((type) => /* @__PURE__ */
|
|
21019
|
+
children: CHARACTER_TYPES2.map((type) => /* @__PURE__ */ jsx70(
|
|
20820
21020
|
ToggleGroupItem,
|
|
20821
21021
|
{
|
|
20822
21022
|
value: type,
|
|
@@ -20828,8 +21028,8 @@ function SettingsSheet({
|
|
|
20828
21028
|
}
|
|
20829
21029
|
)
|
|
20830
21030
|
] }),
|
|
20831
|
-
draft.characterType === "builtin" && /* @__PURE__ */
|
|
20832
|
-
/* @__PURE__ */
|
|
21031
|
+
draft.characterType === "builtin" && /* @__PURE__ */ jsxs51("div", { className: "space-y-2", children: [
|
|
21032
|
+
/* @__PURE__ */ jsx70(
|
|
20833
21033
|
"label",
|
|
20834
21034
|
{
|
|
20835
21035
|
htmlFor: "chatkit-pet-builtin",
|
|
@@ -20837,7 +21037,7 @@ function SettingsSheet({
|
|
|
20837
21037
|
children: t("pet.settings.builtin")
|
|
20838
21038
|
}
|
|
20839
21039
|
),
|
|
20840
|
-
/* @__PURE__ */
|
|
21040
|
+
/* @__PURE__ */ jsxs51(
|
|
20841
21041
|
Select,
|
|
20842
21042
|
{
|
|
20843
21043
|
value: selectedBuiltinPet.id,
|
|
@@ -20848,26 +21048,26 @@ function SettingsSheet({
|
|
|
20848
21048
|
}
|
|
20849
21049
|
},
|
|
20850
21050
|
children: [
|
|
20851
|
-
/* @__PURE__ */
|
|
21051
|
+
/* @__PURE__ */ jsx70(
|
|
20852
21052
|
SelectTrigger,
|
|
20853
21053
|
{
|
|
20854
21054
|
id: "chatkit-pet-builtin",
|
|
20855
21055
|
className: "min-h-12 w-full px-3 py-2",
|
|
20856
|
-
children: /* @__PURE__ */
|
|
21056
|
+
children: /* @__PURE__ */ jsx70(SelectValue, { placeholder: selectedBuiltinPetLabel })
|
|
20857
21057
|
}
|
|
20858
21058
|
),
|
|
20859
|
-
/* @__PURE__ */
|
|
21059
|
+
/* @__PURE__ */ jsx70(SelectContent, { className: "w-[var(--radix-select-trigger-width)]", children: /* @__PURE__ */ jsx70(SelectGroup, { children: INCLUDED_PET_OPTIONS.map((pet) => {
|
|
20860
21060
|
const label = t(`pet.settings.builtins.${pet.id}`, {
|
|
20861
21061
|
defaultValue: pet.label
|
|
20862
21062
|
});
|
|
20863
|
-
return /* @__PURE__ */
|
|
21063
|
+
return /* @__PURE__ */ jsx70(
|
|
20864
21064
|
SelectItem,
|
|
20865
21065
|
{
|
|
20866
21066
|
value: pet.id,
|
|
20867
21067
|
className: "min-h-10 py-1.5 pl-2 pr-8",
|
|
20868
|
-
children: /* @__PURE__ */
|
|
20869
|
-
/* @__PURE__ */
|
|
20870
|
-
/* @__PURE__ */
|
|
21068
|
+
children: /* @__PURE__ */ jsxs51("span", { className: "flex min-w-0 items-center gap-2", children: [
|
|
21069
|
+
/* @__PURE__ */ jsx70(PetPreview, { src: pet.previewSrc, label }),
|
|
21070
|
+
/* @__PURE__ */ jsx70("span", { className: "min-w-0 truncate", children: label })
|
|
20871
21071
|
] })
|
|
20872
21072
|
},
|
|
20873
21073
|
pet.id
|
|
@@ -20877,8 +21077,8 @@ function SettingsSheet({
|
|
|
20877
21077
|
}
|
|
20878
21078
|
)
|
|
20879
21079
|
] }),
|
|
20880
|
-
draft.characterType === "atlas" && /* @__PURE__ */
|
|
20881
|
-
/* @__PURE__ */
|
|
21080
|
+
draft.characterType === "atlas" && /* @__PURE__ */ jsxs51("div", { className: "space-y-2", children: [
|
|
21081
|
+
/* @__PURE__ */ jsx70(
|
|
20882
21082
|
"label",
|
|
20883
21083
|
{
|
|
20884
21084
|
className: "text-sm font-medium",
|
|
@@ -20886,7 +21086,7 @@ function SettingsSheet({
|
|
|
20886
21086
|
children: t("pet.settings.atlasUrl")
|
|
20887
21087
|
}
|
|
20888
21088
|
),
|
|
20889
|
-
/* @__PURE__ */
|
|
21089
|
+
/* @__PURE__ */ jsx70(
|
|
20890
21090
|
Input,
|
|
20891
21091
|
{
|
|
20892
21092
|
id: "chatkit-pet-atlas",
|
|
@@ -20896,15 +21096,15 @@ function SettingsSheet({
|
|
|
20896
21096
|
}
|
|
20897
21097
|
)
|
|
20898
21098
|
] }),
|
|
20899
|
-
/* @__PURE__ */
|
|
20900
|
-
/* @__PURE__ */
|
|
20901
|
-
/* @__PURE__ */
|
|
20902
|
-
/* @__PURE__ */
|
|
21099
|
+
/* @__PURE__ */ jsxs51("div", { className: "space-y-2", children: [
|
|
21100
|
+
/* @__PURE__ */ jsxs51("div", { className: "flex items-center justify-between gap-4", children: [
|
|
21101
|
+
/* @__PURE__ */ jsx70("label", { className: "text-sm font-medium", htmlFor: "chatkit-pet-scale", children: t("pet.settings.scale") }),
|
|
21102
|
+
/* @__PURE__ */ jsxs51("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
|
|
20903
21103
|
draft.scale.toFixed(2),
|
|
20904
21104
|
"x"
|
|
20905
21105
|
] })
|
|
20906
21106
|
] }),
|
|
20907
|
-
/* @__PURE__ */
|
|
21107
|
+
/* @__PURE__ */ jsx70(
|
|
20908
21108
|
Slider,
|
|
20909
21109
|
{
|
|
20910
21110
|
id: "chatkit-pet-scale",
|
|
@@ -20918,8 +21118,8 @@ function SettingsSheet({
|
|
|
20918
21118
|
}
|
|
20919
21119
|
)
|
|
20920
21120
|
] }),
|
|
20921
|
-
/* @__PURE__ */
|
|
20922
|
-
/* @__PURE__ */
|
|
21121
|
+
/* @__PURE__ */ jsxs51("label", { className: "flex items-center gap-2 text-sm", children: [
|
|
21122
|
+
/* @__PURE__ */ jsx70(
|
|
20923
21123
|
"input",
|
|
20924
21124
|
{
|
|
20925
21125
|
type: "checkbox",
|
|
@@ -20930,8 +21130,8 @@ function SettingsSheet({
|
|
|
20930
21130
|
),
|
|
20931
21131
|
t("pet.settings.draggable")
|
|
20932
21132
|
] }),
|
|
20933
|
-
/* @__PURE__ */
|
|
20934
|
-
/* @__PURE__ */
|
|
21133
|
+
/* @__PURE__ */ jsxs51("label", { className: "flex items-center gap-2 text-sm", children: [
|
|
21134
|
+
/* @__PURE__ */ jsx70(
|
|
20935
21135
|
"input",
|
|
20936
21136
|
{
|
|
20937
21137
|
type: "checkbox",
|
|
@@ -20942,8 +21142,8 @@ function SettingsSheet({
|
|
|
20942
21142
|
),
|
|
20943
21143
|
t("pet.settings.persistPosition")
|
|
20944
21144
|
] }),
|
|
20945
|
-
/* @__PURE__ */
|
|
20946
|
-
/* @__PURE__ */
|
|
21145
|
+
/* @__PURE__ */ jsxs51("div", { className: "flex justify-end gap-2 pt-2", children: [
|
|
21146
|
+
/* @__PURE__ */ jsx70(
|
|
20947
21147
|
Button,
|
|
20948
21148
|
{
|
|
20949
21149
|
type: "button",
|
|
@@ -20952,7 +21152,7 @@ function SettingsSheet({
|
|
|
20952
21152
|
children: t("pet.settings.cancel")
|
|
20953
21153
|
}
|
|
20954
21154
|
),
|
|
20955
|
-
/* @__PURE__ */
|
|
21155
|
+
/* @__PURE__ */ jsx70(Button, { type: "submit", children: t("pet.settings.save") })
|
|
20956
21156
|
] })
|
|
20957
21157
|
] })
|
|
20958
21158
|
] }) });
|
|
@@ -21127,8 +21327,8 @@ function createXpertThreadGoalAdapter(client, scope) {
|
|
|
21127
21327
|
|
|
21128
21328
|
// src/workbench/context.tsx
|
|
21129
21329
|
import * as React62 from "react";
|
|
21130
|
-
import { Loader2 as
|
|
21131
|
-
import { jsx as
|
|
21330
|
+
import { Loader2 as Loader211, PanelRight } from "lucide-react";
|
|
21331
|
+
import { jsx as jsx71, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
21132
21332
|
var WorkbenchContext = React62.createContext({
|
|
21133
21333
|
enabled: false,
|
|
21134
21334
|
open: false,
|
|
@@ -21147,8 +21347,8 @@ function WorkbenchToggleButton() {
|
|
|
21147
21347
|
if (!workbench.enabled || workbench.open) return null;
|
|
21148
21348
|
const label = t("workbench.open");
|
|
21149
21349
|
const tooltip = workbench.disabledReason ?? label;
|
|
21150
|
-
return /* @__PURE__ */
|
|
21151
|
-
/* @__PURE__ */
|
|
21350
|
+
return /* @__PURE__ */ jsxs52(Tooltip, { children: [
|
|
21351
|
+
/* @__PURE__ */ jsx71(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx71("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx71(
|
|
21152
21352
|
"button",
|
|
21153
21353
|
{
|
|
21154
21354
|
type: "button",
|
|
@@ -21161,16 +21361,16 @@ function WorkbenchToggleButton() {
|
|
|
21161
21361
|
),
|
|
21162
21362
|
"aria-label": label,
|
|
21163
21363
|
"aria-expanded": false,
|
|
21164
|
-
children: workbench.loading ? /* @__PURE__ */
|
|
21364
|
+
children: workbench.loading ? /* @__PURE__ */ jsx71(Loader211, { size: 16, className: "animate-spin" }) : /* @__PURE__ */ jsx71(PanelRight, { size: 16 })
|
|
21165
21365
|
}
|
|
21166
21366
|
) }) }),
|
|
21167
|
-
/* @__PURE__ */
|
|
21367
|
+
/* @__PURE__ */ jsx71(TooltipContent, { side: "bottom", children: tooltip })
|
|
21168
21368
|
] });
|
|
21169
21369
|
}
|
|
21170
21370
|
|
|
21171
21371
|
// src/components/chat/runtime-capabilities.tsx
|
|
21172
21372
|
import * as React63 from "react";
|
|
21173
|
-
import { jsx as
|
|
21373
|
+
import { jsx as jsx72, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
21174
21374
|
function createComposerCapabilityInsertionParts(options) {
|
|
21175
21375
|
return options.filter((option) => option.type !== "subAgent").flatMap((option) => [
|
|
21176
21376
|
createComposerCapabilityPart(option, createMessageId()),
|
|
@@ -21729,16 +21929,16 @@ function HumanRuntimeCapabilityChips({
|
|
|
21729
21929
|
if (options.length === 0) {
|
|
21730
21930
|
return null;
|
|
21731
21931
|
}
|
|
21732
|
-
return /* @__PURE__ */
|
|
21932
|
+
return /* @__PURE__ */ jsx72("div", { className: "mb-2 flex flex-wrap gap-1.5", children: options.map((option) => {
|
|
21733
21933
|
const color = option.type === "skill" ? void 0 : getRuntimeCapabilityColor(option);
|
|
21734
|
-
return /* @__PURE__ */
|
|
21934
|
+
return /* @__PURE__ */ jsxs53(
|
|
21735
21935
|
"span",
|
|
21736
21936
|
{
|
|
21737
21937
|
className: "inline-flex max-w-full items-center gap-1 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs font-medium text-primary-foreground",
|
|
21738
21938
|
style: color ? { color } : void 0,
|
|
21739
21939
|
children: [
|
|
21740
|
-
/* @__PURE__ */
|
|
21741
|
-
/* @__PURE__ */
|
|
21940
|
+
/* @__PURE__ */ jsx72(RuntimeCapabilityIcon, { option, variant: "chip" }),
|
|
21941
|
+
/* @__PURE__ */ jsx72("span", { className: "max-w-[9rem] truncate", children: option.label })
|
|
21742
21942
|
]
|
|
21743
21943
|
},
|
|
21744
21944
|
`${option.type}:${option.id}`
|
|
@@ -21751,7 +21951,7 @@ function ComposerCapabilityToken({
|
|
|
21751
21951
|
disabled
|
|
21752
21952
|
}) {
|
|
21753
21953
|
const color = getRuntimeCapabilityColor(part.capability);
|
|
21754
|
-
return /* @__PURE__ */
|
|
21954
|
+
return /* @__PURE__ */ jsx72(
|
|
21755
21955
|
"span",
|
|
21756
21956
|
{
|
|
21757
21957
|
"data-composer-capability-key": part.key,
|
|
@@ -21759,7 +21959,7 @@ function ComposerCapabilityToken({
|
|
|
21759
21959
|
"data-capability-id": part.capability.id,
|
|
21760
21960
|
contentEditable: false,
|
|
21761
21961
|
style: color ? { color } : void 0,
|
|
21762
|
-
children: /* @__PURE__ */
|
|
21962
|
+
children: /* @__PURE__ */ jsx72(
|
|
21763
21963
|
ComposerCapabilityChip,
|
|
21764
21964
|
{
|
|
21765
21965
|
option: part.capability,
|
|
@@ -22151,12 +22351,12 @@ import {
|
|
|
22151
22351
|
ExternalLink,
|
|
22152
22352
|
FileOutput,
|
|
22153
22353
|
ListChecks as ListChecks3,
|
|
22154
|
-
Loader2 as
|
|
22354
|
+
Loader2 as Loader212,
|
|
22155
22355
|
PlayCircle,
|
|
22156
22356
|
RotateCcw,
|
|
22157
22357
|
Target as Target2
|
|
22158
22358
|
} from "lucide-react";
|
|
22159
|
-
import { jsx as
|
|
22359
|
+
import { jsx as jsx73, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
22160
22360
|
var PREVIEW_SIZE = 3;
|
|
22161
22361
|
function TaskSummaryTrigger({
|
|
22162
22362
|
displayMode = "popover",
|
|
@@ -22176,7 +22376,7 @@ function TaskSummaryTrigger({
|
|
|
22176
22376
|
},
|
|
22177
22377
|
[controlledOpen, onOpenChange]
|
|
22178
22378
|
);
|
|
22179
|
-
const triggerButton = /* @__PURE__ */
|
|
22379
|
+
const triggerButton = /* @__PURE__ */ jsx73(
|
|
22180
22380
|
"button",
|
|
22181
22381
|
{
|
|
22182
22382
|
type: "button",
|
|
@@ -22184,28 +22384,28 @@ function TaskSummaryTrigger({
|
|
|
22184
22384
|
"aria-label": t("taskSummary.open"),
|
|
22185
22385
|
"aria-expanded": open,
|
|
22186
22386
|
onClick: displayMode === "docked" ? () => setOpen(!open) : void 0,
|
|
22187
|
-
children: /* @__PURE__ */
|
|
22387
|
+
children: /* @__PURE__ */ jsx73(ListChecks3, { size: 16 })
|
|
22188
22388
|
}
|
|
22189
22389
|
);
|
|
22190
22390
|
if (displayMode === "docked") {
|
|
22191
|
-
return /* @__PURE__ */
|
|
22192
|
-
/* @__PURE__ */
|
|
22193
|
-
/* @__PURE__ */
|
|
22391
|
+
return /* @__PURE__ */ jsxs54(Tooltip, { children: [
|
|
22392
|
+
/* @__PURE__ */ jsx73(TooltipTrigger, { asChild: true, children: triggerButton }),
|
|
22393
|
+
/* @__PURE__ */ jsx73(TooltipContent, { side: "bottom", children: t("taskSummary.open") })
|
|
22194
22394
|
] });
|
|
22195
22395
|
}
|
|
22196
|
-
return /* @__PURE__ */
|
|
22197
|
-
/* @__PURE__ */
|
|
22198
|
-
/* @__PURE__ */
|
|
22199
|
-
/* @__PURE__ */
|
|
22396
|
+
return /* @__PURE__ */ jsxs54(Popover, { open, onOpenChange: setOpen, children: [
|
|
22397
|
+
/* @__PURE__ */ jsxs54(Tooltip, { children: [
|
|
22398
|
+
/* @__PURE__ */ jsx73(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx73(PopoverTrigger, { asChild: true, children: triggerButton }) }),
|
|
22399
|
+
/* @__PURE__ */ jsx73(TooltipContent, { side: "bottom", children: t("taskSummary.open") })
|
|
22200
22400
|
] }),
|
|
22201
|
-
/* @__PURE__ */
|
|
22401
|
+
/* @__PURE__ */ jsx73(
|
|
22202
22402
|
PopoverContent,
|
|
22203
22403
|
{
|
|
22204
22404
|
align: "end",
|
|
22205
22405
|
sideOffset: 8,
|
|
22206
22406
|
className: "w-[min(20rem,calc(100vw-2rem))] max-h-[min(44rem,calc(100vh-5rem))] overflow-y-auto rounded-2xl border-border/70 bg-popover p-0 shadow-lg",
|
|
22207
22407
|
"aria-label": t("taskSummary.title"),
|
|
22208
|
-
children: /* @__PURE__ */
|
|
22408
|
+
children: /* @__PURE__ */ jsx73(TaskSummaryContent, { ...props })
|
|
22209
22409
|
}
|
|
22210
22410
|
)
|
|
22211
22411
|
] });
|
|
@@ -22215,7 +22415,7 @@ function TaskSummaryPanel({
|
|
|
22215
22415
|
...props
|
|
22216
22416
|
}) {
|
|
22217
22417
|
const { t } = useChatkitTranslation();
|
|
22218
|
-
return /* @__PURE__ */
|
|
22418
|
+
return /* @__PURE__ */ jsx73(
|
|
22219
22419
|
"aside",
|
|
22220
22420
|
{
|
|
22221
22421
|
"data-slot": "task-summary-panel",
|
|
@@ -22224,7 +22424,7 @@ function TaskSummaryPanel({
|
|
|
22224
22424
|
"h-fit max-h-full overflow-y-auto rounded-2xl border border-border/70 bg-popover text-popover-foreground shadow-lg",
|
|
22225
22425
|
className
|
|
22226
22426
|
),
|
|
22227
|
-
children: /* @__PURE__ */
|
|
22427
|
+
children: /* @__PURE__ */ jsx73(TaskSummaryContent, { ...props })
|
|
22228
22428
|
}
|
|
22229
22429
|
);
|
|
22230
22430
|
}
|
|
@@ -22279,7 +22479,7 @@ function TaskSummaryContent({
|
|
|
22279
22479
|
if (total2 <= PREVIEW_SIZE && !expanded[section]) return null;
|
|
22280
22480
|
const loading = loadingSections[section];
|
|
22281
22481
|
const canLoadMore = Boolean(expanded[section]) && loadedSectionCounts[section] < total2;
|
|
22282
|
-
return /* @__PURE__ */
|
|
22482
|
+
return /* @__PURE__ */ jsxs54(
|
|
22283
22483
|
"button",
|
|
22284
22484
|
{
|
|
22285
22485
|
type: "button",
|
|
@@ -22287,8 +22487,8 @@ function TaskSummaryContent({
|
|
|
22287
22487
|
disabled: loading,
|
|
22288
22488
|
onClick: () => canLoadMore ? void onLoadSection(section) : toggleSection(section),
|
|
22289
22489
|
children: [
|
|
22290
|
-
loading && /* @__PURE__ */
|
|
22291
|
-
!loading && /* @__PURE__ */
|
|
22490
|
+
loading && /* @__PURE__ */ jsx73(Loader212, { className: "size-3 animate-spin" }),
|
|
22491
|
+
!loading && /* @__PURE__ */ jsx73(ListChecks3, { className: "size-3.5" }),
|
|
22292
22492
|
canLoadMore ? t("taskSummary.loadMore") : expanded[section] ? t("taskSummary.collapse") : t("taskSummary.viewAll", { count: total2 })
|
|
22293
22493
|
]
|
|
22294
22494
|
}
|
|
@@ -22297,7 +22497,7 @@ function TaskSummaryContent({
|
|
|
22297
22497
|
const localSectionAction = (section, total2) => {
|
|
22298
22498
|
if (total2 <= PREVIEW_SIZE) return null;
|
|
22299
22499
|
const isExpanded = Boolean(expandedLocal[section]);
|
|
22300
|
-
return /* @__PURE__ */
|
|
22500
|
+
return /* @__PURE__ */ jsxs54(
|
|
22301
22501
|
"button",
|
|
22302
22502
|
{
|
|
22303
22503
|
type: "button",
|
|
@@ -22307,83 +22507,83 @@ function TaskSummaryContent({
|
|
|
22307
22507
|
[section]: !isExpanded
|
|
22308
22508
|
})),
|
|
22309
22509
|
children: [
|
|
22310
|
-
/* @__PURE__ */
|
|
22510
|
+
/* @__PURE__ */ jsx73(ListChecks3, { className: "size-3.5" }),
|
|
22311
22511
|
isExpanded ? t("taskSummary.collapse") : t("taskSummary.viewAll", { count: total2 })
|
|
22312
22512
|
]
|
|
22313
22513
|
}
|
|
22314
22514
|
);
|
|
22315
22515
|
};
|
|
22316
|
-
return /* @__PURE__ */
|
|
22317
|
-
Boolean(historyError) && /* @__PURE__ */
|
|
22318
|
-
/* @__PURE__ */
|
|
22319
|
-
/* @__PURE__ */
|
|
22516
|
+
return /* @__PURE__ */ jsxs54("div", { className: "divide-y divide-border/70", children: [
|
|
22517
|
+
Boolean(historyError) && /* @__PURE__ */ jsxs54("div", { className: "m-3 flex items-start justify-between gap-3 rounded-lg border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive", children: [
|
|
22518
|
+
/* @__PURE__ */ jsx73("span", { children: t("taskSummary.historyError") }),
|
|
22519
|
+
/* @__PURE__ */ jsxs54(
|
|
22320
22520
|
"button",
|
|
22321
22521
|
{
|
|
22322
22522
|
type: "button",
|
|
22323
22523
|
className: "inline-flex shrink-0 items-center gap-1 font-medium hover:underline",
|
|
22324
22524
|
onClick: onRetryHistory,
|
|
22325
22525
|
children: [
|
|
22326
|
-
/* @__PURE__ */
|
|
22526
|
+
/* @__PURE__ */ jsx73(RotateCcw, { className: "size-3" }),
|
|
22327
22527
|
t("taskSummary.retry")
|
|
22328
22528
|
]
|
|
22329
22529
|
}
|
|
22330
22530
|
)
|
|
22331
22531
|
] }),
|
|
22332
|
-
/* @__PURE__ */
|
|
22333
|
-
summary.outputs.length === 0 ? /* @__PURE__ */
|
|
22532
|
+
/* @__PURE__ */ jsxs54(SummarySection, { title: t("taskSummary.sections.outputs"), children: [
|
|
22533
|
+
summary.outputs.length === 0 ? /* @__PURE__ */ jsx73(SummaryPrompt, { onClick: onFocusComposer, children: t("taskSummary.createOutput") }) : sectionItems("outputs", summary.outputs).map((item) => /* @__PURE__ */ jsx73(
|
|
22334
22534
|
SummaryButton,
|
|
22335
22535
|
{
|
|
22336
22536
|
title: item.title,
|
|
22337
22537
|
metadata: localizedStatus(item.status),
|
|
22338
22538
|
description: item.description,
|
|
22339
|
-
leading: /* @__PURE__ */
|
|
22340
|
-
trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */
|
|
22539
|
+
leading: /* @__PURE__ */ jsx73(FileOutput, { className: "size-4" }),
|
|
22540
|
+
trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ jsx73(ExternalLink, { className: "size-3.5" }) : void 0,
|
|
22341
22541
|
onClick: () => openSummaryItem(item.resource, item.messageId, item.title)
|
|
22342
22542
|
},
|
|
22343
22543
|
item.id
|
|
22344
22544
|
)),
|
|
22345
22545
|
sectionAction("outputs", summary.totals.outputs)
|
|
22346
22546
|
] }),
|
|
22347
|
-
/* @__PURE__ */
|
|
22348
|
-
sectionItems("sources", summary.sources).map((item) => /* @__PURE__ */
|
|
22547
|
+
/* @__PURE__ */ jsxs54(SummarySection, { title: t("taskSummary.sections.sources"), children: [
|
|
22548
|
+
sectionItems("sources", summary.sources).map((item) => /* @__PURE__ */ jsx73(
|
|
22349
22549
|
SummaryButton,
|
|
22350
22550
|
{
|
|
22351
22551
|
title: item.title,
|
|
22352
22552
|
description: item.description,
|
|
22353
|
-
leading: /* @__PURE__ */
|
|
22354
|
-
trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */
|
|
22553
|
+
leading: /* @__PURE__ */ jsx73(BookOpen3, { className: "size-4" }),
|
|
22554
|
+
trailing: item.resource && item.resource.type !== "message" ? /* @__PURE__ */ jsx73(ExternalLink, { className: "size-3.5" }) : void 0,
|
|
22355
22555
|
onClick: () => openSummaryItem(item.resource, item.messageId, item.title)
|
|
22356
22556
|
},
|
|
22357
22557
|
item.id
|
|
22358
22558
|
)),
|
|
22359
22559
|
sectionAction("sources", summary.totals.sources)
|
|
22360
22560
|
] }),
|
|
22361
|
-
hasTask && /* @__PURE__ */
|
|
22362
|
-
summary.goal && /* @__PURE__ */
|
|
22561
|
+
hasTask && /* @__PURE__ */ jsxs54(SummarySection, { title: t("taskSummary.sections.task"), children: [
|
|
22562
|
+
summary.goal && /* @__PURE__ */ jsx73(
|
|
22363
22563
|
SummaryButton,
|
|
22364
22564
|
{
|
|
22365
22565
|
title: summary.goal.objective,
|
|
22366
22566
|
metadata: localizedStatus(summary.goal.status),
|
|
22367
|
-
leading: /* @__PURE__ */
|
|
22567
|
+
leading: /* @__PURE__ */ jsx73(Target2, { className: "size-4" }),
|
|
22368
22568
|
onClick: onFocusComposer
|
|
22369
22569
|
}
|
|
22370
22570
|
),
|
|
22371
|
-
summary.plan && /* @__PURE__ */
|
|
22571
|
+
summary.plan && /* @__PURE__ */ jsx73(
|
|
22372
22572
|
SummaryButton,
|
|
22373
22573
|
{
|
|
22374
22574
|
title: summary.plan.title,
|
|
22375
22575
|
description: summary.plan.excerpt,
|
|
22376
|
-
leading: /* @__PURE__ */
|
|
22576
|
+
leading: /* @__PURE__ */ jsx73(ListChecks3, { className: "size-4" }),
|
|
22377
22577
|
onClick: () => summary.plan?.messageId ? onNavigateMessage(summary.plan.messageId) : onFocusComposer()
|
|
22378
22578
|
}
|
|
22379
22579
|
),
|
|
22380
22580
|
localSectionItems("todos", summary.todos?.items ?? []).map(
|
|
22381
|
-
(todo) => /* @__PURE__ */
|
|
22581
|
+
(todo) => /* @__PURE__ */ jsx73(
|
|
22382
22582
|
SummaryButton,
|
|
22383
22583
|
{
|
|
22384
22584
|
title: todo.content,
|
|
22385
22585
|
metadata: localizedStatus(todo.status),
|
|
22386
|
-
leading: todo.status === "completed" ? /* @__PURE__ */
|
|
22586
|
+
leading: todo.status === "completed" ? /* @__PURE__ */ jsx73(CheckCircle25, { className: "size-4 text-muted-foreground" }) : /* @__PURE__ */ jsx73(CircleEllipsis, { className: "size-4 text-muted-foreground" }),
|
|
22387
22587
|
onClick: () => summary.todos?.messageId ? onNavigateMessage(summary.todos.messageId) : onFocusComposer()
|
|
22388
22588
|
},
|
|
22389
22589
|
todo.id
|
|
@@ -22391,23 +22591,23 @@ function TaskSummaryContent({
|
|
|
22391
22591
|
),
|
|
22392
22592
|
localSectionAction("todos", summary.todos?.items.length ?? 0)
|
|
22393
22593
|
] }),
|
|
22394
|
-
summary.running.length > 0 && /* @__PURE__ */
|
|
22395
|
-
localSectionItems("running", summary.running).map((item) => /* @__PURE__ */
|
|
22594
|
+
summary.running.length > 0 && /* @__PURE__ */ jsxs54(SummarySection, { title: t("taskSummary.sections.running"), children: [
|
|
22595
|
+
localSectionItems("running", summary.running).map((item) => /* @__PURE__ */ jsx73(
|
|
22396
22596
|
SummaryButton,
|
|
22397
22597
|
{
|
|
22398
22598
|
title: item.title,
|
|
22399
22599
|
metadata: localizedStatus(item.status),
|
|
22400
22600
|
description: item.description,
|
|
22401
|
-
leading: /* @__PURE__ */
|
|
22402
|
-
trailing: item.resource ? /* @__PURE__ */
|
|
22601
|
+
leading: /* @__PURE__ */ jsx73(PlayCircle, { className: "size-4" }),
|
|
22602
|
+
trailing: item.resource ? /* @__PURE__ */ jsx73(ExternalLink, { className: "size-3.5" }) : void 0,
|
|
22403
22603
|
onClick: () => item.resource && onOpenResource(item.resource, void 0, item.title)
|
|
22404
22604
|
},
|
|
22405
22605
|
item.id
|
|
22406
22606
|
)),
|
|
22407
22607
|
localSectionAction("running", summary.running.length)
|
|
22408
22608
|
] }),
|
|
22409
|
-
summary.agents.length > 0 && /* @__PURE__ */
|
|
22410
|
-
sectionItems("agents", summary.agents).map((item) => /* @__PURE__ */
|
|
22609
|
+
summary.agents.length > 0 && /* @__PURE__ */ jsxs54(SummarySection, { title: t("taskSummary.sections.agents"), children: [
|
|
22610
|
+
sectionItems("agents", summary.agents).map((item) => /* @__PURE__ */ jsx73(
|
|
22411
22611
|
SummaryButton,
|
|
22412
22612
|
{
|
|
22413
22613
|
title: item.title,
|
|
@@ -22416,20 +22616,20 @@ function TaskSummaryContent({
|
|
|
22416
22616
|
formatElapsed(item.elapsedTime)
|
|
22417
22617
|
].filter(Boolean).join(" \xB7 "),
|
|
22418
22618
|
description: item.error,
|
|
22419
|
-
leading: /* @__PURE__ */
|
|
22619
|
+
leading: /* @__PURE__ */ jsx73(Bot5, { className: "size-4" }),
|
|
22420
22620
|
onClick: () => item.messageId ? onNavigateMessage(item.messageId) : onFocusComposer()
|
|
22421
22621
|
},
|
|
22422
22622
|
item.id
|
|
22423
22623
|
)),
|
|
22424
22624
|
sectionAction("agents", summary.totals.agents)
|
|
22425
22625
|
] }),
|
|
22426
|
-
summary.pending.length > 0 && /* @__PURE__ */
|
|
22427
|
-
sectionItems("pending", summary.pending).map((item) => /* @__PURE__ */
|
|
22626
|
+
summary.pending.length > 0 && /* @__PURE__ */ jsxs54(SummarySection, { title: t("taskSummary.sections.pending"), children: [
|
|
22627
|
+
sectionItems("pending", summary.pending).map((item) => /* @__PURE__ */ jsx73(
|
|
22428
22628
|
SummaryButton,
|
|
22429
22629
|
{
|
|
22430
22630
|
title: item.title,
|
|
22431
22631
|
description: item.description,
|
|
22432
|
-
leading: /* @__PURE__ */
|
|
22632
|
+
leading: /* @__PURE__ */ jsx73(CircleEllipsis, { className: "size-4" }),
|
|
22433
22633
|
onClick: () => item.messageId ? onNavigateMessage(item.messageId) : onFocusComposer()
|
|
22434
22634
|
},
|
|
22435
22635
|
item.id
|
|
@@ -22442,16 +22642,16 @@ function SummarySection({
|
|
|
22442
22642
|
title,
|
|
22443
22643
|
children
|
|
22444
22644
|
}) {
|
|
22445
|
-
return /* @__PURE__ */
|
|
22446
|
-
/* @__PURE__ */
|
|
22447
|
-
/* @__PURE__ */
|
|
22645
|
+
return /* @__PURE__ */ jsxs54("section", { "aria-label": title, className: "px-4 py-3", children: [
|
|
22646
|
+
/* @__PURE__ */ jsx73("div", { className: "flex min-h-7 items-center justify-between gap-3", children: /* @__PURE__ */ jsx73("h3", { className: "text-sm font-medium text-muted-foreground", children: title }) }),
|
|
22647
|
+
/* @__PURE__ */ jsx73("div", { className: "mt-1 space-y-0.5", children })
|
|
22448
22648
|
] });
|
|
22449
22649
|
}
|
|
22450
22650
|
function SummaryPrompt({
|
|
22451
22651
|
children,
|
|
22452
22652
|
onClick
|
|
22453
22653
|
}) {
|
|
22454
|
-
return /* @__PURE__ */
|
|
22654
|
+
return /* @__PURE__ */ jsx73(
|
|
22455
22655
|
"button",
|
|
22456
22656
|
{
|
|
22457
22657
|
type: "button",
|
|
@@ -22470,7 +22670,7 @@ function SummaryButton({
|
|
|
22470
22670
|
onClick
|
|
22471
22671
|
}) {
|
|
22472
22672
|
const tooltipText = [title, metadata, description].filter(Boolean);
|
|
22473
|
-
return /* @__PURE__ */
|
|
22673
|
+
return /* @__PURE__ */ jsxs54(
|
|
22474
22674
|
"button",
|
|
22475
22675
|
{
|
|
22476
22676
|
type: "button",
|
|
@@ -22484,13 +22684,13 @@ function SummaryButton({
|
|
|
22484
22684
|
!onClick && "cursor-default"
|
|
22485
22685
|
),
|
|
22486
22686
|
children: [
|
|
22487
|
-
leading && /* @__PURE__ */
|
|
22488
|
-
/* @__PURE__ */
|
|
22489
|
-
/* @__PURE__ */
|
|
22490
|
-
metadata && /* @__PURE__ */
|
|
22491
|
-
description && /* @__PURE__ */
|
|
22687
|
+
leading && /* @__PURE__ */ jsx73("span", { className: "mt-0.5 shrink-0 text-muted-foreground", children: leading }),
|
|
22688
|
+
/* @__PURE__ */ jsxs54("span", { className: "min-w-0 flex-1", children: [
|
|
22689
|
+
/* @__PURE__ */ jsx73("span", { className: "block truncate text-sm font-medium leading-5 text-foreground", children: title }),
|
|
22690
|
+
metadata && /* @__PURE__ */ jsx73("span", { className: "mt-0.5 block truncate text-xs text-muted-foreground", children: metadata }),
|
|
22691
|
+
description && /* @__PURE__ */ jsx73("span", { className: "mt-0.5 block line-clamp-2 text-xs text-muted-foreground", children: description })
|
|
22492
22692
|
] }),
|
|
22493
|
-
trailing && /* @__PURE__ */
|
|
22693
|
+
trailing && /* @__PURE__ */ jsx73("span", { className: "mt-0.5 text-muted-foreground", children: trailing })
|
|
22494
22694
|
]
|
|
22495
22695
|
}
|
|
22496
22696
|
);
|
|
@@ -22502,7 +22702,7 @@ function formatElapsed(value) {
|
|
|
22502
22702
|
}
|
|
22503
22703
|
|
|
22504
22704
|
// src/components/chat.tsx
|
|
22505
|
-
import { Fragment as Fragment13, jsx as
|
|
22705
|
+
import { Fragment as Fragment13, jsx as jsx74, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
22506
22706
|
var defaultApiUrl2 = import.meta.env.VITE_XPERTAI_API_URL;
|
|
22507
22707
|
var LONG_TEXT_REFERENCE_THRESHOLD = 5e3;
|
|
22508
22708
|
var GOAL_RUN_INPUT = "Continue working toward the active goal.";
|
|
@@ -22639,8 +22839,8 @@ function ReferenceChip({
|
|
|
22639
22839
|
}) {
|
|
22640
22840
|
const metaLine = getReferenceMetaLine(reference);
|
|
22641
22841
|
const isComposer = variant === "composer";
|
|
22642
|
-
const Icon = reference.type === "quote" ? Quote : reference.type === "image" ? ImageIcon2 :
|
|
22643
|
-
return /* @__PURE__ */
|
|
22842
|
+
const Icon = reference.type === "quote" ? Quote : reference.type === "image" ? ImageIcon2 : FileText6;
|
|
22843
|
+
return /* @__PURE__ */ jsxs55(
|
|
22644
22844
|
"div",
|
|
22645
22845
|
{
|
|
22646
22846
|
className: cn(
|
|
@@ -22649,7 +22849,7 @@ function ReferenceChip({
|
|
|
22649
22849
|
),
|
|
22650
22850
|
title: getReferenceTitle(reference),
|
|
22651
22851
|
children: [
|
|
22652
|
-
/* @__PURE__ */
|
|
22852
|
+
/* @__PURE__ */ jsx74(
|
|
22653
22853
|
Icon,
|
|
22654
22854
|
{
|
|
22655
22855
|
size: isComposer ? 14 : 12,
|
|
@@ -22659,8 +22859,8 @@ function ReferenceChip({
|
|
|
22659
22859
|
)
|
|
22660
22860
|
}
|
|
22661
22861
|
),
|
|
22662
|
-
/* @__PURE__ */
|
|
22663
|
-
/* @__PURE__ */
|
|
22862
|
+
/* @__PURE__ */ jsxs55("div", { className: "min-w-0 flex-1", children: [
|
|
22863
|
+
/* @__PURE__ */ jsx74(
|
|
22664
22864
|
"div",
|
|
22665
22865
|
{
|
|
22666
22866
|
className: cn(
|
|
@@ -22670,7 +22870,7 @@ function ReferenceChip({
|
|
|
22670
22870
|
children: getReferenceLabel(reference)
|
|
22671
22871
|
}
|
|
22672
22872
|
),
|
|
22673
|
-
metaLine && /* @__PURE__ */
|
|
22873
|
+
metaLine && /* @__PURE__ */ jsx74(
|
|
22674
22874
|
"div",
|
|
22675
22875
|
{
|
|
22676
22876
|
className: cn(
|
|
@@ -22681,7 +22881,7 @@ function ReferenceChip({
|
|
|
22681
22881
|
}
|
|
22682
22882
|
)
|
|
22683
22883
|
] }),
|
|
22684
|
-
onRemove && removeLabel && /* @__PURE__ */
|
|
22884
|
+
onRemove && removeLabel && /* @__PURE__ */ jsx74(
|
|
22685
22885
|
"button",
|
|
22686
22886
|
{
|
|
22687
22887
|
type: "button",
|
|
@@ -22692,7 +22892,7 @@ function ReferenceChip({
|
|
|
22692
22892
|
),
|
|
22693
22893
|
title: removeLabel,
|
|
22694
22894
|
"aria-label": removeLabel,
|
|
22695
|
-
children: /* @__PURE__ */
|
|
22895
|
+
children: /* @__PURE__ */ jsx74(X9, { size: 12 })
|
|
22696
22896
|
}
|
|
22697
22897
|
)
|
|
22698
22898
|
]
|
|
@@ -22706,19 +22906,19 @@ function WorkspaceFileChip({
|
|
|
22706
22906
|
}) {
|
|
22707
22907
|
const label = file.originalName ?? file.workspacePath ?? file.id ?? file.fileAssetId ?? "File";
|
|
22708
22908
|
const meta = file.workspacePath ?? file.mimeType;
|
|
22709
|
-
return /* @__PURE__ */
|
|
22909
|
+
return /* @__PURE__ */ jsxs55(
|
|
22710
22910
|
"div",
|
|
22711
22911
|
{
|
|
22712
22912
|
"data-slot": "workspace-file-reference",
|
|
22713
22913
|
className: "flex min-w-0 items-start gap-2 rounded-md bg-muted px-2 py-1 text-foreground",
|
|
22714
22914
|
title: label,
|
|
22715
22915
|
children: [
|
|
22716
|
-
/* @__PURE__ */
|
|
22717
|
-
/* @__PURE__ */
|
|
22718
|
-
/* @__PURE__ */
|
|
22719
|
-
meta ? /* @__PURE__ */
|
|
22916
|
+
/* @__PURE__ */ jsx74(FileText6, { className: "mt-0.5 size-3.5 shrink-0 text-muted-foreground" }),
|
|
22917
|
+
/* @__PURE__ */ jsxs55("div", { className: "min-w-0 flex-1", children: [
|
|
22918
|
+
/* @__PURE__ */ jsx74("div", { className: "truncate text-sm", children: label }),
|
|
22919
|
+
meta ? /* @__PURE__ */ jsx74("div", { className: "truncate text-xs text-muted-foreground", children: meta }) : null
|
|
22720
22920
|
] }),
|
|
22721
|
-
/* @__PURE__ */
|
|
22921
|
+
/* @__PURE__ */ jsx74(
|
|
22722
22922
|
"button",
|
|
22723
22923
|
{
|
|
22724
22924
|
type: "button",
|
|
@@ -22726,7 +22926,7 @@ function WorkspaceFileChip({
|
|
|
22726
22926
|
className: "ml-1 rounded-full p-0.5 hover:bg-muted-foreground/20",
|
|
22727
22927
|
title: removeLabel,
|
|
22728
22928
|
"aria-label": removeLabel,
|
|
22729
|
-
children: /* @__PURE__ */
|
|
22929
|
+
children: /* @__PURE__ */ jsx74(X9, { size: 12 })
|
|
22730
22930
|
}
|
|
22731
22931
|
)
|
|
22732
22932
|
]
|
|
@@ -22759,6 +22959,38 @@ function Chat({
|
|
|
22759
22959
|
const messageNavigationEnabled = options?.messageNavigation?.enabled !== false;
|
|
22760
22960
|
const { setStream } = useStreamManager();
|
|
22761
22961
|
const stream = useStreamContext();
|
|
22962
|
+
const branchState = useThreadBranches(
|
|
22963
|
+
stream.client,
|
|
22964
|
+
stream.conversationId,
|
|
22965
|
+
stream.threadId,
|
|
22966
|
+
Boolean(stream.isReady && stream.client?.conversations?.listThreads),
|
|
22967
|
+
stream.isLoading
|
|
22968
|
+
);
|
|
22969
|
+
const [editingMessageId, setEditingMessageId] = React66.useState(
|
|
22970
|
+
null
|
|
22971
|
+
);
|
|
22972
|
+
const editRequestRef = React66.useRef(null);
|
|
22973
|
+
const [isChangingBranch, setIsChangingBranch] = React66.useState(false);
|
|
22974
|
+
const [runControlRequest, setRunControlRequest] = React66.useState(null);
|
|
22975
|
+
const runControlRequestRef = React66.useRef(null);
|
|
22976
|
+
const [runControlError, setRunControlError] = React66.useState(null);
|
|
22977
|
+
const currentRunControl = branchState.current?.runControl;
|
|
22978
|
+
const pauseRunId = stream.activeRunId ?? currentRunControl?.executionId ?? stream.displayPause?.executionId ?? null;
|
|
22979
|
+
const canPauseRun = Boolean(
|
|
22980
|
+
stream.threadId && pauseRunId && (stream.isLoading || currentRunControl?.state === "running")
|
|
22981
|
+
);
|
|
22982
|
+
const isRunPausing = runControlRequest?.threadId === stream.threadId && runControlRequest.action === "pause" || branchState.current?.status === "pausing";
|
|
22983
|
+
const isRunPaused = branchState.current?.status === "paused";
|
|
22984
|
+
const canRevealPausedDisplay = Boolean(stream.displayPause) && ["idle", "error", "interrupted"].includes(branchState.current?.status ?? "");
|
|
22985
|
+
const isPauseActive = isRunPausing || isRunPaused || stream.isDisplayPaused;
|
|
22986
|
+
const isResumingRun = runControlRequest?.threadId === stream.threadId && runControlRequest.action === "resume";
|
|
22987
|
+
const isVisibleStreaming = stream.isLoading && !stream.isDisplayPaused;
|
|
22988
|
+
const activeBranchRef = React66.useRef(stream.threadId);
|
|
22989
|
+
activeBranchRef.current = stream.threadId;
|
|
22990
|
+
React66.useEffect(() => {
|
|
22991
|
+
setEditingMessageId(null);
|
|
22992
|
+
editRequestRef.current = null;
|
|
22993
|
+
}, [stream.threadId]);
|
|
22762
22994
|
const workbench = useWorkbench();
|
|
22763
22995
|
const xpertPlatformClient = stream.client;
|
|
22764
22996
|
const { theme } = useTheme();
|
|
@@ -23739,8 +23971,11 @@ function Chat({
|
|
|
23739
23971
|
}, [stream.isLoading, messages, scrollToBottom]);
|
|
23740
23972
|
const showMissingConfig = !isClientSecretInitializing && missingConfig;
|
|
23741
23973
|
const hasUploadingFiles = attachmentState.hasUploadingFiles;
|
|
23742
|
-
const isSubmissionBlocked = hasPendingInteractiveRequest || missingConfig || isHistoryUnavailable || hasUploadingFiles || isUploadingReferenceImages;
|
|
23743
|
-
const
|
|
23974
|
+
const isSubmissionBlocked = isChangingBranch || isResumingRun || isRunPausing || hasPendingInteractiveRequest || missingConfig || isHistoryUnavailable || hasUploadingFiles || isUploadingReferenceImages;
|
|
23975
|
+
const hasComposerInput = Boolean(
|
|
23976
|
+
trimmedDraft || hasReferences || attachmentState.uploadedFiles.length
|
|
23977
|
+
);
|
|
23978
|
+
const isSendDisabled = !hasComposerInput || isSubmissionBlocked;
|
|
23744
23979
|
const isPromptEditDisabled = hasPendingInteractiveRequest || missingConfig || isHistoryLoading;
|
|
23745
23980
|
const canUploadAttachments = composer?.attachments?.enabled === true && !isPromptEditDisabled;
|
|
23746
23981
|
const queueAttachmentFiles = React66.useCallback((files) => {
|
|
@@ -23960,7 +24195,7 @@ function Chat({
|
|
|
23960
24195
|
);
|
|
23961
24196
|
const filesToSend = mergedFiles.length > 0 ? mergedFiles : void 0;
|
|
23962
24197
|
const referencesToSend = references.length > 0 ? [...references] : void 0;
|
|
23963
|
-
const nextFollowUpMode = stream.isLoading ? "queue" : void 0;
|
|
24198
|
+
const nextFollowUpMode = stream.isLoading && !stream.isDisplayPaused && !isRunPaused ? "queue" : void 0;
|
|
23964
24199
|
const effectivePlanMode = submitOptions.planMode ?? planModeEnabled;
|
|
23965
24200
|
const humanInput = buildHumanMessageInputPayload({
|
|
23966
24201
|
content: contentToSubmit,
|
|
@@ -24057,6 +24292,7 @@ function Chat({
|
|
|
24057
24292
|
};
|
|
24058
24293
|
const submission = stream.submit(
|
|
24059
24294
|
{
|
|
24295
|
+
id: newMessage.id,
|
|
24060
24296
|
input: inputPayload,
|
|
24061
24297
|
...requestOptions.state ? { state: requestOptions.state } : {}
|
|
24062
24298
|
},
|
|
@@ -24089,6 +24325,7 @@ function Chat({
|
|
|
24089
24325
|
getRuntimeCapabilitiesForSubmit,
|
|
24090
24326
|
promptWorkflow,
|
|
24091
24327
|
isSubmissionBlocked,
|
|
24328
|
+
isRunPaused,
|
|
24092
24329
|
options?.request,
|
|
24093
24330
|
persistSessionRuntimeCapabilities,
|
|
24094
24331
|
references,
|
|
@@ -24842,6 +25079,136 @@ function Chat({
|
|
|
24842
25079
|
);
|
|
24843
25080
|
});
|
|
24844
25081
|
};
|
|
25082
|
+
const handleComposerRunControl = async (action) => {
|
|
25083
|
+
const sourceThreadId = stream.threadId;
|
|
25084
|
+
if (isChangingBranch || isRunPausing || isResumingRun) return;
|
|
25085
|
+
if (action === "resume") {
|
|
25086
|
+
if (!sourceThreadId || !canRevealPausedDisplay && (!isRunPaused || !currentRunControl?.pauseId)) return;
|
|
25087
|
+
} else {
|
|
25088
|
+
if (isRunPaused) return;
|
|
25089
|
+
if (!sourceThreadId || !pauseRunId) return;
|
|
25090
|
+
}
|
|
25091
|
+
if (!sourceThreadId) return;
|
|
25092
|
+
if (runControlRequestRef.current?.threadId === sourceThreadId) return;
|
|
25093
|
+
const runId = pauseRunId;
|
|
25094
|
+
if (!runId) return;
|
|
25095
|
+
const request = {
|
|
25096
|
+
action,
|
|
25097
|
+
threadId: sourceThreadId,
|
|
25098
|
+
runId
|
|
25099
|
+
};
|
|
25100
|
+
runControlRequestRef.current = request;
|
|
25101
|
+
setRunControlRequest(request);
|
|
25102
|
+
setRunControlError(null);
|
|
25103
|
+
try {
|
|
25104
|
+
if (action === "resume" && canRevealPausedDisplay) {
|
|
25105
|
+
await stream.resumeDisplay();
|
|
25106
|
+
} else if (action === "resume" && currentRunControl?.pauseId) {
|
|
25107
|
+
await stream.resumeRun(request.runId, currentRunControl.pauseId);
|
|
25108
|
+
} else {
|
|
25109
|
+
await stream.pauseRun(request.runId);
|
|
25110
|
+
}
|
|
25111
|
+
if (activeBranchRef.current === sourceThreadId) {
|
|
25112
|
+
await branchState.refresh();
|
|
25113
|
+
}
|
|
25114
|
+
} catch (error) {
|
|
25115
|
+
if (activeBranchRef.current === sourceThreadId && runControlRequestRef.current === request) {
|
|
25116
|
+
setRunControlError({
|
|
25117
|
+
threadId: sourceThreadId,
|
|
25118
|
+
message: error instanceof Error ? error.message : String(error)
|
|
25119
|
+
});
|
|
25120
|
+
}
|
|
25121
|
+
} finally {
|
|
25122
|
+
if (runControlRequestRef.current === request) {
|
|
25123
|
+
runControlRequestRef.current = null;
|
|
25124
|
+
setRunControlRequest(null);
|
|
25125
|
+
}
|
|
25126
|
+
}
|
|
25127
|
+
};
|
|
25128
|
+
const saveEditedMessage = async (message, text) => {
|
|
25129
|
+
const sourceThreadId = stream.threadId;
|
|
25130
|
+
if (!sourceThreadId || !message.id) return;
|
|
25131
|
+
const request = editRequestRef.current?.messageId === message.id ? editRequestRef.current : { messageId: message.id, requestId: createMessageId() };
|
|
25132
|
+
editRequestRef.current = request;
|
|
25133
|
+
setIsChangingBranch(true);
|
|
25134
|
+
try {
|
|
25135
|
+
const branch = await stream.client.threads.copy(sourceThreadId, {
|
|
25136
|
+
beforeMessageId: message.id,
|
|
25137
|
+
requestId: request.requestId
|
|
25138
|
+
});
|
|
25139
|
+
if (activeBranchRef.current !== sourceThreadId) return;
|
|
25140
|
+
const source = await stream.client.threads.get(sourceThreadId);
|
|
25141
|
+
if (activeBranchRef.current !== sourceThreadId) return;
|
|
25142
|
+
if (source.status === "busy") {
|
|
25143
|
+
if (!source.runControl?.executionId) {
|
|
25144
|
+
throw new Error(t("threadControl.sourcePauseUnavailable"));
|
|
25145
|
+
}
|
|
25146
|
+
try {
|
|
25147
|
+
await stream.pauseRun(source.runControl.executionId);
|
|
25148
|
+
} catch (error) {
|
|
25149
|
+
const latest = await stream.client.threads.get(sourceThreadId).catch(() => null);
|
|
25150
|
+
if (!latest || latest.status === "busy") throw error;
|
|
25151
|
+
}
|
|
25152
|
+
}
|
|
25153
|
+
if (activeBranchRef.current !== sourceThreadId) return;
|
|
25154
|
+
activeBranchRef.current = branch.thread_id;
|
|
25155
|
+
stream.reset(branch.thread_id, []);
|
|
25156
|
+
await stream.loadThread(branch.thread_id);
|
|
25157
|
+
if (activeBranchRef.current !== branch.thread_id) return;
|
|
25158
|
+
const humanInput = buildHumanMessageInputPayload({
|
|
25159
|
+
content: text,
|
|
25160
|
+
references: message.references,
|
|
25161
|
+
referenceComposition: "compose"
|
|
25162
|
+
});
|
|
25163
|
+
if (!humanInput) return;
|
|
25164
|
+
const files = mergeSubmittedFiles(
|
|
25165
|
+
message.fileAssets ?? [],
|
|
25166
|
+
message.attachments ?? []
|
|
25167
|
+
);
|
|
25168
|
+
const edited = {
|
|
25169
|
+
...message,
|
|
25170
|
+
type: "human",
|
|
25171
|
+
id: createMessageId(),
|
|
25172
|
+
content: text,
|
|
25173
|
+
submittedInput: humanInput.input,
|
|
25174
|
+
referenceComposition: humanInput.referenceComposition
|
|
25175
|
+
};
|
|
25176
|
+
const input = {
|
|
25177
|
+
...humanInput,
|
|
25178
|
+
...files.length ? { files } : {},
|
|
25179
|
+
...message.runtimeCapabilities ? { runtimeCapabilities: message.runtimeCapabilities } : {},
|
|
25180
|
+
...message.model ? { model: message.model } : {}
|
|
25181
|
+
};
|
|
25182
|
+
const requestOptions = buildInjectedRequestOptions({
|
|
25183
|
+
defaults: options?.request,
|
|
25184
|
+
humanInput: input
|
|
25185
|
+
});
|
|
25186
|
+
setEditingMessageId(null);
|
|
25187
|
+
setIsChangingBranch(false);
|
|
25188
|
+
const submission = stream.submit(
|
|
25189
|
+
{
|
|
25190
|
+
id: edited.id,
|
|
25191
|
+
input,
|
|
25192
|
+
...requestOptions.state ? { state: requestOptions.state } : {}
|
|
25193
|
+
},
|
|
25194
|
+
{
|
|
25195
|
+
threadId: branch.thread_id,
|
|
25196
|
+
joinExistingThread: true,
|
|
25197
|
+
...requestOptions.context ? { context: requestOptions.context } : {},
|
|
25198
|
+
...requestOptions.config ? { config: requestOptions.config } : {},
|
|
25199
|
+
optimisticValues: (previous) => ({
|
|
25200
|
+
...previous,
|
|
25201
|
+
messages: [...previous.messages ?? [], edited]
|
|
25202
|
+
})
|
|
25203
|
+
}
|
|
25204
|
+
);
|
|
25205
|
+
void submission.catch((error) => {
|
|
25206
|
+
setHistoryError(error instanceof Error ? error.message : String(error));
|
|
25207
|
+
});
|
|
25208
|
+
} finally {
|
|
25209
|
+
setIsChangingBranch(false);
|
|
25210
|
+
}
|
|
25211
|
+
};
|
|
24845
25212
|
const handleRetry = (messageIndex) => {
|
|
24846
25213
|
const messagesUpToIndex = messages.slice(0, messageIndex);
|
|
24847
25214
|
const lastHumanMessage = [...messagesUpToIndex].reverse().find((m) => String(m.type) === "human");
|
|
@@ -25007,13 +25374,13 @@ function Chat({
|
|
|
25007
25374
|
onFocusComposer: () => focusComposerAt(),
|
|
25008
25375
|
onOpenResource: openTaskSummaryResource
|
|
25009
25376
|
};
|
|
25010
|
-
return /* @__PURE__ */
|
|
25377
|
+
return /* @__PURE__ */ jsxs55(
|
|
25011
25378
|
"div",
|
|
25012
25379
|
{
|
|
25013
25380
|
className: "relative flex h-full w-full min-w-0 bg-background",
|
|
25014
25381
|
"data-task-summary-layout": taskSummaryDocked ? "docked" : "popover",
|
|
25015
25382
|
children: [
|
|
25016
|
-
/* @__PURE__ */
|
|
25383
|
+
/* @__PURE__ */ jsxs55(
|
|
25017
25384
|
UploadDroppedFiles,
|
|
25018
25385
|
{
|
|
25019
25386
|
ref: viewportRef,
|
|
@@ -25028,7 +25395,7 @@ function Chat({
|
|
|
25028
25395
|
className
|
|
25029
25396
|
),
|
|
25030
25397
|
children: [
|
|
25031
|
-
surface === "main" && options?.header?.enabled !== false && /* @__PURE__ */
|
|
25398
|
+
surface === "main" && options?.header?.enabled !== false && /* @__PURE__ */ jsxs55(
|
|
25032
25399
|
"div",
|
|
25033
25400
|
{
|
|
25034
25401
|
ref: chatColumnRef,
|
|
@@ -25036,9 +25403,9 @@ function Chat({
|
|
|
25036
25403
|
className: "mx-auto flex w-full items-center justify-between border-b p-2 sticky top-0 z-10 bg-background",
|
|
25037
25404
|
style: chatColumnStyle,
|
|
25038
25405
|
children: [
|
|
25039
|
-
/* @__PURE__ */
|
|
25040
|
-
/* @__PURE__ */
|
|
25041
|
-
/* @__PURE__ */
|
|
25406
|
+
/* @__PURE__ */ jsxs55("div", { className: "flex min-w-0 items-center gap-3 overflow-hidden", children: [
|
|
25407
|
+
/* @__PURE__ */ jsxs55("div", { className: "relative shrink-0", children: [
|
|
25408
|
+
/* @__PURE__ */ jsx74(
|
|
25042
25409
|
ChatkitAvatar,
|
|
25043
25410
|
{
|
|
25044
25411
|
avatar: assistantAvatar,
|
|
@@ -25046,10 +25413,10 @@ function Chat({
|
|
|
25046
25413
|
label: assistantTitle
|
|
25047
25414
|
}
|
|
25048
25415
|
),
|
|
25049
|
-
/* @__PURE__ */
|
|
25416
|
+
/* @__PURE__ */ jsx74("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
|
|
25050
25417
|
] }),
|
|
25051
|
-
/* @__PURE__ */
|
|
25052
|
-
/* @__PURE__ */
|
|
25418
|
+
/* @__PURE__ */ jsxs55("div", { className: "min-w-0", children: [
|
|
25419
|
+
/* @__PURE__ */ jsx74(
|
|
25053
25420
|
"h2",
|
|
25054
25421
|
{
|
|
25055
25422
|
className: "text-lg font-semibold truncate",
|
|
@@ -25057,7 +25424,7 @@ function Chat({
|
|
|
25057
25424
|
children: assistantTitle
|
|
25058
25425
|
}
|
|
25059
25426
|
),
|
|
25060
|
-
/* @__PURE__ */
|
|
25427
|
+
/* @__PURE__ */ jsx74(
|
|
25061
25428
|
"p",
|
|
25062
25429
|
{
|
|
25063
25430
|
className: "truncate text-xs text-muted-foreground",
|
|
@@ -25067,8 +25434,8 @@ function Chat({
|
|
|
25067
25434
|
)
|
|
25068
25435
|
] })
|
|
25069
25436
|
] }),
|
|
25070
|
-
/* @__PURE__ */
|
|
25071
|
-
taskSummaryAvailable && /* @__PURE__ */
|
|
25437
|
+
/* @__PURE__ */ jsxs55("div", { className: "flex items-center gap-1", children: [
|
|
25438
|
+
taskSummaryAvailable && /* @__PURE__ */ jsx74(
|
|
25072
25439
|
TaskSummaryTrigger,
|
|
25073
25440
|
{
|
|
25074
25441
|
...taskSummaryProps,
|
|
@@ -25077,9 +25444,9 @@ function Chat({
|
|
|
25077
25444
|
onOpenChange: handleTaskSummaryOpenChange
|
|
25078
25445
|
}
|
|
25079
25446
|
),
|
|
25080
|
-
/* @__PURE__ */
|
|
25081
|
-
canMinimizeToPet && /* @__PURE__ */
|
|
25082
|
-
/* @__PURE__ */
|
|
25447
|
+
/* @__PURE__ */ jsx74(WorkbenchToggleButton, {}),
|
|
25448
|
+
canMinimizeToPet && /* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25449
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx74(
|
|
25083
25450
|
"button",
|
|
25084
25451
|
{
|
|
25085
25452
|
type: "button",
|
|
@@ -25090,13 +25457,13 @@ function Chat({
|
|
|
25090
25457
|
"transition-colors duration-150"
|
|
25091
25458
|
),
|
|
25092
25459
|
"aria-label": t("chat.minimizeToPet"),
|
|
25093
|
-
children: /* @__PURE__ */
|
|
25460
|
+
children: /* @__PURE__ */ jsx74(Minus, { size: 16 })
|
|
25094
25461
|
}
|
|
25095
25462
|
) }) }),
|
|
25096
|
-
/* @__PURE__ */
|
|
25463
|
+
/* @__PURE__ */ jsx74(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
|
|
25097
25464
|
] }),
|
|
25098
|
-
/* @__PURE__ */
|
|
25099
|
-
/* @__PURE__ */
|
|
25465
|
+
/* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25466
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx74(
|
|
25100
25467
|
"button",
|
|
25101
25468
|
{
|
|
25102
25469
|
type: "button",
|
|
@@ -25107,14 +25474,14 @@ function Chat({
|
|
|
25107
25474
|
"transition-colors duration-150"
|
|
25108
25475
|
),
|
|
25109
25476
|
"aria-label": t("settings.open"),
|
|
25110
|
-
children: /* @__PURE__ */
|
|
25477
|
+
children: /* @__PURE__ */ jsx74(Settings2, { size: 16 })
|
|
25111
25478
|
}
|
|
25112
25479
|
) }) }),
|
|
25113
|
-
/* @__PURE__ */
|
|
25480
|
+
/* @__PURE__ */ jsx74(TooltipContent, { side: "bottom", children: t("settings.open") })
|
|
25114
25481
|
] }),
|
|
25115
|
-
history?.enabled !== false && /* @__PURE__ */
|
|
25116
|
-
/* @__PURE__ */
|
|
25117
|
-
/* @__PURE__ */
|
|
25482
|
+
history?.enabled !== false && /* @__PURE__ */ jsxs55(Fragment13, { children: [
|
|
25483
|
+
/* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25484
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx74(
|
|
25118
25485
|
"button",
|
|
25119
25486
|
{
|
|
25120
25487
|
type: "button",
|
|
@@ -25127,12 +25494,12 @@ function Chat({
|
|
|
25127
25494
|
"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
|
|
25128
25495
|
),
|
|
25129
25496
|
"aria-label": t("history.newThread"),
|
|
25130
|
-
children: /* @__PURE__ */
|
|
25497
|
+
children: /* @__PURE__ */ jsx74(Pencil6, { size: 16 })
|
|
25131
25498
|
}
|
|
25132
25499
|
) }) }),
|
|
25133
|
-
/* @__PURE__ */
|
|
25500
|
+
/* @__PURE__ */ jsx74(TooltipContent, { side: "bottom", children: t("history.newThread") })
|
|
25134
25501
|
] }),
|
|
25135
|
-
/* @__PURE__ */
|
|
25502
|
+
/* @__PURE__ */ jsx74(
|
|
25136
25503
|
HistorySidebar,
|
|
25137
25504
|
{
|
|
25138
25505
|
threads,
|
|
@@ -25151,7 +25518,7 @@ function Chat({
|
|
|
25151
25518
|
]
|
|
25152
25519
|
}
|
|
25153
25520
|
),
|
|
25154
|
-
showMessageNavigation && /* @__PURE__ */
|
|
25521
|
+
showMessageNavigation && /* @__PURE__ */ jsx74(
|
|
25155
25522
|
MessageNavigator,
|
|
25156
25523
|
{
|
|
25157
25524
|
items: messageNavigationItems,
|
|
@@ -25162,7 +25529,7 @@ function Chat({
|
|
|
25162
25529
|
tagsOverflowLabel: (count) => t("message.navigation.moreTags", { count })
|
|
25163
25530
|
}
|
|
25164
25531
|
),
|
|
25165
|
-
/* @__PURE__ */
|
|
25532
|
+
/* @__PURE__ */ jsxs55(
|
|
25166
25533
|
"div",
|
|
25167
25534
|
{
|
|
25168
25535
|
"data-slot": "chatkit-chat-content",
|
|
@@ -25172,10 +25539,10 @@ function Chat({
|
|
|
25172
25539
|
),
|
|
25173
25540
|
style: chatColumnStyle,
|
|
25174
25541
|
children: [
|
|
25175
|
-
errorMessage && /* @__PURE__ */
|
|
25176
|
-
historyError && /* @__PURE__ */
|
|
25177
|
-
showMissingConfig && /* @__PURE__ */
|
|
25178
|
-
/* @__PURE__ */
|
|
25542
|
+
errorMessage && /* @__PURE__ */ jsx74("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
|
|
25543
|
+
historyError && /* @__PURE__ */ jsx74("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
|
|
25544
|
+
showMissingConfig && /* @__PURE__ */ jsx74("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
|
|
25545
|
+
/* @__PURE__ */ jsx74(
|
|
25179
25546
|
ThreadHistoryStatus,
|
|
25180
25547
|
{
|
|
25181
25548
|
state: stream.historyLoad,
|
|
@@ -25185,7 +25552,7 @@ function Chat({
|
|
|
25185
25552
|
}
|
|
25186
25553
|
}
|
|
25187
25554
|
),
|
|
25188
|
-
!stream.threadId && messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */
|
|
25555
|
+
!stream.threadId && messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ jsx74(
|
|
25189
25556
|
StartScreen,
|
|
25190
25557
|
{
|
|
25191
25558
|
startScreen,
|
|
@@ -25195,10 +25562,10 @@ function Chat({
|
|
|
25195
25562
|
promptEditDisabled: isPromptEditDisabled,
|
|
25196
25563
|
className: "px-4 pb-4 pt-2"
|
|
25197
25564
|
}
|
|
25198
|
-
) : /* @__PURE__ */
|
|
25199
|
-
canLoadMoreMessages && /* @__PURE__ */
|
|
25200
|
-
/* @__PURE__ */
|
|
25201
|
-
/* @__PURE__ */
|
|
25565
|
+
) : /* @__PURE__ */ jsxs55("div", { className: "space-y-4", children: [
|
|
25566
|
+
canLoadMoreMessages && /* @__PURE__ */ jsxs55("div", { className: "flex items-center gap-3 py-1", children: [
|
|
25567
|
+
/* @__PURE__ */ jsx74("div", { className: "h-px min-w-8 flex-1 bg-border" }),
|
|
25568
|
+
/* @__PURE__ */ jsx74(
|
|
25202
25569
|
Button,
|
|
25203
25570
|
{
|
|
25204
25571
|
type: "button",
|
|
@@ -25210,12 +25577,12 @@ function Chat({
|
|
|
25210
25577
|
children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
|
|
25211
25578
|
}
|
|
25212
25579
|
),
|
|
25213
|
-
/* @__PURE__ */
|
|
25580
|
+
/* @__PURE__ */ jsx74("div", { className: "h-px min-w-8 flex-1 bg-border" })
|
|
25214
25581
|
] }),
|
|
25215
25582
|
messages.map((message, index) => {
|
|
25216
25583
|
const messageType = String(message.type);
|
|
25217
25584
|
const isAssistantMessage = messageType === "assistant" || messageType === "ai";
|
|
25218
|
-
const isStreamingMessage =
|
|
25585
|
+
const isStreamingMessage = isVisibleStreaming && index === messages.length - 1;
|
|
25219
25586
|
const streamingStatus = isAssistantMessage ? getAssistantStreamingStatus(
|
|
25220
25587
|
{
|
|
25221
25588
|
...message,
|
|
@@ -25246,6 +25613,8 @@ function Chat({
|
|
|
25246
25613
|
) : [];
|
|
25247
25614
|
const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
|
|
25248
25615
|
const canQuoteMessage = message.type === "human" || isAssistantMessage;
|
|
25616
|
+
const isEditingMessage = Boolean(message.id) && editingMessageId === message.id;
|
|
25617
|
+
const canEditMessage = message.type === "human" && Boolean(branchState.current) && Boolean(message.id) && humanMessage.inputCheckpoint !== null && !humanMessage.followUpMode && !isChangingBranch;
|
|
25249
25618
|
const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
|
|
25250
25619
|
const messageNavigationId = getMessageNavigationItemId(
|
|
25251
25620
|
message,
|
|
@@ -25254,7 +25623,7 @@ function Chat({
|
|
|
25254
25623
|
if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
|
|
25255
25624
|
return null;
|
|
25256
25625
|
}
|
|
25257
|
-
return /* @__PURE__ */
|
|
25626
|
+
return /* @__PURE__ */ jsx74(
|
|
25258
25627
|
"div",
|
|
25259
25628
|
{
|
|
25260
25629
|
ref: (node) => setMessageNavigationAnchor(messageNavigationId, node),
|
|
@@ -25264,15 +25633,23 @@ function Chat({
|
|
|
25264
25633
|
message.type === "human" ? "justify-end" : "justify-start -ml-1"
|
|
25265
25634
|
// AI messages: slightly closer to left
|
|
25266
25635
|
),
|
|
25267
|
-
children: /* @__PURE__ */
|
|
25636
|
+
children: /* @__PURE__ */ jsx74(
|
|
25268
25637
|
"div",
|
|
25269
25638
|
{
|
|
25270
25639
|
className: cn(
|
|
25271
25640
|
"flex flex-col px-3 overflow-hidden",
|
|
25272
|
-
isAssistantMessage && "min-w-0 flex-1"
|
|
25641
|
+
(isAssistantMessage || isEditingMessage) && "min-w-0 flex-1"
|
|
25273
25642
|
),
|
|
25274
|
-
children:
|
|
25275
|
-
|
|
25643
|
+
children: isEditingMessage ? /* @__PURE__ */ jsx74(
|
|
25644
|
+
MessageEditor,
|
|
25645
|
+
{
|
|
25646
|
+
initialText: typeof message.content === "string" ? message.content : messageContent,
|
|
25647
|
+
onCancel: () => setEditingMessageId(null),
|
|
25648
|
+
onSave: (text) => saveEditedMessage(message, text)
|
|
25649
|
+
},
|
|
25650
|
+
message.id
|
|
25651
|
+
) : /* @__PURE__ */ jsxs55(Fragment13, { children: [
|
|
25652
|
+
/* @__PURE__ */ jsx74(
|
|
25276
25653
|
"div",
|
|
25277
25654
|
{
|
|
25278
25655
|
...canQuoteMessage ? {
|
|
@@ -25284,7 +25661,7 @@ function Chat({
|
|
|
25284
25661
|
message.type === "human" ? "bg-primary text-primary-foreground px-4 py-2.5" : message.type === "system" ? "bg-muted text-muted-foreground text-xs px-4 py-2.5" : "py-1 text-chat-foreground"
|
|
25285
25662
|
// AI messages: use chat-specific foreground color
|
|
25286
25663
|
),
|
|
25287
|
-
children: isAssistantMessage ? /* @__PURE__ */
|
|
25664
|
+
children: isAssistantMessage ? /* @__PURE__ */ jsx74(
|
|
25288
25665
|
AssistantMessage,
|
|
25289
25666
|
{
|
|
25290
25667
|
message: {
|
|
@@ -25300,19 +25677,20 @@ function Chat({
|
|
|
25300
25677
|
isStreaming: isStreamingMessage,
|
|
25301
25678
|
streamingStatus,
|
|
25302
25679
|
isThreadRunning: currentThreadIsRunning,
|
|
25680
|
+
isThreadPaused: isPauseActive,
|
|
25303
25681
|
organizationId: stream.organizationId,
|
|
25304
25682
|
apiUrl: stream.apiUrl,
|
|
25305
25683
|
pet: effectivePet,
|
|
25306
25684
|
mcpApps: options?.mcpApps
|
|
25307
25685
|
}
|
|
25308
|
-
) : /* @__PURE__ */
|
|
25309
|
-
message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */
|
|
25686
|
+
) : /* @__PURE__ */ jsxs55(Fragment13, { children: [
|
|
25687
|
+
message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsx74(
|
|
25310
25688
|
HumanRuntimeCapabilityChips,
|
|
25311
25689
|
{
|
|
25312
25690
|
options: humanRuntimeCapabilityOptions
|
|
25313
25691
|
}
|
|
25314
25692
|
),
|
|
25315
|
-
message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */
|
|
25693
|
+
message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ jsx74("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ jsx74(
|
|
25316
25694
|
ReferenceChip,
|
|
25317
25695
|
{
|
|
25318
25696
|
reference,
|
|
@@ -25320,45 +25698,49 @@ function Chat({
|
|
|
25320
25698
|
},
|
|
25321
25699
|
getReferenceKey(reference)
|
|
25322
25700
|
)) }),
|
|
25323
|
-
message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */
|
|
25701
|
+
message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ jsx74("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ jsxs55(
|
|
25324
25702
|
"div",
|
|
25325
25703
|
{
|
|
25326
25704
|
className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
|
|
25327
25705
|
children: [
|
|
25328
|
-
/* @__PURE__ */
|
|
25329
|
-
/* @__PURE__ */
|
|
25706
|
+
/* @__PURE__ */ jsx74(FileText6, { size: 12 }),
|
|
25707
|
+
/* @__PURE__ */ jsx74("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
|
|
25330
25708
|
]
|
|
25331
25709
|
},
|
|
25332
25710
|
fileIndex
|
|
25333
25711
|
)) }),
|
|
25334
|
-
Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */
|
|
25712
|
+
Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ jsx74(
|
|
25335
25713
|
"p",
|
|
25336
25714
|
{
|
|
25337
25715
|
className: "wrap-break-word text-sm leading-relaxed",
|
|
25338
25716
|
children: formatMessageContent(part)
|
|
25339
25717
|
},
|
|
25340
25718
|
`${part.type}-${partIndex}`
|
|
25341
|
-
)) : /* @__PURE__ */
|
|
25719
|
+
)) : /* @__PURE__ */ jsx74("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
|
|
25342
25720
|
] })
|
|
25343
25721
|
}
|
|
25344
25722
|
),
|
|
25345
|
-
/* @__PURE__ */
|
|
25723
|
+
/* @__PURE__ */ jsx74(
|
|
25346
25724
|
MessageActions,
|
|
25347
25725
|
{
|
|
25348
25726
|
content: messageContent,
|
|
25349
25727
|
isAssistant: isAssistantMessage,
|
|
25350
25728
|
isStreaming: isStreamingMessage,
|
|
25351
|
-
|
|
25729
|
+
onEdit: canEditMessage ? () => {
|
|
25730
|
+
editRequestRef.current = null;
|
|
25731
|
+
setEditingMessageId(message.id ?? null);
|
|
25732
|
+
} : void 0,
|
|
25733
|
+
onRetry: isAssistantMessage && branchState.current?.status !== "paused" && branchState.current?.status !== "pausing" && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
|
|
25352
25734
|
}
|
|
25353
25735
|
)
|
|
25354
|
-
]
|
|
25736
|
+
] })
|
|
25355
25737
|
}
|
|
25356
25738
|
)
|
|
25357
25739
|
},
|
|
25358
25740
|
message.id ?? `${message.type}-${index}`
|
|
25359
25741
|
);
|
|
25360
25742
|
}),
|
|
25361
|
-
showLoadingDots && (() => {
|
|
25743
|
+
showLoadingDots && !stream.isDisplayPaused && (() => {
|
|
25362
25744
|
const lastMessage = messages[messages.length - 1];
|
|
25363
25745
|
const lastMessageType = lastMessage ? String(lastMessage.type) : "";
|
|
25364
25746
|
const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
|
|
@@ -25380,7 +25762,7 @@ function Chat({
|
|
|
25380
25762
|
stream.isLoading,
|
|
25381
25763
|
{ now: streamingNow }
|
|
25382
25764
|
);
|
|
25383
|
-
return /* @__PURE__ */
|
|
25765
|
+
return /* @__PURE__ */ jsx74("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ jsx74("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ jsx74(
|
|
25384
25766
|
AssistantStreamingIndicator,
|
|
25385
25767
|
{
|
|
25386
25768
|
status: fallbackStreamingStatus ?? "loading"
|
|
@@ -25391,7 +25773,7 @@ function Chat({
|
|
|
25391
25773
|
]
|
|
25392
25774
|
}
|
|
25393
25775
|
),
|
|
25394
|
-
quoteSelection && /* @__PURE__ */
|
|
25776
|
+
quoteSelection && /* @__PURE__ */ jsxs55(
|
|
25395
25777
|
"div",
|
|
25396
25778
|
{
|
|
25397
25779
|
className: "pointer-events-none fixed z-50 flex flex-col items-center gap-1",
|
|
@@ -25401,8 +25783,8 @@ function Chat({
|
|
|
25401
25783
|
transform: "translateX(-50%)"
|
|
25402
25784
|
},
|
|
25403
25785
|
children: [
|
|
25404
|
-
/* @__PURE__ */
|
|
25405
|
-
/* @__PURE__ */
|
|
25786
|
+
/* @__PURE__ */ jsxs55("div", { className: "pointer-events-auto flex overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg", children: [
|
|
25787
|
+
/* @__PURE__ */ jsxs55(
|
|
25406
25788
|
Button,
|
|
25407
25789
|
{
|
|
25408
25790
|
type: "button",
|
|
@@ -25414,12 +25796,12 @@ function Chat({
|
|
|
25414
25796
|
"aria-label": t("composer.quoteSelection"),
|
|
25415
25797
|
title: t("composer.quoteSelection"),
|
|
25416
25798
|
children: [
|
|
25417
|
-
/* @__PURE__ */
|
|
25799
|
+
/* @__PURE__ */ jsx74(Quote, { size: 14 }),
|
|
25418
25800
|
t("composer.quoteSelection")
|
|
25419
25801
|
]
|
|
25420
25802
|
}
|
|
25421
25803
|
),
|
|
25422
|
-
workbench.sideChatEnabled && /* @__PURE__ */
|
|
25804
|
+
workbench.sideChatEnabled && /* @__PURE__ */ jsxs55(
|
|
25423
25805
|
Button,
|
|
25424
25806
|
{
|
|
25425
25807
|
type: "button",
|
|
@@ -25432,17 +25814,17 @@ function Chat({
|
|
|
25432
25814
|
"aria-label": t("composer.askInSideChat"),
|
|
25433
25815
|
title: t("composer.askInSideChat"),
|
|
25434
25816
|
children: [
|
|
25435
|
-
isOpeningSideChat ? /* @__PURE__ */
|
|
25817
|
+
isOpeningSideChat ? /* @__PURE__ */ jsx74(Loader213, { size: 14, className: "animate-spin" }) : /* @__PURE__ */ jsx74(MessageSquarePlus, { size: 14 }),
|
|
25436
25818
|
t("composer.askInSideChat")
|
|
25437
25819
|
]
|
|
25438
25820
|
}
|
|
25439
25821
|
)
|
|
25440
25822
|
] }),
|
|
25441
|
-
sideChatError && /* @__PURE__ */
|
|
25823
|
+
sideChatError && /* @__PURE__ */ jsx74("div", { className: "pointer-events-auto max-w-72 rounded-md bg-destructive px-2 py-1 text-xs text-destructive-foreground shadow", children: sideChatError })
|
|
25442
25824
|
]
|
|
25443
25825
|
}
|
|
25444
25826
|
),
|
|
25445
|
-
/* @__PURE__ */
|
|
25827
|
+
/* @__PURE__ */ jsxs55(
|
|
25446
25828
|
"div",
|
|
25447
25829
|
{
|
|
25448
25830
|
"data-slot": "chatkit-chat-composer",
|
|
@@ -25453,12 +25835,13 @@ function Chat({
|
|
|
25453
25835
|
),
|
|
25454
25836
|
style: chatColumnStyle,
|
|
25455
25837
|
children: [
|
|
25456
|
-
|
|
25838
|
+
runControlError?.threadId === stream.threadId && /* @__PURE__ */ jsx74("p", { role: "alert", className: "text-xs text-destructive", children: runControlError.message }),
|
|
25839
|
+
!isAtBottom && messages.length > 0 && /* @__PURE__ */ jsx74(
|
|
25457
25840
|
"div",
|
|
25458
25841
|
{
|
|
25459
25842
|
"data-slot": "scroll-to-bottom",
|
|
25460
25843
|
className: "pointer-events-none absolute left-1/2 top-0 z-20 flex -translate-x-1/2 -translate-y-full justify-center",
|
|
25461
|
-
children: /* @__PURE__ */
|
|
25844
|
+
children: /* @__PURE__ */ jsx74(
|
|
25462
25845
|
Button,
|
|
25463
25846
|
{
|
|
25464
25847
|
type: "button",
|
|
@@ -25471,13 +25854,13 @@ function Chat({
|
|
|
25471
25854
|
onClick: () => scrollToBottom(true, true),
|
|
25472
25855
|
"aria-label": t("chat.scrollToBottom"),
|
|
25473
25856
|
title: t("chat.scrollToBottom"),
|
|
25474
|
-
children: /* @__PURE__ */
|
|
25857
|
+
children: /* @__PURE__ */ jsx74(ArrowDown2, { size: 16 })
|
|
25475
25858
|
}
|
|
25476
25859
|
)
|
|
25477
25860
|
}
|
|
25478
25861
|
),
|
|
25479
|
-
threadErrorMessage && /* @__PURE__ */
|
|
25480
|
-
showGoalStatus && /* @__PURE__ */
|
|
25862
|
+
threadErrorMessage && /* @__PURE__ */ jsx74("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 }),
|
|
25863
|
+
showGoalStatus && /* @__PURE__ */ jsxs55(
|
|
25481
25864
|
"div",
|
|
25482
25865
|
{
|
|
25483
25866
|
className: cn(
|
|
@@ -25485,7 +25868,7 @@ function Chat({
|
|
|
25485
25868
|
isGoalObjectiveExpanded ? "items-start" : "items-center"
|
|
25486
25869
|
),
|
|
25487
25870
|
children: [
|
|
25488
|
-
/* @__PURE__ */
|
|
25871
|
+
/* @__PURE__ */ jsx74(
|
|
25489
25872
|
Target3,
|
|
25490
25873
|
{
|
|
25491
25874
|
className: cn(
|
|
@@ -25494,13 +25877,13 @@ function Chat({
|
|
|
25494
25877
|
)
|
|
25495
25878
|
}
|
|
25496
25879
|
),
|
|
25497
|
-
/* @__PURE__ */
|
|
25498
|
-
/* @__PURE__ */
|
|
25499
|
-
/* @__PURE__ */
|
|
25500
|
-
threadGoal && /* @__PURE__ */
|
|
25501
|
-
isGoalLoading && /* @__PURE__ */
|
|
25880
|
+
/* @__PURE__ */ jsxs55("div", { className: "min-w-0 flex-1", children: [
|
|
25881
|
+
/* @__PURE__ */ jsxs55("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
25882
|
+
/* @__PURE__ */ jsx74("span", { className: "font-medium", children: t("chat.goal.label") }),
|
|
25883
|
+
threadGoal && /* @__PURE__ */ jsx74("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}`) }),
|
|
25884
|
+
isGoalLoading && /* @__PURE__ */ jsx74(Loader213, { className: "size-3 animate-spin text-muted-foreground" })
|
|
25502
25885
|
] }),
|
|
25503
|
-
/* @__PURE__ */
|
|
25886
|
+
/* @__PURE__ */ jsx74(
|
|
25504
25887
|
"div",
|
|
25505
25888
|
{
|
|
25506
25889
|
className: cn(
|
|
@@ -25510,13 +25893,13 @@ function Chat({
|
|
|
25510
25893
|
children: goalError || threadGoal?.objective
|
|
25511
25894
|
}
|
|
25512
25895
|
),
|
|
25513
|
-
threadGoal && /* @__PURE__ */
|
|
25896
|
+
threadGoal && /* @__PURE__ */ jsx74("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: /* @__PURE__ */ jsx74("span", { children: t("chat.goal.elapsed", {
|
|
25514
25897
|
elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
|
|
25515
25898
|
}) }) })
|
|
25516
25899
|
] }),
|
|
25517
|
-
threadGoal && /* @__PURE__ */
|
|
25518
|
-
/* @__PURE__ */
|
|
25519
|
-
/* @__PURE__ */
|
|
25900
|
+
threadGoal && /* @__PURE__ */ jsxs55("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
25901
|
+
/* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25902
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74(
|
|
25520
25903
|
Button,
|
|
25521
25904
|
{
|
|
25522
25905
|
type: "button",
|
|
@@ -25527,13 +25910,13 @@ function Chat({
|
|
|
25527
25910
|
const prefix = "/goal edit ";
|
|
25528
25911
|
setComposerText(`${prefix}${threadGoal.objective}`);
|
|
25529
25912
|
},
|
|
25530
|
-
children: /* @__PURE__ */
|
|
25913
|
+
children: /* @__PURE__ */ jsx74(Pencil6, { className: "size-3" })
|
|
25531
25914
|
}
|
|
25532
25915
|
) }),
|
|
25533
|
-
/* @__PURE__ */
|
|
25916
|
+
/* @__PURE__ */ jsx74(TooltipContent, { children: t("chat.goal.edit") })
|
|
25534
25917
|
] }),
|
|
25535
|
-
/* @__PURE__ */
|
|
25536
|
-
/* @__PURE__ */
|
|
25918
|
+
/* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25919
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74(
|
|
25537
25920
|
Button,
|
|
25538
25921
|
{
|
|
25539
25922
|
type: "button",
|
|
@@ -25549,13 +25932,13 @@ function Chat({
|
|
|
25549
25932
|
executionType: "insert_invocation"
|
|
25550
25933
|
}
|
|
25551
25934
|
}),
|
|
25552
|
-
children: threadGoal.status === "paused" ? /* @__PURE__ */
|
|
25935
|
+
children: threadGoal.status === "paused" ? /* @__PURE__ */ jsx74(Play2, { className: "size-3" }) : /* @__PURE__ */ jsx74(Pause, { className: "size-3" })
|
|
25553
25936
|
}
|
|
25554
25937
|
) }),
|
|
25555
|
-
/* @__PURE__ */
|
|
25938
|
+
/* @__PURE__ */ jsx74(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
|
|
25556
25939
|
] }),
|
|
25557
|
-
/* @__PURE__ */
|
|
25558
|
-
/* @__PURE__ */
|
|
25940
|
+
/* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25941
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74(
|
|
25559
25942
|
Button,
|
|
25560
25943
|
{
|
|
25561
25944
|
type: "button",
|
|
@@ -25571,13 +25954,13 @@ function Chat({
|
|
|
25571
25954
|
executionType: "insert_invocation"
|
|
25572
25955
|
}
|
|
25573
25956
|
}),
|
|
25574
|
-
children: /* @__PURE__ */
|
|
25957
|
+
children: /* @__PURE__ */ jsx74(Trash23, { className: "size-3" })
|
|
25575
25958
|
}
|
|
25576
25959
|
) }),
|
|
25577
|
-
/* @__PURE__ */
|
|
25960
|
+
/* @__PURE__ */ jsx74(TooltipContent, { children: t("chat.goal.clear") })
|
|
25578
25961
|
] }),
|
|
25579
|
-
threadGoal.objective && !goalError && /* @__PURE__ */
|
|
25580
|
-
/* @__PURE__ */
|
|
25962
|
+
threadGoal.objective && !goalError && /* @__PURE__ */ jsxs55(Tooltip, { children: [
|
|
25963
|
+
/* @__PURE__ */ jsx74(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx74(
|
|
25581
25964
|
Button,
|
|
25582
25965
|
{
|
|
25583
25966
|
type: "button",
|
|
@@ -25586,7 +25969,7 @@ function Chat({
|
|
|
25586
25969
|
"aria-expanded": isGoalObjectiveExpanded,
|
|
25587
25970
|
"aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
|
|
25588
25971
|
onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
|
|
25589
|
-
children: /* @__PURE__ */
|
|
25972
|
+
children: /* @__PURE__ */ jsx74(
|
|
25590
25973
|
ChevronDown9,
|
|
25591
25974
|
{
|
|
25592
25975
|
className: cn(
|
|
@@ -25597,13 +25980,13 @@ function Chat({
|
|
|
25597
25980
|
)
|
|
25598
25981
|
}
|
|
25599
25982
|
) }),
|
|
25600
|
-
/* @__PURE__ */
|
|
25983
|
+
/* @__PURE__ */ jsx74(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
|
|
25601
25984
|
] })
|
|
25602
25985
|
] })
|
|
25603
25986
|
]
|
|
25604
25987
|
}
|
|
25605
25988
|
),
|
|
25606
|
-
/* @__PURE__ */
|
|
25989
|
+
/* @__PURE__ */ jsx74(
|
|
25607
25990
|
PendingRuntimeServices,
|
|
25608
25991
|
{
|
|
25609
25992
|
state: stream.runtimeActivities.sandboxServices,
|
|
@@ -25612,7 +25995,7 @@ function Chat({
|
|
|
25612
25995
|
className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
|
|
25613
25996
|
}
|
|
25614
25997
|
),
|
|
25615
|
-
/* @__PURE__ */
|
|
25998
|
+
/* @__PURE__ */ jsx74(
|
|
25616
25999
|
PendingTodos,
|
|
25617
26000
|
{
|
|
25618
26001
|
snapshot: stream.todos,
|
|
@@ -25620,7 +26003,7 @@ function Chat({
|
|
|
25620
26003
|
className: hasPendingFollowUps ? "mb-2" : void 0
|
|
25621
26004
|
}
|
|
25622
26005
|
),
|
|
25623
|
-
/* @__PURE__ */
|
|
26006
|
+
/* @__PURE__ */ jsx74(
|
|
25624
26007
|
PendingFollowUps,
|
|
25625
26008
|
{
|
|
25626
26009
|
items: pendingFollowUps,
|
|
@@ -25633,7 +26016,7 @@ function Chat({
|
|
|
25633
26016
|
attachToComposer: true
|
|
25634
26017
|
}
|
|
25635
26018
|
),
|
|
25636
|
-
/* @__PURE__ */
|
|
26019
|
+
/* @__PURE__ */ jsx74(
|
|
25637
26020
|
RequestUserInputPanel,
|
|
25638
26021
|
{
|
|
25639
26022
|
request: stream.pendingRequestUserInput,
|
|
@@ -25642,7 +26025,7 @@ function Chat({
|
|
|
25642
26025
|
attachToComposer: true
|
|
25643
26026
|
}
|
|
25644
26027
|
),
|
|
25645
|
-
/* @__PURE__ */
|
|
26028
|
+
/* @__PURE__ */ jsx74(
|
|
25646
26029
|
HITLApprovalPanel,
|
|
25647
26030
|
{
|
|
25648
26031
|
request: stream.pendingHITLRequest,
|
|
@@ -25651,7 +26034,7 @@ function Chat({
|
|
|
25651
26034
|
attachToComposer: true
|
|
25652
26035
|
}
|
|
25653
26036
|
),
|
|
25654
|
-
isInitialComposer && /* @__PURE__ */
|
|
26037
|
+
isInitialComposer && /* @__PURE__ */ jsx74(
|
|
25655
26038
|
PromptWorkflowShortcuts,
|
|
25656
26039
|
{
|
|
25657
26040
|
commands: promptWorkflow.commands,
|
|
@@ -25665,7 +26048,7 @@ function Chat({
|
|
|
25665
26048
|
onBack: promptWorkflow.showPrompts
|
|
25666
26049
|
}
|
|
25667
26050
|
),
|
|
25668
|
-
/* @__PURE__ */
|
|
26051
|
+
/* @__PURE__ */ jsx74(
|
|
25669
26052
|
ChatAttachments,
|
|
25670
26053
|
{
|
|
25671
26054
|
ref: attachmentsRef,
|
|
@@ -25679,7 +26062,7 @@ function Chat({
|
|
|
25679
26062
|
onStateChange: setAttachmentState
|
|
25680
26063
|
}
|
|
25681
26064
|
),
|
|
25682
|
-
references.length > 0 && /* @__PURE__ */
|
|
26065
|
+
references.length > 0 && /* @__PURE__ */ jsx74("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx74(
|
|
25683
26066
|
ReferenceChip,
|
|
25684
26067
|
{
|
|
25685
26068
|
reference,
|
|
@@ -25693,9 +26076,9 @@ function Chat({
|
|
|
25693
26076
|
},
|
|
25694
26077
|
getReferenceKey(reference)
|
|
25695
26078
|
)) }),
|
|
25696
|
-
referencedWorkspaceFiles.length > 0 && /* @__PURE__ */
|
|
26079
|
+
referencedWorkspaceFiles.length > 0 && /* @__PURE__ */ jsx74("div", { className: "mb-3 flex flex-wrap gap-2", children: referencedWorkspaceFiles.map((file) => {
|
|
25697
26080
|
const id = file.workspacePath ?? file.filePath ?? file.fileAssetId ?? file.fileId ?? file.id;
|
|
25698
|
-
return /* @__PURE__ */
|
|
26081
|
+
return /* @__PURE__ */ jsx74(
|
|
25699
26082
|
WorkspaceFileChip,
|
|
25700
26083
|
{
|
|
25701
26084
|
file,
|
|
@@ -25709,7 +26092,7 @@ function Chat({
|
|
|
25709
26092
|
id
|
|
25710
26093
|
);
|
|
25711
26094
|
}) }),
|
|
25712
|
-
workspaceFileMention && /* @__PURE__ */
|
|
26095
|
+
workspaceFileMention && /* @__PURE__ */ jsx74(
|
|
25713
26096
|
WorkspaceFileMentionPalette,
|
|
25714
26097
|
{
|
|
25715
26098
|
ref: workspaceFileMentionPaletteRef,
|
|
@@ -25721,7 +26104,7 @@ function Chat({
|
|
|
25721
26104
|
onSelect: selectWorkspaceFileMention
|
|
25722
26105
|
}
|
|
25723
26106
|
),
|
|
25724
|
-
runtimeCapabilityPalette && !workspaceFileMention && /* @__PURE__ */
|
|
26107
|
+
runtimeCapabilityPalette && !workspaceFileMention && /* @__PURE__ */ jsx74(
|
|
25725
26108
|
SlashPalette,
|
|
25726
26109
|
{
|
|
25727
26110
|
palette: runtimeCapabilityPalette,
|
|
@@ -25735,7 +26118,7 @@ function Chat({
|
|
|
25735
26118
|
onSelect: selectSlashPaletteOption
|
|
25736
26119
|
}
|
|
25737
26120
|
),
|
|
25738
|
-
/* @__PURE__ */
|
|
26121
|
+
/* @__PURE__ */ jsx74("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ jsxs55(
|
|
25739
26122
|
"div",
|
|
25740
26123
|
{
|
|
25741
26124
|
"data-slot": "composer-input-shell",
|
|
@@ -25748,7 +26131,7 @@ function Chat({
|
|
|
25748
26131
|
"rounded-composer-shell shadow-composer-shell"
|
|
25749
26132
|
),
|
|
25750
26133
|
children: [
|
|
25751
|
-
/* @__PURE__ */
|
|
26134
|
+
/* @__PURE__ */ jsxs55(
|
|
25752
26135
|
"div",
|
|
25753
26136
|
{
|
|
25754
26137
|
"data-slot": "composer-editor-surface",
|
|
@@ -25757,7 +26140,7 @@ function Chat({
|
|
|
25757
26140
|
"rounded-composer-editor"
|
|
25758
26141
|
),
|
|
25759
26142
|
children: [
|
|
25760
|
-
/* @__PURE__ */
|
|
26143
|
+
/* @__PURE__ */ jsxs55(
|
|
25761
26144
|
"div",
|
|
25762
26145
|
{
|
|
25763
26146
|
"data-slot": "composer-body",
|
|
@@ -25766,7 +26149,7 @@ function Chat({
|
|
|
25766
26149
|
if (event.target === event.currentTarget) focusComposerAt();
|
|
25767
26150
|
},
|
|
25768
26151
|
children: [
|
|
25769
|
-
composerCapabilities.inline.map((option) => /* @__PURE__ */
|
|
26152
|
+
composerCapabilities.inline.map((option) => /* @__PURE__ */ jsx74(
|
|
25770
26153
|
ComposerCapabilityChip,
|
|
25771
26154
|
{
|
|
25772
26155
|
option,
|
|
@@ -25775,7 +26158,7 @@ function Chat({
|
|
|
25775
26158
|
},
|
|
25776
26159
|
`${option.type}:${option.id}`
|
|
25777
26160
|
)),
|
|
25778
|
-
/* @__PURE__ */
|
|
26161
|
+
/* @__PURE__ */ jsx74(
|
|
25779
26162
|
"div",
|
|
25780
26163
|
{
|
|
25781
26164
|
ref: composerInputRef,
|
|
@@ -25798,7 +26181,7 @@ function Chat({
|
|
|
25798
26181
|
(missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
|
|
25799
26182
|
),
|
|
25800
26183
|
children: renderedComposerParts.map(
|
|
25801
|
-
(part, index) => part.type === "text" ? /* @__PURE__ */
|
|
26184
|
+
(part, index) => part.type === "text" ? /* @__PURE__ */ jsx74(React66.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ jsx74(
|
|
25802
26185
|
ComposerCapabilityToken,
|
|
25803
26186
|
{
|
|
25804
26187
|
part,
|
|
@@ -25814,14 +26197,14 @@ function Chat({
|
|
|
25814
26197
|
]
|
|
25815
26198
|
}
|
|
25816
26199
|
),
|
|
25817
|
-
/* @__PURE__ */
|
|
26200
|
+
/* @__PURE__ */ jsxs55(
|
|
25818
26201
|
"div",
|
|
25819
26202
|
{
|
|
25820
26203
|
"data-slot": "composer-action-bar",
|
|
25821
26204
|
className: "pointer-events-none absolute inset-x-3 bottom-2 flex min-h-10 items-center justify-between gap-2",
|
|
25822
26205
|
children: [
|
|
25823
|
-
/* @__PURE__ */
|
|
25824
|
-
/* @__PURE__ */
|
|
26206
|
+
/* @__PURE__ */ jsxs55("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
|
|
26207
|
+
/* @__PURE__ */ jsx74("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ jsx74(
|
|
25825
26208
|
ComposerMenu,
|
|
25826
26209
|
{
|
|
25827
26210
|
composer,
|
|
@@ -25853,12 +26236,12 @@ function Chat({
|
|
|
25853
26236
|
disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
|
|
25854
26237
|
}
|
|
25855
26238
|
) }),
|
|
25856
|
-
composerCapabilities.subAgents.length > 0 && /* @__PURE__ */
|
|
26239
|
+
composerCapabilities.subAgents.length > 0 && /* @__PURE__ */ jsx74(
|
|
25857
26240
|
"div",
|
|
25858
26241
|
{
|
|
25859
26242
|
"data-slot": "composer-selected-sub-agents",
|
|
25860
26243
|
className: "pointer-events-auto flex min-w-0 items-center gap-1 overflow-x-auto overflow-y-hidden [scrollbar-width:none]! [&::-webkit-scrollbar]:hidden",
|
|
25861
|
-
children: composerCapabilities.subAgents.map((option) => /* @__PURE__ */
|
|
26244
|
+
children: composerCapabilities.subAgents.map((option) => /* @__PURE__ */ jsx74(
|
|
25862
26245
|
ComposerCapabilityChip,
|
|
25863
26246
|
{
|
|
25864
26247
|
option,
|
|
@@ -25869,14 +26252,14 @@ function Chat({
|
|
|
25869
26252
|
))
|
|
25870
26253
|
}
|
|
25871
26254
|
),
|
|
25872
|
-
selectedTool && /* @__PURE__ */
|
|
26255
|
+
selectedTool && /* @__PURE__ */ jsxs55(
|
|
25873
26256
|
"span",
|
|
25874
26257
|
{
|
|
25875
26258
|
"data-slot": "composer-selected-tool",
|
|
25876
26259
|
className: "group/tool pointer-events-auto inline-flex h-8 min-w-0 max-w-[14rem] shrink items-center rounded-full bg-primary/10 px-2 text-xs font-medium text-primary transition-all duration-200",
|
|
25877
26260
|
children: [
|
|
25878
|
-
/* @__PURE__ */
|
|
25879
|
-
/* @__PURE__ */
|
|
26261
|
+
/* @__PURE__ */ jsx74("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
|
|
26262
|
+
/* @__PURE__ */ jsx74(
|
|
25880
26263
|
"button",
|
|
25881
26264
|
{
|
|
25882
26265
|
"data-slot": "composer-selected-tool-remove",
|
|
@@ -25892,16 +26275,16 @@ function Chat({
|
|
|
25892
26275
|
"focus-visible:pointer-events-auto focus-visible:ml-1 focus-visible:w-4 focus-visible:opacity-100",
|
|
25893
26276
|
"hover:bg-primary/10 hover:text-primary focus-visible:bg-primary/10 focus-visible:text-primary"
|
|
25894
26277
|
),
|
|
25895
|
-
children: /* @__PURE__ */
|
|
26278
|
+
children: /* @__PURE__ */ jsx74(X9, { className: "size-3 shrink-0" })
|
|
25896
26279
|
}
|
|
25897
26280
|
)
|
|
25898
26281
|
]
|
|
25899
26282
|
}
|
|
25900
26283
|
)
|
|
25901
26284
|
] }),
|
|
25902
|
-
/* @__PURE__ */
|
|
25903
|
-
/* @__PURE__ */
|
|
25904
|
-
/* @__PURE__ */
|
|
26285
|
+
/* @__PURE__ */ jsxs55("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1", children: [
|
|
26286
|
+
/* @__PURE__ */ jsx74(ContextUsageIndicator, { className: "size-8" }),
|
|
26287
|
+
/* @__PURE__ */ jsx74(
|
|
25905
26288
|
ModelPicker,
|
|
25906
26289
|
{
|
|
25907
26290
|
models: availableModels,
|
|
@@ -25925,16 +26308,21 @@ function Chat({
|
|
|
25925
26308
|
}
|
|
25926
26309
|
}
|
|
25927
26310
|
),
|
|
25928
|
-
/* @__PURE__ */
|
|
26311
|
+
/* @__PURE__ */ jsx74(
|
|
25929
26312
|
SendButton,
|
|
25930
26313
|
{
|
|
25931
26314
|
disabled: isSendDisabled,
|
|
25932
26315
|
isLoading: stream.isLoading,
|
|
25933
|
-
showStop: stream.isLoading && (!
|
|
25934
|
-
|
|
25935
|
-
|
|
26316
|
+
showStop: !isPauseActive && (stream.isLoading || canPauseRun) && (!hasComposerInput || hasPendingInteractiveRequest),
|
|
26317
|
+
stopDisabled: isChangingBranch || !canPauseRun,
|
|
26318
|
+
onStop: () => void handleComposerRunControl("pause"),
|
|
26319
|
+
stopLabel: t("threadControl.pause"),
|
|
26320
|
+
showResume: isPauseActive && !hasComposerInput,
|
|
26321
|
+
resumeDisabled: !isRunPaused && !canRevealPausedDisplay || isRunPausing || isResumingRun || isChangingBranch || !currentRunControl?.pauseId && !canRevealPausedDisplay,
|
|
26322
|
+
onResume: () => void handleComposerRunControl("resume"),
|
|
26323
|
+
resumeLabel: t("threadControl.resume"),
|
|
25936
26324
|
sendLabel: t("chat.send"),
|
|
25937
|
-
shortcuts:
|
|
26325
|
+
shortcuts: isVisibleStreaming && !isRunPaused && trimmedDraft ? [
|
|
25938
26326
|
{
|
|
25939
26327
|
label: t("chat.followUps.queue"),
|
|
25940
26328
|
keys: "Enter"
|
|
@@ -25949,8 +26337,8 @@ function Chat({
|
|
|
25949
26337
|
]
|
|
25950
26338
|
}
|
|
25951
26339
|
),
|
|
25952
|
-
/* @__PURE__ */
|
|
25953
|
-
/* @__PURE__ */
|
|
26340
|
+
/* @__PURE__ */ jsxs55("div", { "data-slot": "composer-context-rail", className: "flex min-w-0 flex-wrap items-center", children: [
|
|
26341
|
+
/* @__PURE__ */ jsx74("div", { className: "min-w-0 max-w-full", children: projectsEnabled && (isConfiguredProjectLocked || !isProjectSelectionLocked) ? /* @__PURE__ */ jsx74(
|
|
25954
26342
|
ProjectSelector,
|
|
25955
26343
|
{
|
|
25956
26344
|
client: xpertPlatformClient,
|
|
@@ -25965,7 +26353,7 @@ function Chat({
|
|
|
25965
26353
|
onProjectTypeCreate
|
|
25966
26354
|
}
|
|
25967
26355
|
) : null }),
|
|
25968
|
-
isFileSelectorVisible && /* @__PURE__ */
|
|
26356
|
+
isFileSelectorVisible && /* @__PURE__ */ jsx74(
|
|
25969
26357
|
WorkspaceFileSelector,
|
|
25970
26358
|
{
|
|
25971
26359
|
client: xpertPlatformClient,
|
|
@@ -25980,7 +26368,7 @@ function Chat({
|
|
|
25980
26368
|
]
|
|
25981
26369
|
}
|
|
25982
26370
|
) }),
|
|
25983
|
-
isInitialComposer && startScreen?.promptsLayout === "list" && /* @__PURE__ */
|
|
26371
|
+
isInitialComposer && startScreen?.promptsLayout === "list" && /* @__PURE__ */ jsx74(
|
|
25984
26372
|
StarterPromptSuggestions,
|
|
25985
26373
|
{
|
|
25986
26374
|
prompts: startScreen.prompts ?? [],
|
|
@@ -25990,7 +26378,7 @@ function Chat({
|
|
|
25990
26378
|
promptEditDisabled: isPromptEditDisabled
|
|
25991
26379
|
}
|
|
25992
26380
|
),
|
|
25993
|
-
disclaimer?.text && /* @__PURE__ */
|
|
26381
|
+
disclaimer?.text && /* @__PURE__ */ jsx74(
|
|
25994
26382
|
"p",
|
|
25995
26383
|
{
|
|
25996
26384
|
className: cn(
|
|
@@ -26003,7 +26391,7 @@ function Chat({
|
|
|
26003
26391
|
]
|
|
26004
26392
|
}
|
|
26005
26393
|
),
|
|
26006
|
-
/* @__PURE__ */
|
|
26394
|
+
/* @__PURE__ */ jsx74(
|
|
26007
26395
|
SettingsSheet,
|
|
26008
26396
|
{
|
|
26009
26397
|
open: petSettingsOpen,
|
|
@@ -26013,11 +26401,11 @@ function Chat({
|
|
|
26013
26401
|
onSave: savePetLocalSettings
|
|
26014
26402
|
}
|
|
26015
26403
|
),
|
|
26016
|
-
/* @__PURE__ */
|
|
26404
|
+
/* @__PURE__ */ jsx74(PetBridge, { pet: effectivePet, state: petAutoState })
|
|
26017
26405
|
]
|
|
26018
26406
|
}
|
|
26019
26407
|
),
|
|
26020
|
-
taskSummaryAvailable && taskSummaryDocked && taskSummaryOpen && /* @__PURE__ */
|
|
26408
|
+
taskSummaryAvailable && taskSummaryDocked && taskSummaryOpen && /* @__PURE__ */ jsx74("div", { className: "pointer-events-none absolute right-5 top-3 z-20 max-h-[calc(100%-1.5rem)] w-80", children: /* @__PURE__ */ jsx74(
|
|
26021
26409
|
TaskSummaryPanel,
|
|
26022
26410
|
{
|
|
26023
26411
|
...taskSummaryProps,
|