@museagent/cli 1.0.40 → 1.0.42

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 (600) hide show
  1. package/README.md +625 -38
  2. package/bin/stt/requirements.txt +7 -19
  3. package/bin/stt/stt_server.py +18 -93
  4. package/install.cjs +156 -2
  5. package/llms.txt +34 -7
  6. package/package.json +9 -9
  7. package/web/dist/assets/AssistantsView-Ct3BBpYf.js +1 -0
  8. package/web/dist/assets/AutomationView-CO-jVhee.js +3 -0
  9. package/web/dist/assets/ChannelConfigView-Ct1W584x.js +8 -0
  10. package/web/dist/assets/ChartsView-CAc37Sam.js +1 -0
  11. package/web/dist/assets/ConnectorsView-DP4bbh58.js +1 -0
  12. package/web/dist/assets/FileTreeView-DwsYfssO.js +1 -0
  13. package/web/dist/assets/HookConfigView-uFsqieii.js +2 -0
  14. package/web/dist/assets/InputArea-BY8quOiH.js +14 -0
  15. package/web/dist/assets/MemoryView-Bgd_lcTf.js +1 -0
  16. package/web/dist/assets/MessageBubble-CCTRbIMZ.css +1 -0
  17. package/web/dist/assets/MessageBubble-CVGXupVH.js +453 -0
  18. package/web/dist/assets/ModelsView-B271UV9L.js +1 -0
  19. package/web/dist/assets/PluginsView-Dz4fqQR1.js +2 -0
  20. package/web/dist/assets/ProjectsView-DF-YCV8y.js +1 -0
  21. package/web/dist/assets/SessionGrid-BIREstN2.js +4 -0
  22. package/web/dist/assets/SessionGrid-Bk5CAXEn.css +1 -0
  23. package/web/dist/assets/SettingsModal-ZJeoZcCd.js +4 -0
  24. package/web/dist/assets/SkillsView-CH2ghYL2.js +1 -0
  25. package/web/dist/assets/TemplatesTab-BGe7_67s.js +1 -0
  26. package/web/dist/assets/ThreadsView-XditIHZ4.js +2 -0
  27. package/web/dist/assets/ToolsView-BBzsFdVZ.js +1 -0
  28. package/web/dist/assets/abnfDiagram-WEYOIA3C-DGUPHfRO.js +1 -0
  29. package/web/dist/assets/agentIconSet-B5GUQwel.js +1 -0
  30. package/web/dist/assets/api-plEYhRn0.js +1 -0
  31. package/web/dist/assets/arc-Y1ARJVZ4.js +1 -0
  32. package/web/dist/assets/architecture-WOLXFQ4H-BUERx_-B.js +1 -0
  33. package/web/dist/assets/architectureDiagram-ZHVYKT53-BPsQL7O5.js +36 -0
  34. package/web/dist/assets/array-BifhSqXX.js +1 -0
  35. package/web/dist/assets/blockDiagram-RJAE7QA3-pB7EXp6p.js +140 -0
  36. package/web/dist/assets/c4Diagram-XDPPPE54-BnPeCq_L.js +38 -0
  37. package/web/dist/assets/channel-CSrLW66f.js +1 -0
  38. package/web/dist/assets/channelMeta-BGQXQxgj.js +1 -0
  39. package/web/dist/assets/chunk-2E7WHVMD-xX282MrC.js +88 -0
  40. package/web/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  41. package/web/dist/assets/chunk-4EMNKR2T-BAQDLVqt.js +1 -0
  42. package/web/dist/assets/chunk-55XCU76K-BwAE3Eqq.js +1 -0
  43. package/web/dist/assets/{chunk-5VM5RSS4-CYl9mwa-.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
  44. package/web/dist/assets/chunk-7S6XSTFO-DwwaClMo.js +2 -0
  45. package/web/dist/assets/chunk-AQDTSKZB-DHG5Km_p.js +72 -0
  46. package/web/dist/assets/chunk-DSNLSHJZ-a6-B52h-.js +129 -0
  47. package/web/dist/assets/chunk-DUW6YSOI-Dgx8z5s3.js +1 -0
  48. package/web/dist/assets/chunk-HAGFOTED-DZMcAj3o.js +62 -0
  49. package/web/dist/assets/chunk-HNE4Q36P-gl_4xI6B.js +1 -0
  50. package/web/dist/assets/chunk-J5ZVWO5B-oDCd-gWO.js +1 -0
  51. package/web/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  52. package/web/dist/assets/chunk-NGNAAXSQ-Bw6tHVuc.js +136 -0
  53. package/web/dist/assets/chunk-NQOKRVIF-B8Q-YmhL.js +213 -0
  54. package/web/dist/assets/chunk-UHW7PFBP-isP5lYMB.js +1 -0
  55. package/web/dist/assets/chunk-VQ5W62QI-Bn68syIc.js +1 -0
  56. package/web/dist/assets/chunk-WQQL4CDK-CdZpmEYA.js +10 -0
  57. package/web/dist/assets/chunk-XXDRQBXY-CnbRkih_.js +1 -0
  58. package/web/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  59. package/web/dist/assets/chunk-YZO67HFG-DX9GhJkR.js +1 -0
  60. package/web/dist/assets/chunk-ZAUX2LTX-Ki22UlYp.js +1 -0
  61. package/web/dist/assets/chunk-ZCHMQSOR-BVj0Zx6L.js +2 -0
  62. package/web/dist/assets/classDiagram-v2-4MYWR3UA-C7PV1veb.js +217 -0
  63. package/web/dist/assets/common-Bbatsa0-.js +192 -0
  64. package/web/dist/assets/cose-bilkent-JH36ORCC-DHFtpmij.js +1 -0
  65. package/web/dist/assets/cynefin-EF2NZ3EQ-1rI2T0cc.js +1 -0
  66. package/web/dist/assets/cynefinDiagram-WF24UDRP-C8O_v8xU.js +62 -0
  67. package/web/dist/assets/cytoscape.esm-BY277UBX.js +321 -0
  68. package/web/dist/assets/dagre-NK4GIZVX-BWGoHIUd.js +4 -0
  69. package/web/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  70. package/web/dist/assets/diagram-CBK3MWTC-kf9v35RN.js +24 -0
  71. package/web/dist/assets/diagram-I5XIIV2D-Ro-ig56_.js +24 -0
  72. package/web/dist/assets/diagram-ODIL2UCW-CtGga01G.js +30 -0
  73. package/web/dist/assets/diagram-PFBEJUXE-C14lcR-6.js +3 -0
  74. package/web/dist/assets/diagram-RJA3I4VV-BBbqaSKU.js +41 -0
  75. package/web/dist/assets/diagram-TYUNFSNR-BynvjQsr.js +200 -0
  76. package/web/dist/assets/dist-CumnGVmJ.js +1 -0
  77. package/web/dist/assets/ebnfDiagram-V4P3TTPT-BdqUCZnk.js +1 -0
  78. package/web/dist/assets/elk-QONTBCTQ-CYCP_9Jy.js +27 -0
  79. package/web/dist/assets/erDiagram-KYQIGQAA-C3L55l_F.js +99 -0
  80. package/web/dist/assets/eventmodeling-K75KTNOO-CTQdA_1v.js +1 -0
  81. package/web/dist/assets/flowDiagram-IUGLLWBU-COLKOzBg.js +1 -0
  82. package/web/dist/assets/ganttDiagram-R7GPNTJY-Be4Qk8Hx.js +292 -0
  83. package/web/dist/assets/gitGraph-VSP46ZUC-B59HXvj1.js +1 -0
  84. package/web/dist/assets/gitGraphDiagram-PDYL7XHY-C2A0VA6q.js +106 -0
  85. package/web/dist/assets/graphlib-DS17s2tU.js +1 -0
  86. package/web/dist/assets/icons-CYDRRPKW.js +1 -0
  87. package/web/dist/assets/index-CTbLW314.js +133 -0
  88. package/web/dist/assets/index-DdzVrZye.css +1 -0
  89. package/web/dist/assets/info-OHQRW6UA-DWlkKvmi.js +1 -0
  90. package/web/dist/assets/infoDiagram-MVDRKAX5-B8e6dTjN.js +2 -0
  91. package/web/dist/assets/init-C-OQMol4.js +1 -0
  92. package/web/dist/assets/ishikawaDiagram-HPEHV2GE-udXPYi9H.js +70 -0
  93. package/web/dist/assets/journeyDiagram-BOSHW7O7-DTyDkf5d.js +139 -0
  94. package/web/dist/assets/kanban-definition-FNSA4HC5-BXgV20qe.js +89 -0
  95. package/web/dist/assets/katex-B940_AAO.js +257 -0
  96. package/web/dist/assets/line-DVabuQAu.js +1 -0
  97. package/web/dist/assets/linear-gLkGxN9m.js +1 -0
  98. package/web/dist/assets/markdown-N5__3T-w.js +14 -0
  99. package/web/dist/assets/mermaid-parser.core-BrXnuEs7.js +7 -0
  100. package/web/dist/assets/mermaid.core-BGbz3k1k.js +44 -0
  101. package/web/dist/assets/mindmap-definition-6OY57UG3-DbtP-bmk.js +98 -0
  102. package/web/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  103. package/web/dist/assets/packet-JDAUHWVQ-iW8w3JF5.js +1 -0
  104. package/web/dist/assets/panels-CIPgN61N.js +1 -0
  105. package/web/dist/assets/path-fybaL0A-.js +1 -0
  106. package/web/dist/assets/pegDiagram-ECIUJNBX-rBWJbaq4.js +1 -0
  107. package/web/dist/assets/pie-XZMESJXO-KHXEq-Yx.js +1 -0
  108. package/web/dist/assets/pieDiagram-GNMPY74T-DsW7yHm0.js +39 -0
  109. package/web/dist/assets/preload-helper-BLdHbfdN.js +1 -0
  110. package/web/dist/assets/profileChange-xrd7jkii.js +1 -0
  111. package/web/dist/assets/quadrantDiagram-D57K4MC3-DF_pwNhM.js +7 -0
  112. package/web/dist/assets/radar-ABXABTNO-BkAUJ_Zd.js +1 -0
  113. package/web/dist/assets/railroad-I3PHUGI6-BdnWRdGt.js +1 -0
  114. package/web/dist/assets/railroad-abnf-LNEFI6M7-C8K36-8b.js +1 -0
  115. package/web/dist/assets/railroad-ebnf-DWYD2UWJ-BlS25T3f.js +1 -0
  116. package/web/dist/assets/railroad-peg-JR7BVNR7-CBKGDi75.js +1 -0
  117. package/web/dist/assets/railroadDiagram-Y72NRBL7-DmrlMIvv.js +1 -0
  118. package/web/dist/assets/react-vendor-CB4cLN-6.js +19 -0
  119. package/web/dist/assets/requirementDiagram-EQYSW5RA-cvUq9H3I.js +84 -0
  120. package/web/dist/assets/rolldown-runtime-COiEfhsA.js +1 -0
  121. package/web/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  122. package/web/dist/assets/sankeyDiagram-SY24JHO5-BdxXAbER.js +40 -0
  123. package/web/dist/assets/sequenceDiagram-BLEHNHQU-Druumi0k.js +169 -0
  124. package/web/dist/assets/settingsStore-Xqln0d91.js +1 -0
  125. package/web/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  126. package/web/dist/assets/src-49LUQhkG.js +1 -0
  127. package/web/dist/assets/src-BWF7jMDv.js +1 -0
  128. package/web/dist/assets/state-CSZ50keL.js +1 -0
  129. package/web/dist/assets/stateDiagram-v2-A6IESKWZ-Jgh6qlrr.js +291 -0
  130. package/web/dist/assets/sttLanguages-CSNMgUTz.js +2 -0
  131. package/web/dist/assets/swimlanes-B3ENRKFQ-4xKumvXQ.js +1 -0
  132. package/web/dist/assets/swimlanesDiagram-AYQRV4AK-bHcLKL3d.js +8 -0
  133. package/web/dist/assets/timeline-definition-JXYKGLGB-BYKhga9x.js +120 -0
  134. package/web/dist/assets/treeView-D4JQ5SDB-6-eTVUuH.js +1 -0
  135. package/web/dist/assets/treemap-SAJKECNS-Dxl8yCLE.js +1 -0
  136. package/web/dist/assets/ttsSettings-BwXYpDnk.js +2 -0
  137. package/web/dist/assets/types-JssxRFJn.js +1 -0
  138. package/web/dist/assets/useConfirm-Da8iQ_DZ.js +1 -0
  139. package/web/dist/assets/useTranslation-B-mfApCn.js +1 -0
  140. package/web/dist/assets/usecaseDiagram-WPOLBNNX-BaQ8nAv9.js +328 -0
  141. package/web/dist/assets/vennDiagram-Q3Y3IDCW-DkPvfmfT.js +34 -0
  142. package/web/dist/assets/wardley-7MLQ67FV-CZtI22aa.js +1 -0
  143. package/web/dist/assets/wardleyDiagram-IVAIDKWA-Dgi2OWQ4.js +78 -0
  144. package/web/dist/assets/websocket-BnDwh01e.js +1 -0
  145. package/web/dist/assets/whatsNewStore-LpdLRLGl.js +1 -0
  146. package/web/dist/assets/workspaceSemantics-RaIRer76.js +3 -0
  147. package/web/dist/assets/xychartDiagram-4URNHDU4-Ch96dep-.js +7 -0
  148. package/web/dist/favicon.svg +18 -39
  149. package/web/dist/icons/icon-1024.png +0 -0
  150. package/web/dist/icons/icon-180.png +0 -0
  151. package/web/dist/icons/icon-192.png +0 -0
  152. package/web/dist/icons/icon-512.png +0 -0
  153. package/web/dist/icons/icon-maskable-512.png +0 -0
  154. package/web/dist/index.html +46 -12
  155. package/web/dist/logo.svg +25 -39
  156. package/web/dist/manifest.webmanifest +2 -2
  157. package/web/dist/vendor/MANIFEST.json +24 -0
  158. package/web/dist/vendor/d3.min.js +2 -0
  159. package/web/dist/vendor/echarts.min.js +45 -0
  160. package/web/dist/assets/AssistantsView-BiUiWjhF.js +0 -1
  161. package/web/dist/assets/AutomationView-Dcf_yNaI.js +0 -1
  162. package/web/dist/assets/ChannelConfigView-BLnxsMGm.js +0 -8
  163. package/web/dist/assets/ConnectorsView-CX3E6X6c.js +0 -1
  164. package/web/dist/assets/DesignSystemView--x-P-lpD.js +0 -1
  165. package/web/dist/assets/Drawer-CjAgqH3B.js +0 -1
  166. package/web/dist/assets/FileTreeView-Chb_fzTK.js +0 -11
  167. package/web/dist/assets/HookConfigView-EafYlWdN.js +0 -1
  168. package/web/dist/assets/InputArea-BbHslX7b.js +0 -50
  169. package/web/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  170. package/web/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  171. package/web/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  172. package/web/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  173. package/web/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  174. package/web/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  175. package/web/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  176. package/web/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  177. package/web/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  178. package/web/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  179. package/web/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  180. package/web/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  181. package/web/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  182. package/web/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  183. package/web/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  184. package/web/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  185. package/web/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  186. package/web/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  187. package/web/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  188. package/web/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  189. package/web/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  190. package/web/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  191. package/web/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  192. package/web/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  193. package/web/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  194. package/web/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  195. package/web/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  196. package/web/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  197. package/web/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  198. package/web/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  199. package/web/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  200. package/web/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  201. package/web/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  202. package/web/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  203. package/web/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  204. package/web/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  205. package/web/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  206. package/web/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  207. package/web/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  208. package/web/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  209. package/web/dist/assets/ModelsView-CGN5Nljr.js +0 -1
  210. package/web/dist/assets/PluginsView-CDiJgvI8.js +0 -2
  211. package/web/dist/assets/ProjectsView-C5Usmwqy.js +0 -1
  212. package/web/dist/assets/SessionGrid-BGpz0-op.css +0 -1
  213. package/web/dist/assets/SessionGrid-Drxg0r_u.js +0 -4
  214. package/web/dist/assets/SettingsModal-Cmts6aBG.js +0 -10
  215. package/web/dist/assets/Skeleton-Dsk6B0U3.js +0 -1
  216. package/web/dist/assets/SkillsView-TEDR_3XX.js +0 -1
  217. package/web/dist/assets/TemplatesTab-DtN5Kdgh.js +0 -1
  218. package/web/dist/assets/ToolsView-VukZnIt1.js +0 -1
  219. package/web/dist/assets/VizCardsSkeleton-C_GaEfXd.js +0 -1
  220. package/web/dist/assets/abap-BdImnpbu.js +0 -1
  221. package/web/dist/assets/abnfDiagram-YUKMZFIV-BIFw6B_N.js +0 -1
  222. package/web/dist/assets/actionscript-3-B3316cI-.js +0 -1
  223. package/web/dist/assets/ada-bCR0ucgS.js +0 -1
  224. package/web/dist/assets/ahk-CsyLZFj1.js +0 -1
  225. package/web/dist/assets/ahk2-8Zs4aa1G.js +0 -1
  226. package/web/dist/assets/andromeeda-C4gqWexZ.js +0 -1
  227. package/web/dist/assets/angular-html-DA-rfuFy.js +0 -1
  228. package/web/dist/assets/angular-ts-BrjP3tb8.js +0 -1
  229. package/web/dist/assets/apache-Pmp26Uib.js +0 -1
  230. package/web/dist/assets/apex-DhZFqWV2.js +0 -1
  231. package/web/dist/assets/apl-CORt7UWP.js +0 -1
  232. package/web/dist/assets/applescript-Co6uUVPk.js +0 -1
  233. package/web/dist/assets/ara-BRHolxvo.js +0 -1
  234. package/web/dist/assets/arc-BZQ951h9.js +0 -1
  235. package/web/dist/assets/architectureDiagram-47P4ROYG-BP5qiXzf.js +0 -36
  236. package/web/dist/assets/asciidoc-CSVQ5wI8.js +0 -1
  237. package/web/dist/assets/asm-D_Q5rh1f.js +0 -1
  238. package/web/dist/assets/astro-HNnZUWAn.js +0 -1
  239. package/web/dist/assets/aurora-x-D-2ljcwZ.js +0 -1
  240. package/web/dist/assets/awk-DMzUqQB5.js +0 -1
  241. package/web/dist/assets/ayu-dark-DYE7WIF3.js +0 -1
  242. package/web/dist/assets/ayu-light-BA47KaF1.js +0 -1
  243. package/web/dist/assets/ayu-mirage-32ctXXKs.js +0 -1
  244. package/web/dist/assets/ballerina-BFfxhgS-.js +0 -1
  245. package/web/dist/assets/bat-CickPsom.js +0 -1
  246. package/web/dist/assets/beancount-k_qm7-4y.js +0 -1
  247. package/web/dist/assets/berry-uYugtg8r.js +0 -1
  248. package/web/dist/assets/bibtex-CHM0blh-.js +0 -1
  249. package/web/dist/assets/bicep-Bmn6On1c.js +0 -1
  250. package/web/dist/assets/bird2-Bx8U0n9b.js +0 -1
  251. package/web/dist/assets/blade-2xfisSek.js +0 -1
  252. package/web/dist/assets/blockDiagram-E7TT5TSB-DtRpcE7F.js +0 -140
  253. package/web/dist/assets/bsl-DlhNcFeZ.js +0 -1
  254. package/web/dist/assets/c-BIGW1oBm.js +0 -1
  255. package/web/dist/assets/c3-Dp5svz6Z.js +0 -1
  256. package/web/dist/assets/c4Diagram-CRA5TL53-Gdzn8UBh.js +0 -38
  257. package/web/dist/assets/cadence-Bv_4Rxtq.js +0 -1
  258. package/web/dist/assets/cairo-KRGpt6FW.js +0 -1
  259. package/web/dist/assets/catppuccin-frappe-CZL1YF0i.js +0 -1
  260. package/web/dist/assets/catppuccin-latte-DH-8KZSZ.js +0 -1
  261. package/web/dist/assets/catppuccin-macchiato-B7yYVSCf.js +0 -1
  262. package/web/dist/assets/catppuccin-mocha-Ct7hS0mc.js +0 -1
  263. package/web/dist/assets/channel-BND6_KSH.js +0 -1
  264. package/web/dist/assets/chapel-DTp_pixX.js +0 -1
  265. package/web/dist/assets/chunk-2Q5K7J3B-3U6HMlsm.js +0 -1
  266. package/web/dist/assets/chunk-7TKQ45FW-Dn6ktcY5.js +0 -1
  267. package/web/dist/assets/chunk-AW2ZBBNX-De0QX6p1.js +0 -88
  268. package/web/dist/assets/chunk-FVRAUYC3-CpXDfvz4.js +0 -2
  269. package/web/dist/assets/chunk-HTAEGDNF-D1KDvcDd.js +0 -1
  270. package/web/dist/assets/chunk-JWPE2WC7-umm4A-fq.js +0 -1
  271. package/web/dist/assets/chunk-KQW6MTUR-JYH94hpE.js +0 -1
  272. package/web/dist/assets/chunk-XXDRQBXY-CSlCFByc.js +0 -1
  273. package/web/dist/assets/clarity-Dn5IMItf.js +0 -1
  274. package/web/dist/assets/classDiagram-v2-K4WV4PDN-DnFwS0qN.js +0 -217
  275. package/web/dist/assets/clojure-P80f7IUj.js +0 -1
  276. package/web/dist/assets/cmake-D1j8_8rp.js +0 -1
  277. package/web/dist/assets/cobol-nBiQ_Alo.js +0 -1
  278. package/web/dist/assets/codeowners-Bp6g37R7.js +0 -1
  279. package/web/dist/assets/codeql-DsOJ9woJ.js +0 -1
  280. package/web/dist/assets/coffee-Ch7k5sss.js +0 -1
  281. package/web/dist/assets/common-lisp-Cg-RD9OK.js +0 -1
  282. package/web/dist/assets/coq-C7JzOVbR.js +0 -1
  283. package/web/dist/assets/cose-bilkent-JH36ORCC-BxUTUyep.js +0 -1
  284. package/web/dist/assets/cpp-BMRokrvK.js +0 -1
  285. package/web/dist/assets/crystal-DGywbUpC.js +0 -1
  286. package/web/dist/assets/csharp-DSvCPggb.js +0 -1
  287. package/web/dist/assets/css-CLj8gQPS.js +0 -1
  288. package/web/dist/assets/csv-fuZLfV_i.js +0 -1
  289. package/web/dist/assets/cue-D82EKSYY.js +0 -1
  290. package/web/dist/assets/cynefin-EF2NZ3EQ-CiMvulJr.js +0 -141
  291. package/web/dist/assets/cynefinDiagram-3GCD6N5R-DuXFORdW.js +0 -62
  292. package/web/dist/assets/cypher-COkxafJQ.js +0 -1
  293. package/web/dist/assets/cytoscape.esm-Ix0LnXOy.js +0 -331
  294. package/web/dist/assets/d-85-TOEBH.js +0 -1
  295. package/web/dist/assets/dagre-W4DXFKR2-DzMZHXci.js +0 -4
  296. package/web/dist/assets/dark-plus-C3mMm8J8.js +0 -1
  297. package/web/dist/assets/dart-bE4Kk8sk.js +0 -1
  298. package/web/dist/assets/dax-CEL-wOlO.js +0 -1
  299. package/web/dist/assets/defaultLocale-DX6XiGOO.js +0 -1
  300. package/web/dist/assets/desktop-BmXAJ9_W.js +0 -1
  301. package/web/dist/assets/diagram-2UJZ2QOL-B6tO5G1v.js +0 -200
  302. package/web/dist/assets/diagram-OVF4WLC6-DRZt8tGc.js +0 -24
  303. package/web/dist/assets/diagram-PFPMY2P6-DGh6IecR.js +0 -30
  304. package/web/dist/assets/diagram-UMYRVEAY-BLbnt0yT.js +0 -24
  305. package/web/dist/assets/diagram-YEKJPTXX-C-S5DVhj.js +0 -41
  306. package/web/dist/assets/diagram-ZIFT7M5P-JrGHTWbo.js +0 -3
  307. package/web/dist/assets/diff-D97Zzqfu.js +0 -1
  308. package/web/dist/assets/docker-BcOcwvcX.js +0 -1
  309. package/web/dist/assets/dotenv-Da5cRb03.js +0 -1
  310. package/web/dist/assets/dracula-BzJJZx-M.js +0 -1
  311. package/web/dist/assets/dracula-soft-BXkSAIEj.js +0 -1
  312. package/web/dist/assets/dream-maker-BtqSS_iP.js +0 -1
  313. package/web/dist/assets/ebnfDiagram-VR2GEFS7-DPXA-YOi.js +0 -1
  314. package/web/dist/assets/edge-FbVlp4U3.js +0 -1
  315. package/web/dist/assets/elixir-CkH2-t6x.js +0 -1
  316. package/web/dist/assets/elk-IJKZMXRS-CINeWt2W.js +0 -27
  317. package/web/dist/assets/elm-DbKCFpqz.js +0 -1
  318. package/web/dist/assets/emacs-lisp-C_m_b--Z.js +0 -1
  319. package/web/dist/assets/erDiagram-O2IAPWRE-PPaHmqA1.js +0 -99
  320. package/web/dist/assets/erb-DXfck5VN.js +0 -1
  321. package/web/dist/assets/erlang-DsQrWhSR.js +0 -1
  322. package/web/dist/assets/everforest-dark-BgDCqdQA.js +0 -1
  323. package/web/dist/assets/everforest-light-C8M2exoo.js +0 -1
  324. package/web/dist/assets/fennel-BYunw83y.js +0 -1
  325. package/web/dist/assets/fish-BvzEVeQv.js +0 -1
  326. package/web/dist/assets/flowDiagram-OXPTDLAJ-t-u0QXEA.js +0 -213
  327. package/web/dist/assets/fluent-C4IJs8-o.js +0 -1
  328. package/web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
  329. package/web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -1
  330. package/web/dist/assets/fsharp-CXgrBDvD.js +0 -1
  331. package/web/dist/assets/ganttDiagram-R7TSEDQI-Bw49ZD_b.js +0 -292
  332. package/web/dist/assets/gdresource-TyuKm33G.js +0 -1
  333. package/web/dist/assets/gdscript-DqcFQ5yU.js +0 -1
  334. package/web/dist/assets/gdshader-DkwncUOv.js +0 -1
  335. package/web/dist/assets/genie-D0YGMca9.js +0 -1
  336. package/web/dist/assets/gherkin-DyxjwDmM.js +0 -1
  337. package/web/dist/assets/git-commit-F4YmCXRG.js +0 -1
  338. package/web/dist/assets/git-rebase-r7XF79zn.js +0 -1
  339. package/web/dist/assets/gitGraphDiagram-XJZIOB7I-BAfOqeeg.js +0 -106
  340. package/web/dist/assets/github-dark-DHJKELXO.js +0 -1
  341. package/web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -1
  342. package/web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
  343. package/web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
  344. package/web/dist/assets/github-light-DAi9KRSo.js +0 -1
  345. package/web/dist/assets/github-light-default-D7oLnXFd.js +0 -1
  346. package/web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
  347. package/web/dist/assets/gleam-BspZqrRM.js +0 -1
  348. package/web/dist/assets/glimmer-js-ByusRIyA.js +0 -1
  349. package/web/dist/assets/glimmer-ts-BfAWNZQY.js +0 -1
  350. package/web/dist/assets/glsl-DplSGwfg.js +0 -1
  351. package/web/dist/assets/gn-n2N0HUVH.js +0 -1
  352. package/web/dist/assets/gnuplot-DdkO51Og.js +0 -1
  353. package/web/dist/assets/go-C27-OAKa.js +0 -1
  354. package/web/dist/assets/graph-Bn3Yngep.js +0 -1
  355. package/web/dist/assets/graphql-ChdNCCLP.js +0 -1
  356. package/web/dist/assets/groovy-gcz8RCvz.js +0 -1
  357. package/web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
  358. package/web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
  359. package/web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
  360. package/web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
  361. package/web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
  362. package/web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
  363. package/web/dist/assets/hack-BWmVpMyf.js +0 -1
  364. package/web/dist/assets/haml-D5jkg6IW.js +0 -1
  365. package/web/dist/assets/handlebars-BpdQsYii.js +0 -1
  366. package/web/dist/assets/haskell-Df6bDoY_.js +0 -1
  367. package/web/dist/assets/haxe-CfZj7gIn.js +0 -1
  368. package/web/dist/assets/hcl-BWvSN4gD.js +0 -1
  369. package/web/dist/assets/hjson-D5-asLiD.js +0 -1
  370. package/web/dist/assets/hlsl-D3lLCCz7.js +0 -1
  371. package/web/dist/assets/horizon-BUw7H-hv.js +0 -1
  372. package/web/dist/assets/horizon-bright-CUuTKBJd.js +0 -1
  373. package/web/dist/assets/houston-DnULxvSX.js +0 -1
  374. package/web/dist/assets/html-derivative-DlHx6ybY.js +0 -1
  375. package/web/dist/assets/html-pp8916En.js +0 -1
  376. package/web/dist/assets/http-jrhK8wxY.js +0 -1
  377. package/web/dist/assets/hurl-irOxFIW8.js +0 -1
  378. package/web/dist/assets/hxml-2-FPmUDs.js +0 -1
  379. package/web/dist/assets/hy-DFXneXwc.js +0 -1
  380. package/web/dist/assets/icons-Bm_ZzSAy.js +0 -964
  381. package/web/dist/assets/imba-DGztddWO.js +0 -1
  382. package/web/dist/assets/index-CeeLdENM.js +0 -677
  383. package/web/dist/assets/index-Ceez9lYk.css +0 -1
  384. package/web/dist/assets/infoDiagram-5W2HQ5XZ-Bv4RBxYW.js +0 -2
  385. package/web/dist/assets/ini-BEwlwnbL.js +0 -1
  386. package/web/dist/assets/init-Gi6I4Gst.js +0 -1
  387. package/web/dist/assets/ishikawaDiagram-K3B6WC7H-DEpj0bRp.js +0 -70
  388. package/web/dist/assets/java-CylS5w8V.js +0 -1
  389. package/web/dist/assets/javascript-wDzz0qaB.js +0 -1
  390. package/web/dist/assets/jinja-f2NsQr07.js +0 -1
  391. package/web/dist/assets/jison-wvAkD_A8.js +0 -1
  392. package/web/dist/assets/journeyDiagram-COXZFDF6-MJu84Iiz.js +0 -139
  393. package/web/dist/assets/json-Cp-IABpG.js +0 -1
  394. package/web/dist/assets/json5-C9tS-k6U.js +0 -1
  395. package/web/dist/assets/jsonc-Des-eS-w.js +0 -1
  396. package/web/dist/assets/jsonl-DcaNXYhu.js +0 -1
  397. package/web/dist/assets/jsonnet-DFQXde-d.js +0 -1
  398. package/web/dist/assets/jssm-C2t-YnRu.js +0 -1
  399. package/web/dist/assets/jsx-g9-lgVsj.js +0 -1
  400. package/web/dist/assets/julia-5Bft2YPA.js +0 -1
  401. package/web/dist/assets/just-Cwhn7H3k.js +0 -1
  402. package/web/dist/assets/kanagawa-dragon-BuwD2xS4.js +0 -1
  403. package/web/dist/assets/kanagawa-lotus-C3DzagqV.js +0 -1
  404. package/web/dist/assets/kanagawa-wave-DFGoQZhC.js +0 -1
  405. package/web/dist/assets/kanban-definition-P3RFRI5V-mlYSRALK.js +0 -89
  406. package/web/dist/assets/kdl-DV7GczEv.js +0 -1
  407. package/web/dist/assets/kotlin-BdnUsdx6.js +0 -1
  408. package/web/dist/assets/kusto-wEQ09or8.js +0 -1
  409. package/web/dist/assets/laserwave-DUszq2jm.js +0 -1
  410. package/web/dist/assets/latex-D5pSuvFb.js +0 -1
  411. package/web/dist/assets/lean-BZvkOJ9d.js +0 -1
  412. package/web/dist/assets/less-B1dDrJ26.js +0 -1
  413. package/web/dist/assets/light-plus-B7mTdjB0.js +0 -1
  414. package/web/dist/assets/linear-5j9gt8MV.js +0 -1
  415. package/web/dist/assets/liquid-C0sCDyMI.js +0 -1
  416. package/web/dist/assets/llvm-BZoOZj88.js +0 -1
  417. package/web/dist/assets/log-2UxHyX5q.js +0 -1
  418. package/web/dist/assets/logo-BtOb2qkB.js +0 -1
  419. package/web/dist/assets/lua-BaeVxFsk.js +0 -1
  420. package/web/dist/assets/luau-BnpPk5vE.js +0 -1
  421. package/web/dist/assets/make-CHLpvVh8.js +0 -1
  422. package/web/dist/assets/markdown-BWXjRrSw.js +0 -30
  423. package/web/dist/assets/markdown-Cvjx9yec.js +0 -1
  424. package/web/dist/assets/marko-DjSrsDqO.js +0 -1
  425. package/web/dist/assets/material-theme-D5KoaKCx.js +0 -1
  426. package/web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -1
  427. package/web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -1
  428. package/web/dist/assets/material-theme-ocean-CyktbL80.js +0 -1
  429. package/web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
  430. package/web/dist/assets/matlab-D7o27uSR.js +0 -1
  431. package/web/dist/assets/mdc-D1_yUvq7.js +0 -1
  432. package/web/dist/assets/mdx-Cmh6b_Ma.js +0 -1
  433. package/web/dist/assets/mermaid-CQcHuHx7.js +0 -1
  434. package/web/dist/assets/mermaid.core-DLb6eAON.js +0 -314
  435. package/web/dist/assets/min-dark-CafNBF8u.js +0 -1
  436. package/web/dist/assets/min-light-CTRr51gU.js +0 -1
  437. package/web/dist/assets/mindmap-definition-LZFPQGKD-C9v_57Ex.js +0 -96
  438. package/web/dist/assets/mipsasm-CKIfxQSi.js +0 -1
  439. package/web/dist/assets/mojo-DJz3ZmWd.js +0 -1
  440. package/web/dist/assets/monokai-BRVnQi9A.js +0 -1
  441. package/web/dist/assets/moonbit-CHtswR0a.js +0 -1
  442. package/web/dist/assets/move-el3G9tDJ.js +0 -1
  443. package/web/dist/assets/narrat-DRg8JJMk.js +0 -1
  444. package/web/dist/assets/nextflow-C-mBbutL.js +0 -1
  445. package/web/dist/assets/nextflow-groovy-vE_lwT2v.js +0 -1
  446. package/web/dist/assets/nginx-BpAMiNFr.js +0 -1
  447. package/web/dist/assets/night-owl-C39BiMTA.js +0 -1
  448. package/web/dist/assets/night-owl-light-CMTm3GFP.js +0 -1
  449. package/web/dist/assets/nim-BIad80T-.js +0 -1
  450. package/web/dist/assets/nix-CwoSXNpI.js +0 -1
  451. package/web/dist/assets/nord-Ddv68eIx.js +0 -1
  452. package/web/dist/assets/nsis-BlV79W_Q.js +0 -1
  453. package/web/dist/assets/nushell-D3jzshHO.js +0 -1
  454. package/web/dist/assets/objective-c-DXmwc3jG.js +0 -1
  455. package/web/dist/assets/objective-cpp-CLxacb5B.js +0 -1
  456. package/web/dist/assets/ocaml-C0hk2d4L.js +0 -1
  457. package/web/dist/assets/odin-BBf5iR-q.js +0 -1
  458. package/web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -1
  459. package/web/dist/assets/one-light-C3Wv6jpd.js +0 -1
  460. package/web/dist/assets/openscad-C4EeE6gA.js +0 -1
  461. package/web/dist/assets/ordinal-Cboi1Yqb.js +0 -1
  462. package/web/dist/assets/org-DM6o9KBp.js +0 -1
  463. package/web/dist/assets/panels-BQOvnbWH.js +0 -1
  464. package/web/dist/assets/pascal-D93ZcfNL.js +0 -1
  465. package/web/dist/assets/pegDiagram-BGZESJAR-KQP26s3-.js +0 -1
  466. package/web/dist/assets/perl-B9cMNwum.js +0 -1
  467. package/web/dist/assets/php-Csjmro_R.js +0 -1
  468. package/web/dist/assets/pieDiagram-CAPJLFHJ-DN3RQ_ih.js +0 -39
  469. package/web/dist/assets/pkl-u5AG7uiY.js +0 -1
  470. package/web/dist/assets/plastic-3e1v2bzS.js +0 -1
  471. package/web/dist/assets/plsql-ChMvpjG-.js +0 -1
  472. package/web/dist/assets/po-BTJTHyun.js +0 -1
  473. package/web/dist/assets/poimandres-CS3Unz2-.js +0 -1
  474. package/web/dist/assets/polar-C0HS_06l.js +0 -1
  475. package/web/dist/assets/postcss-CXtECtnM.js +0 -1
  476. package/web/dist/assets/powerquery-CEu0bR-o.js +0 -1
  477. package/web/dist/assets/powershell-BmBUJMz7.js +0 -1
  478. package/web/dist/assets/prisma-Vru482bI.js +0 -1
  479. package/web/dist/assets/profileChange-B7TaQ18u.js +0 -1
  480. package/web/dist/assets/prolog-CbFg5uaA.js +0 -1
  481. package/web/dist/assets/proto-C7zT0LnQ.js +0 -1
  482. package/web/dist/assets/pug-DKIMFp6K.js +0 -1
  483. package/web/dist/assets/puppet-BMWR74SV.js +0 -1
  484. package/web/dist/assets/purescript-CklMAg4u.js +0 -1
  485. package/web/dist/assets/python-B6aJPvgy.js +0 -1
  486. package/web/dist/assets/qml-3beO22l8.js +0 -1
  487. package/web/dist/assets/qmldir-C8lEn-DE.js +0 -1
  488. package/web/dist/assets/qss-IeuSbFQv.js +0 -1
  489. package/web/dist/assets/quadrantDiagram-GDMTTRAM-BpL_ZL76.js +0 -7
  490. package/web/dist/assets/r-Cf5RLm7j.js +0 -1
  491. package/web/dist/assets/racket-BqYA7rlc.js +0 -1
  492. package/web/dist/assets/railroadDiagram-SM67HX2B-DZ-fPU85.js +0 -1
  493. package/web/dist/assets/raku-DXvB9xmW.js +0 -1
  494. package/web/dist/assets/razor-BjBPvh-w.js +0 -1
  495. package/web/dist/assets/rbs-CpoqiR4B.js +0 -1
  496. package/web/dist/assets/react-vendor-C0HIWSpf.js +0 -9
  497. package/web/dist/assets/red-hvxz__6c.js +0 -1
  498. package/web/dist/assets/reg-C-SQnVFl.js +0 -1
  499. package/web/dist/assets/regexp-CDVJQ6XC.js +0 -1
  500. package/web/dist/assets/rel-C3B-1QV4.js +0 -1
  501. package/web/dist/assets/requirementDiagram-X7JNWC4A-mKPGj64L.js +0 -84
  502. package/web/dist/assets/riscv-BM1_JUlF.js +0 -1
  503. package/web/dist/assets/ron-D8l8udqQ.js +0 -1
  504. package/web/dist/assets/rose-pine-5qJOZa0Y.js +0 -1
  505. package/web/dist/assets/rose-pine-dawn-zx0QlTCp.js +0 -1
  506. package/web/dist/assets/rose-pine-moon-C9pEdX9L.js +0 -1
  507. package/web/dist/assets/rosmsg-BJDFO7_C.js +0 -1
  508. package/web/dist/assets/rst-bs7f0vWN.js +0 -1
  509. package/web/dist/assets/ruby-C0TQ7zu5.js +0 -1
  510. package/web/dist/assets/rust-B1yitclQ.js +0 -1
  511. package/web/dist/assets/sankeyDiagram-UM26HJRW-Bs4xfjQP.js +0 -40
  512. package/web/dist/assets/sas-DEy46yEz.js +0 -1
  513. package/web/dist/assets/sass-Cj5Yp3dK.js +0 -1
  514. package/web/dist/assets/scala-CqE71os6.js +0 -1
  515. package/web/dist/assets/scheme-C98Dy4si.js +0 -1
  516. package/web/dist/assets/scss-D5BDwBP9.js +0 -1
  517. package/web/dist/assets/sdbl-DVxCFoDh.js +0 -1
  518. package/web/dist/assets/sequenceDiagram-ZO4K6R2Y-BjUmzZaO.js +0 -169
  519. package/web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -1
  520. package/web/dist/assets/shellscript-Yzrsuije.js +0 -1
  521. package/web/dist/assets/shellsession-BADoaaVG.js +0 -1
  522. package/web/dist/assets/sizeCapture-INFHLROL-BXBM3j_Q.js +0 -1
  523. package/web/dist/assets/slack-dark-BthQWCQV.js +0 -1
  524. package/web/dist/assets/slack-ochin-DqwNpetd.js +0 -1
  525. package/web/dist/assets/smalltalk-BOQMe2GC.js +0 -1
  526. package/web/dist/assets/smithy-cds9vsN8.js +0 -1
  527. package/web/dist/assets/snazzy-light-Bw305WKR.js +0 -1
  528. package/web/dist/assets/solarized-dark-CpvCGNkr.js +0 -1
  529. package/web/dist/assets/solarized-light-Dlz6yCKv.js +0 -1
  530. package/web/dist/assets/solidity-DijEV5ha.js +0 -1
  531. package/web/dist/assets/soy-8wufbnw4.js +0 -1
  532. package/web/dist/assets/sparql-rVzFXLq3.js +0 -1
  533. package/web/dist/assets/splunk-BtCnVYZw.js +0 -1
  534. package/web/dist/assets/sql-CRqJ_cUM.js +0 -1
  535. package/web/dist/assets/ssh-config-_ykCGR6B.js +0 -1
  536. package/web/dist/assets/stata-DI20mbqo.js +0 -1
  537. package/web/dist/assets/state-Kfon1nTr.js +0 -17
  538. package/web/dist/assets/stateDiagram-v2-TBUQTH76-FGgFDGUU.js +0 -291
  539. package/web/dist/assets/sttLanguages-C7kVulzY.js +0 -1
  540. package/web/dist/assets/stylus-BEDo0Tqx.js +0 -1
  541. package/web/dist/assets/surrealql-Cjom0U5J.js +0 -1
  542. package/web/dist/assets/svelte-Cy7k_4gC.js +0 -1
  543. package/web/dist/assets/swift-C2oV4EkX.js +0 -1
  544. package/web/dist/assets/swimlanes-N4OXWK64-wkd_n4HU.js +0 -1
  545. package/web/dist/assets/swimlanesDiagram-K3J5GTZL-CKnwEuq_.js +0 -8
  546. package/web/dist/assets/synthwave-84-CbfX1IO0.js +0 -1
  547. package/web/dist/assets/system-verilog-0hqHdDBg.js +0 -1
  548. package/web/dist/assets/systemd-4A_iFExJ.js +0 -1
  549. package/web/dist/assets/talonscript-CkByrt1z.js +0 -1
  550. package/web/dist/assets/tasl-QIJgUcNo.js +0 -1
  551. package/web/dist/assets/tcl-dwOrl1Do.js +0 -1
  552. package/web/dist/assets/templ-DhtptRzy.js +0 -1
  553. package/web/dist/assets/terraform-BETggiCN.js +0 -1
  554. package/web/dist/assets/tex-D96PA37w.js +0 -1
  555. package/web/dist/assets/timeline-definition-YOQAKGHF-DyBln1jw.js +0 -120
  556. package/web/dist/assets/tokyo-night-hegEt444.js +0 -1
  557. package/web/dist/assets/toml-vGWfd6FD.js +0 -1
  558. package/web/dist/assets/ts-tags-D351s5mN.js +0 -1
  559. package/web/dist/assets/tsv-B_m7g4N7.js +0 -1
  560. package/web/dist/assets/tsx-COt5Ahok.js +0 -1
  561. package/web/dist/assets/turtle-BsS91CYL.js +0 -1
  562. package/web/dist/assets/twig-27uCiNez.js +0 -1
  563. package/web/dist/assets/typescript-BPQ3VLAy.js +0 -1
  564. package/web/dist/assets/typespec-CAFt9gP4.js +0 -1
  565. package/web/dist/assets/typst-BUadGCkm.js +0 -1
  566. package/web/dist/assets/usecaseDiagram-VIAY4XPW-Cqis3XHX.js +0 -370
  567. package/web/dist/assets/v-BGw2Nkan.js +0 -1
  568. package/web/dist/assets/vala-CsfeWuGM.js +0 -1
  569. package/web/dist/assets/vb-Cu-pLBUe.js +0 -1
  570. package/web/dist/assets/vennDiagram-BLWOH2XV-BaiFLOVS.js +0 -34
  571. package/web/dist/assets/verilog-nZwndyjY.js +0 -1
  572. package/web/dist/assets/vesper-DRje8inN.js +0 -1
  573. package/web/dist/assets/vhdl-CeAyd5Ju.js +0 -1
  574. package/web/dist/assets/viml-CJc9bBzg.js +0 -1
  575. package/web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -1
  576. package/web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -1
  577. package/web/dist/assets/vitesse-light-CVO1_9PV.js +0 -1
  578. package/web/dist/assets/vue-BqiEGhQt.js +0 -1
  579. package/web/dist/assets/vue-html-AaS7Mt5G.js +0 -1
  580. package/web/dist/assets/vue-vine-BoDAl6tE.js +0 -1
  581. package/web/dist/assets/vyper-CDx5xZoG.js +0 -1
  582. package/web/dist/assets/wardleyDiagram-YMQ3BMBF-C4CzpJto.js +0 -78
  583. package/web/dist/assets/wasm-CG6Dc4jp.js +0 -1
  584. package/web/dist/assets/wasm-MzD3tlZU.js +0 -1
  585. package/web/dist/assets/wenyan-BV7otONQ.js +0 -1
  586. package/web/dist/assets/wgsl-Dx-B1_4e.js +0 -1
  587. package/web/dist/assets/wikitext-BhOHFoWU.js +0 -1
  588. package/web/dist/assets/wit-5i3qLPDT.js +0 -1
  589. package/web/dist/assets/wolfram-lXgVvXCa.js +0 -1
  590. package/web/dist/assets/xml-sdJ4AIDG.js +0 -1
  591. package/web/dist/assets/xsl-CtQFsRM5.js +0 -1
  592. package/web/dist/assets/xychartDiagram-TAQBALBS-Dp1hfe3-.js +0 -7
  593. package/web/dist/assets/yaml-Buea-lGh.js +0 -1
  594. package/web/dist/assets/zenscript-DVFEvuxE.js +0 -1
  595. package/web/dist/assets/zig-VOosw3JB.js +0 -1
  596. package/web/dist/figma-demo/product-1.jpg +0 -0
  597. package/web/dist/figma-demo/product-2.jpg +0 -0
  598. package/web/dist/figma-demo/trail-1.jpg +0 -0
  599. package/web/dist/figma-demo/trail-2.jpg +0 -0
  600. package/web/dist/figma-demo/trail-3.jpg +0 -0
@@ -1,50 +0,0 @@
1
- var Wa=Object.defineProperty;var Ja=(n,t,s)=>t in n?Wa(n,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[t]=s;var Ys=(n,t,s)=>Ja(n,typeof t!="symbol"?t+"":t,s);import{j as e}from"./markdown-BWXjRrSw.js";import{a,aW as _r,aA as Ir,k as He,u as Ce,aX as Va,ae as Ct,b as Ya,B as es,aY as Xa,aZ as Qa,t as Za,G as eo,S as ts,ax as rn,P as Or,J as Fr,ak as Br,y as an,f as nt,X as At,o as to,E as qn,A as ft,x as Xs,aw as ns,a_ as Gn,e as Hr,D as no,a7 as so,aN as Pn,K as ro,d as Tt,at as ao,a$ as Qs,N as ss,a0 as on,am as Ur,C as xt,n as oo,aB as io,w as Kr,b0 as co,b1 as Zs,O as er,aC as tr,b2 as lo,b3 as uo,b4 as nr,z as rs,V as qr,Y as mo,_ as Wn,$ as cn,m as ho,Z as fo,b5 as xo,b6 as po,b7 as bo,b8 as go,aH as ko,b9 as vo,I as yo,aJ as wo}from"./icons-Bm_ZzSAy.js";import{aj as Gr,ak as jo,al as ln,am as No,an as So,f as q,a as de,u as K,ao as sr,ap as Eo,aq as Rt,ar as Co,as as Mo,at as as,au as rr,av as Ao,aw as os,ax as To,t as H,ay as mn,a2 as Wr,az as hn,a1 as ht,aA as Ro,af as Jn,ab as Do,w as wt,aa as ar,a9 as ze,ac as $o,aB as Jr,aC as Po,aD as zo,aE as Lo,aF as _o,aG as Vr,i as dn,A as re,aH as Io,aI as Oo,aJ as Fo,Y as Bo,a3 as Ho,aK as Uo,aL as Vn,ah as Ko,aM as un,a8 as Yr,j as qo,aN as Go,aO as Wo,aP as Jo,r as Xr,aQ as Vo,aR as Yo,aS as Xo,B as Qr,m as mt,n as Qo,o as Zo,M as ei,aT as ti,aU as ni,aV as si,aW as ri,aX as ai,aY as oi,aZ as ii,a_ as ci}from"./index-CeeLdENM.js";import{a as li,r as di,p as ui,s as mi,S as hi,n as fi}from"./sttLanguages-C7kVulzY.js";import{a as xi}from"./Skeleton-Dsk6B0U3.js";import{V as pi}from"./VizCardsSkeleton-C_GaEfXd.js";const bi=800,Mt=/\[Pasted text #(\d+)(?:\s*\+\d+ lines?)?\]/g;let gi=0;const Dt=new Map;function Zr(n){const t=++gi;return Dt.set(t,n.replace(/\r\n?/g,`
2
- `)),t}function ki(n){return Dt.get(n)}function vi(n){Dt.delete(n)}function yi(n){return n.length>bi||is(n)>0}function is(n){return(n.match(/\r\n|\r|\n/g)||[]).length}function wi(n){const t=Zr(n),s=is(n);return s===0?{id:t,label:`[Pasted text #${t}]`}:{id:t,label:`[Pasted text #${t} +${s} lines]`}}function ji(n){return Mt.lastIndex=0,n.replace(Mt,(t,s)=>{const r=parseInt(s,10),i=Dt.get(r);return i!==void 0?i:t})}function Ni(n){Mt.lastIndex=0;const t=[];let s;for(;(s=Mt.exec(n))!==null;){const r=s[1];r!==void 0&&t.push(parseInt(r,10))}return Mt.lastIndex=0,t}function Si(n){for(const t of n)Dt.delete(t)}function Ei(n){const t=n.match(/\[Pasted text #\d+(?:\s*\+\d+ lines?)?\]$/);return t?t[0]:null}function Ci(n){const t=n.match(/^\[Pasted text #\d+(?:\s*\+\d+ lines?)?\]/);return t?t[0]:null}function or(n){const t=n.match(/#(\d+)/);t&&vi(parseInt(t[1]??"",10))}function Mi(n){const t=[],s=n.tasks??[];s.length>0&&t.push(Ti(s)?Di(s):Ri(s));const r=$i(n.threads??[]);r&&t.push(r),n.stats&&n.stats.length>0&&t.push({id:"derived-metrics",kind:"stats",source:"events",series:[...n.stats]});const i=Ai(n.cards);return i&&t.push(i),Gr(t)}function Ai(n){return!n||n.items.length===0?null:{id:"derived-cards",kind:"cards",source:"events",title:n.title,groupTitle:n.groupTitle,layout:n.layout??"carousel",chrome:n.chrome??"card",app:n.app,items:[...n.items]}}function Ti(n){let t=0;for(const s of n){const r=s.deps??[];if(r.length>1)return!1;r.length===1&&(t+=1)}return t>0}function Ri(n){return{id:"derived-tasks-board",kind:"board",source:"events",title:"Tasks",items:n.map(s=>({id:s.id,label:s.title,status:s.status,detail:s.detail&&s.detail.trim()!==s.title.trim()?s.detail:void 0,deps:s.deps&&s.deps.length>0?[...s.deps]:void 0}))}}function Di(n){var h;const t=new Map(n.map(u=>[u.id,u])),s=new Map,r=[];for(const u of n){const f=(h=u.deps)==null?void 0:h[0];if(f&&f!==u.id&&t.has(f)){const g=s.get(f)??[];g.push(u),s.set(f,g)}else r.push(u)}const i=new Set,c=u=>{if(i.has(u.id))return{id:u.id,label:u.title,meta:u.status};i.add(u.id);const f=(s.get(u.id)??[]).map(c);return{id:u.id,label:u.title,meta:u.status,children:f.length>0?f:void 0}};return{id:"derived-tasks-tree",kind:"tree",source:"events",root:r.length===1?c(r[0]):{id:"derived-tasks-root",label:"Tasks",children:r.map(c)}}}function $i(n){if(n.length===0)return null;let t=0,s=0,r=0,i=0,c=0;for(const h of n){const u=h.status.toLowerCase();u==="working"||u==="running"?t+=1:u==="done"||u==="completed"?s+=1:(u==="failed"||u==="error")&&(r+=1),typeof h.costUsd=="number"&&(i+=h.costUsd),typeof h.tokens=="number"&&(c+=h.tokens)}const d=[{label:"Threads",value:n.length}];return t>0&&d.push({label:"Active",value:t,tone:"neutral"}),s>0&&d.push({label:"Done",value:s,tone:"good"}),r>0&&d.push({label:"Failed",value:r,tone:"bad"}),i>0&&d.push({label:"Cost",value:Number(i.toFixed(4)),unit:"USD"}),c>0&&d.push({label:"Tokens",value:c}),{id:"derived-threads-stats",kind:"stats",source:"events",series:d}}const Xe={title:["title","name","label","heading"],subtitle:["subtitle","description","summary","category"],image:["image","imageUrl","image_url","img","photo","thumbnail","thumbnailUrl","thumbnail_url"],badge:["badge","tag_label","badgeText"],meta:["meta","metadata","details","facts"],actions:["actions","buttons","ctas"],items:["items","results","data","entries","products","places","listings","cards"]};function Qe(n,t){for(const s of t){const r=n[s];if(r!=null&&r!=="")return r}}function Pi(n){if(!n)return;const t=[];if(Array.isArray(n)){for(const s of n){if(typeof s=="string"&&s)t.push({label:s});else if(s&&typeof s=="object"){const r=s,i=r.label??r.value??r.text;if(i==null||i==="")continue;const c=typeof r.icon=="string"?r.icon:void 0;t.push(c?{icon:c,label:String(i)}:{label:String(i)})}if(t.length>=ln.maxCardMeta)break}return t.length>0?t:void 0}if(typeof n=="object"){for(const[s,r]of Object.entries(n))if(!(r==null||r==="")&&typeof r!="object"&&(t.push({icon:s.toLowerCase(),label:String(r)}),t.length>=ln.maxCardMeta))break;return t.length>0?t:void 0}}function zi(n){if(!Array.isArray(n))return;const t=[];for(const s of n){if(typeof s=="string"&&s)t.push({label:s});else if(s&&typeof s=="object"){const r=s,i=r.label??r.title??r.text;if(typeof i!="string"||!i)continue;const c=r.tone==="primary"?"primary":"neutral",d=typeof r.prompt=="string"?r.prompt:void 0;t.push(d?{label:i,tone:c,prompt:d}:{label:i,tone:c})}if(t.length>=ln.maxCardActions)break}return t.length>0?t:void 0}function Li(n,t){if(!n||typeof n!="object"||Array.isArray(n))return;const s=n,r={id:typeof s.id=="string"&&s.id?s.id:`app-card-${t}`,title:Qe(s,Xe.title),subtitle:Qe(s,Xe.subtitle),image:Qe(s,Xe.image),badge:Qe(s,Xe.badge),meta:Pi(Qe(s,Xe.meta)),actions:zi(Qe(s,Xe.actions))},i=So.safeParse(r);if(i.success&&!(typeof r.title!="string"||!r.title))return i.data}function _i(n){const t=n&&typeof n=="object"&&!Array.isArray(n)?n:{},s=Array.isArray(n)?n:Qe(t,Xe.items);if(!Array.isArray(s)||s.length===0)return;const r=[];for(let i=0;i<s.length&&r.length<ln.maxCards;i+=1){const c=Li(s[i],i);c&&r.push(c)}if(r.length!==0)return{items:r,wrap:t}}function Ii(n){const t=n.app??n.source??n.provider;if(!t||typeof t!="object")return;const s=No.safeParse(t);return s.success?s.data:void 0}function ir(n,t){return typeof n=="string"&&t.includes(n)?n:void 0}function cr(n){return typeof n=="string"&&n?n:void 0}function Oi(n){if(typeof n=="string"&&n.includes("```viz")){const k=Fi(n);if(k)return{via:"fence",source:{items:k.items,app:k.app,title:k.title,groupTitle:k.groupTitle,layout:k.layout,chrome:k.chrome}}}let t=n;if(typeof n=="string"){const k=n.trim();if(!k)return;try{t=JSON.parse(k)}catch{return}}const s=_i(t);if(!s)return;const{items:r,wrap:i}=s,c={items:r},d=Ii(i);d&&(c.app=d);const h=cr(i.title);h&&(c.title=h);const u=cr(i.groupTitle??i.group_title);u&&(c.groupTitle=u);const f=ir(i.layout,["carousel","grid"]);f&&(c.layout=f);const g=ir(i.chrome,["transparent","card","contained"]);return g&&(c.chrome=g),{via:"json",source:c}}function Fi(n){return Gr(jo(n)).find(s=>s.kind==="cards")}function lr({value:n,max:t=100,size:s="md",variant:r="default",showLabel:i=!1,className:c}){const d=Math.min(Math.max(n/t*100,0),100),h={sm:"h-1",md:"h-2",lg:"h-3"},u={default:"bg-accent-blue",success:"bg-accent-green",warning:"bg-accent-yellow",error:"bg-accent-red"};return e.jsxs("div",{className:q("w-full",c),children:[e.jsx("div",{className:q("w-full bg-dark-border rounded-full overflow-hidden",h[s]),children:e.jsx("div",{className:q("h-full rounded-full transition-all duration-300",u[r]),style:{width:`${d}%`}})}),i&&e.jsxs("span",{className:"text-xs text-dark-muted mt-1",children:[Math.round(d),"%"]})]})}let Yn="idle",St=null,tn=null,Ze=0;const Xn=new Set;function nn(n){if(Yn!==n){Yn=n;for(const t of Xn)t(n)}}function Bi(n){return Xn.add(n),()=>{Xn.delete(n)}}function Hi(){return Yn}function Et(){Ze++,St&&(St.pause(),St.src="",St=null),tn&&(URL.revokeObjectURL(tn),tn=null),nn("idle")}function Ui(n){const t=atob(n),s=new Uint8Array(new ArrayBuffer(t.length));for(let r=0;r<t.length;r++)s[r]=t.charCodeAt(r);return s}async function Ki(n,t){var f;const s=n.trim();if(!s)return null;Et();const r=++Ze;nn("loading");const i=li(),c=await de.tts.synthesize({text:s,lang:t||void 0,voice:i.voice??void 0,speed:i.speed});if(r!==Ze)return null;if(!c.success||!((f=c.data)!=null&&f.audio))return nn("idle"),c.error||"synthesize failed";const d=new Blob([Ui(c.data.audio)],{type:"audio/wav"}),h=URL.createObjectURL(d),u=new Audio(h);St=u,tn=h,u.onended=()=>{r===Ze&&Et()},u.onerror=()=>{r===Ze&&Et()};try{await u.play(),r===Ze&&nn("playing")}catch(g){return r===Ze&&Et(),g instanceof Error?g.message:String(g)}return null}function qi(){const[n,t]=a.useState(Hi);return a.useEffect(()=>Bi(t),[]),n}function Gi(n){const t=a.useRef(null),s=a.useRef(0);return a.useEffect(()=>{if(!n){s.current=0;return}s.current=Date.now();const r=t.current;if(!r)return;const i=()=>{const d=Math.floor((Date.now()-s.current)/1e3),h=d>=60?`${Math.floor(d/60)}m ${d%60}s`:`${d}s`;r.textContent=h};i();const c=setInterval(i,1e3);return()=>clearInterval(c)},[n]),t}function ea(n){if(typeof n=="string")try{const t=JSON.parse(n);return t&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function ae(n,t){const s=ea(n);if(!s)return"";for(const r of t){const i=s[r];if(typeof i=="string"&&i)return i}return""}function Wi(n,t){const s=ea(n);if(s)for(const r of t){const i=s[r],c=typeof i=="number"?i:typeof i=="string"&&i.trim()?Number(i):NaN;if(Number.isFinite(c)&&c>0)return c}}function Le(n){return typeof n=="string"?n:n&&typeof n=="object"?JSON.stringify(n,null,2):String(n??"")}function Ji(n){for(const t of n.split(`
3
- `)){const s=t.trim();if(s)return s}return""}function Re({label:n,tone:t="text-dark-muted",children:s}){return e.jsxs("div",{className:"px-2 py-1",children:[e.jsx("div",{className:`mb-0.5 text-badge ${t}`,children:n}),e.jsx("div",{className:"max-h-56 overflow-y-auto custom-scrollbar rounded border border-dark-border bg-dark-bg",children:s})]})}function Vi({toolCall:n}){const{t}=K(),s=ae(n.args,["command","cmd","script"]),r=n.status==="error",i=n.status==="running",c=Le(n.result),d=i&&!c&&n.liveOutput||"";return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[s&&e.jsx(Re,{label:t("step.params"),children:e.jsxs("pre",{className:"tv-pre",children:[e.jsx("span",{className:"select-none text-accent-green",children:"$ "}),s]})}),d&&e.jsx(Re,{label:t("step.result"),tone:"text-accent-green",children:e.jsx("pre",{className:"tv-pre",children:d})}),n.result!==void 0&&n.result!==null&&e.jsx(Re,{label:t(r?"step.error":"step.result"),tone:r?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${r?"text-accent-red":""}`,children:c})})]})}function Yi({toolCall:n}){const t=Rt(n.args),s=Le(n.result),r=n.diff||(s&&(s.includes("@@")||s.includes("+++")||s.includes("---"))?s:void 0);return!r&&!s?e.jsx(cs,{toolCall:n}):e.jsx("div",{className:"px-2 py-1",children:e.jsx(Co,{filePath:t,content:r||s})})}function Xi({toolCall:n}){const{t}=K(),s=Rt(n.args),r=n.status==="error",i=Le(n.result);return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[s&&e.jsx("div",{className:"flex items-center gap-1.5 px-2 pt-1 font-mono text-meta text-accent-blue",title:s,children:e.jsx("span",{className:"truncate",children:s})}),n.result!==void 0&&n.result!==null&&e.jsx(Re,{label:t(r?"step.error":"step.result"),tone:r?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${r?"text-accent-red":""}`,children:i})})]})}const dr=20,Qi=/\b(grep|search_contents)\b/i;function Zi(n){return n===""?0:n.split(`
4
- `).length}function ec({toolCall:n}){const{t}=K(),s=ae(n.args,["pattern","query","regex"]),r=n.status==="error",i=n.result!==void 0&&n.result!==null,c=i?Le(n.result):"",d=i?Zi(c):0,h=Qi.test(n.name),u=n.noTruncate!==!0&&h&&i&&!r&&d>dr,[f,g]=a.useState(!1),k=u&&!f?c.split(`
5
- `).slice(0,dr).join(`
6
- `)+`
7
- ${t("toolCall.linesTotal",{n:d})}`:c;return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[s&&e.jsx("div",{className:"flex items-center gap-1.5 px-2 pt-1 text-meta text-dark-muted",children:e.jsx("span",{className:"font-mono text-accent-blue",children:s})}),i&&e.jsx(Re,{label:t(r?"step.error":"step.result"),tone:r?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${r?"text-accent-red":""}`,children:k})}),u&&e.jsx("div",{className:"px-2 pb-1",children:e.jsx("button",{type:"button","data-testid":"grep-result-toggle",onClick:()=>g(w=>!w),className:"text-badge text-accent-blue hover:underline",children:f?t("toolCall.collapse"):t("toolCall.expandAll",{n:d})})})]})}function tc({toolCall:n}){const{t}=K(),s=ae(n.args,["url","query"]),r=n.status==="error",i=Le(n.result);return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[s&&e.jsx("div",{className:"truncate px-2 pt-1 font-mono text-meta text-accent-blue",title:s,children:s}),n.result!==void 0&&n.result!==null&&e.jsx(Re,{label:t(r?"step.error":"step.result"),tone:r?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${r?"text-accent-red":""}`,children:i})})]})}function cs({toolCall:n}){const{t}=K(),s=n.status==="error",r=n.result!==void 0&&n.result!==null;return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[e.jsx(Re,{label:t("step.params"),children:e.jsx("pre",{className:"tv-pre",children:typeof n.args=="string"?n.args:JSON.stringify(n.args,null,2)})}),r&&e.jsx(Re,{label:t(s?"step.error":"step.result"),tone:s?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${s?"text-accent-red":""}`,children:Le(n.result)})})]})}function nc({toolCall:n}){const{t}=K(),s=n.status==="error",r=Le(n.result),i=(n.attachments??[]).filter(c=>c.mime.startsWith("image/"));return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[i.length>0&&e.jsxs("div",{className:"px-2 pt-1",children:[e.jsx("div",{className:"mb-0.5 text-badge text-dark-muted",children:t("step.screenshot","Screenshot")}),e.jsx("div",{className:"max-h-72 overflow-y-auto custom-scrollbar rounded border border-dark-border bg-dark-bg",children:i.slice(0,4).map((c,d)=>e.jsx("img",{src:c.url,alt:c.filename??`computer screenshot ${d+1}`,className:"block w-full object-contain",loading:"lazy"},d))})]}),n.result!==void 0&&n.result!==null&&e.jsx(Re,{label:t(s?"step.error":"step.result"),tone:s?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${s?"text-accent-red":""}`,children:r})})]})}const ur=112;function sc(n){const t=/^(\d+)\s*[x×]\s*(\d+)$/i.exec(n.trim()),s=t?Number(t[1]):0,r=t?Number(t[2]):0;return!s||!r?1:Math.min(Math.max(s/r,.5),2)}function rc({toolCall:n}){const{t}=K(),s=ae(n.args,["prompt"]),r=ae(n.args,["size"]),i=Math.min(Math.max(Math.floor(Wi(n.args,["n"])??1),1),4),c=sc(r),d=s.length>200?`${s.slice(0,199)}…`:s;return e.jsxs("div",{className:"px-2 py-1.5","data-testid":"image-generating",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-shimmer text-compact font-medium",children:t("step.imageGenerating")}),e.jsxs("span",{className:"chat-typing-dots","aria-hidden":"true",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]})]}),e.jsx("div",{className:"mt-1.5 flex flex-wrap items-start gap-1.5",children:Array.from({length:i},(h,u)=>e.jsx(xi,{shimmer:!0,className:"shrink-0 border border-dark-border",height:ur,width:Math.round(ur*c)},u))}),d&&e.jsx("p",{className:"mt-1.5 max-w-[26rem] text-meta leading-snug text-dark-muted",title:s,children:d}),r&&e.jsx("p",{className:"mt-0.5 font-mono text-badge text-dark-muted",children:r})]})}function ac({toolCall:n}){const{t}=K(),s=n.status==="error",r=Le(n.result),i=(n.generatedImages??[]).filter(k=>k.length>0),c=ae(n.args,["prompt"]),d=ae(n.args,["size"]),h=n.generatedImageModel??"",u=c.length>300?`${c.slice(0,299)}…`:c,[f,g]=a.useState(null);return e.jsxs("div",{className:"space-y-0.5 py-0.5",children:[i.length>0&&e.jsxs("div",{className:"px-2 pt-1",children:[e.jsxs("div",{className:"mb-1 flex flex-wrap items-center gap-x-2 text-badge text-dark-muted",children:[e.jsx("span",{children:t("step.generatedImages",{count:i.length})}),d&&e.jsx("span",{className:"font-mono",children:d})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:i.map((k,w)=>e.jsx("button",{onClick:()=>g(sr(k)),title:t("fileJob.imagePreview"),className:"cursor-zoom-in overflow-hidden rounded-lg border border-dark-border transition-colors hover:border-accent-blue/40",children:e.jsx("img",{src:sr(k),alt:`generated image ${w+1}`,loading:"lazy",className:"h-28 w-auto max-w-[220px] object-cover"})},`${k}-${w}`))}),(u||h)&&e.jsxs("dl",{className:"mt-1.5 max-w-[26rem] space-y-0.5","data-testid":"image-gen-meta",children:[u&&e.jsxs("div",{className:"flex gap-1.5",children:[e.jsx("dt",{className:"shrink-0 text-badge text-dark-muted",children:t("step.imagePrompt")}),e.jsx("dd",{className:"min-w-0 break-words text-meta leading-snug text-dark-text/85",title:c,children:u})]}),h&&e.jsxs("div",{className:"flex gap-1.5",children:[e.jsx("dt",{className:"shrink-0 text-badge text-dark-muted",children:t("step.imageModel")}),e.jsx("dd",{className:"break-all font-mono text-meta text-dark-text/85",children:h})]})]})]}),n.result!==void 0&&n.result!==null&&e.jsx(Re,{label:t(s?"step.error":"step.result"),tone:s?"text-accent-red":"text-accent-green",children:e.jsx("pre",{className:`tv-pre ${s?"text-accent-red":""}`,children:r})}),f&&e.jsx(Eo,{src:f,alt:t("fileJob.imagePreview"),onClose:()=>g(null)})]})}function oc(n){const t=n.slice(5),s=t.indexOf("__");if(!(s<=0))return t.slice(0,s)||void 0}function ic({toolCall:n}){const t=a.useMemo(()=>n.status==="error"?void 0:Oi(n.result),[n.status,n.result]);if(n.status==="running"){const s=oc(n.name);return e.jsx(pi,{app:s?{id:s,name:s}:void 0})}return t?e.jsx(Mo,{blocks:Mi({cards:t.source})}):e.jsx(cs,{toolCall:n})}const cc=/(?:^|[_\W])(bash|powershell|pwsh|cmd|command|shell|exec|terminal)(?:[_\W]|$)/i,lc=/(?:^|[_\W])(read|cat|view|open)(?:[_\W]|$)/i,dc=/(?:^|[_\W])(grep|glob|search|find|list)(?:[_\W]|$)/i,uc=/(?:^|[_\W])(webfetch|websearch|fetch|web|http|curl|url)(?:[_\W]|$)/i,mc=/(?:^|[_\W])(computer)(?:[_\W]|$)/i,hc=/^agent$/i,fc=/generate[-_]?image|imagegen|create[-_]?image/i,xc=/^mcp__/;function ls(n){return hc.test(n)?"agent":fc.test(n)?"image":xc.test(n)?"app":as(n)?"diff":cc.test(n)?"terminal":mc.test(n)?"computer":uc.test(n)?"web":dc.test(n)?"search":lc.test(n)?"read":"generic"}function pc(n,t){const s=ls(n);let r="";switch(s){case"terminal":r=ae(t,["command","cmd","script"]);break;case"computer":if(r=ae(t,["action"])||ae(t,["scope"]),r){const c=r,d=c==="type"||c==="key"?ae(t,["text"]):c==="focus"?ae(t,["keyword"]):c==="scroll"?ae(t,["direction"]):"";r=d?`${c} ${d}`:c}break;case"diff":case"read":r=Rt(t)??"";break;case"search":r=ae(t,["pattern","query","regex","glob"]);break;case"web":r=ae(t,["url","query"]);break;case"image":r=ae(t,["prompt"]);break;case"agent":r=ae(t,["scope"])||ae(t,["prompt"]);break;case"app":{if(r=ae(t,["query","url","q","text","input"]),!r)try{const c=typeof t=="string"?JSON.parse(t):t;r=c&&typeof c=="object"?JSON.stringify(c):String(t??"")}catch{r=typeof t=="string"?t:""}break}default:try{const c=typeof t=="string"?JSON.parse(t):t;r=c&&typeof c=="object"?JSON.stringify(c):String(t??"")}catch{r=typeof t=="string"?t:""}}const i=r.replace(/\s+/g," ").trim();return i.length>64?`${i.slice(0,63)}…`:i}function bc({toolCall:n}){switch(ls(n.name)){case"terminal":return e.jsx(Vi,{toolCall:n});case"diff":return e.jsx(Yi,{toolCall:n});case"read":return e.jsx(Xi,{toolCall:n});case"search":return e.jsx(ec,{toolCall:n});case"web":return e.jsx(tc,{toolCall:n});case"computer":return e.jsx(nc,{toolCall:n});case"image":return n.status==="running"?e.jsx(rc,{toolCall:n}):e.jsx(ac,{toolCall:n});case"app":return e.jsx(ic,{toolCall:n});default:return e.jsx(cs,{toolCall:n})}}const gc=600;function mr(n){return{phase:"streaming",since:n,dryAt:null}}function hr(n,t,s,r={}){const i=r.settleDelayMs??gc;switch(t){case"erase":return n.phase==="erased"?n:{phase:"erased",since:s,dryAt:null};case"stream":return n.phase==="erased"||n.phase==="streaming"&&n.dryAt===null?n:{phase:"streaming",since:s,dryAt:null};case"settle":return n.phase!=="streaming"?n:r.reducedMotion?{phase:"settled",since:s,dryAt:null}:{...n,dryAt:(n.dryAt??s)+i}}}function kc(n,t){return n.phase!=="streaming"||n.dryAt===null||t<n.dryAt?n:{phase:"settled",since:n.dryAt,dryAt:null}}function vc(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function ds(n,t){const[s,r]=a.useState(()=>n?mr(0):{phase:"settled",since:0,dryAt:null});return a.useEffect(()=>{r(i=>{const c=performance.now();return n?i.since===0?mr(c):hr(i,"stream",c):i.since===0?{phase:"settled",since:c,dryAt:null}:hr(i,"settle",c,{reducedMotion:vc()})})},[n,t]),a.useEffect(()=>{if(s.dryAt===null)return;const i=Math.max(0,s.dryAt-performance.now()),c=window.setTimeout(()=>r(d=>kc(d,performance.now())),i);return()=>window.clearTimeout(c)},[s.dryAt]),s.phase}function yc(n){const t=Math.max(0,Math.floor(n/1e3));return`${String(Math.floor(t/60)).padStart(2,"0")}:${String(t%60).padStart(2,"0")}`}const wc=n=>n==="completed"||n==="failed"||n==="paused";function fr(n){return n==="paused"?"bg-accent-yellow":n==="completed"?"bg-accent-green":n==="failed"?"bg-accent-red":"bg-accent-blue"}function jc({status:n}){return n==="paused"?e.jsx(_r,{size:10,className:"text-accent-yellow","aria-hidden":"true"}):n==="failed"?e.jsx(Ir,{size:10,className:"text-accent-red","aria-hidden":"true"}):n==="completed"?e.jsx(He,{size:10,className:"text-accent-green","aria-hidden":"true"}):e.jsx(Ce,{size:10,className:"animate-spin text-accent-blue","aria-hidden":"true"})}function xr(n){if(n==="paused")return"已暂停";if(n==="completed")return"已完成";if(n==="failed")return"已失败";if(n==="scheduled")return"排队中";if(n==="idle")return"待启动"}const pr="立即返回结果",br="终止并返回结果";function Nc({agent:n,labeled:t=!1}){const[s,r]=a.useState(!1);if(!(n.status==="running"||n.status==="scheduled"||n.status==="paused"))return null;const c=async d=>{r(!0);try{const h=await To(n.sessionId,n.id,d);h.ok?(h.alreadyFinished||h.stopInProgress)&&H.info(h.message,4e3):H.error(h.message,5e3)}finally{r(!1)}};return e.jsxs("span",{className:"flex shrink-0 items-center gap-0.5",children:[e.jsxs("button",{type:"button",title:"在轮次边界停下来,把已经拿到的结果交回父代理","aria-label":pr,disabled:s,onClick:d=>{d.stopPropagation(),c("stop")},className:`flex items-center gap-1 rounded border border-dark-border/70 text-accent-blue hover:bg-dark-hover disabled:opacity-40 ${t?"px-1.5 py-0.5 text-badge":"p-0.5"}`,children:[e.jsx(Va,{size:11}),t&&e.jsx("span",{children:pr})]}),e.jsxs("button",{type:"button",title:"立刻终止这个子代理,并把它已经拿到的结果交回父代理","aria-label":br,disabled:s,onClick:d=>{d.stopPropagation(),c("kill")},className:`flex items-center gap-1 rounded border border-dark-border/70 text-accent-red hover:bg-dark-hover disabled:opacity-40 ${t?"px-1.5 py-0.5 text-badge":"p-0.5"}`,children:[e.jsx(Ct,{size:11}),t&&e.jsx("span",{children:br})]})]})}const Sc=a.memo(function({agent:t}){Ao();const s=wc(t.status),r=t.status==="running"||t.status==="scheduled"||t.status==="idle"||t.status==="paused",c=ds(r,!1)==="streaming"?"draft":t.status==="failed"?"failed":t.status==="completed"?"committed":"draft",d=t.elapsedMs===void 0?void 0:!s&&t.elapsedAt?t.elapsedMs+Math.max(0,Date.now()-t.elapsedAt):t.elapsedMs,h=typeof t.round=="number"&&t.round>0&&typeof t.maxRounds=="number"&&t.maxRounds>0,u=h?Math.max(0,Math.min(100,Math.round(t.round/t.maxRounds*100))):0,f=[t.round!==void 0?t.maxRounds?`Turn ${t.round}/${t.maxRounds}`:`Turn ${t.round}`:"",t.currentTool&&t.status!=="completed"?`⚙ ${t.currentTool}`:"",d!==void 0?yc(d):""].filter(Boolean);return e.jsxs("div",{className:`ui-gram ${os[c]} ml-[15px] mb-1 mr-1 rounded-md border border-dark-border/70 bg-dark-surface px-2 py-1.5`,"data-testid":"subagent-progress","data-agent-id":t.id,"data-agent-status":t.status,children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"flex shrink-0 items-center",title:t.status,children:e.jsx(jc,{status:t.status})}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-meta font-medium text-dark-text",title:t.name,children:t.name}),xr(t.status)&&e.jsx("span",{className:"shrink-0 text-badge text-dark-muted",children:xr(t.status)}),e.jsx(Nc,{agent:t,labeled:!0})]}),e.jsx("div",{className:"mt-1 flex items-center gap-2",children:e.jsx("div",{className:"h-1 min-w-0 flex-1 overflow-hidden rounded-full bg-dark-hover",role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":h?u:void 0,"aria-label":t.name,children:h?e.jsx("div",{className:`h-full rounded-full transition-[width] duration-500 ease-out ${fr(t.status)}`,style:{width:`${u}%`}}):e.jsx("div",{className:`h-full w-1/4 animate-pulse rounded-full ${fr(t.status)}`})})}),f.length>0&&e.jsx("div",{className:"mt-0.5",children:e.jsx("span",{className:"whitespace-nowrap font-mono text-badge tabular-nums text-dark-muted",children:f.join(" · ")})})]})}),Ec=a.memo(function({sessionId:t,toolCallId:s,scope:r}){const i=rr(d=>t?d.agentsBySession[t]:void 0),c=a.useMemo(()=>t&&i?rr.getState().getAgentByToolCallId(t,s,r):void 0,[t,s,r,i]);return c?e.jsx(Sc,{agent:c}):null}),Cc=/^agent$/i;function Mc(n){let t=n;if(typeof n=="string")try{t=JSON.parse(n)}catch{return}if(!t||typeof t!="object"||Array.isArray(t))return;const s=t.scope;return typeof s=="string"&&s.trim()?s:void 0}function Ac(){const n=ht(t=>t.tokenRate);return e.jsx(Ro,{size:12,rate:n})}const Tc={terminal:Fr,diff:Or,read:rn,search:ts,web:eo,computer:Za,image:Qa,app:Xa,agent:es,generic:Ya},Rc=a.memo(function({toolCall:t,defaultCollapsed:s=!0,sessionId:r}){const i=t.status==="running",c=Cc.test(t.name)&&!!r,d=c?Mc(t.args):void 0,h=Gi(i),u=t.result!==void 0&&t.result!==null,f=t.status==="error",g=as(t.name),k=u?Le(t.result):"",w=Rt(t.args),{openFileMenu:m,menuNode:j}=mn(),A=pc(t.name,t.args),p=f&&u?Ji(k):"",[T,M]=a.useState(s),U=a.useRef(t.status);a.useEffect(()=>{U.current==="running"&&t.status!=="running"&&(t.diff||M(!0)),U.current=t.status},[t.status,t.diff,t.name]);const N=Wr(t.duration),R=i?"bg-accent-blue":f?"bg-accent-red":"bg-accent-green",S=i?"running":f?"error":"success",D=ds(i,!1)==="streaming"?"draft":f?"failed":"committed",B=Tc[ls(t.name)];return e.jsxs("div",{className:`tl-row ui-gram ui-gram--flat ui-gram--wash ${os[D]} group rounded-lg transition-colors hover:bg-dark-surface/40`,"data-testid":"toolcall-row",children:[e.jsx("span",{className:"tl-line","aria-hidden":"true"}),e.jsxs("div",{className:"relative flex items-center gap-2 px-2 py-1 cursor-pointer select-none",onClick:()=>M(!T),"data-testid":"toolcall-row-header",children:[e.jsx("span",{className:"flex h-3 w-3 shrink-0 items-center justify-center",children:i?e.jsx(Ac,{}):e.jsx("span",{className:`tl-node ${R}`,"data-status":S})}),e.jsx("span",{className:`shrink-0 ${f?"text-accent-red":"text-dark-muted"}`,children:e.jsx(B,{size:12,"aria-hidden":"true"})}),e.jsx("span",{className:`font-medium text-compact shrink-0 truncate ${i?"text-shimmer":"text-dark-text"}`,children:t.name}),f&&p?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"shrink-0 text-dark-muted/50",children:"·"}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-meta text-accent-red",title:k,children:p})]}):A?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"shrink-0 text-dark-muted/50",children:"·"}),e.jsx("span",{className:"min-w-0 flex-1 truncate font-mono text-meta text-dark-muted",title:A,children:A})]}):e.jsx("span",{className:"min-w-0 flex-1"}),g&&w&&!f&&e.jsxs("button",{type:"button",onClick:X=>{X.stopPropagation(),hn(w)},onContextMenu:X=>m(X,w),className:`flex max-w-[16rem] shrink-0 items-center gap-1 truncate rounded-full border border-dark-border/70 px-2 py-0.5 text-meta font-mono text-accent-blue
8
- transition-colors hover:border-accent-blue/40 hover:bg-dark-hover`,title:w,children:[e.jsx(Br,{size:10,className:"shrink-0"}),e.jsx("span",{className:"truncate",children:w})]}),i&&!c&&e.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-meta tabular-nums text-accent-blue",children:[e.jsx(an,{size:10}),e.jsx("span",{ref:h,children:"0s"})]}),!i&&N&&!c&&e.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-badge tabular-nums text-dark-muted",children:[e.jsx(an,{size:10}),e.jsx("span",{children:N})]}),e.jsx("span",{className:`ml-auto shrink-0 text-dark-muted/60 transition-transform ${T?"opacity-0 group-hover:opacity-100":"rotate-180"}`,children:e.jsx(nt,{size:13})})]}),c&&e.jsx(Ec,{sessionId:r,toolCallId:t.id,scope:d}),!T&&e.jsx("div",{className:"relative ml-[15px] pb-1 pl-3 border-l border-dark-border/25",children:e.jsx(bc,{toolCall:t})}),j]})});function ta(n){const t=n??"";let s=t,r=null,i=null;try{const c=JSON.parse(t);if(c&&typeof c=="object")if("payload"in c){i=typeof c.toolName=="string"?c.toolName:null;const d=c.payload;typeof d=="string"?s=d:d&&typeof d=="object"?(r=d,s=JSON.stringify(d,null,2)):s=""}else Array.isArray(c)||(r=c)}catch{s=t}if(!r&&s.length>0&&/^[\s]*[{[]/.test(s))try{const c=JSON.parse(s);c&&typeof c=="object"&&!Array.isArray(c)&&(r=c)}catch{}return{toolName:i,payloadText:s,args:r}}const us=/\b(bash|shell|exec|cmd|powershell|terminal)\b/i,na=/write_file|write|save|create|upload|deploy|publish/i,sa=/edit_file|edit|patch|apply|update|replace/i,ra=/read_file|read|view|cat|open|list|dir\b/i,Dc=/file_delete|delete|remove|unlink|\brm\b|\bdel\b/i,$c=/\b(glob|find|locate)\b/i,Pc=/\b(grep|rg|search_contents)\b/i,zc=/web_search|search_web|browse/i,aa=/web_fetch|fetch|http|curl|wget|download|request|api/i,Lc=/git|commit|merge|rebase|push|checkout/i,_c=/install|uninstall|npm|pnpm|yarn|pip|cargo|gem|apt|brew|choco/i,ms=/send_message|send_file|message|notify|post/i;function Ic(n){const t=n.toLowerCase();return us.test(t)?"verbRunCommand":zc.test(t)?"verbSearchWeb":na.test(t)?"verbWriteFile":sa.test(t)?"verbEditFile":Dc.test(t)?"verbDeleteFile":ra.test(t)?"verbReadFile":Pc.test(t)?"verbSearchContents":$c.test(t)?"verbFindFiles":aa.test(t)?"verbFetchUrl":Lc.test(t)?"verbGit":_c.test(t)?"verbInstall":ms.test(t)?"verbSendMessage":"verbRunTool"}function zn(n,t){const s=(n??"").replace(/\s+/g," ").trim();return s.length>t?`${s.slice(0,t-1)}…`:s}function Oc(n){if(!n)return null;for(const t of["file_path","filePath","path","file","target"]){const s=n[t];if(typeof s=="string"&&s.length>0)return s}return null}function Fc(n,t){const{payloadText:s,args:r}=ta(t),i=n.toLowerCase();if(us.test(i))return"";const c=Oc(r);if(c)return c;const d=s.match(/(?:file_path|path|file)["\s:=]+([^\s",}]+)/i);if(d!=null&&d[1])return d[1];if(aa.test(i)&&typeof(r==null?void 0:r.url)=="string"&&r.url)return zn(r.url,48);if(ms.test(i)){const h=typeof(r==null?void 0:r.text)=="string"?r.text:typeof(r==null?void 0:r.message)=="string"?r.message:s;return zn(h,48)}return zn(s,48)}function Bc(n,t){const{payloadText:s,args:r}=ta(t),i=n.toLowerCase();if(us.test(i)){const c=typeof(r==null?void 0:r.command)=="string"?r.command:s;return c?{text:c,mono:!0}:null}if(na.test(i)||sa.test(i)){const c=typeof(r==null?void 0:r.content)=="string"?r.content:typeof(r==null?void 0:r.data)=="string"?r.data:"";if(c)return{text:c,mono:!0};if(r){const d=gr(r);if(d)return{text:d,mono:!0}}return s?{text:s,mono:!0}:null}if(ms.test(i)){const c=typeof(r==null?void 0:r.text)=="string"?r.text:typeof(r==null?void 0:r.message)=="string"?r.message:s;return c?{text:c,mono:!1}:null}if(ra.test(i))return null;if(r){const c=gr(r);if(c)return{text:c,mono:!0}}return s?{text:s,mono:!0}:null}function gr(n){return n?Object.entries(n).filter(([,t])=>t!=null).map(([t,s])=>{let r=typeof s=="string"?s:JSON.stringify(s);return r.length>96&&(r=`${r.slice(0,95)}…`),`${t}=${r.replace(/\n/g," ")}`}).join(" "):""}function Hc(n,t){const s=Jn(t);return s?{path:s,external:!0}:{key:"scopeLocal",external:!1}}function Uc({pre:n,obj:t}){return e.jsxs("span",{className:"min-w-0 text-sm text-dark-muted",children:[e.jsx("span",{children:n}),t&&e.jsx("b",{className:"font-semibold text-dark-text",children:t})]})}const Ln=5,_n=420;function Kc({text:n,mono:t=!0}){const{t:s}=K("hook"),[r,i]=a.useState(!1),c=n.split(`
9
- `),d=c.length>Ln||n.length>_n;let h=n;!r&&d&&(h=c.slice(0,Ln).join(`
10
- `),h.length>_n&&(h=`${h.slice(0,_n).trimEnd()}…`));const u=r?s("showLess"):c.length>Ln?s("showAllLines",{n:c.length}):s("showAll");return e.jsxs("div",{className:`rounded-lg border border-dark-border bg-dark-surface p-2.5 text-xs leading-relaxed break-all whitespace-pre-wrap ${t?"font-mono":""} text-dark-text`,children:[h,d&&e.jsx("button",{type:"button",onClick:()=>i(f=>!f),className:"mt-1 block text-meta text-accent-blue hover:underline",children:u})]})}const In=15,qc=a.memo(function({approval:t,onResolved:s}){const{t:r}=K("hook"),[i,c]=a.useState(!1),[d,h]=a.useState(In),u=a.useRef(null),f=t.status==="pending",{level:g,reasonKey:k}=Do(t.toolName,t.askPayload),w=$o[g],m=Bc(t.toolName,t.askPayload),j=Hc(t.toolName,t.askPayload),A=Jn(t.askPayload)!==null;a.useEffect(()=>{if(f)return h(In),u.current=setInterval(()=>{h(D=>D<=1?(u.current&&clearInterval(u.current),0):D-1)},1e3),()=>{u.current&&clearInterval(u.current)}},[f,t.approvalId]),a.useEffect(()=>{const D=(t.timeoutMs??15e3)>0;d===0&&f&&!i&&D&&p()},[d]);const p=a.useCallback(()=>{!f||i||(c(!0),u.current&&clearInterval(u.current),wt.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId})}),s==null||s(t.approvalId,"approved"))},[f,i,t.approvalId,s]),T=a.useCallback(()=>{!f||i||(c(!0),u.current&&clearInterval(u.current),wt.send({type:"hook_deny",data:JSON.stringify({approvalId:t.approvalId})}),s==null||s(t.approvalId,"denied"))},[f,i,t.approvalId,s]),M=a.useCallback(()=>{if(!f||i)return;c(!0),u.current&&clearInterval(u.current);const D=ar.getState(),B=Jn(t.askPayload);B?(D.addToSessionAllowList(t.toolName,B),wt.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId,sessionAllow:!0})})):(D.addToSessionAllowList(t.toolName),wt.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId})})),s==null||s(t.approvalId,"approved")},[f,i,t.approvalId,t.toolName,t.askPayload,s]),U=a.useCallback(()=>{!f||i||(c(!0),u.current&&clearInterval(u.current),ar.getState().setAutoMode(!0),ze.getState().setAuto(!0),wt.send({type:"hook_allow",data:JSON.stringify({approvalId:t.approvalId})}),s==null||s(t.approvalId,"approved"))},[f,i,t.approvalId,s]);if(!f){const D=t.status==="approved";return e.jsx("div",{className:`flex items-center gap-2 px-3 py-2 rounded-lg text-xs ${D?"bg-accent-green/10 border border-accent-green/30 text-accent-green":"bg-accent-red/10 border border-accent-red/30 text-accent-red"}`,children:D?e.jsxs(e.Fragment,{children:[e.jsx(He,{size:14}),e.jsxs("span",{children:[r("alreadyAllowed"),t.toolName]})]}):e.jsxs(e.Fragment,{children:[e.jsx(At,{size:14}),e.jsxs("span",{children:[r("alreadyDenied"),t.toolName]})]})})}const N=d/In*100,R=d<=5,S=[{id:"allow",index:1,label:r("optionAllow"),hint:r("optionAllowHint"),action:p,kind:"primary"},{id:"allow_session",index:3,label:r("optionAllowAlways"),hint:A?r("optionAllowPathHint"):r("optionAllowAlwaysHint",{tool:t.toolName}),action:M,kind:"secondary"},{id:"auto_mode",index:4,label:r("optionAutoMode"),hint:r("optionAutoModeHint"),action:U,kind:"secondary"},{id:"deny",index:2,label:r("optionDeny"),hint:r("optionDenyHint"),action:T,kind:"danger"}],P={primary:"bg-accent-blue text-accent-fg hover:opacity-90 shadow-sm",secondary:"border border-dark-border bg-dark-bg text-dark-text hover:bg-dark-hover",danger:"text-dark-muted hover:bg-accent-red/15 hover:text-accent-red"};return e.jsxs("div",{className:`bg-dark-bg border rounded-xl overflow-hidden ${j.external?"border-accent-yellow":w.border}`,children:[e.jsxs("div",{className:`flex items-center gap-2 px-3 py-2 border-b ${w.bg} ${j.external?"border-accent-yellow":w.border}`,children:[e.jsxs("span",{className:"px-1.5 py-0.5 rounded text-badge font-bold border shrink-0 ${rc.badge}",children:[w.icon," ",g]}),e.jsx("span",{className:"flex-none w-6 h-6 rounded-md bg-accent-blue/10 text-accent-blue inline-flex items-center justify-center",children:e.jsx(to,{size:13})}),e.jsx("div",{className:"min-w-0 flex-1",children:e.jsx(Uc,{pre:r(Ic(t.toolName)),obj:Fc(t.toolName,t.askPayload)})}),j.external&&j.path?e.jsxs("span",{className:"flex items-center gap-1 text-badge px-1.5 py-0.5 rounded bg-accent-yellow/15 text-accent-yellow border border-accent-yellow shrink-0",title:j.path,children:[e.jsx(qn,{size:10}),j.path.length>32?`${j.path.slice(0,31)}…`:j.path]}):e.jsx("span",{className:"text-badge text-dark-muted/60 shrink-0",children:r("scopeLocal")}),e.jsxs("div",{className:"flex items-center gap-1.5 ml-1 shrink-0",children:[e.jsx(an,{size:11,className:R?"text-accent-red":"text-dark-muted"}),e.jsxs("span",{className:`text-meta font-mono ${R?"text-accent-red animate-pulse":"text-dark-muted"}`,children:[d,"s"]}),e.jsx("div",{className:"w-10 h-1 bg-dark-border rounded-full overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full transition-all duration-1000 ${R?"bg-accent-red":d<=8?"bg-accent-yellow":"bg-accent-green"}`,style:{width:`${N}%`}})})]})]}),e.jsxs("div",{className:"px-3 py-2.5 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"text-dark-muted shrink-0",children:r("tool")}),e.jsx("code",{className:"text-accent-blue font-mono text-xs bg-dark-surface px-1.5 py-0.5 rounded",children:t.toolName}),e.jsx("span",{className:"text-badge text-dark-muted/50",children:r(k)})]}),m&&e.jsx(Kc,{text:m.text,mono:m.mono}),(g==="CRITICAL"||g==="HIGH")&&e.jsxs("div",{className:`flex items-center gap-1.5 text-meta px-2 py-1 rounded ${w.bg} ${w.text}`,children:[e.jsx(ft,{size:12}),e.jsx("span",{children:r(g==="CRITICAL"?"highRiskWarning":"mediumRiskConfirm")})]}),e.jsx("div",{className:"flex flex-wrap items-center gap-1.5 pt-1",children:S.map(D=>e.jsxs("button",{onClick:D.action,disabled:i,className:`inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md text-xs transition-colors disabled:opacity-50 ${P[D.kind]}`,children:[e.jsx("span",{className:`text-avatar font-mono rounded px-0.5 ${D.kind==="primary"?"bg-white/20":"bg-dark-surface text-dark-muted"}`,children:D.index}),e.jsx("span",{children:D.label}),e.jsx("span",{className:`text-badge ${D.kind==="primary"?"text-accent-fg/70":"text-dark-muted/60"} hidden sm:inline`,children:D.hint})]},D.id))}),e.jsx("div",{className:"text-badge text-dark-muted/50 pt-0.5 border-t border-dark-border/50",children:r("clickToSelect")})]})]})}),Xt={xlsx:{icon:Gn},xls:{icon:Gn},csv:{icon:rn},docx:{icon:rn},text:{icon:ns}};function kr(n){return!n&&n!==0?"—":n<1024?`${n} B`:n<1024*1024?`${(n/1024).toFixed(1)} KB`:`${(n/1024/1024).toFixed(2)} MB`}const Gc=a.memo(function({job:t}){var j,A;const{t:s}=K(),{stage:r}=t,{openFileMenu:i,menuNode:c}=mn(),d=a.useCallback(p=>{switch(p){case"xlsx":case"xls":return"Excel";case"csv":return"CSV";case"docx":return"Word";default:return s("fileJob.kindText")}},[s]),h=a.useCallback(p=>{de.files.download(p).then(T=>{T.success||H.error(T.error||s("fileJob.downloadFailed"))})},[s]),u=a.useMemo(()=>t.attachments||[],[t.attachments]),f=a.useMemo(()=>t.parsedFiles||[],[t.parsedFiles]),g=a.useMemo(()=>t.mapping||[],[t.mapping]),k=a.useMemo(()=>t.result||[],[t.result]),w=t.renderProgress??(r==="rendering"?0:100),m=t.parseProgress??(r==="parsing"?0:100);return e.jsxs("div",{className:"mt-2 rounded-xl border border-dark-border bg-dark-surface/60 overflow-hidden max-w-2xl",children:[e.jsxs("div",{className:"flex items-center gap-2 px-3.5 py-2.5 border-b border-dark-border/60 bg-dark-surface",children:[r==="complete"?e.jsx(Xs,{size:15,className:"text-accent-green shrink-0"}):r==="error"?e.jsx(ft,{size:15,className:"text-accent-red shrink-0"}):e.jsx(Ce,{size:15,className:"text-accent-blue animate-spin shrink-0"}),e.jsx("span",{className:"text-compact font-medium text-dark-text",children:Wc(r,s)}),e.jsx("div",{className:"flex-1"}),e.jsx("span",{className:"text-badge font-mono text-dark-muted/60",children:t.jobId})]}),e.jsxs("div",{className:"px-3.5 py-3 space-y-3",children:[u.length>0&&e.jsx("div",{className:"flex flex-wrap gap-2",children:u.map((p,T)=>{const U=(Xt[p.kind]||Xt.text).icon;return e.jsxs("div",{className:"flex items-center gap-2 rounded-lg border border-dark-border bg-dark-bg px-2.5 py-1.5",children:[e.jsx(U,{size:14,className:"text-accent-blue shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-xs text-dark-text truncate max-w-[160px]",children:p.fileName}),e.jsxs("div",{className:"text-badge text-dark-muted",children:[kr(p.size)," · ",d(p.kind),p.role&&p.role!=="unknown"&&e.jsxs("span",{className:q("ml-1",p.role==="data"?"text-accent-green":"text-accent-purple"),children:["· ",p.role==="data"?s("fileJob.roleData"):s("fileJob.roleTemplate")]})]})]})]},`${p.fileName}-${T}`)})}),r==="parsing"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-xs text-dark-muted",children:s("fileJob.parsing",{file:((j=u[0])==null?void 0:j.fileName)||((A=f[0])==null?void 0:A.fileName)||""})}),e.jsx(lr,{value:m,size:"sm",showLabel:!0})]}),f.length>0&&r!=="error"&&e.jsxs("div",{className:"space-y-1.5",children:[f.map(p=>e.jsxs("div",{className:"flex items-center gap-2 text-xs text-dark-muted",children:[e.jsx(Xs,{size:13,className:"text-accent-green shrink-0"}),e.jsx("span",{className:"truncate",children:p.fileName}),e.jsx("span",{className:"text-badge text-dark-muted/70",children:s("fileJob.parsedSummary",{rows:p.rowCount,fields:p.fields.length})})]},p.fileName)),f[0]&&e.jsxs("div",{className:"flex flex-wrap gap-1 pt-1",children:[f[0].fields.slice(0,12).map(p=>e.jsx("span",{className:"rounded bg-dark-bg border border-dark-border/60 px-1.5 py-0.5 text-badge font-mono text-dark-muted",children:p},p)),f[0].fields.length>12&&e.jsxs("span",{className:"text-badge text-dark-muted/60",children:["+",f[0].fields.length-12]})]})]}),g.length>0&&e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("div",{className:"text-meta text-dark-muted",children:s("fileJob.mappingTitle")}),e.jsx("div",{className:"overflow-hidden rounded-lg border border-dark-border",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"bg-dark-bg text-dark-muted",children:[e.jsx("th",{className:"text-left px-2.5 py-1.5 font-medium",children:s("fileJob.templatePlaceholder")}),e.jsx("th",{className:"px-2 py-1.5"}),e.jsx("th",{className:"text-left px-2.5 py-1.5 font-medium",children:s("fileJob.dataField")})]})}),e.jsx("tbody",{children:g.slice(0,8).map(p=>e.jsxs("tr",{className:"border-t border-dark-border/50",children:[e.jsx("td",{className:"px-2.5 py-1.5 font-mono text-accent-purple",children:"{{"+p.placeholder+"}}"}),e.jsx("td",{className:"px-2 py-1.5 text-dark-muted",children:e.jsx(Hr,{size:11})}),e.jsx("td",{className:"px-2.5 py-1.5 font-mono text-accent-blue",children:p.field})]},p.placeholder))})]})}),g.length>8&&e.jsx("div",{className:"text-badge text-dark-muted/60",children:s("fileJob.mappingMore",{n:g.length-8})})]}),r==="rendering"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("div",{className:"text-xs text-dark-muted",children:s("fileJob.rendering",{current:t.currentRow||0,total:t.totalRows||0})}),e.jsx(lr,{value:w,size:"sm",variant:"warning",showLabel:!0})]}),k.length>0&&r==="complete"&&e.jsx("div",{className:"space-y-1.5",children:k.map(p=>{const M=(Xt[p.format]||Xt.text).icon,U=p.failedRows.length>0;return e.jsxs("div",{onContextMenu:N=>i(N,p.path),className:"rounded-lg border border-dark-border bg-dark-bg px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(M,{size:15,className:"text-accent-green shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-xs text-dark-text truncate",children:p.fileName}),e.jsxs("div",{className:"text-badge text-dark-muted",children:[kr(p.size)," · ",s("fileJob.rowsDone",{done:p.successCount,total:p.rowCount}),U&&e.jsxs("span",{className:"text-accent-red",children:[" · ",s("fileJob.rowsFailed",{n:p.failedRows.length})]})]})]}),e.jsxs("button",{onClick:()=>hn(p.path),className:"flex items-center gap-1 rounded-md bg-dark-surface border border-dark-border text-dark-muted px-2 py-1 text-meta hover:bg-dark-hover hover:text-dark-text transition-colors",title:s("chat.previewInPanel"),children:[e.jsx(Br,{size:12}),s("chat.previewInPanel")]}),e.jsxs("button",{onClick:()=>h(p.path),className:"flex items-center gap-1 rounded-md bg-accent-blue/10 text-accent-blue px-2 py-1 text-meta hover:bg-accent-blue/20 transition-colors",title:s("fileJob.download"),children:[e.jsx(no,{size:12}),s("fileJob.download")]})]}),U&&e.jsxs("div",{className:"mt-1.5 space-y-0.5 border-t border-dark-border/50 pt-1.5",children:[p.failedRows.slice(0,3).map(N=>e.jsxs("div",{className:"flex items-center gap-1.5 text-badge text-accent-red",children:[e.jsx(Ir,{size:10,className:"shrink-0"}),e.jsxs("span",{children:["#",N.index+1]}),e.jsx("span",{className:"truncate",children:N.error})]},N.index)),p.failedRows.length>3&&e.jsx("div",{className:"text-badge text-dark-muted/70",children:s("fileJob.moreRows",{n:p.failedRows.length-3})})]})]},p.path)})}),r==="error"&&e.jsxs("div",{className:"flex items-start gap-2 rounded-lg border border-accent-red/30 bg-accent-red/5 px-3 py-2.5",children:[e.jsx(ft,{size:15,className:"text-accent-red shrink-0 mt-0.5"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-xs font-medium text-accent-red",children:t.error||s("fileJob.error")}),t.errorDetail&&e.jsx("div",{className:"mt-0.5 text-meta text-dark-muted break-words",children:t.errorDetail})]})]})]}),c]})});function Wc(n,t){switch(n){case"uploaded":return t("fileJob.stageUploaded");case"parsing":return t("fileJob.stageParsing");case"mapping":return t("fileJob.stageMapping");case"rendering":return t("fileJob.stageRendering");case"complete":return t("fileJob.stageComplete");case"error":return t("fileJob.stageError");default:return t("fileJob.stageUploaded")}}const vr={auth:{icon:ro,color:"text-accent-red"},rate_limit:{icon:Pn,color:"text-accent-yellow"},busy:{icon:Pn,color:"text-accent-yellow"},timeout:{icon:Pn,color:"text-accent-yellow"},network:{icon:so,color:"text-accent-yellow"},model:{icon:es,color:"text-accent-red"},tool:{icon:ft,color:"text-accent-yellow"},unknown:{icon:ft,color:"text-accent-red"}},Jc=a.memo(function({error:t,onRetry:s}){const{t:r}=K(),[i,c]=a.useState(!1),d=vr[t.category]||vr.unknown,h=d.icon,u=()=>{window.dispatchEvent(new CustomEvent("switch-tab",{detail:"models"}))};return e.jsxs("div",{className:"mt-2 max-w-2xl overflow-hidden rounded-xl border border-accent-red/30 bg-dark-surface",children:[e.jsxs("div",{className:"flex items-start gap-3 px-3.5 py-3",children:[e.jsx(h,{size:18,className:q("shrink-0 mt-0.5",d.color)}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-compact font-medium text-dark-text",children:t.summary}),t.detail&&t.detail!==t.summary&&e.jsx("div",{className:"mt-0.5 text-meta text-dark-muted/80 break-words",children:t.detail.slice(0,160)}),e.jsxs("div",{className:"mt-1.5 flex items-center gap-2",children:[t.retryable&&s&&e.jsxs("button",{onClick:s,className:"flex items-center gap-1 rounded-md bg-accent-blue/10 text-accent-blue px-2 py-1 text-meta hover:bg-accent-blue/20 transition-colors",children:[e.jsx(Tt,{size:11}),r("errorCard.retry")]}),t.category==="auth"&&e.jsxs("button",{onClick:u,className:"flex items-center gap-1 rounded-md bg-dark-hover text-dark-text px-2 py-1 text-meta hover:bg-dark-border transition-colors",children:[e.jsx(ao,{size:11}),r("errorCard.modelSettings")]}),t.detail&&e.jsxs("button",{onClick:()=>c(f=>!f),className:"flex items-center gap-0.5 text-meta text-dark-muted hover:text-dark-text transition-colors",children:[e.jsx(nt,{size:11,className:q("transition-transform",i&&"rotate-180")}),r("errorCard.details")]})]})]})]}),i&&t.detail&&e.jsx("div",{className:"border-t border-dark-border/60 bg-dark-bg px-3.5 py-2.5 text-meta font-mono text-dark-muted break-words max-h-40 overflow-y-auto custom-scrollbar",children:t.detail})]})});function Vc({info:n}){const{t}=K(),s=n.stdout.length>0,r=n.stderr.length>0,i=s||r,c=!n.running&&(!!n.error||n.timedOut===!0||n.exitCode!==null&&n.exitCode!==0);return e.jsxs("div",{className:"min-w-0 text-dark-text",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("span",{className:"select-none pt-[1px] font-mono text-compact leading-relaxed text-accent-green",children:"$"}),e.jsx("code",{className:"min-w-0 flex-1 break-all whitespace-pre-wrap font-mono text-compact leading-relaxed",children:n.command})]}),n.running?e.jsxs("div",{className:"mt-2 flex items-center gap-1.5 text-xs text-dark-muted",children:[e.jsx(Ce,{size:12,className:"animate-spin","aria-hidden":"true"}),t("chat.shellRunning")]}):e.jsxs(e.Fragment,{children:[i&&e.jsxs("pre",{className:"mt-2 max-h-[420px] overflow-auto rounded-lg border border-dark-border/40 bg-dark-bg/70 px-3 py-2 font-mono text-compact leading-relaxed whitespace-pre-wrap break-all custom-scrollbar",children:[s&&e.jsx("span",{children:n.stdout}),r&&e.jsxs("span",{className:"text-accent-red",children:[s?n.stdout.endsWith(`
11
- `)?"":`
12
- `:"",n.stderr]})]}),e.jsxs("div",{className:"mt-1.5 flex flex-wrap items-center gap-x-2.5 gap-y-1 text-meta",children:[n.error?e.jsxs("span",{className:"flex items-center gap-1 text-accent-red",children:[e.jsx(ft,{size:11,"aria-hidden":"true"}),t("chat.shellRequestFailed",{message:n.error})]}):e.jsx("span",{className:c?"text-accent-red":"text-accent-green",children:n.exitCode===null?t("chat.shellNoExitCode"):t("chat.shellExitCode",{code:n.exitCode})}),n.durationMs>0&&e.jsx("span",{className:"tabular-nums text-dark-muted/70",children:Wr(n.durationMs)}),n.timedOut&&e.jsx("span",{className:"text-accent-red",children:t("chat.shellTimedOut")}),n.truncated&&e.jsx("span",{className:"text-dark-muted/70",children:t("chat.shellTruncated")}),n.shellKind&&e.jsx("span",{className:"text-dark-muted/60",children:n.shellKind})]}),!i&&!n.error&&e.jsx("div",{className:"mt-1.5 text-meta text-dark-muted/70",children:t("chat.shellNoOutput")})]}),!n.running&&n.cwd&&e.jsx("div",{className:"mt-1 truncate font-mono text-meta text-dark-muted/50",title:n.cwd,children:n.cwd})]})}const On=360,Fn=300,Yc=180,Pe=8;function hs({src:n,alt:t,children:s,className:r}){const i=a.useRef(null),c=a.useRef(null),[d,h]=a.useState(null),u=a.useCallback(()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},[]),f=a.useCallback(()=>{u(),c.current=window.setTimeout(()=>{var m;c.current=null;const w=(m=i.current)==null?void 0:m.getBoundingClientRect();w&&w.width>0&&h(w)},Yc)},[u]),g=a.useCallback(()=>{u(),h(null)},[u]);a.useEffect(()=>()=>u(),[u]),a.useEffect(()=>{if(!d)return;const w=()=>h(null);return window.addEventListener("scroll",w,!0),window.addEventListener("resize",w),()=>{window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w)}},[d]);let k=null;if(d){const w=window.innerWidth,m=window.innerHeight,j=d.top>=Fn+Pe+Pe,A=j?d.top-Pe:d.bottom+Pe,p=d.left+d.width/2-On/2,T=Math.max(Pe,Math.min(p,Math.max(Pe,w-On-Pe))),M=j?A:Math.min(A,Math.max(Pe,m-Fn-Pe));k={left:T,top:M,transform:j?"translateY(-100%)":void 0}}return e.jsxs("span",{ref:i,className:q("inline-flex min-w-0",r),onMouseEnter:f,onMouseLeave:g,onFocus:f,onBlur:g,children:[s,d&&k&&e.jsx("div",{role:"tooltip","data-testid":"image-hover-preview",className:"pointer-events-none fixed z-[70] overflow-hidden rounded-lg border border-dark-border bg-dark-surface p-1 shadow-xl",style:k,children:e.jsx("img",{src:n,alt:t,draggable:!1,className:"block rounded object-contain",style:{maxWidth:On-8,maxHeight:Fn}})})]})}function oa({src:n,alt:t,className:s}){return e.jsx("img",{src:n,alt:t,draggable:!1,loading:"lazy",className:q("block h-10 w-10 shrink-0 rounded-md object-cover",s)})}function Xc({src:n,name:t,path:s,size:r=13,className:i,hoverPreview:c=!0,thumb:d=!1}){const{t:h}=K(),u=a.useCallback(()=>{Jr({src:n,name:t,path:s})},[n,t,s]);if(!n)return e.jsx(Qs,{size:r,className:"shrink-0 text-dark-muted","aria-hidden":"true"});const f=e.jsx("button",{type:"button",onClick:u,title:`${t} · ${h("fileJob.openInPanel")}`,"aria-label":`${t} — ${h("fileJob.openInPanel")}`,className:q(d?"cursor-zoom-in overflow-hidden rounded-md ring-1 ring-dark-border/60 transition-transform hover:scale-[1.03] focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-blue/60":"cursor-zoom-in rounded p-0.5 text-dark-muted transition-colors hover:bg-accent-blue/10 hover:text-accent-blue focus:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/60",i),children:d?e.jsx(oa,{src:n,alt:t,className:"rounded-none"}):e.jsx(Qs,{size:r,"aria-hidden":"true"})});return c?e.jsx(hs,{src:n,alt:t,className:"shrink-0",children:f}):f}function Qc({src:n,name:t,path:s,className:r}){const{t:i}=K(),c=a.useCallback(()=>{Jr({src:n,name:t,path:s})},[n,t,s]);return e.jsx(hs,{src:n,alt:t,className:r,children:e.jsxs("button",{type:"button",onClick:c,title:`${t} · ${i("fileJob.openInPanel")}`,className:"inline-flex max-w-full cursor-zoom-in items-center gap-2 rounded-lg border border-dark-border/60 bg-dark-bg/60 p-1 pr-2 text-xs transition-colors hover:border-accent-blue/40 hover:bg-dark-hover",children:[e.jsx(oa,{src:n,alt:t}),e.jsx("span",{className:"truncate font-mono text-dark-text",children:t})]})})}const Zc=/<attachment\s+path="([^"]*)"\s*\/>/g,el=/<image\s+name="([^"]*)"\s*\/>/g,tl=/\[Pasted text #(\d+)(?:\s*\+\d+ lines?)?\]/g,nl=new RegExp("(?<![\\w@.])@((?:[\\w@.()[\\]{}$%-]+[\\\\/])+[\\w@.()[\\]{}$%-]+|[\\w@.()[\\]{}$%-]*[\\w@()[\\]{}$%-]\\.[A-Za-z0-9]{1,12})","g");function sl(n){return!n||n.length>400?!1:n.includes("/")||n.includes("\\")?Vr(n):/\.[A-Za-z0-9]{1,12}$/.test(n)}function Qn(n){if(!n)return[];const t=[],s=i=>{i&&t.push({kind:"text",value:i})};return n.split(nl).forEach((i,c)=>{if(c%2===1){sl(i)?t.push({kind:"mention",value:i}):s(`@${i??""}`);return}i.split(Lo).forEach((h,u)=>{if(u%2===1){const{path:f,tail:g}=_o(h);if(f&&Vr(f)){t.push({kind:"path",value:f}),s(g);return}}s(h)})}),t}function rl(n,t){const s=[];let r=0;for(const i of n.matchAll(tl)){const c=i.index??0,d=Number.parseInt(i[1]??"",10);c>r&&s.push(...Qn(n.slice(r,c)));const h=t.get(d);h===void 0?s.push({kind:"text",value:i[0]}):s.push({kind:"paste",value:i[0],id:d,content:h}),r=c+i[0].length}return r<n.length&&s.push(...Qn(n.slice(r))),s}function al(n,t){const s=[],r=[];let i=(n||"").replace(Zc,(d,h)=>(h&&s.push(h),"")).replace(el,(d,h)=>(h&&r.push(h),""));(s.length>0||r.length>0)&&(i=i.replace(/^(?:[ \t]*\n)+/,"")),i=i.replace(/\n{3,}/g,`
13
-
14
- `);const c=new Map((t??[]).map(d=>[d.id,d.content]));return{attachments:s,imageNames:r,segments:c.size>0?rl(i,c):Qn(i)}}function ol({path:n}){const{openFileMenu:t,menuNode:s}=mn(),r=n.split(/[\\/]/).pop()||n;return e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",title:n,onClick:()=>hn(n),onContextMenu:i=>t(i,n),className:"mr-1 inline-flex max-w-full items-center gap-1.5 rounded-lg border border-dark-border bg-dark-bg/60 px-2 py-1 align-middle text-xs transition-colors hover:border-accent-blue/40 hover:bg-dark-hover",children:[e.jsx(ss,{size:11,className:"shrink-0 text-dark-muted"}),e.jsx("span",{className:"truncate font-mono text-dark-text",children:r}),e.jsx("span",{className:"shrink-0 text-badge font-medium text-accent-blue",children:"<attachment>"})]}),s]})}function il({token:n,content:t}){const{t:s}=K(),[r,i]=a.useState(!1),[c,d]=a.useState(!1),h=async()=>{try{await navigator.clipboard.writeText(t),d(!0),setTimeout(()=>d(!1),2e3)}catch{}};return e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",onClick:()=>i(u=>!u),title:s(r?"chat.pasteCollapse":"chat.pasteExpand"),"aria-expanded":r,className:"mr-1 inline-flex max-w-full items-center gap-1.5 rounded-lg border border-dark-border bg-dark-bg/60 px-2 py-1 align-middle text-xs transition-colors hover:border-accent-blue/40 hover:bg-dark-hover",children:[e.jsx(ss,{size:11,className:"shrink-0 text-dark-muted"}),e.jsx("span",{className:"truncate font-mono text-dark-text",children:n}),r?e.jsx(on,{size:11,className:"shrink-0 text-dark-muted"}):e.jsx(nt,{size:11,className:"shrink-0 text-dark-muted"})]}),r&&e.jsxs("div",{className:"my-1.5 rounded-lg border border-dark-border bg-dark-bg/70 p-2",children:[e.jsxs("div",{className:"mb-1.5 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-badge font-medium text-dark-muted",children:s("chat.pasteOriginal")}),e.jsxs("button",{type:"button",onClick:h,className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",children:[c?e.jsx(He,{size:10}):e.jsx(Ur,{size:10}),s(c?"common.copied":"common.copy")]})]}),e.jsx("pre",{className:"max-h-56 overflow-auto whitespace-pre-wrap break-words font-mono text-meta leading-relaxed text-dark-text",children:t})]})]})}function cl({content:n,images:t,pastes:s}){const{t:r}=K(),{openFileMenu:i,menuNode:c}=mn(),d=a.useMemo(()=>al(n,s),[n,s]),h=a.useMemo(()=>(t??[]).map((u,f)=>{const g=d.imageNames[f],k=u.startsWith("data:")||u.startsWith("blob:"),w=k?r("fileJob.imageN",{n:f+1}):(u.split(/[?#]/)[0]??"").split(/[\\/]/).pop()||r("fileJob.imageN",{n:f+1});return{key:`${f}-${u.slice(0,48)}`,src:Po(u),name:g||w,path:k?void 0:u}}),[t,d.imageNames,r]);return e.jsxs("div",{className:"whitespace-pre-wrap break-words text-[14.5px] leading-relaxed",children:[d.attachments.map((u,f)=>e.jsx(ol,{path:u},`${u}-${f}`)),h.map(u=>e.jsx(Qc,{src:u.src,name:u.name,path:u.path,className:"mr-1 align-middle"},u.key)),d.segments.map((u,f)=>u.kind==="text"?e.jsx("span",{children:u.value},f):u.kind==="paste"?e.jsx(il,{token:u.value,content:u.content},f):u.kind==="mention"?e.jsxs("button",{type:"button",onClick:()=>hn(u.value),onContextMenu:g=>i(g,u.value),title:u.value,className:"inline-flex items-baseline rounded px-0.5 font-mono text-[0.9em] text-accent-blue underline decoration-accent-blue/40 underline-offset-2 hover:bg-accent-blue/10 transition-colors cursor-pointer",children:[e.jsx("span",{className:"text-dark-muted",children:"@"}),e.jsx("span",{className:"break-all",children:u.value})]},f):e.jsx(zo,{path:u.value},f)),c]})}const yr=12;function wr(n){const t=n.slice(0,yr).join(`
15
- `),s=n.length-yr;return s>0?`${t}
16
- … (${s})`:t}const ll=a.memo(function({created:t,modified:s,onOpenArtifacts:r,onOpenChanges:i}){const{t:c}=K();if(t.length===0&&s.length===0)return null;const d="inline-flex items-center gap-0.5 text-dark-muted hover:text-dark-text transition-colors focus:outline-none focus-visible:ring-1 focus-visible:ring-accent-blue/50 rounded";return e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-x-4 gap-y-0.5 text-xs","data-testid":"turn-result-footer",children:[t.length>0&&e.jsxs("button",{type:"button",onClick:r,className:d,"data-testid":"turn-result-artifacts",title:wr(t),children:[c("chat.viewAllArtifacts",{n:t.length}),e.jsx(xt,{size:11,className:"shrink-0 opacity-70"})]}),s.length>0&&e.jsxs("button",{type:"button",onClick:i,className:d,"data-testid":"turn-result-changes",title:wr(s),children:[c("chat.viewAllChanges",{n:s.length}),e.jsx(xt,{size:11,className:"shrink-0 opacity-70"})]})]})});function dl(n){for(const t of n.split(`
17
- `)){const s=t.trim();if(s)return s}return""}function ul(n){var s;const t=n.split(`
18
- `);for(let r=t.length-1;r>=0;r--){const i=(s=t[r])==null?void 0:s.trim();if(i)return i}return""}function ml({index:n,text:t,isStreaming:s,collapsed:r,onToggle:i}){const{t:c}=K(),d=r?s?ul(t):dl(t):"",u=ds(s,!1)==="streaming"?"draft":"committed";return e.jsxs("div",{children:[e.jsxs("button",{className:`ui-gram ui-gram--flat ui-gram--wash ${os[u]} flex w-full cursor-pointer select-none items-center gap-1.5 py-0.5 text-left text-xs`,onClick:()=>i(n),"data-testid":"thinking-toggle",children:[e.jsx(xt,{size:12,className:`shrink-0 text-dark-muted transition-transform ${r?"":"rotate-90"}`}),e.jsx("span",{className:`shrink-0 ${s?"text-shimmer":"text-dark-muted"}`,children:s?`${c("chat.thinking")}…`:c("chat.thoughtProcess")}),d&&e.jsx("span",{"data-testid":"thinking-summary",className:"min-w-0 flex-1 truncate text-dark-muted/60",title:d,children:d})]}),!r&&e.jsx("div",{"data-testid":"thinking-body",className:"mt-1 whitespace-pre-wrap break-words border-l border-dark-border/25 pl-3 text-xs text-dark-muted",children:t.replace(/\n{3,}/g,`
19
-
20
- `)})]})}const ia=5,hl=30,fl=["让我","我先","我现在","我发现","我注意到","我决定","我重新","我重试","我继续","我现在要","让我现在","let me","let's","i should","i need","i will","i'll","i am","i notice","i see","i try","i retry","i think","i continue","i re-","now i","first i","first, i"];function xl(n){const t=n.charCodeAt(0);return t>=19968&&t<=40959}function pl(n){let t="",s=!1;for(const r of n)r===" "||r===" "||r===" "?(s||(t+=" "),s=!0):(t+=r,s=!1);return t}function bl(n){return n>=97&&n<=122||n>=48&&n<=57||n===95}function ca(n){const t=pl(n.trimStart().toLowerCase());return fl.some(s=>{if(!t.startsWith(s))return!1;const r=t[s.length];return r===void 0||xl(s)||s==="i re-"?!0:!bl(r.charCodeAt(0))})}function gl(n){if(!n)return!1;const t=n.split(/\r?\n/).slice(0,hl);let s=0;for(const r of t)if(r.trim())if(ca(r)){if(s++,s>=ia)return!0}else return!1;return!1}function kl(n,t){if(!n)return{body:n||"",absorbed:""};if(!gl(n))return{body:n,absorbed:""};const s=n.split(/\r?\n/);let r=0,i=0;for(const d of s){if(!d.trim()){i++;continue}if(ca(d)){r++,i++;continue}break}if(r<ia)return{body:n,absorbed:""};let c=0;for(const d of s.slice(0,i)){if(c+=d.length,c>=n.length)break;n.startsWith(`\r
21
- `,c)?c+=2:(n[c]===`
22
- `||n[c]==="\r")&&(c+=1)}return{body:n.slice(c),absorbed:n.slice(0,c)}}const vl=new Set(["edit_file","edit_file_line","file_edit","file_append","notebook_edit","apply_patch","git_apply_patch","Edit","EditTool","NotebookEditTool"]);function jr(n){return n.replace(/\\/g,"/").replace(/^\.\//,"")}function yl(n){return typeof n.diff=="string"&&n.diff.trim().length>0}function wl(n){var c;const t=new Map,s=new Map,r=d=>{const h=jr(d);t.has(h)||(s.delete(h),t.set(h,d))},i=d=>{const h=jr(d);t.has(h)||s.has(h)||s.set(h,d)};for(const d of((c=n.fileJob)==null?void 0:c.result)??[])d!=null&&d.path&&r(d.path);for(const d of n.toolCalls??[]){if(!d||d.status==="error"||!as(d.name))continue;const h=Rt(d.args);h&&(vl.has(d.name)||yl(d)?i(h):r(h))}return{created:Array.from(t.values()),modified:Array.from(s.values())}}const Nr={thinking:0,tool:1,text:2};function jl(n){return n.thinkingBlocks&&n.thinkingBlocks.length>0?n.thinkingBlocks:n.thinking?[{index:Number.MIN_SAFE_INTEGER,text:n.thinking}]:[]}function Nl(n){return n.textBlocks&&n.textBlocks.length>0?n.textBlocks:n.content?[{index:Number.MAX_SAFE_INTEGER,text:n.content}]:[]}function Sl(n,t,s){const r=[];for(const i of n)r.push({kind:"thinking",key:`thinking-${i.index}`,index:i.index,block:i});for(const i of t)r.push({kind:"text",key:`text-${i.index}`,index:i.index,block:i});for(const i of s??[])r.push({kind:"tool",key:`tool-${i.id}`,index:i.index??Number.MAX_SAFE_INTEGER,toolCall:i});return r.sort((i,c)=>i.index-c.index||Nr[i.kind]-Nr[c.kind]),r}function El(n){let t=Number.MIN_SAFE_INTEGER;for(const s of n)t=Math.max(t,s.index);return t}function Cl(n,t){return n.some(s=>s.index>t)}function Ml(n){return!!(n.status==="running"||n.diff)}function Qt({onClick:n,title:t,children:s,danger:r=!1}){return e.jsx("button",{onClick:n,title:t,"aria-label":t,className:`inline-flex items-center justify-center rounded-md p-1.5 transition-colors ${r?"text-dark-muted hover:bg-accent-red/10 hover:text-accent-red":"text-dark-muted hover:bg-dark-hover hover:text-dark-text"}`,children:s})}function Bn({message:n,sessionId:t,onRegenerate:s,onDeleteMessage:r}){const{t:i,i18n:c}=K(),[d,h]=a.useState(!1),u=a.useRef(null);a.useEffect(()=>()=>{u.current&&clearTimeout(u.current)},[]);const f=a.useCallback(async()=>{try{await navigator.clipboard.writeText(n.content||n.thinking||""),h(!0),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>h(!1),2e3)}catch(w){console.error("Failed to copy message:",w)}},[n.content,n.thinking]),g=qi(),k=a.useCallback(()=>{if(g!=="idle"){Et();return}Ki(n.content||"",Bo(c.language)).then(w=>{w&&H.error(i("tts.speakFailed"))})},[g,n.content,i,c.language]);return t?e.jsxs("div",{className:"absolute bottom-2 right-3 z-10 flex items-center gap-0.5 rounded-lg border border-dark-border/60 bg-dark-bg/85 px-1 py-0.5 opacity-0 shadow-md backdrop-blur-sm transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100",children:[e.jsx(Qt,{onClick:f,title:i("chat.copyMessage"),children:d?e.jsx(He,{size:13,className:"text-accent-green"}):e.jsx(Ur,{size:13})}),n.type==="assistant"&&!!n.content&&e.jsx(Qt,{onClick:k,title:i(g==="idle"?"tts.speak":"tts.stop"),children:g==="loading"?e.jsx(Ce,{size:13,className:"animate-spin"}):g==="playing"?e.jsx(Ct,{size:13}):e.jsx(io,{size:13})}),n.type==="assistant"&&s&&e.jsx(Qt,{onClick:()=>s(n.id),title:i("chat.regenerate"),children:e.jsx(Tt,{size:13})}),r&&e.jsx(Qt,{onClick:()=>r(n.id),title:i("chat.deleteMessage"),danger:!0,children:e.jsx(Kr,{size:13})})]}):null}function Hn({ts:n,children:t}){const{i18n:s}=K(),r=s.language==="en"?"en-US":"zh-CN";return e.jsxs("div",{className:"absolute bottom-2 left-3 select-none z-10 flex items-center gap-0.5 text-meta leading-none whitespace-nowrap opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 transition-opacity duration-150",children:[e.jsx("span",{className:"pr-1 text-badge text-dark-muted/50",children:new Date(n).toLocaleTimeString(r,{hour:"2-digit",minute:"2-digit"})}),t]})}const Al=a.memo(function({message:t,sessionId:s,onRegenerate:r,onRetryTurn:i,onDeleteMessage:c,onOpenSidebarView:d}){var B,X,ve;const{t:h}=K(),u=dn(_=>_.developerView),f=re(_=>{var ne;if(!s||!_.generatingSessions.includes(s))return!1;const Q=_.messagesBySession[s];return Q?((ne=Q[Q.length-1])==null?void 0:ne.id)===t.id:!1}),g=re(_=>{var ne;if(!s)return!1;const Q=_.messagesBySession[s];return Q?((ne=Q[Q.length-1])==null?void 0:ne.id)===t.id:!1}),k=a.useMemo(()=>wl(t),[t.toolCalls,t.fileJob]),w=a.useMemo(()=>jl(t),[t.thinkingBlocks,t.thinking]),m=a.useMemo(()=>Nl(t),[t.textBlocks,t.content]),j=a.useMemo(()=>Sl(w,m,t.toolCalls),[w,m,t.toolCalls]),A=a.useMemo(()=>El(j),[j]),[p,T]=a.useState({}),M=a.useCallback(_=>!u&&(!f||Cl(j,_)),[u,f,j]),U=a.useCallback(_=>{T(Q=>({...Q,[_]:!(Q[_]??M(_))}))},[M]),N=w.length>0,R=a.useCallback(_=>{if(!N)return _;const{body:Q}=kl(_);return Q||_},[N]),S=t.type==="user",P=t.type==="system",D=a.useCallback((_,Q)=>{if(!s)return;const oe=re.getState().getMessages(s),O=oe.findIndex(ue=>ue.id===t.id);if(O===-1)return;const $=oe[O];if(!$)return;const G={...$,hookApproval:$.hookApproval?{...$.hookApproval,status:Q}:void 0},Z=[...oe];Z[O]=G,re.setState({messagesBySession:{...re.getState().messagesBySession,[s]:Z}})},[s,t.id]);return t.deleted||Io(t.kind)?null:t.shellRun?e.jsxs("div",{className:"chat-msg","data-role":"shell",children:[e.jsx("div",{className:"chat-avatar","aria-hidden":!0,children:e.jsx(Fr,{size:14,strokeWidth:2.4})}),e.jsxs("div",{className:"chat-card group relative",children:[e.jsx(Hn,{ts:t.timestamp}),e.jsx(Bn,{message:t,sessionId:s,onRegenerate:r,onDeleteMessage:c}),e.jsx(Vc,{info:t.shellRun})]})]}):S?e.jsxs("div",{className:"chat-msg","data-role":"user",children:[e.jsx("div",{className:"chat-avatar","aria-hidden":!0,children:e.jsx(oo,{size:14,strokeWidth:2.4})}),e.jsxs("div",{className:"max-w-[78%] flex flex-col",children:[t.channel&&(t.channel.senderName||t.channel.channelType)&&e.jsx("div",{className:"mb-0.5 self-end px-1 text-badge text-dark-muted","data-testid":"channel-source",children:[t.channel.channelType,t.channel.senderName].filter(Boolean).join(" · ")}),e.jsxs("div",{className:"group relative inline-block self-end rounded-2xl border border-hairline border-dark-border/40 bg-dark-surface px-4 pb-8 pt-2.5 text-dark-text shadow-sm",style:{borderBottomRightRadius:"0.375rem"},children:[e.jsx(Hn,{ts:t.timestamp}),e.jsx(Bn,{message:t,sessionId:s,onRegenerate:r,onDeleteMessage:c}),e.jsx(cl,{content:((X=((B=t.display)==null?void 0:B.content)??t.content)==null?void 0:X.replace(/\n{3,}/g,`
23
-
24
- `))??"",images:t.images,pastes:(ve=t.display)==null?void 0:ve.pastes})]})]})]}):P?e.jsx("div",{className:"chat-msg","data-role":"system",children:e.jsx("div",{className:"text-meta text-dark-muted bg-dark-surface border border-dark-border/60 rounded-full px-3.5 py-1 max-w-[90%] text-center",children:t.content})}):e.jsxs("div",{className:"chat-msg","data-role":"assistant",children:[e.jsx("div",{className:"chat-avatar","aria-hidden":!0,children:e.jsx(es,{size:14,strokeWidth:2.4})}),e.jsxs("div",{className:"chat-card group relative",children:[e.jsx(Hn,{ts:t.timestamp}),e.jsx(Bn,{message:t,sessionId:s,onRegenerate:r,onDeleteMessage:c}),j.length>0&&!t.hookApproval&&e.jsx("div",{className:"mb-1 space-y-1","data-testid":"message-chronology",children:j.map(_=>_.kind==="thinking"?e.jsx(ml,{index:_.block.index,text:_.block.text,isStreaming:f&&_.block.index===A,collapsed:p[_.block.index]??M(_.block.index),onToggle:U},_.key):_.kind==="text"?e.jsx("div",{className:"leading-relaxed",children:e.jsx(Oo,{content:R(_.block.text).replace(/\n{3,}/g,`
25
-
26
- `),streaming:f&&_.block.index===A})},_.key):e.jsx(Rc,{toolCall:_.toolCall,sessionId:s,defaultCollapsed:u?!1:!Ml(_.toolCall)},_.key))}),j.length===0&&!t.hookApproval&&f&&e.jsxs("div",{className:"flex items-center gap-2 py-1 text-xs text-dark-muted","data-testid":"thinking-typing",children:[e.jsxs("span",{className:"chat-typing-dots",children:[e.jsx("span",{}),e.jsx("span",{}),e.jsx("span",{})]}),e.jsxs("span",{children:[h("chat.thinking"),"…"]})]}),t.summary&&!f&&e.jsx("div",{className:"mt-1.5 text-meta text-dark-muted/70","data-testid":"turn-summary",children:Fo(t.summary)}),g&&!f&&!t.hookApproval&&e.jsx(ll,{created:k.created,modified:k.modified,onOpenArtifacts:()=>d==null?void 0:d("artifacts"),onOpenChanges:()=>d==null?void 0:d("changes")}),t.fileJob&&e.jsx("div",{className:"mt-3",children:e.jsx(Gc,{job:t.fileJob})}),t.errorCard&&e.jsx("div",{className:"mt-3",children:e.jsx(Jc,{error:t.errorCard,onRetry:s&&i?()=>i(s):s&&r?()=>r(t.id):void 0})}),t.hookApproval&&e.jsx("div",{className:"mt-3 border-l-2 border-accent-yellow/50 pl-3",children:e.jsx(qc,{approval:t.hookApproval,onResolved:D})})]})]})});function Tl(n,t=28){const s=n.replace(/\s+/g," ").trim();return s.length>t?`${s.slice(0,t)}…`:s}const Rl="cubic-bezier(0.34, 1.56, 0.64, 1)",Dl=a.memo(function({items:t,activeId:s,onJump:r}){const{t:i}=K(),[c,d]=a.useState(!1),h=a.useRef(null),u=a.useCallback(()=>{h.current&&window.clearTimeout(h.current),d(!0)},[]),f=a.useCallback(()=>{h.current&&window.clearTimeout(h.current),h.current=window.setTimeout(()=>d(!1),180)},[]);return t.length===0?null:e.jsx("div",{role:"list","aria-label":i("chat.messageRail"),className:"pointer-events-none absolute right-4 top-1/2 z-30 hidden -translate-y-1/2 md:block",children:e.jsxs("div",{onMouseEnter:u,onMouseLeave:f,"data-testid":"rail-trigger",className:"pointer-events-auto relative flex items-center py-3",children:[e.jsxs("div",{"aria-hidden":!c,inert:!c,"data-testid":"rail-panel",className:`absolute right-full top-1/2 flex w-72 -translate-y-1/2 origin-right flex-col overflow-hidden rounded-xl border border-dark-border/70 bg-dark-bg/90 shadow-xl shadow-black/10 backdrop-blur-xl transition-all duration-300 ${c?"translate-x-0 scale-100 opacity-100":"pointer-events-none translate-x-4 scale-95 opacity-0"}`,style:{transitionTimingFunction:c?Rl:"ease"},children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-dark-border/60 px-3 py-2",children:[e.jsxs("span",{className:"flex items-center gap-1.5 text-meta font-semibold uppercase tracking-[0.08em] text-dark-muted",children:[e.jsx(co,{size:12,className:"text-accent-blue","aria-hidden":"true"}),i("chat.messageIndex")]}),e.jsx("span",{className:"rounded-full bg-dark-hover px-1.5 py-0.5 text-badge font-medium tabular-nums text-dark-muted",children:t.length})]}),e.jsx("div",{className:"max-h-[55vh] overflow-y-auto p-1.5 custom-scrollbar",children:t.map((g,k)=>{const w=g.id===s;return e.jsxs("button",{type:"button",role:"listitem",onClick:()=>r(g.id),title:g.content,"aria-current":w?"true":void 0,tabIndex:c?0:-1,className:`group/item flex w-full items-start gap-2 rounded-lg px-2 py-1.5 text-left transition-all duration-200 ${c?"translate-x-0 opacity-100":"translate-x-2 opacity-0"} ${w?"bg-accent-blue/10":"hover:bg-dark-hover"}`,style:{transitionDelay:c?`${Math.min(k*24,264)}ms`:"0ms"},children:[e.jsx("span",{className:`mt-px flex h-4 w-4 shrink-0 items-center justify-center rounded text-badge font-semibold tabular-nums transition-colors duration-200 ${w?"bg-accent-blue text-accent-fg":"bg-dark-hover text-dark-muted group-hover/item:bg-dark-border/80 group-hover/item:text-dark-text"}`,children:k+1}),e.jsx("span",{className:"min-w-0 flex-1",children:e.jsx("span",{"data-testid":"rail-entry-content",className:`block break-words text-xs leading-snug line-clamp-2 group-hover/item:line-clamp-none transition-colors duration-200 ${w?"font-medium text-accent-blue":"text-dark-text/90"}`,children:g.content})}),e.jsx(xt,{size:12,"aria-hidden":"true",className:"mt-0.5 shrink-0 -translate-x-1 text-dark-muted/50 opacity-0 transition-all duration-200 group-hover/item:translate-x-0 group-hover/item:opacity-100"})]},g.id)})})]}),e.jsx("div",{"data-testid":"rail-dots",className:"flex flex-col items-end gap-1",children:t.map((g,k)=>{const w=Tl(g.content),m=g.id===s;return e.jsx("button",{type:"button",role:"listitem",onClick:()=>r(g.id),title:g.content,"aria-label":`${k+1}. ${w}`,"aria-current":m?"true":void 0,className:"group/dot pointer-events-auto flex h-6 w-5 items-center justify-center rounded-full transition-colors duration-200 hover:bg-dark-surface/80",children:e.jsx("span",{className:m?"h-2 w-2 rounded-full bg-accent-blue ring-2 ring-accent-blue/25 transition-all duration-300 ease-out group-hover/dot:scale-125":"h-1.5 w-1.5 rounded-full bg-dark-muted/35 transition-all duration-300 ease-out group-hover/dot:scale-150 group-hover/dot:bg-dark-muted"})},g.id)})})]})})}),Un=24,$l=150,Sr=28;function Pl({label:n}){const t=a.useRef(Date.now()),s=a.useRef(null),[r,i]=a.useState(!1);return a.useEffect(()=>{const c=window.setTimeout(()=>i(!0),15e3);return()=>window.clearTimeout(c)},[]),a.useEffect(()=>{if(!r)return;const c=()=>{const h=s.current;if(!h)return;const u=Math.floor((Date.now()-t.current)/1e3);h.textContent=u>=60?`${Math.floor(u/60)}m ${u%60}s`:`${u}s`};c();const d=window.setInterval(c,1e3);return()=>window.clearInterval(d)},[r]),e.jsxs("div",{className:"chat-col flex items-center gap-2 px-4 py-3 text-xs text-dark-muted sm:px-6",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-accent-blue animate-blink"}),e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-accent-blue animate-blink",style:{animationDelay:"0.2s"}}),e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-accent-blue animate-blink",style:{animationDelay:"0.4s"}})]}),e.jsx("span",{className:"text-shimmer",children:n}),r&&e.jsxs("span",{className:"flex items-center gap-1 tabular-nums text-dark-muted/70",children:[e.jsx(an,{size:10}),e.jsx("span",{ref:s,children:"15s"})]})]})}const Qd=a.memo(function({messages:t,isGenerating:s,sessionId:r,onRegenerate:i,onRetryTurn:c,onDeleteMessage:d,onOpenSidebarView:h}){const{t:u}=K(),f=a.useRef(null),g=a.useRef(new Map),[k,w]=a.useState(!0),[m,j]=a.useState(null),A=a.useRef(k),p=a.useRef(m),T=a.useCallback(v=>{A.current!==v&&(A.current=v,w(v))},[]),M=a.useCallback(v=>{p.current!==v&&(p.current=v,j(v))},[]),[U,N]=a.useState(null),[R,S]=a.useState(0),P=a.useRef(null),D=a.useRef(!1),B=a.useRef(null),X=a.useRef(s);X.current=s;const ve=a.useRef(0),[_,Q]=a.useState({top:0,bottom:0}),ne=a.useRef(_),oe=a.useCallback((v,I)=>{ne.current.top===v&&ne.current.bottom===I||(ne.current={top:v,bottom:I},Q({top:v,bottom:I}))},[]),O=a.useMemo(()=>t.filter(v=>!v.deleted),[t]),$=a.useMemo(()=>{if(!s)return!1;const v=O[O.length-1];return!v||v.type!=="assistant"?!1:!v.content},[s,O]),G=a.useMemo(()=>O.filter(v=>Ho(v)).map(v=>({id:v.id,content:v.content})),[O]),Z=a.useMemo(()=>G.map(v=>v.id),[G]),ue=a.useCallback(v=>{if(v){const I=v.dataset.mid;I&&g.current.set(I,v)}},[]);a.useEffect(()=>{const v=new Set(Z);for(const I of g.current.keys())v.has(I)||g.current.delete(I)},[Z]);const Ne=a.useCallback(()=>{const v=f.current;if(!v||Z.length===0){M(null);return}const I=v.getBoundingClientRect(),se=I.top+I.height*.35;let te=Z[0]??null;for(const ye of Z){const le=g.current.get(ye);if(!(!le||!le.isConnected))if(le.getBoundingClientRect().top<=se)te=ye;else break}v.scrollHeight-v.scrollTop-v.clientHeight<Un&&(te=Z[Z.length-1]??te),M(te)},[Z,M]),xe=a.useCallback(()=>{const v=f.current;if(!v)return;const I=v.scrollTop<=2,se=v.scrollTop+v.clientHeight>=v.scrollHeight-2;oe(I?0:Sr,se?0:Sr)},[oe]),Ue=a.useCallback(()=>{const v=f.current;if(!v)return;const I=v.scrollHeight-v.scrollTop-v.clientHeight;D.current?I>=Un&&(D.current=!1):T(I<Un),Ne(),xe()},[Ne,xe,T]);a.useEffect(()=>{Ne(),xe()},[t,Ne,xe]),a.useEffect(()=>{const v=f.current;if(!v)return;const I=()=>{ve.current=performance.now()},se=te=>{(te.key==="PageUp"||te.key==="PageDown"||te.key==="ArrowUp"||te.key==="ArrowDown"||te.key==="Home"||te.key==="End")&&I()};return v.addEventListener("wheel",I,{passive:!0}),v.addEventListener("touchmove",I,{passive:!0}),v.addEventListener("keydown",se),window.addEventListener("resize",xe),()=>{v.removeEventListener("wheel",I),v.removeEventListener("touchmove",I),v.removeEventListener("keydown",se),window.removeEventListener("resize",xe)}},[xe]);const ee=a.useCallback(v=>{const I=f.current,se=g.current.get(v);if(!I||!se||!se.isConnected)return;T(!1),N(v),S(_e=>_e+1),P.current&&window.clearTimeout(P.current),P.current=window.setTimeout(()=>N(null),1600);const te=I.getBoundingClientRect(),ye=se.getBoundingClientRect(),le=I.scrollTop+(ye.top-te.top)-I.clientHeight/2+ye.height/2;B.current&&window.clearTimeout(B.current),D.current=!0,I.scrollTo({top:Math.max(0,le),behavior:"smooth"});const he=()=>{D.current=!1};"onscrollend"in I&&I.addEventListener("scrollend",he,{once:!0}),B.current=window.setTimeout(()=>{D.current=!1},1500)},[T]);a.useEffect(()=>()=>{P.current&&window.clearTimeout(P.current),B.current&&window.clearTimeout(B.current)},[]);const pe=a.useCallback(()=>{B.current&&window.clearTimeout(B.current),D.current=!1;const v=f.current;v&&(v.scrollTop=v.scrollHeight)},[]),me=a.useCallback(()=>{B.current&&window.clearTimeout(B.current),D.current=!1,T(!0);const v=f.current;v&&v.scrollTo({top:v.scrollHeight,behavior:"smooth"})},[T]);a.useEffect(()=>{s&&(T(!0),pe())},[s,pe,T]);const ce=a.useMemo(()=>{var I,se,te,ye,le;const v=O[O.length-1];return`${O.length}:${(v==null?void 0:v.id)??""}:${((I=v==null?void 0:v.content)==null?void 0:I.length)??0}:${((se=v==null?void 0:v.textBlocks)==null?void 0:se.length)??0}:${((te=v==null?void 0:v.toolCalls)==null?void 0:te.length)??0}:${((ye=v==null?void 0:v.thinkingBlocks)==null?void 0:ye.length)??0}:${((le=v==null?void 0:v.thinking)==null?void 0:le.length)??0}`},[O]),Se=a.useRef(ce);return a.useEffect(()=>{if(!k){Se.current=ce;return}ce!==Se.current&&(Se.current=ce,!(performance.now()-ve.current<=$l)&&pe())},[ce,k,pe]),e.jsxs("div",{className:"relative flex-1 min-h-0",children:[e.jsxs("div",{ref:f,onScroll:Ue,style:{"--ui-fade-top":`${_.top}px`,"--ui-fade-bottom":`${_.bottom}px`},className:"fade-mask-y h-full overflow-y-auto custom-scrollbar",children:[e.jsx("div",{className:"chat-stack flex flex-col pb-8 pt-5",children:O.map((v,I)=>{const se=O[I-1],te=se?se.type===v.type?"mt-2":"mt-5":"";return e.jsxs("div",{"data-mid":v.id,ref:ue,className:`relative w-full ${te}`,children:[U===v.id&&e.jsx("div",{className:"animate-rail-flash pointer-events-none absolute inset-0"},R),e.jsx(Al,{message:v,sessionId:r,onRegenerate:i,onRetryTurn:c,onDeleteMessage:d,onOpenSidebarView:h})]},v.id)})}),s&&!$&&e.jsx(Pl,{label:u("chat.thinkingEllipsis")},r)]}),G.length>0&&e.jsx(Dl,{items:G,activeId:m,onJump:ee}),!k&&O.length>0&&e.jsx("button",{type:"button",onClick:me,title:u("chat.backToBottom"),"aria-label":u("chat.backToBottom"),className:"absolute bottom-5 right-5 z-20 flex h-8 w-8 animate-fade-in-up items-center justify-center rounded-full border border-dark-border/70 bg-dark-surface/90 text-dark-muted shadow-lg backdrop-blur transition-all duration-200 hover:scale-110 hover:text-dark-text hover:shadow-xl",children:e.jsx(nt,{size:15})})]})}),zl={act:"border-accent-green/30 text-accent-green bg-accent-green/10","auto-act":"border-accent-yellow/30 text-accent-yellow bg-accent-yellow/10",goal:"border-accent-purple/30 text-accent-purple bg-accent-purple/10","auto-goal":"border-accent-red/30 text-accent-red bg-accent-red/10",chat:"border-accent-cyan/30 text-accent-cyan bg-accent-cyan/10",normal:"border-accent-green/30 text-accent-green"},Ll=a.memo(function(){const{t}=K(),s=ze(g=>g.mode),r=ze(g=>g.modeSource),i=ze(g=>g.setBaseMode),c=ze(g=>g.toggleAuto),d=s==="normal"?"act":s,h=un(d),u=Ko(d),f=r==="user_override";return e.jsxs("div",{className:"flex items-center gap-1",children:[Uo.map(g=>{const k=h===g,w=Vn[g],m=s!=="normal"&&k?zl[s]??"border-dark-border text-dark-muted":"border-dark-border text-dark-muted hover:bg-dark-hover";return e.jsxs("button",{type:"button",onClick:()=>i(g),className:q("px-2 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors cursor-pointer",m),title:t("chat.clickToSwitchMode"),"aria-pressed":k,children:[w.label,k&&f&&e.jsx(Zs,{size:10,className:"ml-1 inline-block -mt-px","aria-hidden":!0})]},g)}),f&&e.jsx("span",{className:"flex items-center text-accent-yellow",title:t("plan.modeLocked"),"aria-label":t("plan.modeLocked"),children:e.jsx(Zs,{size:11,"aria-hidden":!0})}),e.jsxs("button",{type:"button",role:"switch","aria-checked":u,disabled:h==="chat",onClick:()=>c(),className:q("flex items-center gap-1 px-2 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors",h==="chat"?"border-dark-border text-dark-muted opacity-50 cursor-not-allowed":q("cursor-pointer",u?"border-accent-yellow/40 text-accent-yellow bg-accent-yellow/10":"border-dark-border text-dark-muted hover:bg-dark-hover")),title:t("plan.autoApprove"),children:[e.jsx(Tt,{size:11,className:q(u?"text-accent-yellow":"text-dark-muted")}),e.jsx("span",{children:t("plan.autoApprove")})]})]})}),_l=a.memo(function(){var m,j;const{t}=K(),s=Yr(A=>A.activeSessionId),r=ze(A=>s?A.pendingSuggestionsBySession[s]:void 0),i=ze(A=>A.clearPendingSuggestion),c=ze(A=>A.setBaseMode);if(!r)return null;const d=r.suggestedMode;if(d!=="act"&&d!=="goal")return null;const h=d,u=((m=Vn[h])==null?void 0:m.label)??h,f=((j=Vn[un(r.currentMode)])==null?void 0:j.label)??r.currentMode,g=typeof r.confidence=="number"?` · ${t("plan.modeSuggestionConfidence")} ${Math.round(r.confidence*100)}%`:"",k=()=>{c(h),i(r.sessionId)},w=()=>i(r.sessionId);return e.jsxs("div",{className:"flex items-center gap-2 border-b border-accent-cyan/20 bg-accent-cyan/10 px-4 py-1.5 text-xs",role:"status",children:[e.jsx("span",{className:"shrink-0 font-medium text-accent-cyan",children:t("plan.modeSuggestionTitle")}),e.jsxs("span",{className:"flex min-w-0 items-center gap-1 text-dark-muted",children:[e.jsx("span",{className:"whitespace-nowrap",children:f}),e.jsx(Hr,{size:11,className:"shrink-0","aria-hidden":!0}),e.jsx("span",{className:"whitespace-nowrap text-dark-text",children:u}),e.jsx("span",{className:"shrink-0",children:g}),r.reason&&e.jsxs("span",{className:"hidden min-w-0 truncate md:inline",title:r.reason,children:["· ",r.reason]})]}),e.jsxs("span",{className:"ml-auto flex shrink-0 items-center gap-1.5",children:[e.jsxs("button",{type:"button",onClick:k,className:q("flex items-center gap-1 rounded-full border border-accent-cyan/40 px-2.5 py-0.5","text-accent-cyan transition-colors hover:bg-accent-cyan/20 cursor-pointer"),children:[e.jsx(He,{size:11,"aria-hidden":!0}),t("plan.modeSuggestionApply",{mode:u})]}),e.jsxs("button",{type:"button",onClick:w,className:q("flex items-center gap-1 rounded-full border border-dark-border px-2.5 py-0.5","text-dark-muted transition-colors hover:bg-dark-hover cursor-pointer"),children:[e.jsx(At,{size:11,"aria-hidden":!0}),t("plan.modeSuggestionKeep",{mode:f})]})]})]})});function Il(){return qo.get("/api/models/cached")}const Er={off:{labelKey:"chat.effortOff",color:"text-dark-muted"},low:{labelKey:"chat.effortLow",color:"text-accent-green"},medium:{labelKey:"chat.effortMedium",color:"text-accent-yellow"},high:{labelKey:"chat.effortHigh",color:"text-accent-red"},extra_high:{labelKey:"chat.effortExtraHigh",color:"text-accent-purple"},max:{labelKey:"chat.effortMax",color:"text-accent-blue"}},Ol=49,Fl=5,Bl=8,Hl=a.memo(function(){const{t}=K(),s=ht(x=>x.model),r=ht(x=>x.modelRef),i=ht(x=>x.setModel),c=ht(x=>x.setModelRef),d=ze(x=>x.mode),h=dn(x=>x.effort),u=dn(x=>x.setEffort),[f,g]=a.useState([]),[k,w]=a.useState(!1),m=a.useRef(null),j=a.useRef(null),[A,p]=a.useState("session"),T=Yr(x=>x.activeSessionId),[M,U]=a.useState("models"),[N,R]=a.useState(""),[S,P]=a.useState(""),[D,B]=a.useState({}),[X,ve]=a.useState({}),[_,Q]=a.useState(!1),[ne,oe]=a.useState(null),O=a.useMemo(()=>Array.from(new Set(f.map(x=>x.provider).filter(Boolean))),[f]),$=a.useCallback(async()=>{try{const x=await de.models.list();x.success&&x.data&&Array.isArray(x.data.models)&&g(x.data.models.filter(z=>z.enabled!==!1))}catch{}},[]),G=a.useCallback(async()=>{var x;try{const z=await Il();z.success&&((x=z.data)!=null&&x.providers)&&B(z.data.providers)}catch{}},[]),Z=a.useCallback(async x=>{if(x){Q(!0),oe(null);try{const z=await de.models.byProvider(x);if(z.success&&z.data){const W=z.data.models||[];ve(fe=>({...fe,[x]:W}))}else oe(z.error||t("chat.loadModelsFailed"))}catch{oe(t("chat.loadModelsFailed"))}finally{Q(!1)}}},[t]);a.useEffect(()=>{$()},[$]);const[ue,Ne]=a.useState(0);a.useEffect(()=>{const x=()=>{$(),G(),Ne(z=>z+1)};return window.addEventListener("models-updated",x),()=>window.removeEventListener("models-updated",x)},[$,G]);const[xe,Ue]=a.useState(null),ee=a.useCallback(()=>{const x=m.current;if(!x)return;const z=x.getBoundingClientRect(),W=6;Ue({left:Math.max(8,Math.min(z.left,window.innerWidth-400-8)),bottom:Math.max(8,window.innerHeight-z.top+W),maxHeight:Math.max(160,z.top-W-8)})},[]),pe=a.useCallback(()=>{var z;const x=Go(r)||((z=f.find(W=>W.isGlobalDefault))==null?void 0:z.provider)||O[0]||"";U("models"),R(x),P(""),oe(null),ee(),w(!0),G()},[r,f,O,G,ee]);a.useEffect(()=>{!k||!N||Z(N)},[k,N,ue,Z]),a.useEffect(()=>{k&&(N&&O.includes(N)||R(O[0]||""))},[k,N,O]);const me=a.useCallback(()=>w(!1),[]);a.useEffect(()=>{if(k)return ee(),window.addEventListener("resize",ee),window.addEventListener("scroll",ee,!0),()=>{window.removeEventListener("resize",ee),window.removeEventListener("scroll",ee,!0)}},[k,ee]),a.useEffect(()=>{if(!k)return;const x=W=>{var ie,rt;const fe=W.target;(ie=m.current)!=null&&ie.contains(fe)||(rt=j.current)!=null&&rt.contains(fe)||me()},z=W=>{W.key==="Escape"&&me()};return document.addEventListener("mousedown",x),document.addEventListener("keydown",z),()=>{document.removeEventListener("mousedown",x),document.removeEventListener("keydown",z)}},[k,me]);const ce=a.useMemo(()=>{var z;const x=X[N];return x&&x.length>0?x:((z=D[N])==null?void 0:z.models)??[]},[X,D,N]),Se=a.useMemo(()=>Wo(N,ce,f),[N,ce,f]),v=a.useMemo(()=>{const x=S.trim().toLowerCase();return x?Se.filter(z=>z.id.toLowerCase().includes(x)||z.name.toLowerCase().includes(x)):Se},[Se,S]),I=async x=>{if(me(),A==="session"&&!T){H.error(t("chat.sessionModelNoSession"));return}const z=N,W=`${z}:${x.id}`,fe=s,ie=r;i(x.id),c(W);try{if(!x.configured){const De=await de.models.create({provider:z,model:{id:x.id,name:x.name||x.id}});if(!De.success){i(fe),c(ie),H.error(De.error||t("chat.addModelFailed"));return}}if(A==="session"){const De=await de.models.setSessionModel(T,z,x.id);if(!De.success){i(fe),c(ie),H.error(De.error||t("chat.switchModelFailed"));return}await $();return}const at=un(d==="normal"?"act":d)==="goal"?{goal:W}:{global:W,act:W},Ke=await de.models.setDefaults(at);if(!Ke.success){i(fe),c(ie),H.error(Ke.error||t("chat.switchModelFailed"));return}await $()}catch{i(fe),c(ie),H.error(t("chat.addModelFailed"))}},se=un(d==="normal"?"act":d),te=se==="goal"?"isGoalDefault":"isActDefault",ye=x=>{const z=`${N}:${x.id}`;return r?r===z:s===z?!0:s===x.id},le=f.some(x=>x[te]===!0),he=f.find(x=>x.isGlobalDefault),_e=async()=>{me();const x=se==="goal"?{goal:null}:{act:null};try{(await de.models.setDefaults(x)).success&&(he?(i(he.id),c(`${he.provider}:${he.id}`)):(i(""),c("")),await $())}catch{}},st=Jo(s,r),pt=Er[h],fn=S.trim().toLowerCase();return e.jsxs("div",{className:"relative min-w-0",ref:m,children:[e.jsxs("button",{type:"button",onClick:()=>k?me():pe(),className:"flex w-full items-center gap-1 px-2 py-0.5 rounded-full border border-dark-border text-dark-muted whitespace-nowrap transition-colors hover:bg-dark-hover cursor-pointer",title:st||t("chat.clickToSelectModel"),"aria-haspopup":"listbox","aria-expanded":k,children:[e.jsx(er,{size:12,className:"shrink-0"}),e.jsx("span",{className:"font-medium max-w-[8rem] truncate",children:st||t("chat.selectModel")}),e.jsx("span",{className:"h-3 w-px bg-dark-border shrink-0","aria-hidden":"true"}),e.jsx(tr,{size:12,className:`shrink-0 ${pt.color}`}),e.jsx("span",{className:`text-xs font-medium ${pt.color}`,children:t(pt.labelKey)}),e.jsx(nt,{size:12,className:q("transition-transform",k&&"rotate-180")})]}),k&&Xr.createPortal(e.jsxs("div",{ref:j,role:"listbox","aria-label":t("chat.selectModel"),style:xe?{left:xe.left,bottom:xe.bottom,maxHeight:xe.maxHeight}:void 0,className:"fixed z-50 flex w-[400px] max-w-[92vw] flex-col overflow-hidden rounded-lg border border-dark-border bg-dark-surface shadow-xl",children:[e.jsx("div",{role:"tablist","aria-label":t("chat.selectModel"),className:"flex shrink-0 items-center gap-1 px-2 py-1.5 border-b border-dark-border",children:[{key:"models",label:t("chat.selectModel"),Icon:er},{key:"effort",label:t("chat.effort"),Icon:tr}].map(({key:x,label:z,Icon:W})=>e.jsxs("button",{type:"button",role:"tab","aria-selected":M===x,onClick:()=>U(x),className:q("flex items-center gap-1 text-meta px-2 py-0.5 rounded-full border transition-colors cursor-pointer",M===x?"border-accent-blue text-accent-blue bg-accent-blue/10 font-medium":"border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover"),children:[e.jsx(W,{size:11,className:"shrink-0"}),z]},x))}),M==="models"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex shrink-0 items-center gap-1 px-2 py-1.5 border-b border-dark-border",children:[{key:"session",label:t("chat.applyScopeSession"),hint:t("chat.sessionScopeHint")},{key:"global",label:t("chat.applyScopeGlobal"),hint:t("chat.globalScopeHint")}].map(({key:x,label:z,hint:W})=>e.jsx("button",{type:"button",onClick:()=>p(x),title:W,className:q("text-meta px-2 py-0.5 rounded-full border transition-colors cursor-pointer",A===x?"border-accent-blue text-accent-blue bg-accent-blue/10 font-medium":"border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover"),children:z},x))}),le&&e.jsxs("button",{type:"button",role:"option","aria-selected":!1,onClick:_e,title:t("chat.followGlobalDefaultHint"),className:"flex w-full shrink-0 items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-dark-hover border-b border-dark-border/60",children:[e.jsx(lo,{size:11,className:"shrink-0 text-accent-green"}),e.jsxs("span",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-xs font-semibold text-accent-green",children:t("chat.followGlobalDefault")}),e.jsx("span",{className:"block text-badge text-dark-muted mt-0.5 truncate",children:he?he.name||he.id:t("chat.noGlobalDefault")})]})]}),O.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{role:"tablist","aria-label":t("chat.selectProvider"),className:"flex shrink-0 items-center gap-1 px-2 py-1.5 border-b border-dark-border overflow-x-auto custom-scrollbar",children:O.map(x=>{var fe,ie;const z=x===N,W=((fe=X[x])==null?void 0:fe.length)||((ie=D[x])==null?void 0:ie.models.length)||0;return e.jsxs("button",{type:"button",role:"tab","aria-selected":z,onClick:()=>{R(x),P(""),oe(null)},className:q("shrink-0 flex items-center gap-1 text-meta px-2 py-0.5 rounded-full border transition-colors cursor-pointer",z?"border-accent-blue text-accent-blue bg-accent-blue/10 font-medium":"border-dark-border text-dark-muted hover:text-dark-text hover:bg-dark-hover"),children:[e.jsx("span",{className:"max-w-[7rem] truncate",children:x}),W>0&&e.jsx("span",{className:"text-badge opacity-70",children:W})]},x)})}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5 px-2 py-1.5 border-b border-dark-border",children:[e.jsx(ts,{size:11,className:"shrink-0 text-dark-muted"}),e.jsx("input",{value:S,onChange:x=>P(x.target.value),placeholder:t("chat.searchModels"),"aria-label":t("chat.searchModels"),className:"flex-1 min-w-0 bg-dark-bg text-dark-text text-xs px-2 py-1 rounded border border-dark-border placeholder-dark-muted/60 focus:outline-none focus:border-accent-blue"})]}),e.jsxs("div",{className:"min-h-0 overflow-y-auto py-1 custom-scrollbar",style:{height:Fl*Ol+Bl},children:[_&&v.length===0&&e.jsxs("div",{className:"px-3 py-2 text-xs text-dark-muted flex items-center gap-1.5",children:[e.jsx(uo,{size:11,className:"animate-spin"}),t("chat.loadingModels")]}),!_&&ne&&v.length===0&&e.jsx("div",{className:"px-3 py-2 text-xs text-accent-red",children:ne}),v.map(x=>{const z=ye(x);return e.jsx("button",{type:"button",role:"option","aria-selected":z,onClick:()=>{I(x)},className:q("w-full shrink-0 flex items-center gap-2 px-3 py-2 text-left transition-colors",z?"bg-dark-hover":"hover:bg-dark-hover"),children:e.jsxs("span",{className:"flex-1 min-w-0",children:[e.jsxs("span",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:q("flex h-3.5 w-3.5 items-center justify-center rounded-full border transition-colors shrink-0",z?"border-accent-green bg-accent-green/20 text-accent-green":"border-dark-border text-transparent"),children:e.jsx(He,{size:10,strokeWidth:3})}),e.jsx("span",{className:"text-xs font-semibold text-dark-text truncate",children:x.name||x.id})]}),e.jsxs("span",{className:"flex items-center gap-1 mt-0.5 flex-wrap pl-[1.375rem]",children:[e.jsx("span",{className:"text-badge text-dark-muted truncate",children:x.id}),x.isGlobalDefault&&e.jsx("span",{className:"text-badge px-1 rounded bg-accent-red/20 text-accent-red",children:t("chat.globalDefault")}),x.isActDefault&&!x.isGlobalDefault&&e.jsx("span",{className:"text-badge px-1 rounded bg-accent-yellow/20 text-accent-yellow",children:t("chat.actDefault")}),x.isGoalDefault&&e.jsx("span",{className:"text-badge px-1 rounded bg-accent-purple/20 text-accent-purple",children:t("chat.goalDefault")})]})]})},x.id)}),!_&&!ne&&v.length===0&&e.jsx("div",{className:"px-3 py-2 text-xs text-dark-muted",children:t(fn?"chat.noModelsFound":"chat.noProviderModels")})]})]}):e.jsx("div",{className:"px-3 py-2 text-xs text-dark-muted",children:t("chat.noConfiguredProviders")})]}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"shrink-0 py-1",children:Vo.map(x=>{const z=Er[x],W=x===h;return e.jsxs("button",{type:"button",role:"option","aria-selected":W,onClick:()=>{u(x),me()},className:q("w-full flex items-center gap-2 px-3 py-1.5 text-left transition-colors",W?"bg-dark-hover":"hover:bg-dark-hover"),children:[e.jsx("span",{className:q("flex h-4 w-4 items-center justify-center rounded border transition-colors shrink-0",W?"border-accent-green bg-accent-green/20 text-accent-green":"border-dark-border text-transparent"),children:e.jsx(He,{size:11,strokeWidth:3})}),e.jsx("span",{className:`text-xs font-medium ${W?z.color:"text-dark-text"}`,children:t(z.labelKey)})]},x)})})})]}),document.body)]})});function jt(n){const t=(n??"").toLowerCase();return t?t.includes("android")?"android":t.includes("iphone")||t.includes("ipad")||t.includes("ipod")?"ios":t.includes("mac")||t.includes("darwin")?"macos":t.includes("win")?"windows":t.includes("linux")||t.includes("x11")||t.includes("cros")?"linux":null:null}function Ul(){if(typeof navigator>"u")return"unknown";const n=typeof navigator.userAgent=="string"?navigator.userAgent:"",t=jt(n);if(t==="android"||t==="ios")return t;const s=navigator.userAgentData,r=jt(s==null?void 0:s.platform);if(r)return r;const i=typeof navigator.platform=="string"?navigator.platform:"";return jt(i)==="macos"&&(navigator.maxTouchPoints??0)>1?"ios":jt(i)??jt(n)??"unknown"}function Kl(){if(typeof navigator>"u")return"unknown";const n=navigator.userAgentData,t=`${(n==null?void 0:n.architecture)??""} ${navigator.userAgent??""} ${navigator.platform??""}`.toLowerCase();return/arm|aarch64|apple silicon/.test(t)?"arm64":/x86_64|amd64|x64|win64|wow64|intel/.test(t)?"x64":"unknown"}function ql(){return typeof window<"u"&&window.__TAURI__!==void 0}const Cr={windows:"chat.desktopDownloadOsWindows",macos:"chat.desktopDownloadOsMacos",linux:"chat.desktopDownloadOsLinux",android:"chat.desktopDownloadOsAndroid",ios:"chat.desktopDownloadOsIos",unknown:"chat.desktopDownloadOsUnknown"},Gl=["windows","macos","linux"];function Wl(n){if(typeof n!="number"||!Number.isFinite(n)||n<=0)return null;const t=n/(1024*1024);return t>=10?`${Math.round(t)} MB`:`${t.toFixed(1)} MB`}function Jl(n){try{return new URL(n).host}catch{return n}}function Mr(n){return n.url||n.mirrors[0]||""}function Ar(n,t){const s=document.createElement("a");s.href=n,s.download=t,s.target="_blank",s.rel="noopener",s.style.display="none",document.body.appendChild(s),s.click(),s.remove()}const Vl=a.memo(function({onHandoffToAi:t}){var O;const{t:s}=K(),[r,i]=a.useState("idle"),[c,d]=a.useState(null),[h,u]=a.useState(!1),f=a.useRef(null),g=a.useRef(!0),k=a.useRef(!1),w=a.useRef(!1);a.useEffect(()=>(g.current=!0,()=>{g.current=!1}),[]);const m=a.useMemo(()=>Ul(),[]),j=a.useMemo(()=>Kl(),[]),A=a.useMemo(()=>ql(),[]),p=s(Cr[m]),T=m==="android"||m==="ios",M=A?s("chat.desktopDownloadOtherPlatforms"):s("chat.desktopDownloadTitle",{os:p}),U=s(A?"chat.desktopDownloadOtherPlatforms":"chat.desktopDownloadRecommend"),N=(c==null?void 0:c.artifacts)??{},R=(O=N[m])==null?void 0:O[0],S=(c==null?void 0:c.page)||Yo(),P=j==="arm64"&&(m==="windows"||m==="linux"),D=a.useCallback(()=>{k.current||(k.current=!0,i("loading"),de.system.desktopDownload().then($=>{g.current&&($.success&&$.data?(d($.data),i("ready")):i("failed"))}).catch(()=>{g.current&&i("failed")}))},[]);a.useEffect(()=>{if(!h)return;const $=Z=>{var ue;(ue=f.current)!=null&&ue.contains(Z.target)||u(!1)},G=Z=>{Z.key==="Escape"&&u(!1)};return document.addEventListener("mousedown",$),document.addEventListener("keydown",G),()=>{document.removeEventListener("mousedown",$),document.removeEventListener("keydown",G)}},[h]);const B=a.useCallback(()=>{window.open(S,"_blank","noopener")},[S]),X=a.useCallback($=>{const G=Mr($);if(u(!1),!G){B(),H.warning(s("chat.desktopDownloadUnavailable"));return}Ar(G,$.name),$.url&&$.source==="mirror"&&H.info(s("chat.desktopDownloadViaMirrorToast"))},[B,s]),ve=a.useCallback(()=>{if(T){B(),H.info(s("chat.desktopDownloadMobileHint"));return}if(r==="failed"){B(),H.warning(s("chat.desktopDownloadUnavailable"));return}if(r==="ready"){R?X(R):(B(),H.warning(s("chat.desktopDownloadUnavailable")));return}w.current=!0,D(),H.info(s("chat.desktopDownloadFetching"))},[X,T,B,R,D,r,s]);a.useEffect(()=>{r!=="ready"&&r!=="failed"||w.current&&(w.current=!1,ve())},[r,ve]);const _=a.useCallback(()=>{const $=R?Mr(R):S,G=((R==null?void 0:R.mirrors)??[]).slice(0,3).join(" ");t(s("chat.desktopDownloadPrompt",{os:p,url:$||S,mirrors:G||s("chat.desktopDownloadPromptNoMirror")})),u(!1),H.success(s("chat.desktopDownloadHandToAiHint"))},[t,p,R,S,s]),Q=($,G,Z)=>{const ue=Wl($.size),Ne=Xo($.name);return e.jsxs("button",{type:"button",onClick:()=>X($),className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-dark-text transition-colors hover:bg-dark-hover",children:[e.jsx(nr,{size:12,className:"shrink-0 text-dark-muted","aria-hidden":"true"}),e.jsxs("span",{className:"min-w-0 flex-1 truncate",children:[e.jsxs("span",{className:"font-medium",children:[Z?`${s(Cr[G])} · `:"",Ne]}),$.source==="mirror"&&e.jsx("span",{className:"ml-1.5 rounded bg-accent-yellow/15 px-1 py-0.5 text-badge text-accent-yellow",children:s("chat.desktopDownloadFromMirror")}),e.jsx("span",{className:"mt-0.5 block truncate text-badge text-dark-muted",children:$.name})]}),ue&&e.jsx("span",{className:"shrink-0 text-badge text-dark-muted",children:s("chat.desktopDownloadSize",{size:ue})})]},`${G}-${$.name}`)},ne=Gl.filter($=>{var G;return $!==m&&(((G=N[$])==null?void 0:G.length)??0)>0}),oe=(R==null?void 0:R.mirrors)??[];return e.jsxs("div",{className:"relative flex shrink-0 items-center",ref:f,onPointerEnter:D,onFocus:D,children:[e.jsxs("button",{type:"button",onClick:ve,className:"flex h-8 items-center gap-1.5 rounded-l-full pl-2.5 pr-1.5 text-meta font-medium text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:M,"aria-label":M,children:[e.jsx(nr,{size:14,className:"shrink-0","aria-hidden":"true"}),e.jsx("span",{className:"hidden whitespace-nowrap sm:inline",children:U})]}),e.jsx("button",{type:"button",onClick:()=>{h||D(),u(!h)},className:"flex h-8 w-4 items-center justify-center rounded-r-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:s("chat.desktopDownloadMenu"),"aria-label":s("chat.desktopDownloadMenu"),"aria-haspopup":"menu","aria-expanded":h,children:e.jsx(on,{size:11,className:q("transition-transform",h&&"rotate-180"),"aria-hidden":"true"})}),h&&e.jsxs("div",{role:"menu","aria-label":s("chat.desktopDownloadMenu"),className:"absolute bottom-full left-0 mb-1 z-50 w-72 overflow-hidden rounded-lg border border-dark-border bg-dark-surface shadow-xl",children:[e.jsx("div",{className:"border-b border-dark-border px-3 py-1.5 text-badge font-semibold uppercase tracking-wide text-dark-muted",children:s("chat.desktopDownloadYourSystem",{os:p})}),e.jsx("div",{className:"py-1",children:(N[m]??[]).length>0?(N[m]??[]).map($=>Q($,m,!1)):e.jsx("div",{className:"px-3 py-1.5 text-meta leading-relaxed text-dark-muted",children:s(T?"chat.desktopDownloadMobileMenuHint":r==="failed"?"chat.desktopDownloadUnavailable":"chat.desktopDownloadLoading")})}),P&&e.jsx("div",{className:"border-t border-dark-border px-3 py-1.5 text-badge leading-relaxed text-accent-yellow",children:s("chat.desktopDownloadArmHint")}),ne.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-y border-dark-border px-3 py-1.5 text-badge font-semibold uppercase tracking-wide text-dark-muted",children:s("chat.desktopDownloadOtherSystems")}),e.jsx("div",{className:"py-1",children:[...ne].flatMap($=>(N[$]??[]).map(G=>Q(G,$,!0)))})]}),e.jsx("div",{className:"border-y border-dark-border px-3 py-1.5 text-badge font-semibold uppercase tracking-wide text-dark-muted",children:s("chat.desktopDownloadTrouble")}),e.jsxs("div",{className:"py-1",children:[oe.slice(0,2).map($=>e.jsxs("button",{type:"button",onClick:()=>{u(!1),Ar($,(R==null?void 0:R.name)??"")},className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-dark-text transition-colors hover:bg-dark-hover",children:[e.jsx(qn,{size:12,className:"shrink-0 text-dark-muted","aria-hidden":"true"}),e.jsx("span",{className:"truncate",children:s("chat.desktopDownloadViaMirror",{host:Jl($)})})]},$)),e.jsxs("button",{type:"button",onClick:()=>{u(!1),B()},className:"flex w-full items-center gap-2 px-3 py-1.5 text-left text-xs text-dark-text transition-colors hover:bg-dark-hover",children:[e.jsx(qn,{size:12,className:"shrink-0 text-dark-muted","aria-hidden":"true"}),e.jsx("span",{className:"truncate",children:s("chat.desktopDownloadOpenRelease")})]})]}),e.jsx("div",{className:"border-t border-dark-border",children:e.jsxs("button",{type:"button",onClick:_,className:"flex w-full items-center gap-2 px-3 py-2 text-left text-xs text-accent-blue transition-colors hover:bg-dark-hover",children:[e.jsx(rs,{size:12,className:"shrink-0","aria-hidden":"true"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"font-medium",children:s("chat.desktopDownloadHandToAi")}),e.jsx("span",{className:"mt-0.5 block text-badge text-dark-muted",children:s("chat.desktopDownloadHandToAiDesc")})]})]})}),m==="macos"&&e.jsx("div",{className:"border-t border-dark-border px-3 py-1.5 text-badge leading-relaxed text-dark-muted/80",children:s("chat.desktopDownloadMacUnsignedHint")}),r!=="ready"&&r!=="failed"&&e.jsxs("div",{className:"flex items-center gap-1.5 border-t border-dark-border px-3 py-1.5 text-badge text-dark-muted",children:[e.jsx(Ce,{size:10,className:"animate-spin","aria-hidden":"true"}),s("chat.desktopDownloadFetching")]})]})]})});function Yl(n,t){if(!n)return t;const s=n.includes("\\")?"\\":"/";return n.endsWith(s)?n+t:n+s+t}function Xl(n){const t=n.replace(/[\\/]+$/,""),s=Math.max(t.lastIndexOf("\\"),t.lastIndexOf("/"));return s===-1?t:t.slice(s+1)}function Nt(n){return n.replace(/[\\/]+/g,"/").replace(/\/+$/,"").toLowerCase()}function Ql({initial:n,onClose:t,onConfirm:s}){const{t:r}=K(),[i,c]=a.useState(n),[d,h]=a.useState(null),[u,f]=a.useState([]),[g,k]=a.useState(!1),[w,m]=a.useState(""),[j,A]=a.useState(n),p=a.useRef(null),T=a.useCallback(async N=>{k(!0),m("");try{const R=await de.dirs.list(N);if(!R.success||!R.data){if(R.code==="DIRS_OUT_OF_BOUNDARY"){m(r("chat.dirPickerForbidden"));return}m(R.error||r("chat.dirPickerLoadError"));return}c(R.data.path),h(R.data.parent),f(R.data.dirs||[]),A(R.data.path)}catch(R){m(R instanceof Error?R.message:r("chat.dirPickerLoadError"))}finally{k(!1)}},[r]);a.useEffect(()=>{T(n)},[n,T]),a.useEffect(()=>{var N;(N=p.current)==null||N.focus()},[]),a.useEffect(()=>{const N=R=>{R.key==="Escape"&&(R.preventDefault(),R.stopPropagation(),t())};return document.addEventListener("keydown",N),document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",N),document.body.style.overflow=""}},[t]);const M=a.useCallback(()=>{const N=j.trim();N&&T(N)},[j,T]),U=a.useCallback(()=>{d&&T(d)},[d,T]);return e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center overflow-hidden p-4",role:"dialog","aria-modal":"true",children:[e.jsx("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:t}),e.jsxs("div",{className:"relative w-full max-w-lg mx-4 bg-dark-surface border border-dark-border rounded-xl shadow-2xl animate-fade-in flex flex-col max-h-[70vh]",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-2.5 border-b border-dark-border shrink-0",children:[e.jsxs("span",{className:"flex items-center gap-2 text-compact font-semibold text-dark-text",children:[e.jsx(qr,{size:15,className:"text-accent-blue","aria-hidden":"true"}),r("chat.dirPickerTitle")]}),e.jsx("button",{type:"button",onClick:t,className:"rounded p-1 text-dark-muted hover:bg-dark-hover hover:text-dark-text transition-colors","aria-label":r("a11y.close"),children:e.jsx(At,{size:15,"aria-hidden":"true"})})]}),e.jsxs("div",{className:"p-4 flex flex-col gap-3 min-h-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(mo,{size:13,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-dark-muted/60","aria-hidden":"true"}),e.jsx("input",{ref:p,value:j,onChange:N=>A(N.target.value),onKeyDown:N=>{N.key==="Enter"&&M()},placeholder:r("chat.dirPickerEnterPath"),spellCheck:!1,className:`w-full rounded-lg border border-dark-border bg-dark-bg pl-8 pr-2.5 py-1.5 text-xs font-mono text-dark-text
27
- placeholder-dark-muted/50 focus:outline-none focus:border-accent-blue/50 focus:ring-2 focus:ring-accent-blue/10`})]}),e.jsx("button",{type:"button",onClick:M,disabled:g||!j.trim(),className:`shrink-0 rounded-lg border border-dark-border px-2.5 py-1.5 text-xs text-dark-muted
28
- hover:bg-dark-hover hover:text-dark-text disabled:opacity-40 transition-colors`,children:r("chat.dirPickerGo")})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"flex-1 truncate font-mono text-meta text-dark-muted bg-dark-bg rounded-md px-2 py-1 border border-dark-border",title:i,children:i||r("chat.noWorkspaceDir")}),e.jsxs("button",{type:"button",onClick:()=>void U(),disabled:g||!i,className:`shrink-0 flex items-center gap-1 rounded-md border border-dark-border px-2 py-1 text-meta text-dark-muted
29
- hover:bg-dark-hover hover:text-dark-text disabled:opacity-40 transition-colors`,children:[e.jsx(Wn,{size:12,"aria-hidden":"true"}),r("chat.dirPickerUp")]})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto custom-scrollbar rounded-lg border border-dark-border bg-dark-bg divide-y divide-dark-border/60",children:g?e.jsxs("div",{className:"flex items-center justify-center gap-2 py-6 text-xs text-dark-muted",children:[e.jsx(Ce,{size:14,className:"animate-spin","aria-hidden":"true"}),r("chat.loading")]}):w?e.jsx("div",{className:"px-3 py-4 text-xs text-accent-red",children:w}):u.length===0?e.jsx("div",{className:"px-3 py-4 text-xs text-dark-muted/60 text-center",children:r("chat.dirPickerNoDirs")}):u.map(N=>{const R=Yl(i,N);return e.jsxs("button",{type:"button",onClick:()=>void T(R),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs text-dark-text
30
- hover:bg-dark-hover transition-colors group`,children:[e.jsx(cn,{size:13,className:"shrink-0 text-accent-yellow/80 group-hover:text-accent-yellow","aria-hidden":"true"}),e.jsx("span",{className:"truncate",children:N}),e.jsx(xt,{size:12,className:"shrink-0 ml-auto text-dark-muted/40","aria-hidden":"true"})]},N)})}),e.jsx(Qr,{variant:"accent",className:"w-full",onClick:()=>s(i),disabled:!i,loading:g,children:r("chat.dirPickerConfirm")})]})]})]})}const Zl=a.memo(function({workspaceDir:t,onSelect:s}){const{t:r}=K(),i=dn(S=>S.recentDirs),c=mt(S=>S.projects),d=mt(S=>S.hidden),h=mt(S=>S.sort),u=mt(S=>S.disabled),f=mt(S=>S.lastError),[g,k]=a.useState(!1),[w,m]=a.useState(!1),j=a.useRef(null);a.useEffect(()=>{if(!g)return;const S=mt.getState();S.disabled||S.lastFetchedAt>0||S.refresh()},[g]),a.useEffect(()=>{if(!g)return;const S=D=>{j.current&&!j.current.contains(D.target)&&k(!1)},P=D=>{D.key==="Escape"&&k(!1)};return document.addEventListener("mousedown",S),document.addEventListener("keydown",P),()=>{document.removeEventListener("mousedown",S),document.removeEventListener("keydown",P)}},[g]);const A=a.useCallback(S=>{var D;const P=((D=S==null?void 0:S.trim)==null?void 0:D.call(S))||"";P&&(k(!1),m(!1),s(P))},[s]),p=new Set(d),T=u?[]:Qo(c.filter(S=>S.rootExists&&!p.has(S.projectId)),h),M=new Set(T.map(S=>Nt(S.root))),U=i.filter(S=>!M.has(Nt(S))),N=t?Nt(t):null,R=T.length>0||c.length===0&&!u&&f!==null;return e.jsxs("div",{className:"relative max-w-[180px] min-w-0",ref:j,children:[e.jsxs("button",{type:"button",onClick:()=>k(S=>!S),className:q("flex w-full items-center gap-1 px-2 py-0.5 rounded-full border text-xs whitespace-nowrap transition-colors cursor-pointer",g?"border-accent-blue/40 text-accent-blue bg-accent-blue/10":"border-dark-border text-dark-muted hover:bg-dark-hover hover:text-dark-text"),title:r("chat.clickToSwitchDir"),"aria-label":r("chat.clickToSwitchDir"),"aria-expanded":g,"aria-haspopup":"menu",children:[e.jsx(qr,{size:12,className:"shrink-0 text-accent-blue/80","aria-hidden":"true"}),e.jsx("span",{className:"truncate font-mono text-meta",children:t?Xl(t):r("chat.noWorkspaceDir")}),e.jsx(nt,{size:11,className:q("shrink-0 transition-transform",g&&"rotate-180"),"aria-hidden":"true"})]}),g&&e.jsxs("div",{role:"menu",className:"absolute bottom-full left-0 mb-2 w-72 max-w-[calc(100vw-1.5rem)] max-h-[70vh] overflow-y-auto custom-scrollbar rounded-xl border border-dark-border bg-dark-surface shadow-2xl z-40 animate-fade-in",children:[R&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"px-3 pt-2.5 pb-1 text-badge font-semibold uppercase tracking-wide text-dark-muted/50 select-none",children:r("chat.projectDirs")}),T.length===0?e.jsx("div",{className:"px-3 pb-2 text-meta text-accent-red/80 select-none",children:r("chat.projectsLoadFailed")}):e.jsx("div",{className:"max-h-44 overflow-y-auto custom-scrollbar","data-testid":"dir-picker-projects",children:T.map(S=>{const P=N!==null&&Nt(S.root)===N;return e.jsxs("button",{type:"button",role:"menuitem","data-testid":"dir-picker-project-row","data-project-id":S.projectId,onClick:()=>A(S.root),className:q("w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors group",P?"text-accent-blue bg-accent-blue/5":"text-dark-text hover:bg-dark-hover"),title:S.root,children:[e.jsx(cn,{size:12,className:q("shrink-0",P?"text-accent-blue":"text-accent-yellow/80 group-hover:text-accent-yellow"),"aria-hidden":"true"}),e.jsxs("span",{className:"min-w-0 flex-1",children:[e.jsx("span",{className:"block truncate",children:S.name}),e.jsx("span",{className:"block truncate font-mono text-meta text-dark-muted/60",children:S.root})]}),P&&e.jsx("span",{className:"shrink-0 text-badge text-accent-blue",children:"✓"})]},S.projectId)})}),e.jsx("div",{className:"border-t border-dark-border"})]}),e.jsx("div",{className:"px-3 pt-2.5 pb-1 text-badge font-semibold uppercase tracking-wide text-dark-muted/50 select-none",children:r("chat.recentDirs")}),U.length===0?e.jsx("div",{className:"px-3 pb-2 text-meta text-dark-muted/50 select-none",children:r("chat.noRecentDirs")}):e.jsx("div",{className:"max-h-56 overflow-y-auto custom-scrollbar",children:U.map(S=>{const P=N!==null&&Nt(S)===N;return e.jsxs("button",{type:"button",role:"menuitem","data-testid":"dir-picker-recent-row",onClick:()=>A(S),className:q("w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors group",P?"text-accent-blue bg-accent-blue/5":"text-dark-text hover:bg-dark-hover"),title:S,children:[e.jsx(cn,{size:12,className:q("shrink-0",P?"text-accent-blue":"text-accent-yellow/80 group-hover:text-accent-yellow"),"aria-hidden":"true"}),e.jsx("span",{className:"truncate font-mono text-meta",children:S}),P&&e.jsx("span",{className:"ml-auto shrink-0 text-badge text-accent-blue",children:"✓"})]},S)})}),e.jsx("div",{className:"border-t border-dark-border"}),e.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{k(!1),m(!0)},className:"w-full flex items-center gap-2 px-3 py-2 text-left text-xs text-accent-blue hover:bg-dark-hover transition-colors",children:[e.jsx(xt,{size:13,"aria-hidden":"true"}),r("chat.chooseOtherDir")]})]}),w&&Xr.createPortal(e.jsx(Ql,{initial:t||"",onClose:()=>m(!1),onConfirm:A}),document.body)]})}),et="__files__",ed="__sessions__";function td(n){return n==="enqueue"?"summarize":n==="summarize"?"next-step":n==="next-step"?"direct":"enqueue"}function nd(n){return n.replace(/[\\/]+$/,"").replace(/\\/g,"/").toLowerCase()}function sd(n){return[{key:et,label:n.files},{key:ed,label:n.sessions}]}function Tr(n){return n?nd(n):"￿"}function rd(n,t){return t===et?n.filter(r=>r.kind==="file"):[...n.filter(r=>r.kind==="session")].sort((r,i)=>Tr(r.kind==="session"?r.dir:"").localeCompare(Tr(i.kind==="session"?i.dir:"")))}function ad(n,t,s){if(n.length===0)return t;const r=n.indexOf(t),i=r<0?-1:r;if(s)return n[(i+1)%n.length];const c=i<0?n.length:i;return n[(c-1+n.length)%n.length]}const od=new Set(["running"]);function id(n){return od.has(String(n.status||""))?!0:n.live===!0}function cd(n,t){const s=[];for(const r of n){const i=String(r.id||r.sessionId||"");if(!i||i===t)continue;const c=String(r.title||i.slice(0,8));s.push({kind:"session",key:i,label:c,detail:i.slice(0,8),dir:String(r.workspaceDir||""),status:r.status===void 0?void 0:String(r.status),updatedAt:r.updatedAt===void 0?void 0:String(r.updatedAt),messageCount:typeof r.messageCount=="number"?r.messageCount:void 0})}return s}function Rr(n,t,s="active"){const r=cd(n,t);if(s==="all")return r;const i=new Map(n.map(c=>[String(c.id||c.sessionId||""),c]));return r.filter(c=>{const d=i.get(c.key);return d?id(d):!1})}const ld={enqueue:"chat.mentionDeliveryEnqueue",summarize:"chat.mentionDeliverySummarize","next-step":"chat.mentionDeliveryNextStep",direct:"chat.mentionDeliveryDirect"},dd={enqueue:"text-dark-muted hover:text-dark-text hover:bg-dark-hover",summarize:"text-dark-muted hover:text-dark-text hover:bg-dark-hover","next-step":"bg-accent-blue/20 text-accent-blue font-medium",direct:"bg-accent-green/20 text-accent-green font-medium"};function ud(n){return n==="running"?"bg-accent-green/15 text-accent-green":n==="paused"||n==="interrupted"||n==="error"?"bg-accent-yellow/15 text-accent-yellow":"bg-dark-hover text-dark-muted"}function md(n){return n==="running"?"chat.mentionStatusRunning":n==="paused"||n==="interrupted"?"chat.mentionStatusPaused":n==="error"?"chat.mentionStatusError":n==="stopped"?"chat.mentionStatusStopped":"chat.mentionStatusIdle"}function hd(n){return n?/^\d{12,}$/.test(n)?Number(n):n:0}function fd({isOpen:n,items:t,selectedIndex:s,query:r,isSearching:i,onSelect:c,onHover:d,selectedCount:h=0,onFinish:u,tabs:f,activeTab:g,onTabChange:k,scope:w="active",onToggleScope:m,deliveryMode:j="enqueue",onToggleDelivery:A}){const{t:p}=K();if(!n)return null;const T=!!(k&&f&&f.length>1);return e.jsxs("div",{className:"absolute bottom-full left-0 right-0 mb-2 bg-dark-surface border border-dark-border rounded-lg shadow-xl overflow-hidden z-50",children:[e.jsxs("div",{className:"max-h-60 overflow-y-auto custom-scrollbar",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 text-meta text-dark-muted border-b border-dark-border bg-dark-bg",children:[e.jsx("span",{className:"font-medium text-dark-text",children:r?`@${r}`:`@ ${p("chat.mentionFilesGroup")} / ${p("chat.mentionSessionsGroup")}`}),e.jsxs("span",{className:"opacity-70 flex items-center gap-2",children:[h>0&&e.jsx("span",{className:"px-1.5 py-0.5 rounded-full bg-accent-blue/20 text-accent-blue font-medium",children:p("chat.selectedCountShort",{n:h})}),e.jsx("span",{children:p(T?"chat.mentionTabHint":"chat.fileMentionHelpMulti")})]})]}),T&&e.jsx("div",{className:"flex items-center gap-1 px-3 py-1.5 border-b border-dark-border bg-dark-bg overflow-x-auto custom-scrollbar",children:f.map(M=>{const U=M.key===g;return e.jsx("button",{type:"button",onMouseDown:N=>{N.preventDefault(),k(M.key)},className:`px-2 py-0.5 rounded text-meta whitespace-nowrap transition-colors ${U?"bg-accent-blue/20 text-accent-blue font-medium":"text-dark-muted hover:text-dark-text hover:bg-dark-hover"}`,children:M.label},M.key)})}),t.length===0?e.jsx("div",{className:"px-3 py-6 text-center text-dark-muted text-xs flex flex-col items-center gap-1",children:i?e.jsxs(e.Fragment,{children:[e.jsx(Ce,{size:16,className:"animate-spin"}),e.jsx("span",{children:p("chat.searchingFiles")})]}):e.jsx("span",{children:p(T&&g!==et?"chat.mentionEmptySessions":"chat.noMatchingFiles")})}):t.map((M,U)=>{const N=t[U-1],R=N&&N.kind==="session"?N.dir||"":null,S=M.kind==="session"?M.dir||"":null,P=!N||N.kind!==M.kind||S!==null&&R!==S,D=S!==null?`📁 ${S||p("chat.mentionTabUnknownDir")}`:p("chat.mentionFilesGroup");return e.jsxs("div",{children:[P&&e.jsx("div",{className:"px-3 pt-2 pb-1 text-badge uppercase tracking-wide text-dark-muted/70 bg-dark-bg/40 truncate",title:D,children:D}),e.jsxs("button",{onClick:()=>c(M),onMouseEnter:()=>d(U),className:`w-full px-3 py-1.5 flex items-center gap-2 text-left text-xs transition-colors border-l-2 ${U===s?"bg-accent-blue/20 text-accent-blue border-accent-blue":"hover:bg-dark-hover text-dark-text border-transparent"}`,children:[M.kind==="session"?e.jsx(ho,{size:12,className:"text-accent-blue shrink-0"}):M.isDir?e.jsx(cn,{size:12,className:"text-accent-yellow shrink-0"}):e.jsx(ns,{size:12,className:"text-dark-muted shrink-0"}),e.jsx("span",{className:"truncate",children:M.label}),M.kind==="session"?e.jsxs("span",{className:"ml-auto flex shrink-0 items-center gap-1.5",children:[M.detail&&e.jsx("span",{className:"text-badge text-dark-muted truncate",children:M.detail}),M.updatedAt&&e.jsx("span",{className:"text-badge text-dark-muted/70",children:Zo(hd(M.updatedAt),Date.now(),p)}),M.messageCount!==void 0&&e.jsx("span",{className:"text-badge text-dark-muted/70",children:p("chat.mentionMsgCount",{count:M.messageCount})}),e.jsx("span",{className:`px-1.5 py-0.5 rounded-full text-badge whitespace-nowrap ${ud(M.status)}`,children:p(md(M.status))})]}):M.detail&&e.jsx("span",{className:"text-badge text-dark-muted truncate ml-auto",children:M.detail})]})]},M.key)})]}),u&&e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 border-t border-dark-border bg-dark-bg",children:[e.jsxs("span",{className:"flex items-center gap-2 text-badge text-dark-muted",children:[T&&m&&e.jsxs("button",{type:"button",onMouseDown:M=>M.preventDefault(),onClick:m,className:`px-1.5 py-0.5 rounded text-badge transition-colors ${w==="all"?"bg-accent-blue/20 text-accent-blue font-medium":"text-dark-muted hover:text-dark-text hover:bg-dark-hover"}`,title:p("chat.mentionScopeHint"),children:[p("chat.mentionScopeLabel"),p(w==="all"?"chat.mentionScopeAll":"chat.mentionScopeActive")]}),T&&A&&e.jsxs("button",{type:"button",onMouseDown:M=>M.preventDefault(),onClick:A,className:`px-1.5 py-0.5 rounded text-badge transition-colors ${dd[j]}`,title:p("chat.mentionDeliveryHint"),children:[p("chat.mentionDeliveryLabel"),p(ld[j])]}),e.jsx("span",{children:h>0?p("chat.selectedFilesCount",{n:h}):p("chat.enterInsertMulti")})]}),e.jsx(Qr,{variant:"accent",size:"sm",onClick:u,children:p("chat.finishMention")})]})]})}function xd({open:n,onClose:t,onSelect:s}){const{t:r}=K(),[i,c]=a.useState([]),[d,h]=a.useState(!1),[u,f]=a.useState("");a.useEffect(()=>{n&&(f(""),h(!0),de.skills.list().then(k=>{const w=Array.isArray(k.data)?k.data:[];c(w.filter(m=>m.enabled!==!1))}).catch(()=>c([])).finally(()=>h(!1)))},[n]);const g=a.useMemo(()=>{const k=u.trim().toLowerCase();return k?i.filter(w=>[w.id,w.name,w.description,w.category,...w.tags||[]].join(" ").toLowerCase().includes(k)):i},[i,u]);return e.jsx(ei,{isOpen:n,onClose:t,title:r("skills.pickTitle"),size:"lg",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-dark-bg border border-dark-border focus-within:border-accent-blue",children:[e.jsx(ts,{size:14,className:"text-dark-muted shrink-0"}),e.jsx("input",{value:u,onChange:k=>f(k.target.value),placeholder:r("skills.pickPlaceholder"),autoFocus:!0,className:"flex-1 bg-transparent outline-none text-sm placeholder-dark-muted/60"}),d&&e.jsx(Tt,{size:13,className:"animate-spin text-dark-muted"})]}),d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(Tt,{size:20,className:"animate-spin text-accent-blue"})}):g.length===0?e.jsx("div",{className:"text-center py-12 text-sm text-dark-muted",children:r("skills.pickEmpty")}):e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:g.map(k=>e.jsxs("button",{onClick:()=>s(k),className:"text-left rounded-lg border border-dark-border p-3 flex flex-col gap-1 transition-colors hover:border-accent-blue/50 hover:bg-dark-hover",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2 min-w-0",children:[e.jsxs("span",{className:"font-medium text-sm truncate",children:[k.icon||"⭐"," ",k.name]}),e.jsx("span",{className:"text-badge px-1.5 py-0.5 rounded bg-dark-bg border border-dark-border text-dark-muted shrink-0",children:k.injection||"lazy"})]}),e.jsxs("div",{className:"text-xs text-dark-muted truncate font-mono",children:["$",k.id]}),k.description&&e.jsx("div",{className:"text-xs text-dark-muted line-clamp-2",children:k.description}),e.jsxs("div",{className:"flex items-center justify-between gap-2 mt-1",children:[e.jsx("span",{className:"text-badge px-1.5 py-0.5 rounded bg-dark-bg border border-dark-border text-dark-muted truncate",children:k.category||"—"}),e.jsxs("span",{className:"flex items-center gap-1 text-meta text-accent-blue shrink-0",children:[e.jsx(fo,{size:11}),r("skills.pickUse")]})]})]},k.id))})]})})}function pd({isOpen:n,items:t,selectedIndex:s,query:r,isLoading:i,onSelect:c,onHover:d}){const{t:h}=K();return n?e.jsx("div",{className:"absolute bottom-full left-0 right-0 mb-2 bg-dark-surface border border-dark-border rounded-lg shadow-xl overflow-hidden z-50",children:e.jsxs("div",{className:"max-h-60 overflow-y-auto custom-scrollbar",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 text-meta text-dark-muted border-b border-dark-border bg-dark-bg",children:[e.jsx("span",{className:"font-medium text-dark-text truncate",children:r?`$${r}`:h("chat.skillMenuTitle")}),e.jsx("span",{className:"opacity-70 shrink-0",children:h("chat.skillMenuHint")})]}),t.length===0?e.jsx("div",{className:"px-3 py-6 text-center text-dark-muted text-xs flex flex-col items-center gap-1",children:i?e.jsxs(e.Fragment,{children:[e.jsx(Ce,{size:16,className:"animate-spin"}),e.jsx("span",{children:h("chat.skillMenuLoading")})]}):e.jsx("span",{children:h("chat.skillMenuEmpty")})}):t.map((u,f)=>e.jsxs("button",{onClick:()=>c(u),onMouseEnter:()=>d(f),className:`w-full px-3 py-1.5 flex items-center gap-2 text-left text-xs transition-colors border-l-2 ${f===s?"bg-accent-blue/20 text-accent-blue border-accent-blue":"hover:bg-dark-hover text-dark-text border-transparent"}`,children:[e.jsx("span",{className:"shrink-0","aria-hidden":"true",children:u.icon||e.jsx(rs,{size:12,className:"text-accent-blue"})}),e.jsx("span",{className:"truncate",children:u.name||u.id}),e.jsxs("span",{className:"text-badge font-mono text-dark-muted shrink-0",children:["$",u.id]}),u.description&&e.jsx("span",{className:"text-badge text-dark-muted truncate ml-auto",children:u.description})]},u.id))]})}):null}function bd(n){for(let t=n.length-1;t>=0;t--)if(n[t]==="$"){if(t>0&&/\w/.test(n.charAt(t-1)))continue;return t}return-1}function gd(n,t){const s=t.filter(r=>r.enabled!==!1);if(!n)return"prefix";for(const r of s)if(r.id.toLowerCase()===n)return"exact";for(const r of s)if(r.id.toLowerCase().startsWith(n))return"prefix";return null}function Dr(n,t,s){const r=n.slice(0,t),i=bd(r);if(i===-1)return{active:!1,query:"",start:-1};const c=r.slice(i+1);if(c.length>=200||!/^[\w.\-\\/\s]*$/.test(c))return{active:!1,query:"",start:-1};const d=(c.split(/[\s/\\]/)[0]??"").toLowerCase();return(s.length===0?"prefix":gd(d,s))!=="prefix"?{active:!1,query:"",start:-1}:{active:!0,query:c,start:i}}function kd(n,t){const s=t.trim().toLowerCase();if(!s)return 1;const r=n.id.toLowerCase(),i=(n.name||"").toLowerCase(),c=(n.description||"").toLowerCase(),d=(n.tags||[]).join(" ").toLowerCase();return r===s||i===s?100:r.startsWith(s)?90:i.startsWith(s)?80:r.includes(s)?60:i.includes(s)?55:d.includes(s)?40:c.includes(s)?30:0}function vd(n,t){const s=t.replace(/^\$/,"").trim().split(/\s+/)[0]??"";return n.filter(r=>r.enabled!==!1).map(r=>({skill:r,score:kd(r,s)})).filter(r=>r.score>0).sort((r,i)=>i.score-r.score||r.skill.id.localeCompare(i.skill.id)).map(r=>r.skill)}class tt extends Error{constructor(s,r){super(r??s);Ys(this,"code");this.code=s,this.name="ScreenshotError"}}function yd(n){const t=document.createElement("canvas");t.width=n.videoWidth,t.height=n.videoHeight;const s=t.getContext("2d");if(!s)throw new tt("failed","Canvas 2D context unavailable");return s.drawImage(n,0,0,t.width,t.height),new Promise((r,i)=>{t.toBlob(c=>c?r(c):i(new tt("failed","canvas.toBlob returned null")),"image/png")})}async function wd(){var s;if(!((s=navigator.mediaDevices)!=null&&s.getDisplayMedia))throw new tt("unsupported","Screen capture is not supported in this browser");const n=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1}).catch(r=>{const i=r instanceof DOMException?r.name:"";throw i==="NotAllowedError"||i==="AbortError"?new tt("cancelled","User dismissed the screen picker"):new tt("failed",r instanceof Error?r.message:String(r))}),t=n.getTracks();try{const r=document.createElement("video");r.srcObject=n,r.muted=!0,r.playsInline=!0,await r.play().catch(()=>{}),r.readyState<2&&await new Promise(u=>{const f=()=>u();r.addEventListener("loadeddata",f,{once:!0}),setTimeout(f,1e3)}),await new Promise(u=>requestAnimationFrame(()=>u()));const i=r.videoWidth,c=r.videoHeight;if(!i||!c)throw new tt("failed","Captured video frame has no pixels");const d=await yd(r);r.srcObject=null;const h=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19);return new File([d],`screenshot-${h}.png`,{type:"image/png"})}finally{for(const r of t)r.stop()}}const sn=16e3;function Kn(){const n=["audio/webm;codecs=opus","audio/webm","audio/mp4"];if(typeof MediaRecorder>"u")return"";for(const t of n)if(MediaRecorder.isTypeSupported(t))return t;return""}async function jd(n){if(n.sampleRate===sn&&n.numberOfChannels===1)return n.getChannelData(0);const t=Math.max(1,Math.ceil(n.length*sn/n.sampleRate)),s=new OfflineAudioContext(1,t,sn),r=s.createBufferSource();return r.buffer=n,r.connect(s.destination),r.start(0),(await s.startRendering()).getChannelData(0)}function Nd(n,t){const s=new ArrayBuffer(44+n.length*2),r=new DataView(s),i=(d,h)=>{for(let u=0;u<h.length;u++)r.setUint8(d+u,h.charCodeAt(u))};i(0,"RIFF"),r.setUint32(4,36+n.length*2,!0),i(8,"WAVE"),i(12,"fmt "),r.setUint32(16,16,!0),r.setUint16(20,1,!0),r.setUint16(22,1,!0),r.setUint32(24,t,!0),r.setUint32(28,t*2,!0),r.setUint16(32,2,!0),r.setUint16(34,16,!0),i(36,"data"),r.setUint32(40,n.length*2,!0);let c=44;for(let d=0;d<n.length;d++){const h=Math.max(-1,Math.min(1,n[d]??0));r.setInt16(c,h<0?h*32768:h*32767,!0),c+=2}return s}function Sd(n){return new Promise((t,s)=>{const r=new FileReader;r.onload=()=>{const i=String(r.result||""),c=i.indexOf(",");t(c>=0?i.slice(c+1):i)},r.onerror=()=>s(r.error),r.readAsDataURL(n)})}function Ed(n){const[t,s]=a.useState("idle"),[r,i]=a.useState(0),c=a.useRef(null),d=a.useRef(null),h=a.useRef([]),u=a.useRef(null),f=a.useRef(0),g=a.useCallback(()=>{var A;(A=d.current)==null||A.getTracks().forEach(p=>p.stop()),d.current=null},[]),k=a.useCallback(()=>{u.current&&(clearInterval(u.current),u.current=null)},[]);a.useEffect(()=>()=>{k(),c.current&&c.current.state!=="inactive"&&c.current.stop(),g()},[k,g]);const w=a.useCallback(async()=>{if(t!=="idle")return;if(typeof MediaRecorder>"u")throw new Error("当前浏览器不支持语音输入(需要 MediaRecorder)。请使用 Chrome/Edge/Firefox 或桌面版。");let A;try{A=await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:!0}})}catch(T){throw T instanceof DOMException&&T.name==="NotAllowedError"?new Error("麦克风权限被拒绝。请在浏览器地址栏允许麦克风权限后重试。"):new Error("无法访问麦克风:"+(T instanceof Error?T.message:String(T)))}d.current=A,h.current=[];const p=new MediaRecorder(A,Kn()?{mimeType:Kn()}:void 0);p.ondataavailable=T=>{T.data&&T.data.size>0&&h.current.push(T.data)},c.current=p,p.start(),f.current=Date.now(),i(0),s("recording"),u.current=setInterval(()=>i(Date.now()-f.current),100)},[t]),m=a.useCallback(async()=>{var T;const A=c.current;if(!A||A.state==="inactive")throw new Error("当前没有进行中的录音。");const p=new Promise(M=>{A.onstop=()=>M()});A.stop(),await p,k(),g(),c.current=null,s("transcribing");try{const M=new Blob(h.current,{type:Kn()||"audio/webm"});h.current=[];const U=await M.arrayBuffer(),N=new AudioContext;let R;try{R=await N.decodeAudioData(U)}finally{N.close()}if(R.duration<.25)return s("idle"),"";const P=await jd(R),D=Nd(P,sn),B=await Sd(new Blob([D],{type:"audio/wav"})),X=await de.stt.transcribe(n,B,"wav");if(!X.success)throw new Error(X.error||"语音转写失败");return((T=X.data)==null?void 0:T.text)??""}finally{s("idle")}},[n,k,g]),j=a.useCallback(()=>{const A=c.current;A&&A.state!=="inactive"&&A.stop(),c.current=null,h.current=[],k(),g(),s("idle")},[k,g]);return{state:t,elapsedMs:r,start:w,stop:m,cancel:j}}const Cd=({isOpen:n,commands:t,selectedIndex:s,filter:r,onSelect:i,onHover:c,containerRef:d})=>{const{t:h}=K();return!n||t.length===0?null:e.jsxs("div",{ref:d,className:"absolute bottom-full left-0 right-0 mb-2 bg-dark-surface border border-dark-border rounded-lg shadow-xl overflow-hidden z-50 max-h-72 overflow-y-auto custom-scrollbar",children:[e.jsxs("div",{className:"flex items-center justify-between px-3 py-2 text-meta text-dark-muted border-b border-dark-border bg-dark-bg",children:[e.jsx("span",{className:"font-medium text-dark-text",children:r?`/${r}`:h("slashCommands.quickCommands")}),e.jsx("span",{className:"opacity-70",children:h("slashCommands.help")})]}),t.map((u,f)=>e.jsxs("button",{"data-index":f,onClick:()=>i(u),onMouseEnter:()=>c(f),className:`w-full px-3 py-2 flex items-start gap-3 text-left transition-colors border-l-2 ${f===s?"bg-accent-blue/10 border-accent-blue":"border-transparent hover:bg-dark-hover"}`,children:[e.jsx("span",{className:"text-lg leading-none shrink-0","aria-hidden":"true",children:u.icon}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"text-sm font-medium text-dark-text",children:["/",u.name]}),u.args&&e.jsx("span",{className:"text-xs text-dark-muted",children:u.args}),!u.local&&e.jsx("span",{className:"text-badge px-1.5 py-0.5 rounded bg-accent-blue/20 text-accent-blue shrink-0",children:h("slashCommands.backend")})]}),e.jsx("div",{className:"text-xs text-dark-muted truncate",children:u.description})]}),f===s&&e.jsx(xo,{size:14,className:"text-dark-muted shrink-0 mt-0.5","aria-hidden":"true"})]},u.id))]})},la=["xlsx","xls","csv","docx","txt","md","mdx","rst","adoc","ts","tsx","js","jsx","mjs","cjs","mts","cts","json","jsonc","yaml","yml","toml","xml","html","css","scss","less","py","rb","go","rs","java","kt","swift","c","h","cpp","hpp","cc","cs","sh","bash","zsh","ps1","bat","cmd","sql","graphql","proto","vue","svelte","astro","env","gitignore","gitattributes","editorconfig"],Md=new RegExp(`(?:\\.(${la.join("|")})|dockerfile|makefile)$`,"i"),da=["png","jpg","jpeg","webp","gif","bmp","svg"],Ad=Object.freeze([]),Td=new RegExp(`\\.(${da.join("|")})$`,"i"),Rd=10*1024*1024,Dd=la.map(n=>`.${n}`).join(",")+",.Dockerfile,.Makefile,"+da.map(n=>`.${n}`).join(","),$d=".agent/attachments",Pd=50*1024*1024,Zt=10,en="chat-col",$r=72,Pr=.7,Zn="deepseekcode.composerPref",zd=550;function zr(){try{const n=window.localStorage.getItem(Zn);return n==="collapsed"||n==="expanded"?n:"auto"}catch{return"auto"}}function Ld(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(hover: hover) and (pointer: fine)").matches}const _d=/["<>]/g;function Id(n){return`<image name="${(n||"image").replace(_d,"")}" />`}const Od=n=>/\.xlsx?$/i.test(n)?Gn:/\.(csv|docx|txt|md|mdx|rst|adoc|json|jsonc|yaml|yml|toml|xml|html|css|scss|less|env|gitignore|gitattributes|editorconfig)$/i.test(n)?rn:/\.(ts|tsx|js|jsx|mjs|cjs|mts|cts|py|rb|go|rs|java|kt|swift|c|h|cpp|hpp|cc|cs|sh|bash|zsh|ps1|bat|cmd|sql|graphql|proto|vue|svelte|astro|dockerfile|makefile)$/i.test(n)?wo:ns,Lr=50,Fd=5e3,Bd={enqueue:"chat.mentionDeliveryEnqueue",summarize:"chat.mentionDeliverySummarize","next-step":"chat.mentionDeliveryNextStep",direct:"chat.mentionDeliveryDirect"},Hd={enqueue:"text-dark-muted hover:bg-dark-hover hover:text-dark-text",summarize:"text-dark-muted hover:bg-dark-hover hover:text-dark-text","next-step":"bg-accent-blue/10 text-accent-blue",direct:"bg-accent-blue/10 text-accent-blue"};function Ud(n,t){const s=n.slice(0,t),r=s.lastIndexOf("@");if(r===-1)return{active:!1,query:"",start:-1};const i=s.slice(r+1);return/^[\p{L}\p{N}_\-./]*$/u.test(i)?{active:!0,query:i,start:r}:{active:!1,query:"",start:-1}}function Kd(n,t){const s=n.lastIndexOf(`
31
- `,t-1)+1,r=n.slice(s,t);return r.startsWith("/")?/\s/.test(r)?{active:!1,query:""}:{active:!0,query:r.slice(1)}:{active:!1,query:""}}const Zd=a.memo(function({sessionId:t,onSend:s,onRunShell:r,onStop:i,onPause:c,onResume:d,slashOptions:h,workspaceDir:u,onWorkspaceSelect:f,focusRequest:g,inputDisabled:k,inputDisabledHint:w}){const{t:m}=K(),j=re(o=>{var l;return((l=o.sessionInputs)==null?void 0:l[t])??""}),A=re(o=>o.setSessionInput),p=re(o=>{var l;return((l=o.generatingSessions)==null?void 0:l.includes(t))??!1}),T=re(o=>{var l;return((l=o.pausedSessions)==null?void 0:l.includes(t))??!1}),M=re(o=>{var l;return((l=o.sessionSuggestions)==null?void 0:l[t])??""}),U=re(o=>o.setSessionSuggestion),N=!j&&!p&&!k?M:"",R=re(o=>{var l;return(l=o.pendingBySession)==null?void 0:l[t]})??Ad,S=R.length,P=a.useRef(null),[D,B]=a.useState(null),X=a.useRef(null),[ve,_]=a.useState(!1),Q=a.useRef(null),ne=a.useRef(!1),oe=a.useRef(0),[O,$]=a.useState([]),[G,Z]=a.useState(!1),[ue,Ne]=a.useState(!1),[xe,Ue]=a.useState(!1),[ee,pe]=a.useState(!1),[me,ce]=a.useState(""),[Se,v]=a.useState(0),[I,se]=a.useState([]),[te,ye]=a.useState(!1),le=a.useRef(-1),he=a.useRef([]);he.current=I;const _e=a.useRef(null),st=a.useCallback(()=>{const o=re.getState().clearPending(t);o>0&&H.info(m("toast.queueRevoked",{count:o}))},[t,m]),pt=a.useCallback(o=>{const l=re.getState();if(l.promotePending(t,o),!l.isGenerating(t)&&!l.isPaused(t)){ti(t);return}H.info(m("toast.queuePromoted"))},[t,m]),fn=a.useCallback(o=>{re.getState().removePending(t,o)&&H.info(m("toast.queueRemoved"))},[t,m]),x=a.useCallback(o=>{A(t,o)},[t,A]),z=a.useCallback(()=>{x(M),requestAnimationFrame(()=>{const o=P.current;o&&(o.focus(),o.selectionStart=o.selectionEnd=M.length)})},[x,M]),W=a.useCallback(o=>{var V;const l=re.getState().removePending(t,o);if(!l)return;const b=[],y=[];let E=(((V=l.display)==null?void 0:V.content)??l.content).replace(/<attachment path="([^"]*)"\s*\/>/g,(F,Y)=>(b.push(Y),"")).replace(/<image name="([^"]*)"\s*\/>/g,(F,Y)=>(y.push(Y),"")).trim();if(l.display)for(const F of l.display.pastes){const Y=Zr(F.content),Te=is(F.content),Yt=Te>0?`[Pasted text #${Y} +${Te} lines]`:`[Pasted text #${Y}]`;E=E.replace(new RegExp(`\\[Pasted text #${F.id}(?:\\s*\\+\\d+ lines?)?\\]`,"g"),Yt)}for(const F of l.files??[])Ee.current.add(F);const C=b.map((F,Y)=>({id:`queued-att-${Date.now()}-${Y}`,name:F.split("/").pop()||F,size:0,uploading:!1,path:F}));(l.images??[]).forEach((F,Y)=>{C.push({id:`queued-img-${Date.now()}-${Y}`,name:y[Y]||`image-${Y+1}.png`,size:Math.max(1,Math.round((F.length-F.indexOf(",")-1)*3/4)),uploading:!1,imageDataUri:F})}),C.length>0&&$(F=>[...F,...C].slice(-Zt));const L=re.getState().getSessionInput(t);x(L.trim()?`${L.trimEnd()}
32
-
33
- ${E}`:E),requestAnimationFrame(()=>{var F;return(F=P.current)==null?void 0:F.focus()})},[t,x]),fe=a.useCallback(o=>o.replace(/<attachment path="[^"]*"\s*\/>/g,"").replace(/<image name="[^"]*"\s*\/>/g,"").trim(),[]),[ie,rt]=a.useState(di),[at,Ke]=a.useState(!1),De=a.useRef(null),ua=a.useCallback(o=>{rt(o),ui(o),Ke(!1)},[]);a.useEffect(()=>{if(!at)return;const o=b=>{De.current&&!De.current.contains(b.target)&&Ke(!1)},l=b=>{b.key==="Escape"&&Ke(!1)};return document.addEventListener("mousedown",o),document.addEventListener("keydown",l),()=>{document.removeEventListener("mousedown",o),document.removeEventListener("keydown",l)}},[at]);const be=Ed(ie),$t=a.useRef(null),fs=a.useCallback(async()=>{var o;try{if(!$t.current){const y=await de.stt.status();y.success&&y.data&&($t.current=y.data)}const l=$t.current;if(!l)return!0;if(l.service!=="ok"&&l.service!=="stopped")return H.warning(m("stt.backendMissing")),window.dispatchEvent(new CustomEvent("switch-tab",{detail:{tab:"settings",section:"stt"}})),!1;const b=(o=l.backends)==null?void 0:o[ie];return b&&!b.installed?(H.warning(m("stt.backendMissing")),window.dispatchEvent(new CustomEvent("switch-tab",{detail:{tab:"settings",section:"stt"}})),!1):!0}catch{return!0}},[m,ie]);a.useEffect(()=>{const o=()=>{$t.current=null};return window.addEventListener("stt-backends-changed",o),()=>window.removeEventListener("stt-backends-changed",o)},[]),a.useEffect(()=>{const o=l=>{var y;const b=fi((y=l.detail)==null?void 0:y.lang);rt(b)};return window.addEventListener("stt-lang-changed",o),()=>window.removeEventListener("stt-lang-changed",o)},[]);const xs=a.useCallback(o=>{const l=P.current,b=(l==null?void 0:l.selectionStart)??j.length,y=j.slice(0,b)+o+j.slice(b);x(y),requestAnimationFrame(()=>{l==null||l.focus();const E=b+o.length;l&&(l.selectionStart=l.selectionEnd=E)})},[j,x]);a.useEffect(()=>{if(!g)return;const o=P.current;if(!o)return;o.focus();const l=o.value.length;o.selectionStart=l,o.selectionEnd=l},[g]);const ma=a.useCallback(async()=>{if(p){H.info(m("stt.generatingTitle"));return}if(be.state==="recording"){try{const l=await be.stop();l?xs(l):H.info(m("stt.noSpeech"))}catch(l){H.error(l instanceof Error?l.message:String(l))}return}if(!(be.state!=="idle"||!await fs()))try{await be.start()}catch(l){H.error(l instanceof Error?l.message:String(l))}},[be,xs,fs,m,p]),ha=ni(h),{isOpen:Me,filter:fa,filteredCommands:Pt,selectedIndex:xn,setSelectedIndex:pn,selectNext:ps,selectPrev:bs,executeCommand:zt,openMenu:gs,closeMenu:je,setFilter:ks,allCommands:vs,containerRef:xa}=ha,[we,Ae]=a.useState(!1),[Lt,ot]=a.useState(""),[bn,ys]=a.useState([]),[gn,qe]=a.useState(0),[pa,ws]=a.useState(!1),[ba,Ge]=a.useState(0),it=a.useRef(-1),[js,ga]=a.useState("active"),_t=a.useRef("active"),[It,ka]=a.useState("summarize"),Ot=a.useRef("summarize");Ot.current=It;const[Ns,va]=a.useState([]),Ft=a.useCallback(()=>{va(Array.from($e.current.values()))},[]);_t.current=js;const Ee=a.useRef(new Set),$e=a.useRef(new Map),Ss=a.useRef([]),Bt=a.useRef(0),Ie=a.useRef(!1);a.useEffect(()=>{const o=l=>{const b=re.getState().getSessionInput(t),y=`@${l} `,E=b.trim()?`${b.trimEnd()} ${y}`:y;Ee.current.add(l),A(t,E),Ge(Ee.current.size+$e.current.size),requestAnimationFrame(()=>{var C;return(C=P.current)==null?void 0:C.focus()})};return ii(o),()=>si(o)},[t,A]),a.useEffect(()=>{const o=l=>{const b=re.getState().getSessionInput(t),y=b.trim()?`${b.trimEnd()}
34
-
35
- ${l}`:l;A(t,y),requestAnimationFrame(()=>{var E;return(E=P.current)==null?void 0:E.focus()})};return ci(o),()=>ri(o)},[t,A]);const ya=a.useCallback(o=>{const l=re.getState().getSessionInput(t),b=l.trim()?`${l.trimEnd()}
36
-
37
- ${o}`:o;A(t,b),requestAnimationFrame(()=>{var y;return(y=P.current)==null?void 0:y.focus()})},[t,A]),Es=a.useRef([]),[Cs,Ht]=a.useState(et),bt=a.useRef([]),ct=a.useRef([]),kn=a.useRef(0),Ms=a.useRef("");Ms.current=Lt;const As=a.useCallback((o,l)=>{const b=o.map(L=>({kind:"file",key:L.path,label:L.name,detail:L.path,isDir:L.type==="directory"})),y=bt.current,E=l.toLowerCase(),C=(E?y.filter(L=>L.label.toLowerCase().includes(E)||L.key.toLowerCase().includes(E)):y).slice(0,Lr);return[...b,...C]},[]),Ut=a.useCallback(async()=>{const o=Date.now();if(ct.current.length>0&&o-kn.current<Fd)return ct.current;try{const l=await de.sessions.list(),b=l.success&&l.data?l.data:[];(b.length>0||ct.current.length===0)&&(ct.current=b),kn.current=Date.now()}catch{}return ct.current},[]),vn=a.useCallback(async()=>{const o=await Ut();return bt.current=Rr(o,t,_t.current),bt.current},[Ut,t]),Ts=a.useCallback(o=>{Es.current=o,ys(o)},[]),We=a.useCallback((o,l)=>{Ts(As(o.slice(0,Lr),l))},[Ts,As]),yn=a.useCallback(()=>{const o=_t.current==="active"?"all":"active";_t.current=o,ga(o),(async()=>{const l=await Ut();bt.current=Rr(l,t,o),We(Ss.current,Ms.current.toLowerCase())})()},[Ut,t,We]),Kt=a.useCallback(()=>{let o=td(Ot.current);(o==="direct"||o==="summarize")&&Ee.current.size>0&&(o="enqueue"),Ot.current=o,ka(o)},[]),Je=a.useMemo(()=>sd({files:m("chat.mentionTabFiles"),sessions:m("chat.mentionTabSessions")}),[m]),wn=Je.some(o=>o.key===Cs)?Cs:et,lt=a.useMemo(()=>rd(bn,wn),[bn,wn]);a.useEffect(()=>{Ee.current=new Set,$e.current=new Map,Ft(),Ie.current=!1,Ht(et),bt.current=[],ct.current=[],kn.current=0,Bt.current++,Ae(!1),ot(""),ys([]),Es.current=[],Ge(0),je()},[t,je,Ft]);const Rs=a.useDeferredValue(j),Ds=ht(o=>o.estimateTokens),jn=a.useMemo(()=>Ds(Rs),[Rs,Ds]),$s=a.useCallback(()=>{const o=P.current;if(o){if(D!=null){o.style.maxHeight=`${D}px`,o.style.height=`${D}px`;return}o.style.maxHeight="",o.style.height="auto",o.style.height=Math.min(o.scrollHeight,200)+"px"}},[D]);a.useEffect(()=>{$s()},[j,O.length,$s]),a.useEffect(()=>()=>{document.body.style.userSelect=""},[]);const wa=a.useCallback(o=>{const l=P.current;!l||o.button!==0||(o.preventDefault(),X.current={startY:o.clientY,startHeight:l.getBoundingClientRect().height,current:0},o.currentTarget.setPointerCapture(o.pointerId),document.body.style.userSelect="none",_(!0))},[]),ja=a.useCallback(o=>{const l=X.current,b=P.current;if(!l||!b)return;l.movedY=o.clientY-l.startY;const y=Math.max($r,Math.min(Math.round(window.innerHeight*Pr),l.startHeight-(o.clientY-l.startY)));l.current=y,b.style.maxHeight=`${y}px`,b.style.height=`${y}px`},[]),Ps=a.useCallback(o=>{const l=X.current;if(X.current=null,document.body.style.userSelect="",_(!1),!!l){try{o.currentTarget.releasePointerCapture(o.pointerId)}catch{}l.current>0&&Math.abs(l.movedY??0)>3&&B(l.current)}},[]),Na=a.useCallback(()=>B(null),[]),zs=a.useCallback(o=>{const l=P.current;if(!l)return;const b=D??l.getBoundingClientRect().height,y=Math.max($r,Math.min(Math.round(window.innerHeight*Pr),b+o));B(y)},[D]),gt=a.useCallback(async o=>{const l=++Bt.current;ws(!0);try{const b=await de.files.search(o);if(l!==Bt.current)return null;const E=(b.success&&b.data?b.data.files:[]).map(C=>({id:C,name:C.slice(C.lastIndexOf("/")+1),path:C,type:"file"}));return Ss.current=E,E}catch{return null}finally{l===Bt.current&&ws(!1)}},[]),Ls=a.useCallback(async(o,l)=>{if(Ie.current){const C=it.current;if(C<0||l<C){Ie.current=!1,Ae(!1);return}const L=o.slice(C,l);if(/\s/.test(L)){Ie.current=!1,Ae(!1);return}it.current=C,ot(L),Ae(!0),qe(0);const V=L.toLowerCase(),[F]=await Promise.all([gt(V),vn()]);if(!F)return;We(F,V);return}const b=Ud(o,l);if(!b.active){we&&Ae(!1);return}it.current=b.start,ot(b.query),Ae(!0),qe(0);const y=b.query.toLowerCase(),[E]=await Promise.all([gt(y),vn()]);E&&We(E,y)},[we,gt,vn,We]),_s=a.useCallback(async()=>{if(he.current.length>0)return he.current;if(_e.current)return _e.current;ye(!0);const o=de.skills.list().then(l=>{const b=Array.isArray(l.data)?l.data:[];return se(b),b}).catch(()=>[]).finally(()=>{_e.current=null,ye(!1)});return _e.current=o,o},[]),Ve=a.useMemo(()=>vd(I,me),[I,me]),Is=a.useCallback((o,l)=>{const b=Dr(o,l,he.current);if(!b.active){ee&&(pe(!1),ce(""));return}le.current=b.start,ce(b.query),v(0),pe(!0),he.current.length===0&&_s()},[ee,_s]);a.useEffect(()=>{if(!ee||I.length===0)return;const o=P.current;if(!o)return;const l=Dr(o.value,o.selectionStart??o.value.length,I);if(!l.active){pe(!1),ce("");return}le.current=l.start,ce(l.query)},[I,ee]);const Sa=a.useCallback(o=>{const l=o.target.value,b=o.target.selectionStart??l.length;x(l),Ls(l,b),Is(l,b);const y=Kd(l,b);y.active?(Me||gs(),ks(y.query),pn(0)):Me&&je()},[x,Ls,Is,Me,gs,ks,pn,je]),Nn=a.useCallback(o=>{const l=P.current,b=j,y=it.current>=0?it.current:(l==null?void 0:l.selectionStart)??b.length,E=Math.min(b.length,y+1+Lt.length);let C,L;if(o.kind==="session"){const F=o.label||o.key;C=/\s/.test(F)?o.key:F,$e.current.set(o.key,F),Ft(),L=`@${C} `}else C=o.key,Ee.current.add(C),L=`@${C} `;const V=b.slice(0,y)+L+b.slice(E);x(V),Ae(!0),ot(""),(async()=>{const F=await gt("");F&&We(F,"")})(),qe(0),Ge(Ee.current.size+$e.current.size),it.current=y+L.length,Ie.current=!0,requestAnimationFrame(()=>{l==null||l.focus(),l&&(l.selectionStart=l.selectionEnd=y+L.length)})},[j,Lt,x,gt,We]),kt=a.useCallback(()=>{Ie.current=!1,Ae(!1),ot(""),Ge(0),Ht(et)},[]),Sn=a.useCallback(o=>{const l=P.current;if(!o.args){const C=zt(o,"");if(C!=null&&C.message&&(C.success?H.success(C.message):H.error(C.message)),C!=null&&C.draft){x(C.draft),B(null),requestAnimationFrame(()=>{l==null||l.focus(),l&&(l.selectionStart=l.selectionEnd=C.draft.length)});return}x(""),B(null);return}const b=(l==null?void 0:l.selectionStart)??j.length,y=j.lastIndexOf(`
38
- `,b-1)+1,E=j.slice(0,y)+`/${o.name} `+j.slice(b);x(E),je(),requestAnimationFrame(()=>{l==null||l.focus();const C=y+o.name.length+2;l&&(l.selectionStart=l.selectionEnd=C)})},[j,x,zt,je]),En=a.useCallback(o=>{const l=P.current,b=le.current>=0?le.current:(l==null?void 0:l.selectionStart)??j.length,y=Math.min(j.length,b+1+me.length),E=`$${o.id} `,C=j.slice(0,b)+E+j.slice(y);x(C),pe(!1),ce(""),le.current=-1,requestAnimationFrame(()=>{l==null||l.focus();const L=b+E.length;l&&(l.selectionStart=l.selectionEnd=L)})},[j,me,x]),qt=a.useCallback(()=>{pe(!1),ce(""),le.current=-1},[]),Ea=a.useCallback(o=>{const l=P.current,b=(l==null?void 0:l.selectionStart)??j.length,y=`$${o.id} `,E=j.slice(0,b)+y+j.slice(b);x(E),Ue(!1),Ie.current=!1,Ae(!1),ot(""),pe(!1),ce(""),requestAnimationFrame(()=>{l==null||l.focus();const C=b+y.length;l&&(l.selectionStart=l.selectionEnd=C)})},[j,x]),Os=2048,Fs=a.useCallback(o=>new Promise((l,b)=>{const y=()=>{const E=new FileReader;E.onload=()=>l(String(E.result??"")),E.onerror=()=>b(new Error("Failed to read image")),E.readAsDataURL(o)};(async()=>{let E=null;try{E=await createImageBitmap(o)}catch{y();return}try{const C=Math.max(E.width,E.height);if(C<=Os){E.close(),y();return}const L=Os/C,V=document.createElement("canvas");V.width=Math.max(1,Math.round(E.width*L)),V.height=Math.max(1,Math.round(E.height*L));const F=V.getContext("2d");if(!F){E.close(),y();return}F.drawImage(E,0,0,V.width,V.height),E.close();const Y=o.type==="image/jpeg"?"image/jpeg":"image/png";l(V.toDataURL(Y,Y==="image/jpeg"?.9:void 0))}catch{E==null||E.close(),y()}})()}),[]),Oe=a.useCallback(o=>{const l=Array.from(o);$(b=>{const y=Zt-b.length,E=b.slice();for(const C of l.slice(0,y)){const L=Td.test(C.name);if(!L&&!Md.test(C.name)){H.warning(m("fileJob.unsupportedType",{name:C.name}));continue}if(C.size>(L?Rd:Pd)){H.error(m("fileJob.fileTooLarge",{name:C.name}));continue}if(E.some(F=>F.name===C.name&&F.size===C.size)){H.warning(m("fileJob.duplicateFile",{name:C.name}));continue}const V={id:`att-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,file:C,name:C.name,size:C.size,uploading:!1};L&&Fs(C).then(F=>{$(Y=>Y.map(Te=>Te.id===V.id?{...Te,imageDataUri:F}:Te))}).catch(()=>{$(F=>F.filter(Y=>Y.id!==V.id)),H.error(m("fileJob.uploadFailed",{name:C.name}))}),E.push(V)}return E.length>=Zt&&H.warning(m("fileJob.maxAttachments",{n:Zt})),E})},[m,Fs]),Ca=a.useCallback(o=>{o.target.files&&o.target.files.length>0&&(Oe(o.target.files),o.target.value="")},[Oe]),Ma=a.useCallback(()=>{var o;(o=Q.current)==null||o.click()},[]),Gt=a.useCallback(async()=>{if(!(ue||p)){Ne(!0);try{const o=await wd();Oe([o])}catch(o){o instanceof tt&&o.code==="cancelled"||H.error(m("fileJob.screenshotFailed"))}finally{Ne(!1)}}},[Oe,m,ue,p]),Bs=a.useRef(Gt);a.useEffect(()=>{Bs.current=Gt},[Gt]),a.useEffect(()=>{const o=l=>{!(l.ctrlKey||l.metaKey)||!l.shiftKey||l.key!=="s"&&l.key!=="S"||(l.preventDefault(),Bs.current())};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[]);const Cn=a.useCallback(o=>{$(l=>l.filter(b=>b.id!==o))},[]),Aa=a.useCallback(o=>{o.preventDefault(),Z(!0)},[]),Ta=a.useCallback(o=>{o.preventDefault(),Z(!1)},[]),Ra=a.useCallback(o=>{o.preventDefault(),Z(!1),o.dataTransfer.files&&o.dataTransfer.files.length>0&&Oe(o.dataTransfer.files)},[Oe]),Hs=a.useCallback(async()=>{var l;if(O.length===0)return"";const o=[];for(const b of O){if(b.imageDataUri)continue;if(b.path){o.push(`<attachment path="${b.path}" />`);continue}if(!b.file)continue;$(C=>C.map(L=>L.id===b.id?{...L,uploading:!0,error:void 0}:L));const y=`${$d}/${b.name}`,E=await de.files.upload(b.file,y);if(E.success&&((l=E.data)!=null&&l.path)){const C=E.data.path.replace(/\\/g,"/");$(L=>L.map(V=>V.id===b.id?{...V,uploading:!1,path:C}:V)),o.push(`<attachment path="${C}" />`)}else $(C=>C.map(L=>L.id===b.id?{...L,uploading:!1,error:E.error||m("fileJob.uploadFailed")}:L)),H.error(`${b.name}: ${E.error||m("fileJob.uploadFailed")}`)}return o.length>0?`${o.join(`
39
- `)}
40
-
41
- `:""},[O,m]),Da=a.useCallback(o=>{const l=o.clipboardData.getData("text/plain");if(o.clipboardData.files&&o.clipboardData.files.length>0){o.preventDefault(),Oe(o.clipboardData.files);return}if(!l||!yi(l))return;o.preventDefault();const{label:b}=wi(l),y=P.current;if(!y)return;const E=y.selectionStart,C=y.selectionEnd,L=y.value,V=L.slice(0,E)+b+L.slice(C);x(V),requestAnimationFrame(()=>{y.selectionStart=y.selectionEnd=E+b.length})},[x,Oe]),vt=a.useCallback(async()=>{const o=j.trim()?j:M,l=Ni(o),b=l.map(J=>({id:J,content:ki(J)??""})).filter(J=>J.content!==""),y=ji(o);Si(l),Ie.current=!1,Ae(!1),je();const E=y.trim(),C=O.length>0;if(!E&&!C)return;const L=y.trim();if(L.startsWith("/")&&!C){const J=ai(L);if(J){const ut=vs.find(ke=>ke.name===J.command);if(ut){const ke=zt(ut,J.args);if(ke!=null&&ke.message&&(ke.success?H.success(ke.message):H.error(ke.message)),ke!=null&&ke.draft){x(ke.draft),B(null),requestAnimationFrame(()=>{const $n=P.current;$n&&($n.focus(),$n.setSelectionRange(ke.draft.length,ke.draft.length))});return}x(""),B(null),$([]),Ee.current=new Set,$e.current=new Map,Ft(),Ge(0);return}H.error(m("slashCommands.unknownCommand",{cmd:`/${J.command}`}));return}}if(L.startsWith("!")&&!C){const J=L.slice(1).trim();if(!J)return;r==null||r(J),x(""),B(null),$([]),Ee.current=new Set,$e.current=new Map,Ge(0);return}const V=Array.from(Ee.current).filter(J=>y.includes(`@${J}`)),F=Array.from($e.current.entries()).map(([J,ut])=>({id:J,title:ut})).filter(J=>y.includes(`@${J.title}`)||y.includes(`@${J.id}`));let Y="";if(C){if(O.some(J=>J.uploading)){H.warning(m("fileJob.stillUploading"));return}Y=await Hs()}const Te=O.filter(J=>J.imageDataUri),Yt=Te.map(J=>J.imageDataUri);if(Te.length>0){const J=Te.map(ut=>Id(ut.name)).join(`
42
- `);Y=Y?`${Y}${J}
43
-
44
- `:`${J}
45
-
46
- `}const Vs=(Y+y).trim();if(!Vs&&!C)return;const Ga=b.length>0?{content:`${Y}${j}`,pastes:b}:void 0;s(Vs||Y.trim(),V.length>0?V:void 0,Yt.length>0?Yt:void 0,F.length>0?F:void 0,F.length>0?Ot.current:void 0,Ga),x(""),U(t,""),B(null),$([]),Ee.current=new Set,$e.current=new Map,Ge(0),pe(!1),ce("")},[j,M,O,s,r,x,U,t,Hs,m,je,vs,zt]),$a=a.useCallback(o=>{if(!o.nativeEvent.isComposing){if((o.key==="Backspace"||o.key==="Delete")&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!o.shiftKey){const l=P.current;if(l&&l.selectionStart===l.selectionEnd){const b=l.selectionStart,y=l.value;if(o.key==="Backspace"&&b>0){const E=Ei(y.slice(0,b));if(E){o.preventDefault(),x(y.slice(0,b-E.length)+y.slice(b)),or(E),requestAnimationFrame(()=>{l.focus();const C=b-E.length;l.selectionStart=l.selectionEnd=C});return}}else if(o.key==="Delete"&&b<y.length){const E=Ci(y.slice(b));if(E){o.preventDefault(),x(y.slice(0,b)+y.slice(b+E.length)),or(E),requestAnimationFrame(()=>{l.focus(),l.selectionStart=l.selectionEnd=b});return}}}}if(o.key==="Backspace"&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&!o.shiftKey&&O.length>0){const l=P.current;if(l&&l.selectionStart===0&&l.selectionEnd===0){const b=O[O.length-1];if(b){o.preventDefault(),Cn(b.id);return}}}if(we&&Je.length>1&&o.key==="Tab"){o.preventDefault();const l=Je.map(b=>b.key);Ht(b=>ad(l,b,!o.shiftKey)),qe(0);return}if(we&&Je.length>1&&o.key==="S"&&!o.ctrlKey&&!o.metaKey&&!o.altKey){o.preventDefault(),yn();return}if(we&&Je.length>1&&o.key==="M"&&!o.ctrlKey&&!o.metaKey&&!o.altKey){o.preventDefault(),Kt();return}if(we&&lt.length>0){if(o.key==="ArrowDown"){o.preventDefault(),qe(l=>(l+1)%lt.length);return}if(o.key==="ArrowUp"){o.preventDefault(),qe(l=>(l-1+lt.length)%lt.length);return}if(o.key==="Enter"&&!o.shiftKey&&!o.ctrlKey&&!o.metaKey){const l=lt[gn];l&&(o.preventDefault(),Nn(l));return}if(o.key==="Escape"){o.preventDefault(),kt();return}}else if(we&&o.key==="Escape"){o.preventDefault(),kt();return}if(ee&&Ve.length>0){if(o.key==="ArrowDown"){o.preventDefault(),v(l=>(l+1)%Ve.length);return}if(o.key==="ArrowUp"){o.preventDefault(),v(l=>(l-1+Ve.length)%Ve.length);return}if(o.key==="Enter"&&!o.shiftKey&&!o.ctrlKey&&!o.metaKey){const l=Ve[Se];l&&(o.preventDefault(),En(l));return}if(o.key==="Escape"){o.preventDefault(),qt();return}}else if(ee&&o.key==="Escape"){o.preventDefault(),qt();return}if(Me&&Pt.length>0){if(o.key==="ArrowDown"){o.preventDefault(),ps();return}if(o.key==="ArrowUp"){o.preventDefault(),bs();return}if(o.key==="Enter"&&!o.shiftKey&&!o.ctrlKey&&!o.metaKey){const l=Pt[xn];l&&(o.preventDefault(),Sn(l));return}if(o.key==="Escape"){o.preventDefault(),je();return}}else if(Me&&o.key==="Escape"){o.preventDefault(),je();return}if(o.key==="Tab"&&!o.shiftKey&&!o.ctrlKey&&!o.metaKey&&!o.altKey&&N){o.preventDefault(),z();return}if(o.key==="Escape"&&p){o.preventDefault();const l=Date.now(),b=oi(S,T,oe.current,l);oe.current=l,b==="revokeQueue"?(st(),oe.current=0):b==="stop"?i():c();return}if(o.key==="Enter"&&(o.ctrlKey||o.metaKey)){o.preventDefault(),vt();return}o.key==="Enter"&&!o.shiftKey&&(o.preventDefault(),vt())}},[p,T,S,st,vt,c,d,i,we,bn,gn,Nn,kt,Je,yn,Kt,ee,Ve,Se,En,qt,Me,Pt,xn,ps,bs,Sn,je,x,O,Cn,N,z]),Pa=a.useCallback(()=>{ne.current=!0},[]),za=a.useCallback(()=>{ne.current=!1},[]),[Wt,La]=a.useState(()=>typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(max-width: 767px)").matches);a.useEffect(()=>{if(typeof window.matchMedia!="function")return;const o=window.matchMedia("(max-width: 767px)"),l=()=>{La(o.matches),o.matches||Vt(!1)};return o.addEventListener("change",l),()=>o.removeEventListener("change",l)},[]);const[Jt,_a]=a.useState(()=>zr()),[Mn,An]=a.useState(()=>zr()==="collapsed"),[Us,Vt]=a.useState(!1),[Ks,dt]=a.useState(!1),Tn=a.useRef(!1),Fe=Jt==="expanded",Ye=a.useCallback(o=>{_a(o);try{o==="auto"?window.localStorage.removeItem(Zn):window.localStorage.setItem(Zn,o)}catch{}},[]),yt=a.useRef(null),ge=a.useCallback(()=>{yt.current!==null&&(clearTimeout(yt.current),yt.current=null)},[]);a.useEffect(()=>ge,[ge]),a.useEffect(()=>{Wt&&p&&!Fe&&Vt(!0)},[Wt,p,Fe]);const[Ia,Oa]=a.useState(()=>Ld());a.useEffect(()=>{if(typeof window.matchMedia!="function")return;const o=window.matchMedia("(hover: hover) and (pointer: fine)"),l=()=>Oa(o.matches);return o.addEventListener("change",l),()=>o.removeEventListener("change",l)},[]);const qs=Tn.current||ne.current||j.trim().length>0||O.length>0||S>0||k||G||we||Me||ee,Gs=Ia&&Jt==="auto"&&!Mn,Be=Mn||Wt&&Us||Ks,Ws=Ks&&!Mn&&!(Wt&&Us),Fa=a.useCallback(()=>{ge(),dt(!1),An(!0),Ye("collapsed")},[ge,Ye]),Ba=a.useCallback(()=>{ge(),Vt(!1),dt(!1),Jt==="collapsed"&&(An(!1),Ye("auto"))},[ge,Jt,Ye]),Ha=a.useCallback(()=>{if(ge(),Fe){Ye("auto");return}dt(!1),Vt(!1),An(!1),Ye("expanded")},[ge,Fe,Ye]),Ua=a.useCallback(()=>{ge(),dt(!1)},[ge]),Ka=a.useCallback(()=>{Gs&&(ge(),yt.current=setTimeout(()=>{yt.current=null,!qs&&dt(!0)},zd))},[qs,ge,Gs]),qa=a.useCallback(()=>{ge(),dt(!1)},[ge]),Js=jn>8e3,Rn=!k&&(j.trim().length>0||O.length>0),Dn=/mac/i.test(navigator.platform||"")?"⌘":"Ctrl";return e.jsxs("div",{className:"chat-composer-shell shrink-0 pb-3 pt-2 max-md:order-4 max-md:mt-auto",onMouseEnter:Ua,onMouseLeave:Ka,onDragOver:Aa,onDragLeave:Ta,onDrop:Ra,children:[R.length>0&&e.jsxs("div",{className:`${en} mb-2 rounded-lg border border-dark-border bg-dark-surface px-2.5 py-1.5 text-xs text-dark-muted`,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{"aria-hidden":"true",children:"⏳"}),e.jsx("span",{className:"font-medium text-dark-text",children:m("chat.queuedCount",{count:R.length})}),e.jsx("span",{className:"min-w-0 flex-1"}),e.jsx("span",{className:"shrink-0 text-badge text-dark-muted/60",children:m("chat.queuedEscHint")}),e.jsx("button",{onClick:st,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-red",title:m("chat.queuedRevoke"),"aria-label":m("chat.queuedRevoke"),children:e.jsx(At,{size:12,"aria-hidden":"true"})})]}),e.jsx("ul",{className:"mt-1 max-h-40 space-y-0.5 overflow-y-auto",children:R.map((o,l)=>e.jsxs("li",{className:"group flex items-center gap-2 rounded px-1 py-0.5 transition-colors hover:bg-dark-hover/60",children:[e.jsx("span",{className:"w-4 shrink-0 text-center text-badge tabular-nums text-dark-muted/60",children:l+1}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-dark-muted/80",title:fe(o.content),children:fe(o.content)||m("chat.queuedEmptyPreview")}),e.jsxs("span",{className:"flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100",children:[e.jsx("button",{onClick:()=>pt(o.id),className:"flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-blue",title:m("chat.queuedSendNow"),"aria-label":m("chat.queuedSendNow"),children:e.jsx(po,{size:12,"aria-hidden":"true"})}),e.jsx("button",{onClick:()=>W(o.id),className:"flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-blue",title:m("chat.queuedEdit"),"aria-label":m("chat.queuedEdit"),children:e.jsx(Or,{size:12,"aria-hidden":"true"})}),e.jsx("button",{onClick:()=>fn(o.id),className:"flex h-5 w-5 items-center justify-center rounded text-dark-muted transition-colors hover:bg-dark-hover hover:text-accent-red",title:m("chat.queuedDelete"),"aria-label":m("chat.queuedDelete"),children:e.jsx(Kr,{size:12,"aria-hidden":"true"})})]})]},o.id))})]}),O.length>0&&e.jsx("div",{className:`${en} mb-2 flex flex-wrap gap-1.5`,children:O.map(o=>{const l=Od(o.name),b=o.imageDataUri,y=e.jsxs(e.Fragment,{children:[b?e.jsx(Xc,{src:b,name:o.name,size:13,hoverPreview:!1,thumb:!0}):o.uploading?e.jsx(Ce,{size:13,className:"animate-spin"}):e.jsx(l,{size:13}),e.jsx("span",{className:"max-w-[140px] truncate",children:o.name}),e.jsx("span",{className:"text-badge text-dark-muted",children:o.size>1024*1024?`${(o.size/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(o.size/1024))} KB`}),!o.uploading&&e.jsx("button",{onClick:()=>Cn(o.id),className:"rounded p-0.5 text-dark-muted hover:text-accent-red hover:bg-accent-red/10 transition-colors","aria-label":m("a11y.close"),children:e.jsx(At,{size:11})})]}),E=q(`flex items-center gap-1.5 rounded-lg border text-xs transition-colors ${b?"p-1 pr-2":"px-2 py-1"}`,o.error?"border-accent-red/40 bg-accent-red/5 text-accent-red":o.uploading?"border-accent-blue/40 bg-accent-blue/5 text-accent-blue":"border-dark-border bg-dark-surface text-dark-text",b&&"cursor-zoom-in hover:border-accent-blue/40");return b?e.jsx(hs,{src:b,alt:o.name,className:"min-w-0",children:e.jsx("div",{className:E,children:y})},o.id):e.jsx("div",{className:E,children:y},o.id)})}),G&&e.jsx("div",{className:`${en} mb-2 rounded-xl border-2 border-dashed border-accent-blue/50 bg-accent-blue/5 py-3 text-center text-xs text-accent-blue`,children:m("fileJob.dropHint")}),e.jsx(_l,{}),e.jsxs("div",{className:`chat-composer-card relative rounded-xl border ${ve?"":"transition-all duration-150"} ${en} ${Be?"flex items-end gap-1 px-2 py-1.5":""} ${Ws?"pointer-events-none opacity-0":""}`,children:[!Be&&e.jsx("div",{role:"separator","aria-orientation":"horizontal","aria-label":m("chat.resizeHint"),title:m("chat.resizeHint"),tabIndex:0,onPointerDown:wa,onPointerMove:ja,onPointerUp:Ps,onPointerCancel:Ps,onDoubleClick:Na,onKeyDown:o=>{o.key==="ArrowUp"?(o.preventDefault(),zs(24)):o.key==="ArrowDown"&&(o.preventDefault(),zs(-24))},className:"group absolute inset-x-0 top-0 z-10 flex h-2.5 cursor-row-resize touch-none items-center justify-center rounded-t-xl outline-none focus-visible:bg-accent-blue/10",children:e.jsx("span",{"aria-hidden":"true",className:"h-1 w-9 rounded-full bg-dark-border transition-colors group-hover:bg-accent-blue/70 group-focus-visible:bg-accent-blue/70"})}),we&&e.jsx("div",{onMouseDown:o=>o.preventDefault(),"aria-hidden":!we,children:e.jsx(fd,{isOpen:we,items:lt,selectedIndex:gn,query:Lt,isSearching:pa,onSelect:Nn,onHover:qe,selectedCount:ba,onFinish:kt,tabs:Je,activeTab:wn,onTabChange:Ht,scope:js,onToggleScope:yn,deliveryMode:It,onToggleDelivery:Kt})}),ee&&e.jsx("div",{onMouseDown:o=>o.preventDefault(),"aria-hidden":!ee,children:e.jsx(pd,{isOpen:ee,items:Ve,selectedIndex:Se,query:me,isLoading:te,onSelect:En,onHover:v})}),Me&&e.jsx("div",{onMouseDown:o=>o.preventDefault(),"aria-hidden":!Me,children:e.jsx(Cd,{isOpen:Me,commands:Pt,selectedIndex:xn,filter:fa,onSelect:Sn,onHover:pn,containerRef:xa})}),e.jsxs("div",{className:Be?"relative flex min-w-0 flex-1 items-start":"relative",children:[N&&e.jsx("div",{"aria-hidden":"true",className:Be?"pointer-events-none absolute inset-0 overflow-hidden px-1.5 py-1.5 text-sm leading-relaxed":"pointer-events-none absolute inset-0 overflow-hidden px-4 pt-4 pb-3 text-sm leading-relaxed",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx("button",{type:"button",tabIndex:-1,onMouseDown:o=>o.preventDefault(),onClick:z,className:"pointer-events-auto relative z-20 min-w-0 cursor-pointer whitespace-pre-wrap break-words border-0 bg-transparent p-0 text-left text-dark-muted/70 transition-colors hover:text-dark-muted",title:m("chat.suggestionAccept"),"aria-label":m("chat.suggestionAccept"),children:N}),e.jsx("span",{className:"mt-0.5 shrink-0 rounded border border-dark-border px-1.5 py-0.5 text-badge text-dark-muted/70","aria-hidden":"true",children:m("chat.suggestionAccept")}),e.jsx("button",{type:"button",tabIndex:-1,onMouseDown:o=>o.preventDefault(),onClick:()=>U(t,""),className:"pointer-events-auto relative z-20 mt-0.5 shrink-0 rounded border border-dark-border px-1.5 py-0.5 text-badge text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:m("chat.suggestionDismiss"),"aria-label":m("chat.suggestionDismiss"),children:m("chat.suggestionDismiss")})]})}),e.jsx("textarea",{ref:P,value:j,onChange:Sa,onKeyDown:$a,onPaste:Da,onFocus:()=>{Tn.current=!0,qa()},onBlur:()=>{Tn.current=!1,we&&kt(),je(),ee&&qt()},onCompositionStart:Pa,onCompositionEnd:za,placeholder:N?"":k&&w?w:m(Be?"chat.inputPlaceholderCollapsed":p?"chat.generatingPlaceholder":"chat.inputPlaceholder"),rows:1,"aria-label":"Message input",disabled:k,className:Be?`w-full flex-1 bg-transparent px-1.5 py-1.5 text-sm text-dark-text placeholder-dark-muted/60 resize-none focus:outline-none min-h-[36px] max-h-[28vh] leading-relaxed${N?" relative z-10":""}`:`w-full bg-transparent px-4 pt-4 pb-3 text-sm text-dark-text placeholder-dark-muted/60
47
- resize-none focus:outline-none min-h-[72px] max-h-[40vh] leading-relaxed${N?" relative z-10":""}`})]}),Be&&e.jsxs("div",{className:"flex shrink-0 items-center gap-0.5 pb-0.5",children:[e.jsx("button",{type:"button",onClick:Ba,className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:m("chat.composerExpand"),"aria-label":m("chat.composerExpand"),children:e.jsx(on,{size:15,"aria-hidden":"true"})}),p&&e.jsx("button",{onClick:i,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-red/80 text-accent-fg transition-all hover:opacity-85 active:scale-95",title:m("chat.stopGen"),"aria-label":m("chat.stopGen"),children:e.jsx(Ct,{size:13,"aria-hidden":"true"})}),e.jsx("button",{onClick:()=>void vt(),disabled:!Rn,className:`flex h-8 w-8 items-center justify-center rounded-full bg-dark-text text-dark-bg transition-all
48
- hover:opacity-80 active:scale-95 disabled:opacity-25 disabled:cursor-not-allowed`,title:m(p?"chat.sendQueuedBtn":"chat.sendBtn"),"aria-label":m(p?"chat.sendQueuedBtn":"chat.sendBtn"),children:e.jsx(Wn,{size:15,"aria-hidden":"true"})})]}),!Be&&e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1.5 px-3 pb-3 lg:flex-nowrap",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-x-2",children:[e.jsx("button",{type:"button",onClick:Fa,className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:m("chat.composerCollapse"),"aria-label":m("chat.composerCollapse"),children:e.jsx(nt,{size:15,"aria-hidden":"true"})}),e.jsx("button",{type:"button",onClick:Ha,"aria-pressed":Fe,className:`flex h-8 w-8 items-center justify-center rounded-full transition-colors ${Fe?"bg-accent-blue/15 text-accent-blue hover:bg-accent-blue/25":"text-dark-muted hover:bg-dark-hover hover:text-dark-text"}`,title:m(Fe?"chat.composerUnpin":"chat.composerPin"),"aria-label":m(Fe?"chat.composerUnpin":"chat.composerPin"),children:e.jsx(bo,{size:15,"aria-hidden":"true"})}),f&&e.jsx(Zl,{workspaceDir:u,onSelect:f}),e.jsx(Ll,{}),e.jsx("span",{className:"hidden min-w-0 sm:block",children:e.jsx(Hl,{})}),e.jsx(Vl,{onHandoffToAi:ya}),Ns.length>0&&e.jsx("button",{type:"button",onClick:Kt,className:q("flex h-8 min-w-0 items-center rounded-full px-2.5 text-meta font-medium transition-colors",Hd[It]),title:m("chat.mentionDeliveryHint"),children:e.jsx("span",{className:"max-w-[180px] truncate",children:m("chat.mentionDeliveryChip",{titles:Ns.join("、"),mode:m(Bd[It])})})})]}),e.jsx("div",{className:"flex-1"}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[jn>0&&j.length>0&&e.jsxs("span",{className:`text-badge tabular-nums ${Js?"text-accent-red font-medium":"text-dark-muted/60"}`,children:["~",jn," tokens",Js?` · ${m("chat.nearLimit")}`:""]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsxs("div",{ref:De,className:"relative",children:[e.jsxs("button",{onClick:()=>Ke(o=>!o),disabled:be.state!=="idle"||p,className:`flex h-8 items-center justify-center gap-0.5 rounded-full px-2 text-meta font-semibold text-dark-muted transition-colors
49
- hover:bg-dark-hover hover:text-dark-text disabled:opacity-40 disabled:hover:bg-transparent disabled:cursor-not-allowed`,title:m(p?"stt.generatingTitle":"stt.langToggle"),"aria-label":m(p?"stt.generatingTitle":"stt.langToggle"),"aria-haspopup":"listbox","aria-expanded":at,children:[mi(ie).short,e.jsx(on,{size:11,"aria-hidden":"true"})]}),at&&e.jsxs("div",{role:"listbox","aria-label":m("stt.langToggle"),className:"absolute bottom-full right-0 mb-2 z-50 w-44 rounded-lg border border-dark-border bg-dark-surface shadow-lg py-1 max-h-72 overflow-auto custom-scrollbar",children:[hi.map(o=>e.jsxs("button",{role:"option","aria-selected":o.code===ie,onClick:()=>ua(o.code),className:q("flex w-full items-center justify-between gap-2 px-3 py-1.5 text-xs transition-colors",o.code===ie?"text-accent-blue bg-accent-blue/10":"text-dark-text hover:bg-dark-hover"),children:[e.jsx("span",{className:"font-medium",children:o.label}),e.jsxs("span",{className:"flex items-center gap-1.5 text-badge text-dark-muted",children:[o.code==="zh"?"FunASR":"Whisper",o.code===ie&&e.jsx(He,{size:12,"aria-hidden":"true"})]})]},o.code)),e.jsx("div",{className:"mt-1 border-t border-dark-border px-3 pt-1.5 pb-0.5 text-badge leading-relaxed text-dark-muted/70",children:m("stt.multiHint")})]})]}),e.jsx("button",{onClick:()=>void ma(),disabled:be.state==="transcribing"||p,className:q("flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors",be.state==="recording"?"bg-accent-red/15 text-accent-red animate-pulse":"hover:bg-dark-hover hover:text-dark-text","disabled:opacity-40 disabled:cursor-not-allowed disabled:hover:bg-transparent"),title:p?m("stt.generatingTitle"):be.state==="recording"?m("stt.stopTitle"):m("stt.title"),"aria-label":p?m("stt.generatingTitle"):be.state==="recording"?m("stt.stopTitle"):m("stt.title"),children:be.state==="transcribing"?e.jsx(Ce,{size:15,className:"animate-spin","aria-hidden":"true"}):be.state==="recording"?e.jsx(go,{size:15,"aria-hidden":"true"}):e.jsx(ko,{size:15,"aria-hidden":"true"})}),be.state==="recording"&&e.jsxs("span",{className:"text-badge tabular-nums text-accent-red","aria-hidden":"true",children:[(be.elapsedMs/1e3).toFixed(0),"s"]})]}),!p&&e.jsx("button",{onClick:()=>Ue(!0),className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:m("skills.pickTitle"),"aria-label":m("skills.pickTitle"),children:e.jsx(rs,{size:15,"aria-hidden":"true"})}),!p&&e.jsx("button",{onClick:()=>void Gt(),disabled:ue,className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text disabled:opacity-40 disabled:cursor-not-allowed",title:`${m("fileJob.screenshot")} (${Dn}+Shift+S)`,"aria-label":`${m("fileJob.screenshot")} (${Dn}+Shift+S)`,children:ue?e.jsx(Ce,{size:15,className:"animate-spin","aria-hidden":"true"}):e.jsx(vo,{size:15,"aria-hidden":"true"})}),!p&&e.jsx("button",{onClick:()=>void Ma(),className:"flex h-8 w-8 items-center justify-center rounded-full text-dark-muted transition-colors hover:bg-dark-hover hover:text-dark-text",title:m("fileJob.attach"),"aria-label":m("fileJob.attach"),children:e.jsx(ss,{size:15,"aria-hidden":"true"})}),e.jsx("input",{ref:Q,type:"file",multiple:!0,accept:Dd,className:"hidden",onChange:Ca}),p&&!Rn?e.jsxs("div",{className:"flex items-center gap-1.5",children:[T?e.jsx("button",{onClick:d,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-green text-accent-fg transition-all hover:opacity-85 active:scale-95",title:m("chat.resumeGen"),"aria-label":m("chat.resumeGen"),children:e.jsx(yo,{size:14,"aria-hidden":"true"})}):e.jsx("button",{onClick:c,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-yellow text-accent-fg transition-all hover:opacity-85 active:scale-95",title:m("chat.pauseGen"),"aria-label":m("chat.pauseGen"),children:e.jsx(_r,{size:14,"aria-hidden":"true"})}),e.jsx("button",{onClick:i,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-red text-accent-fg transition-all hover:opacity-85 active:scale-95",title:m("chat.stopGen"),"aria-label":m("chat.stopGen"),children:e.jsx(Ct,{size:13,"aria-hidden":"true"})})]}):e.jsxs("div",{className:"flex items-center gap-1.5",children:[p&&e.jsx("button",{onClick:i,className:"flex h-8 w-8 items-center justify-center rounded-full bg-accent-red/80 text-accent-fg transition-all hover:opacity-85 active:scale-95",title:m("chat.stopGen"),"aria-label":m("chat.stopGen"),children:e.jsx(Ct,{size:13,"aria-hidden":"true"})}),e.jsx("button",{onClick:()=>void vt(),disabled:!Rn,className:`flex h-8 w-8 items-center justify-center rounded-full bg-dark-text text-dark-bg transition-all
50
- hover:opacity-80 active:scale-95 disabled:opacity-25 disabled:cursor-not-allowed`,title:m(p?"chat.sendQueuedBtn":"chat.sendBtn"),"aria-label":m(p?"chat.sendQueuedBtn":"chat.sendBtn"),children:e.jsx(Wn,{size:15,"aria-hidden":"true"})})]})]})]})]}),e.jsxs("div",{className:`mt-1.5 hidden select-none items-center justify-center gap-3 text-badge text-dark-muted/55 transition-opacity duration-150 sm:flex ${Ws?"opacity-0":""}`,children:[e.jsx("span",{children:m("chat.shiftEnter")}),e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("span",{children:m("chat.escHint")}),e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("span",{children:`${Dn}+Shift+S ${m("shortcuts.screenshot")}`}),e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("span",{children:m("chat.bangHint")})]}),e.jsx(xd,{open:xe,onClose:()=>Ue(!1),onSelect:Ea})]})});export{Qd as C,Ql as D,Zd as I,Kc as P,Uc as T,Ki as a,Bc as b,Et as c,Hc as s,Fc as t,Ic as v};