@xpert-ai/chatkit-ui 0.4.1 → 0.4.3
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-DAi_U6eJ.js → _baseUniq-DUmeJXMF.js} +1 -1
- package/dist/app/assets/{abap-ChIrIedY.js → abap-CAHc26jT.js} +1 -1
- package/dist/app/assets/{abnf-BmyKeVYS.js → abnf-CVkfvAG7.js} +1 -1
- package/dist/app/assets/{actionscript-C9wzeSLx.js → actionscript-BEzJB7WT.js} +1 -1
- package/dist/app/assets/{ada-CnZwIcQD.js → ada-DFt4d8s0.js} +1 -1
- package/dist/app/assets/{agda-BC6tdZrt.js → agda-Dgk-d8Ej.js} +1 -1
- package/dist/app/assets/{al-1IyjxpDM.js → al-CgIwrIi7.js} +1 -1
- package/dist/app/assets/{antlr4-CHd-fyh6.js → antlr4-v8CVE7fu.js} +1 -1
- package/dist/app/assets/{apacheconf-2lN3gJw-.js → apacheconf-DJRGF6BS.js} +1 -1
- package/dist/app/assets/{apex-BlHo9TNy.js → apex-uUgU4D2N.js} +1 -1
- package/dist/app/assets/{apl-LQvIBwOu.js → apl-QLgjdSly.js} +1 -1
- package/dist/app/assets/{applescript-DWoMPELD.js → applescript-BFVeekYt.js} +1 -1
- package/dist/app/assets/{aql-C9S6c12M.js → aql-mHS01Klr.js} +1 -1
- package/dist/app/assets/{arc-Dt2ofM0k.js → arc-CuZh5y_d.js} +1 -1
- package/dist/app/assets/{architectureDiagram-Q4EWVU46-Bt8nuJ35.js → architectureDiagram-Q4EWVU46-Cp-oqFuq.js} +1 -1
- package/dist/app/assets/{arduino-1xWm7Tq4.js → arduino-D3yikoHI.js} +1 -1
- package/dist/app/assets/{arff-COOkNnH1.js → arff-Bzp22yLm.js} +1 -1
- package/dist/app/assets/{asciidoc-DFECG2l7.js → asciidoc-DyMmgwzJ.js} +1 -1
- package/dist/app/assets/{asm6502-CzDAeDcX.js → asm6502-B80D95Jm.js} +1 -1
- package/dist/app/assets/{asmatmel-CBtEsKji.js → asmatmel-D7eDDNLW.js} +1 -1
- package/dist/app/assets/{aspnet-BezxKLhu.js → aspnet-DP6URAXF.js} +1 -1
- package/dist/app/assets/{autohotkey-CHatwkez.js → autohotkey-CkErJpFg.js} +1 -1
- package/dist/app/assets/{autoit-CI77RO6k.js → autoit-BdpOTPpv.js} +1 -1
- package/dist/app/assets/{avisynth-DagCdNDY.js → avisynth-Dmhp2heE.js} +1 -1
- package/dist/app/assets/{avro-idl-Cy1rg8Yn.js → avro-idl-DUhKaWgN.js} +1 -1
- package/dist/app/assets/{bash-BzvlO_s6.js → bash-BivYb6BT.js} +1 -1
- package/dist/app/assets/{basic-MZAshZcs.js → basic-D-8b5r6a.js} +1 -1
- package/dist/app/assets/{batch-czYKl46o.js → batch-BgMIK1_X.js} +1 -1
- package/dist/app/assets/{bbcode-cLlsKGAK.js → bbcode-DVoSXbR6.js} +1 -1
- package/dist/app/assets/{bicep-DZ2Qthyi.js → bicep-DAyvfnBb.js} +1 -1
- package/dist/app/assets/{birb-G8OGp_MU.js → birb-MciDoImB.js} +1 -1
- package/dist/app/assets/{bison-Bskzz9x7.js → bison-MfDz2wSW.js} +1 -1
- package/dist/app/assets/{blockDiagram-DXYQGD6D-BdBXVdp9.js → blockDiagram-DXYQGD6D-D6fzklHs.js} +1 -1
- package/dist/app/assets/{bnf-BOEOLky_.js → bnf-NfFrR8D5.js} +1 -1
- package/dist/app/assets/{brainfuck-h8bJ3DFC.js → brainfuck-ClI8X4SF.js} +1 -1
- package/dist/app/assets/{brightscript-BIR8Gf--.js → brightscript-zS1iu4vq.js} +1 -1
- package/dist/app/assets/{bro-B5XbyZQT.js → bro-DljtPq2D.js} +1 -1
- package/dist/app/assets/{bsl-C-sazznb.js → bsl-hhgsw8vw.js} +1 -1
- package/dist/app/assets/{c-DotRXvuU.js → c-DrpFfWnr.js} +1 -1
- package/dist/app/assets/{c4Diagram-AHTNJAMY-Dd8x_6AZ.js → c4Diagram-AHTNJAMY-DFqBpiK8.js} +1 -1
- package/dist/app/assets/{cfscript-ByuErNyc.js → cfscript-DDb6Lyf6.js} +1 -1
- package/dist/app/assets/{chaiscript-xSeu7-zW.js → chaiscript-DF48gGB2.js} +1 -1
- package/dist/app/assets/channel-DFkA7Odq.js +1 -0
- package/dist/app/assets/{chunk-4BX2VUAB-DZN1JqGD.js → chunk-4BX2VUAB-B12wPqT-.js} +1 -1
- package/dist/app/assets/{chunk-4TB4RGXK-bBSVyHgs.js → chunk-4TB4RGXK-DvBRV7Wa.js} +1 -1
- package/dist/app/assets/{chunk-55IACEB6-Ds-SW37D.js → chunk-55IACEB6-DYYpJnIt.js} +1 -1
- package/dist/app/assets/{chunk-EDXVE4YY-Dri8feOV.js → chunk-EDXVE4YY-C_cgU5oo.js} +1 -1
- package/dist/app/assets/{chunk-FMBD7UC4-DJ8k-IiR.js → chunk-FMBD7UC4-B3gAIARW.js} +1 -1
- package/dist/app/assets/{chunk-OYMX7WX6-k7E98ZJe.js → chunk-OYMX7WX6-DfeuAq49.js} +1 -1
- package/dist/app/assets/{chunk-QZHKN3VN-DJhFI2vO.js → chunk-QZHKN3VN-B_q1wkHk.js} +1 -1
- package/dist/app/assets/{chunk-YZCP3GAM-B1p0s5ao.js → chunk-YZCP3GAM-BI51-5Xl.js} +1 -1
- package/dist/app/assets/{cil-BvhK6LJY.js → cil-5e3EFNQ-.js} +1 -1
- package/dist/app/assets/classDiagram-6PBFFD2Q-BhcMxOX3.js +1 -0
- package/dist/app/assets/classDiagram-v2-HSJHXN6E-BhcMxOX3.js +1 -0
- package/dist/app/assets/{clike-FuCuUpd8.js → clike-CGm019RU.js} +1 -1
- package/dist/app/assets/{clojure-CU75lO9p.js → clojure-EUxmeflx.js} +1 -1
- package/dist/app/assets/clone-D0zp_cmi.js +1 -0
- package/dist/app/assets/{cmake-BRgcPG29.js → cmake-Cx_TgZnP.js} +1 -1
- package/dist/app/assets/{cobol-CTa8YX63.js → cobol-BthqexLq.js} +1 -1
- package/dist/app/assets/{coffeescript-C1tCgHyE.js → coffeescript-Gvi0WUl9.js} +1 -1
- package/dist/app/assets/{concurnas-Wgt7FQyC.js → concurnas-DIsKiUcY.js} +1 -1
- package/dist/app/assets/{coq-CpXQQvmF.js → coq-Cbm4LAk7.js} +1 -1
- package/dist/app/assets/{core-dcDIevRF.js → core-DbOl2YVH.js} +1 -1
- package/dist/app/assets/{cose-bilkent-S5V4N54A-AWnydwPj.js → cose-bilkent-S5V4N54A-tDz06OBa.js} +1 -1
- package/dist/app/assets/{cpp-PopsO2HF.js → cpp-DvM1W1M3.js} +1 -1
- package/dist/app/assets/{crystal-Bkd2nMwS.js → crystal-Cgeclk0-.js} +1 -1
- package/dist/app/assets/{csharp-BA1kER1p.js → csharp-DLajxlCH.js} +1 -1
- package/dist/app/assets/{cshtml-BmNdnWsC.js → cshtml-D4WJuQ28.js} +1 -1
- package/dist/app/assets/{csp-BV7K_LnK.js → csp-DlOt0mll.js} +1 -1
- package/dist/app/assets/{css-D_do90Bs.js → css-BzsDxt7h.js} +1 -1
- package/dist/app/assets/{css-extras-D0dKqzph.js → css-extras-yKv4-OYr.js} +1 -1
- package/dist/app/assets/{csv-Dy2-4DqS.js → csv-Bv1CB32G.js} +1 -1
- package/dist/app/assets/{cypher-Bbt867j9.js → cypher-p1eqx6Jt.js} +1 -1
- package/dist/app/assets/{d-BJKjKDuh.js → d-Beqwk42F.js} +1 -1
- package/dist/app/assets/{dagre-KV5264BT-qACi6DAC.js → dagre-KV5264BT-Bva9KEQ3.js} +1 -1
- package/dist/app/assets/{dart-C7zj4vyl.js → dart-DGUIre7b.js} +1 -1
- package/dist/app/assets/{dataweave-XWkmXL_n.js → dataweave-BKEvzZhX.js} +1 -1
- package/dist/app/assets/{dax-C12CMdhM.js → dax-7DSfOdOt.js} +1 -1
- package/dist/app/assets/{dhall-luyA3uBM.js → dhall-D96qT6GR.js} +1 -1
- package/dist/app/assets/{diagram-5BDNPKRD-D2DNhSOw.js → diagram-5BDNPKRD-BLdVEgIg.js} +1 -1
- package/dist/app/assets/{diagram-G4DWMVQ6-D2e2KRjm.js → diagram-G4DWMVQ6-B1mGc4DZ.js} +1 -1
- package/dist/app/assets/{diagram-MMDJMWI5-knmYakCW.js → diagram-MMDJMWI5-BCbX9vwv.js} +1 -1
- package/dist/app/assets/{diagram-TYMM5635-DORhYdkc.js → diagram-TYMM5635-BbiM5rwX.js} +1 -1
- package/dist/app/assets/{diff-B8UdoaQV.js → diff-BJy0ijGD.js} +1 -1
- package/dist/app/assets/{django-DtYp2PYt.js → django-CA3Li7Xc.js} +1 -1
- package/dist/app/assets/{dns-zone-file-DrtEuPTT.js → dns-zone-file-CQ5FJ0e2.js} +1 -1
- package/dist/app/assets/{docker-2GV5UON2.js → docker-C_jKEoBB.js} +1 -1
- package/dist/app/assets/{dot-OL5v0gu4.js → dot-UuhFwEC4.js} +1 -1
- package/dist/app/assets/{ebnf-C9eB4mQh.js → ebnf-v-JYoSll.js} +1 -1
- package/dist/app/assets/{editorconfig-Bt1KhC9s.js → editorconfig-Be3ygJWd.js} +1 -1
- package/dist/app/assets/{eiffel-5tZX-H1U.js → eiffel-wc_Ly8vK.js} +1 -1
- package/dist/app/assets/{ejs-5X_EH25G.js → ejs-DkUkLWO_.js} +1 -1
- package/dist/app/assets/{elixir-B3cIfaev.js → elixir-D4YWMnOb.js} +1 -1
- package/dist/app/assets/{elm-BZzmZArh.js → elm-DvpgkmZw.js} +1 -1
- package/dist/app/assets/{erDiagram-SMLLAGMA-D6XJaFtW.js → erDiagram-SMLLAGMA-DeYRxjbM.js} +1 -1
- package/dist/app/assets/{erb-B3vztRAF.js → erb-BrK-PMgA.js} +1 -1
- package/dist/app/assets/{erlang-ViBllQb_.js → erlang-BYb5M5Pb.js} +1 -1
- package/dist/app/assets/{etlua-CLh8MAjG.js → etlua-Bhe3IDc-.js} +1 -1
- package/dist/app/assets/{excel-formula-us8LQ5A8.js → excel-formula-jODZlBfX.js} +1 -1
- package/dist/app/assets/{factor-Sxzieg9m.js → factor-BKsD6d0K.js} +1 -1
- package/dist/app/assets/{false-CNugF9H4.js → false-CcGNJYns.js} +1 -1
- package/dist/app/assets/{firestore-security-rules-Xl5Y-ePD.js → firestore-security-rules-5vyxJaeJ.js} +1 -1
- package/dist/app/assets/{flow-275bTxGc.js → flow-NU1izkCa.js} +1 -1
- package/dist/app/assets/{flowDiagram-DWJPFMVM-riJvcRDk.js → flowDiagram-DWJPFMVM-Bj0SYU-k.js} +1 -1
- package/dist/app/assets/{fortran-Dzu99g0z.js → fortran-DCGTQjju.js} +1 -1
- package/dist/app/assets/{fsharp-D0oFScfK.js → fsharp-DNhO6FM-.js} +1 -1
- package/dist/app/assets/{ftl-CgLUYfhw.js → ftl-P_p2wyPG.js} +1 -1
- package/dist/app/assets/{ganttDiagram-T4ZO3ILL-DD-HGvMl.js → ganttDiagram-T4ZO3ILL-Dv-WNsgb.js} +1 -1
- package/dist/app/assets/{gap-B44Er8-4.js → gap-DgF9ZGYZ.js} +1 -1
- package/dist/app/assets/{gcode-DuMJg2M0.js → gcode-CMhuYhvh.js} +1 -1
- package/dist/app/assets/{gdscript-x-7hd2Cg.js → gdscript-BaNvmSXL.js} +1 -1
- package/dist/app/assets/{gedcom-BMCTbYS6.js → gedcom-BLjWW8zc.js} +1 -1
- package/dist/app/assets/{gherkin-BcBvM988.js → gherkin-BxsMbJgE.js} +1 -1
- package/dist/app/assets/{git-BTGg5sN4.js → git-C3JKKGbu.js} +1 -1
- package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-b-kntfTC.js → gitGraphDiagram-UUTBAWPF-antOmae7.js} +1 -1
- package/dist/app/assets/{glsl-DByr37nv.js → glsl-Dy963NrS.js} +1 -1
- package/dist/app/assets/{gml-36I_9f_U.js → gml-RHKUDQYR.js} +1 -1
- package/dist/app/assets/{gn-BLDlPwNQ.js → gn-B5wX0kjQ.js} +1 -1
- package/dist/app/assets/{go-Boj1uPSx.js → go-BO0hAT1N.js} +1 -1
- package/dist/app/assets/{go-module-L2WDzHgB.js → go-module-C2Fr-9ms.js} +1 -1
- package/dist/app/assets/{graph-BYtz-_6s.js → graph-DLqezY1N.js} +1 -1
- package/dist/app/assets/{graphql-BfN-CNvc.js → graphql-D58aRI9g.js} +1 -1
- package/dist/app/assets/{groovy-Di6yQ_XB.js → groovy-IGpaqhY4.js} +1 -1
- package/dist/app/assets/{haml-CJKYBDrb.js → haml-C2z2yhSa.js} +1 -1
- package/dist/app/assets/{handlebars-C_d7SzSb.js → handlebars-BobMlUhh.js} +1 -1
- package/dist/app/assets/{haskell-DvCoQrPY.js → haskell-nIuVVanU.js} +1 -1
- package/dist/app/assets/{haxe-g-aQ5l_r.js → haxe-D5efufya.js} +1 -1
- package/dist/app/assets/{hcl-B2sKOa6X.js → hcl-D9KAZKAO.js} +1 -1
- package/dist/app/assets/{hlsl-DWW7PgMK.js → hlsl-BFWBj6lA.js} +1 -1
- package/dist/app/assets/{hoon-Cgs2pF0p.js → hoon-B5vc2PPa.js} +1 -1
- package/dist/app/assets/{hpkp-PIZ7CodS.js → hpkp-X9Vy-aP4.js} +1 -1
- package/dist/app/assets/{hsts-Bdp-yuRT.js → hsts-BTHtjxYA.js} +1 -1
- package/dist/app/assets/{http-VYp76tRU.js → http-D93SJiT9.js} +1 -1
- package/dist/app/assets/{ichigojam-DvtKARkc.js → ichigojam-DFGOLrmf.js} +1 -1
- package/dist/app/assets/{icon-d06F6rDq.js → icon-BsJxVaoC.js} +1 -1
- package/dist/app/assets/{icu-message-format-aVC9gogJ.js → icu-message-format-C0hqHQFf.js} +1 -1
- package/dist/app/assets/{idris-BQ2Vr1Lo.js → idris-D_XFEa4Y.js} +1 -1
- package/dist/app/assets/{iecst-o62IQ8Ar.js → iecst-BBDx_Apd.js} +1 -1
- package/dist/app/assets/{ignore-CXf2VZ3C.js → ignore-5mrYyBCy.js} +1 -1
- package/dist/app/assets/{index-KkR7szpv.js → index-OJL54NcI.js} +170 -170
- package/dist/app/assets/index-s5_akYUB.css +1 -0
- package/dist/app/assets/{infoDiagram-42DDH7IO-BFBpKPZd.js → infoDiagram-42DDH7IO-DHNCTrQo.js} +1 -1
- package/dist/app/assets/{inform7-CsQNRaGw.js → inform7-D_BK4Whb.js} +1 -1
- package/dist/app/assets/{ini-BlQytVce.js → ini-DHL1U3zm.js} +1 -1
- package/dist/app/assets/{io-Bo6fwZ5O.js → io-Bw7TS_7w.js} +1 -1
- package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-D5AkPKrc.js → ishikawaDiagram-UXIWVN3A-CjewUobx.js} +1 -1
- package/dist/app/assets/{j-Cz5UUgV-.js → j-DfX-jMbV.js} +1 -1
- package/dist/app/assets/{java-CjUD3NXn.js → java-BldkMImw.js} +1 -1
- package/dist/app/assets/{javadoc-yF8ZVFyi.js → javadoc-6dOM24mQ.js} +1 -1
- package/dist/app/assets/{javadoclike-DnQ7gClD.js → javadoclike-BHmZlS5e.js} +1 -1
- package/dist/app/assets/{javascript-PRMAjM-s.js → javascript-FvrzCcvc.js} +1 -1
- package/dist/app/assets/{javastacktrace-C6-F9CMW.js → javastacktrace-Byn0DB0K.js} +1 -1
- package/dist/app/assets/{jexl-oI1gkWTn.js → jexl-CB5kP-Am.js} +1 -1
- package/dist/app/assets/{jolie-KHDj467I.js → jolie-C7Q5mImX.js} +1 -1
- package/dist/app/assets/{journeyDiagram-VCZTEJTY-DgMvhqym.js → journeyDiagram-VCZTEJTY-DD8qNzmh.js} +1 -1
- package/dist/app/assets/{jq-CqB-vLgA.js → jq-C9deMLmZ.js} +1 -1
- package/dist/app/assets/{js-extras--LnkBZGI.js → js-extras-Brhyk9ef.js} +1 -1
- package/dist/app/assets/{js-templates-CdUH3dZg.js → js-templates-DhpXMSuF.js} +1 -1
- package/dist/app/assets/{jsdoc-C8SPD3A9.js → jsdoc-BEesq6va.js} +1 -1
- package/dist/app/assets/{json-CCZ95ADF.js → json-CRGHFhSS.js} +1 -1
- package/dist/app/assets/{json5-CQoP6QWS.js → json5-CbPQgQz7.js} +1 -1
- package/dist/app/assets/{jsonp-BzvcroET.js → jsonp-BBjDy5AO.js} +1 -1
- package/dist/app/assets/{jsstacktrace-D3CXOSM-.js → jsstacktrace-CcOPcdH3.js} +1 -1
- package/dist/app/assets/{jsx-Bd3mMffB.js → jsx-DRgBFrjX.js} +1 -1
- package/dist/app/assets/{julia-qBdVr2Tr.js → julia-DAe7WbG-.js} +1 -1
- package/dist/app/assets/{kanban-definition-6JOO6SKY-DPXkILDM.js → kanban-definition-6JOO6SKY-DgTSO2X8.js} +1 -1
- package/dist/app/assets/{keepalived-FNAJGQz5.js → keepalived-COsmSeDV.js} +1 -1
- package/dist/app/assets/{keyman-B0NqoQM-.js → keyman-Biz_0q7B.js} +1 -1
- package/dist/app/assets/{kotlin-CdWWxHY0.js → kotlin-C3V8Z8W0.js} +1 -1
- package/dist/app/assets/{kumir-bAKuoUwp.js → kumir-clIi7e8-.js} +1 -1
- package/dist/app/assets/{kusto-D1hPCkmo.js → kusto-BhEtzjY8.js} +1 -1
- package/dist/app/assets/{latex-BYk1hc9y.js → latex-kWox6R5Q.js} +1 -1
- package/dist/app/assets/{latte-BWv6hwOU.js → latte-C8Xd4YKa.js} +1 -1
- package/dist/app/assets/{layout-2Js2q7Wp.js → layout-CD5_V8sq.js} +1 -1
- package/dist/app/assets/{less-wnHPSvJJ.js → less-8ceLguvR.js} +1 -1
- package/dist/app/assets/{lilypond-xuX4YO1U.js → lilypond-CfYHEM-K.js} +1 -1
- package/dist/app/assets/{linear-B6WywDat.js → linear-B5jHFagM.js} +1 -1
- package/dist/app/assets/{liquid-xFGU1AAd.js → liquid-BJ6eYcfk.js} +1 -1
- package/dist/app/assets/{lisp-DjvMW89a.js → lisp--smLUoul.js} +1 -1
- package/dist/app/assets/{livescript-D5MDpvjh.js → livescript-BBflhyer.js} +1 -1
- package/dist/app/assets/{llvm-BTbu6b_B.js → llvm-Stc38VbV.js} +1 -1
- package/dist/app/assets/{log-BXtPvqUh.js → log-Dl9NGCxx.js} +1 -1
- package/dist/app/assets/{lolcode-Cg2KO8Bk.js → lolcode-7yqzBped.js} +1 -1
- package/dist/app/assets/{lua-D1_Kwv1l.js → lua-BEWp6yVC.js} +1 -1
- package/dist/app/assets/{magma-DT5ABiea.js → magma-a1ZYdqHu.js} +1 -1
- package/dist/app/assets/{makefile-B0kz2zIF.js → makefile-QpxduTfi.js} +1 -1
- package/dist/app/assets/{markdown-Ccqy3gK-.js → markdown-Dr9rg3gd.js} +1 -1
- package/dist/app/assets/{markup-B-Gm3D06.js → markup-DWdbcYGh.js} +1 -1
- package/dist/app/assets/{markup-templating-CVIiYen0.js → markup-templating-BduvWqLe.js} +1 -1
- package/dist/app/assets/{matlab-CpRokG-g.js → matlab-C9LyN81W.js} +1 -1
- package/dist/app/assets/{maxscript-CifzwyQN.js → maxscript-BMf24IEz.js} +1 -1
- package/dist/app/assets/{mel-CyTX6M-N.js → mel-C_j2S2hb.js} +1 -1
- package/dist/app/assets/{mermaid-DnF0NJk0.js → mermaid-G8stp4Fu.js} +1 -1
- package/dist/app/assets/{min-CeO0o-VZ.js → min-BGvlJ2dI.js} +1 -1
- package/dist/app/assets/{mindmap-definition-QFDTVHPH-C1GLNszO.js → mindmap-definition-QFDTVHPH-Dxkf-h1G.js} +1 -1
- package/dist/app/assets/{mizar-DX-L7mf3.js → mizar-J5U-ieUu.js} +1 -1
- package/dist/app/assets/{mongodb-CrNBr4YD.js → mongodb-DsLKEq_k.js} +1 -1
- package/dist/app/assets/{monkey-EVsyFzXp.js → monkey-lZP0TIai.js} +1 -1
- package/dist/app/assets/{moonscript-Bb5VMmq0.js → moonscript-OiCHzZ6_.js} +1 -1
- package/dist/app/assets/{n1ql-B8avGgLU.js → n1ql-C6sbE8_e.js} +1 -1
- package/dist/app/assets/{n4js-BA_CeBpN.js → n4js-BpPLTwi3.js} +1 -1
- package/dist/app/assets/{nand2tetris-hdl-BNrrwWv7.js → nand2tetris-hdl-BONzgEmL.js} +1 -1
- package/dist/app/assets/{naniscript-PcEQKYGG.js → naniscript-DmYZ1vD6.js} +1 -1
- package/dist/app/assets/{nasm-BF2RPhuG.js → nasm-BfiJTfj8.js} +1 -1
- package/dist/app/assets/{neon-BH4eKGLv.js → neon-CM742PO-.js} +1 -1
- package/dist/app/assets/{nevod-DLUuPv3n.js → nevod-Dlk8fgIJ.js} +1 -1
- package/dist/app/assets/{nginx-Fnshx0R8.js → nginx-BZ-0DFHd.js} +1 -1
- package/dist/app/assets/{nim-D0A0og2Z.js → nim-CU13w-pb.js} +1 -1
- package/dist/app/assets/{nix-Bon-hCg-.js → nix-DKrd4S8j.js} +1 -1
- package/dist/app/assets/{nsis-B0Op3uDI.js → nsis-B6Grq7ob.js} +1 -1
- package/dist/app/assets/{objectivec-CI9W2RmC.js → objectivec-Dbl3oSVf.js} +1 -1
- package/dist/app/assets/{ocaml-CPuytBAo.js → ocaml-Dp6vkH1l.js} +1 -1
- package/dist/app/assets/{opencl-ckicWmRb.js → opencl-BGEl-B5f.js} +1 -1
- package/dist/app/assets/{openqasm-DNNaR-Mb.js → openqasm-CBrpfqoP.js} +1 -1
- package/dist/app/assets/{oz-Cp5S2lvu.js → oz-Bcy_Q3m9.js} +1 -1
- package/dist/app/assets/{parigp-BiU88-BW.js → parigp-C8xRJQCD.js} +1 -1
- package/dist/app/assets/{parser-BJoKleAv.js → parser-Cey9DM6y.js} +1 -1
- package/dist/app/assets/{pascal-CcE4xcIX.js → pascal-l6HUvzh7.js} +1 -1
- package/dist/app/assets/{pascaligo-r-ZE34N3.js → pascaligo-B0R2oVyK.js} +1 -1
- package/dist/app/assets/{pcaxis-CW4NowQv.js → pcaxis-B7gTfCp3.js} +1 -1
- package/dist/app/assets/{peoplecode-Bbokkn0k.js → peoplecode-BrynhEhk.js} +1 -1
- package/dist/app/assets/{perl-NWBFpbg8.js → perl-DGnem1ta.js} +1 -1
- package/dist/app/assets/{php-extras-DvwbSAqp.js → php-extras-UxJ7EW_B.js} +1 -1
- package/dist/app/assets/{php-DzJJC1FF.js → php-ymrnn-Sa.js} +1 -1
- package/dist/app/assets/{phpdoc-vc489EfZ.js → phpdoc-D9_wAKK9.js} +1 -1
- package/dist/app/assets/{pieDiagram-DEJITSTG-DakoqX91.js → pieDiagram-DEJITSTG-DQU88qux.js} +1 -1
- package/dist/app/assets/{plsql-BSYYydG4.js → plsql-DAA7FuKL.js} +1 -1
- package/dist/app/assets/{powerquery-TIsxOi6u.js → powerquery-iAxKW4DJ.js} +1 -1
- package/dist/app/assets/{powershell-Bh2wJ04E.js → powershell-CWnnAMh5.js} +1 -1
- package/dist/app/assets/{processing-0Xg8ooVg.js → processing-Fx5vM2Rk.js} +1 -1
- package/dist/app/assets/{prolog-CxppYjwG.js → prolog-MDMz_07H.js} +1 -1
- package/dist/app/assets/{promql-M_6Fk7_i.js → promql-pDapTiOR.js} +1 -1
- package/dist/app/assets/{properties-DaA3ENH6.js → properties-Cq5vAXr4.js} +1 -1
- package/dist/app/assets/{protobuf-C7yrawyt.js → protobuf-BSKn03IB.js} +1 -1
- package/dist/app/assets/{psl-D7EDqlli.js → psl-DJWnJ0aZ.js} +1 -1
- package/dist/app/assets/{pug-CqBJblJn.js → pug-6thMZc-l.js} +1 -1
- package/dist/app/assets/{puppet-Z388LiOc.js → puppet-DcBfOA0r.js} +1 -1
- package/dist/app/assets/{pure-CXCKqVIH.js → pure-BMCCjO23.js} +1 -1
- package/dist/app/assets/{purebasic-CH-UTkQE.js → purebasic-DUfq0bVz.js} +1 -1
- package/dist/app/assets/{purescript-DvOvPLcm.js → purescript-Bmj-jbV7.js} +1 -1
- package/dist/app/assets/{q-CTsCA7pz.js → q-o6FC2Oci.js} +1 -1
- package/dist/app/assets/{qml-C2L45_tT.js → qml-CaBbPt0f.js} +1 -1
- package/dist/app/assets/{qore-CgIwfQn-.js → qore-C0fJNj2s.js} +1 -1
- package/dist/app/assets/{qsharp-Cfohf27J.js → qsharp-nrwk7Iu2.js} +1 -1
- package/dist/app/assets/{quadrantDiagram-34T5L4WZ-BJHhj_jc.js → quadrantDiagram-34T5L4WZ-DQQGChO4.js} +1 -1
- package/dist/app/assets/{r-C5o21RDe.js → r-s3d67ipT.js} +1 -1
- package/dist/app/assets/{racket-CN9RmGia.js → racket-CvnxUTxS.js} +1 -1
- package/dist/app/assets/{reason-C0TktVj3.js → reason-abnvbDHw.js} +1 -1
- package/dist/app/assets/{regex-BlijmS7y.js → regex-Dyp7nyFE.js} +1 -1
- package/dist/app/assets/{rego-D8yKAPUb.js → rego-D9o_M1Kt.js} +1 -1
- package/dist/app/assets/{renpy-HRBI32Rj.js → renpy-P-s55mrw.js} +1 -1
- package/dist/app/assets/{requirementDiagram-MS252O5E-DlLBwibk.js → requirementDiagram-MS252O5E-CQyaMifY.js} +1 -1
- package/dist/app/assets/{rest--RXtECt5.js → rest-CJGNsPIO.js} +1 -1
- package/dist/app/assets/{rip-mE2Wb308.js → rip--_Kjyshk.js} +1 -1
- package/dist/app/assets/{roboconf-DRTv7VeG.js → roboconf-CzO4IdEr.js} +1 -1
- package/dist/app/assets/{robotframework-BnkzJa4T.js → robotframework-CqMBjau5.js} +1 -1
- package/dist/app/assets/{ruby-CbnYMgfx.js → ruby-CcbP52GS.js} +1 -1
- package/dist/app/assets/{rust-D9ZEey-F.js → rust-BDcJmAdg.js} +1 -1
- package/dist/app/assets/{sankeyDiagram-XADWPNL6-CQ0D4FEy.js → sankeyDiagram-XADWPNL6-BR5ykQyP.js} +1 -1
- package/dist/app/assets/{sas-DEOAT5T8.js → sas-6ZRrxGY4.js} +1 -1
- package/dist/app/assets/{sass-CFnXYw-w.js → sass-LQWASCzx.js} +1 -1
- package/dist/app/assets/{scala-Cdyre3LC.js → scala-dLVC34jC.js} +1 -1
- package/dist/app/assets/{scheme-C7TzUGNb.js → scheme-ljjM-kw4.js} +1 -1
- package/dist/app/assets/{scss-DqOdGhXG.js → scss-BjZr9V6H.js} +1 -1
- package/dist/app/assets/{sequenceDiagram-FGHM5R23-Cliyp3uP.js → sequenceDiagram-FGHM5R23-C_CfyMdO.js} +1 -1
- package/dist/app/assets/{shell-session-C18Fh-Mo.js → shell-session-DN7Q5cOF.js} +1 -1
- package/dist/app/assets/{smali-Ba-NYTBy.js → smali-BSUZr7sT.js} +1 -1
- package/dist/app/assets/{smalltalk-D4_HH51D.js → smalltalk-DNUcII1j.js} +1 -1
- package/dist/app/assets/{smarty-ve8WueLi.js → smarty-w3V8wJ8q.js} +1 -1
- package/dist/app/assets/{sml-B1M_nKm2.js → sml-DSoVmt8E.js} +1 -1
- package/dist/app/assets/{solidity-CIvnWntJ.js → solidity-r-lFr53c.js} +1 -1
- package/dist/app/assets/{solution-file-R2nyikO3.js → solution-file-BE-32cJO.js} +1 -1
- package/dist/app/assets/{soy-C_3SFG7Z.js → soy-BH05VIly.js} +1 -1
- package/dist/app/assets/{sparql-C2k3cKYf.js → sparql-BmZSbo8m.js} +1 -1
- package/dist/app/assets/{splunk-spl-ByIFO0Ol.js → splunk-spl-BBtbm42X.js} +1 -1
- package/dist/app/assets/{sqf-Vjg8AD_x.js → sqf-2G5YaT6f.js} +1 -1
- package/dist/app/assets/{sql-DjDfr2VA.js → sql-BhZO3kQ8.js} +1 -1
- package/dist/app/assets/{squirrel-BlPI0NeA.js → squirrel-6NG1h2a_.js} +1 -1
- package/dist/app/assets/{stan-EA9jmZ4B.js → stan-DlLgeY1f.js} +1 -1
- package/dist/app/assets/{stateDiagram-FHFEXIEX-BaG7xzbX.js → stateDiagram-FHFEXIEX-BK6LRJ_J.js} +1 -1
- package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-kcyyVi9f.js +1 -0
- package/dist/app/assets/{stylus-D2qHhNmV.js → stylus-9MANoABX.js} +1 -1
- package/dist/app/assets/{swift-CzeQnM5g.js → swift-rgVRgAqK.js} +1 -1
- package/dist/app/assets/{systemd-BL_IyZfy.js → systemd-DH306ton.js} +1 -1
- package/dist/app/assets/{t4-cs-BpATtOyQ.js → t4-cs-CqAUhraT.js} +1 -1
- package/dist/app/assets/{t4-templating-DarnFlia.js → t4-templating-CdnkPXAS.js} +1 -1
- package/dist/app/assets/{t4-vb-DlsRn2Cj.js → t4-vb-BGXI99pE.js} +1 -1
- package/dist/app/assets/{tap-swtRUhHW.js → tap-BAZJNbLK.js} +1 -1
- package/dist/app/assets/{tcl-C6d9gcmI.js → tcl-BOEKRtOp.js} +1 -1
- package/dist/app/assets/{textile-ue6vVR7H.js → textile-D7X0Sgyn.js} +1 -1
- package/dist/app/assets/{timeline-definition-GMOUNBTQ-CXGgHbNE.js → timeline-definition-GMOUNBTQ-B_LU5nDM.js} +1 -1
- package/dist/app/assets/{toml-DzLpuKYb.js → toml-CfzGw53h.js} +1 -1
- package/dist/app/assets/{tremor-DVx5napI.js → tremor-DYByk7ar.js} +1 -1
- package/dist/app/assets/{tt2-CfBoG1D5.js → tt2-CNCaPxhQ.js} +1 -1
- package/dist/app/assets/{turtle-03crZiO0.js → turtle-Bzs_at2N.js} +1 -1
- package/dist/app/assets/{twig-KE1rmB-l.js → twig-o2S4KNvE.js} +1 -1
- package/dist/app/assets/{typescript-BdOSmjy2.js → typescript-OnTd0yu3.js} +1 -1
- package/dist/app/assets/{typoscript-B28vjRk7.js → typoscript-CSmcWd5z.js} +1 -1
- package/dist/app/assets/{unrealscript-CTh7n3tv.js → unrealscript-cdAqsg1H.js} +1 -1
- package/dist/app/assets/{uorazor-QSSsUqoY.js → uorazor-It80EI2m.js} +1 -1
- package/dist/app/assets/{uri-Ui2KPDFN.js → uri-DsMi8rd7.js} +1 -1
- package/dist/app/assets/{v-Bbxf1ds9.js → v-B_-3T97Y.js} +1 -1
- package/dist/app/assets/{vala-BlgZ9glv.js → vala-Bege32x4.js} +1 -1
- package/dist/app/assets/{vbnet-DSInurkl.js → vbnet-DxWsZHmf.js} +1 -1
- package/dist/app/assets/{velocity-CpoD6Pq0.js → velocity-D8j2-t5T.js} +1 -1
- package/dist/app/assets/{vennDiagram-DHZGUBPP-Db2TlePA.js → vennDiagram-DHZGUBPP-DfQHyCke.js} +1 -1
- package/dist/app/assets/{verilog-yw--B1wx.js → verilog-BOdg-tSC.js} +1 -1
- package/dist/app/assets/{vhdl-CHBhtgXL.js → vhdl-Ce-nebP4.js} +1 -1
- package/dist/app/assets/{vim-CdXJ9W72.js → vim-Xv1PHa_E.js} +1 -1
- package/dist/app/assets/{visual-basic-DtOe-guS.js → visual-basic-Dxm3bTj4.js} +1 -1
- package/dist/app/assets/{wardley-RL74JXVD-CMqZ314T.js → wardley-RL74JXVD-B6u0ieiH.js} +1 -1
- package/dist/app/assets/{wardleyDiagram-NUSXRM2D-Diu9QsPH.js → wardleyDiagram-NUSXRM2D-DFue6QoQ.js} +1 -1
- package/dist/app/assets/{warpscript-DwowGOOS.js → warpscript-CXGTE5kB.js} +1 -1
- package/dist/app/assets/{wasm-BkLUVFyv.js → wasm-DkO34hDs.js} +1 -1
- package/dist/app/assets/{web-idl-C1GVfRt2.js → web-idl-BPq5ywx_.js} +1 -1
- package/dist/app/assets/{wiki-DURYVzTz.js → wiki-DPqgO5Yt.js} +1 -1
- package/dist/app/assets/{wolfram-CxvLgL5P.js → wolfram-BUOqMX2F.js} +1 -1
- package/dist/app/assets/{wren-BIEilPFe.js → wren-KDTDLR_P.js} +1 -1
- package/dist/app/assets/{xeora-CdxWp6rT.js → xeora-tlwdZtLE.js} +1 -1
- package/dist/app/assets/{xml-doc-Cqq7E-Uw.js → xml-doc-mP74j5_p.js} +1 -1
- package/dist/app/assets/{xojo-TX_aeoYq.js → xojo-C9Z4cCIr.js} +1 -1
- package/dist/app/assets/{xquery-CL0gFxeo.js → xquery-CNxehrYO.js} +1 -1
- package/dist/app/assets/{xychartDiagram-5P7HB3ND-BYaDUge6.js → xychartDiagram-5P7HB3ND-B_zEnzIh.js} +1 -1
- package/dist/app/assets/{yaml-lCG0Z7vx.js → yaml-CYOcRzsc.js} +1 -1
- package/dist/app/assets/{yang-BjQjWvFO.js → yang-CdXyvG4d.js} +1 -1
- package/dist/app/assets/{zig-DMlo7Ol7.js → zig-DisfpEah.js} +1 -1
- package/dist/app/index.html +2 -2
- package/dist/index.cjs +704 -659
- package/dist/index.js +704 -659
- package/package.json +2 -2
- package/dist/app/assets/channel-BFsqVDof.js +0 -1
- package/dist/app/assets/classDiagram-6PBFFD2Q-Bn8c7G_r.js +0 -1
- package/dist/app/assets/classDiagram-v2-HSJHXN6E-Bn8c7G_r.js +0 -1
- package/dist/app/assets/clone-IlBC1DaN.js +0 -1
- package/dist/app/assets/index-ByruneYs.css +0 -1
- package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-CFVaPbpw.js +0 -1
package/dist/index.cjs
CHANGED
|
@@ -11622,7 +11622,7 @@ function appendQuery(path, params) {
|
|
|
11622
11622
|
const query = params.toString();
|
|
11623
11623
|
return query ? `${path}?${query}` : path;
|
|
11624
11624
|
}
|
|
11625
|
-
function buildMcpAppReviveParams(data) {
|
|
11625
|
+
function buildMcpAppReviveParams(data, options) {
|
|
11626
11626
|
const params = new URLSearchParams();
|
|
11627
11627
|
const add = (key, value) => {
|
|
11628
11628
|
if (value) {
|
|
@@ -11635,15 +11635,16 @@ function buildMcpAppReviveParams(data) {
|
|
|
11635
11635
|
add("toolCallId", data.toolCallId);
|
|
11636
11636
|
add("resourceUri", data.resourceUri);
|
|
11637
11637
|
add("title", typeof data.title === "string" ? data.title : void 0);
|
|
11638
|
-
add("
|
|
11638
|
+
add("messageId", options?.messageId);
|
|
11639
|
+
add("token", options?.appInstanceToken ?? data.appInstanceToken);
|
|
11639
11640
|
return params;
|
|
11640
11641
|
}
|
|
11641
|
-
function buildMcpAppEndpointPath(data, endpoint) {
|
|
11642
|
+
function buildMcpAppEndpointPath(data, endpoint, options) {
|
|
11642
11643
|
return appendQuery(
|
|
11643
11644
|
`/api/xpert-toolset/mcp-apps/${encodeURIComponent(
|
|
11644
11645
|
data.appInstanceId
|
|
11645
11646
|
)}/${endpoint}`,
|
|
11646
|
-
buildMcpAppReviveParams(data)
|
|
11647
|
+
buildMcpAppReviveParams(data, options)
|
|
11647
11648
|
);
|
|
11648
11649
|
}
|
|
11649
11650
|
function escapeHtmlAttribute(value) {
|
|
@@ -12102,6 +12103,7 @@ function normalizeMcpAppResourceResponse(value, data) {
|
|
|
12102
12103
|
uri: readString3(raw.uri),
|
|
12103
12104
|
mimeType: readString3(raw.mimeType),
|
|
12104
12105
|
html,
|
|
12106
|
+
appInstanceToken: readString3(raw.appInstanceToken),
|
|
12105
12107
|
resourceUri: readString3(raw.resourceUri),
|
|
12106
12108
|
title: resourceInfo.title,
|
|
12107
12109
|
description: resourceInfo.description,
|
|
@@ -12147,6 +12149,7 @@ function isMcpAppComponentData(data) {
|
|
|
12147
12149
|
}
|
|
12148
12150
|
function McpAppMessage({
|
|
12149
12151
|
data,
|
|
12152
|
+
messageId,
|
|
12150
12153
|
className
|
|
12151
12154
|
}) {
|
|
12152
12155
|
const { i18n: i18n2 } = useChatkitTranslation();
|
|
@@ -12162,6 +12165,7 @@ function McpAppMessage({
|
|
|
12162
12165
|
const sentInitialResultRef = React35.useRef(false);
|
|
12163
12166
|
const modelContextRef = React35.useRef(null);
|
|
12164
12167
|
const [resource, setResource] = React35.useState(null);
|
|
12168
|
+
const [runtimeAppInstanceToken, setRuntimeAppInstanceToken] = React35.useState(data.appInstanceToken);
|
|
12165
12169
|
const [srcDoc, setSrcDoc] = React35.useState(null);
|
|
12166
12170
|
const [height, setHeight] = React35.useState(420);
|
|
12167
12171
|
const [error, setError] = React35.useState(null);
|
|
@@ -12169,16 +12173,21 @@ function McpAppMessage({
|
|
|
12169
12173
|
const resourceUrl = React35.useMemo(
|
|
12170
12174
|
() => buildXpertApiUrl(
|
|
12171
12175
|
apiUrl,
|
|
12172
|
-
buildMcpAppEndpointPath(data, "resource"
|
|
12176
|
+
buildMcpAppEndpointPath(data, "resource", {
|
|
12177
|
+
messageId
|
|
12178
|
+
})
|
|
12173
12179
|
),
|
|
12174
|
-
[apiUrl, data]
|
|
12180
|
+
[apiUrl, data, messageId]
|
|
12175
12181
|
);
|
|
12176
12182
|
const rpcUrl = React35.useMemo(
|
|
12177
12183
|
() => buildXpertApiUrl(
|
|
12178
12184
|
apiUrl,
|
|
12179
|
-
buildMcpAppEndpointPath(data, "rpc"
|
|
12185
|
+
buildMcpAppEndpointPath(data, "rpc", {
|
|
12186
|
+
appInstanceToken: runtimeAppInstanceToken,
|
|
12187
|
+
messageId
|
|
12188
|
+
})
|
|
12180
12189
|
),
|
|
12181
|
-
[apiUrl, data]
|
|
12190
|
+
[apiUrl, data, messageId, runtimeAppInstanceToken]
|
|
12182
12191
|
);
|
|
12183
12192
|
const postToApp = React35.useCallback((message) => {
|
|
12184
12193
|
iframeRef.current?.contentWindow?.postMessage(message, "*");
|
|
@@ -12235,6 +12244,7 @@ function McpAppMessage({
|
|
|
12235
12244
|
const controller = new AbortController();
|
|
12236
12245
|
initializedRef.current = false;
|
|
12237
12246
|
sentInitialResultRef.current = false;
|
|
12247
|
+
setRuntimeAppInstanceToken(data.appInstanceToken);
|
|
12238
12248
|
setIsLoading(true);
|
|
12239
12249
|
setError(null);
|
|
12240
12250
|
setResource(null);
|
|
@@ -12253,6 +12263,9 @@ function McpAppMessage({
|
|
|
12253
12263
|
data
|
|
12254
12264
|
);
|
|
12255
12265
|
setResource(normalizedResource);
|
|
12266
|
+
setRuntimeAppInstanceToken(
|
|
12267
|
+
normalizedResource.appInstanceToken ?? data.appInstanceToken
|
|
12268
|
+
);
|
|
12256
12269
|
const hostLocale = normalizeHostLocale(i18n2.language);
|
|
12257
12270
|
setSrcDoc(
|
|
12258
12271
|
injectMcpAppTheme(
|
|
@@ -12280,6 +12293,7 @@ function McpAppMessage({
|
|
|
12280
12293
|
authenticatedFetch,
|
|
12281
12294
|
data,
|
|
12282
12295
|
data.appInstanceId,
|
|
12296
|
+
data.appInstanceToken,
|
|
12283
12297
|
data.csp,
|
|
12284
12298
|
i18n2.language,
|
|
12285
12299
|
resourceUrl
|
|
@@ -12826,7 +12840,7 @@ function renderContentItem(content, index, message, lookupMessages, options) {
|
|
|
12826
12840
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(WidgetMessage, { messageId, data: content.data }) }, content.id ?? `widget-${index}`);
|
|
12827
12841
|
}
|
|
12828
12842
|
if (isMcpAppComponent(content)) {
|
|
12829
|
-
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(McpAppMessage, { data: content.data }) }, content.id ?? `mcp-app-${index}`);
|
|
12843
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(McpAppMessage, { messageId, data: content.data }) }, content.id ?? `mcp-app-${index}`);
|
|
12830
12844
|
}
|
|
12831
12845
|
if (getComponentMessagePresentation(content, getToolStepData(content)) === "grouped-step") {
|
|
12832
12846
|
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
@@ -17081,6 +17095,13 @@ function Chat({
|
|
|
17081
17095
|
fallbackTitle: t("history.threadFallback")
|
|
17082
17096
|
});
|
|
17083
17097
|
const assistantTitle = assistantName || resolvedTitle;
|
|
17098
|
+
const layoutMaxWidth = options?.layout?.maxWidth;
|
|
17099
|
+
const chatColumnStyle = React49.useMemo(() => {
|
|
17100
|
+
if (layoutMaxWidth === void 0 || layoutMaxWidth === null || layoutMaxWidth === "") {
|
|
17101
|
+
return void 0;
|
|
17102
|
+
}
|
|
17103
|
+
return { maxWidth: layoutMaxWidth };
|
|
17104
|
+
}, [layoutMaxWidth]);
|
|
17084
17105
|
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17085
17106
|
UploadDroppedFiles,
|
|
17086
17107
|
{
|
|
@@ -17096,309 +17117,325 @@ function Chat({
|
|
|
17096
17117
|
className
|
|
17097
17118
|
),
|
|
17098
17119
|
children: [
|
|
17099
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17100
|
-
|
|
17101
|
-
|
|
17102
|
-
|
|
17103
|
-
|
|
17104
|
-
|
|
17105
|
-
|
|
17106
|
-
|
|
17107
|
-
|
|
17108
|
-
|
|
17109
|
-
|
|
17110
|
-
|
|
17111
|
-
|
|
17112
|
-
|
|
17113
|
-
|
|
17114
|
-
|
|
17115
|
-
{
|
|
17116
|
-
className: "text-lg font-semibold truncate",
|
|
17117
|
-
title: assistantTitle,
|
|
17118
|
-
children: assistantTitle
|
|
17119
|
-
}
|
|
17120
|
-
),
|
|
17121
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
|
|
17122
|
-
] })
|
|
17123
|
-
] }),
|
|
17124
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
17125
|
-
canMinimizeToPet && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17126
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17127
|
-
"button",
|
|
17128
|
-
{
|
|
17129
|
-
type: "button",
|
|
17130
|
-
onClick: handleMinimizeToPet,
|
|
17131
|
-
className: cn(
|
|
17132
|
-
"flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
|
|
17133
|
-
"text-muted-foreground hover:text-foreground hover:bg-muted",
|
|
17134
|
-
"transition-colors duration-150"
|
|
17120
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17121
|
+
"div",
|
|
17122
|
+
{
|
|
17123
|
+
"data-slot": "chatkit-chat-header",
|
|
17124
|
+
className: "mx-auto flex w-full items-center justify-between border-b p-2 sticky top-0 z-10 bg-background",
|
|
17125
|
+
style: chatColumnStyle,
|
|
17126
|
+
children: [
|
|
17127
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 overflow-hidden", children: [
|
|
17128
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "relative shrink-0", children: [
|
|
17129
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17130
|
+
ChatkitAvatar,
|
|
17131
|
+
{
|
|
17132
|
+
avatar: assistantAvatar,
|
|
17133
|
+
className: "h-9 w-9 border border-border/60",
|
|
17134
|
+
label: assistantTitle
|
|
17135
|
+
}
|
|
17135
17136
|
),
|
|
17136
|
-
"
|
|
17137
|
-
|
|
17138
|
-
|
|
17139
|
-
|
|
17140
|
-
|
|
17141
|
-
|
|
17142
|
-
|
|
17143
|
-
|
|
17144
|
-
|
|
17145
|
-
|
|
17146
|
-
type: "button",
|
|
17147
|
-
onClick: () => setPetSettingsOpen(true),
|
|
17148
|
-
className: cn(
|
|
17149
|
-
"flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
|
|
17150
|
-
"text-muted-foreground hover:text-foreground hover:bg-muted",
|
|
17151
|
-
"transition-colors duration-150"
|
|
17137
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
|
|
17138
|
+
] }),
|
|
17139
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "truncate", children: [
|
|
17140
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17141
|
+
"h2",
|
|
17142
|
+
{
|
|
17143
|
+
className: "text-lg font-semibold truncate",
|
|
17144
|
+
title: assistantTitle,
|
|
17145
|
+
children: assistantTitle
|
|
17146
|
+
}
|
|
17152
17147
|
),
|
|
17153
|
-
"
|
|
17154
|
-
|
|
17155
|
-
}
|
|
17156
|
-
) }) }),
|
|
17157
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
|
|
17158
|
-
] }),
|
|
17159
|
-
history?.enabled !== false && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
|
|
17160
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17161
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17162
|
-
"button",
|
|
17163
|
-
{
|
|
17164
|
-
type: "button",
|
|
17165
|
-
onClick: handleNewThread,
|
|
17166
|
-
disabled: missingConfig || isHistoryLoading,
|
|
17167
|
-
className: cn(
|
|
17168
|
-
"flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
|
|
17169
|
-
"text-muted-foreground hover:text-foreground hover:bg-muted",
|
|
17170
|
-
"transition-colors duration-150",
|
|
17171
|
-
"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
|
|
17172
|
-
),
|
|
17173
|
-
"aria-label": t("history.newThread"),
|
|
17174
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { size: 16 })
|
|
17175
|
-
}
|
|
17176
|
-
) }) }),
|
|
17177
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
|
|
17148
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
|
|
17149
|
+
] })
|
|
17178
17150
|
] }),
|
|
17179
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.
|
|
17180
|
-
|
|
17181
|
-
|
|
17182
|
-
|
|
17183
|
-
|
|
17184
|
-
|
|
17185
|
-
|
|
17186
|
-
|
|
17187
|
-
|
|
17188
|
-
|
|
17189
|
-
|
|
17190
|
-
|
|
17191
|
-
|
|
17192
|
-
|
|
17193
|
-
|
|
17194
|
-
|
|
17195
|
-
|
|
17196
|
-
|
|
17197
|
-
|
|
17198
|
-
|
|
17199
|
-
|
|
17200
|
-
|
|
17201
|
-
|
|
17202
|
-
|
|
17203
|
-
|
|
17204
|
-
|
|
17205
|
-
|
|
17206
|
-
|
|
17207
|
-
|
|
17208
|
-
|
|
17209
|
-
|
|
17210
|
-
|
|
17211
|
-
|
|
17212
|
-
|
|
17151
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
17152
|
+
canMinimizeToPet && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17153
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17154
|
+
"button",
|
|
17155
|
+
{
|
|
17156
|
+
type: "button",
|
|
17157
|
+
onClick: handleMinimizeToPet,
|
|
17158
|
+
className: cn(
|
|
17159
|
+
"flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
|
|
17160
|
+
"text-muted-foreground hover:text-foreground hover:bg-muted",
|
|
17161
|
+
"transition-colors duration-150"
|
|
17162
|
+
),
|
|
17163
|
+
"aria-label": t("chat.minimizeToPet"),
|
|
17164
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Minus, { size: 16 })
|
|
17165
|
+
}
|
|
17166
|
+
) }) }),
|
|
17167
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("chat.minimizeToPet") })
|
|
17168
|
+
] }),
|
|
17169
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17170
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17171
|
+
"button",
|
|
17172
|
+
{
|
|
17173
|
+
type: "button",
|
|
17174
|
+
onClick: () => setPetSettingsOpen(true),
|
|
17175
|
+
className: cn(
|
|
17176
|
+
"flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
|
|
17177
|
+
"text-muted-foreground hover:text-foreground hover:bg-muted",
|
|
17178
|
+
"transition-colors duration-150"
|
|
17179
|
+
),
|
|
17180
|
+
"aria-label": t("settings.open"),
|
|
17181
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Settings, { size: 16 })
|
|
17182
|
+
}
|
|
17183
|
+
) }) }),
|
|
17184
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("settings.open") })
|
|
17185
|
+
] }),
|
|
17186
|
+
history?.enabled !== false && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
|
|
17187
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17188
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17189
|
+
"button",
|
|
17190
|
+
{
|
|
17191
|
+
type: "button",
|
|
17192
|
+
onClick: handleNewThread,
|
|
17193
|
+
disabled: missingConfig || isHistoryLoading,
|
|
17194
|
+
className: cn(
|
|
17195
|
+
"flex h-8 w-8 cursor-pointer items-center justify-center rounded-md",
|
|
17196
|
+
"text-muted-foreground hover:text-foreground hover:bg-muted",
|
|
17197
|
+
"transition-colors duration-150",
|
|
17198
|
+
"disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
|
|
17199
|
+
),
|
|
17200
|
+
"aria-label": t("history.newThread"),
|
|
17201
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { size: 16 })
|
|
17202
|
+
}
|
|
17203
|
+
) }) }),
|
|
17204
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { side: "bottom", children: t("history.newThread") })
|
|
17205
|
+
] }),
|
|
17206
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17207
|
+
HistorySidebar,
|
|
17208
|
+
{
|
|
17209
|
+
threads,
|
|
17210
|
+
currentThreadId: stream.threadId ?? void 0,
|
|
17211
|
+
onNewThread: handleNewThread,
|
|
17212
|
+
onSelectThread: handleSelectThread,
|
|
17213
|
+
onDeleteThread: handleDeleteThread,
|
|
17214
|
+
showDelete: history?.showDelete !== false,
|
|
17215
|
+
disabled: missingConfig || isThreadsLoading || isHistoryLoading
|
|
17216
|
+
}
|
|
17217
|
+
)
|
|
17218
|
+
] })
|
|
17219
|
+
] })
|
|
17220
|
+
]
|
|
17221
|
+
}
|
|
17222
|
+
),
|
|
17223
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17224
|
+
"div",
|
|
17225
|
+
{
|
|
17226
|
+
"data-slot": "chatkit-chat-content",
|
|
17227
|
+
className: "mx-auto w-full flex-1 p-4",
|
|
17228
|
+
style: chatColumnStyle,
|
|
17229
|
+
children: [
|
|
17230
|
+
errorMessage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
|
|
17231
|
+
historyError && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
|
|
17232
|
+
showMissingConfig && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
|
|
17233
|
+
isHistoryLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
|
|
17234
|
+
messages.length === 0 && !canLoadMoreMessages ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17235
|
+
StartScreen,
|
|
17213
17236
|
{
|
|
17214
|
-
|
|
17215
|
-
|
|
17216
|
-
|
|
17217
|
-
|
|
17218
|
-
|
|
17219
|
-
className: "h-7 px-2 text-xs font-medium text-muted-foreground hover:text-foreground",
|
|
17220
|
-
children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
|
|
17237
|
+
startScreen,
|
|
17238
|
+
onPromptClick: handlePromptClick,
|
|
17239
|
+
onPromptEdit: handlePromptEdit,
|
|
17240
|
+
promptSendDisabled: isSubmissionBlocked,
|
|
17241
|
+
promptEditDisabled: isPromptEditDisabled
|
|
17221
17242
|
}
|
|
17222
|
-
),
|
|
17223
|
-
|
|
17224
|
-
|
|
17225
|
-
|
|
17226
|
-
|
|
17227
|
-
|
|
17228
|
-
|
|
17229
|
-
|
|
17230
|
-
|
|
17231
|
-
|
|
17232
|
-
|
|
17233
|
-
|
|
17234
|
-
|
|
17235
|
-
|
|
17236
|
-
) : null;
|
|
17237
|
-
if (isAssistantMessage && !hasRenderableAssistantMessage(message) && !streamingStatus) {
|
|
17238
|
-
return null;
|
|
17239
|
-
}
|
|
17240
|
-
const messageContent = typeof message.content === "string" ? message.content : Array.isArray(message.content) ? message.content.map((part) => formatMessageContent(part)).join("") : formatMessageContent(message.content);
|
|
17241
|
-
const hasPlainRenderableContent = messageContent.trim().length > 0;
|
|
17242
|
-
const humanMessage = message;
|
|
17243
|
-
const humanReferences = humanMessage.references ?? [];
|
|
17244
|
-
const humanAttachments = [
|
|
17245
|
-
...humanMessage.fileAssets ?? [],
|
|
17246
|
-
...humanMessage.attachments ?? []
|
|
17247
|
-
];
|
|
17248
|
-
const humanRuntimeCapabilityOptions = message.type === "human" ? humanMessage.runtimeCapabilityOptions ?? getSelectedRuntimeCapabilityOptions(
|
|
17249
|
-
getRecommendedRuntimeCapabilitiesSelection(
|
|
17250
|
-
humanMessage.runtimeCapabilities
|
|
17251
|
-
),
|
|
17252
|
-
runtimeCapabilityOptions
|
|
17253
|
-
) : [];
|
|
17254
|
-
const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
|
|
17255
|
-
const canQuoteMessage = message.type === "human" || isAssistantMessage;
|
|
17256
|
-
const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
|
|
17257
|
-
if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
|
|
17258
|
-
return null;
|
|
17259
|
-
}
|
|
17260
|
-
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17261
|
-
"div",
|
|
17262
|
-
{
|
|
17263
|
-
className: cn(
|
|
17264
|
-
"group flex gap-3",
|
|
17265
|
-
message.type === "human" ? "justify-end" : "justify-start -ml-1"
|
|
17266
|
-
// AI messages: slightly closer to left
|
|
17243
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "space-y-4", children: [
|
|
17244
|
+
canLoadMoreMessages && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex items-center gap-3 py-1", children: [
|
|
17245
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" }),
|
|
17246
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17247
|
+
Button,
|
|
17248
|
+
{
|
|
17249
|
+
type: "button",
|
|
17250
|
+
variant: "ghost",
|
|
17251
|
+
size: "sm",
|
|
17252
|
+
onClick: handleLoadMoreMessages,
|
|
17253
|
+
disabled: isLoadingMoreMessages,
|
|
17254
|
+
className: "h-7 px-2 text-xs font-medium text-muted-foreground hover:text-foreground",
|
|
17255
|
+
children: isLoadingMoreMessages ? t("chat.loadingMoreMessages") : t("chat.loadMoreMessages")
|
|
17256
|
+
}
|
|
17267
17257
|
),
|
|
17268
|
-
|
|
17258
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "h-px min-w-8 flex-1 bg-border" })
|
|
17259
|
+
] }),
|
|
17260
|
+
messages.map((message, index) => {
|
|
17261
|
+
const messageType = String(message.type);
|
|
17262
|
+
const isAssistantMessage = messageType === "assistant" || messageType === "ai";
|
|
17263
|
+
const isStreamingMessage = stream.isLoading && index === messages.length - 1;
|
|
17264
|
+
const streamingStatus = isAssistantMessage ? getAssistantStreamingStatus(
|
|
17265
|
+
{
|
|
17266
|
+
...message,
|
|
17267
|
+
lastStreamOutputAt: lastStreamOutputAtRef.current
|
|
17268
|
+
},
|
|
17269
|
+
isStreamingMessage,
|
|
17270
|
+
{ now: streamingNow }
|
|
17271
|
+
) : null;
|
|
17272
|
+
if (isAssistantMessage && !hasRenderableAssistantMessage(message) && !streamingStatus) {
|
|
17273
|
+
return null;
|
|
17274
|
+
}
|
|
17275
|
+
const messageContent = typeof message.content === "string" ? message.content : Array.isArray(message.content) ? message.content.map((part) => formatMessageContent(part)).join("") : formatMessageContent(message.content);
|
|
17276
|
+
const hasPlainRenderableContent = messageContent.trim().length > 0;
|
|
17277
|
+
const humanMessage = message;
|
|
17278
|
+
const humanReferences = humanMessage.references ?? [];
|
|
17279
|
+
const humanAttachments = [
|
|
17280
|
+
...humanMessage.fileAssets ?? [],
|
|
17281
|
+
...humanMessage.attachments ?? []
|
|
17282
|
+
];
|
|
17283
|
+
const humanRuntimeCapabilityOptions = message.type === "human" ? humanMessage.runtimeCapabilityOptions ?? getSelectedRuntimeCapabilityOptions(
|
|
17284
|
+
getRecommendedRuntimeCapabilitiesSelection(
|
|
17285
|
+
humanMessage.runtimeCapabilities
|
|
17286
|
+
),
|
|
17287
|
+
runtimeCapabilityOptions
|
|
17288
|
+
) : [];
|
|
17289
|
+
const hasHumanAttachments = message.type === "human" && humanAttachments.length > 0;
|
|
17290
|
+
const canQuoteMessage = message.type === "human" || isAssistantMessage;
|
|
17291
|
+
const quoteSource = message.type === "human" ? t("chat.youLabel") : assistantTitle;
|
|
17292
|
+
if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
|
|
17293
|
+
return null;
|
|
17294
|
+
}
|
|
17295
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17269
17296
|
"div",
|
|
17270
17297
|
{
|
|
17271
17298
|
className: cn(
|
|
17272
|
-
"
|
|
17273
|
-
|
|
17299
|
+
"group flex gap-3",
|
|
17300
|
+
message.type === "human" ? "justify-end" : "justify-start -ml-1"
|
|
17301
|
+
// AI messages: slightly closer to left
|
|
17274
17302
|
),
|
|
17275
|
-
children:
|
|
17276
|
-
|
|
17277
|
-
|
|
17278
|
-
|
|
17279
|
-
|
|
17280
|
-
|
|
17281
|
-
|
|
17282
|
-
|
|
17283
|
-
|
|
17284
|
-
"
|
|
17285
|
-
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"
|
|
17286
|
-
// AI messages: use chat-specific foreground color
|
|
17287
|
-
),
|
|
17288
|
-
children: isAssistantMessage ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17289
|
-
AssistantMessage,
|
|
17303
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17304
|
+
"div",
|
|
17305
|
+
{
|
|
17306
|
+
className: cn(
|
|
17307
|
+
"flex flex-col px-3 overflow-hidden",
|
|
17308
|
+
isAssistantMessage && "min-w-0 flex-1"
|
|
17309
|
+
),
|
|
17310
|
+
children: [
|
|
17311
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17312
|
+
"div",
|
|
17290
17313
|
{
|
|
17291
|
-
|
|
17292
|
-
|
|
17293
|
-
|
|
17294
|
-
},
|
|
17295
|
-
|
|
17296
|
-
|
|
17297
|
-
|
|
17298
|
-
|
|
17299
|
-
})
|
|
17314
|
+
...canQuoteMessage ? {
|
|
17315
|
+
"data-quote-message-id": message.id,
|
|
17316
|
+
"data-quote-source": quoteSource
|
|
17317
|
+
} : {},
|
|
17318
|
+
className: cn(
|
|
17319
|
+
"max-w-full rounded-2xl",
|
|
17320
|
+
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"
|
|
17321
|
+
// AI messages: use chat-specific foreground color
|
|
17300
17322
|
),
|
|
17323
|
+
children: isAssistantMessage ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17324
|
+
AssistantMessage,
|
|
17325
|
+
{
|
|
17326
|
+
message: {
|
|
17327
|
+
...message,
|
|
17328
|
+
type: "assistant"
|
|
17329
|
+
},
|
|
17330
|
+
messages: messages.slice(0, index + 1).map(
|
|
17331
|
+
(item) => ({
|
|
17332
|
+
...item,
|
|
17333
|
+
type: String(item.type) === "ai" ? "assistant" : item.type
|
|
17334
|
+
})
|
|
17335
|
+
),
|
|
17336
|
+
isStreaming: isStreamingMessage,
|
|
17337
|
+
streamingStatus,
|
|
17338
|
+
isThreadRunning: currentThreadIsRunning,
|
|
17339
|
+
organizationId: stream.organizationId,
|
|
17340
|
+
apiUrl: stream.apiUrl
|
|
17341
|
+
}
|
|
17342
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_jsx_runtime54.Fragment, { children: [
|
|
17343
|
+
message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17344
|
+
"span",
|
|
17345
|
+
{
|
|
17346
|
+
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",
|
|
17347
|
+
children: [
|
|
17348
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17349
|
+
RuntimeCapabilityIcon,
|
|
17350
|
+
{
|
|
17351
|
+
option,
|
|
17352
|
+
variant: "chip"
|
|
17353
|
+
}
|
|
17354
|
+
),
|
|
17355
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[9rem] truncate", children: option.label })
|
|
17356
|
+
]
|
|
17357
|
+
},
|
|
17358
|
+
`${option.type}:${option.id}`
|
|
17359
|
+
)) }),
|
|
17360
|
+
message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17361
|
+
ReferenceChip,
|
|
17362
|
+
{
|
|
17363
|
+
reference,
|
|
17364
|
+
variant: "message"
|
|
17365
|
+
},
|
|
17366
|
+
getReferenceKey(reference)
|
|
17367
|
+
)) }),
|
|
17368
|
+
message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17369
|
+
"div",
|
|
17370
|
+
{
|
|
17371
|
+
className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
|
|
17372
|
+
children: [
|
|
17373
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.FileText, { size: 12 }),
|
|
17374
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-[100px] truncate", children: file.originalName ?? file.id })
|
|
17375
|
+
]
|
|
17376
|
+
},
|
|
17377
|
+
fileIndex
|
|
17378
|
+
)) }),
|
|
17379
|
+
Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17380
|
+
"p",
|
|
17381
|
+
{
|
|
17382
|
+
className: "wrap-break-word text-sm leading-relaxed",
|
|
17383
|
+
children: formatMessageContent(part)
|
|
17384
|
+
},
|
|
17385
|
+
`${part.type}-${partIndex}`
|
|
17386
|
+
)) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
|
|
17387
|
+
] })
|
|
17388
|
+
}
|
|
17389
|
+
),
|
|
17390
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17391
|
+
MessageActions,
|
|
17392
|
+
{
|
|
17393
|
+
content: messageContent,
|
|
17394
|
+
isAssistant: isAssistantMessage,
|
|
17301
17395
|
isStreaming: isStreamingMessage,
|
|
17302
|
-
|
|
17303
|
-
isThreadRunning: currentThreadIsRunning,
|
|
17304
|
-
organizationId: stream.organizationId,
|
|
17305
|
-
apiUrl: stream.apiUrl
|
|
17396
|
+
onRetry: isAssistantMessage && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
|
|
17306
17397
|
}
|
|
17307
|
-
)
|
|
17308
|
-
|
|
17309
|
-
|
|
17310
|
-
|
|
17311
|
-
|
|
17312
|
-
|
|
17313
|
-
|
|
17314
|
-
|
|
17315
|
-
|
|
17316
|
-
|
|
17317
|
-
|
|
17318
|
-
|
|
17319
|
-
|
|
17320
|
-
|
|
17321
|
-
|
|
17322
|
-
|
|
17323
|
-
|
|
17324
|
-
|
|
17325
|
-
|
|
17326
|
-
|
|
17327
|
-
|
|
17328
|
-
|
|
17329
|
-
|
|
17330
|
-
|
|
17331
|
-
|
|
17332
|
-
|
|
17333
|
-
|
|
17334
|
-
|
|
17335
|
-
|
|
17336
|
-
|
|
17337
|
-
|
|
17338
|
-
|
|
17339
|
-
|
|
17340
|
-
|
|
17341
|
-
},
|
|
17342
|
-
fileIndex
|
|
17343
|
-
)) }),
|
|
17344
|
-
Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17345
|
-
"p",
|
|
17346
|
-
{
|
|
17347
|
-
className: "wrap-break-word text-sm leading-relaxed",
|
|
17348
|
-
children: formatMessageContent(part)
|
|
17349
|
-
},
|
|
17350
|
-
`${part.type}-${partIndex}`
|
|
17351
|
-
)) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
|
|
17352
|
-
] })
|
|
17353
|
-
}
|
|
17354
|
-
),
|
|
17355
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17356
|
-
MessageActions,
|
|
17357
|
-
{
|
|
17358
|
-
content: messageContent,
|
|
17359
|
-
isAssistant: isAssistantMessage,
|
|
17360
|
-
isStreaming: isStreamingMessage,
|
|
17361
|
-
onRetry: isAssistantMessage && !stream.isLoading && index === messages.length - 1 ? () => handleRetry(index) : void 0
|
|
17362
|
-
}
|
|
17363
|
-
)
|
|
17364
|
-
]
|
|
17398
|
+
)
|
|
17399
|
+
]
|
|
17400
|
+
}
|
|
17401
|
+
)
|
|
17402
|
+
},
|
|
17403
|
+
message.id ?? `${message.type}-${index}`
|
|
17404
|
+
);
|
|
17405
|
+
}),
|
|
17406
|
+
showLoadingDots && (() => {
|
|
17407
|
+
const lastMessage = messages[messages.length - 1];
|
|
17408
|
+
const lastMessageType = lastMessage ? String(lastMessage.type) : "";
|
|
17409
|
+
const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
|
|
17410
|
+
const lastAssistantStatus = isLastMessageFromAI ? getAssistantStreamingStatus(
|
|
17411
|
+
{
|
|
17412
|
+
...lastMessage,
|
|
17413
|
+
lastStreamOutputAt: lastStreamOutputAtRef.current
|
|
17414
|
+
},
|
|
17415
|
+
stream.isLoading,
|
|
17416
|
+
{ now: streamingNow }
|
|
17417
|
+
) : null;
|
|
17418
|
+
if (lastAssistantStatus) return null;
|
|
17419
|
+
const fallbackStreamingStatus = getAssistantStreamingStatus(
|
|
17420
|
+
{
|
|
17421
|
+
status: void 0,
|
|
17422
|
+
reasoning: void 0,
|
|
17423
|
+
lastStreamOutputAt: lastStreamOutputAtRef.current
|
|
17424
|
+
},
|
|
17425
|
+
stream.isLoading,
|
|
17426
|
+
{ now: streamingNow }
|
|
17427
|
+
);
|
|
17428
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17429
|
+
AssistantStreamingIndicator,
|
|
17430
|
+
{
|
|
17431
|
+
status: fallbackStreamingStatus ?? "loading"
|
|
17365
17432
|
}
|
|
17366
|
-
)
|
|
17367
|
-
}
|
|
17368
|
-
|
|
17369
|
-
|
|
17370
|
-
|
|
17371
|
-
|
|
17372
|
-
const lastMessage = messages[messages.length - 1];
|
|
17373
|
-
const lastMessageType = lastMessage ? String(lastMessage.type) : "";
|
|
17374
|
-
const isLastMessageFromAI = lastMessageType === "ai" || lastMessageType === "assistant";
|
|
17375
|
-
const lastAssistantStatus = isLastMessageFromAI ? getAssistantStreamingStatus(
|
|
17376
|
-
{
|
|
17377
|
-
...lastMessage,
|
|
17378
|
-
lastStreamOutputAt: lastStreamOutputAtRef.current
|
|
17379
|
-
},
|
|
17380
|
-
stream.isLoading,
|
|
17381
|
-
{ now: streamingNow }
|
|
17382
|
-
) : null;
|
|
17383
|
-
if (lastAssistantStatus) return null;
|
|
17384
|
-
const fallbackStreamingStatus = getAssistantStreamingStatus(
|
|
17385
|
-
{
|
|
17386
|
-
status: void 0,
|
|
17387
|
-
reasoning: void 0,
|
|
17388
|
-
lastStreamOutputAt: lastStreamOutputAtRef.current
|
|
17389
|
-
},
|
|
17390
|
-
stream.isLoading,
|
|
17391
|
-
{ now: streamingNow }
|
|
17392
|
-
);
|
|
17393
|
-
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17394
|
-
AssistantStreamingIndicator,
|
|
17395
|
-
{
|
|
17396
|
-
status: fallbackStreamingStatus ?? "loading"
|
|
17397
|
-
}
|
|
17398
|
-
) }) });
|
|
17399
|
-
})()
|
|
17400
|
-
] })
|
|
17401
|
-
] }),
|
|
17433
|
+
) }) });
|
|
17434
|
+
})()
|
|
17435
|
+
] })
|
|
17436
|
+
]
|
|
17437
|
+
}
|
|
17438
|
+
),
|
|
17402
17439
|
!isAtBottom && messages.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "sticky bottom-20 z-20 flex justify-center px-4 pointer-events-none", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17403
17440
|
Button,
|
|
17404
17441
|
{
|
|
@@ -17443,386 +17480,394 @@ function Chat({
|
|
|
17443
17480
|
)
|
|
17444
17481
|
}
|
|
17445
17482
|
),
|
|
17446
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17447
|
-
|
|
17448
|
-
|
|
17449
|
-
|
|
17450
|
-
|
|
17451
|
-
|
|
17452
|
-
|
|
17453
|
-
|
|
17454
|
-
|
|
17455
|
-
|
|
17456
|
-
|
|
17457
|
-
|
|
17458
|
-
|
|
17459
|
-
|
|
17460
|
-
|
|
17461
|
-
|
|
17462
|
-
|
|
17463
|
-
|
|
17464
|
-
|
|
17465
|
-
|
|
17466
|
-
|
|
17467
|
-
onRemove: () => setReferences(
|
|
17468
|
-
(previous) => previous.filter(
|
|
17469
|
-
(item) => getReferenceKey(item) !== getReferenceKey(reference)
|
|
17470
|
-
)
|
|
17471
|
-
),
|
|
17472
|
-
removeLabel: t("composer.removeReference")
|
|
17473
|
-
},
|
|
17474
|
-
getReferenceKey(reference)
|
|
17475
|
-
)) }),
|
|
17476
|
-
detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
|
|
17477
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
|
|
17478
|
-
detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17479
|
-
"span",
|
|
17480
|
-
{
|
|
17481
|
-
className: "inline-flex max-w-full items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",
|
|
17482
|
-
children: [
|
|
17483
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RuntimeCapabilityIcon, { option, variant: "chip" }),
|
|
17484
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-40 truncate", children: option.label }),
|
|
17485
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17486
|
-
"button",
|
|
17487
|
-
{
|
|
17488
|
-
type: "button",
|
|
17489
|
-
onClick: () => removeRunRuntimeCapability(option),
|
|
17490
|
-
className: "rounded-full p-0.5 hover:bg-primary/15",
|
|
17491
|
-
title: t("composer.capabilities.removeRunCapability"),
|
|
17492
|
-
"aria-label": t("composer.capabilities.removeRunCapability"),
|
|
17493
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 11 })
|
|
17494
|
-
}
|
|
17495
|
-
)
|
|
17496
|
-
]
|
|
17497
|
-
},
|
|
17498
|
-
`${option.type}:${option.id}`
|
|
17499
|
-
))
|
|
17500
|
-
] }),
|
|
17501
|
-
showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17502
|
-
"div",
|
|
17503
|
-
{
|
|
17504
|
-
className: cn(
|
|
17505
|
-
"mb-2 flex min-h-10 gap-2 rounded-md border border-border bg-background px-2.5 py-2 text-xs text-foreground shadow-sm",
|
|
17506
|
-
isGoalObjectiveExpanded ? "items-start" : "items-center"
|
|
17483
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17484
|
+
"div",
|
|
17485
|
+
{
|
|
17486
|
+
"data-slot": "chatkit-chat-composer",
|
|
17487
|
+
className: "mx-auto w-full p-2 sticky bottom-0 z-10 bg-background",
|
|
17488
|
+
style: chatColumnStyle,
|
|
17489
|
+
children: [
|
|
17490
|
+
threadErrorMessage && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-3 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive overflow-auto", children: threadErrorMessage }),
|
|
17491
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17492
|
+
ChatAttachments,
|
|
17493
|
+
{
|
|
17494
|
+
ref: attachmentsRef,
|
|
17495
|
+
accept: acceptMimes,
|
|
17496
|
+
maxCount: composer?.attachments?.maxCount ?? 10,
|
|
17497
|
+
maxSize: composer?.attachments?.maxSize ?? 100 * 1024 * 1024,
|
|
17498
|
+
retryUploadLabel: t("chat.retryUpload"),
|
|
17499
|
+
uploadFile: uploadContextFile,
|
|
17500
|
+
deleteFile: deleteContextFile,
|
|
17501
|
+
getFileStatus: getContextFileStatus,
|
|
17502
|
+
onStateChange: setAttachmentState
|
|
17503
|
+
}
|
|
17507
17504
|
),
|
|
17508
|
-
children:
|
|
17509
|
-
|
|
17510
|
-
|
|
17511
|
-
|
|
17512
|
-
|
|
17513
|
-
|
|
17514
|
-
|
|
17505
|
+
references.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17506
|
+
ReferenceChip,
|
|
17507
|
+
{
|
|
17508
|
+
reference,
|
|
17509
|
+
variant: "composer",
|
|
17510
|
+
onRemove: () => setReferences(
|
|
17511
|
+
(previous) => previous.filter(
|
|
17512
|
+
(item) => getReferenceKey(item) !== getReferenceKey(reference)
|
|
17515
17513
|
)
|
|
17516
|
-
}
|
|
17517
|
-
),
|
|
17518
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
17519
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
17520
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
|
|
17521
|
-
threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "shrink-0 rounded-md bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground", children: t(`chat.goal.status.${threadGoal.status}`) }),
|
|
17522
|
-
isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
|
|
17523
|
-
] }),
|
|
17524
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17525
|
-
"div",
|
|
17526
|
-
{
|
|
17527
|
-
className: cn(
|
|
17528
|
-
"mt-0.5 text-muted-foreground",
|
|
17529
|
-
threadGoal?.objective && !goalError && isGoalObjectiveExpanded ? "whitespace-pre-wrap break-words" : "truncate"
|
|
17530
|
-
),
|
|
17531
|
-
children: goalError || threadGoal?.objective
|
|
17532
|
-
}
|
|
17533
17514
|
),
|
|
17534
|
-
|
|
17535
|
-
|
|
17536
|
-
|
|
17537
|
-
|
|
17538
|
-
|
|
17539
|
-
|
|
17540
|
-
|
|
17541
|
-
|
|
17515
|
+
removeLabel: t("composer.removeReference")
|
|
17516
|
+
},
|
|
17517
|
+
getReferenceKey(reference)
|
|
17518
|
+
)) }),
|
|
17519
|
+
detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
|
|
17520
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
|
|
17521
|
+
detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17522
|
+
"span",
|
|
17523
|
+
{
|
|
17524
|
+
className: "inline-flex max-w-full items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary",
|
|
17525
|
+
children: [
|
|
17526
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(RuntimeCapabilityIcon, { option, variant: "chip" }),
|
|
17527
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "max-w-40 truncate", children: option.label }),
|
|
17528
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17529
|
+
"button",
|
|
17530
|
+
{
|
|
17531
|
+
type: "button",
|
|
17532
|
+
onClick: () => removeRunRuntimeCapability(option),
|
|
17533
|
+
className: "rounded-full p-0.5 hover:bg-primary/15",
|
|
17534
|
+
title: t("composer.capabilities.removeRunCapability"),
|
|
17535
|
+
"aria-label": t("composer.capabilities.removeRunCapability"),
|
|
17536
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 11 })
|
|
17537
|
+
}
|
|
17538
|
+
)
|
|
17539
|
+
]
|
|
17540
|
+
},
|
|
17541
|
+
`${option.type}:${option.id}`
|
|
17542
|
+
))
|
|
17543
|
+
] }),
|
|
17544
|
+
showGoalStatus && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17545
|
+
"div",
|
|
17546
|
+
{
|
|
17547
|
+
className: cn(
|
|
17548
|
+
"mb-2 flex min-h-10 gap-2 rounded-md border border-border bg-background px-2.5 py-2 text-xs text-foreground shadow-sm",
|
|
17549
|
+
isGoalObjectiveExpanded ? "items-start" : "items-center"
|
|
17550
|
+
),
|
|
17551
|
+
children: [
|
|
17552
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17553
|
+
import_lucide_react29.Target,
|
|
17542
17554
|
{
|
|
17543
|
-
|
|
17544
|
-
|
|
17545
|
-
|
|
17546
|
-
|
|
17547
|
-
onClick: () => {
|
|
17548
|
-
const prefix = "/goal edit ";
|
|
17549
|
-
setComposerText(`${prefix}${threadGoal.objective}`);
|
|
17550
|
-
},
|
|
17551
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { className: "size-3" })
|
|
17555
|
+
className: cn(
|
|
17556
|
+
"size-4 shrink-0 text-muted-foreground",
|
|
17557
|
+
isGoalObjectiveExpanded && "mt-1"
|
|
17558
|
+
)
|
|
17552
17559
|
}
|
|
17553
|
-
)
|
|
17554
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.
|
|
17555
|
-
|
|
17556
|
-
|
|
17557
|
-
|
|
17558
|
-
|
|
17559
|
-
|
|
17560
|
-
|
|
17561
|
-
|
|
17562
|
-
|
|
17563
|
-
|
|
17564
|
-
|
|
17565
|
-
|
|
17566
|
-
|
|
17567
|
-
|
|
17568
|
-
|
|
17569
|
-
|
|
17570
|
-
|
|
17560
|
+
),
|
|
17561
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "min-w-0 flex-1", children: [
|
|
17562
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
17563
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "font-medium", children: t("chat.goal.label") }),
|
|
17564
|
+
threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "shrink-0 rounded-md bg-muted px-1.5 py-0.5 text-[11px] text-muted-foreground", children: t(`chat.goal.status.${threadGoal.status}`) }),
|
|
17565
|
+
isGoalLoading && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Loader2, { className: "size-3 animate-spin text-muted-foreground" })
|
|
17566
|
+
] }),
|
|
17567
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17568
|
+
"div",
|
|
17569
|
+
{
|
|
17570
|
+
className: cn(
|
|
17571
|
+
"mt-0.5 text-muted-foreground",
|
|
17572
|
+
threadGoal?.objective && !goalError && isGoalObjectiveExpanded ? "whitespace-pre-wrap break-words" : "truncate"
|
|
17573
|
+
),
|
|
17574
|
+
children: goalError || threadGoal?.objective
|
|
17575
|
+
}
|
|
17576
|
+
),
|
|
17577
|
+
threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "mt-1 flex flex-wrap gap-x-3 gap-y-1 text-[11px] text-muted-foreground", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.goal.elapsed", {
|
|
17578
|
+
elapsed: formatGoalElapsed(displayedGoalElapsedSeconds)
|
|
17579
|
+
}) }) })
|
|
17580
|
+
] }),
|
|
17581
|
+
threadGoal && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
17582
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17583
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17584
|
+
Button,
|
|
17585
|
+
{
|
|
17586
|
+
type: "button",
|
|
17587
|
+
variant: "ghost",
|
|
17588
|
+
size: "icon-xs",
|
|
17589
|
+
disabled: isGoalLoading,
|
|
17590
|
+
onClick: () => {
|
|
17591
|
+
const prefix = "/goal edit ";
|
|
17592
|
+
setComposerText(`${prefix}${threadGoal.objective}`);
|
|
17593
|
+
},
|
|
17594
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pencil, { className: "size-3" })
|
|
17571
17595
|
}
|
|
17572
|
-
}),
|
|
17573
|
-
|
|
17574
|
-
}
|
|
17575
|
-
|
|
17576
|
-
|
|
17577
|
-
|
|
17578
|
-
|
|
17579
|
-
|
|
17580
|
-
|
|
17581
|
-
|
|
17582
|
-
|
|
17583
|
-
|
|
17584
|
-
|
|
17585
|
-
|
|
17586
|
-
|
|
17587
|
-
|
|
17588
|
-
|
|
17589
|
-
|
|
17590
|
-
|
|
17591
|
-
|
|
17592
|
-
|
|
17596
|
+
) }),
|
|
17597
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.edit") })
|
|
17598
|
+
] }),
|
|
17599
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17600
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17601
|
+
Button,
|
|
17602
|
+
{
|
|
17603
|
+
type: "button",
|
|
17604
|
+
variant: "ghost",
|
|
17605
|
+
size: "icon-xs",
|
|
17606
|
+
disabled: isGoalLoading,
|
|
17607
|
+
onClick: () => void handleGoalCommand({
|
|
17608
|
+
args: threadGoal.status === "paused" ? "resume" : "pause",
|
|
17609
|
+
commandSource: {
|
|
17610
|
+
type: "slash_command",
|
|
17611
|
+
name: "goal",
|
|
17612
|
+
source: "runtime",
|
|
17613
|
+
executionType: "insert_invocation"
|
|
17614
|
+
}
|
|
17615
|
+
}),
|
|
17616
|
+
children: threadGoal.status === "paused" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Play, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Pause, { className: "size-3" })
|
|
17593
17617
|
}
|
|
17594
|
-
}),
|
|
17595
|
-
|
|
17596
|
-
}
|
|
17597
|
-
|
|
17598
|
-
|
|
17599
|
-
|
|
17600
|
-
threadGoal.objective && !goalError && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17601
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17602
|
-
Button,
|
|
17603
|
-
{
|
|
17604
|
-
type: "button",
|
|
17605
|
-
variant: "ghost",
|
|
17606
|
-
size: "icon-xs",
|
|
17607
|
-
"aria-expanded": isGoalObjectiveExpanded,
|
|
17608
|
-
"aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
|
|
17609
|
-
onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
|
|
17610
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17611
|
-
import_lucide_react29.ChevronDown,
|
|
17618
|
+
) }),
|
|
17619
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: threadGoal.status === "paused" ? t("chat.goal.resume") : t("chat.goal.pause") })
|
|
17620
|
+
] }),
|
|
17621
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17622
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17623
|
+
Button,
|
|
17612
17624
|
{
|
|
17613
|
-
|
|
17614
|
-
|
|
17615
|
-
|
|
17616
|
-
|
|
17625
|
+
type: "button",
|
|
17626
|
+
variant: "ghost",
|
|
17627
|
+
size: "icon-xs",
|
|
17628
|
+
disabled: isGoalLoading,
|
|
17629
|
+
onClick: () => void handleGoalCommand({
|
|
17630
|
+
args: "clear",
|
|
17631
|
+
commandSource: {
|
|
17632
|
+
type: "slash_command",
|
|
17633
|
+
name: "goal",
|
|
17634
|
+
source: "runtime",
|
|
17635
|
+
executionType: "insert_invocation"
|
|
17636
|
+
}
|
|
17637
|
+
}),
|
|
17638
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Trash2, { className: "size-3" })
|
|
17617
17639
|
}
|
|
17618
|
-
)
|
|
17619
|
-
|
|
17620
|
-
|
|
17621
|
-
|
|
17622
|
-
|
|
17623
|
-
|
|
17624
|
-
|
|
17625
|
-
|
|
17626
|
-
|
|
17627
|
-
|
|
17628
|
-
|
|
17629
|
-
|
|
17630
|
-
|
|
17631
|
-
|
|
17632
|
-
|
|
17633
|
-
className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
|
|
17634
|
-
}
|
|
17635
|
-
),
|
|
17636
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17637
|
-
PendingTodos,
|
|
17638
|
-
{
|
|
17639
|
-
snapshot: stream.todos,
|
|
17640
|
-
attachToComposer: !hasPendingFollowUps,
|
|
17641
|
-
className: hasPendingFollowUps ? "mb-2" : void 0
|
|
17642
|
-
}
|
|
17643
|
-
),
|
|
17644
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17645
|
-
PendingFollowUps,
|
|
17646
|
-
{
|
|
17647
|
-
items: pendingFollowUps,
|
|
17648
|
-
isLoading: stream.isLoading,
|
|
17649
|
-
onPromoteToSteer: (id) => stream.promotePendingFollowUpToSteer(id),
|
|
17650
|
-
canSendNow: stream.canSendPendingFollowUpNow,
|
|
17651
|
-
onSendNow: (id) => stream.sendPendingFollowUpNow(id),
|
|
17652
|
-
onEdit: handleEditPendingFollowUp,
|
|
17653
|
-
onRemove: stream.removePendingFollowUp,
|
|
17654
|
-
attachToComposer: true
|
|
17655
|
-
}
|
|
17656
|
-
),
|
|
17657
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17658
|
-
RequestUserInputPanel,
|
|
17659
|
-
{
|
|
17660
|
-
request: stream.pendingRequestUserInput,
|
|
17661
|
-
onSubmit: stream.submitRequestUserInput,
|
|
17662
|
-
onDismiss: stream.stop,
|
|
17663
|
-
attachToComposer: true
|
|
17664
|
-
}
|
|
17665
|
-
),
|
|
17666
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17667
|
-
HITLApprovalPanel,
|
|
17668
|
-
{
|
|
17669
|
-
request: stream.pendingHITLRequest,
|
|
17670
|
-
onSubmit: stream.submitHITLDecision,
|
|
17671
|
-
onDismiss: stream.stop,
|
|
17672
|
-
attachToComposer: true
|
|
17673
|
-
}
|
|
17674
|
-
),
|
|
17675
|
-
runtimeCapabilityPalette && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17676
|
-
SlashPalette,
|
|
17677
|
-
{
|
|
17678
|
-
palette: runtimeCapabilityPalette,
|
|
17679
|
-
options: slashPaletteOptions,
|
|
17680
|
-
paletteRef: slashPaletteRef,
|
|
17681
|
-
optionRefs: slashPaletteOptionRefs,
|
|
17682
|
-
panelRoundedClass: getPanelRoundedClass(theme.radius),
|
|
17683
|
-
itemRoundedClass: getMenuItemRoundedClass(theme.radius),
|
|
17684
|
-
emptyLabel: slashPaletteEmptyLabel,
|
|
17685
|
-
capabilityEmptyLabels: slashPaletteCapabilityEmptyLabels,
|
|
17686
|
-
onSelect: selectSlashPaletteOption
|
|
17687
|
-
}
|
|
17688
|
-
),
|
|
17689
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17690
|
-
"div",
|
|
17691
|
-
{
|
|
17692
|
-
"data-slot": "composer-input-shell",
|
|
17693
|
-
"data-layout": isComposerStacked ? "stacked" : "inline",
|
|
17694
|
-
className: cn(
|
|
17695
|
-
"relative flex flex-1 overflow-hidden",
|
|
17696
|
-
"bg-background border border-border shadow-sm",
|
|
17697
|
-
isComposerStacked ? "min-h-[5.5rem] px-1.5 pt-1.5 pb-12" : "min-h-12 px-1.5 py-1",
|
|
17698
|
-
"focus-within:border-muted-foreground/30 focus-within:shadow-md",
|
|
17699
|
-
"transition-[min-height,padding,border-radius,box-shadow,border-color] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
|
|
17700
|
-
composerInputRoundedClass
|
|
17701
|
-
),
|
|
17702
|
-
children: [
|
|
17703
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17704
|
-
"div",
|
|
17705
|
-
{
|
|
17706
|
-
ref: composerInputRef,
|
|
17707
|
-
role: "textbox",
|
|
17708
|
-
"aria-multiline": "true",
|
|
17709
|
-
"aria-disabled": missingConfig || isHistoryLoading || hasPendingInteractiveRequest,
|
|
17710
|
-
contentEditable: !(missingConfig || isHistoryLoading || hasPendingInteractiveRequest),
|
|
17711
|
-
suppressContentEditableWarning: true,
|
|
17712
|
-
onInput: handleComposerInput,
|
|
17713
|
-
onCompositionEnd: handleComposerCompositionEnd,
|
|
17714
|
-
onSelect: handleComposerSelect,
|
|
17715
|
-
onPaste: handleComposerPaste,
|
|
17716
|
-
onKeyDown: handleComposerKeyDown,
|
|
17717
|
-
"data-placeholder": inputPlaceholder,
|
|
17718
|
-
className: cn(
|
|
17719
|
-
"min-h-8 max-h-32 w-full overflow-hidden whitespace-pre-wrap break-words bg-transparent text-sm leading-5 text-foreground outline-none transition-[padding,min-height] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
|
|
17720
|
-
isComposerStacked ? "px-2 py-1.5" : "py-1 pr-11 pl-11 mt-1",
|
|
17721
|
-
"empty:before:pointer-events-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
|
|
17722
|
-
(missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
|
|
17723
|
-
),
|
|
17724
|
-
children: renderedComposerParts.map(
|
|
17725
|
-
(part, index) => part.type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React49.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17726
|
-
"span",
|
|
17727
|
-
{
|
|
17728
|
-
"data-composer-capability-key": part.key,
|
|
17729
|
-
"data-capability-type": part.capability.type,
|
|
17730
|
-
"data-capability-id": part.capability.id,
|
|
17731
|
-
contentEditable: false,
|
|
17732
|
-
className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
|
|
17733
|
-
children: [
|
|
17734
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17735
|
-
RuntimeCapabilityIcon,
|
|
17640
|
+
) }),
|
|
17641
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: t("chat.goal.clear") })
|
|
17642
|
+
] }),
|
|
17643
|
+
threadGoal.objective && !goalError && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(Tooltip, { children: [
|
|
17644
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17645
|
+
Button,
|
|
17646
|
+
{
|
|
17647
|
+
type: "button",
|
|
17648
|
+
variant: "ghost",
|
|
17649
|
+
size: "icon-xs",
|
|
17650
|
+
"aria-expanded": isGoalObjectiveExpanded,
|
|
17651
|
+
"aria-label": isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective"),
|
|
17652
|
+
onClick: () => setIsGoalObjectiveExpanded((expanded) => !expanded),
|
|
17653
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17654
|
+
import_lucide_react29.ChevronDown,
|
|
17736
17655
|
{
|
|
17737
|
-
|
|
17738
|
-
|
|
17656
|
+
className: cn(
|
|
17657
|
+
"size-3 transition-transform",
|
|
17658
|
+
isGoalObjectiveExpanded && "rotate-180"
|
|
17659
|
+
)
|
|
17739
17660
|
}
|
|
17740
|
-
)
|
|
17741
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: part.capability.label })
|
|
17742
|
-
]
|
|
17743
|
-
},
|
|
17744
|
-
part.key
|
|
17745
|
-
)
|
|
17746
|
-
)
|
|
17747
|
-
},
|
|
17748
|
-
composerDomVersion
|
|
17749
|
-
),
|
|
17750
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17751
|
-
"div",
|
|
17752
|
-
{
|
|
17753
|
-
"data-slot": "composer-action-bar",
|
|
17754
|
-
className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
|
|
17755
|
-
children: [
|
|
17756
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
|
|
17757
|
-
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17758
|
-
ComposerMenu,
|
|
17759
|
-
{
|
|
17760
|
-
composer,
|
|
17761
|
-
onAttachmentClick: handleAttachmentClick,
|
|
17762
|
-
onToolSelect: handleToolSelect,
|
|
17763
|
-
selectedTool,
|
|
17764
|
-
planModeEnabled,
|
|
17765
|
-
onPlanModeChange: setPlanModeEnabled,
|
|
17766
|
-
goalCommandAvailable,
|
|
17767
|
-
goalPanelOpen: isGoalModeOpen,
|
|
17768
|
-
onGoalPanelOpenChange: handleGoalPanelOpenChange,
|
|
17769
|
-
runtimeCapabilities: runtimeCapabilitiesReady ? runtimeCapabilities : null,
|
|
17770
|
-
selectedRuntimeCapabilities: effectiveSessionRuntimeCapabilities,
|
|
17771
|
-
onRuntimeCapabilityToggle: handleSessionRuntimeCapabilityToggle,
|
|
17772
|
-
disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
|
|
17661
|
+
)
|
|
17773
17662
|
}
|
|
17774
17663
|
) }),
|
|
17775
|
-
|
|
17776
|
-
|
|
17777
|
-
|
|
17778
|
-
|
|
17664
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(TooltipContent, { children: isGoalObjectiveExpanded ? t("chat.goal.collapseObjective") : t("chat.goal.expandObjective") })
|
|
17665
|
+
] })
|
|
17666
|
+
] })
|
|
17667
|
+
]
|
|
17668
|
+
}
|
|
17669
|
+
),
|
|
17670
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17671
|
+
PendingRuntimeServices,
|
|
17672
|
+
{
|
|
17673
|
+
state: stream.runtimeActivities.sandboxServices,
|
|
17674
|
+
onStopService: (serviceId) => stream.stopRuntimeActivityItem("sandbox-services", serviceId),
|
|
17675
|
+
attachToComposer: !hasPendingTodos && !hasPendingFollowUps,
|
|
17676
|
+
className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
|
|
17677
|
+
}
|
|
17678
|
+
),
|
|
17679
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17680
|
+
PendingTodos,
|
|
17681
|
+
{
|
|
17682
|
+
snapshot: stream.todos,
|
|
17683
|
+
attachToComposer: !hasPendingFollowUps,
|
|
17684
|
+
className: hasPendingFollowUps ? "mb-2" : void 0
|
|
17685
|
+
}
|
|
17686
|
+
),
|
|
17687
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17688
|
+
PendingFollowUps,
|
|
17689
|
+
{
|
|
17690
|
+
items: pendingFollowUps,
|
|
17691
|
+
isLoading: stream.isLoading,
|
|
17692
|
+
onPromoteToSteer: (id) => stream.promotePendingFollowUpToSteer(id),
|
|
17693
|
+
canSendNow: stream.canSendPendingFollowUpNow,
|
|
17694
|
+
onSendNow: (id) => stream.sendPendingFollowUpNow(id),
|
|
17695
|
+
onEdit: handleEditPendingFollowUp,
|
|
17696
|
+
onRemove: stream.removePendingFollowUp,
|
|
17697
|
+
attachToComposer: true
|
|
17698
|
+
}
|
|
17699
|
+
),
|
|
17700
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17701
|
+
RequestUserInputPanel,
|
|
17702
|
+
{
|
|
17703
|
+
request: stream.pendingRequestUserInput,
|
|
17704
|
+
onSubmit: stream.submitRequestUserInput,
|
|
17705
|
+
onDismiss: stream.stop,
|
|
17706
|
+
attachToComposer: true
|
|
17707
|
+
}
|
|
17708
|
+
),
|
|
17709
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17710
|
+
HITLApprovalPanel,
|
|
17711
|
+
{
|
|
17712
|
+
request: stream.pendingHITLRequest,
|
|
17713
|
+
onSubmit: stream.submitHITLDecision,
|
|
17714
|
+
onDismiss: stream.stop,
|
|
17715
|
+
attachToComposer: true
|
|
17716
|
+
}
|
|
17717
|
+
),
|
|
17718
|
+
runtimeCapabilityPalette && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17719
|
+
SlashPalette,
|
|
17720
|
+
{
|
|
17721
|
+
palette: runtimeCapabilityPalette,
|
|
17722
|
+
options: slashPaletteOptions,
|
|
17723
|
+
paletteRef: slashPaletteRef,
|
|
17724
|
+
optionRefs: slashPaletteOptionRefs,
|
|
17725
|
+
panelRoundedClass: getPanelRoundedClass(theme.radius),
|
|
17726
|
+
itemRoundedClass: getMenuItemRoundedClass(theme.radius),
|
|
17727
|
+
emptyLabel: slashPaletteEmptyLabel,
|
|
17728
|
+
capabilityEmptyLabels: slashPaletteCapabilityEmptyLabels,
|
|
17729
|
+
onSelect: selectSlashPaletteOption
|
|
17730
|
+
}
|
|
17731
|
+
),
|
|
17732
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17733
|
+
"div",
|
|
17734
|
+
{
|
|
17735
|
+
"data-slot": "composer-input-shell",
|
|
17736
|
+
"data-layout": isComposerStacked ? "stacked" : "inline",
|
|
17737
|
+
className: cn(
|
|
17738
|
+
"relative flex flex-1 overflow-hidden",
|
|
17739
|
+
"bg-background border border-border shadow-sm",
|
|
17740
|
+
isComposerStacked ? "min-h-[5.5rem] px-1.5 pt-1.5 pb-12" : "min-h-12 px-1.5 py-1",
|
|
17741
|
+
"focus-within:border-muted-foreground/30 focus-within:shadow-md",
|
|
17742
|
+
"transition-[min-height,padding,border-radius,box-shadow,border-color] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
|
|
17743
|
+
composerInputRoundedClass
|
|
17744
|
+
),
|
|
17745
|
+
children: [
|
|
17746
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17747
|
+
"div",
|
|
17748
|
+
{
|
|
17749
|
+
ref: composerInputRef,
|
|
17750
|
+
role: "textbox",
|
|
17751
|
+
"aria-multiline": "true",
|
|
17752
|
+
"aria-disabled": missingConfig || isHistoryLoading || hasPendingInteractiveRequest,
|
|
17753
|
+
contentEditable: !(missingConfig || isHistoryLoading || hasPendingInteractiveRequest),
|
|
17754
|
+
suppressContentEditableWarning: true,
|
|
17755
|
+
onInput: handleComposerInput,
|
|
17756
|
+
onCompositionEnd: handleComposerCompositionEnd,
|
|
17757
|
+
onSelect: handleComposerSelect,
|
|
17758
|
+
onPaste: handleComposerPaste,
|
|
17759
|
+
onKeyDown: handleComposerKeyDown,
|
|
17760
|
+
"data-placeholder": inputPlaceholder,
|
|
17761
|
+
className: cn(
|
|
17762
|
+
"min-h-8 max-h-32 w-full overflow-hidden whitespace-pre-wrap break-words bg-transparent text-sm leading-5 text-foreground outline-none transition-[padding,min-height] duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)]",
|
|
17763
|
+
isComposerStacked ? "px-2 py-1.5" : "py-1 pr-11 pl-11 mt-1",
|
|
17764
|
+
"empty:before:pointer-events-none empty:before:text-muted-foreground empty:before:content-[attr(data-placeholder)]",
|
|
17765
|
+
(missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
|
|
17766
|
+
),
|
|
17767
|
+
children: renderedComposerParts.map(
|
|
17768
|
+
(part, index) => part.type === "text" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(React49.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17769
|
+
"span",
|
|
17779
17770
|
{
|
|
17780
|
-
|
|
17781
|
-
|
|
17782
|
-
|
|
17783
|
-
|
|
17784
|
-
|
|
17771
|
+
"data-composer-capability-key": part.key,
|
|
17772
|
+
"data-capability-type": part.capability.type,
|
|
17773
|
+
"data-capability-id": part.capability.id,
|
|
17774
|
+
contentEditable: false,
|
|
17775
|
+
className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
|
|
17776
|
+
children: [
|
|
17777
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17778
|
+
RuntimeCapabilityIcon,
|
|
17779
|
+
{
|
|
17780
|
+
option: part.capability,
|
|
17781
|
+
variant: "chip"
|
|
17782
|
+
}
|
|
17783
|
+
),
|
|
17784
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: part.capability.label })
|
|
17785
|
+
]
|
|
17786
|
+
},
|
|
17787
|
+
part.key
|
|
17785
17788
|
)
|
|
17786
|
-
|
|
17787
|
-
|
|
17788
|
-
|
|
17789
|
-
|
|
17790
|
-
|
|
17791
|
-
|
|
17792
|
-
|
|
17793
|
-
|
|
17794
|
-
|
|
17795
|
-
|
|
17796
|
-
|
|
17797
|
-
|
|
17789
|
+
)
|
|
17790
|
+
},
|
|
17791
|
+
composerDomVersion
|
|
17792
|
+
),
|
|
17793
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
|
|
17794
|
+
"div",
|
|
17795
|
+
{
|
|
17796
|
+
"data-slot": "composer-action-bar",
|
|
17797
|
+
className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
|
|
17798
|
+
children: [
|
|
17799
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
|
|
17800
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17801
|
+
ComposerMenu,
|
|
17802
|
+
{
|
|
17803
|
+
composer,
|
|
17804
|
+
onAttachmentClick: handleAttachmentClick,
|
|
17805
|
+
onToolSelect: handleToolSelect,
|
|
17806
|
+
selectedTool,
|
|
17807
|
+
planModeEnabled,
|
|
17808
|
+
onPlanModeChange: setPlanModeEnabled,
|
|
17809
|
+
goalCommandAvailable,
|
|
17810
|
+
goalPanelOpen: isGoalModeOpen,
|
|
17811
|
+
onGoalPanelOpenChange: handleGoalPanelOpenChange,
|
|
17812
|
+
runtimeCapabilities: runtimeCapabilitiesReady ? runtimeCapabilities : null,
|
|
17813
|
+
selectedRuntimeCapabilities: effectiveSessionRuntimeCapabilities,
|
|
17814
|
+
onRuntimeCapabilityToggle: handleSessionRuntimeCapabilityToggle,
|
|
17815
|
+
disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
|
|
17816
|
+
}
|
|
17817
|
+
) }),
|
|
17818
|
+
selectedTool && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { className: "pointer-events-auto inline-flex h-8 min-w-0 max-w-[14rem] shrink items-center gap-1.5 rounded-full bg-primary/10 px-2 text-xs font-medium text-primary transition-all duration-200", children: [
|
|
17819
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
|
|
17820
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17821
|
+
"button",
|
|
17822
|
+
{
|
|
17823
|
+
type: "button",
|
|
17824
|
+
onClick: () => setSelectedTool(null),
|
|
17825
|
+
className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
|
|
17826
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.X, { size: 12 })
|
|
17827
|
+
}
|
|
17828
|
+
)
|
|
17829
|
+
] })
|
|
17830
|
+
] }),
|
|
17831
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17832
|
+
SendButton,
|
|
17798
17833
|
{
|
|
17799
|
-
|
|
17800
|
-
|
|
17834
|
+
disabled: isSendDisabled,
|
|
17835
|
+
isLoading: stream.isLoading,
|
|
17836
|
+
showStop: stream.isLoading && (!trimmedDraft || hasPendingInteractiveRequest),
|
|
17837
|
+
onStop: () => stream.stop(),
|
|
17838
|
+
stopLabel: t("chat.stop"),
|
|
17839
|
+
sendLabel: t("chat.send"),
|
|
17840
|
+
shortcuts: stream.isLoading && trimmedDraft ? [
|
|
17841
|
+
{
|
|
17842
|
+
label: t("chat.followUps.queue"),
|
|
17843
|
+
keys: "Enter"
|
|
17844
|
+
}
|
|
17845
|
+
] : void 0
|
|
17801
17846
|
}
|
|
17802
|
-
|
|
17803
|
-
|
|
17804
|
-
|
|
17805
|
-
|
|
17806
|
-
|
|
17807
|
-
|
|
17808
|
-
|
|
17809
|
-
|
|
17810
|
-
|
|
17811
|
-
|
|
17812
|
-
|
|
17813
|
-
|
|
17814
|
-
|
|
17815
|
-
|
|
17816
|
-
|
|
17847
|
+
) })
|
|
17848
|
+
]
|
|
17849
|
+
}
|
|
17850
|
+
)
|
|
17851
|
+
]
|
|
17852
|
+
}
|
|
17853
|
+
) }),
|
|
17854
|
+
disclaimer?.text && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17855
|
+
"p",
|
|
17856
|
+
{
|
|
17857
|
+
className: cn(
|
|
17858
|
+
"mt-2 text-center text-xs",
|
|
17859
|
+
disclaimer.highContrast ? "text-foreground" : "text-muted-foreground"
|
|
17860
|
+
),
|
|
17861
|
+
children: disclaimer.text
|
|
17862
|
+
}
|
|
17817
17863
|
),
|
|
17818
|
-
children:
|
|
17819
|
-
|
|
17820
|
-
|
|
17821
|
-
|
|
17822
|
-
|
|
17823
|
-
|
|
17824
|
-
|
|
17825
|
-
] }),
|
|
17864
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
|
|
17865
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { children: t("chat.poweredBy") }),
|
|
17866
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ContextUsageIndicator, { className: "absolute right-4" })
|
|
17867
|
+
] })
|
|
17868
|
+
]
|
|
17869
|
+
}
|
|
17870
|
+
),
|
|
17826
17871
|
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
|
|
17827
17872
|
SettingsSheet,
|
|
17828
17873
|
{
|