@xpert-ai/chatkit-ui 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/dist/app/assets/{_baseUniq-CAxobs9N.js → _baseUniq-PQJUyd2p.js} +1 -1
  2. package/dist/app/assets/{abap-wdK8JaHa.js → abap-DBNQvwwq.js} +1 -1
  3. package/dist/app/assets/{abnf-B4QVrCDX.js → abnf-DAYjyqbD.js} +1 -1
  4. package/dist/app/assets/{actionscript-BbKSvJrq.js → actionscript-CC6WSmTp.js} +1 -1
  5. package/dist/app/assets/{ada-BkwiItKH.js → ada-BKGodcKv.js} +1 -1
  6. package/dist/app/assets/{agda-BHGf_Fgl.js → agda-Btmo1dV2.js} +1 -1
  7. package/dist/app/assets/{al-CpdhQzD9.js → al-ZGIJe93k.js} +1 -1
  8. package/dist/app/assets/{antlr4-CLQ7xEno.js → antlr4-5WGUtMyl.js} +1 -1
  9. package/dist/app/assets/{apacheconf-6iBdrfFM.js → apacheconf-DUR_1QqW.js} +1 -1
  10. package/dist/app/assets/{apex-DBXBvaz5.js → apex-BintsQD-.js} +1 -1
  11. package/dist/app/assets/{apl-D8vc149P.js → apl-B7pUHOBS.js} +1 -1
  12. package/dist/app/assets/{applescript-BTZUYWS_.js → applescript-CanCSogn.js} +1 -1
  13. package/dist/app/assets/{aql-BxB6KDJQ.js → aql-iDHrUFca.js} +1 -1
  14. package/dist/app/assets/{arc-CNi1G9DJ.js → arc-VbTm84dM.js} +1 -1
  15. package/dist/app/assets/{architectureDiagram-Q4EWVU46-BL0mPAR9.js → architectureDiagram-Q4EWVU46-BwbXOlsJ.js} +1 -1
  16. package/dist/app/assets/{arduino-Cx04QCrp.js → arduino-CvuY6cDV.js} +1 -1
  17. package/dist/app/assets/{arff-MqnrnEC8.js → arff-C7UK1Sqo.js} +1 -1
  18. package/dist/app/assets/{asciidoc-sz7M5yXr.js → asciidoc-jaQgm_Ci.js} +1 -1
  19. package/dist/app/assets/{asm6502-BZ8xfWko.js → asm6502-Bec9iTSO.js} +1 -1
  20. package/dist/app/assets/{asmatmel-D-cI_as7.js → asmatmel-CWWLYM-f.js} +1 -1
  21. package/dist/app/assets/{aspnet-wNdsZF1M.js → aspnet-EICvaNos.js} +1 -1
  22. package/dist/app/assets/{autohotkey-CERdGivs.js → autohotkey-CgvCc8dt.js} +1 -1
  23. package/dist/app/assets/{autoit-CQsoUza0.js → autoit-BbrdfXjj.js} +1 -1
  24. package/dist/app/assets/{avisynth-DMTk2nsi.js → avisynth-C7cOgG-q.js} +1 -1
  25. package/dist/app/assets/{avro-idl-VdXZfwVL.js → avro-idl-BsT9yVqS.js} +1 -1
  26. package/dist/app/assets/{bash-BKoQnhB6.js → bash-BF1ylQ6_.js} +1 -1
  27. package/dist/app/assets/{basic-BvRsQ9vo.js → basic-DyO_cuAQ.js} +1 -1
  28. package/dist/app/assets/{batch-DkZb4POU.js → batch-DdxmhDRT.js} +1 -1
  29. package/dist/app/assets/{bbcode-BkkYngk6.js → bbcode-Csh0dpf7.js} +1 -1
  30. package/dist/app/assets/{bicep-DY62eX6n.js → bicep-CEnRCsw4.js} +1 -1
  31. package/dist/app/assets/{birb-Cf3Wn8DP.js → birb-H4aZEyfE.js} +1 -1
  32. package/dist/app/assets/{bison-CMVsgR8E.js → bison-B4NzJQL4.js} +1 -1
  33. package/dist/app/assets/{blockDiagram-DXYQGD6D-DdgOXTCq.js → blockDiagram-DXYQGD6D-BQrs2vZp.js} +1 -1
  34. package/dist/app/assets/{bnf-C53AC5ba.js → bnf-BpnLOKBL.js} +1 -1
  35. package/dist/app/assets/{brainfuck-DBcYtGip.js → brainfuck-BcXFtTZS.js} +1 -1
  36. package/dist/app/assets/{brightscript-uWYyj7Le.js → brightscript-C-G4maiE.js} +1 -1
  37. package/dist/app/assets/{bro-Bnqn5jLn.js → bro-JcLlkXX7.js} +1 -1
  38. package/dist/app/assets/{bsl-eeHcx6I3.js → bsl-C7EgrPBt.js} +1 -1
  39. package/dist/app/assets/{c-Y_E2ZZ8h.js → c-0vDIBgc3.js} +1 -1
  40. package/dist/app/assets/{c4Diagram-AHTNJAMY-BAZeiIaA.js → c4Diagram-AHTNJAMY-wtHHI5rn.js} +1 -1
  41. package/dist/app/assets/{cfscript-swSriW5q.js → cfscript-B5a7v4dm.js} +1 -1
  42. package/dist/app/assets/{chaiscript-BHR5pIfl.js → chaiscript-CC6j4sQE.js} +1 -1
  43. package/dist/app/assets/channel-B6zrZ2OM.js +1 -0
  44. package/dist/app/assets/{chunk-4BX2VUAB-Deyo77pg.js → chunk-4BX2VUAB-Dlz831RQ.js} +1 -1
  45. package/dist/app/assets/{chunk-4TB4RGXK-BSgPz1Fn.js → chunk-4TB4RGXK-D5P5dUqt.js} +1 -1
  46. package/dist/app/assets/{chunk-55IACEB6-DekOqO8-.js → chunk-55IACEB6-BqMvjwUA.js} +1 -1
  47. package/dist/app/assets/{chunk-EDXVE4YY-VI2aoR3H.js → chunk-EDXVE4YY-DnPhlqJA.js} +1 -1
  48. package/dist/app/assets/{chunk-FMBD7UC4-DVPMFZIh.js → chunk-FMBD7UC4-DNRIZD8O.js} +1 -1
  49. package/dist/app/assets/{chunk-OYMX7WX6-C_5OySCp.js → chunk-OYMX7WX6-JXHjhCxm.js} +1 -1
  50. package/dist/app/assets/{chunk-QZHKN3VN-CQ4PJ94U.js → chunk-QZHKN3VN-BkxXCZY4.js} +1 -1
  51. package/dist/app/assets/{chunk-YZCP3GAM-40VMFur6.js → chunk-YZCP3GAM-EpFGzvxp.js} +1 -1
  52. package/dist/app/assets/{cil-BlB-Qnhz.js → cil-iQdhNO4Q.js} +1 -1
  53. package/dist/app/assets/classDiagram-6PBFFD2Q-CrRCjWNC.js +1 -0
  54. package/dist/app/assets/classDiagram-v2-HSJHXN6E-CrRCjWNC.js +1 -0
  55. package/dist/app/assets/{clike-cGW_OpAz.js → clike-CQAeHYPM.js} +1 -1
  56. package/dist/app/assets/{clojure-BwM8_y2w.js → clojure-Cql6MpyZ.js} +1 -1
  57. package/dist/app/assets/clone-DF9MaeHz.js +1 -0
  58. package/dist/app/assets/{cmake-B_tPIs0N.js → cmake-BfKHjCsg.js} +1 -1
  59. package/dist/app/assets/{cobol-awMTn3SL.js → cobol-CKkM0fVl.js} +1 -1
  60. package/dist/app/assets/{coffeescript-BdPUATdq.js → coffeescript-CgyUEXhV.js} +1 -1
  61. package/dist/app/assets/{concurnas-DD4NroNG.js → concurnas-CeEqG40V.js} +1 -1
  62. package/dist/app/assets/{coq-WP9t6Mya.js → coq-CkWZFRlP.js} +1 -1
  63. package/dist/app/assets/{core-Dl1d1z_B.js → core-CcAPm-aU.js} +1 -1
  64. package/dist/app/assets/{cose-bilkent-S5V4N54A-CIsQWWLS.js → cose-bilkent-S5V4N54A-kULVHEg6.js} +1 -1
  65. package/dist/app/assets/{cpp-DRq2558J.js → cpp-Bwq_b1tA.js} +1 -1
  66. package/dist/app/assets/{crystal-CmMEvlYk.js → crystal-YNIUD3Bs.js} +1 -1
  67. package/dist/app/assets/{csharp-CmdWJQ_7.js → csharp-P6DguRUY.js} +1 -1
  68. package/dist/app/assets/{cshtml-D-PG0yKy.js → cshtml-B5QmdkLH.js} +1 -1
  69. package/dist/app/assets/{csp-CoYEQK4_.js → csp-DFeKy3lq.js} +1 -1
  70. package/dist/app/assets/{css-qzCJaYzE.js → css-CRC3M3rp.js} +1 -1
  71. package/dist/app/assets/{css-extras-CvcfPwL5.js → css-extras-BFuChsao.js} +1 -1
  72. package/dist/app/assets/{csv-BOSHHM-P.js → csv-C4LMPB8f.js} +1 -1
  73. package/dist/app/assets/{cypher-DF-LRYf2.js → cypher-HIcVk2j0.js} +1 -1
  74. package/dist/app/assets/{d-DT7HGItG.js → d-BnjQOzu7.js} +1 -1
  75. package/dist/app/assets/{dagre-KV5264BT-BXDHR3FY.js → dagre-KV5264BT-DYeQuZ_S.js} +1 -1
  76. package/dist/app/assets/{dart-C53tv9tc.js → dart-BY_HEqIc.js} +1 -1
  77. package/dist/app/assets/{dataweave-DfVl-B8U.js → dataweave-IZkekg5J.js} +1 -1
  78. package/dist/app/assets/{dax-CtLDIvLu.js → dax-BDxI87qH.js} +1 -1
  79. package/dist/app/assets/{dhall-B4vfpjKK.js → dhall-BI7me9By.js} +1 -1
  80. package/dist/app/assets/{diagram-5BDNPKRD-C2jQZSnh.js → diagram-5BDNPKRD-DqUtPt3D.js} +1 -1
  81. package/dist/app/assets/{diagram-G4DWMVQ6-DkBF8pst.js → diagram-G4DWMVQ6-DUz5iheG.js} +1 -1
  82. package/dist/app/assets/{diagram-MMDJMWI5-DkBy1EJI.js → diagram-MMDJMWI5-DqMZVdpe.js} +1 -1
  83. package/dist/app/assets/{diagram-TYMM5635-BG7IFHFj.js → diagram-TYMM5635-D4dMAYPV.js} +1 -1
  84. package/dist/app/assets/{diff-CAGXr455.js → diff-D1eveguk.js} +1 -1
  85. package/dist/app/assets/{django-Bt-Xandi.js → django-n2RdeMZg.js} +1 -1
  86. package/dist/app/assets/{dns-zone-file-CUQqHN_u.js → dns-zone-file-C7ZVuM_8.js} +1 -1
  87. package/dist/app/assets/{docker-Cmx-jfGB.js → docker-2dKv2uP8.js} +1 -1
  88. package/dist/app/assets/{dot-CtNw9lX4.js → dot-CnM9kCZh.js} +1 -1
  89. package/dist/app/assets/{ebnf-Dl_Q5Or1.js → ebnf-DNNgDJ77.js} +1 -1
  90. package/dist/app/assets/{editorconfig-DZYXnV_C.js → editorconfig-BOtWIdJu.js} +1 -1
  91. package/dist/app/assets/{eiffel-CgccC4xz.js → eiffel-DZJsL-6U.js} +1 -1
  92. package/dist/app/assets/{ejs-Cj1dQzfI.js → ejs-DlY_5WK7.js} +1 -1
  93. package/dist/app/assets/{elixir-B3SWPivz.js → elixir-DnflWYYw.js} +1 -1
  94. package/dist/app/assets/{elm-Bp_TQfaA.js → elm-DiBtRJyK.js} +1 -1
  95. package/dist/app/assets/{erDiagram-SMLLAGMA-Cby23XmU.js → erDiagram-SMLLAGMA-s249XOhW.js} +1 -1
  96. package/dist/app/assets/{erb-Cb-K6pZE.js → erb-Ctwnlnto.js} +1 -1
  97. package/dist/app/assets/{erlang-F72Fjwv2.js → erlang-BnrgWRyV.js} +1 -1
  98. package/dist/app/assets/{etlua-DFUJG9GZ.js → etlua-B-b2a1aT.js} +1 -1
  99. package/dist/app/assets/{excel-formula-B8hn4WlO.js → excel-formula-BfwuYhTY.js} +1 -1
  100. package/dist/app/assets/{factor-BlEqbeI0.js → factor-2cFlXUFG.js} +1 -1
  101. package/dist/app/assets/{false-DMURsqlU.js → false-DVJW4Xbm.js} +1 -1
  102. package/dist/app/assets/{firestore-security-rules-DswDVNNa.js → firestore-security-rules-BDB3ruEY.js} +1 -1
  103. package/dist/app/assets/{flow-C4reo-gu.js → flow-v_X8TsCx.js} +1 -1
  104. package/dist/app/assets/{flowDiagram-DWJPFMVM-BxNNsar9.js → flowDiagram-DWJPFMVM-Dz8lk_A8.js} +1 -1
  105. package/dist/app/assets/{fortran-BAmD5KHF.js → fortran-VlXf9wYr.js} +1 -1
  106. package/dist/app/assets/{fsharp-CPq2O12L.js → fsharp-BgmRbToz.js} +1 -1
  107. package/dist/app/assets/{ftl-Cgbeq2-z.js → ftl-CX7l6a-K.js} +1 -1
  108. package/dist/app/assets/{ganttDiagram-T4ZO3ILL-BLd3DH-5.js → ganttDiagram-T4ZO3ILL-C8JxZNAd.js} +1 -1
  109. package/dist/app/assets/{gap-Bge3tvcZ.js → gap-C3towync.js} +1 -1
  110. package/dist/app/assets/{gcode-CAVcsFdN.js → gcode-pPl8BHC6.js} +1 -1
  111. package/dist/app/assets/{gdscript-nkDP0xMM.js → gdscript-CQ5KQpTU.js} +1 -1
  112. package/dist/app/assets/{gedcom-BA8GnDnW.js → gedcom-UKqoiZ_B.js} +1 -1
  113. package/dist/app/assets/{gherkin-DvBWzm8E.js → gherkin-oHLPyBSJ.js} +1 -1
  114. package/dist/app/assets/{git-LJ9ums7L.js → git-QJvYrr1x.js} +1 -1
  115. package/dist/app/assets/{gitGraphDiagram-UUTBAWPF-JZEE6gBT.js → gitGraphDiagram-UUTBAWPF-D8hAIW7o.js} +1 -1
  116. package/dist/app/assets/{glsl-D4U4_9LH.js → glsl-D9mjvqGV.js} +1 -1
  117. package/dist/app/assets/{gml-CQtoiCZT.js → gml-DyeDbLje.js} +1 -1
  118. package/dist/app/assets/{gn-DxTb0Jqi.js → gn-CQxx-3wR.js} +1 -1
  119. package/dist/app/assets/{go-D7ELL60F.js → go-BlxfTxGG.js} +1 -1
  120. package/dist/app/assets/{go-module-Ck8j-Kcm.js → go-module-aUBiuILx.js} +1 -1
  121. package/dist/app/assets/{graph-pBSG-4mT.js → graph-D-X2uhF1.js} +1 -1
  122. package/dist/app/assets/{graphql-C-10AxQD.js → graphql-Clt8HaZ7.js} +1 -1
  123. package/dist/app/assets/{groovy-SpWCEWzX.js → groovy-CZSeQO36.js} +1 -1
  124. package/dist/app/assets/{haml-C2aM6_El.js → haml-DMf7PiKp.js} +1 -1
  125. package/dist/app/assets/{handlebars-ChMYyLZl.js → handlebars-BphhMxT6.js} +1 -1
  126. package/dist/app/assets/{haskell-DagwvSeE.js → haskell-Ccj1mGN_.js} +1 -1
  127. package/dist/app/assets/{haxe-BG5B6d9K.js → haxe-CtvRdMmt.js} +1 -1
  128. package/dist/app/assets/{hcl-B8Gd__02.js → hcl-HQGsM91R.js} +1 -1
  129. package/dist/app/assets/{hlsl-CSu8CgjO.js → hlsl-U_2FN4GV.js} +1 -1
  130. package/dist/app/assets/{hoon-BUjyY25K.js → hoon-DSS3mQR5.js} +1 -1
  131. package/dist/app/assets/{hpkp-C5yMlUDS.js → hpkp-BPnzFZ5n.js} +1 -1
  132. package/dist/app/assets/{hsts-DzNiiTKI.js → hsts-BRaWTgmx.js} +1 -1
  133. package/dist/app/assets/{http-DYWI6rav.js → http-DgZif8XP.js} +1 -1
  134. package/dist/app/assets/{ichigojam-DrBDAbYO.js → ichigojam-ypramSfH.js} +1 -1
  135. package/dist/app/assets/{icon-BezsFCDL.js → icon-DsD0Czia.js} +1 -1
  136. package/dist/app/assets/{icu-message-format-BCSOltos.js → icu-message-format-BVJiYPkB.js} +1 -1
  137. package/dist/app/assets/{idris-B8Tj6LSh.js → idris-BvurrLkY.js} +1 -1
  138. package/dist/app/assets/{iecst-CfA7HSP8.js → iecst-Clwdf_8K.js} +1 -1
  139. package/dist/app/assets/{ignore-E_v5CiMN.js → ignore-DkK-S7HP.js} +1 -1
  140. package/dist/app/assets/{index-CAv2vOlh.js → index-D-y0b7ri.js} +142 -142
  141. package/dist/app/assets/index-D4gddvdJ.css +1 -0
  142. package/dist/app/assets/{infoDiagram-42DDH7IO-eZsn31yB.js → infoDiagram-42DDH7IO-BocjJZwC.js} +1 -1
  143. package/dist/app/assets/{inform7-Dj75C-lM.js → inform7-yFSTqWIe.js} +1 -1
  144. package/dist/app/assets/{ini-DnYgp5_G.js → ini-BcO8nYi7.js} +1 -1
  145. package/dist/app/assets/{io-D59cMlU5.js → io-BBkn-xXo.js} +1 -1
  146. package/dist/app/assets/{ishikawaDiagram-UXIWVN3A-Cb8G56a8.js → ishikawaDiagram-UXIWVN3A-Dlw93ArC.js} +1 -1
  147. package/dist/app/assets/{j-CuOplqKY.js → j-M5UTfImQ.js} +1 -1
  148. package/dist/app/assets/{java-DiKpa4Y3.js → java-Xjo5k22g.js} +1 -1
  149. package/dist/app/assets/{javadoc-DshvkFVS.js → javadoc-D6lpCK4S.js} +1 -1
  150. package/dist/app/assets/{javadoclike-Dl0yZMbR.js → javadoclike-DGBCsKaU.js} +1 -1
  151. package/dist/app/assets/{javascript-C3lRkH0T.js → javascript-DkE8xAaV.js} +1 -1
  152. package/dist/app/assets/{javastacktrace-BAZDNyis.js → javastacktrace-Be5zC165.js} +1 -1
  153. package/dist/app/assets/{jexl-BvqPLTYh.js → jexl-C1l-HPYI.js} +1 -1
  154. package/dist/app/assets/{jolie-DXjsE0XX.js → jolie-CRI76P3X.js} +1 -1
  155. package/dist/app/assets/{journeyDiagram-VCZTEJTY-9aLWSRay.js → journeyDiagram-VCZTEJTY-BOongVs3.js} +1 -1
  156. package/dist/app/assets/{jq-CLFx4HBH.js → jq-CrFpn7ql.js} +1 -1
  157. package/dist/app/assets/{js-extras-D33J2WNl.js → js-extras-BvLZUIJ5.js} +1 -1
  158. package/dist/app/assets/{js-templates-DlMN6fgo.js → js-templates-fYKII4Os.js} +1 -1
  159. package/dist/app/assets/{jsdoc-CGVgLZ2j.js → jsdoc-DGONDzA5.js} +1 -1
  160. package/dist/app/assets/{json-BTnVvJgU.js → json-BxIxewuG.js} +1 -1
  161. package/dist/app/assets/{json5-BW8yCajk.js → json5-BP9OBqRe.js} +1 -1
  162. package/dist/app/assets/{jsonp-iQTQx19C.js → jsonp-Br67zaRL.js} +1 -1
  163. package/dist/app/assets/{jsstacktrace-DXxcFNfy.js → jsstacktrace-BB-1Bcpa.js} +1 -1
  164. package/dist/app/assets/{jsx-D1npDekI.js → jsx-BNfIlN8n.js} +1 -1
  165. package/dist/app/assets/{julia-E711iN6A.js → julia-DVIi4XSJ.js} +1 -1
  166. package/dist/app/assets/{kanban-definition-6JOO6SKY-COnahS5T.js → kanban-definition-6JOO6SKY-DD7E-Llo.js} +1 -1
  167. package/dist/app/assets/{keepalived-Da5-tKqr.js → keepalived-DmPJ3LF8.js} +1 -1
  168. package/dist/app/assets/{keyman-CR_is7Lf.js → keyman-Cp-gCfcq.js} +1 -1
  169. package/dist/app/assets/{kotlin-6F8UihuI.js → kotlin-DCptm4kq.js} +1 -1
  170. package/dist/app/assets/{kumir-BGVXhhZU.js → kumir-Cohjvjog.js} +1 -1
  171. package/dist/app/assets/{kusto-xzJ5QDBT.js → kusto-C2dOIgK1.js} +1 -1
  172. package/dist/app/assets/{latex-jsq1GqdL.js → latex-DaFCffTw.js} +1 -1
  173. package/dist/app/assets/{latte-CqObxNvY.js → latte-D2mtlTen.js} +1 -1
  174. package/dist/app/assets/{layout-Od8azvI5.js → layout-C7fpWjpB.js} +1 -1
  175. package/dist/app/assets/{less-vdQIwlhr.js → less-CycfawGH.js} +1 -1
  176. package/dist/app/assets/{lilypond-CYhZp9Do.js → lilypond-DrvS8AAl.js} +1 -1
  177. package/dist/app/assets/{linear-BVmuh868.js → linear-2np4qyjJ.js} +1 -1
  178. package/dist/app/assets/{liquid-CF_8y_W1.js → liquid-BQH0bAHC.js} +1 -1
  179. package/dist/app/assets/{lisp-DqmYhGox.js → lisp-BCWvn2A1.js} +1 -1
  180. package/dist/app/assets/{livescript-DEuoDOv7.js → livescript-DGRf3L1-.js} +1 -1
  181. package/dist/app/assets/{llvm-DlajzOZN.js → llvm-C_6xvGBO.js} +1 -1
  182. package/dist/app/assets/{log-CU2WH4Lm.js → log-uCcZN8k2.js} +1 -1
  183. package/dist/app/assets/{lolcode-CDbraZlO.js → lolcode-XEyTNgnB.js} +1 -1
  184. package/dist/app/assets/{lua-C7PRrDvP.js → lua-Dy0fpGeF.js} +1 -1
  185. package/dist/app/assets/{magma-CEu2U_uQ.js → magma-D6d2r_W9.js} +1 -1
  186. package/dist/app/assets/{makefile-BpvnX-Nx.js → makefile-DOydYPAQ.js} +1 -1
  187. package/dist/app/assets/{markdown-BTkzQyNu.js → markdown-CPxRHFza.js} +1 -1
  188. package/dist/app/assets/{markup-Dje0J_2C.js → markup-jgYp2Lb8.js} +1 -1
  189. package/dist/app/assets/{markup-templating-cYyMwZ4b.js → markup-templating-lT8EutTe.js} +1 -1
  190. package/dist/app/assets/{matlab-RV1EEhcL.js → matlab-y_OOgSc_.js} +1 -1
  191. package/dist/app/assets/{maxscript-Bo7lyT0p.js → maxscript-PMli6_xE.js} +1 -1
  192. package/dist/app/assets/{mel-kP-zTDHf.js → mel-CIopQCOU.js} +1 -1
  193. package/dist/app/assets/{mermaid-D1yX-Bwv.js → mermaid-CN6aoo9D.js} +1 -1
  194. package/dist/app/assets/{min-z4SxYbt2.js → min-DDl12nhy.js} +1 -1
  195. package/dist/app/assets/{mindmap-definition-QFDTVHPH-Dm1nn9t1.js → mindmap-definition-QFDTVHPH-Bosd0mf9.js} +1 -1
  196. package/dist/app/assets/{mizar-DD-lNTs3.js → mizar-A9B8KORd.js} +1 -1
  197. package/dist/app/assets/{mongodb-By_x69ne.js → mongodb-DV-yCsoK.js} +1 -1
  198. package/dist/app/assets/{monkey-CQneMnOq.js → monkey-HEFodtZa.js} +1 -1
  199. package/dist/app/assets/{moonscript-Cv1IiKWR.js → moonscript-Bj3xAxEV.js} +1 -1
  200. package/dist/app/assets/{n1ql-BZ-dWxn_.js → n1ql-DX2KWloB.js} +1 -1
  201. package/dist/app/assets/{n4js-aHhU-EQW.js → n4js-DQoNqDS9.js} +1 -1
  202. package/dist/app/assets/{nand2tetris-hdl-Ct9NqibY.js → nand2tetris-hdl-BFqj7ePK.js} +1 -1
  203. package/dist/app/assets/{naniscript-jrYYiXE3.js → naniscript-Cz--o1by.js} +1 -1
  204. package/dist/app/assets/{nasm-CR4fygO0.js → nasm-Dcb8t8q6.js} +1 -1
  205. package/dist/app/assets/{neon-Bn9xaC-T.js → neon-CK7vx6_x.js} +1 -1
  206. package/dist/app/assets/{nevod-DwwkUQZl.js → nevod-BePMNPK5.js} +1 -1
  207. package/dist/app/assets/{nginx-CxzxW55o.js → nginx-BmbGx2v1.js} +1 -1
  208. package/dist/app/assets/{nim-_ziHrYai.js → nim-B8GUCE2H.js} +1 -1
  209. package/dist/app/assets/{nix-CnfynVyh.js → nix-lGZ9zLZy.js} +1 -1
  210. package/dist/app/assets/{nsis-CTa60cBQ.js → nsis-kBAOh3Cs.js} +1 -1
  211. package/dist/app/assets/{objectivec-CxzV-EqQ.js → objectivec-Bngj8IHt.js} +1 -1
  212. package/dist/app/assets/{ocaml-CXQfo6wC.js → ocaml-Bba8eOIn.js} +1 -1
  213. package/dist/app/assets/{opencl-CdW2Jum5.js → opencl-DgfdBrQ_.js} +1 -1
  214. package/dist/app/assets/{openqasm-99txnqqb.js → openqasm-CQV2wxlC.js} +1 -1
  215. package/dist/app/assets/{oz-CIEq0aNc.js → oz-CcMDAMF8.js} +1 -1
  216. package/dist/app/assets/{parigp-D9vfJxo4.js → parigp-Cr7bHjhJ.js} +1 -1
  217. package/dist/app/assets/{parser-DndpAxSG.js → parser-DX-CvQ44.js} +1 -1
  218. package/dist/app/assets/{pascal-RZKxz-_c.js → pascal-CCpiRTqn.js} +1 -1
  219. package/dist/app/assets/{pascaligo-B7sniYrp.js → pascaligo-uYvOwN6J.js} +1 -1
  220. package/dist/app/assets/{pcaxis-B5p4fAPz.js → pcaxis-dCoAlH4q.js} +1 -1
  221. package/dist/app/assets/{peoplecode-fCeRfJQ5.js → peoplecode-BZU0iRIF.js} +1 -1
  222. package/dist/app/assets/{perl-CYh0437K.js → perl-Iesy2DKz.js} +1 -1
  223. package/dist/app/assets/{php-rTdvXKxw.js → php-a3Z68PaM.js} +1 -1
  224. package/dist/app/assets/{php-extras-DCzP567Q.js → php-extras-CSgWIoUx.js} +1 -1
  225. package/dist/app/assets/{phpdoc-BLbjAEWJ.js → phpdoc-ClEamK9m.js} +1 -1
  226. package/dist/app/assets/{pieDiagram-DEJITSTG-BuH3UT8S.js → pieDiagram-DEJITSTG-D3AaN8D3.js} +1 -1
  227. package/dist/app/assets/{plsql-B9JKIw1T.js → plsql-BUydR2je.js} +1 -1
  228. package/dist/app/assets/{powerquery-Beeqnhtp.js → powerquery-CbE5r1LK.js} +1 -1
  229. package/dist/app/assets/{powershell-DofDkeyl.js → powershell-DubIcaqQ.js} +1 -1
  230. package/dist/app/assets/{processing-C-Nru_27.js → processing-CGZk9MFa.js} +1 -1
  231. package/dist/app/assets/{prolog-Blc4S8Hs.js → prolog-DWiKE05T.js} +1 -1
  232. package/dist/app/assets/{promql-BsC9xRrD.js → promql-ZM0X0cVe.js} +1 -1
  233. package/dist/app/assets/{properties-BNFVcgDb.js → properties-C_MgCVL7.js} +1 -1
  234. package/dist/app/assets/{protobuf-BlpX_T1K.js → protobuf-DTptx08I.js} +1 -1
  235. package/dist/app/assets/{psl-D2Hoa7_4.js → psl-AUkZATpo.js} +1 -1
  236. package/dist/app/assets/{pug-DBlY2nRe.js → pug-CiJR0sLM.js} +1 -1
  237. package/dist/app/assets/{puppet-BfKwQiWD.js → puppet-DRojzo7w.js} +1 -1
  238. package/dist/app/assets/{pure-CgWRG2Cz.js → pure-DAC784GG.js} +1 -1
  239. package/dist/app/assets/{purebasic-C4IB7b6g.js → purebasic-VM4UEIrk.js} +1 -1
  240. package/dist/app/assets/{purescript-DpbOv2_5.js → purescript-w5sMhquf.js} +1 -1
  241. package/dist/app/assets/{q-Bhw7S_Ff.js → q-CBWya0ez.js} +1 -1
  242. package/dist/app/assets/{qml-BCy5slwb.js → qml-BO1SKCTG.js} +1 -1
  243. package/dist/app/assets/{qore-C00kyzGf.js → qore-BLEy3V2Q.js} +1 -1
  244. package/dist/app/assets/{qsharp-CN2CDpkI.js → qsharp-DpGm5nXm.js} +1 -1
  245. package/dist/app/assets/{quadrantDiagram-34T5L4WZ-DF36QwGT.js → quadrantDiagram-34T5L4WZ-zqVJRfM0.js} +1 -1
  246. package/dist/app/assets/{r-B_BK6AZu.js → r-DJwW4woE.js} +1 -1
  247. package/dist/app/assets/{racket-ByLawBwM.js → racket-tfAlhm9J.js} +1 -1
  248. package/dist/app/assets/{reason-BDBRcGMx.js → reason-CuQcs6Us.js} +1 -1
  249. package/dist/app/assets/{regex-ChgfKyvR.js → regex-BjBaDCpX.js} +1 -1
  250. package/dist/app/assets/{rego-D_XvU-HX.js → rego-DWENKceX.js} +1 -1
  251. package/dist/app/assets/{renpy-5nIbfjm_.js → renpy-BgVqATTk.js} +1 -1
  252. package/dist/app/assets/{requirementDiagram-MS252O5E-DoM__lrz.js → requirementDiagram-MS252O5E-B8E8SJly.js} +1 -1
  253. package/dist/app/assets/{rest-D0kyBqSB.js → rest-B9oIUmDJ.js} +1 -1
  254. package/dist/app/assets/{rip-CYiR9G3s.js → rip-kd5zQPVz.js} +1 -1
  255. package/dist/app/assets/{roboconf-NbRqT12s.js → roboconf-B1kUkQdY.js} +1 -1
  256. package/dist/app/assets/{robotframework-DVLdugea.js → robotframework-B8Cn6zw0.js} +1 -1
  257. package/dist/app/assets/{ruby-CXYqjyLr.js → ruby-CnbgIhf_.js} +1 -1
  258. package/dist/app/assets/{rust-DtiosDKR.js → rust-C8OTkz5t.js} +1 -1
  259. package/dist/app/assets/{sankeyDiagram-XADWPNL6-DAGXEQXz.js → sankeyDiagram-XADWPNL6-BWdy5fPK.js} +1 -1
  260. package/dist/app/assets/{sas-CBuO0A4r.js → sas-Dw7vQpkk.js} +1 -1
  261. package/dist/app/assets/{sass-DAOC_JY6.js → sass-b7SoCESY.js} +1 -1
  262. package/dist/app/assets/{scala-DrjxfsaL.js → scala-D-p3rZbv.js} +1 -1
  263. package/dist/app/assets/{scheme-Dqq_pAgd.js → scheme-BPbr0IV_.js} +1 -1
  264. package/dist/app/assets/{scss-Cs8enbPf.js → scss-Cyjt-V6Q.js} +1 -1
  265. package/dist/app/assets/{sequenceDiagram-FGHM5R23-D_580_d2.js → sequenceDiagram-FGHM5R23-D-ACA62M.js} +1 -1
  266. package/dist/app/assets/{shell-session-jQLXH-IX.js → shell-session-C7s1XZ_p.js} +1 -1
  267. package/dist/app/assets/{smali-BjlQ2Fb8.js → smali-C621-SJz.js} +1 -1
  268. package/dist/app/assets/{smalltalk-CvvaQ-vE.js → smalltalk-CuF0kpcz.js} +1 -1
  269. package/dist/app/assets/{smarty-CuW15FKs.js → smarty-CHbvlN7a.js} +1 -1
  270. package/dist/app/assets/{sml-C2rZNwaS.js → sml-BGi33Pu0.js} +1 -1
  271. package/dist/app/assets/{solidity-Bz0UCY5q.js → solidity-CZYdcu6z.js} +1 -1
  272. package/dist/app/assets/{solution-file-DY6Szhc0.js → solution-file-ChgVI9u6.js} +1 -1
  273. package/dist/app/assets/{soy-DupXqVr6.js → soy-CWvn9QzG.js} +1 -1
  274. package/dist/app/assets/{sparql-CKXEGfsk.js → sparql-7JjN18LQ.js} +1 -1
  275. package/dist/app/assets/{splunk-spl-ylrNAn0q.js → splunk-spl-DOh97vYU.js} +1 -1
  276. package/dist/app/assets/{sqf-lJvrZCtE.js → sqf-x5ivlIR7.js} +1 -1
  277. package/dist/app/assets/{sql-B7hLAkUR.js → sql-BshsXXbk.js} +1 -1
  278. package/dist/app/assets/{squirrel-BH1Y674s.js → squirrel-BtrGPSbs.js} +1 -1
  279. package/dist/app/assets/{stan-fR7Qg8Ut.js → stan-sDuPYbZs.js} +1 -1
  280. package/dist/app/assets/{stateDiagram-FHFEXIEX-B8jUR8FD.js → stateDiagram-FHFEXIEX-C06KYdye.js} +1 -1
  281. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-sEMQqWl2.js +1 -0
  282. package/dist/app/assets/{stylus-s7kCNuJK.js → stylus-9qu1XZ91.js} +1 -1
  283. package/dist/app/assets/{swift-CCtYkHCf.js → swift-UgAKrg8O.js} +1 -1
  284. package/dist/app/assets/{systemd-BCElHahC.js → systemd-D1t2IK6h.js} +1 -1
  285. package/dist/app/assets/{t4-cs-H1_QKrKm.js → t4-cs-D5pPXmrn.js} +1 -1
  286. package/dist/app/assets/{t4-templating-6bPJc-Uq.js → t4-templating-DGpA7dEe.js} +1 -1
  287. package/dist/app/assets/{t4-vb-DJucVBb5.js → t4-vb-DeaFY-L7.js} +1 -1
  288. package/dist/app/assets/{tap-B_SCHNXn.js → tap-B2Jlbmzn.js} +1 -1
  289. package/dist/app/assets/{tcl-BNEpqSgM.js → tcl-D3Cxl9RS.js} +1 -1
  290. package/dist/app/assets/{textile-uWVZjI0f.js → textile-vleyTozU.js} +1 -1
  291. package/dist/app/assets/{timeline-definition-GMOUNBTQ-pCO1IuTh.js → timeline-definition-GMOUNBTQ-DSaRfuOY.js} +1 -1
  292. package/dist/app/assets/{toml-IfqaxX6C.js → toml-Qo-F6Xf4.js} +1 -1
  293. package/dist/app/assets/{tremor-CXc27b0y.js → tremor-J5ixbTSm.js} +1 -1
  294. package/dist/app/assets/{tt2-CSiBMY4w.js → tt2-DOa_Af-o.js} +1 -1
  295. package/dist/app/assets/{turtle-BG1NGns7.js → turtle-D8Su1Ry0.js} +1 -1
  296. package/dist/app/assets/{twig-BApA7lBN.js → twig-GBJoDW8g.js} +1 -1
  297. package/dist/app/assets/{typescript-CRhq3lVo.js → typescript-DimFy1wk.js} +1 -1
  298. package/dist/app/assets/{typoscript-CbCyspbX.js → typoscript-Corm9VPj.js} +1 -1
  299. package/dist/app/assets/{unrealscript-C0oIJrK_.js → unrealscript-dSS5kIDz.js} +1 -1
  300. package/dist/app/assets/{uorazor-CCeC8ukV.js → uorazor-BGl4DTbK.js} +1 -1
  301. package/dist/app/assets/{uri-BbJq2oKI.js → uri-B403JigU.js} +1 -1
  302. package/dist/app/assets/{v-DWbZTbl1.js → v-D1nzy8SK.js} +1 -1
  303. package/dist/app/assets/{vala-cNE5mkqv.js → vala-CbskSA-6.js} +1 -1
  304. package/dist/app/assets/{vbnet-C4ps1ulT.js → vbnet-BQwFvsFF.js} +1 -1
  305. package/dist/app/assets/{velocity-BqiV4VvP.js → velocity-dmmAE00U.js} +1 -1
  306. package/dist/app/assets/{vennDiagram-DHZGUBPP-DsozMeQe.js → vennDiagram-DHZGUBPP-BZ7Hb9Hn.js} +1 -1
  307. package/dist/app/assets/{verilog-uM22GI8M.js → verilog-BMPc4qiW.js} +1 -1
  308. package/dist/app/assets/{vhdl-CjipXQit.js → vhdl-BwLIiaQ3.js} +1 -1
  309. package/dist/app/assets/{vim-DAu-IiFJ.js → vim-NxGSno01.js} +1 -1
  310. package/dist/app/assets/{visual-basic-CdGIHeQV.js → visual-basic-DT3do2iL.js} +1 -1
  311. package/dist/app/assets/{wardley-RL74JXVD-oEncjGLp.js → wardley-RL74JXVD-BQuDsmFg.js} +1 -1
  312. package/dist/app/assets/{wardleyDiagram-NUSXRM2D-DNMPqgtw.js → wardleyDiagram-NUSXRM2D-DwMCEfDA.js} +1 -1
  313. package/dist/app/assets/{warpscript-ijeKRGom.js → warpscript-natO4zPn.js} +1 -1
  314. package/dist/app/assets/{wasm-CyK5pI_Y.js → wasm-BfugFzDn.js} +1 -1
  315. package/dist/app/assets/{web-idl-3RbxQwXD.js → web-idl-Bics_ax6.js} +1 -1
  316. package/dist/app/assets/{wiki-Vqqp-2xX.js → wiki-Blq646qq.js} +1 -1
  317. package/dist/app/assets/{wolfram-Bsi7joP0.js → wolfram-Ddn6uV9M.js} +1 -1
  318. package/dist/app/assets/{wren-WQYmqFb4.js → wren-CZ9gfbdr.js} +1 -1
  319. package/dist/app/assets/{xeora-D38FYsRy.js → xeora-zVJDHWYP.js} +1 -1
  320. package/dist/app/assets/{xml-doc-wUzx0i81.js → xml-doc-D9g-q5Fh.js} +1 -1
  321. package/dist/app/assets/{xojo-CGKogxG9.js → xojo-WpdjfLKR.js} +1 -1
  322. package/dist/app/assets/{xquery-Dv5QvWSQ.js → xquery-DFrusbUY.js} +1 -1
  323. package/dist/app/assets/{xychartDiagram-5P7HB3ND-BsbjEvIN.js → xychartDiagram-5P7HB3ND-BRMmacnH.js} +1 -1
  324. package/dist/app/assets/{yaml-BGAxdcfl.js → yaml-DB6og7ei.js} +1 -1
  325. package/dist/app/assets/{yang-DbR14Qhe.js → yang-CdFoUEPj.js} +1 -1
  326. package/dist/app/assets/{zig-BZnMCGLn.js → zig-C79X6U04.js} +1 -1
  327. package/dist/app/index.html +2 -2
  328. package/dist/index.cjs +707 -452
  329. package/dist/index.js +707 -452
  330. package/package.json +1 -1
  331. package/dist/app/assets/channel-C4IK_RZn.js +0 -1
  332. package/dist/app/assets/classDiagram-6PBFFD2Q-LicCc7Qv.js +0 -1
  333. package/dist/app/assets/classDiagram-v2-HSJHXN6E-LicCc7Qv.js +0 -1
  334. package/dist/app/assets/clone-BC1Apkgy.js +0 -1
  335. package/dist/app/assets/index-BojjVNpv.css +0 -1
  336. package/dist/app/assets/stateDiagram-v2-QKLJ7IA2-ByxORwfu.js +0 -1
package/dist/index.js CHANGED
@@ -1511,6 +1511,13 @@ var en_US_default = {
1511
1511
  option: "Option",
1512
1512
  other: "Other"
1513
1513
  },
1514
+ knowledgeRetriever: {
1515
+ queryTitle: "Query",
1516
+ resultsTitle: "Retrieved results ({{count}})",
1517
+ rawDataTitle: "Raw data",
1518
+ noResults: "No knowledge results found",
1519
+ scoreLabel: "Score"
1520
+ },
1514
1521
  agentRun: {
1515
1522
  defaultTitle: "Sub-agent",
1516
1523
  inputLabel: "Input",
@@ -1836,6 +1843,13 @@ var zh_CN_default = {
1836
1843
  option: "\u9009\u9879",
1837
1844
  other: "\u5176\u4ED6"
1838
1845
  },
1846
+ knowledgeRetriever: {
1847
+ queryTitle: "\u67E5\u8BE2",
1848
+ resultsTitle: "\u68C0\u7D22\u7ED3\u679C\uFF08{{count}}\uFF09",
1849
+ rawDataTitle: "\u539F\u59CB\u6570\u636E",
1850
+ noResults: "\u672A\u627E\u5230\u77E5\u8BC6\u7ED3\u679C",
1851
+ scoreLabel: "\u5206\u6570"
1852
+ },
1839
1853
  agentRun: {
1840
1854
  defaultTitle: "\u5B50\u667A\u80FD\u4F53",
1841
1855
  inputLabel: "\u8F93\u5165",
@@ -8584,8 +8598,305 @@ function AgentRunGroup({
8584
8598
  ] });
8585
8599
  }
8586
8600
 
8587
- // src/components/thread/messages/web-search-component-renderer.tsx
8601
+ // src/i18n/localized-text.ts
8602
+ function resolveLocalizedText(value, language) {
8603
+ if (typeof value === "string") {
8604
+ const trimmed = value.trim();
8605
+ return trimmed || null;
8606
+ }
8607
+ if (!value || typeof value !== "object") return null;
8608
+ const localized = value;
8609
+ const normalizedLanguage = language.trim();
8610
+ const underscoredLanguage = normalizedLanguage.replace(/-/g, "_");
8611
+ const languagePrefix = normalizedLanguage.split("-")[0];
8612
+ const preferredKeys = normalizedLanguage.startsWith("zh") ? [
8613
+ normalizedLanguage,
8614
+ underscoredLanguage,
8615
+ "zh_Hans",
8616
+ "zh-Hans",
8617
+ "zh_CN",
8618
+ "zh-CN",
8619
+ "zh",
8620
+ "en_US",
8621
+ "en-US",
8622
+ "en"
8623
+ ] : [
8624
+ normalizedLanguage,
8625
+ underscoredLanguage,
8626
+ "en_US",
8627
+ "en-US",
8628
+ "en",
8629
+ languagePrefix,
8630
+ "zh_Hans",
8631
+ "zh-Hans",
8632
+ "zh_CN",
8633
+ "zh-CN",
8634
+ "zh"
8635
+ ];
8636
+ for (const key of preferredKeys) {
8637
+ const candidate = localized[key];
8638
+ if (typeof candidate === "string" && candidate.trim()) {
8639
+ return candidate.trim();
8640
+ }
8641
+ }
8642
+ for (const candidate of Object.values(localized)) {
8643
+ if (typeof candidate === "string" && candidate.trim()) {
8644
+ return candidate.trim();
8645
+ }
8646
+ }
8647
+ return null;
8648
+ }
8649
+
8650
+ // src/components/thread/messages/knowledge-retriever-component-renderer.tsx
8588
8651
  import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
8652
+ var KNOWLEDGE_RETRIEVER_TITLE = "Knowledge Retriever";
8653
+ var KNOWLEDGE_METADATA_SKIP_KEYS = /* @__PURE__ */ new Set([
8654
+ "assets",
8655
+ "children",
8656
+ "loc",
8657
+ "relevanceScore",
8658
+ "score"
8659
+ ]);
8660
+ var knowledgeRetrieverComponentRenderer = {
8661
+ id: "knowledge-retriever",
8662
+ presentation: "grouped-step",
8663
+ match: isKnowledgeRetrieverComponent,
8664
+ getTitle: () => KNOWLEDGE_RETRIEVER_TITLE,
8665
+ hasDetails: hasKnowledgeRetrieverDetails,
8666
+ renderDetails: KnowledgeRetrieverDetails
8667
+ };
8668
+ function normalizeToolToken(value) {
8669
+ if (typeof value !== "string") return null;
8670
+ const normalized = value.trim().toLowerCase().replace(/[\s-]+/g, "_");
8671
+ return normalized || null;
8672
+ }
8673
+ function isRecord2(value) {
8674
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
8675
+ }
8676
+ function readString(value) {
8677
+ if (typeof value !== "string") return void 0;
8678
+ const trimmed = value.trim();
8679
+ return trimmed || void 0;
8680
+ }
8681
+ function stringifyValue(value) {
8682
+ if (value === null || value === void 0) return void 0;
8683
+ if (typeof value === "string") return readString(value);
8684
+ if (typeof value === "number" || typeof value === "boolean") {
8685
+ return String(value);
8686
+ }
8687
+ try {
8688
+ const serialized = JSON.stringify(value);
8689
+ return serialized && serialized !== "{}" ? serialized : void 0;
8690
+ } catch {
8691
+ return String(value);
8692
+ }
8693
+ }
8694
+ function truncateMetadataValue(value) {
8695
+ return value.length > 90 ? `${value.slice(0, 87)}...` : value;
8696
+ }
8697
+ function formatScore(value) {
8698
+ if (typeof value === "number") {
8699
+ return Number.isFinite(value) ? value.toFixed(value < 1 ? 3 : 2) : void 0;
8700
+ }
8701
+ return readString(value);
8702
+ }
8703
+ function getLineRange(metadata) {
8704
+ const loc = metadata.loc;
8705
+ if (!isRecord2(loc)) return void 0;
8706
+ const lines = loc.lines;
8707
+ if (!isRecord2(lines)) return void 0;
8708
+ const from = stringifyValue(lines.from);
8709
+ const to = stringifyValue(lines.to);
8710
+ if (from && to) return `${from}-${to}`;
8711
+ return from ?? to;
8712
+ }
8713
+ function normalizeMetadataEntries(metadata) {
8714
+ return Object.entries(metadata).flatMap(([key, value]) => {
8715
+ if (KNOWLEDGE_METADATA_SKIP_KEYS.has(key)) return [];
8716
+ const formatted = stringifyValue(value);
8717
+ if (!formatted) return [];
8718
+ return [
8719
+ {
8720
+ key,
8721
+ value: truncateMetadataValue(formatted)
8722
+ }
8723
+ ];
8724
+ });
8725
+ }
8726
+ function normalizeKnowledgeResult(value, fallbackTitle) {
8727
+ if (!isRecord2(value)) return null;
8728
+ const metadata = isRecord2(value.metadata) ? value.metadata : {};
8729
+ const document2 = isRecord2(value.document) ? value.document : {};
8730
+ const content = readString(value.pageContent);
8731
+ const title = readString(document2.name) ?? readString(metadata.originalFileName) ?? readString(metadata.source) ?? readString(value.id) ?? readString(metadata.chunkId) ?? fallbackTitle;
8732
+ if (!content && Object.keys(metadata).length === 0 && Object.keys(document2).length === 0) {
8733
+ return null;
8734
+ }
8735
+ return {
8736
+ id: readString(value.id) ?? readString(metadata.chunkId),
8737
+ title,
8738
+ url: readString(document2.fileUrl),
8739
+ content,
8740
+ lineRange: getLineRange(metadata),
8741
+ score: formatScore(
8742
+ metadata.relevanceScore ?? metadata.score ?? value.score
8743
+ ),
8744
+ metadata: normalizeMetadataEntries(metadata)
8745
+ };
8746
+ }
8747
+ function getKnowledgeResults(data) {
8748
+ if (!Array.isArray(data.data)) return [];
8749
+ return data.data.flatMap((item, index) => {
8750
+ const result = normalizeKnowledgeResult(item, `Result ${index + 1}`);
8751
+ return result ? [result] : [];
8752
+ });
8753
+ }
8754
+ function getRawKnowledgeData(data) {
8755
+ return data.data ?? data.output ?? null;
8756
+ }
8757
+ function getRetrieverQuery(data, language) {
8758
+ const input = data.input;
8759
+ if (isRecord2(input)) {
8760
+ return readString(input.query) ?? readString(input.input) ?? readString(input.question);
8761
+ }
8762
+ return readString(resolveLocalizedText(data.message, language)) ?? readString(input);
8763
+ }
8764
+ function hasKnowledgeRetrieverDetails(_content, data) {
8765
+ return isKnowledgeRetrieverComponent(_content, data);
8766
+ }
8767
+ function isKnowledgeRetrieverComponent(_content, data) {
8768
+ return normalizeToolToken(data.type) === "knowledges";
8769
+ }
8770
+ function KnowledgeRawDataBlock({ value }) {
8771
+ const { t } = useChatkitTranslation();
8772
+ const detected = detectJsonValue(value);
8773
+ if (detected.kind === "text") {
8774
+ return /* @__PURE__ */ jsx32(PlainTextBlock, { value: detected.text });
8775
+ }
8776
+ return /* @__PURE__ */ jsxs20(Tabs, { defaultValue: "tree", className: "min-w-0", children: [
8777
+ /* @__PURE__ */ jsxs20("div", { className: "mb-2 flex min-w-0 items-center justify-between gap-2", children: [
8778
+ /* @__PURE__ */ jsxs20("span", { className: "min-w-0 truncate text-[11px] text-muted-foreground", children: [
8779
+ t("message.toolGroup.jsonTitle"),
8780
+ " \xB7",
8781
+ " ",
8782
+ getJsonValueSummary(detected.value)
8783
+ ] }),
8784
+ /* @__PURE__ */ jsxs20(TabsList, { className: "rounded-md p-0.5", children: [
8785
+ /* @__PURE__ */ jsx32(TabsTrigger, { className: "px-2 py-0.5 text-[11px]", value: "tree", children: t("message.toolGroup.jsonTree") }),
8786
+ /* @__PURE__ */ jsx32(TabsTrigger, { className: "px-2 py-0.5 text-[11px]", value: "raw", children: t("message.toolGroup.jsonRaw") })
8787
+ ] })
8788
+ ] }),
8789
+ /* @__PURE__ */ jsx32(TabsContent, { value: "tree", className: "mt-0", children: /* @__PURE__ */ jsx32(JsonTreeView, { value: detected.value }) }),
8790
+ /* @__PURE__ */ jsx32(TabsContent, { value: "raw", className: "mt-0", children: /* @__PURE__ */ jsx32(RawJsonBlock, { raw: detected.raw }) })
8791
+ ] });
8792
+ }
8793
+ function KnowledgeRetrieverDetails({
8794
+ data
8795
+ }) {
8796
+ const { i18n: i18n2, t } = useChatkitTranslation();
8797
+ const query = getRetrieverQuery(data, i18n2.language);
8798
+ const results = getKnowledgeResults(data);
8799
+ const rawData = getRawKnowledgeData(data);
8800
+ const hasArrayData = Array.isArray(data.data);
8801
+ const hasRawFallback = rawData !== null && rawData !== void 0 && (!hasArrayData || Array.isArray(data.data) && data.data.length > 0 && results.length === 0);
8802
+ const showEmptyState = results.length === 0 && !hasRawFallback && data.status !== "running";
8803
+ return /* @__PURE__ */ jsxs20("div", { className: "min-w-0 space-y-3 px-3 py-2", children: [
8804
+ query ? /* @__PURE__ */ jsxs20("div", { className: "min-w-0 space-y-1", children: [
8805
+ /* @__PURE__ */ jsx32("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.knowledgeRetriever.queryTitle") }),
8806
+ /* @__PURE__ */ jsx32("div", { className: "min-w-0 whitespace-pre-wrap wrap-break-word rounded-md bg-muted/40 px-3 py-2 font-mono text-[12px] leading-5 text-foreground/80", children: query })
8807
+ ] }) : null,
8808
+ results.length > 0 ? /* @__PURE__ */ jsxs20("div", { className: "min-w-0 space-y-2", children: [
8809
+ /* @__PURE__ */ jsx32("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.knowledgeRetriever.resultsTitle", {
8810
+ count: results.length
8811
+ }) }),
8812
+ /* @__PURE__ */ jsx32("div", { className: "space-y-2", children: results.map((result, index) => /* @__PURE__ */ jsx32(
8813
+ KnowledgeResultCard,
8814
+ {
8815
+ result,
8816
+ index
8817
+ },
8818
+ result.id ?? `${result.title}-${index}`
8819
+ )) })
8820
+ ] }) : null,
8821
+ hasRawFallback ? /* @__PURE__ */ jsxs20("div", { className: "min-w-0 space-y-1", children: [
8822
+ /* @__PURE__ */ jsx32("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.knowledgeRetriever.rawDataTitle") }),
8823
+ /* @__PURE__ */ jsx32(KnowledgeRawDataBlock, { value: rawData })
8824
+ ] }) : null,
8825
+ showEmptyState ? /* @__PURE__ */ jsx32("div", { className: "rounded-md border border-dashed border-border/70 px-3 py-4 text-center text-xs text-muted-foreground", children: t("message.knowledgeRetriever.noResults") }) : null
8826
+ ] });
8827
+ }
8828
+ function KnowledgeResultCard({
8829
+ result,
8830
+ index
8831
+ }) {
8832
+ const { t } = useChatkitTranslation();
8833
+ const titleId = `knowledge-result-${index + 1}`;
8834
+ const metadata = [
8835
+ ...result.score ? [
8836
+ {
8837
+ key: t("message.knowledgeRetriever.scoreLabel"),
8838
+ value: result.score
8839
+ }
8840
+ ] : [],
8841
+ ...result.metadata
8842
+ ];
8843
+ const titleClassName = "min-w-0 line-clamp-2 text-sm font-medium leading-5 text-foreground";
8844
+ return /* @__PURE__ */ jsx32("article", { className: "min-w-0 rounded-md border border-border/60 bg-background/80 px-3 py-2", children: /* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 items-start gap-2", children: [
8845
+ /* @__PURE__ */ jsx32("span", { className: "mt-0.5 inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-medium text-muted-foreground", children: index + 1 }),
8846
+ /* @__PURE__ */ jsxs20("div", { className: "min-w-0 flex-1", children: [
8847
+ result.url ? /* @__PURE__ */ jsxs20(
8848
+ "a",
8849
+ {
8850
+ id: titleId,
8851
+ href: result.url,
8852
+ target: "_blank",
8853
+ rel: "noreferrer",
8854
+ className: cn(titleClassName, "hover:underline"),
8855
+ children: [
8856
+ result.title,
8857
+ result.lineRange ? /* @__PURE__ */ jsxs20("span", { className: "ml-1 text-muted-foreground", children: [
8858
+ "[",
8859
+ result.lineRange,
8860
+ "]"
8861
+ ] }) : null
8862
+ ]
8863
+ }
8864
+ ) : /* @__PURE__ */ jsxs20("div", { id: titleId, className: titleClassName, children: [
8865
+ result.title,
8866
+ result.lineRange ? /* @__PURE__ */ jsxs20("span", { className: "ml-1 text-muted-foreground", children: [
8867
+ "[",
8868
+ result.lineRange,
8869
+ "]"
8870
+ ] }) : null
8871
+ ] }),
8872
+ result.content ? /* @__PURE__ */ jsx32("p", { className: "mt-1 line-clamp-3 whitespace-pre-wrap text-xs leading-5 text-muted-foreground", children: result.content }) : null,
8873
+ metadata.length > 0 ? /* @__PURE__ */ jsx32(
8874
+ "div",
8875
+ {
8876
+ className: "mt-2 flex flex-wrap gap-1.5",
8877
+ "aria-labelledby": titleId,
8878
+ children: metadata.slice(0, 10).map((item) => /* @__PURE__ */ jsxs20(
8879
+ "span",
8880
+ {
8881
+ className: "inline-flex min-w-0 max-w-full items-center gap-1 rounded-md bg-muted/50 px-1.5 py-0.5 text-[11px] leading-4 text-muted-foreground",
8882
+ children: [
8883
+ /* @__PURE__ */ jsxs20("span", { className: "shrink-0 font-medium text-foreground/70", children: [
8884
+ item.key,
8885
+ ":"
8886
+ ] }),
8887
+ /* @__PURE__ */ jsx32("span", { className: "min-w-0 truncate font-mono", children: item.value })
8888
+ ]
8889
+ },
8890
+ `${item.key}:${item.value}`
8891
+ ))
8892
+ }
8893
+ ) : null
8894
+ ] })
8895
+ ] }) });
8896
+ }
8897
+
8898
+ // src/components/thread/messages/web-search-component-renderer.tsx
8899
+ import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
8589
8900
  var webSearchComponentRenderer = {
8590
8901
  id: "computer-web-search-sources",
8591
8902
  presentation: "grouped-step",
@@ -8593,7 +8904,7 @@ var webSearchComponentRenderer = {
8593
8904
  hasDetails: hasWebSearchSources,
8594
8905
  renderDetails: WebSearchToolCallOutput
8595
8906
  };
8596
- function normalizeToolToken(value) {
8907
+ function normalizeToolToken2(value) {
8597
8908
  if (typeof value !== "string") return null;
8598
8909
  const normalized = value.trim().toLowerCase().replace(/[\s-]+/g, "_");
8599
8910
  return normalized || null;
@@ -8638,9 +8949,9 @@ function hasWebSearchSources(_content, data) {
8638
8949
  }
8639
8950
  function isComputerWebSearchComponent(_content, data) {
8640
8951
  const isComputer = data.category === "Computer";
8641
- const isWebSearch = normalizeToolToken(data.type) === "web_search";
8952
+ const isWebSearch = normalizeToolToken2(data.type) === "web_search";
8642
8953
  if (!isComputer || !isWebSearch) return false;
8643
- return normalizeToolToken(data.tool) === "web_search" || getWebSearchSources(data).length > 0;
8954
+ return normalizeToolToken2(data.tool) === "web_search" || getWebSearchSources(data).length > 0;
8644
8955
  }
8645
8956
  function getSourceHost(url) {
8646
8957
  try {
@@ -8655,9 +8966,9 @@ function WebSearchToolCallOutput({
8655
8966
  const { t } = useChatkitTranslation();
8656
8967
  const sources = getWebSearchSources(data);
8657
8968
  if (sources.length === 0 || data.error !== void 0) return null;
8658
- return /* @__PURE__ */ jsxs20("div", { className: "space-y-2", children: [
8659
- /* @__PURE__ */ jsx32("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.toolGroup.sourcesTitle") }),
8660
- /* @__PURE__ */ jsx32("div", { className: "space-y-2", children: sources.map((source, index) => {
8969
+ return /* @__PURE__ */ jsxs21("div", { className: "space-y-2", children: [
8970
+ /* @__PURE__ */ jsx33("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.toolGroup.sourcesTitle") }),
8971
+ /* @__PURE__ */ jsx33("div", { className: "space-y-2", children: sources.map((source, index) => {
8661
8972
  const sourceHost = getSourceHost(source.url);
8662
8973
  const snippet = source.content ?? source.description;
8663
8974
  const metaParts = [
@@ -8665,13 +8976,13 @@ function WebSearchToolCallOutput({
8665
8976
  source.publishedDate,
8666
8977
  source.author
8667
8978
  ].filter((item) => Boolean(item));
8668
- return /* @__PURE__ */ jsxs20(
8979
+ return /* @__PURE__ */ jsxs21(
8669
8980
  "div",
8670
8981
  {
8671
8982
  className: "min-w-0 rounded-md border border-border/60 bg-background/80 px-3 py-2",
8672
8983
  children: [
8673
- metaParts.length > 0 ? /* @__PURE__ */ jsx32("div", { className: "mb-1 truncate text-[11px] text-muted-foreground", children: metaParts.join(" / ") }) : null,
8674
- /* @__PURE__ */ jsx32(
8984
+ metaParts.length > 0 ? /* @__PURE__ */ jsx33("div", { className: "mb-1 truncate text-[11px] text-muted-foreground", children: metaParts.join(" / ") }) : null,
8985
+ /* @__PURE__ */ jsx33(
8675
8986
  "a",
8676
8987
  {
8677
8988
  href: source.url,
@@ -8681,7 +8992,7 @@ function WebSearchToolCallOutput({
8681
8992
  children: source.title
8682
8993
  }
8683
8994
  ),
8684
- snippet ? /* @__PURE__ */ jsx32("p", { className: "mt-1 line-clamp-3 text-xs leading-5 text-muted-foreground", children: snippet }) : null
8995
+ snippet ? /* @__PURE__ */ jsx33("p", { className: "mt-1 line-clamp-3 text-xs leading-5 text-muted-foreground", children: snippet }) : null
8685
8996
  ]
8686
8997
  },
8687
8998
  `${source.url}-${index}`
@@ -8692,6 +9003,7 @@ function WebSearchToolCallOutput({
8692
9003
 
8693
9004
  // src/components/thread/messages/component-message-renderers.tsx
8694
9005
  var COMPONENT_MESSAGE_RENDERERS = [
9006
+ knowledgeRetrieverComponentRenderer,
8695
9007
  webSearchComponentRenderer
8696
9008
  ];
8697
9009
  function getComponentMessageRenderer(content, data) {
@@ -8729,58 +9041,7 @@ import {
8729
9041
  Wrench as Wrench2,
8730
9042
  XCircle as XCircle2
8731
9043
  } from "lucide-react";
8732
-
8733
- // src/i18n/localized-text.ts
8734
- function resolveLocalizedText(value, language) {
8735
- if (typeof value === "string") {
8736
- const trimmed = value.trim();
8737
- return trimmed || null;
8738
- }
8739
- if (!value || typeof value !== "object") return null;
8740
- const localized = value;
8741
- const normalizedLanguage = language.trim();
8742
- const underscoredLanguage = normalizedLanguage.replace(/-/g, "_");
8743
- const languagePrefix = normalizedLanguage.split("-")[0];
8744
- const preferredKeys = normalizedLanguage.startsWith("zh") ? [
8745
- normalizedLanguage,
8746
- underscoredLanguage,
8747
- "zh_Hans",
8748
- "zh-Hans",
8749
- "zh_CN",
8750
- "zh-CN",
8751
- "zh",
8752
- "en_US",
8753
- "en-US",
8754
- "en"
8755
- ] : [
8756
- normalizedLanguage,
8757
- underscoredLanguage,
8758
- "en_US",
8759
- "en-US",
8760
- "en",
8761
- languagePrefix,
8762
- "zh_Hans",
8763
- "zh-Hans",
8764
- "zh_CN",
8765
- "zh-CN",
8766
- "zh"
8767
- ];
8768
- for (const key of preferredKeys) {
8769
- const candidate = localized[key];
8770
- if (typeof candidate === "string" && candidate.trim()) {
8771
- return candidate.trim();
8772
- }
8773
- }
8774
- for (const candidate of Object.values(localized)) {
8775
- if (typeof candidate === "string" && candidate.trim()) {
8776
- return candidate.trim();
8777
- }
8778
- }
8779
- return null;
8780
- }
8781
-
8782
- // src/components/thread/messages/tool-component-group.tsx
8783
- import { jsx as jsx33, jsxs as jsxs21 } from "react/jsx-runtime";
9044
+ import { jsx as jsx34, jsxs as jsxs22 } from "react/jsx-runtime";
8784
9045
  var toolStatusConfig = {
8785
9046
  success: {
8786
9047
  iconClass: "border-green-500 text-green-700",
@@ -8952,13 +9213,13 @@ function isSkippableToolGroupSeparator(content) {
8952
9213
  }
8953
9214
  return false;
8954
9215
  }
8955
- function normalizeToolToken2(value) {
9216
+ function normalizeToolToken3(value) {
8956
9217
  if (typeof value !== "string") return null;
8957
9218
  const normalized = value.trim().toLowerCase().replace(/[\s-]+/g, "_");
8958
9219
  return normalized || null;
8959
9220
  }
8960
9221
  function classifyToolToken(value) {
8961
- const normalized = normalizeToolToken2(
9222
+ const normalized = normalizeToolToken3(
8962
9223
  typeof value === "string" ? value : resolveLocalizedText(value, "en-US")
8963
9224
  );
8964
9225
  if (!normalized) return null;
@@ -8997,8 +9258,8 @@ function getToolActivityLabel(content, language, statusOverride) {
8997
9258
  if (status === "running") {
8998
9259
  return message ?? title ?? tool ?? type ?? "Tool";
8999
9260
  }
9000
- const titleToken = normalizeToolToken2(title);
9001
- const genericTitle = titleToken !== null && [tool, type].map((candidate) => normalizeToolToken2(candidate)).some((candidate) => candidate === titleToken);
9261
+ const titleToken = normalizeToolToken3(title);
9262
+ const genericTitle = titleToken !== null && [tool, type].map((candidate) => normalizeToolToken3(candidate)).some((candidate) => candidate === titleToken);
9002
9263
  if (message && (!title || genericTitle)) {
9003
9264
  return message;
9004
9265
  }
@@ -9082,7 +9343,7 @@ function createToolsetAvatarUrl(toolsetId, apiUrl) {
9082
9343
  }
9083
9344
  }
9084
9345
  function shouldUseToolsetAvatar(toolset) {
9085
- const normalized = normalizeToolToken2(toolset);
9346
+ const normalized = normalizeToolToken3(toolset);
9086
9347
  return normalized === "mcp" || normalized === "openapi";
9087
9348
  }
9088
9349
  function useToolsetAvatar(toolsetId, enabled, apiUrl) {
@@ -9120,7 +9381,7 @@ function ToolAvatarIcon({
9120
9381
  className
9121
9382
  }) {
9122
9383
  if (avatar.url) {
9123
- return /* @__PURE__ */ jsx33(
9384
+ return /* @__PURE__ */ jsx34(
9124
9385
  "img",
9125
9386
  {
9126
9387
  alt: "",
@@ -9133,7 +9394,7 @@ function ToolAvatarIcon({
9133
9394
  }
9134
9395
  const emoji = unicodeFromUnified2(avatar.emoji?.unified);
9135
9396
  if (emoji) {
9136
- return /* @__PURE__ */ jsx33(
9397
+ return /* @__PURE__ */ jsx34(
9137
9398
  "span",
9138
9399
  {
9139
9400
  "aria-hidden": "true",
@@ -9148,7 +9409,7 @@ function ToolAvatarIcon({
9148
9409
  }
9149
9410
  );
9150
9411
  }
9151
- return /* @__PURE__ */ jsx33(
9412
+ return /* @__PURE__ */ jsx34(
9152
9413
  CircleHelp,
9153
9414
  {
9154
9415
  className,
@@ -9158,7 +9419,7 @@ function ToolAvatarIcon({
9158
9419
  );
9159
9420
  }
9160
9421
  function getKnownToolsetIcon(toolset) {
9161
- const normalized = normalizeToolToken2(toolset);
9422
+ const normalized = normalizeToolToken3(toolset);
9162
9423
  if (!normalized) return null;
9163
9424
  switch (normalized) {
9164
9425
  case "project":
@@ -9181,7 +9442,7 @@ function getKnownToolsetIcon(toolset) {
9181
9442
  }
9182
9443
  }
9183
9444
  function getStepTypeIcon(type) {
9184
- const normalized = normalizeToolToken2(type);
9445
+ const normalized = normalizeToolToken3(type);
9185
9446
  if (!normalized) return null;
9186
9447
  switch (normalized) {
9187
9448
  case "file":
@@ -9216,7 +9477,7 @@ function ToolStepIcon({
9216
9477
  setFailedIconUrl(null);
9217
9478
  }, [iconUrl]);
9218
9479
  if (avatar) {
9219
- return /* @__PURE__ */ jsx33(
9480
+ return /* @__PURE__ */ jsx34(
9220
9481
  ToolAvatarIcon,
9221
9482
  {
9222
9483
  avatar,
@@ -9226,7 +9487,7 @@ function ToolStepIcon({
9226
9487
  );
9227
9488
  }
9228
9489
  if (iconUrl && failedIconUrl !== iconUrl) {
9229
- return /* @__PURE__ */ jsx33(
9490
+ return /* @__PURE__ */ jsx34(
9230
9491
  "img",
9231
9492
  {
9232
9493
  alt: "",
@@ -9240,7 +9501,7 @@ function ToolStepIcon({
9240
9501
  }
9241
9502
  const TypeIcon = getStepTypeIcon(data.type);
9242
9503
  if (TypeIcon) {
9243
- return /* @__PURE__ */ jsx33(
9504
+ return /* @__PURE__ */ jsx34(
9244
9505
  TypeIcon,
9245
9506
  {
9246
9507
  className,
@@ -9251,7 +9512,7 @@ function ToolStepIcon({
9251
9512
  }
9252
9513
  const ToolsetIcon = getKnownToolsetIcon(data.toolset);
9253
9514
  if (ToolsetIcon) {
9254
- return /* @__PURE__ */ jsx33(
9515
+ return /* @__PURE__ */ jsx34(
9255
9516
  ToolsetIcon,
9256
9517
  {
9257
9518
  className,
@@ -9261,7 +9522,7 @@ function ToolStepIcon({
9261
9522
  );
9262
9523
  }
9263
9524
  if (usesToolsetAvatar) {
9264
- return /* @__PURE__ */ jsx33(
9525
+ return /* @__PURE__ */ jsx34(
9265
9526
  CircleHelp,
9266
9527
  {
9267
9528
  className,
@@ -9270,7 +9531,7 @@ function ToolStepIcon({
9270
9531
  }
9271
9532
  );
9272
9533
  }
9273
- return /* @__PURE__ */ jsx33(
9534
+ return /* @__PURE__ */ jsx34(
9274
9535
  CircleHelp,
9275
9536
  {
9276
9537
  className,
@@ -9301,7 +9562,7 @@ function ToolCallCopyButton({ value }) {
9301
9562
  }).catch(() => void 0);
9302
9563
  }, [clearResetTimeout, value]);
9303
9564
  const label = isCopied ? t("message.toolGroup.copied") : t("message.toolGroup.copy");
9304
- return /* @__PURE__ */ jsx33(
9565
+ return /* @__PURE__ */ jsx34(
9305
9566
  "button",
9306
9567
  {
9307
9568
  type: "button",
@@ -9309,7 +9570,7 @@ function ToolCallCopyButton({ value }) {
9309
9570
  "aria-label": label,
9310
9571
  title: label,
9311
9572
  onClick: handleCopy,
9312
- children: isCopied ? /* @__PURE__ */ jsx33(Check3, { className: "h-3.5 w-3.5", "aria-hidden": "true" }) : /* @__PURE__ */ jsx33(Copy, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
9573
+ children: isCopied ? /* @__PURE__ */ jsx34(Check3, { className: "h-3.5 w-3.5", "aria-hidden": "true" }) : /* @__PURE__ */ jsx34(Copy, { className: "h-3.5 w-3.5", "aria-hidden": "true" })
9313
9574
  }
9314
9575
  );
9315
9576
  }
@@ -9320,28 +9581,28 @@ function ToolCallValueBlock({
9320
9581
  const { t } = useChatkitTranslation();
9321
9582
  const detected = detectJsonValue(value);
9322
9583
  if (detected.kind === "text") {
9323
- return /* @__PURE__ */ jsxs21("div", { className: "min-w-0 space-y-1", children: [
9324
- /* @__PURE__ */ jsx33("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx33(ToolCallCopyButton, { value: detected.text }) }),
9325
- /* @__PURE__ */ jsx33(PlainTextBlock, { value: detected.text, destructive })
9584
+ return /* @__PURE__ */ jsxs22("div", { className: "min-w-0 space-y-1", children: [
9585
+ /* @__PURE__ */ jsx34("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx34(ToolCallCopyButton, { value: detected.text }) }),
9586
+ /* @__PURE__ */ jsx34(PlainTextBlock, { value: detected.text, destructive })
9326
9587
  ] });
9327
9588
  }
9328
- return /* @__PURE__ */ jsxs21(Tabs, { defaultValue: "tree", className: "min-w-0", children: [
9329
- /* @__PURE__ */ jsxs21("div", { className: "mb-2 flex min-w-0 items-center justify-between gap-2", children: [
9330
- /* @__PURE__ */ jsxs21("span", { className: "min-w-0 truncate text-[11px] text-muted-foreground", children: [
9589
+ return /* @__PURE__ */ jsxs22(Tabs, { defaultValue: "tree", className: "min-w-0", children: [
9590
+ /* @__PURE__ */ jsxs22("div", { className: "mb-2 flex min-w-0 items-center justify-between gap-2", children: [
9591
+ /* @__PURE__ */ jsxs22("span", { className: "min-w-0 truncate text-[11px] text-muted-foreground", children: [
9331
9592
  t("message.toolGroup.jsonTitle"),
9332
9593
  " \xB7 ",
9333
9594
  getJsonValueSummary(detected.value)
9334
9595
  ] }),
9335
- /* @__PURE__ */ jsxs21("div", { className: "flex shrink-0 items-center gap-1", children: [
9336
- /* @__PURE__ */ jsx33(ToolCallCopyButton, { value: detected.raw }),
9337
- /* @__PURE__ */ jsxs21(TabsList, { className: "rounded-md p-0.5", children: [
9338
- /* @__PURE__ */ jsx33(TabsTrigger, { className: "px-2 py-0.5 text-[11px]", value: "tree", children: t("message.toolGroup.jsonTree") }),
9339
- /* @__PURE__ */ jsx33(TabsTrigger, { className: "px-2 py-0.5 text-[11px]", value: "raw", children: t("message.toolGroup.jsonRaw") })
9596
+ /* @__PURE__ */ jsxs22("div", { className: "flex shrink-0 items-center gap-1", children: [
9597
+ /* @__PURE__ */ jsx34(ToolCallCopyButton, { value: detected.raw }),
9598
+ /* @__PURE__ */ jsxs22(TabsList, { className: "rounded-md p-0.5", children: [
9599
+ /* @__PURE__ */ jsx34(TabsTrigger, { className: "px-2 py-0.5 text-[11px]", value: "tree", children: t("message.toolGroup.jsonTree") }),
9600
+ /* @__PURE__ */ jsx34(TabsTrigger, { className: "px-2 py-0.5 text-[11px]", value: "raw", children: t("message.toolGroup.jsonRaw") })
9340
9601
  ] })
9341
9602
  ] })
9342
9603
  ] }),
9343
- /* @__PURE__ */ jsx33(TabsContent, { value: "tree", className: "mt-0", children: /* @__PURE__ */ jsx33(JsonTreeView, { value: detected.value }) }),
9344
- /* @__PURE__ */ jsx33(TabsContent, { value: "raw", className: "mt-0", children: /* @__PURE__ */ jsx33(RawJsonBlock, { raw: detected.raw }) })
9604
+ /* @__PURE__ */ jsx34(TabsContent, { value: "tree", className: "mt-0", children: /* @__PURE__ */ jsx34(JsonTreeView, { value: detected.value }) }),
9605
+ /* @__PURE__ */ jsx34(TabsContent, { value: "raw", className: "mt-0", children: /* @__PURE__ */ jsx34(RawJsonBlock, { raw: detected.raw }) })
9345
9606
  ] });
9346
9607
  }
9347
9608
  function DefaultToolCallOutput({ data }) {
@@ -9349,15 +9610,15 @@ function DefaultToolCallOutput({ data }) {
9349
9610
  const output = data.output ?? null;
9350
9611
  const error = data.error ?? null;
9351
9612
  if (error) {
9352
- return /* @__PURE__ */ jsxs21("div", { className: "space-y-1", children: [
9353
- /* @__PURE__ */ jsx33("div", { className: "text-[11px] font-medium text-destructive", children: t("message.toolGroup.errorTitle") }),
9354
- /* @__PURE__ */ jsx33(ToolCallValueBlock, { value: error, destructive: true })
9613
+ return /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
9614
+ /* @__PURE__ */ jsx34("div", { className: "text-[11px] font-medium text-destructive", children: t("message.toolGroup.errorTitle") }),
9615
+ /* @__PURE__ */ jsx34(ToolCallValueBlock, { value: error, destructive: true })
9355
9616
  ] });
9356
9617
  }
9357
9618
  if (output === null) return null;
9358
- return /* @__PURE__ */ jsxs21("div", { className: "space-y-1", children: [
9359
- /* @__PURE__ */ jsx33("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.toolGroup.outputTitle") }),
9360
- /* @__PURE__ */ jsx33(ToolCallValueBlock, { value: output })
9619
+ return /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
9620
+ /* @__PURE__ */ jsx34("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.toolGroup.outputTitle") }),
9621
+ /* @__PURE__ */ jsx34(ToolCallValueBlock, { value: output })
9361
9622
  ] });
9362
9623
  }
9363
9624
  function ToolCallDetails({ content }) {
@@ -9367,19 +9628,19 @@ function ToolCallDetails({ content }) {
9367
9628
  const hasCustomDetails = data.error === void 0 && hasComponentMessageRendererDetails(renderer, content, data);
9368
9629
  const CustomDetailsRenderer = hasCustomDetails ? renderer?.renderDetails : void 0;
9369
9630
  if (CustomDetailsRenderer) {
9370
- return /* @__PURE__ */ jsx33("div", { className: "ml-6 mt-1 max-h-60 overflow-auto rounded-md bg-muted/30 text-xs text-muted-foreground", children: /* @__PURE__ */ jsx33(CustomDetailsRenderer, { content, data }) });
9631
+ return /* @__PURE__ */ jsx34("div", { className: "ml-6 mt-1 max-h-60 overflow-auto rounded-md bg-muted/30 text-xs text-muted-foreground", children: /* @__PURE__ */ jsx34(CustomDetailsRenderer, { content, data }) });
9371
9632
  }
9372
9633
  const OutputRenderer = getToolCallOutputRenderer(data);
9373
9634
  const hasInput = data.input !== void 0 && data.input !== null;
9374
9635
  const hasOutput = data.error !== void 0 || data.output !== void 0;
9375
9636
  if (!hasInput && !hasOutput) return null;
9376
- return /* @__PURE__ */ jsxs21("div", { className: "ml-6 mt-1 max-h-60 overflow-auto rounded-md bg-muted/30 px-3 py-2 text-xs text-muted-foreground", children: [
9377
- hasInput && /* @__PURE__ */ jsxs21("div", { className: "space-y-1", children: [
9378
- /* @__PURE__ */ jsx33("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.toolGroup.inputTitle") }),
9379
- /* @__PURE__ */ jsx33(ToolCallValueBlock, { value: data.input })
9637
+ return /* @__PURE__ */ jsxs22("div", { className: "ml-6 mt-1 max-h-60 overflow-auto rounded-md bg-muted/30 px-3 py-2 text-xs text-muted-foreground", children: [
9638
+ hasInput && /* @__PURE__ */ jsxs22("div", { className: "space-y-1", children: [
9639
+ /* @__PURE__ */ jsx34("div", { className: "text-[11px] font-medium text-muted-foreground", children: t("message.toolGroup.inputTitle") }),
9640
+ /* @__PURE__ */ jsx34(ToolCallValueBlock, { value: data.input })
9380
9641
  ] }),
9381
- hasInput && hasOutput ? /* @__PURE__ */ jsx33("div", { className: "h-2" }) : null,
9382
- hasOutput ? /* @__PURE__ */ jsx33(OutputRenderer, { content, data }) : null
9642
+ hasInput && hasOutput ? /* @__PURE__ */ jsx34("div", { className: "h-2" }) : null,
9643
+ hasOutput ? /* @__PURE__ */ jsx34(OutputRenderer, { content, data }) : null
9383
9644
  ] });
9384
9645
  }
9385
9646
  function areToolCallRowPropsEqual(previous, next) {
@@ -9395,9 +9656,9 @@ function ToolCallRowContent({
9395
9656
  const data = getToolStepData(content);
9396
9657
  const status = getEffectiveToolStepStatus(data, isThreadRunning);
9397
9658
  const hasError = status === "fail" || Boolean(data.error);
9398
- const label = getToolActivityLabel(content, i18n2.language, status);
9399
9659
  const detailsId = React29.useId();
9400
9660
  const renderer = getComponentMessageRenderer(content, data);
9661
+ const label = renderer?.getTitle?.(content, data, i18n2.language) ?? getToolActivityLabel(content, i18n2.language, status);
9401
9662
  const hasCustomDetails = data.error === void 0 && hasComponentMessageRendererDetails(renderer, content, data);
9402
9663
  const hasDetails = data.input !== void 0 || data.error !== void 0 || data.output !== void 0 || hasCustomDetails;
9403
9664
  const fallbackEndedAt = useFrozenTimestamp(
@@ -9413,8 +9674,8 @@ function ToolCallRowContent({
9413
9674
  setIsExpanded(true);
9414
9675
  }
9415
9676
  }, [data.output, status]);
9416
- return /* @__PURE__ */ jsxs21("li", { className: "min-w-0", children: [
9417
- /* @__PURE__ */ jsxs21(
9677
+ return /* @__PURE__ */ jsxs22("li", { className: "ck-tool-call-row-enter min-w-0", children: [
9678
+ /* @__PURE__ */ jsxs22(
9418
9679
  "button",
9419
9680
  {
9420
9681
  type: "button",
@@ -9431,7 +9692,7 @@ function ToolCallRowContent({
9431
9692
  if (hasDetails) setIsExpanded((prev) => !prev);
9432
9693
  },
9433
9694
  children: [
9434
- status ? /* @__PURE__ */ jsx33(
9695
+ status ? /* @__PURE__ */ jsx34(
9435
9696
  ToolStepIcon,
9436
9697
  {
9437
9698
  data,
@@ -9442,8 +9703,8 @@ function ToolCallRowContent({
9442
9703
  hasError ? "text-destructive" : "text-muted-foreground"
9443
9704
  )
9444
9705
  }
9445
- ) : /* @__PURE__ */ jsx33("span", { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": "true" }),
9446
- /* @__PURE__ */ jsx33(
9706
+ ) : /* @__PURE__ */ jsx34("span", { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": "true" }),
9707
+ /* @__PURE__ */ jsx34(
9447
9708
  "span",
9448
9709
  {
9449
9710
  className: cn(
@@ -9454,8 +9715,8 @@ function ToolCallRowContent({
9454
9715
  children: label
9455
9716
  }
9456
9717
  ),
9457
- durationLabel ? /* @__PURE__ */ jsx33("span", { className: "shrink-0 text-[11px] tabular-nums text-muted-foreground/80", children: durationLabel }) : null,
9458
- hasDetails ? /* @__PURE__ */ jsx33(
9718
+ durationLabel ? /* @__PURE__ */ jsx34("span", { className: "shrink-0 text-[11px] tabular-nums text-muted-foreground/80", children: durationLabel }) : null,
9719
+ hasDetails ? /* @__PURE__ */ jsx34(
9459
9720
  ChevronRight7,
9460
9721
  {
9461
9722
  "aria-hidden": "true",
@@ -9468,7 +9729,7 @@ function ToolCallRowContent({
9468
9729
  ]
9469
9730
  }
9470
9731
  ),
9471
- hasDetails && isExpanded ? /* @__PURE__ */ jsx33("div", { id: detailsId, children: /* @__PURE__ */ jsx33(ToolCallDetails, { content }) }) : null
9732
+ hasDetails && isExpanded ? /* @__PURE__ */ jsx34("div", { id: detailsId, children: /* @__PURE__ */ jsx34(ToolCallDetails, { content }) }) : null
9472
9733
  ] });
9473
9734
  }
9474
9735
  var ToolCallRow = React29.memo(ToolCallRowContent, areToolCallRowPropsEqual);
@@ -9499,9 +9760,9 @@ function ToolComponentGroup({
9499
9760
  const StatusIcon = config.icon;
9500
9761
  React29.useEffect(() => {
9501
9762
  setIsExpanded(!hasFollowingItem);
9502
- }, [hasFollowingItem, items.length]);
9503
- return /* @__PURE__ */ jsxs21("div", { className: "px-1 py-1", children: [
9504
- /* @__PURE__ */ jsxs21(
9763
+ }, [hasFollowingItem]);
9764
+ return /* @__PURE__ */ jsxs22("div", { className: "px-1 py-1", children: [
9765
+ /* @__PURE__ */ jsxs22(
9505
9766
  "button",
9506
9767
  {
9507
9768
  type: "button",
@@ -9510,8 +9771,8 @@ function ToolComponentGroup({
9510
9771
  "aria-controls": contentId,
9511
9772
  onClick: () => setIsExpanded((prev) => !prev),
9512
9773
  children: [
9513
- /* @__PURE__ */ jsxs21("div", { className: "flex min-w-0 items-center gap-2 text-sm font-medium text-muted-foreground", children: [
9514
- /* @__PURE__ */ jsx33(
9774
+ /* @__PURE__ */ jsxs22("div", { className: "flex min-w-0 items-center gap-2 text-sm font-medium text-muted-foreground", children: [
9775
+ /* @__PURE__ */ jsx34(
9515
9776
  StatusIcon,
9516
9777
  {
9517
9778
  className: cn(
@@ -9520,9 +9781,9 @@ function ToolComponentGroup({
9520
9781
  )
9521
9782
  }
9522
9783
  ),
9523
- /* @__PURE__ */ jsx33("span", { className: "truncate", children: summary })
9784
+ /* @__PURE__ */ jsx34("span", { className: "truncate", children: summary })
9524
9785
  ] }),
9525
- /* @__PURE__ */ jsx33(
9786
+ /* @__PURE__ */ jsx34(
9526
9787
  ChevronRight7,
9527
9788
  {
9528
9789
  "aria-hidden": "true",
@@ -9535,7 +9796,7 @@ function ToolComponentGroup({
9535
9796
  ]
9536
9797
  }
9537
9798
  ),
9538
- isExpanded && /* @__PURE__ */ jsx33("ul", { id: contentId, className: "mt-2 space-y-1.5 overflow-y-auto pr-1", children: items.map((item, index) => /* @__PURE__ */ jsx33(
9799
+ isExpanded && /* @__PURE__ */ jsx34("ul", { id: contentId, className: "mt-2 space-y-1.5 overflow-y-auto pr-1", children: items.map((item, index) => /* @__PURE__ */ jsx34(
9539
9800
  ToolCallRow,
9540
9801
  {
9541
9802
  content: item,
@@ -9555,11 +9816,11 @@ import {
9555
9816
  REQUEST_USER_INPUT_TOOL_NAME as REQUEST_USER_INPUT_TOOL_NAME2
9556
9817
  } from "@xpert-ai/chatkit-types";
9557
9818
  import { CheckCircle2 as CheckCircle24 } from "lucide-react";
9558
- import { jsx as jsx34, jsxs as jsxs22 } from "react/jsx-runtime";
9559
- function isRecord2(value) {
9819
+ import { jsx as jsx35, jsxs as jsxs23 } from "react/jsx-runtime";
9820
+ function isRecord3(value) {
9560
9821
  return !!value && typeof value === "object" && !Array.isArray(value);
9561
9822
  }
9562
- function readString(record, keys) {
9823
+ function readString2(record, keys) {
9563
9824
  for (const key of keys) {
9564
9825
  const value = record[key];
9565
9826
  if (typeof value === "string" && value.trim()) {
@@ -9569,12 +9830,12 @@ function readString(record, keys) {
9569
9830
  return null;
9570
9831
  }
9571
9832
  function getToolCallId(value) {
9572
- if (!isRecord2(value)) return null;
9573
- return readString(value, ["id"]);
9833
+ if (!isRecord3(value)) return null;
9834
+ return readString2(value, ["id"]);
9574
9835
  }
9575
9836
  function getToolCallName(value) {
9576
- if (!isRecord2(value)) return null;
9577
- return readString(value, ["name"]);
9837
+ if (!isRecord3(value)) return null;
9838
+ return readString2(value, ["name"]);
9578
9839
  }
9579
9840
  function pushClientToolCallsFromRecord(record, calls) {
9580
9841
  const clientToolCalls = record.clientToolCalls;
@@ -9598,16 +9859,16 @@ function findRequestUserInputClientToolCallById(messages, id) {
9598
9859
  ) ?? null;
9599
9860
  }
9600
9861
  function normalizeAnswer(value) {
9601
- if (!isRecord2(value)) return null;
9602
- const id = readString(value, ["id"]);
9603
- const question = readString(value, ["question"]);
9604
- const answerValue = readString(value, ["value"]);
9605
- const type = readString(value, ["type"]);
9862
+ if (!isRecord3(value)) return null;
9863
+ const id = readString2(value, ["id"]);
9864
+ const question = readString2(value, ["question"]);
9865
+ const answerValue = readString2(value, ["value"]);
9866
+ const type = readString2(value, ["type"]);
9606
9867
  if (!id || !question || !answerValue || type !== "option" && type !== "other") {
9607
9868
  return null;
9608
9869
  }
9609
- const label = readString(value, ["label"]);
9610
- const description = readString(value, ["description"]);
9870
+ const label = readString2(value, ["label"]);
9871
+ const description = readString2(value, ["description"]);
9611
9872
  return {
9612
9873
  id,
9613
9874
  question,
@@ -9626,7 +9887,7 @@ function parseResultOutput(output) {
9626
9887
  return null;
9627
9888
  }
9628
9889
  }
9629
- if (!isRecord2(result) || !Array.isArray(result.answers)) {
9890
+ if (!isRecord3(result) || !Array.isArray(result.answers)) {
9630
9891
  return null;
9631
9892
  }
9632
9893
  const hasExplicitType = result.type === REQUEST_USER_INPUT_RESULT_TYPE2;
@@ -9640,7 +9901,7 @@ function parseResultOutput(output) {
9640
9901
  };
9641
9902
  }
9642
9903
  function getRequestUserInputResultCardData(content, messages) {
9643
- const data = isRecord2(content.data) ? content.data : null;
9904
+ const data = isRecord3(content.data) ? content.data : null;
9644
9905
  if (data?.status !== "success") {
9645
9906
  return null;
9646
9907
  }
@@ -9667,7 +9928,7 @@ function RequestUserInputResultCard({
9667
9928
  className
9668
9929
  }) {
9669
9930
  const { t } = useChatkitTranslation();
9670
- return /* @__PURE__ */ jsxs22(
9931
+ return /* @__PURE__ */ jsxs23(
9671
9932
  "section",
9672
9933
  {
9673
9934
  "aria-label": t("message.requestUserInputResult.title"),
@@ -9676,23 +9937,23 @@ function RequestUserInputResultCard({
9676
9937
  className
9677
9938
  ),
9678
9939
  children: [
9679
- /* @__PURE__ */ jsxs22("div", { className: "mb-2 flex items-center gap-2 text-sm font-semibold text-foreground", children: [
9680
- /* @__PURE__ */ jsx34(CheckCircle24, { className: "h-4 w-4 text-primary" }),
9681
- /* @__PURE__ */ jsx34("span", { children: t("message.requestUserInputResult.title") })
9940
+ /* @__PURE__ */ jsxs23("div", { className: "mb-2 flex items-center gap-2 text-sm font-semibold text-foreground", children: [
9941
+ /* @__PURE__ */ jsx35(CheckCircle24, { className: "h-4 w-4 text-primary" }),
9942
+ /* @__PURE__ */ jsx35("span", { children: t("message.requestUserInputResult.title") })
9682
9943
  ] }),
9683
- /* @__PURE__ */ jsx34("div", { className: "space-y-2", children: result.answers.map((answer, index) => /* @__PURE__ */ jsxs22(
9944
+ /* @__PURE__ */ jsx35("div", { className: "space-y-2", children: result.answers.map((answer, index) => /* @__PURE__ */ jsxs23(
9684
9945
  "div",
9685
9946
  {
9686
9947
  className: "rounded-md bg-background/70 px-2.5 py-2",
9687
9948
  children: [
9688
- /* @__PURE__ */ jsx34("div", { className: "text-xs font-medium leading-5 text-muted-foreground", children: answer.question }),
9689
- /* @__PURE__ */ jsxs22("div", { className: "mt-0.5 flex min-w-0 flex-wrap items-center gap-1.5", children: [
9690
- /* @__PURE__ */ jsx34("span", { className: "min-w-0 wrap-break-word text-sm font-semibold text-foreground", children: answer.label ?? answer.value }),
9691
- /* @__PURE__ */ jsx34("span", { className: "rounded-full bg-muted px-1.5 py-0.5 text-[11px] font-medium text-muted-foreground", children: t(
9949
+ /* @__PURE__ */ jsx35("div", { className: "text-xs font-medium leading-5 text-muted-foreground", children: answer.question }),
9950
+ /* @__PURE__ */ jsxs23("div", { className: "mt-0.5 flex min-w-0 flex-wrap items-center gap-1.5", children: [
9951
+ /* @__PURE__ */ jsx35("span", { className: "min-w-0 wrap-break-word text-sm font-semibold text-foreground", children: answer.label ?? answer.value }),
9952
+ /* @__PURE__ */ jsx35("span", { className: "rounded-full bg-muted px-1.5 py-0.5 text-[11px] font-medium text-muted-foreground", children: t(
9692
9953
  answer.type === "other" ? "message.requestUserInputResult.other" : "message.requestUserInputResult.option"
9693
9954
  ) })
9694
9955
  ] }),
9695
- answer.description ? /* @__PURE__ */ jsx34("div", { className: "mt-1 text-xs leading-5 text-muted-foreground", children: answer.description }) : null
9956
+ answer.description ? /* @__PURE__ */ jsx35("div", { className: "mt-1 text-xs leading-5 text-muted-foreground", children: answer.description }) : null
9696
9957
  ]
9697
9958
  },
9698
9959
  `${answer.id}-${index}`
@@ -9704,18 +9965,18 @@ function RequestUserInputResultCard({
9704
9965
 
9705
9966
  // src/components/thread/messages/widget.tsx
9706
9967
  import { SurfaceRenderer } from "@xpert-ai/a2ui-react";
9707
- import { jsx as jsx35 } from "react/jsx-runtime";
9968
+ import { jsx as jsx36 } from "react/jsx-runtime";
9708
9969
  function WidgetMessage({ messageId, data }) {
9709
9970
  const widgets = Array.isArray(data.widgets) ? data.widgets : [];
9710
9971
  if (widgets.length === 0) return null;
9711
9972
  const baseSurfaceId = `widget-${messageId}`;
9712
- return /* @__PURE__ */ jsx35("div", { className: "space-y-3", children: widgets.map((widget, index) => {
9973
+ return /* @__PURE__ */ jsx36("div", { className: "space-y-3", children: widgets.map((widget, index) => {
9713
9974
  const config = widget?.config;
9714
9975
  if (!config || typeof config !== "object") {
9715
9976
  return null;
9716
9977
  }
9717
9978
  const surfaceId = widgets.length > 1 ? `${baseSurfaceId}-${index}` : baseSurfaceId;
9718
- return /* @__PURE__ */ jsx35(
9979
+ return /* @__PURE__ */ jsx36(
9719
9980
  SurfaceRenderer,
9720
9981
  {
9721
9982
  surfaceId,
@@ -9727,7 +9988,7 @@ function WidgetMessage({ messageId, data }) {
9727
9988
  }
9728
9989
 
9729
9990
  // src/components/thread/messages/ai.tsx
9730
- import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
9991
+ import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
9731
9992
  var assistantMessageStackClassName = "space-y-3 in-data-[density=compact]:space-y-2 in-data-[density=spacious]:space-y-4";
9732
9993
  function isTextContent3(content) {
9733
9994
  return content.type === "text";
@@ -9761,11 +10022,11 @@ function formatDisplayValue3(value) {
9761
10022
  function ReasoningBlock({ reasoning }) {
9762
10023
  const blocks = reasoning.filter((item) => item.text?.trim());
9763
10024
  if (blocks.length === 0) return null;
9764
- return /* @__PURE__ */ jsx36("div", { className: "space-y-2", children: blocks.map((item, index) => /* @__PURE__ */ jsx36(
10025
+ return /* @__PURE__ */ jsx37("div", { className: "space-y-2", children: blocks.map((item, index) => /* @__PURE__ */ jsx37(
9765
10026
  "div",
9766
10027
  {
9767
10028
  className: "rounded-lg border bg-muted/40 p-3 text-xs text-muted-foreground",
9768
- children: /* @__PURE__ */ jsx36("p", { className: "whitespace-pre-wrap wrap-break-word leading-relaxed", children: item.text })
10029
+ children: /* @__PURE__ */ jsx37("p", { className: "whitespace-pre-wrap wrap-break-word leading-relaxed", children: item.text })
9769
10030
  },
9770
10031
  item.id ?? `reasoning-${index}`
9771
10032
  )) });
@@ -9773,20 +10034,20 @@ function ReasoningBlock({ reasoning }) {
9773
10034
  function ImageBlock({ content }) {
9774
10035
  const imageUrl = typeof content.image_url === "string" ? content.image_url : typeof content.image_url?.url === "string" ? content.image_url.url : null;
9775
10036
  if (!imageUrl) {
9776
- return /* @__PURE__ */ jsxs23(Card, { children: [
9777
- /* @__PURE__ */ jsx36(CardHeader, { className: "space-y-1", children: /* @__PURE__ */ jsx36(CardTitle, { className: "text-sm", children: "Image" }) }),
9778
- /* @__PURE__ */ jsx36(CardContent, { className: "text-xs text-muted-foreground", children: safeJson3(content) })
10037
+ return /* @__PURE__ */ jsxs24(Card, { children: [
10038
+ /* @__PURE__ */ jsx37(CardHeader, { className: "space-y-1", children: /* @__PURE__ */ jsx37(CardTitle, { className: "text-sm", children: "Image" }) }),
10039
+ /* @__PURE__ */ jsx37(CardContent, { className: "text-xs text-muted-foreground", children: safeJson3(content) })
9779
10040
  ] });
9780
10041
  }
9781
- return /* @__PURE__ */ jsx36("figure", { className: "overflow-hidden rounded-lg border bg-background", children: /* @__PURE__ */ jsx36("img", { src: imageUrl, alt: "Assistant output", className: "h-auto w-full object-cover" }) });
10042
+ return /* @__PURE__ */ jsx37("figure", { className: "overflow-hidden rounded-lg border bg-background", children: /* @__PURE__ */ jsx37("img", { src: imageUrl, alt: "Assistant output", className: "h-auto w-full object-cover" }) });
9782
10043
  }
9783
10044
  function MemoryBlock({ content }) {
9784
- return /* @__PURE__ */ jsxs23(Card, { children: [
9785
- /* @__PURE__ */ jsxs23(CardHeader, { className: "flex flex-row items-center justify-between gap-2", children: [
9786
- /* @__PURE__ */ jsx36(CardTitle, { className: "text-sm", children: "Memory" }),
9787
- /* @__PURE__ */ jsx36(Badge, { variant: "secondary", children: "Memory" })
10045
+ return /* @__PURE__ */ jsxs24(Card, { children: [
10046
+ /* @__PURE__ */ jsxs24(CardHeader, { className: "flex flex-row items-center justify-between gap-2", children: [
10047
+ /* @__PURE__ */ jsx37(CardTitle, { className: "text-sm", children: "Memory" }),
10048
+ /* @__PURE__ */ jsx37(Badge, { variant: "secondary", children: "Memory" })
9788
10049
  ] }),
9789
- /* @__PURE__ */ jsx36(CardContent, { className: "text-xs text-muted-foreground", children: /* @__PURE__ */ jsx36("pre", { className: "whitespace-pre-wrap wrap-break-word", children: safeJson3(content.data ?? []) }) })
10050
+ /* @__PURE__ */ jsx37(CardContent, { className: "text-xs text-muted-foreground", children: /* @__PURE__ */ jsx37("pre", { className: "whitespace-pre-wrap wrap-break-word", children: safeJson3(content.data ?? []) }) })
9790
10051
  ] });
9791
10052
  }
9792
10053
  function parseStepDate2(value) {
@@ -9886,24 +10147,24 @@ function ComponentBlock({ content }) {
9886
10147
  }, [isExpanded, output, status]);
9887
10148
  const config = status ? toolStatusConfig[status] : null;
9888
10149
  const StatusIcon = config?.icon;
9889
- return /* @__PURE__ */ jsxs23(Card, { children: [
9890
- /* @__PURE__ */ jsxs23(CardHeader, { className: "flex flex-row items-center justify-between gap-2 px-2 py-1 cursor-pointer", onClick: () => setIsExpanded(!isExpanded), children: [
9891
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center space-x-1 flex-1 min-w-0", children: [
9892
- status && StatusIcon && /* @__PURE__ */ jsx36(StatusIcon, { className: cn("h-4 w-4", config?.iconClass, status === "running" && "animate-spin") }),
9893
- /* @__PURE__ */ jsx36(CardTitle, { className: "text-sm truncate", children: title })
10150
+ return /* @__PURE__ */ jsxs24(Card, { children: [
10151
+ /* @__PURE__ */ jsxs24(CardHeader, { className: "flex flex-row items-center justify-between gap-2 px-2 py-1 cursor-pointer", onClick: () => setIsExpanded(!isExpanded), children: [
10152
+ /* @__PURE__ */ jsxs24("div", { className: "flex items-center space-x-1 flex-1 min-w-0", children: [
10153
+ status && StatusIcon && /* @__PURE__ */ jsx37(StatusIcon, { className: cn("h-4 w-4", config?.iconClass, status === "running" && "animate-spin") }),
10154
+ /* @__PURE__ */ jsx37(CardTitle, { className: "text-sm truncate", children: title })
9894
10155
  ] }),
9895
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-wrap items-center gap-2 shrink-0", children: [
9896
- durationLabel && /* @__PURE__ */ jsxs23("div", { className: "inline-flex items-center gap-1 text-[11px] text-muted-foreground tabular-nums", children: [
9897
- /* @__PURE__ */ jsx36(Clock32, { className: "h-3 w-3" }),
9898
- /* @__PURE__ */ jsx36("span", { children: durationLabel })
10156
+ /* @__PURE__ */ jsxs24("div", { className: "flex flex-wrap items-center gap-2 shrink-0", children: [
10157
+ durationLabel && /* @__PURE__ */ jsxs24("div", { className: "inline-flex items-center gap-1 text-[11px] text-muted-foreground tabular-nums", children: [
10158
+ /* @__PURE__ */ jsx37(Clock32, { className: "h-3 w-3" }),
10159
+ /* @__PURE__ */ jsx37("span", { children: durationLabel })
9899
10160
  ] }),
9900
- /* @__PURE__ */ jsx36(Badge, { variant: "secondary", className: "rounded-lg px-1.5", children: category }),
9901
- /* @__PURE__ */ jsx36(
10161
+ /* @__PURE__ */ jsx37(Badge, { variant: "secondary", className: "rounded-lg px-1.5", children: category }),
10162
+ /* @__PURE__ */ jsx37(
9902
10163
  "button",
9903
10164
  {
9904
10165
  className: "text-muted-foreground hover:text-foreground transition-colors",
9905
10166
  "aria-label": isExpanded ? "Collapse" : "Expand",
9906
- children: /* @__PURE__ */ jsx36(
10167
+ children: /* @__PURE__ */ jsx37(
9907
10168
  ChevronDown4,
9908
10169
  {
9909
10170
  className: cn("h-4 w-4 transition-transform", isExpanded && "rotate-180")
@@ -9913,35 +10174,35 @@ function ComponentBlock({ content }) {
9913
10174
  )
9914
10175
  ] })
9915
10176
  ] }),
9916
- isExpanded && /* @__PURE__ */ jsxs23(CardContent, { ref: contentRef, className: "text-xs text-muted-foreground max-h-60 overflow-auto", children: [
9917
- data.input && /* @__PURE__ */ jsx36("pre", { className: "whitespace-pre-wrap wrap-break-word", children: formatDisplayValue3(data.input) }),
9918
- error ? /* @__PURE__ */ jsx36("pre", { className: "whitespace-pre-wrap wrap-break-word text-destructive", children: formatDisplayValue3(error) }) : hasOutput && /* @__PURE__ */ jsx36("pre", { className: "whitespace-pre-wrap wrap-break-word", children: formatDisplayValue3(fallback) })
10177
+ isExpanded && /* @__PURE__ */ jsxs24(CardContent, { ref: contentRef, className: "text-xs text-muted-foreground max-h-60 overflow-auto", children: [
10178
+ data.input && /* @__PURE__ */ jsx37("pre", { className: "whitespace-pre-wrap wrap-break-word", children: formatDisplayValue3(data.input) }),
10179
+ error ? /* @__PURE__ */ jsx37("pre", { className: "whitespace-pre-wrap wrap-break-word text-destructive", children: formatDisplayValue3(error) }) : hasOutput && /* @__PURE__ */ jsx37("pre", { className: "whitespace-pre-wrap wrap-break-word", children: formatDisplayValue3(fallback) })
9919
10180
  ] })
9920
10181
  ] });
9921
10182
  }
9922
10183
  function UnknownBlock({ content }) {
9923
- return /* @__PURE__ */ jsxs23(Card, { children: [
9924
- /* @__PURE__ */ jsxs23(CardHeader, { className: "flex flex-row items-center justify-between gap-2", children: [
9925
- /* @__PURE__ */ jsx36(CardTitle, { className: "text-sm", children: "Assistant Content" }),
9926
- /* @__PURE__ */ jsx36(Badge, { variant: "outline", children: content.type ?? "unknown" })
10184
+ return /* @__PURE__ */ jsxs24(Card, { children: [
10185
+ /* @__PURE__ */ jsxs24(CardHeader, { className: "flex flex-row items-center justify-between gap-2", children: [
10186
+ /* @__PURE__ */ jsx37(CardTitle, { className: "text-sm", children: "Assistant Content" }),
10187
+ /* @__PURE__ */ jsx37(Badge, { variant: "outline", children: content.type ?? "unknown" })
9927
10188
  ] }),
9928
- /* @__PURE__ */ jsx36(CardContent, { className: "text-xs text-muted-foreground", children: /* @__PURE__ */ jsx36("pre", { className: "whitespace-pre-wrap break-words", children: safeJson3(content) }) })
10189
+ /* @__PURE__ */ jsx37(CardContent, { className: "text-xs text-muted-foreground", children: /* @__PURE__ */ jsx37("pre", { className: "whitespace-pre-wrap break-words", children: safeJson3(content) }) })
9929
10190
  ] });
9930
10191
  }
9931
10192
  function renderContentItem(content, index, message, lookupMessages, options) {
9932
10193
  const messageId = message.id;
9933
10194
  const textClassName = options?.isAgentOutput ? "text-sm [&_.markdown-content_p]:!leading-6" : void 0;
9934
10195
  if (typeof content === "string") {
9935
- return /* @__PURE__ */ jsx36("div", { className: textClassName, children: /* @__PURE__ */ jsx36(MarkdownText, { children: content }) }, `text-${index}`);
10196
+ return /* @__PURE__ */ jsx37("div", { className: textClassName, children: /* @__PURE__ */ jsx37(MarkdownText, { children: content }) }, `text-${index}`);
9936
10197
  }
9937
10198
  if (isTextContent3(content)) {
9938
- return /* @__PURE__ */ jsx36("div", { className: textClassName, children: /* @__PURE__ */ jsx36(MarkdownText, { children: content.text }) }, content.id ?? `text-${index}`);
10199
+ return /* @__PURE__ */ jsx37("div", { className: textClassName, children: /* @__PURE__ */ jsx37(MarkdownText, { children: content.text }) }, content.id ?? `text-${index}`);
9939
10200
  }
9940
10201
  if (isReasoningContent3(content)) {
9941
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(ReasoningBlock, { reasoning: [content] }) }, content.id ?? `reasoning-${index}`);
10202
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(ReasoningBlock, { reasoning: [content] }) }, content.id ?? `reasoning-${index}`);
9942
10203
  }
9943
10204
  if (isImageContent(content)) {
9944
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(ImageBlock, { content }) }, content.id ?? `image-${index}`);
10205
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(ImageBlock, { content }) }, content.id ?? `image-${index}`);
9945
10206
  }
9946
10207
  if (isComponentContent3(content)) {
9947
10208
  const requestUserInputResult = getRequestUserInputResultCardData(
@@ -9949,13 +10210,13 @@ function renderContentItem(content, index, message, lookupMessages, options) {
9949
10210
  lookupMessages
9950
10211
  );
9951
10212
  if (requestUserInputResult) {
9952
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(RequestUserInputResultCard, { result: requestUserInputResult }) }, content.id ?? `request-user-input-result-${index}`);
10213
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(RequestUserInputResultCard, { result: requestUserInputResult }) }, content.id ?? `request-user-input-result-${index}`);
9953
10214
  }
9954
10215
  if (isWidgetComponent2(content)) {
9955
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(WidgetMessage, { messageId, data: content.data }) }, content.id ?? `widget-${index}`);
10216
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(WidgetMessage, { messageId, data: content.data }) }, content.id ?? `widget-${index}`);
9956
10217
  }
9957
10218
  if (getComponentMessagePresentation(content, getToolStepData(content)) === "grouped-step") {
9958
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(
10219
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(
9959
10220
  ToolComponentGroup,
9960
10221
  {
9961
10222
  items: [content],
@@ -9966,15 +10227,15 @@ function renderContentItem(content, index, message, lookupMessages, options) {
9966
10227
  }
9967
10228
  ) }, content.id ?? `component-group-${index}`);
9968
10229
  }
9969
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(ComponentBlock, { content }) }, content.id ?? `component-${index}`);
10230
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(ComponentBlock, { content }) }, content.id ?? `component-${index}`);
9970
10231
  }
9971
10232
  if (isMemoryContent(content)) {
9972
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(MemoryBlock, { content }) }, content.id ?? `memory-${index}`);
10233
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(MemoryBlock, { content }) }, content.id ?? `memory-${index}`);
9973
10234
  }
9974
10235
  if (isAgentEventContent(content)) {
9975
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(AgentEventRow, { content }) }, content.id ?? `agent-event-${index}`);
10236
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(AgentEventRow, { content }) }, content.id ?? `agent-event-${index}`);
9976
10237
  }
9977
- return /* @__PURE__ */ jsx36("div", { children: /* @__PURE__ */ jsx36(UnknownBlock, { content }) }, content.id ?? `unknown-${index}`);
10238
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(UnknownBlock, { content }) }, content.id ?? `unknown-${index}`);
9978
10239
  }
9979
10240
  function renderContentUnit(unit, message, lookupMessages, hasFollowingItem, options) {
9980
10241
  if (unit.type === "item") {
@@ -9985,22 +10246,16 @@ function renderContentUnit(unit, message, lookupMessages, hasFollowingItem, opti
9985
10246
  isAgentOutput: options?.isAgentOutput
9986
10247
  });
9987
10248
  }
9988
- return /* @__PURE__ */ jsx36(
9989
- "div",
10249
+ return /* @__PURE__ */ jsx37("div", { children: /* @__PURE__ */ jsx37(
10250
+ ToolComponentGroup,
9990
10251
  {
9991
- children: /* @__PURE__ */ jsx36(
9992
- ToolComponentGroup,
9993
- {
9994
- items: unit.items,
9995
- hasFollowingItem,
9996
- isThreadRunning: options?.isThreadRunning,
9997
- organizationId: options?.organizationId,
9998
- apiUrl: options?.apiUrl
9999
- }
10000
- )
10001
- },
10002
- `tool-group-${unit.startIndex}-${unit.items[0]?.id ?? "tool"}-${unit.items.length}`
10003
- );
10252
+ items: unit.items,
10253
+ hasFollowingItem,
10254
+ isThreadRunning: options?.isThreadRunning,
10255
+ organizationId: options?.organizationId,
10256
+ apiUrl: options?.apiUrl
10257
+ }
10258
+ ) }, `tool-group-${unit.startIndex}-${unit.items[0]?.id ?? "tool"}`);
10004
10259
  }
10005
10260
  function renderEntryBatch(entries, message, lookupMessages, hasFollowingItem, options) {
10006
10261
  if (entries.length === 0) return null;
@@ -10028,7 +10283,7 @@ function renderAssistantRenderUnits(units, message, lookupMessages, options, dep
10028
10283
  const batch = entryBatch;
10029
10284
  entryBatch = [];
10030
10285
  rendered.push(
10031
- /* @__PURE__ */ jsx36(React31.Fragment, { children: renderEntryBatch(batch, message, lookupMessages, hasFollowingItem, {
10286
+ /* @__PURE__ */ jsx37(React31.Fragment, { children: renderEntryBatch(batch, message, lookupMessages, hasFollowingItem, {
10032
10287
  ...options,
10033
10288
  isAgentOutput: depth > 0
10034
10289
  }) }, `entries-${batch[0]?.order ?? rendered.length}`)
@@ -10045,7 +10300,7 @@ function renderAssistantRenderUnits(units, message, lookupMessages, options, dep
10045
10300
  }
10046
10301
  flushEntries(true);
10047
10302
  rendered.push(
10048
- /* @__PURE__ */ jsx36(
10303
+ /* @__PURE__ */ jsx37(
10049
10304
  AgentRunGroup,
10050
10305
  {
10051
10306
  node: unit.node,
@@ -10070,7 +10325,7 @@ function renderContent(message, lookupMessages, options) {
10070
10325
  message
10071
10326
  );
10072
10327
  if (renderTree.hasAgentRuns) {
10073
- return /* @__PURE__ */ jsx36("div", { className: assistantMessageStackClassName, children: renderAssistantRenderUnits(
10328
+ return /* @__PURE__ */ jsx37("div", { className: assistantMessageStackClassName, children: renderAssistantRenderUnits(
10074
10329
  renderTree.units,
10075
10330
  message,
10076
10331
  lookupMessages,
@@ -10080,13 +10335,13 @@ function renderContent(message, lookupMessages, options) {
10080
10335
  const content = message.content;
10081
10336
  if (typeof content === "string") {
10082
10337
  if (!content.trim()) return null;
10083
- return /* @__PURE__ */ jsx36(MarkdownText, { children: content });
10338
+ return /* @__PURE__ */ jsx37(MarkdownText, { children: content });
10084
10339
  }
10085
10340
  if (!Array.isArray(content) || content.length === 0) return null;
10086
10341
  const renderUnits = buildToolComponentRenderUnits(content, {
10087
10342
  shouldGroupComponent: (item) => getRequestUserInputResultCardData(item, lookupMessages) === null
10088
10343
  });
10089
- return /* @__PURE__ */ jsx36("div", { className: "space-y-3", children: renderUnits.map(
10344
+ return /* @__PURE__ */ jsx37("div", { className: "space-y-3", children: renderUnits.map(
10090
10345
  (unit, index) => renderContentUnit(
10091
10346
  unit,
10092
10347
  message,
@@ -10106,7 +10361,7 @@ function AssistantStreamingIndicator({
10106
10361
  thinking: t("message.thinking"),
10107
10362
  answering: t("message.answering")
10108
10363
  };
10109
- return /* @__PURE__ */ jsxs23(
10364
+ return /* @__PURE__ */ jsxs24(
10110
10365
  "div",
10111
10366
  {
10112
10367
  className: cn(
@@ -10114,18 +10369,18 @@ function AssistantStreamingIndicator({
10114
10369
  className
10115
10370
  ),
10116
10371
  children: [
10117
- status === "loading" && /* @__PURE__ */ jsx36(Loader25, { className: "h-3.5 w-3.5 animate-spin" }),
10118
- status === "thinking" && /* @__PURE__ */ jsxs23("div", { className: "flex items-end gap-1", "aria-hidden": "true", children: [
10119
- /* @__PURE__ */ jsx36("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:-0.3s]" }),
10120
- /* @__PURE__ */ jsx36("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:-0.15s]" }),
10121
- /* @__PURE__ */ jsx36("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce" })
10372
+ status === "loading" && /* @__PURE__ */ jsx37(Loader25, { className: "h-3.5 w-3.5 animate-spin" }),
10373
+ status === "thinking" && /* @__PURE__ */ jsxs24("div", { className: "flex items-end gap-1", "aria-hidden": "true", children: [
10374
+ /* @__PURE__ */ jsx37("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:-0.3s]" }),
10375
+ /* @__PURE__ */ jsx37("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce [animation-delay:-0.15s]" }),
10376
+ /* @__PURE__ */ jsx37("span", { className: "h-1.5 w-1.5 rounded-full bg-current animate-bounce" })
10122
10377
  ] }),
10123
- status === "answering" && /* @__PURE__ */ jsxs23("div", { className: "flex items-end gap-1", "aria-hidden": "true", children: [
10124
- /* @__PURE__ */ jsx36("span", { className: "h-2 w-0.5 rounded-full bg-current animate-pulse [animation-delay:-0.25s]" }),
10125
- /* @__PURE__ */ jsx36("span", { className: "h-3 w-0.5 rounded-full bg-current animate-pulse [animation-delay:-0.1s]" }),
10126
- /* @__PURE__ */ jsx36("span", { className: "h-2.5 w-0.5 rounded-full bg-current animate-pulse" })
10378
+ status === "answering" && /* @__PURE__ */ jsxs24("div", { className: "flex items-end gap-1", "aria-hidden": "true", children: [
10379
+ /* @__PURE__ */ jsx37("span", { className: "h-2 w-0.5 rounded-full bg-current animate-pulse [animation-delay:-0.25s]" }),
10380
+ /* @__PURE__ */ jsx37("span", { className: "h-3 w-0.5 rounded-full bg-current animate-pulse [animation-delay:-0.1s]" }),
10381
+ /* @__PURE__ */ jsx37("span", { className: "h-2.5 w-0.5 rounded-full bg-current animate-pulse" })
10127
10382
  ] }),
10128
- /* @__PURE__ */ jsx36("span", { children: labelMap[status] })
10383
+ /* @__PURE__ */ jsx37("span", { children: labelMap[status] })
10129
10384
  ]
10130
10385
  }
10131
10386
  );
@@ -10154,42 +10409,42 @@ function AssistantMessage({
10154
10409
  organizationId,
10155
10410
  apiUrl
10156
10411
  });
10157
- const reasoningNode = hasReasoning ? /* @__PURE__ */ jsx36(ReasoningBlock, { reasoning: rootReasoning ?? [] }) : null;
10412
+ const reasoningNode = hasReasoning ? /* @__PURE__ */ jsx37(ReasoningBlock, { reasoning: rootReasoning ?? [] }) : null;
10158
10413
  if (!hasContent && !hasReasoning && !resolvedStreamingStatus) return null;
10159
10414
  const streamingClass = isStreaming ? "streaming-active" : "";
10160
10415
  if (!hasContent && !hasReasoning && resolvedStreamingStatus) {
10161
- return /* @__PURE__ */ jsx36("div", { className: cn("space-y-3", streamingClass, className), children: /* @__PURE__ */ jsx36(AssistantStreamingIndicator, { status: resolvedStreamingStatus }) });
10416
+ return /* @__PURE__ */ jsx37("div", { className: cn("space-y-3", streamingClass, className), children: /* @__PURE__ */ jsx37(AssistantStreamingIndicator, { status: resolvedStreamingStatus }) });
10162
10417
  }
10163
10418
  if (hasContent && hasReasoning) {
10164
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-3", streamingClass, className), children: [
10165
- /* @__PURE__ */ jsxs23(
10419
+ return /* @__PURE__ */ jsxs24("div", { className: cn("space-y-3", streamingClass, className), children: [
10420
+ /* @__PURE__ */ jsxs24(
10166
10421
  Tabs,
10167
10422
  {
10168
10423
  defaultValue: message.status === "reasoning" ? "reasoning" : "answer",
10169
10424
  className: "w-full",
10170
10425
  children: [
10171
- /* @__PURE__ */ jsxs23(TabsList, { className: "", children: [
10172
- /* @__PURE__ */ jsx36(TabsTrigger, { value: "answer", children: t("message.answer") }),
10173
- /* @__PURE__ */ jsx36(TabsTrigger, { value: "reasoning", children: t("message.reasoning") })
10426
+ /* @__PURE__ */ jsxs24(TabsList, { className: "", children: [
10427
+ /* @__PURE__ */ jsx37(TabsTrigger, { value: "answer", children: t("message.answer") }),
10428
+ /* @__PURE__ */ jsx37(TabsTrigger, { value: "reasoning", children: t("message.reasoning") })
10174
10429
  ] }),
10175
- /* @__PURE__ */ jsx36(TabsContent, { value: "answer", className: "space-y-3", children: answerNode }),
10176
- /* @__PURE__ */ jsx36(TabsContent, { value: "reasoning", className: "space-y-3", children: reasoningNode })
10430
+ /* @__PURE__ */ jsx37(TabsContent, { value: "answer", className: "space-y-3", children: answerNode }),
10431
+ /* @__PURE__ */ jsx37(TabsContent, { value: "reasoning", className: "space-y-3", children: reasoningNode })
10177
10432
  ]
10178
10433
  }
10179
10434
  ),
10180
- resolvedStreamingStatus ? /* @__PURE__ */ jsx36(AssistantStreamingIndicator, { status: resolvedStreamingStatus }) : null
10435
+ resolvedStreamingStatus ? /* @__PURE__ */ jsx37(AssistantStreamingIndicator, { status: resolvedStreamingStatus }) : null
10181
10436
  ] });
10182
10437
  }
10183
- return /* @__PURE__ */ jsxs23("div", { className: cn("space-y-3", streamingClass, className), children: [
10438
+ return /* @__PURE__ */ jsxs24("div", { className: cn("space-y-3", streamingClass, className), children: [
10184
10439
  hasReasoning ? reasoningNode : answerNode,
10185
- resolvedStreamingStatus ? /* @__PURE__ */ jsx36(AssistantStreamingIndicator, { status: resolvedStreamingStatus }) : null
10440
+ resolvedStreamingStatus ? /* @__PURE__ */ jsx37(AssistantStreamingIndicator, { status: resolvedStreamingStatus }) : null
10186
10441
  ] });
10187
10442
  }
10188
10443
 
10189
10444
  // src/components/thread/MessageActions.tsx
10190
10445
  import * as React32 from "react";
10191
10446
  import { Check as Check4, Copy as Copy2, RefreshCw } from "lucide-react";
10192
- import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
10447
+ import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
10193
10448
  function MessageActions({
10194
10449
  content,
10195
10450
  isAssistant = false,
@@ -10211,7 +10466,7 @@ function MessageActions({
10211
10466
  if (isStreaming) {
10212
10467
  return null;
10213
10468
  }
10214
- return /* @__PURE__ */ jsxs24(
10469
+ return /* @__PURE__ */ jsxs25(
10215
10470
  "div",
10216
10471
  {
10217
10472
  className: cn(
@@ -10219,7 +10474,7 @@ function MessageActions({
10219
10474
  className
10220
10475
  ),
10221
10476
  children: [
10222
- /* @__PURE__ */ jsx37(
10477
+ /* @__PURE__ */ jsx38(
10223
10478
  "button",
10224
10479
  {
10225
10480
  type: "button",
@@ -10229,17 +10484,17 @@ function MessageActions({
10229
10484
  copied && "text-green-500"
10230
10485
  ),
10231
10486
  title: copied ? t("messageActions.copied") : t("messageActions.copy"),
10232
- children: copied ? /* @__PURE__ */ jsx37(Check4, { size: 14 }) : /* @__PURE__ */ jsx37(Copy2, { size: 14 })
10487
+ children: copied ? /* @__PURE__ */ jsx38(Check4, { size: 14 }) : /* @__PURE__ */ jsx38(Copy2, { size: 14 })
10233
10488
  }
10234
10489
  ),
10235
- isAssistant && onRetry && /* @__PURE__ */ jsx37(
10490
+ isAssistant && onRetry && /* @__PURE__ */ jsx38(
10236
10491
  "button",
10237
10492
  {
10238
10493
  type: "button",
10239
10494
  onClick: onRetry,
10240
10495
  className: "p-1.5 rounded-md text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",
10241
10496
  title: t("messageActions.regenerate"),
10242
- children: /* @__PURE__ */ jsx37(RefreshCw, { size: 14 })
10497
+ children: /* @__PURE__ */ jsx38(RefreshCw, { size: 14 })
10243
10498
  }
10244
10499
  )
10245
10500
  ]
@@ -10260,18 +10515,18 @@ import {
10260
10515
  Sparkles as Sparkles3,
10261
10516
  Zap
10262
10517
  } from "lucide-react";
10263
- import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
10518
+ import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
10264
10519
  function getIconComponent2(icon) {
10265
10520
  const iconMap = {
10266
- "circle-question": /* @__PURE__ */ jsx38(HelpCircle, { size: 20 }),
10267
- "lightbulb": /* @__PURE__ */ jsx38(Lightbulb2, { size: 20 }),
10268
- "sparkle": /* @__PURE__ */ jsx38(Sparkles3, { size: 20 }),
10269
- "write": /* @__PURE__ */ jsx38(Pencil3, { size: 20 }),
10270
- "search": /* @__PURE__ */ jsx38(Search3, { size: 20 }),
10271
- "globe": /* @__PURE__ */ jsx38(Globe2, { size: 20 }),
10272
- "book-open": /* @__PURE__ */ jsx38(BookOpen2, { size: 20 }),
10273
- "compass": /* @__PURE__ */ jsx38(Compass, { size: 20 }),
10274
- "bolt": /* @__PURE__ */ jsx38(Zap, { size: 20 })
10521
+ "circle-question": /* @__PURE__ */ jsx39(HelpCircle, { size: 20 }),
10522
+ "lightbulb": /* @__PURE__ */ jsx39(Lightbulb2, { size: 20 }),
10523
+ "sparkle": /* @__PURE__ */ jsx39(Sparkles3, { size: 20 }),
10524
+ "write": /* @__PURE__ */ jsx39(Pencil3, { size: 20 }),
10525
+ "search": /* @__PURE__ */ jsx39(Search3, { size: 20 }),
10526
+ "globe": /* @__PURE__ */ jsx39(Globe2, { size: 20 }),
10527
+ "book-open": /* @__PURE__ */ jsx39(BookOpen2, { size: 20 }),
10528
+ "compass": /* @__PURE__ */ jsx39(Compass, { size: 20 }),
10529
+ "bolt": /* @__PURE__ */ jsx39(Zap, { size: 20 })
10275
10530
  };
10276
10531
  return icon ? iconMap[icon] || iconMap["sparkle"] : iconMap["sparkle"];
10277
10532
  }
@@ -10279,9 +10534,9 @@ function StartScreen({ startScreen, onPromptClick, className }) {
10279
10534
  const { t } = useChatkitTranslation();
10280
10535
  const greeting = startScreen?.greeting ?? t("startScreen.greeting");
10281
10536
  const prompts = startScreen?.prompts ?? [];
10282
- return /* @__PURE__ */ jsxs25("div", { className: cn("flex flex-col items-center justify-center py-12 px-4", className), children: [
10283
- /* @__PURE__ */ jsx38("div", { className: "mb-8 text-center", children: /* @__PURE__ */ jsx38("h2", { className: "text-2xl font-semibold text-foreground mb-2", children: greeting }) }),
10284
- prompts.length > 0 && /* @__PURE__ */ jsx38("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx38("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3", children: prompts.map((item, index) => /* @__PURE__ */ jsxs25(
10537
+ return /* @__PURE__ */ jsxs26("div", { className: cn("flex flex-col items-center justify-center py-12 px-4", className), children: [
10538
+ /* @__PURE__ */ jsx39("div", { className: "mb-8 text-center", children: /* @__PURE__ */ jsx39("h2", { className: "text-2xl font-semibold text-foreground mb-2", children: greeting }) }),
10539
+ prompts.length > 0 && /* @__PURE__ */ jsx39("div", { className: "w-full max-w-2xl", children: /* @__PURE__ */ jsx39("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3", children: prompts.map((item, index) => /* @__PURE__ */ jsxs26(
10285
10540
  "button",
10286
10541
  {
10287
10542
  type: "button",
@@ -10292,8 +10547,8 @@ function StartScreen({ startScreen, onPromptClick, className }) {
10292
10547
  "focus:outline-none focus:ring-2 focus:ring-primary/20"
10293
10548
  ),
10294
10549
  children: [
10295
- /* @__PURE__ */ jsx38("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary", children: getIconComponent2(item.icon) }),
10296
- /* @__PURE__ */ jsx38("span", { className: "text-sm font-medium text-foreground", children: item.label })
10550
+ /* @__PURE__ */ jsx39("span", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary", children: getIconComponent2(item.icon) }),
10551
+ /* @__PURE__ */ jsx39("span", { className: "text-sm font-medium text-foreground", children: item.label })
10297
10552
  ]
10298
10553
  },
10299
10554
  `prompt-${index}`
@@ -10492,7 +10747,7 @@ function useThreads(limit = DEFAULT_LIMIT) {
10492
10747
  import * as React35 from "react";
10493
10748
 
10494
10749
  // src/components/ui/progress-circle.tsx
10495
- import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
10750
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
10496
10751
  function clamp2(input, a, b) {
10497
10752
  return Math.max(Math.min(input, Math.max(a, b)), Math.min(a, b));
10498
10753
  }
@@ -10515,7 +10770,7 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
10515
10770
  return (
10516
10771
  // biome-ignore lint/a11y/useFocusableInteractive: false positive (progress + progressbar are not focusable interactives)
10517
10772
  // biome-ignore lint/nursery/useAriaPropsSupportedByRole: biome rule at odds with mdn docs (presumed nursary bug with rule)
10518
- /* @__PURE__ */ jsxs26(
10773
+ /* @__PURE__ */ jsxs27(
10519
10774
  "svg",
10520
10775
  {
10521
10776
  role: "progressbar",
@@ -10526,8 +10781,8 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
10526
10781
  "aria-valuemax": 100,
10527
10782
  ...restSvgProps,
10528
10783
  children: [
10529
- /* @__PURE__ */ jsx39("circle", { ...commonParams, className: "stroke-current/25" }),
10530
- /* @__PURE__ */ jsx39(
10784
+ /* @__PURE__ */ jsx40("circle", { ...commonParams, className: "stroke-current/25" }),
10785
+ /* @__PURE__ */ jsx40(
10531
10786
  "circle",
10532
10787
  {
10533
10788
  ...commonParams,
@@ -10546,7 +10801,7 @@ var ProgressCircle = ({ value, className, ...restSvgProps }) => {
10546
10801
  };
10547
10802
 
10548
10803
  // src/components/thread/context-usage-indicator.tsx
10549
- import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
10804
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
10550
10805
  var kNumberFormatter = new Intl.NumberFormat("en-US", {
10551
10806
  minimumFractionDigits: 0,
10552
10807
  maximumFractionDigits: 1
@@ -10688,8 +10943,8 @@ function ContextUsageIndicator({
10688
10943
  });
10689
10944
  const usageLabelWithSuffix = usageLabel.endsWith(":") ? usageLabel : `${usageLabel}:`;
10690
10945
  const progressClassName = percent >= 90 ? "text-destructive" : percent >= 75 ? "text-amber-500" : "text-primary dark:text-zinc-300";
10691
- return /* @__PURE__ */ jsxs27(Tooltip, { children: [
10692
- /* @__PURE__ */ jsx40(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx40(
10946
+ return /* @__PURE__ */ jsxs28(Tooltip, { children: [
10947
+ /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
10693
10948
  "button",
10694
10949
  {
10695
10950
  type: "button",
@@ -10698,13 +10953,13 @@ function ContextUsageIndicator({
10698
10953
  className
10699
10954
  ),
10700
10955
  "aria-label": `${usageLabelWithSuffix} ${usageFullLabel}. ${usageTokensLabel}`,
10701
- children: /* @__PURE__ */ jsx40(ProgressCircle, { value: percent, className: cn("size-3.5", progressClassName) })
10956
+ children: /* @__PURE__ */ jsx41(ProgressCircle, { value: percent, className: cn("size-3.5", progressClassName) })
10702
10957
  }
10703
10958
  ) }),
10704
- /* @__PURE__ */ jsxs27(TooltipContent, { side: "top", sideOffset: 6, className: "space-y-0.5 px-3 py-2 text-center", children: [
10705
- /* @__PURE__ */ jsx40("div", { className: "text-primary-foreground/70", children: usageLabelWithSuffix }),
10706
- /* @__PURE__ */ jsx40("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
10707
- /* @__PURE__ */ jsx40("div", { className: "text-sm font-semibold", children: usageTokensLabel })
10959
+ /* @__PURE__ */ jsxs28(TooltipContent, { side: "top", sideOffset: 6, className: "space-y-0.5 px-3 py-2 text-center", children: [
10960
+ /* @__PURE__ */ jsx41("div", { className: "text-primary-foreground/70", children: usageLabelWithSuffix }),
10961
+ /* @__PURE__ */ jsx41("div", { className: "font-medium text-primary-foreground/80", children: usageFullLabel }),
10962
+ /* @__PURE__ */ jsx41("div", { className: "text-sm font-semibold", children: usageTokensLabel })
10708
10963
  ] })
10709
10964
  ] });
10710
10965
  }
@@ -10737,10 +10992,10 @@ import { PawPrint, Settings } from "lucide-react";
10737
10992
 
10738
10993
  // src/components/ui/input.tsx
10739
10994
  import * as React37 from "react";
10740
- import { jsx as jsx41 } from "react/jsx-runtime";
10995
+ import { jsx as jsx42 } from "react/jsx-runtime";
10741
10996
  var Input = React37.forwardRef(
10742
10997
  ({ className, type, ...props }, ref) => {
10743
- return /* @__PURE__ */ jsx41(
10998
+ return /* @__PURE__ */ jsx42(
10744
10999
  "input",
10745
11000
  {
10746
11001
  ref,
@@ -10760,17 +11015,17 @@ Input.displayName = "Input";
10760
11015
  import "react";
10761
11016
  import { Select as SelectPrimitive } from "radix-ui";
10762
11017
  import { ChevronDownIcon as ChevronDownIcon2, CheckIcon as CheckIcon4, ChevronUpIcon } from "lucide-react";
10763
- import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
11018
+ import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
10764
11019
  function Select({
10765
11020
  ...props
10766
11021
  }) {
10767
- return /* @__PURE__ */ jsx42(SelectPrimitive.Root, { "data-slot": "select", ...props });
11022
+ return /* @__PURE__ */ jsx43(SelectPrimitive.Root, { "data-slot": "select", ...props });
10768
11023
  }
10769
11024
  function SelectGroup({
10770
11025
  className,
10771
11026
  ...props
10772
11027
  }) {
10773
- return /* @__PURE__ */ jsx42(
11028
+ return /* @__PURE__ */ jsx43(
10774
11029
  SelectPrimitive.Group,
10775
11030
  {
10776
11031
  "data-slot": "select-group",
@@ -10782,7 +11037,7 @@ function SelectGroup({
10782
11037
  function SelectValue({
10783
11038
  ...props
10784
11039
  }) {
10785
- return /* @__PURE__ */ jsx42(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
11040
+ return /* @__PURE__ */ jsx43(SelectPrimitive.Value, { "data-slot": "select-value", ...props });
10786
11041
  }
10787
11042
  function SelectTrigger({
10788
11043
  className,
@@ -10790,7 +11045,7 @@ function SelectTrigger({
10790
11045
  children,
10791
11046
  ...props
10792
11047
  }) {
10793
- return /* @__PURE__ */ jsxs28(
11048
+ return /* @__PURE__ */ jsxs29(
10794
11049
  SelectPrimitive.Trigger,
10795
11050
  {
10796
11051
  "data-slot": "select-trigger",
@@ -10802,7 +11057,7 @@ function SelectTrigger({
10802
11057
  ...props,
10803
11058
  children: [
10804
11059
  children,
10805
- /* @__PURE__ */ jsx42(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx42(ChevronDownIcon2, { className: "pointer-events-none size-4 text-muted-foreground" }) })
11060
+ /* @__PURE__ */ jsx43(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx43(ChevronDownIcon2, { className: "pointer-events-none size-4 text-muted-foreground" }) })
10806
11061
  ]
10807
11062
  }
10808
11063
  );
@@ -10814,7 +11069,7 @@ function SelectContent({
10814
11069
  align = "center",
10815
11070
  ...props
10816
11071
  }) {
10817
- return /* @__PURE__ */ jsx42(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs28(
11072
+ return /* @__PURE__ */ jsx43(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs29(
10818
11073
  SelectPrimitive.Content,
10819
11074
  {
10820
11075
  "data-slot": "select-content",
@@ -10824,8 +11079,8 @@ function SelectContent({
10824
11079
  align,
10825
11080
  ...props,
10826
11081
  children: [
10827
- /* @__PURE__ */ jsx42(SelectScrollUpButton, {}),
10828
- /* @__PURE__ */ jsx42(
11082
+ /* @__PURE__ */ jsx43(SelectScrollUpButton, {}),
11083
+ /* @__PURE__ */ jsx43(
10829
11084
  SelectPrimitive.Viewport,
10830
11085
  {
10831
11086
  "data-position": position,
@@ -10836,7 +11091,7 @@ function SelectContent({
10836
11091
  children
10837
11092
  }
10838
11093
  ),
10839
- /* @__PURE__ */ jsx42(SelectScrollDownButton, {})
11094
+ /* @__PURE__ */ jsx43(SelectScrollDownButton, {})
10840
11095
  ]
10841
11096
  }
10842
11097
  ) });
@@ -10846,7 +11101,7 @@ function SelectItem({
10846
11101
  children,
10847
11102
  ...props
10848
11103
  }) {
10849
- return /* @__PURE__ */ jsxs28(
11104
+ return /* @__PURE__ */ jsxs29(
10850
11105
  SelectPrimitive.Item,
10851
11106
  {
10852
11107
  "data-slot": "select-item",
@@ -10856,8 +11111,8 @@ function SelectItem({
10856
11111
  ),
10857
11112
  ...props,
10858
11113
  children: [
10859
- /* @__PURE__ */ jsx42("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx42(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx42(CheckIcon4, { className: "pointer-events-none" }) }) }),
10860
- /* @__PURE__ */ jsx42(SelectPrimitive.ItemText, { children })
11114
+ /* @__PURE__ */ jsx43("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx43(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx43(CheckIcon4, { className: "pointer-events-none" }) }) }),
11115
+ /* @__PURE__ */ jsx43(SelectPrimitive.ItemText, { children })
10861
11116
  ]
10862
11117
  }
10863
11118
  );
@@ -10866,7 +11121,7 @@ function SelectScrollUpButton({
10866
11121
  className,
10867
11122
  ...props
10868
11123
  }) {
10869
- return /* @__PURE__ */ jsx42(
11124
+ return /* @__PURE__ */ jsx43(
10870
11125
  SelectPrimitive.ScrollUpButton,
10871
11126
  {
10872
11127
  "data-slot": "select-scroll-up-button",
@@ -10875,7 +11130,7 @@ function SelectScrollUpButton({
10875
11130
  className
10876
11131
  ),
10877
11132
  ...props,
10878
- children: /* @__PURE__ */ jsx42(
11133
+ children: /* @__PURE__ */ jsx43(
10879
11134
  ChevronUpIcon,
10880
11135
  {}
10881
11136
  )
@@ -10886,7 +11141,7 @@ function SelectScrollDownButton({
10886
11141
  className,
10887
11142
  ...props
10888
11143
  }) {
10889
- return /* @__PURE__ */ jsx42(
11144
+ return /* @__PURE__ */ jsx43(
10890
11145
  SelectPrimitive.ScrollDownButton,
10891
11146
  {
10892
11147
  "data-slot": "select-scroll-down-button",
@@ -10895,7 +11150,7 @@ function SelectScrollDownButton({
10895
11150
  className
10896
11151
  ),
10897
11152
  ...props,
10898
- children: /* @__PURE__ */ jsx42(
11153
+ children: /* @__PURE__ */ jsx43(
10899
11154
  ChevronDownIcon2,
10900
11155
  {}
10901
11156
  )
@@ -10906,7 +11161,7 @@ function SelectScrollDownButton({
10906
11161
  // src/components/ui/slider.tsx
10907
11162
  import * as React39 from "react";
10908
11163
  import { Slider as SliderPrimitive } from "radix-ui";
10909
- import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
11164
+ import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
10910
11165
  function Slider({
10911
11166
  className,
10912
11167
  defaultValue,
@@ -10919,7 +11174,7 @@ function Slider({
10919
11174
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
10920
11175
  [value, defaultValue, min, max]
10921
11176
  );
10922
- return /* @__PURE__ */ jsxs29(
11177
+ return /* @__PURE__ */ jsxs30(
10923
11178
  SliderPrimitive.Root,
10924
11179
  {
10925
11180
  "data-slot": "slider",
@@ -10933,12 +11188,12 @@ function Slider({
10933
11188
  ),
10934
11189
  ...props,
10935
11190
  children: [
10936
- /* @__PURE__ */ jsx43(
11191
+ /* @__PURE__ */ jsx44(
10937
11192
  SliderPrimitive.Track,
10938
11193
  {
10939
11194
  "data-slot": "slider-track",
10940
11195
  className: "relative grow overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-horizontal:w-full data-vertical:h-full data-vertical:w-1",
10941
- children: /* @__PURE__ */ jsx43(
11196
+ children: /* @__PURE__ */ jsx44(
10942
11197
  SliderPrimitive.Range,
10943
11198
  {
10944
11199
  "data-slot": "slider-range",
@@ -10947,7 +11202,7 @@ function Slider({
10947
11202
  )
10948
11203
  }
10949
11204
  ),
10950
- Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx43(
11205
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx44(
10951
11206
  SliderPrimitive.Thumb,
10952
11207
  {
10953
11208
  "data-slot": "slider-thumb",
@@ -10969,7 +11224,7 @@ import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
10969
11224
  import "react";
10970
11225
  import { cva as cva2 } from "class-variance-authority";
10971
11226
  import { Toggle as TogglePrimitive } from "radix-ui";
10972
- import { jsx as jsx44 } from "react/jsx-runtime";
11227
+ import { jsx as jsx45 } from "react/jsx-runtime";
10973
11228
  var toggleVariants = cva2(
10974
11229
  "group/toggle inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none hover:bg-muted hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-pressed:bg-muted data-[state=on]:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
10975
11230
  {
@@ -10992,7 +11247,7 @@ var toggleVariants = cva2(
10992
11247
  );
10993
11248
 
10994
11249
  // src/components/ui/toggle-group.tsx
10995
- import { jsx as jsx45 } from "react/jsx-runtime";
11250
+ import { jsx as jsx46 } from "react/jsx-runtime";
10996
11251
  var ToggleGroupContext = React41.createContext({
10997
11252
  size: "default",
10998
11253
  variant: "default",
@@ -11008,7 +11263,7 @@ function ToggleGroup({
11008
11263
  children,
11009
11264
  ...props
11010
11265
  }) {
11011
- return /* @__PURE__ */ jsx45(
11266
+ return /* @__PURE__ */ jsx46(
11012
11267
  ToggleGroupPrimitive.Root,
11013
11268
  {
11014
11269
  "data-slot": "toggle-group",
@@ -11022,7 +11277,7 @@ function ToggleGroup({
11022
11277
  className
11023
11278
  ),
11024
11279
  ...props,
11025
- children: /* @__PURE__ */ jsx45(
11280
+ children: /* @__PURE__ */ jsx46(
11026
11281
  ToggleGroupContext.Provider,
11027
11282
  {
11028
11283
  value: { variant, size: size2, spacing, orientation },
@@ -11040,7 +11295,7 @@ function ToggleGroupItem({
11040
11295
  ...props
11041
11296
  }) {
11042
11297
  const context = React41.useContext(ToggleGroupContext);
11043
- return /* @__PURE__ */ jsx45(
11298
+ return /* @__PURE__ */ jsx46(
11044
11299
  ToggleGroupPrimitive.Item,
11045
11300
  {
11046
11301
  "data-slot": "toggle-group-item",
@@ -11280,7 +11535,7 @@ import {
11280
11535
  } from "@xpert-ai/chatkit-types";
11281
11536
 
11282
11537
  // src/components/pet/PetPreview.tsx
11283
- import { jsx as jsx46 } from "react/jsx-runtime";
11538
+ import { jsx as jsx47 } from "react/jsx-runtime";
11284
11539
  function escapeCssUrl(value) {
11285
11540
  return value.replace(/["\\]/g, "\\$&");
11286
11541
  }
@@ -11288,7 +11543,7 @@ function PetPreview({ src, label, className }) {
11288
11543
  const scale = 0.13;
11289
11544
  const width = petSpriteAtlas.cellWidth;
11290
11545
  const height = petSpriteAtlas.cellHeight;
11291
- return /* @__PURE__ */ jsx46(
11546
+ return /* @__PURE__ */ jsx47(
11292
11547
  "span",
11293
11548
  {
11294
11549
  className: cn(
@@ -11297,7 +11552,7 @@ function PetPreview({ src, label, className }) {
11297
11552
  ),
11298
11553
  "aria-hidden": "true",
11299
11554
  title: label,
11300
- children: /* @__PURE__ */ jsx46(
11555
+ children: /* @__PURE__ */ jsx47(
11301
11556
  "span",
11302
11557
  {
11303
11558
  className: "absolute left-1/2 top-1/2 block",
@@ -11319,7 +11574,7 @@ function PetPreview({ src, label, className }) {
11319
11574
  }
11320
11575
 
11321
11576
  // src/components/settings/SettingsSheet.tsx
11322
- import { jsx as jsx47, jsxs as jsxs30 } from "react/jsx-runtime";
11577
+ import { jsx as jsx48, jsxs as jsxs31 } from "react/jsx-runtime";
11323
11578
  var CHARACTER_TYPES2 = [
11324
11579
  "builtin",
11325
11580
  "atlas"
@@ -11359,23 +11614,23 @@ function SettingsSheet({
11359
11614
  defaultValue: selectedBuiltinPet.label
11360
11615
  }
11361
11616
  );
11362
- return /* @__PURE__ */ jsx47(Sheet, { open, onOpenChange, children: /* @__PURE__ */ jsxs30(SheetContent, { side: "right", className: "w-[min(92vw,26rem)] overflow-y-auto", children: [
11363
- /* @__PURE__ */ jsx47(SheetHeader, { children: /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2", children: [
11364
- /* @__PURE__ */ jsx47("span", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-primary/10 text-primary", children: /* @__PURE__ */ jsx47(Settings, { size: 16 }) }),
11365
- /* @__PURE__ */ jsx47(SheetTitle, { children: t("settings.title") })
11617
+ return /* @__PURE__ */ jsx48(Sheet, { open, onOpenChange, children: /* @__PURE__ */ jsxs31(SheetContent, { side: "right", className: "w-[min(92vw,26rem)] overflow-y-auto", children: [
11618
+ /* @__PURE__ */ jsx48(SheetHeader, { children: /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2", children: [
11619
+ /* @__PURE__ */ jsx48("span", { className: "flex h-8 w-8 items-center justify-center rounded-md bg-primary/10 text-primary", children: /* @__PURE__ */ jsx48(Settings, { size: 16 }) }),
11620
+ /* @__PURE__ */ jsx48(SheetTitle, { children: t("settings.title") })
11366
11621
  ] }) }),
11367
- /* @__PURE__ */ jsxs30("form", { className: "mt-6 space-y-5", onSubmit: handleSubmit, children: [
11368
- /* @__PURE__ */ jsxs30("section", { className: "space-y-5", children: [
11369
- /* @__PURE__ */ jsxs30("div", { className: "flex items-center gap-2", children: [
11370
- /* @__PURE__ */ jsx47("span", { className: "flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground", children: /* @__PURE__ */ jsx47(PawPrint, { size: 15 }) }),
11371
- /* @__PURE__ */ jsx47("h3", { className: "text-sm font-semibold", children: t("pet.settings.title") })
11622
+ /* @__PURE__ */ jsxs31("form", { className: "mt-6 space-y-5", onSubmit: handleSubmit, children: [
11623
+ /* @__PURE__ */ jsxs31("section", { className: "space-y-5", children: [
11624
+ /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-2", children: [
11625
+ /* @__PURE__ */ jsx48("span", { className: "flex h-7 w-7 items-center justify-center rounded-md bg-muted text-muted-foreground", children: /* @__PURE__ */ jsx48(PawPrint, { size: 15 }) }),
11626
+ /* @__PURE__ */ jsx48("h3", { className: "text-sm font-semibold", children: t("pet.settings.title") })
11372
11627
  ] }),
11373
- /* @__PURE__ */ jsxs30("label", { className: "flex items-center justify-between gap-4 rounded-md border border-border px-3 py-2", children: [
11374
- /* @__PURE__ */ jsxs30("span", { className: "min-w-0", children: [
11375
- /* @__PURE__ */ jsx47("span", { className: "block text-sm font-medium", children: t("pet.settings.enabled") }),
11376
- petRequired && /* @__PURE__ */ jsx47("span", { className: "mt-0.5 block text-xs text-muted-foreground", children: t("pet.settings.requiredHint") })
11628
+ /* @__PURE__ */ jsxs31("label", { className: "flex items-center justify-between gap-4 rounded-md border border-border px-3 py-2", children: [
11629
+ /* @__PURE__ */ jsxs31("span", { className: "min-w-0", children: [
11630
+ /* @__PURE__ */ jsx48("span", { className: "block text-sm font-medium", children: t("pet.settings.enabled") }),
11631
+ petRequired && /* @__PURE__ */ jsx48("span", { className: "mt-0.5 block text-xs text-muted-foreground", children: t("pet.settings.requiredHint") })
11377
11632
  ] }),
11378
- /* @__PURE__ */ jsx47(
11633
+ /* @__PURE__ */ jsx48(
11379
11634
  "button",
11380
11635
  {
11381
11636
  type: "button",
@@ -11388,7 +11643,7 @@ function SettingsSheet({
11388
11643
  draft.enabled ? "bg-primary" : "bg-muted-foreground/20",
11389
11644
  petRequired ? "cursor-not-allowed opacity-70" : ""
11390
11645
  ].join(" "),
11391
- children: /* @__PURE__ */ jsx47(
11646
+ children: /* @__PURE__ */ jsx48(
11392
11647
  "span",
11393
11648
  {
11394
11649
  className: [
@@ -11401,9 +11656,9 @@ function SettingsSheet({
11401
11656
  )
11402
11657
  ] })
11403
11658
  ] }),
11404
- /* @__PURE__ */ jsxs30("div", { className: "space-y-2", children: [
11405
- /* @__PURE__ */ jsx47("span", { id: "chatkit-pet-type-label", className: "text-sm font-medium", children: t("pet.settings.characterType") }),
11406
- /* @__PURE__ */ jsx47(
11659
+ /* @__PURE__ */ jsxs31("div", { className: "space-y-2", children: [
11660
+ /* @__PURE__ */ jsx48("span", { id: "chatkit-pet-type-label", className: "text-sm font-medium", children: t("pet.settings.characterType") }),
11661
+ /* @__PURE__ */ jsx48(
11407
11662
  ToggleGroup,
11408
11663
  {
11409
11664
  id: "chatkit-pet-type",
@@ -11418,7 +11673,7 @@ function SettingsSheet({
11418
11673
  variant: "outline",
11419
11674
  spacing: 2,
11420
11675
  className: "!w-full",
11421
- children: CHARACTER_TYPES2.map((type) => /* @__PURE__ */ jsx47(
11676
+ children: CHARACTER_TYPES2.map((type) => /* @__PURE__ */ jsx48(
11422
11677
  ToggleGroupItem,
11423
11678
  {
11424
11679
  value: type,
@@ -11430,8 +11685,8 @@ function SettingsSheet({
11430
11685
  }
11431
11686
  )
11432
11687
  ] }),
11433
- draft.characterType === "builtin" && /* @__PURE__ */ jsxs30("div", { className: "space-y-2", children: [
11434
- /* @__PURE__ */ jsx47(
11688
+ draft.characterType === "builtin" && /* @__PURE__ */ jsxs31("div", { className: "space-y-2", children: [
11689
+ /* @__PURE__ */ jsx48(
11435
11690
  "label",
11436
11691
  {
11437
11692
  htmlFor: "chatkit-pet-builtin",
@@ -11439,7 +11694,7 @@ function SettingsSheet({
11439
11694
  children: t("pet.settings.builtin")
11440
11695
  }
11441
11696
  ),
11442
- /* @__PURE__ */ jsxs30(
11697
+ /* @__PURE__ */ jsxs31(
11443
11698
  Select,
11444
11699
  {
11445
11700
  value: selectedBuiltinPet.id,
@@ -11450,26 +11705,26 @@ function SettingsSheet({
11450
11705
  }
11451
11706
  },
11452
11707
  children: [
11453
- /* @__PURE__ */ jsx47(
11708
+ /* @__PURE__ */ jsx48(
11454
11709
  SelectTrigger,
11455
11710
  {
11456
11711
  id: "chatkit-pet-builtin",
11457
11712
  className: "min-h-12 w-full px-3 py-2",
11458
- children: /* @__PURE__ */ jsx47(SelectValue, { placeholder: selectedBuiltinPetLabel })
11713
+ children: /* @__PURE__ */ jsx48(SelectValue, { placeholder: selectedBuiltinPetLabel })
11459
11714
  }
11460
11715
  ),
11461
- /* @__PURE__ */ jsx47(SelectContent, { className: "w-[var(--radix-select-trigger-width)]", children: /* @__PURE__ */ jsx47(SelectGroup, { children: INCLUDED_PET_OPTIONS.map((pet) => {
11716
+ /* @__PURE__ */ jsx48(SelectContent, { className: "w-[var(--radix-select-trigger-width)]", children: /* @__PURE__ */ jsx48(SelectGroup, { children: INCLUDED_PET_OPTIONS.map((pet) => {
11462
11717
  const label = t(`pet.settings.builtins.${pet.id}`, {
11463
11718
  defaultValue: pet.label
11464
11719
  });
11465
- return /* @__PURE__ */ jsx47(
11720
+ return /* @__PURE__ */ jsx48(
11466
11721
  SelectItem,
11467
11722
  {
11468
11723
  value: pet.id,
11469
11724
  className: "min-h-10 py-1.5 pl-2 pr-8",
11470
- children: /* @__PURE__ */ jsxs30("span", { className: "flex min-w-0 items-center gap-2", children: [
11471
- /* @__PURE__ */ jsx47(PetPreview, { src: pet.previewSrc, label }),
11472
- /* @__PURE__ */ jsx47("span", { className: "min-w-0 truncate", children: label })
11725
+ children: /* @__PURE__ */ jsxs31("span", { className: "flex min-w-0 items-center gap-2", children: [
11726
+ /* @__PURE__ */ jsx48(PetPreview, { src: pet.previewSrc, label }),
11727
+ /* @__PURE__ */ jsx48("span", { className: "min-w-0 truncate", children: label })
11473
11728
  ] })
11474
11729
  },
11475
11730
  pet.id
@@ -11479,8 +11734,8 @@ function SettingsSheet({
11479
11734
  }
11480
11735
  )
11481
11736
  ] }),
11482
- draft.characterType === "atlas" && /* @__PURE__ */ jsxs30("div", { className: "space-y-2", children: [
11483
- /* @__PURE__ */ jsx47(
11737
+ draft.characterType === "atlas" && /* @__PURE__ */ jsxs31("div", { className: "space-y-2", children: [
11738
+ /* @__PURE__ */ jsx48(
11484
11739
  "label",
11485
11740
  {
11486
11741
  className: "text-sm font-medium",
@@ -11488,7 +11743,7 @@ function SettingsSheet({
11488
11743
  children: t("pet.settings.atlasUrl")
11489
11744
  }
11490
11745
  ),
11491
- /* @__PURE__ */ jsx47(
11746
+ /* @__PURE__ */ jsx48(
11492
11747
  Input,
11493
11748
  {
11494
11749
  id: "chatkit-pet-atlas",
@@ -11498,15 +11753,15 @@ function SettingsSheet({
11498
11753
  }
11499
11754
  )
11500
11755
  ] }),
11501
- /* @__PURE__ */ jsxs30("div", { className: "space-y-2", children: [
11502
- /* @__PURE__ */ jsxs30("div", { className: "flex items-center justify-between gap-4", children: [
11503
- /* @__PURE__ */ jsx47("label", { className: "text-sm font-medium", htmlFor: "chatkit-pet-scale", children: t("pet.settings.scale") }),
11504
- /* @__PURE__ */ jsxs30("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
11756
+ /* @__PURE__ */ jsxs31("div", { className: "space-y-2", children: [
11757
+ /* @__PURE__ */ jsxs31("div", { className: "flex items-center justify-between gap-4", children: [
11758
+ /* @__PURE__ */ jsx48("label", { className: "text-sm font-medium", htmlFor: "chatkit-pet-scale", children: t("pet.settings.scale") }),
11759
+ /* @__PURE__ */ jsxs31("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
11505
11760
  draft.scale.toFixed(2),
11506
11761
  "x"
11507
11762
  ] })
11508
11763
  ] }),
11509
- /* @__PURE__ */ jsx47(
11764
+ /* @__PURE__ */ jsx48(
11510
11765
  Slider,
11511
11766
  {
11512
11767
  id: "chatkit-pet-scale",
@@ -11520,8 +11775,8 @@ function SettingsSheet({
11520
11775
  }
11521
11776
  )
11522
11777
  ] }),
11523
- /* @__PURE__ */ jsxs30("label", { className: "flex items-center gap-2 text-sm", children: [
11524
- /* @__PURE__ */ jsx47(
11778
+ /* @__PURE__ */ jsxs31("label", { className: "flex items-center gap-2 text-sm", children: [
11779
+ /* @__PURE__ */ jsx48(
11525
11780
  "input",
11526
11781
  {
11527
11782
  type: "checkbox",
@@ -11532,8 +11787,8 @@ function SettingsSheet({
11532
11787
  ),
11533
11788
  t("pet.settings.draggable")
11534
11789
  ] }),
11535
- /* @__PURE__ */ jsxs30("label", { className: "flex items-center gap-2 text-sm", children: [
11536
- /* @__PURE__ */ jsx47(
11790
+ /* @__PURE__ */ jsxs31("label", { className: "flex items-center gap-2 text-sm", children: [
11791
+ /* @__PURE__ */ jsx48(
11537
11792
  "input",
11538
11793
  {
11539
11794
  type: "checkbox",
@@ -11544,8 +11799,8 @@ function SettingsSheet({
11544
11799
  ),
11545
11800
  t("pet.settings.persistPosition")
11546
11801
  ] }),
11547
- /* @__PURE__ */ jsxs30("div", { className: "flex justify-end gap-2 pt-2", children: [
11548
- /* @__PURE__ */ jsx47(
11802
+ /* @__PURE__ */ jsxs31("div", { className: "flex justify-end gap-2 pt-2", children: [
11803
+ /* @__PURE__ */ jsx48(
11549
11804
  Button,
11550
11805
  {
11551
11806
  type: "button",
@@ -11554,7 +11809,7 @@ function SettingsSheet({
11554
11809
  children: t("pet.settings.cancel")
11555
11810
  }
11556
11811
  ),
11557
- /* @__PURE__ */ jsx47(Button, { type: "submit", children: t("pet.settings.save") })
11812
+ /* @__PURE__ */ jsx48(Button, { type: "submit", children: t("pet.settings.save") })
11558
11813
  ] })
11559
11814
  ] })
11560
11815
  ] }) });
@@ -12060,7 +12315,7 @@ function findDomPointForComposerOffset(root, offset) {
12060
12315
  }
12061
12316
 
12062
12317
  // src/components/chat.tsx
12063
- import { Fragment as Fragment7, jsx as jsx48, jsxs as jsxs31 } from "react/jsx-runtime";
12318
+ import { Fragment as Fragment7, jsx as jsx49, jsxs as jsxs32 } from "react/jsx-runtime";
12064
12319
  var defaultApiUrl2 = import.meta.env.VITE_XPERTAI_API_URL;
12065
12320
  var COMPOSER_INPUT_MAX_HEIGHT = 128;
12066
12321
  var LONG_TEXT_REFERENCE_THRESHOLD = 5e3;
@@ -12193,7 +12448,7 @@ function ReferenceChip({
12193
12448
  const metaLine = getReferenceMetaLine(reference);
12194
12449
  const isComposer = variant === "composer";
12195
12450
  const Icon = reference.type === "quote" ? Quote : reference.type === "image" ? ImageIcon : FileText3;
12196
- return /* @__PURE__ */ jsxs31(
12451
+ return /* @__PURE__ */ jsxs32(
12197
12452
  "div",
12198
12453
  {
12199
12454
  className: cn(
@@ -12202,7 +12457,7 @@ function ReferenceChip({
12202
12457
  ),
12203
12458
  title: getReferenceTitle(reference),
12204
12459
  children: [
12205
- /* @__PURE__ */ jsx48(
12460
+ /* @__PURE__ */ jsx49(
12206
12461
  Icon,
12207
12462
  {
12208
12463
  size: isComposer ? 14 : 12,
@@ -12212,8 +12467,8 @@ function ReferenceChip({
12212
12467
  )
12213
12468
  }
12214
12469
  ),
12215
- /* @__PURE__ */ jsxs31("div", { className: "min-w-0 flex-1", children: [
12216
- /* @__PURE__ */ jsx48(
12470
+ /* @__PURE__ */ jsxs32("div", { className: "min-w-0 flex-1", children: [
12471
+ /* @__PURE__ */ jsx49(
12217
12472
  "div",
12218
12473
  {
12219
12474
  className: cn(
@@ -12223,7 +12478,7 @@ function ReferenceChip({
12223
12478
  children: getReferenceLabel(reference)
12224
12479
  }
12225
12480
  ),
12226
- metaLine && /* @__PURE__ */ jsx48(
12481
+ metaLine && /* @__PURE__ */ jsx49(
12227
12482
  "div",
12228
12483
  {
12229
12484
  className: cn(
@@ -12234,7 +12489,7 @@ function ReferenceChip({
12234
12489
  }
12235
12490
  )
12236
12491
  ] }),
12237
- onRemove && removeLabel && /* @__PURE__ */ jsx48(
12492
+ onRemove && removeLabel && /* @__PURE__ */ jsx49(
12238
12493
  "button",
12239
12494
  {
12240
12495
  type: "button",
@@ -12245,7 +12500,7 @@ function ReferenceChip({
12245
12500
  ),
12246
12501
  title: removeLabel,
12247
12502
  "aria-label": removeLabel,
12248
- children: /* @__PURE__ */ jsx48(X5, { size: 12 })
12503
+ children: /* @__PURE__ */ jsx49(X5, { size: 12 })
12249
12504
  }
12250
12505
  )
12251
12506
  ]
@@ -13851,7 +14106,7 @@ function Chat({
13851
14106
  fallbackTitle: t("history.threadFallback")
13852
14107
  });
13853
14108
  const assistantTitle = assistantName || resolvedTitle;
13854
- return /* @__PURE__ */ jsxs31(
14109
+ return /* @__PURE__ */ jsxs32(
13855
14110
  "div",
13856
14111
  {
13857
14112
  ref: viewportRef,
@@ -13861,10 +14116,10 @@ function Chat({
13861
14116
  className
13862
14117
  ),
13863
14118
  children: [
13864
- /* @__PURE__ */ jsxs31("div", { className: "flex items-center justify-between border-b p-2 sticky top-0 z-10 bg-background", children: [
13865
- /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-3 overflow-hidden", children: [
13866
- /* @__PURE__ */ jsxs31("div", { className: "relative shrink-0", children: [
13867
- /* @__PURE__ */ jsx48(
14119
+ /* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-between border-b p-2 sticky top-0 z-10 bg-background", children: [
14120
+ /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-3 overflow-hidden", children: [
14121
+ /* @__PURE__ */ jsxs32("div", { className: "relative shrink-0", children: [
14122
+ /* @__PURE__ */ jsx49(
13868
14123
  ChatkitAvatar,
13869
14124
  {
13870
14125
  avatar: assistantAvatar,
@@ -13872,10 +14127,10 @@ function Chat({
13872
14127
  label: assistantTitle
13873
14128
  }
13874
14129
  ),
13875
- /* @__PURE__ */ jsx48("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
14130
+ /* @__PURE__ */ jsx49("span", { className: "absolute bottom-0 right-0 h-2.5 w-2.5 rounded-full border-2 border-background bg-green-500" })
13876
14131
  ] }),
13877
- /* @__PURE__ */ jsxs31("div", { className: "truncate", children: [
13878
- /* @__PURE__ */ jsx48(
14132
+ /* @__PURE__ */ jsxs32("div", { className: "truncate", children: [
14133
+ /* @__PURE__ */ jsx49(
13879
14134
  "h2",
13880
14135
  {
13881
14136
  className: "text-lg font-semibold truncate",
@@ -13883,12 +14138,12 @@ function Chat({
13883
14138
  children: assistantTitle
13884
14139
  }
13885
14140
  ),
13886
- /* @__PURE__ */ jsx48("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
14141
+ /* @__PURE__ */ jsx49("p", { className: "text-xs text-muted-foreground", children: t("chat.statusOnline") })
13887
14142
  ] })
13888
14143
  ] }),
13889
- /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-1", children: [
13890
- /* @__PURE__ */ jsxs31(Tooltip, { children: [
13891
- /* @__PURE__ */ jsx48(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx48("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx48(
14144
+ /* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-1", children: [
14145
+ /* @__PURE__ */ jsxs32(Tooltip, { children: [
14146
+ /* @__PURE__ */ jsx49(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx49("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx49(
13892
14147
  "button",
13893
14148
  {
13894
14149
  type: "button",
@@ -13899,14 +14154,14 @@ function Chat({
13899
14154
  "transition-colors duration-150"
13900
14155
  ),
13901
14156
  "aria-label": t("settings.open"),
13902
- children: /* @__PURE__ */ jsx48(Settings2, { size: 16 })
14157
+ children: /* @__PURE__ */ jsx49(Settings2, { size: 16 })
13903
14158
  }
13904
14159
  ) }) }),
13905
- /* @__PURE__ */ jsx48(TooltipContent, { side: "bottom", children: t("settings.open") })
14160
+ /* @__PURE__ */ jsx49(TooltipContent, { side: "bottom", children: t("settings.open") })
13906
14161
  ] }),
13907
- history?.enabled !== false && /* @__PURE__ */ jsxs31(Fragment7, { children: [
13908
- /* @__PURE__ */ jsxs31(Tooltip, { children: [
13909
- /* @__PURE__ */ jsx48(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx48("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx48(
14162
+ history?.enabled !== false && /* @__PURE__ */ jsxs32(Fragment7, { children: [
14163
+ /* @__PURE__ */ jsxs32(Tooltip, { children: [
14164
+ /* @__PURE__ */ jsx49(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx49("span", { className: "inline-flex h-8 w-8", children: /* @__PURE__ */ jsx49(
13910
14165
  "button",
13911
14166
  {
13912
14167
  type: "button",
@@ -13919,12 +14174,12 @@ function Chat({
13919
14174
  "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
13920
14175
  ),
13921
14176
  "aria-label": t("history.newThread"),
13922
- children: /* @__PURE__ */ jsx48(Pencil4, { size: 16 })
14177
+ children: /* @__PURE__ */ jsx49(Pencil4, { size: 16 })
13923
14178
  }
13924
14179
  ) }) }),
13925
- /* @__PURE__ */ jsx48(TooltipContent, { side: "bottom", children: t("history.newThread") })
14180
+ /* @__PURE__ */ jsx49(TooltipContent, { side: "bottom", children: t("history.newThread") })
13926
14181
  ] }),
13927
- /* @__PURE__ */ jsx48(
14182
+ /* @__PURE__ */ jsx49(
13928
14183
  HistorySidebar,
13929
14184
  {
13930
14185
  threads,
@@ -13939,18 +14194,18 @@ function Chat({
13939
14194
  ] })
13940
14195
  ] })
13941
14196
  ] }),
13942
- /* @__PURE__ */ jsxs31("div", { className: "flex-1 p-4", children: [
13943
- errorMessage && /* @__PURE__ */ jsx48("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
13944
- historyError && /* @__PURE__ */ jsx48("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
13945
- showMissingConfig && /* @__PURE__ */ jsx48("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
13946
- isHistoryLoading && /* @__PURE__ */ jsx48("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
13947
- messages.length === 0 ? /* @__PURE__ */ jsx48(
14197
+ /* @__PURE__ */ jsxs32("div", { className: "flex-1 p-4", children: [
14198
+ errorMessage && /* @__PURE__ */ jsx49("div", { className: "mb-4 rounded-lg border border-destructive/30 bg-destructive/10 px-3 py-2 text-sm text-destructive", children: errorMessage }),
14199
+ historyError && /* @__PURE__ */ jsx49("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: historyError }),
14200
+ showMissingConfig && /* @__PURE__ */ jsx49("div", { className: "mb-4 rounded-lg border border-amber-200 bg-amber-50 px-3 py-2 text-sm text-amber-900", children: missingConfigDetailMessage }),
14201
+ isHistoryLoading && /* @__PURE__ */ jsx49("div", { className: "mb-4 rounded-lg border border-muted px-3 py-2 text-sm text-muted-foreground", children: t("chat.loadingThread") }),
14202
+ messages.length === 0 ? /* @__PURE__ */ jsx49(
13948
14203
  StartScreen,
13949
14204
  {
13950
14205
  startScreen,
13951
14206
  onPromptClick: handlePromptClick
13952
14207
  }
13953
- ) : /* @__PURE__ */ jsxs31("div", { className: "space-y-4", children: [
14208
+ ) : /* @__PURE__ */ jsxs32("div", { className: "space-y-4", children: [
13954
14209
  messages.map((message, index) => {
13955
14210
  const messageType = String(message.type);
13956
14211
  const isAssistantMessage = messageType === "assistant" || messageType === "ai";
@@ -13983,7 +14238,7 @@ function Chat({
13983
14238
  if (!isAssistantMessage && !hasPlainRenderableContent && !hasHumanAttachments && humanRuntimeCapabilityOptions.length === 0 && humanReferences.length === 0) {
13984
14239
  return null;
13985
14240
  }
13986
- return /* @__PURE__ */ jsx48(
14241
+ return /* @__PURE__ */ jsx49(
13987
14242
  "div",
13988
14243
  {
13989
14244
  className: cn(
@@ -13991,8 +14246,8 @@ function Chat({
13991
14246
  message.type === "human" ? "justify-end" : "justify-start -ml-1"
13992
14247
  // AI messages: slightly closer to left
13993
14248
  ),
13994
- children: /* @__PURE__ */ jsxs31("div", { className: "flex flex-col px-3 overflow-hidden", children: [
13995
- /* @__PURE__ */ jsx48(
14249
+ children: /* @__PURE__ */ jsxs32("div", { className: "flex flex-col px-3 overflow-hidden", children: [
14250
+ /* @__PURE__ */ jsx49(
13996
14251
  "div",
13997
14252
  {
13998
14253
  ...canQuoteMessage ? {
@@ -14004,7 +14259,7 @@ function Chat({
14004
14259
  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"
14005
14260
  // AI messages: use chat-specific foreground color
14006
14261
  ),
14007
- children: isAssistantMessage ? /* @__PURE__ */ jsx48(
14262
+ children: isAssistantMessage ? /* @__PURE__ */ jsx49(
14008
14263
  AssistantMessage,
14009
14264
  {
14010
14265
  message: {
@@ -14023,25 +14278,25 @@ function Chat({
14023
14278
  organizationId: stream.organizationId,
14024
14279
  apiUrl: stream.apiUrl
14025
14280
  }
14026
- ) : /* @__PURE__ */ jsxs31(Fragment7, { children: [
14027
- message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsx48("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ jsxs31(
14281
+ ) : /* @__PURE__ */ jsxs32(Fragment7, { children: [
14282
+ message.type === "human" && humanRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsx49("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ jsxs32(
14028
14283
  "span",
14029
14284
  {
14030
14285
  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",
14031
14286
  children: [
14032
- /* @__PURE__ */ jsx48(
14287
+ /* @__PURE__ */ jsx49(
14033
14288
  RuntimeCapabilityIcon,
14034
14289
  {
14035
14290
  option,
14036
14291
  variant: "chip"
14037
14292
  }
14038
14293
  ),
14039
- /* @__PURE__ */ jsx48("span", { className: "max-w-[9rem] truncate", children: option.label })
14294
+ /* @__PURE__ */ jsx49("span", { className: "max-w-[9rem] truncate", children: option.label })
14040
14295
  ]
14041
14296
  },
14042
14297
  `${option.type}:${option.id}`
14043
14298
  )) }),
14044
- message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ jsx48("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ jsx48(
14299
+ message.type === "human" && humanReferences.length > 0 && /* @__PURE__ */ jsx49("div", { className: "mb-2 flex flex-wrap gap-1.5", children: humanReferences.map((reference) => /* @__PURE__ */ jsx49(
14045
14300
  ReferenceChip,
14046
14301
  {
14047
14302
  reference,
@@ -14049,29 +14304,29 @@ function Chat({
14049
14304
  },
14050
14305
  getReferenceKey(reference)
14051
14306
  )) }),
14052
- message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ jsx48("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ jsxs31(
14307
+ message.type === "human" && humanAttachments.length > 0 && /* @__PURE__ */ jsx49("div", { className: "flex flex-wrap gap-1.5 mb-2", children: humanAttachments.map((file, fileIndex) => /* @__PURE__ */ jsxs32(
14053
14308
  "div",
14054
14309
  {
14055
14310
  className: "flex items-center gap-1.5 rounded-md bg-primary-foreground/20 px-2 py-1 text-xs",
14056
14311
  children: [
14057
- /* @__PURE__ */ jsx48(FileText3, { size: 12 }),
14058
- /* @__PURE__ */ jsx48("span", { className: "max-w-[100px] truncate", children: file.originalName })
14312
+ /* @__PURE__ */ jsx49(FileText3, { size: 12 }),
14313
+ /* @__PURE__ */ jsx49("span", { className: "max-w-[100px] truncate", children: file.originalName })
14059
14314
  ]
14060
14315
  },
14061
14316
  fileIndex
14062
14317
  )) }),
14063
- Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ jsx48(
14318
+ Array.isArray(message.content) ? message.content.map((part, partIndex) => /* @__PURE__ */ jsx49(
14064
14319
  "p",
14065
14320
  {
14066
14321
  className: "wrap-break-word text-sm leading-relaxed",
14067
14322
  children: formatMessageContent(part)
14068
14323
  },
14069
14324
  `${part.type}-${partIndex}`
14070
- )) : /* @__PURE__ */ jsx48("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
14325
+ )) : /* @__PURE__ */ jsx49("span", { className: "wrap-break-word text-sm leading-relaxed", children: formatMessageContent(message.content) })
14071
14326
  ] })
14072
14327
  }
14073
14328
  ),
14074
- /* @__PURE__ */ jsx48(
14329
+ /* @__PURE__ */ jsx49(
14075
14330
  MessageActions,
14076
14331
  {
14077
14332
  content: messageContent,
@@ -14107,7 +14362,7 @@ function Chat({
14107
14362
  stream.isLoading,
14108
14363
  { now: streamingNow }
14109
14364
  );
14110
- return /* @__PURE__ */ jsx48("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ jsx48("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ jsx48(
14365
+ return /* @__PURE__ */ jsx49("div", { className: "flex justify-start gap-3 -ml-2", children: /* @__PURE__ */ jsx49("div", { className: "max-w-full rounded-2xl py-2.5", children: /* @__PURE__ */ jsx49(
14111
14366
  AssistantStreamingIndicator,
14112
14367
  {
14113
14368
  status: fallbackStreamingStatus ?? "loading"
@@ -14116,7 +14371,7 @@ function Chat({
14116
14371
  })()
14117
14372
  ] })
14118
14373
  ] }),
14119
- !isAtBottom && messages.length > 0 && /* @__PURE__ */ jsx48("div", { className: "sticky bottom-20 z-20 flex justify-center px-4 pointer-events-none", children: /* @__PURE__ */ jsx48(
14374
+ !isAtBottom && messages.length > 0 && /* @__PURE__ */ jsx49("div", { className: "sticky bottom-20 z-20 flex justify-center px-4 pointer-events-none", children: /* @__PURE__ */ jsx49(
14120
14375
  Button,
14121
14376
  {
14122
14377
  type: "button",
@@ -14129,10 +14384,10 @@ function Chat({
14129
14384
  onClick: () => scrollToBottom(true, true),
14130
14385
  "aria-label": t("chat.scrollToBottom"),
14131
14386
  title: t("chat.scrollToBottom"),
14132
- children: /* @__PURE__ */ jsx48(ArrowDown2, { size: 16 })
14387
+ children: /* @__PURE__ */ jsx49(ArrowDown2, { size: 16 })
14133
14388
  }
14134
14389
  ) }),
14135
- quoteSelection && /* @__PURE__ */ jsx48(
14390
+ quoteSelection && /* @__PURE__ */ jsx49(
14136
14391
  "div",
14137
14392
  {
14138
14393
  className: "pointer-events-none fixed z-50",
@@ -14141,7 +14396,7 @@ function Chat({
14141
14396
  left: `${quoteSelection.left}px`,
14142
14397
  transform: "translateX(-50%)"
14143
14398
  },
14144
- children: /* @__PURE__ */ jsxs31(
14399
+ children: /* @__PURE__ */ jsxs32(
14145
14400
  Button,
14146
14401
  {
14147
14402
  type: "button",
@@ -14153,16 +14408,16 @@ function Chat({
14153
14408
  "aria-label": t("composer.quoteSelection"),
14154
14409
  title: t("composer.quoteSelection"),
14155
14410
  children: [
14156
- /* @__PURE__ */ jsx48(Quote, { size: 14 }),
14411
+ /* @__PURE__ */ jsx49(Quote, { size: 14 }),
14157
14412
  t("composer.quoteSelection")
14158
14413
  ]
14159
14414
  }
14160
14415
  )
14161
14416
  }
14162
14417
  ),
14163
- /* @__PURE__ */ jsxs31("div", { className: "p-2 sticky bottom-0 z-10 bg-background", children: [
14164
- threadErrorMessage && /* @__PURE__ */ jsx48("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 }),
14165
- /* @__PURE__ */ jsx48(
14418
+ /* @__PURE__ */ jsxs32("div", { className: "p-2 sticky bottom-0 z-10 bg-background", children: [
14419
+ threadErrorMessage && /* @__PURE__ */ jsx49("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 }),
14420
+ /* @__PURE__ */ jsx49(
14166
14421
  "input",
14167
14422
  {
14168
14423
  ref: fileInputRef,
@@ -14173,7 +14428,7 @@ function Chat({
14173
14428
  className: "hidden"
14174
14429
  }
14175
14430
  ),
14176
- attachments.length > 0 && /* @__PURE__ */ jsx48("div", { className: "mb-3 flex flex-wrap gap-2", children: attachments.map((item) => /* @__PURE__ */ jsxs31(
14431
+ attachments.length > 0 && /* @__PURE__ */ jsx49("div", { className: "mb-3 flex flex-wrap gap-2", children: attachments.map((item) => /* @__PURE__ */ jsxs32(
14177
14432
  "div",
14178
14433
  {
14179
14434
  className: cn(
@@ -14181,16 +14436,16 @@ function Chat({
14181
14436
  item.status === "error" ? "bg-destructive/10 border border-destructive/30" : "bg-muted"
14182
14437
  ),
14183
14438
  children: [
14184
- item.status === "uploading" && /* @__PURE__ */ jsx48(
14439
+ item.status === "uploading" && /* @__PURE__ */ jsx49(
14185
14440
  Loader26,
14186
14441
  {
14187
14442
  size: 14,
14188
14443
  className: "animate-spin text-muted-foreground"
14189
14444
  }
14190
14445
  ),
14191
- item.status === "success" && /* @__PURE__ */ jsx48(FileText3, { size: 14, className: "text-muted-foreground" }),
14192
- item.status === "error" && /* @__PURE__ */ jsx48(FileText3, { size: 14, className: "text-destructive" }),
14193
- /* @__PURE__ */ jsx48(
14446
+ item.status === "success" && /* @__PURE__ */ jsx49(FileText3, { size: 14, className: "text-muted-foreground" }),
14447
+ item.status === "error" && /* @__PURE__ */ jsx49(FileText3, { size: 14, className: "text-destructive" }),
14448
+ /* @__PURE__ */ jsx49(
14194
14449
  "span",
14195
14450
  {
14196
14451
  className: cn(
@@ -14200,17 +14455,17 @@ function Chat({
14200
14455
  children: item.file.name
14201
14456
  }
14202
14457
  ),
14203
- item.status === "error" && /* @__PURE__ */ jsx48(
14458
+ item.status === "error" && /* @__PURE__ */ jsx49(
14204
14459
  "button",
14205
14460
  {
14206
14461
  type: "button",
14207
14462
  onClick: () => handleRetryUpload(item.localId),
14208
14463
  className: "ml-1 rounded-full p-0.5 text-destructive hover:bg-destructive/20",
14209
14464
  title: t("chat.retryUpload"),
14210
- children: /* @__PURE__ */ jsx48(RefreshCw2, { size: 12 })
14465
+ children: /* @__PURE__ */ jsx49(RefreshCw2, { size: 12 })
14211
14466
  }
14212
14467
  ),
14213
- /* @__PURE__ */ jsx48(
14468
+ /* @__PURE__ */ jsx49(
14214
14469
  "button",
14215
14470
  {
14216
14471
  type: "button",
@@ -14219,14 +14474,14 @@ function Chat({
14219
14474
  "ml-1 rounded-full p-0.5",
14220
14475
  item.status === "error" ? "text-destructive hover:bg-destructive/20" : "hover:bg-muted-foreground/20"
14221
14476
  ),
14222
- children: /* @__PURE__ */ jsx48(X5, { size: 12 })
14477
+ children: /* @__PURE__ */ jsx49(X5, { size: 12 })
14223
14478
  }
14224
14479
  )
14225
14480
  ]
14226
14481
  },
14227
14482
  item.localId
14228
14483
  )) }),
14229
- references.length > 0 && /* @__PURE__ */ jsx48("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx48(
14484
+ references.length > 0 && /* @__PURE__ */ jsx49("div", { className: "mb-3 flex flex-wrap gap-2", children: references.map((reference) => /* @__PURE__ */ jsx49(
14230
14485
  ReferenceChip,
14231
14486
  {
14232
14487
  reference,
@@ -14240,16 +14495,16 @@ function Chat({
14240
14495
  },
14241
14496
  getReferenceKey(reference)
14242
14497
  )) }),
14243
- detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsxs31("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
14244
- /* @__PURE__ */ jsx48("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
14245
- detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ jsxs31(
14498
+ detachedRunRuntimeCapabilityOptions.length > 0 && /* @__PURE__ */ jsxs32("div", { className: "mb-2 flex flex-wrap items-center gap-2", children: [
14499
+ /* @__PURE__ */ jsx49("span", { className: "text-xs text-muted-foreground", children: t("composer.capabilities.runOnly") }),
14500
+ detachedRunRuntimeCapabilityOptions.map((option) => /* @__PURE__ */ jsxs32(
14246
14501
  "span",
14247
14502
  {
14248
14503
  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",
14249
14504
  children: [
14250
- /* @__PURE__ */ jsx48(RuntimeCapabilityIcon, { option, variant: "chip" }),
14251
- /* @__PURE__ */ jsx48("span", { className: "max-w-40 truncate", children: option.label }),
14252
- /* @__PURE__ */ jsx48(
14505
+ /* @__PURE__ */ jsx49(RuntimeCapabilityIcon, { option, variant: "chip" }),
14506
+ /* @__PURE__ */ jsx49("span", { className: "max-w-40 truncate", children: option.label }),
14507
+ /* @__PURE__ */ jsx49(
14253
14508
  "button",
14254
14509
  {
14255
14510
  type: "button",
@@ -14257,7 +14512,7 @@ function Chat({
14257
14512
  className: "rounded-full p-0.5 hover:bg-primary/15",
14258
14513
  title: t("composer.capabilities.removeRunCapability"),
14259
14514
  "aria-label": t("composer.capabilities.removeRunCapability"),
14260
- children: /* @__PURE__ */ jsx48(X5, { size: 11 })
14515
+ children: /* @__PURE__ */ jsx49(X5, { size: 11 })
14261
14516
  }
14262
14517
  )
14263
14518
  ]
@@ -14265,7 +14520,7 @@ function Chat({
14265
14520
  `${option.type}:${option.id}`
14266
14521
  ))
14267
14522
  ] }),
14268
- /* @__PURE__ */ jsx48(
14523
+ /* @__PURE__ */ jsx49(
14269
14524
  PendingRuntimeServices,
14270
14525
  {
14271
14526
  state: stream.runtimeActivities.sandboxServices,
@@ -14274,7 +14529,7 @@ function Chat({
14274
14529
  className: hasPendingTodos || hasPendingFollowUps ? "mb-2" : void 0
14275
14530
  }
14276
14531
  ),
14277
- /* @__PURE__ */ jsx48(
14532
+ /* @__PURE__ */ jsx49(
14278
14533
  PendingTodos,
14279
14534
  {
14280
14535
  snapshot: stream.todos,
@@ -14282,7 +14537,7 @@ function Chat({
14282
14537
  className: hasPendingFollowUps ? "mb-2" : void 0
14283
14538
  }
14284
14539
  ),
14285
- /* @__PURE__ */ jsx48(
14540
+ /* @__PURE__ */ jsx49(
14286
14541
  PendingFollowUps,
14287
14542
  {
14288
14543
  items: pendingFollowUps,
@@ -14297,7 +14552,7 @@ function Chat({
14297
14552
  attachToComposer: true
14298
14553
  }
14299
14554
  ),
14300
- /* @__PURE__ */ jsx48(
14555
+ /* @__PURE__ */ jsx49(
14301
14556
  RequestUserInputPanel,
14302
14557
  {
14303
14558
  request: stream.pendingRequestUserInput,
@@ -14306,7 +14561,7 @@ function Chat({
14306
14561
  attachToComposer: true
14307
14562
  }
14308
14563
  ),
14309
- /* @__PURE__ */ jsx48(
14564
+ /* @__PURE__ */ jsx49(
14310
14565
  HITLApprovalPanel,
14311
14566
  {
14312
14567
  request: stream.pendingHITLRequest,
@@ -14315,7 +14570,7 @@ function Chat({
14315
14570
  attachToComposer: true
14316
14571
  }
14317
14572
  ),
14318
- runtimeCapabilityPalette && /* @__PURE__ */ jsx48(
14573
+ runtimeCapabilityPalette && /* @__PURE__ */ jsx49(
14319
14574
  SlashPalette,
14320
14575
  {
14321
14576
  palette: runtimeCapabilityPalette,
@@ -14329,7 +14584,7 @@ function Chat({
14329
14584
  onSelect: selectSlashPaletteOption
14330
14585
  }
14331
14586
  ),
14332
- /* @__PURE__ */ jsx48("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ jsxs31(
14587
+ /* @__PURE__ */ jsx49("form", { className: "flex items-end", onSubmit: handleSubmit, children: /* @__PURE__ */ jsxs32(
14333
14588
  "div",
14334
14589
  {
14335
14590
  "data-slot": "composer-input-shell",
@@ -14343,7 +14598,7 @@ function Chat({
14343
14598
  composerInputRoundedClass
14344
14599
  ),
14345
14600
  children: [
14346
- /* @__PURE__ */ jsx48(
14601
+ /* @__PURE__ */ jsx49(
14347
14602
  "div",
14348
14603
  {
14349
14604
  ref: composerInputRef,
@@ -14365,7 +14620,7 @@ function Chat({
14365
14620
  (missingConfig || isHistoryLoading || hasPendingInteractiveRequest) && "cursor-not-allowed opacity-50"
14366
14621
  ),
14367
14622
  children: renderedComposerParts.map(
14368
- (part, index) => part.type === "text" ? /* @__PURE__ */ jsx48(React44.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ jsxs31(
14623
+ (part, index) => part.type === "text" ? /* @__PURE__ */ jsx49(React44.Fragment, { children: part.text }, `text-${index}`) : /* @__PURE__ */ jsxs32(
14369
14624
  "span",
14370
14625
  {
14371
14626
  "data-composer-capability-key": part.key,
@@ -14374,14 +14629,14 @@ function Chat({
14374
14629
  contentEditable: false,
14375
14630
  className: "mx-0.5 inline-flex max-w-[14rem] select-none items-center gap-1 text-sm font-semibold text-primary align-baseline",
14376
14631
  children: [
14377
- /* @__PURE__ */ jsx48(
14632
+ /* @__PURE__ */ jsx49(
14378
14633
  RuntimeCapabilityIcon,
14379
14634
  {
14380
14635
  option: part.capability,
14381
14636
  variant: "chip"
14382
14637
  }
14383
14638
  ),
14384
- /* @__PURE__ */ jsx48("span", { className: "truncate", children: part.capability.label })
14639
+ /* @__PURE__ */ jsx49("span", { className: "truncate", children: part.capability.label })
14385
14640
  ]
14386
14641
  },
14387
14642
  part.key
@@ -14390,14 +14645,14 @@ function Chat({
14390
14645
  },
14391
14646
  composerDomVersion
14392
14647
  ),
14393
- /* @__PURE__ */ jsxs31(
14648
+ /* @__PURE__ */ jsxs32(
14394
14649
  "div",
14395
14650
  {
14396
14651
  "data-slot": "composer-action-bar",
14397
14652
  className: "pointer-events-none absolute inset-x-1.5 bottom-1 flex min-h-10 items-center justify-between gap-2",
14398
14653
  children: [
14399
- /* @__PURE__ */ jsxs31("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
14400
- /* @__PURE__ */ jsx48("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ jsx48(
14654
+ /* @__PURE__ */ jsxs32("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center gap-1.5", children: [
14655
+ /* @__PURE__ */ jsx49("div", { className: "pointer-events-auto flex shrink-0 items-center gap-1.5", children: /* @__PURE__ */ jsx49(
14401
14656
  ComposerMenu,
14402
14657
  {
14403
14658
  composer,
@@ -14412,20 +14667,20 @@ function Chat({
14412
14667
  disabled: missingConfig || isHistoryLoading || hasPendingInteractiveRequest
14413
14668
  }
14414
14669
  ) }),
14415
- selectedTool && /* @__PURE__ */ jsxs31("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: [
14416
- /* @__PURE__ */ jsx48("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
14417
- /* @__PURE__ */ jsx48(
14670
+ selectedTool && /* @__PURE__ */ jsxs32("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: [
14671
+ /* @__PURE__ */ jsx49("span", { className: "truncate", children: selectedTool.shortLabel ?? selectedTool.label }),
14672
+ /* @__PURE__ */ jsx49(
14418
14673
  "button",
14419
14674
  {
14420
14675
  type: "button",
14421
14676
  onClick: () => setSelectedTool(null),
14422
14677
  className: "shrink-0 rounded-full p-0.5 text-primary/70 hover:bg-primary/10 hover:text-primary",
14423
- children: /* @__PURE__ */ jsx48(X5, { size: 12 })
14678
+ children: /* @__PURE__ */ jsx49(X5, { size: 12 })
14424
14679
  }
14425
14680
  )
14426
14681
  ] })
14427
14682
  ] }),
14428
- /* @__PURE__ */ jsx48("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ jsx48(
14683
+ /* @__PURE__ */ jsx49("div", { className: "pointer-events-auto shrink-0", children: /* @__PURE__ */ jsx49(
14429
14684
  SendButton,
14430
14685
  {
14431
14686
  disabled: isSendDisabled,
@@ -14452,7 +14707,7 @@ function Chat({
14452
14707
  ]
14453
14708
  }
14454
14709
  ) }),
14455
- disclaimer?.text && /* @__PURE__ */ jsx48(
14710
+ disclaimer?.text && /* @__PURE__ */ jsx49(
14456
14711
  "p",
14457
14712
  {
14458
14713
  className: cn(
@@ -14462,12 +14717,12 @@ function Chat({
14462
14717
  children: disclaimer.text
14463
14718
  }
14464
14719
  ),
14465
- /* @__PURE__ */ jsxs31("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
14466
- /* @__PURE__ */ jsx48("span", { children: t("chat.poweredBy") }),
14467
- /* @__PURE__ */ jsx48(ContextUsageIndicator, { className: "absolute right-4" })
14720
+ /* @__PURE__ */ jsxs32("div", { className: "mt-2 flex items-center justify-center gap-2 text-xs text-muted-foreground", children: [
14721
+ /* @__PURE__ */ jsx49("span", { children: t("chat.poweredBy") }),
14722
+ /* @__PURE__ */ jsx49(ContextUsageIndicator, { className: "absolute right-4" })
14468
14723
  ] })
14469
14724
  ] }),
14470
- /* @__PURE__ */ jsx48(
14725
+ /* @__PURE__ */ jsx49(
14471
14726
  SettingsSheet,
14472
14727
  {
14473
14728
  open: petSettingsOpen,
@@ -14477,7 +14732,7 @@ function Chat({
14477
14732
  onSave: savePetLocalSettings
14478
14733
  }
14479
14734
  ),
14480
- /* @__PURE__ */ jsx48(PetBridge, { pet: effectivePet, state: petAutoState })
14735
+ /* @__PURE__ */ jsx49(PetBridge, { pet: effectivePet, state: petAutoState })
14481
14736
  ]
14482
14737
  }
14483
14738
  );
@@ -14485,9 +14740,9 @@ function Chat({
14485
14740
 
14486
14741
  // src/components/ui/separator.tsx
14487
14742
  import * as React45 from "react";
14488
- import { jsx as jsx49 } from "react/jsx-runtime";
14743
+ import { jsx as jsx50 } from "react/jsx-runtime";
14489
14744
  var Separator = React45.forwardRef(
14490
- ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsx49(
14745
+ ({ className, orientation = "horizontal", ...props }, ref) => /* @__PURE__ */ jsx50(
14491
14746
  "div",
14492
14747
  {
14493
14748
  ref,