aitu-app 0.6.61 → 0.6.63

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 (274) hide show
  1. package/README.md +3 -3
  2. package/_headers +1 -1
  3. package/assets/CanvasAudioPlayer-Du5kXrAd.js +2 -0
  4. package/assets/ChatDrawer-0jNvKIoI.css +1 -0
  5. package/assets/ChatDrawer-CqZHx7x_.js +11 -0
  6. package/assets/ChatMessagesArea-AG3RXe34.js +229 -0
  7. package/assets/DeferredAIInputBar-BmPgFhXr.css +1 -0
  8. package/assets/DeferredAIInputBar-CNAPl6C2.js +7 -0
  9. package/assets/DrawnixDeferredFeatures-BBiW9_Pn.css +1 -0
  10. package/assets/DrawnixDeferredFeatures-BrhbEEBa.js +2 -0
  11. package/assets/KnowledgeBaseContent-3hE8vBra.js +53 -0
  12. package/assets/MVCreator-2NIxaaSL.js +152 -0
  13. package/assets/ModelBenchmarkWorkbench-CacNyFbi.js +2 -0
  14. package/assets/ModelDropdown-3MjTl1AO.js +1 -0
  15. package/assets/ModelDropdown-CQTTHEI7.css +1 -0
  16. package/assets/MusicAnalyzer-Drf2j8jn.js +6 -0
  17. package/assets/MusicAnalyzer-Mmu92A4Y.js +1 -0
  18. package/assets/ResizableDivider-B_67th7H.js +1 -0
  19. package/assets/TaskQueuePanel-VfjKIooN.js +1 -0
  20. package/assets/VideoAnalyzer-DNWjNcIx.js +2 -0
  21. package/assets/__vite-browser-external-BIHI7g3E.js +1 -0
  22. package/assets/ai-generation-preferences-service-CeFIqZqn.css +1 -0
  23. package/assets/ai-generation-preferences-service-Ch1XhjkZ.js +5 -0
  24. package/assets/{arc-DVSy2mV6.js → arc-DE4qRd9D.js} +1 -1
  25. package/assets/{arc-gwdtJwfu.js → arc-DJ5Mb9x1.js} +1 -1
  26. package/assets/batch-image-generation-Bk8HSFol.js +6 -0
  27. package/assets/{blockDiagram-38ab4fdb-MKPurBtk.js → blockDiagram-38ab4fdb-B62iB8ti.js} +6 -6
  28. package/assets/{blockDiagram-38ab4fdb-O0dvPaHF.js → blockDiagram-38ab4fdb-D2MnfN1Q.js} +1 -1
  29. package/assets/{c4Diagram-3d4e48cf-Db8lEEtr.js → c4Diagram-3d4e48cf-CgUaipiZ.js} +2 -2
  30. package/assets/{c4Diagram-3d4e48cf-DoiQvtA5.js → c4Diagram-3d4e48cf-DHV35ltP.js} +2 -2
  31. package/assets/canvas-insertion-ZEZkcXvB.js +15 -0
  32. package/assets/channel-B5QZCgOy.js +1 -0
  33. package/assets/channel-CU3dhzIS.js +1 -0
  34. package/assets/classDiagram-70f12bd4-C6X-VZXt.js +2 -0
  35. package/assets/classDiagram-70f12bd4-OH5sF1K-.js +2 -0
  36. package/assets/classDiagram-v2-f2320105-D1I5s2af.js +2 -0
  37. package/assets/classDiagram-v2-f2320105-otk4V9KH.js +2 -0
  38. package/assets/clipper-BWlMmsTH.js +1 -0
  39. package/assets/clone-BAOxFbud.js +1 -0
  40. package/assets/createText-2e5e7dd3-D78Dn_q8.js +7 -0
  41. package/assets/{createText-2e5e7dd3-r7suCwZs.js → createText-2e5e7dd3-DuiUpOXV.js} +1 -1
  42. package/assets/{edges-e0da2a9e-y95qcfGa.js → edges-e0da2a9e-Br3GgeJK.js} +1 -1
  43. package/assets/{edges-e0da2a9e-DYlM65E1.js → edges-e0da2a9e-Dio4S9-4.js} +1 -1
  44. package/assets/{erDiagram-9861fffd-BAplHfzi.js → erDiagram-9861fffd-BYkBBs0M.js} +2 -2
  45. package/assets/{erDiagram-9861fffd-D53kVsTF.js → erDiagram-9861fffd-DuZccGHy.js} +2 -2
  46. package/assets/{flowDb-956e92f1-BNGSwJNB.js → flowDb-956e92f1-BvHxN76x.js} +1 -1
  47. package/assets/{flowDb-956e92f1-Bnpj_axF.js → flowDb-956e92f1-D6cTY_st.js} +1 -1
  48. package/assets/{flowDiagram-66a62f08-W5nfae-o.js → flowDiagram-66a62f08-Bh5LanWu.js} +3 -3
  49. package/assets/{flowDiagram-66a62f08-D5NHzqxv.js → flowDiagram-66a62f08-rCNbZEwY.js} +2 -2
  50. package/assets/flowDiagram-v2-96b9c2cf-BEdEe3Ip.js +1 -0
  51. package/assets/flowDiagram-v2-96b9c2cf-CVItVSoD.js +1 -0
  52. package/assets/{flowchart-elk-definition-4a651766-CRKbOhnk.js → flowchart-elk-definition-4a651766-CIShIr5E.js} +2 -2
  53. package/assets/{flowchart-elk-definition-4a651766-CGkTONWC.js → flowchart-elk-definition-4a651766-llVLlxyE.js} +2 -2
  54. package/assets/ganttDiagram-c361ad54-CUtUP4cJ.js +257 -0
  55. package/assets/ganttDiagram-c361ad54-j2pPvoOi.js +257 -0
  56. package/assets/{gitGraphDiagram-72cf32ee-CMXZGBLX.js → gitGraphDiagram-72cf32ee-BijhDF7a.js} +2 -2
  57. package/assets/{gitGraphDiagram-72cf32ee-D9-blMrd.js → gitGraphDiagram-72cf32ee-hQmVrZTT.js} +2 -2
  58. package/assets/{graph-DH8uizIF.js → graph-CVdXivUk.js} +1 -1
  59. package/assets/graph-iERr38Mn.js +1 -0
  60. package/assets/index-3862675e-BCU8UapW.js +1 -0
  61. package/assets/{index-3862675e-B_qkkE8G.js → index-3862675e-BdD6mhWW.js} +1 -1
  62. package/assets/{index-DJyZOfmh.js → index-B-bas2QJ.js} +10 -10
  63. package/assets/index-BN7eABQE.js +1 -0
  64. package/assets/index-BUZUbTWS.js +1 -0
  65. package/assets/index-B_eFETCZ.js +13 -0
  66. package/assets/index-BakDREx4.js +2 -0
  67. package/assets/index-BdSFouqR.js +1 -0
  68. package/assets/index-BeRhCeQu.js +1 -0
  69. package/assets/index-BmNN2uGW.js +1 -0
  70. package/assets/index-BnaNWg7x.js +675 -0
  71. package/assets/index-BxdH1-er.js +1 -0
  72. package/assets/index-ByECpktB.js +1 -0
  73. package/assets/index-ByxyNkwM.js +1 -0
  74. package/assets/index-CE0NChcB.js +1 -0
  75. package/assets/{index-BvQxSlKi.js → index-CMQMxwMb.js} +18 -18
  76. package/assets/index-CW9BeyEu.js +2 -0
  77. package/assets/index-CkjuY786.js +3 -0
  78. package/assets/index-CmOEsqBQ.js +1 -0
  79. package/assets/index-CvlBHvN3.js +1 -0
  80. package/assets/index-CxUWaNUo.js +1 -0
  81. package/assets/index-CxqCKbLy.js +1 -0
  82. package/assets/index-D0O0qYML.js +1 -0
  83. package/assets/index-D4R9cQ86.js +316 -0
  84. package/assets/{index-CPxgzES6.js → index-DCjrDHEd.js} +2 -2
  85. package/assets/index-DI_5V2-m.js +3 -0
  86. package/assets/{index-Ny7Pix43.js → index-DMfHKITi.js} +1 -1
  87. package/assets/index-DYtXgeSz.js +1 -0
  88. package/assets/index-DjGrNkrV.js +1 -0
  89. package/assets/index-DjxazIAI.css +1 -0
  90. package/assets/index-DuFyvKRm.js +7 -0
  91. package/assets/index-I7GscWS1.css +1 -0
  92. package/assets/index-UeGDfQIX.js +1 -0
  93. package/assets/{index-C7T4VizE.js → index-nPSeKWRU.js} +2 -2
  94. package/assets/index-q02ppfIX.js +3 -0
  95. package/assets/index-vw8fjMik.js +1 -0
  96. package/assets/index.dom-C3-224fz.js +1 -0
  97. package/assets/{infoDiagram-f8f76790-lsJGSmBE.js → infoDiagram-f8f76790-Cmv7jbWa.js} +2 -2
  98. package/assets/{infoDiagram-f8f76790-Darmk_jN.js → infoDiagram-f8f76790-D0DSz5Ue.js} +2 -2
  99. package/assets/{journeyDiagram-49397b02-DUxNjZ6R.js → journeyDiagram-49397b02-D6HU8bXU.js} +2 -2
  100. package/assets/{journeyDiagram-49397b02-DIUqIYzk.js → journeyDiagram-49397b02-Db00D03K.js} +2 -2
  101. package/assets/layout-CPj4wl_r.js +1 -0
  102. package/assets/{layout-C5S49FYO.js → layout-DGJFFi9s.js} +1 -1
  103. package/assets/{line-BbGr4xnD.js → line-CpXi5g86.js} +1 -1
  104. package/assets/{line-DgblBaXL.js → line-D_WC7vRh.js} +1 -1
  105. package/assets/{linear-BoZFr5Fg.js → linear-UpmxQM2f.js} +1 -1
  106. package/assets/{linear-DRQpxXfl.js → linear-n85WiAhX.js} +1 -1
  107. package/assets/main-DX4kRYQX.js +69 -0
  108. package/assets/main-DY6jstww.css +9 -0
  109. package/assets/{mermaid.core-CEbkojRY.js → mermaid.core-N7WwfYcf.js} +4 -4
  110. package/assets/{mindmap-definition-fc14e90a-BhGmuDkl.js → mindmap-definition-fc14e90a-C8U6pdZ2.js} +2 -2
  111. package/assets/{mindmap-definition-fc14e90a-BI2EsBH6.js → mindmap-definition-fc14e90a-D2hbUBx2.js} +2 -2
  112. package/assets/model-benchmark-launcher-BrOG9Vlm.js +1 -0
  113. package/assets/model-benchmark-service-DDklUBjC.js +1 -0
  114. package/assets/model-selection-BaH65gMK.js +1 -0
  115. package/assets/photo-wall-splitter-QuaIbsZ1.js +1 -0
  116. package/assets/{pieDiagram-8a3498a8-DuCg2Vgq.js → pieDiagram-8a3498a8-BPHw5PxR.js} +2 -2
  117. package/assets/{pieDiagram-8a3498a8-D977wTX3.js → pieDiagram-8a3498a8-DKV5uwrs.js} +2 -2
  118. package/assets/prompt-optimize-dialog-DLdL2_a1.css +1 -0
  119. package/assets/{quadrantDiagram-120e2f19-NUHsrfSM.js → quadrantDiagram-120e2f19-DQdaeBYM.js} +4 -4
  120. package/assets/{quadrantDiagram-120e2f19-aXFs9BMB.js → quadrantDiagram-120e2f19-pe-wI-U4.js} +4 -4
  121. package/assets/{requirementDiagram-deff3bca-BHhrUwmA.js → requirementDiagram-deff3bca-DYepoptc.js} +2 -2
  122. package/assets/{requirementDiagram-deff3bca-BEP1V47I.js → requirementDiagram-deff3bca-QX4OaNTO.js} +2 -2
  123. package/assets/sankeyDiagram-04a897e0-1bYf2R8i.js +8 -0
  124. package/assets/sankeyDiagram-04a897e0-DJkKTFXr.js +8 -0
  125. package/assets/{sequenceDiagram-704730f1-CnIohAV3.js → sequenceDiagram-704730f1-B4QsYTCd.js} +2 -2
  126. package/assets/{sequenceDiagram-704730f1-B-DPL-jC.js → sequenceDiagram-704730f1-B52OA1Y3.js} +2 -2
  127. package/assets/settings-dialog-Bueh6yYA.js +1 -0
  128. package/assets/settings-dialog-CdRrvvi_.css +1 -0
  129. package/assets/skill-dsl-parser-CPpdtdC1.js +68 -0
  130. package/assets/stateDiagram-587899a1-D221rMST.js +1 -0
  131. package/assets/stateDiagram-587899a1-X7bhoHKe.js +1 -0
  132. package/assets/stateDiagram-v2-d93cdb3a-CGMASaM9.js +1 -0
  133. package/assets/stateDiagram-v2-d93cdb3a-D9VdRPIN.js +1 -0
  134. package/assets/{styles-6aaf32cf-CuN9SgpB.js → styles-6aaf32cf-DHTzglnJ.js} +1 -1
  135. package/assets/{styles-6aaf32cf-RhG9Okl2.js → styles-6aaf32cf-D_xcN1dm.js} +1 -1
  136. package/assets/{styles-9a916d00-CY75rGUa.js → styles-9a916d00-BVoYXPeR.js} +1 -1
  137. package/assets/{styles-9a916d00-oCq6hcjA.js → styles-9a916d00-w5Yn3LRO.js} +1 -1
  138. package/assets/styles-c10674c1-C3cgfc7I.js +116 -0
  139. package/assets/{styles-c10674c1-I7YclpNS.js → styles-c10674c1-xX_gtHzZ.js} +1 -1
  140. package/assets/{svgDrawCommon-08f97a94-BBLrSu59.js → svgDrawCommon-08f97a94-DFof-iml.js} +1 -1
  141. package/assets/{svgDrawCommon-08f97a94-9V7-bnVk.js → svgDrawCommon-08f97a94-DxU2UGYh.js} +1 -1
  142. package/assets/{timeline-definition-85554ec2-BxJ-6bwN.js → timeline-definition-85554ec2-CzV_JohE.js} +5 -5
  143. package/assets/{timeline-definition-85554ec2-CXGIgWBw.js → timeline-definition-85554ec2-FPml3o0r.js} +2 -2
  144. package/assets/{tool-panels-BcmX5CR5.css → tool-windows-Cos6lOhr.css} +1 -1
  145. package/assets/tool-windows-hjm6YiPY.js +2677 -0
  146. package/assets/ttd-dialog-CqISZ7cy.js +99 -0
  147. package/assets/use-runtime-models-BgWWl4Ng.css +1 -0
  148. package/assets/use-runtime-models-C0uyCfar.js +1 -0
  149. package/assets/useCharacters-BGdX9007.js +6 -0
  150. package/assets/useWorkflowSubmission-BmFQdWt3.js +70 -0
  151. package/assets/video-analyze-DszumYAr.js +1 -0
  152. package/assets/video-generation-DEL-kJgF.js +13 -0
  153. package/assets/video-recovery-service-C9y_bfU1.js +1 -0
  154. package/assets/workflow-generation-utils-Da12qXTb.js +3 -0
  155. package/assets/workflow-submission-service-BuFuRV_m.js +4 -0
  156. package/assets/{xychartDiagram-e933f94c-dwXl98eb.js → xychartDiagram-e933f94c-C41tCiSk.js} +3 -3
  157. package/assets/{xychartDiagram-e933f94c-DVicHEN-.js → xychartDiagram-e933f94c-HanO46iU.js} +2 -2
  158. package/idle-prefetch-manifest.json +10 -18
  159. package/manifest.json +3 -3
  160. package/package.json +1 -1
  161. package/precache-manifest.json +372 -280
  162. package/robots.txt +3 -0
  163. package/sitemap.xml +51 -21
  164. package/sw.js +6 -6
  165. package/user-manual/screenshots/ai-step-0.png +0 -0
  166. package/user-manual/screenshots/ai-step-1.png +0 -0
  167. package/user-manual/screenshots/ai-step-2.png +0 -0
  168. package/user-manual/screenshots/ai-step-3.png +0 -0
  169. package/user-manual/screenshots/app-menu.png +0 -0
  170. package/user-manual/screenshots/backup-restore.png +0 -0
  171. package/user-manual/screenshots/canvas-tools.png +0 -0
  172. package/user-manual/screenshots/debug-panel.png +0 -0
  173. package/user-manual/screenshots/drawing-step-0.png +0 -0
  174. package/user-manual/screenshots/drawing-step-1.png +0 -0
  175. package/user-manual/screenshots/drawing-step-2.png +0 -0
  176. package/user-manual/screenshots/edit-selected.png +0 -0
  177. package/user-manual/screenshots/element-selected.png +0 -0
  178. package/user-manual/screenshots/flowchart-step-1.png +0 -0
  179. package/user-manual/screenshots/flowchart-step-2.png +0 -0
  180. package/user-manual/screenshots/flowchart-step-3.png +0 -0
  181. package/user-manual/screenshots/image-preview-empty.png +0 -0
  182. package/user-manual/screenshots/insert-from-library.png +0 -0
  183. package/user-manual/screenshots/insert-tools.png +0 -0
  184. package/user-manual/screenshots/inspiration-step-1.png +0 -0
  185. package/user-manual/screenshots/inspiration-step-2.png +0 -0
  186. package/user-manual/screenshots/media-library.png +0 -0
  187. package/user-manual/screenshots/mindmap-step-1.png +0 -0
  188. package/user-manual/screenshots/mindmap-step-2.png +0 -0
  189. package/user-manual/screenshots/mindmap-toolbar-menu.png +0 -0
  190. package/user-manual/screenshots/settings-dialog.png +0 -0
  191. package/user-manual/screenshots/shape-step-1.png +0 -0
  192. package/user-manual/screenshots/shape-step-2.png +0 -0
  193. package/user-manual/screenshots/text-step-1.png +0 -0
  194. package/user-manual/screenshots/text-step-2.png +0 -0
  195. package/user-manual/screenshots/toolbox-drawer.png +0 -0
  196. package/user-manual/screenshots/toolbox-entry.png +0 -0
  197. package/user-manual/screenshots/video-entry.png +0 -0
  198. package/user-manual/screenshots/view-navigation.png +0 -0
  199. package/user-manual/screenshots/zoom-menu.png +0 -0
  200. package/version.json +2 -2
  201. package/assets/CanvasAudioPlayer-I99Q6iUG.js +0 -2
  202. package/assets/ChatMessagesArea-DjZij9ug.js +0 -250
  203. package/assets/KnowledgeBaseContent-_oerqFcc.js +0 -53
  204. package/assets/MVCreator-D3aQSaW7.js +0 -152
  205. package/assets/ModelBenchmarkWorkbench-BykQRfNd.js +0 -2
  206. package/assets/MusicAnalyzer-H_XGoBYB.js +0 -1
  207. package/assets/MusicAnalyzer-x0fSrMP5.js +0 -6
  208. package/assets/ResizableDivider-DsTgIPW7.js +0 -1
  209. package/assets/TaskQueuePanel-ELhFotpr.js +0 -1
  210. package/assets/VideoAnalyzer-PPcLUgVG.js +0 -2
  211. package/assets/__vite-browser-external-UePf-KSV.js +0 -1
  212. package/assets/batch-image-generation-CGH41vuy.js +0 -6
  213. package/assets/browser-DXPV8NIp.js +0 -1
  214. package/assets/channel-BfMGCCn0.js +0 -1
  215. package/assets/channel-DeJVpKdh.js +0 -1
  216. package/assets/classDiagram-70f12bd4-B_9UIgsm.js +0 -2
  217. package/assets/classDiagram-70f12bd4-DLNHb_P6.js +0 -2
  218. package/assets/classDiagram-v2-f2320105-C0BEPTOJ.js +0 -2
  219. package/assets/classDiagram-v2-f2320105-DUpsB6Bl.js +0 -2
  220. package/assets/clipper-DeGK8k4i.js +0 -1
  221. package/assets/clone-BQor2Rkf.js +0 -1
  222. package/assets/createText-2e5e7dd3-HaNu0bzH.js +0 -8
  223. package/assets/flowDiagram-v2-96b9c2cf-CN9MfSbM.js +0 -1
  224. package/assets/flowDiagram-v2-96b9c2cf-DmdbPS9F.js +0 -1
  225. package/assets/ganttDiagram-c361ad54-BhiFXvw4.js +0 -257
  226. package/assets/ganttDiagram-c361ad54-CgXKGhqO.js +0 -257
  227. package/assets/graph-Bof67eXy.js +0 -1
  228. package/assets/index--AFfNrAn.js +0 -1
  229. package/assets/index-3862675e-BwnyJosj.js +0 -1
  230. package/assets/index-3s7vtIDn.js +0 -1
  231. package/assets/index-B1XP5g7P.css +0 -1
  232. package/assets/index-BQG8EN1j.js +0 -2
  233. package/assets/index-BSTV_jrZ.js +0 -7
  234. package/assets/index-BbPDfLUg.js +0 -13
  235. package/assets/index-By89A9tM.js +0 -1
  236. package/assets/index-C-BWu7zw.js +0 -1
  237. package/assets/index-C1aQgKmj.js +0 -1
  238. package/assets/index-CV_n2jbZ.js +0 -1
  239. package/assets/index-CXs3rSIv.js +0 -1
  240. package/assets/index-D5w1iMJJ.js +0 -686
  241. package/assets/index-DBZhJ0TF.js +0 -1
  242. package/assets/index-DSSdH8rd.js +0 -1
  243. package/assets/index-DThXexEg.js +0 -3
  244. package/assets/index-DXNgOYCy.js +0 -1
  245. package/assets/index-D_nqY8BI.js +0 -1
  246. package/assets/index-Db6CG67V.js +0 -1
  247. package/assets/index-F-nD5h3E.js +0 -2
  248. package/assets/index-FSSeZ9MX.js +0 -1
  249. package/assets/index-FV8re6D_.js +0 -1
  250. package/assets/index-M-8vZHvu.js +0 -4
  251. package/assets/index-_w55jjNG.js +0 -1
  252. package/assets/index-dl9wa8QZ.js +0 -1
  253. package/assets/index-lh5QiZnw.js +0 -1
  254. package/assets/index-vZIyCA7l.js +0 -1
  255. package/assets/layout-BOzuPdLR.js +0 -1
  256. package/assets/main-CoHRneAY.js +0 -564
  257. package/assets/main-DlDiDA_U.css +0 -9
  258. package/assets/photo-wall-splitter-J-iL_dx6.js +0 -1
  259. package/assets/sankeyDiagram-04a897e0-C97Nyu0A.js +0 -8
  260. package/assets/sankeyDiagram-04a897e0-C_EKw8pB.js +0 -8
  261. package/assets/stateDiagram-587899a1-CEF7DDIW.js +0 -1
  262. package/assets/stateDiagram-587899a1-C_svlAPg.js +0 -1
  263. package/assets/stateDiagram-v2-d93cdb3a-C--llHK7.js +0 -1
  264. package/assets/stateDiagram-v2-d93cdb3a-DBu1vAsg.js +0 -1
  265. package/assets/styles-c10674c1-f43d5Djh.js +0 -116
  266. package/assets/tool-panels-CWkLJMSl.js +0 -2836
  267. package/assets/tool-runtime-BDweMCnx.css +0 -1
  268. package/assets/tool-runtime-DWFWFwSV.js +0 -12
  269. package/assets/ttd-dialog-axVrjZjK.js +0 -99
  270. package/assets/useCharacters-DIPY-URj.js +0 -6
  271. package/assets/version-update-prompt-BPlfUmRw.js +0 -1
  272. package/assets/version-update-prompt-P9Rd5ve2.css +0 -1
  273. package/assets/video-recovery-service-CW-1VcaI.js +0 -1
  274. package/assets/workflow-generation-utils-kLLkyrm9.js +0 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Opentu CDN Assets v0.6.61
1
+ # Opentu CDN Assets v0.6.63
2
2
 
3
3
  > 静态资源包,不含 HTML 文件
4
4
 
5
- - unpkg: https://unpkg.com/aitu-app@0.6.61/
6
- - jsdelivr: https://cdn.jsdelivr.net/npm/aitu-app@0.6.61/
5
+ - unpkg: https://unpkg.com/aitu-app@0.6.63/
6
+ - jsdelivr: https://cdn.jsdelivr.net/npm/aitu-app@0.6.63/
package/_headers CHANGED
@@ -3,7 +3,7 @@
3
3
  # 首页和HTML文件 - 允许iframe嵌入,禁用缓存
4
4
  /
5
5
  Cache-Control: public, max-age=0, must-revalidate
6
- Content-Security-Policy: upgrade-insecure-requests; default-src 'self' https: data: blob:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com https://www.google-analytics.com https://us.i.posthog.com https://wiki.tu-zi.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https:; connect-src 'self' https: wss: data:; frame-ancestors 'self' localhost:* 127.0.0.1:* *.localhost:* https://api.tu-zi.com;
6
+ Content-Security-Policy: upgrade-insecure-requests; default-src 'self' https: data: blob:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.googletagmanager.com https://www.google-analytics.com https://us.i.posthog.com https://us-assets.i.posthog.com https://wiki.tu-zi.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' data: https://fonts.gstatic.com; img-src 'self' data: blob: https:; connect-src 'self' https: wss: data:; frame-ancestors 'self' localhost:* 127.0.0.1:* *.localhost:* https://api.tu-zi.com;
7
7
  X-Content-Type-Options: nosniff
8
8
  Referrer-Policy: origin-when-cross-origin
9
9
 
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-Cos6lOhr.css"])))=>i.map(i=>d[i]);
2
+ import{r as n,y as t,z as he,bV as N,cP as ke,cQ as Ae,hs as Se,jc as Te,iR as Le,jd as Ee,je as ue,jf as J,jg as U,jh as Ce,ji as Ne,jj as de,ho as pe,jk as Z,jl as Me,cr as Re,ig as De,as as ze,cy as $e,hF as oe,jm as ye,gP as ie,jn as le,jo as _e,jp as Oe,bw as Ue,jq as Fe,jr as qe,da as Ye,js as Ve,jt as fe,ju as Be,jv as He,_ as We,jw as Qe,jx as Xe,bW as Ke,jy as Ge,jz as Je,jA as Ze,jB as et,jC as tt}from"./tool-windows-hjm6YiPY.js";const ve=5;function me(e,i,s){const c=Math.max(0,window.innerWidth-i),y=Math.max(0,window.innerHeight-s);return{x:Math.max(0,Math.min(e.x,c)),y:Math.max(0,Math.min(e.y,y))}}function at(e){try{const i=localStorage.getItem(e);if(!i)return null;const s=JSON.parse(i);if(typeof s.x=="number"&&typeof s.y=="number")return s}catch{}return null}function nt(e,i){try{localStorage.setItem(e,JSON.stringify(i))}catch{}}function st(e){const{storageKey:i,enabled:s=!0}=e,[c,y]=n.useState(()=>s?at(i):null),[m,b]=n.useState(!1),w=n.useRef(!1),h=n.useRef(null),I=n.useRef(null),_=n.useCallback(f=>{if(!s||f.button!==0)return;const v=I.current;if(!v)return;const p=v.getBoundingClientRect();h.current={startPointerX:f.clientX,startPointerY:f.clientY,startElX:p.left,startElY:p.top,activated:!1,frameId:0}},[s]);n.useEffect(()=>{if(!s)return;const f=p=>{const u=h.current;if(!u)return;const g=p.clientX-u.startPointerX,M=p.clientY-u.startPointerY;if(!u.activated){if(Math.abs(g)<ve&&Math.abs(M)<ve)return;u.activated=!0,b(!0)}cancelAnimationFrame(u.frameId),u.frameId=requestAnimationFrame(()=>{const S=I.current;if(!S)return;const d=me({x:u.startElX+g,y:u.startElY+M},S.offsetWidth,S.offsetHeight);y(d)})},v=()=>{const p=h.current;if(!p)return;cancelAnimationFrame(p.frameId);const u=p.activated;h.current=null,b(!1),u&&(w.current=!0,requestAnimationFrame(()=>{w.current=!1}),y(g=>(g&&nt(i,g),g)))};return window.addEventListener("pointermove",f),window.addEventListener("pointerup",v),()=>{window.removeEventListener("pointermove",f),window.removeEventListener("pointerup",v)}},[s,i]),n.useEffect(()=>{if(!s||!c)return;const f=()=>{const v=I.current;v&&y(p=>p&&me(p,v.offsetWidth,v.offsetHeight))};return window.addEventListener("resize",f),()=>window.removeEventListener("resize",f)},[s,!!c]);const P=n.useCallback(()=>{y(null);try{localStorage.removeItem(i)}catch{}},[i]);return{position:c,isDragging:m,wasDraggedRef:w,elementRef:I,handlePointerDown:_,resetPosition:P}}const ot=({volume:e,onVolumeChange:i})=>{const s=n.useRef(null),c=n.useRef(null),y=n.useRef(!1),m=n.useRef(!1),b=n.useRef(!1),[w,h]=n.useState(!1),[I,_]=n.useState(!1),[P,f]=n.useState(!1),v=Math.round(e*100),p={"--canvas-audio-progress":`${e*100}%`},u=()=>{c.current!==null&&(window.clearTimeout(c.current),c.current=null)},g=()=>{u(),h(!0)},M=()=>{u(),h(d=>!d)},S=()=>{u(),!(m.current||b.current)&&(c.current=window.setTimeout(()=>{h(!1)},180))};return n.useEffect(()=>{m.current=I},[I]),n.useEffect(()=>{b.current=P},[P]),n.useEffect(()=>()=>u(),[]),n.useEffect(()=>{if(!w)return;const d=x=>{var k;(k=s.current)!=null&&k.contains(x.target)||(u(),h(!1),f(!1),_(!1),y.current=!1)};return document.addEventListener("pointerdown",d,!0),()=>document.removeEventListener("pointerdown",d,!0)},[w]),n.useEffect(()=>{if(!P)return;const d=()=>{b.current=!1,f(!1),m.current||(u(),c.current=window.setTimeout(()=>{h(!1)},180))};return window.addEventListener("pointerup",d),()=>window.removeEventListener("pointerup",d)},[P]),t.jsx("div",{ref:s,className:he("canvas-audio-player__volume",{"canvas-audio-player__volume--expanded":w}),onPointerDown:d=>d.stopPropagation(),onMouseEnter:()=>{m.current=!0,_(!0),u()},onMouseLeave:()=>{m.current=!1,_(!1),S()},onBlur:d=>{var k;const x=d.relatedTarget;x&&((k=s.current)!=null&&k.contains(x))||S()},children:t.jsxs("div",{className:"canvas-audio-player__volume-shell",children:[t.jsx("div",{className:"canvas-audio-player__volume-slider-wrap",children:t.jsx("input",{type:"range",min:0,max:1,step:.01,value:e,onFocus:g,onPointerDown:d=>{d.stopPropagation(),b.current=!0,f(!0),g()},onChange:d=>i(Number(d.target.value)),className:"canvas-audio-player__slider canvas-audio-player__slider--volume",style:p,"aria-label":"Playback volume","aria-valuetext":`${v}%`})}),t.jsxs("span",{className:"canvas-audio-player__volume-value",children:[v,"%"]}),t.jsx(N,{content:"音量",children:t.jsx("button",{type:"button",className:"canvas-audio-player__volume-toggle",onPointerDown:d=>{d.stopPropagation(),y.current=!0},onClick:()=>{y.current=!1,M()},onFocus:()=>{y.current||g()},onBlur:()=>{y.current=!1},"aria-label":"Volume controls","aria-expanded":w,children:e<=.01?t.jsx(ke,{size:16}):t.jsx(Ae,{size:16})})})]})})},ge="asset:";function it(e){var i;return(i=e==null?void 0:e.elementId)!=null&&i.startsWith(ge)?e.elementId.slice(ge.length):null}function xe(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const i=Math.floor(e),s=Math.floor(i/60),c=i%60;return`${s}:${String(c).padStart(2,"0")}`}function lt(e){var s;const i=((s=e.segments[e.segments.length-1])==null?void 0:s.endMs)||0;return xe(i/1e3)}const rt=({queue:e,activeQueueIndex:i,queueSource:s,activePlaylistId:c,playing:y=!1,activeReadingSourceId:m,onSelect:b,onPlayAllTracksItem:w})=>{const{assets:h}=Se(),{playlists:I,playlistItems:_,favoriteAssetIds:P,createPlaylist:f,addAssetToPlaylist:v,removeAssetFromPlaylist:p,toggleFavorite:u}=Te(),{contextMenu:g,openAt:M,close:S}=Le(),[d,x]=n.useState(!1),[k,E]=n.useState(""),[F,T]=n.useState(null),{noteMetas:z,loadReadingSource:Q,buildReadingQueue:X}=Ee(),[q,Y]=n.useState(s==="reading"?ue:J),V=q===ue,R=s==="playlist"&&c?c:J,L=e.filter(a=>!U(a)),ee=Ce(L),K=a=>{const o=it(a);if(o)return o;if(!(a!=null&&a.audioUrl))return null;const r=h.find(j=>j.type===ze.AUDIO&&j.url===a.audioUrl);return(r==null?void 0:r.id)||null},B=n.useMemo(()=>new Set(R!==J?(_[R]||[]).map(a=>a.assetId?Ne({kind:"asset",assetId:a.assetId}):null).filter(a=>!!a):[]),[_,R]),D=n.useCallback(async a=>{if(w){w(a);return}const o=await Q(a);o&&(await X(a),b(o))},[w,Q,X,b]),$=n.useMemo(()=>z.map(a=>({id:a.id,title:a.title||"未命名笔记",subtitle:new Date(a.updatedAt).toLocaleDateString("zh-CN"),canFavorite:!1,isActive:(m==null?void 0:m.includes(a.id))===!0,isPlaying:y&&(m==null?void 0:m.includes(a.id))===!0})),[z,m,y]);return s==="reading"?t.jsxs("div",{className:"canvas-audio-player__playlist",children:[t.jsx(de,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:q,allCount:L.length,allTracksCount:z.length,playlists:I,playlistItems:_,onSelect:Y,onCreate:()=>{E(""),x(!0)}}),V?$.length===0?t.jsxs("div",{className:"canvas-audio-player__playlist-empty",children:[t.jsx(pe,{size:16}),t.jsx("span",{children:"知识库还没有笔记"})]}):t.jsx(Z,{className:"canvas-audio-player__playlist-list",items:$,onSelect:a=>void D(a.id),onTogglePlayback:a=>void D(a.id),showPlaybackIndicator:!0}):t.jsx(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:e.map((a,o)=>{const r=a;return{id:r.readingSourceId,title:r.title||"朗读轨道",subtitle:lt(r),previewImageUrl:r.previewImageUrl,isActive:o===i,isPlaying:o===i,canFavorite:!1}}),onSelect:a=>{const o=e.find(r=>U(r)&&r.readingSourceId===a.id);o&&b(o)},onTogglePlayback:a=>{const o=e.find(r=>U(r)&&r.readingSourceId===a.id);o&&b(o)},showPlaybackIndicator:!0})]}):t.jsxs("div",{className:"canvas-audio-player__playlist",children:[t.jsx(de,{className:"canvas-audio-player__playlist-tabs",selectedPlaylistId:q,allCount:L.length,allTracksCount:z.length,playlists:I,playlistItems:_,onSelect:Y,onCreate:()=>{E(""),x(!0)}}),V?$.length===0?t.jsxs("div",{className:"canvas-audio-player__playlist-empty",children:[t.jsx(pe,{size:16}),t.jsx("span",{children:"知识库还没有笔记"})]}):t.jsx(Z,{className:"canvas-audio-player__playlist-list",items:$,onSelect:a=>void D(a.id),onTogglePlayback:a=>void D(a.id),showPlaybackIndicator:!0}):t.jsx(Z,{className:"canvas-audio-player__playlist-list audio-track-list--queue",items:L.map((a,o)=>{const r=K(a);return{id:`${a.audioUrl}-${o}`,title:a.title||"未命名音频",subtitle:xe(ee.get(a.audioUrl)??a.duration),previewImageUrl:a.previewImageUrl,isActive:o===i,isPlaying:o===i,isFavorite:r?P.has(r):!1,canFavorite:!!r}}),onSelect:a=>{const o=L.find((r,j)=>`${r.audioUrl}-${j}`===a.id);o&&b(o)},onContextMenu:(a,o)=>{const r=L.find((H,te)=>`${H.audioUrl}-${te}`===a.id),j=K(r);j&&(o.preventDefault(),o.stopPropagation(),M(o.clientX,o.clientY,{kind:"asset",assetId:j}))},onToggleFavorite:a=>{const o=L.find((j,H)=>`${j.audioUrl}-${H}`===a.id),r=K(o);r&&u(r)},onTogglePlayback:a=>{const o=L.find((r,j)=>`${r.audioUrl}-${j}`===a.id);o&&b(o)},showFavoriteButton:!0,showPlaybackIndicator:!0}),t.jsx(Me,{contextMenu:g?{x:g.x,y:g.y,item:g.payload}:null,playlists:I,playlistItems:_,favoriteAssetIds:P,selectedPlaylistId:R===J?null:R,currentPlaylistItemKeys:B,onClose:S,onToggleFavorite:a=>void u(a),onAddToPlaylist:(a,o)=>{a.kind==="asset"&&v(a.assetId,o)},onRemoveFromPlaylist:(a,o)=>{a.kind==="asset"&&p(a.assetId,o)},onCreatePlaylistAndAdd:a=>{a.kind==="asset"&&(T(a.assetId),E(""),x(!0))}}),t.jsx(Re,{visible:d,header:"新建播放列表",onClose:()=>x(!1),onConfirm:async()=>{const a=await f(k);F&&await v(F,a.id),x(!1),E(""),T(null)},onCancel:()=>{x(!1),T(null)},confirmBtn:"确定",cancelBtn:"取消",children:t.jsx(De,{value:k,onChange:a=>E(String(a)),placeholder:"请输入播放列表名称"})})]})},we={sequential:t.jsx(et,{size:14}),"list-loop":t.jsx(Ze,{size:14}),"single-loop":t.jsx(Je,{size:14}),shuffle:t.jsx(Ge,{size:14})},ct=Object.keys(le).map(e=>({value:e,content:le[e],prefixIcon:we[e]}));function ut(e,i){return tt(i).map(s=>{const c=_e(s),y=Math.abs(s-e)<.001;return{value:s,content:y?`✓ ${c}`:c}})}function be(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return"--:--";const i=Math.floor(e),s=Math.floor(i/60),c=i%60;return`${s}:${String(c).padStart(2,"0")}`}const yt=()=>{const e=$e(),i=n.useRef(null),[s,c]=n.useState(!1),[y,m]=n.useState(()=>{const l=oe.getToolState(ye);return(l==null?void 0:l.status)==="open"}),[b,w]=n.useState(()=>{try{return localStorage.getItem(ie.AUDIO_PLAYER_LAYOUT)==="vertical"?"vertical":"horizontal"}catch{return"horizontal"}}),[h,I]=n.useState(()=>typeof window<"u"?window.innerWidth:1024);n.useEffect(()=>{const l=()=>I(window.innerWidth);return window.addEventListener("resize",l),window.addEventListener("orientationchange",l),()=>{window.removeEventListener("resize",l),window.removeEventListener("orientationchange",l)}},[]);const _=h<=768?"vertical":b,[P,f]=n.useState(null),v=h<=768,{position:p,isDragging:u,wasDraggedRef:g,elementRef:M,handlePointerDown:S}=st({storageKey:ie.AUDIO_PLAYER_POSITION,enabled:!v}),d=n.useMemo(()=>!e.duration||e.duration<=0?0:Math.max(0,Math.min(100,e.currentTime/e.duration*100)),[e.currentTime,e.duration]),x=Number.isFinite(e.currentTime)?e.currentTime:0,k=Number.isFinite(e.duration)?e.duration:0,E=be(x),F=be(k),T=e.activeQueueIndex>=0?e.queue[e.activeQueueIndex]:null,z=e.activeTitle||(U(T)?T.title:void 0),Q=e.activePreviewImageUrl||(U(T)?T.previewImageUrl:void 0),X=e.activeQueueIndex>0,q=e.activeQueueIndex>=0&&e.activeQueueIndex<e.queue.length-1,Y=e.queue.length>1&&e.activeQueueIndex>=0,V=Y?`${e.activeQueueIndex+1}/${e.queue.length}`:null,R=e.queueSource==="playlist"?e.activePlaylistName||"播放列表":e.activePlaylistName||(e.queueSource==="reading"?"朗读轨道":"画布音频"),L=Y?`${R} ${e.activeQueueIndex+1} / ${e.queue.length}`:R,ee=V?`${V} · ${E} / ${F}`:`${E} / ${F}`,B=e.queueSource==="reading"&&(!!e.activeReadingSourceId||T!==null&&U(T))||!!e.activeAudioUrl,D=e.mediaType==="audio",$=e.mediaType==="reading"?"reading":"audio",a=le[e.playbackMode],o=we[e.playbackMode],r=n.useMemo(()=>ut(e.effectivePlaybackRate,$),[e.effectivePlaybackRate,$]),j=_e(e.effectivePlaybackRate),H=`${e.mediaType==="reading"?"语音速度":"播放速度"} ${j}`,te={"--canvas-audio-progress":`${d}%`},Pe=n.useCallback(()=>{w(l=>{const A=l==="horizontal"?"vertical":"horizontal";try{localStorage.setItem(ie.AUDIO_PLAYER_LAYOUT,A)}catch{}return A})},[]),je=n.useCallback(async()=>{try{e.playing?e.pausePlayback():await e.resumePlayback()}catch{}},[e]);if(n.useEffect(()=>{if(!B){c(!1),f(null);return}let l=0;const A=()=>{const ce=document.querySelector(".ai-input-bar__container");if(!(ce instanceof HTMLElement)){f(null);return}const se=ce.getBoundingClientRect(),G={left:Math.round(se.left),width:Math.round(se.width),bottom:Math.max(0,Math.round(window.innerHeight-se.top))};f(W=>W&&W.left===G.left&&W.width===G.width&&W.bottom===G.bottom?W:G)},C=()=>{window.cancelAnimationFrame(l),l=window.requestAnimationFrame(A)},ae=document.querySelector(".ai-input-bar__container"),ne=document.querySelector(".ai-input-bar"),O=typeof ResizeObserver<"u"?new ResizeObserver(()=>C()):null;return O&&ae instanceof HTMLElement&&O.observe(ae),O&&ne instanceof HTMLElement&&ne!==ae&&O.observe(ne),C(),window.addEventListener("resize",C),window.addEventListener("orientationchange",C),()=>{window.cancelAnimationFrame(l),window.removeEventListener("resize",C),window.removeEventListener("orientationchange",C),O==null||O.disconnect()}},[B]),n.useEffect(()=>{if(!s)return;const l=A=>{var C;(C=i.current)!=null&&C.contains(A.target)||c(!1)};return document.addEventListener("pointerdown",l,!0),()=>document.removeEventListener("pointerdown",l,!0)},[s]),n.useEffect(()=>{M.current=i.current}),n.useEffect(()=>{const l=oe.observeToolStates().subscribe(()=>{const A=oe.getToolState(ye);m((A==null?void 0:A.status)==="open")});return()=>l.unsubscribe()},[]),!B||y)return null;const Ie=p&&!v?{left:p.x,top:p.y}:{},re={...P?{"--canvas-audio-mobile-left":`${P.left}px`,"--canvas-audio-mobile-width":`${P.width}px`,"--canvas-audio-mobile-offset":`${P.bottom}px`}:{},...Ie};return t.jsxs("div",{ref:i,className:he("canvas-audio-player",{"canvas-audio-player--playlist-open":s,"canvas-audio-player--positioned":!!p,"canvas-audio-player--dragging":u,"canvas-audio-player--vertical":_==="vertical"}),style:Object.keys(re).length>0?re:void 0,children:[t.jsxs("button",{type:"button",className:"canvas-audio-player__queue-trigger",onPointerDown:S,onClick:()=>{g.current||c(l=>!l)},"aria-expanded":s,"aria-label":"切换播放列表",children:[t.jsx("div",{className:"canvas-audio-player__cover",children:t.jsx(Oe,{src:Q,alt:z||"Audio cover",fallbackClassName:"canvas-audio-player__cover-fallback",iconSize:16})}),t.jsxs("div",{className:"canvas-audio-player__meta",children:[t.jsx("div",{className:"canvas-audio-player__title",children:z||"未命名音频"}),t.jsxs("div",{className:"canvas-audio-player__subtitle",children:[t.jsx("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--desktop",children:L}),t.jsx("span",{className:"canvas-audio-player__subtitle-text canvas-audio-player__subtitle-text--mobile",children:ee})]})]}),t.jsx("span",{className:"canvas-audio-player__queue-indicator","aria-hidden":"true",children:t.jsx(Ue,{size:14})})]}),t.jsxs("div",{className:"canvas-audio-player__controls",children:[t.jsx(N,{content:"上一首",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--previous",onClick:()=>void e.playPrevious(),disabled:!X,children:t.jsx(Fe,{size:14})})}),t.jsx(N,{content:e.playing?"暂停":"播放",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--primary",onClick:()=>void je(),children:e.playing?t.jsx(qe,{size:14}):t.jsx(Ye,{size:14})})}),t.jsx(N,{content:"下一首",children:t.jsx("button",{type:"button",className:"canvas-audio-player__action canvas-audio-player__action--next",onClick:()=>void e.playNext(),disabled:!q,children:t.jsx(Ve,{size:14})})})]}),t.jsxs("div",{className:"canvas-audio-player__progress",children:[t.jsx("span",{className:"canvas-audio-player__time",children:E}),t.jsx("input",{type:"range",min:0,max:k||0,step:.1,value:Math.min(x,k||x),onChange:l=>{D&&e.seekTo(Number(l.target.value))},className:"canvas-audio-player__slider canvas-audio-player__slider--progress",style:te,"aria-label":D?"Audio progress":"Reading progress",disabled:!D}),t.jsx("span",{className:"canvas-audio-player__time",children:F})]}),t.jsx(ot,{volume:e.volume,onVolumeChange:e.setVolume}),t.jsx(fe,{options:r,trigger:"click",placement:"bottom",minColumnWidth:112,onClick:l=>e.setPlaybackRate(Number(l.value)),children:t.jsx(N,{content:H,children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__speed-toggle","aria-label":`切换播放速度,当前${j}`,children:t.jsx(Be,{size:14})})})}),t.jsx(fe,{options:ct,trigger:"click",placement:"bottom",minColumnWidth:132,onClick:l=>e.setPlaybackMode(l.value),children:t.jsx(N,{content:a,children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__mode-toggle","aria-label":`切换播放模式,当前${a}`,children:o})})}),t.jsx(N,{content:"打开播放器工具",children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__player-switch canvas-audio-player__switch-toggle",onClick:()=>{We(async()=>{const{openMusicPlayerTool:l}=await import("./tool-windows-hjm6YiPY.js").then(A=>A.oR);return{openMusicPlayerTool:l}},__vite__mapDeps([0]),import.meta.url).then(({openMusicPlayerTool:l})=>{l()})},"aria-label":"打开播放器工具",children:t.jsx(He,{size:14})})}),t.jsx(N,{content:_==="horizontal"?"切换为垂直布局":"切换为水平布局",children:t.jsx("button",{type:"button",className:"canvas-audio-player__toggle canvas-audio-player__layout-toggle",onClick:Pe,style:{display:h<=768?"none":""},children:_==="horizontal"?t.jsx(Qe,{size:14}):t.jsx(Xe,{size:14})})}),t.jsx(N,{content:"关闭播放器",children:t.jsx("button",{type:"button",className:"canvas-audio-player__close",onClick:e.stopPlayback,children:t.jsx(Ke,{size:14})})}),s?t.jsx(rt,{queue:e.queue,activeQueueIndex:e.activeQueueIndex,queueSource:e.queueSource,activePlaylistId:e.activePlaylistId,playing:e.playing,activeReadingSourceId:e.activeReadingSourceId,onSelect:l=>{U(l)?e.toggleReadingPlayback(l):e.togglePlayback(l),c(!1)}}):null]})};export{yt as CanvasAudioPlayer};
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.chat-drawer{position:fixed;top:0;right:0;bottom:0;z-index:4010;display:flex;flex-direction:column;width:max(375px,50vw);max-width:calc(100vw - 52px);background:#fff;border-left:1px solid var(--td-component-border);box-shadow:-4px 0 16px #00000014;transform:translate(100%);transition:transform .3s ease-out;color-scheme:light}.chat-drawer--open{transform:translate(0)}.chat-drawer--dragging{transition:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-drawer__resize-handle{position:absolute;top:0;left:-4px;width:8px;height:100%;cursor:ew-resize;z-index:10}.chat-drawer__resize-handle:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:40px;background:transparent;border-radius:2px;transition:background .2s ease}.chat-drawer__resize-handle:hover:before{background:var(--td-brand-color-light-hover)}.chat-drawer__resize-handle:active:before{background:var(--td-brand-color)}.chat-drawer__body{height:100%;display:flex;flex-direction:column;overflow:hidden}.chat-drawer__header{flex-shrink:0;display:flex;flex-direction:column;padding:12px 16px;border-bottom:1px solid #f0f0f0;background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);gap:12px;position:sticky;top:0;z-index:100;min-width:0}.chat-drawer__header-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.chat-drawer__header-bottom{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:6px 12px;background:#00000008;border-radius:12px;min-width:0}.chat-drawer__session-actions{display:flex;align-items:center;gap:4px;padding-right:4px;flex-shrink:0;margin-left:auto}.chat-drawer__title{margin:0;font-size:16px;font-weight:700;color:var(--td-text-color-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;letter-spacing:-.02em}.chat-drawer__title--editable{cursor:pointer;border-radius:6px;padding:4px 8px;margin:-4px -8px;transition:all .2s ease}.chat-drawer__title--editable:hover{background:#f39c120d;color:var(--td-brand-color)}.chat-drawer__title-input{flex:1;min-width:150px;width:100%;font-size:16px;font-weight:700;color:var(--td-text-color-primary);background:#fff;border:2px solid var(--td-brand-color);border-radius:8px;padding:4px 8px;outline:none;box-sizing:border-box;box-shadow:0 4px 12px #f39c121a}.chat-drawer__actions{display:flex;gap:2px;flex-shrink:0}.chat-drawer__content{display:flex;flex-direction:column;overflow:hidden;height:calc(100vh - 108px)}.chat-drawer__close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:50%;cursor:pointer;color:var(--td-text-color-placeholder);transition:all .2s cubic-bezier(.4,0,.2,1)}.chat-drawer__close-btn:hover{background:#f39c1214;color:var(--td-brand-color);transform:rotate(90deg)}.chat-drawer__close-btn--active{background:#f39c121a;color:var(--td-brand-color);border:1px solid rgba(243,156,18,.2)}.chat-drawer-trigger{position:fixed;top:50%;right:0;z-index:4011;display:flex;align-items:center;justify-content:center;width:18px;height:48px;background:#fff;border:1px solid var(--td-component-border);border-right:none;border-radius:8px 0 0 8px;cursor:pointer;transform:translateY(-50%);transition:all .3s ease;box-shadow:-2px 0 8px #0000000f}.chat-drawer-trigger:hover{background:var(--td-bg-color-container-hover)}.chat-drawer-trigger__icon{color:var(--td-text-color-secondary);transition:transform .2s ease}.chat-drawer-trigger--active{transform:translateY(-50%) scaleX(-1)}.message-list{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:16px}.message-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--td-text-color-placeholder);text-align:center;padding:24px}.message-list__loading{display:flex;align-items:center;gap:8px;padding:12px;color:var(--td-text-color-secondary)}.message-item{display:flex;gap:12px;max-width:100%}.message-item--user{flex-direction:row-reverse}.message-item--user .message-item__bubble{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;border-radius:12px 12px 4px;box-shadow:0 4px 12px #f39c1233}.message-item--assistant .message-item__bubble{background:#fff;color:var(--td-text-color-primary);border-radius:12px 12px 12px 4px;border:1px solid var(--td-component-border);box-shadow:0 2px 8px #0000000a}.message-item__avatar{flex-shrink:0;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--td-bg-color-secondarycontainer);color:var(--td-text-color-secondary);font-size:14px}.message-item__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.message-item__bubble{padding:12px 16px;word-break:break-word;white-space:pre-wrap;line-height:1.6;font-size:14px}.message-item__actions{display:flex;gap:8px;opacity:0;transition:opacity .2s ease}.message-item:hover .message-item__actions{opacity:1}.message-item__action-btn{padding:4px 8px;font-size:12px;background:transparent;border:1px solid var(--td-component-border);border-radius:4px;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.message-item__action-btn:hover{background:var(--td-bg-color-container-hover);color:var(--td-text-color-primary)}.message-item__error{color:var(--td-error-color);font-size:12px;padding:8px;background:var(--td-error-color-1);border-radius:4px}.message-item__time{font-size:11px;color:var(--td-text-color-placeholder)}.message-input{padding:16px;border-top:1px solid var(--td-component-border);background:var(--td-bg-color-container)}.message-input__container{display:flex;align-items:flex-end;gap:12px;padding:12px;background:var(--td-bg-color-secondarycontainer);border-radius:12px;border:1px solid var(--td-component-border);transition:border-color .2s ease}.message-input__textarea{flex:1;min-height:24px;max-height:120px;padding:0;background:transparent;border:none;outline:none;resize:none;font-size:14px;line-height:1.5;color:var(--td-text-color-primary)}.message-input__textarea::-moz-placeholder{color:var(--td-text-color-placeholder)}.message-input__textarea::placeholder{color:var(--td-text-color-placeholder)}.message-input__actions{display:flex;gap:8px;align-items:center}.message-input__btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:transparent;border:none;border-radius:50%;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.message-input__btn:hover:not(:disabled){background:#f39c121a;color:var(--td-brand-color)}.message-input__btn:disabled{opacity:.5;cursor:not-allowed}.message-input__btn--send{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff}.message-input__btn--send:hover:not(:disabled){transform:scale(1.05);box-shadow:0 4px 12px #f39c124d;color:#fff}.message-input__btn--stop{background:var(--td-error-color);color:#fff}.message-input__btn--stop:hover:not(:disabled){background:var(--td-error-color-hover);color:#fff}.attachment-preview{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}.attachment-preview__item{position:relative;display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--td-bg-color-container);border:1px solid var(--td-component-border);border-radius:6px;font-size:12px;color:var(--td-text-color-secondary)}.attachment-preview__icon{flex-shrink:0}.attachment-preview__name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-preview__remove{position:absolute;top:-6px;right:-6px;width:16px;height:16px;padding:0;background:var(--td-error-color);border:none;border-radius:50%;cursor:pointer;color:#fff;font-size:10px;display:flex;align-items:center;justify-content:center}.attachment-preview__image{width:48px;height:48px;-o-object-fit:cover;object-fit:cover;border-radius:4px}.session-list{position:absolute;top:93px;left:0;right:0;z-index:100;background:#fff;border-bottom:1px solid var(--td-component-border);max-height:400px;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.session-list__header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:#fafafa;border-bottom:1px solid #f0f0f0}.session-list__title{font-size:12px;font-weight:600;color:var(--td-text-color-primary)}.session-list__new-btn{padding:4px 12px;font-size:12px;background:#fff;border:1px solid #d9d9d9;border-radius:6px;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.session-list__new-btn:hover{background:#f39c120d;border-color:var(--td-brand-color);color:var(--td-brand-color)}.session-list__items{padding:8px}.session-list__empty{padding:16px;text-align:center;color:var(--td-text-color-placeholder);font-size:13px}.session-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:6px;cursor:pointer;transition:background .2s ease}.session-item:hover{background:var(--td-bg-color-container-hover)}.session-item--active .session-item__title{color:var(--td-brand-color);font-weight:600}.session-item--active .session-item__time{color:var(--td-brand-color);opacity:.7}.session-item--active{background:#f39c121a;border:1px solid rgba(243,156,18,.2)}.session-item--editing{cursor:default}.session-item__content{flex:1;min-width:0}.session-item__title{font-size:13px;color:var(--td-text-color-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-item__title-input{width:100%;font-size:13px;color:var(--td-text-color-primary);background:var(--td-bg-color-container);border:1px solid var(--td-brand-color);border-radius:4px;padding:2px 6px;outline:none;box-sizing:border-box}.session-item__title-input:focus{border-color:var(--td-brand-color);box-shadow:0 0 0 2px #0052d91a}.session-item__time{font-size:11px;color:var(--td-text-color-placeholder)}.session-item__actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity .2s ease}.session-item__edit,.session-item__delete{padding:4px;background:transparent;border:none;border-radius:4px;cursor:pointer;color:var(--td-text-color-secondary);transition:all .2s ease}.session-item__edit:hover{background:#f39c121a;color:var(--td-brand-color)}.session-item__delete:hover{background:var(--td-error-color-1);color:var(--td-error-color)}.session-item:hover .session-item__actions{opacity:1}.streaming-text__cursor{display:inline-block;width:2px;height:1em;background:var(--td-brand-color);margin-left:2px;animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@media(max-width:768px){.chat-drawer{width:100vw!important;max-width:100vw!important;border-left:none;border-radius:0;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}.chat-drawer__resize-handle{display:none}.chat-drawer__header{padding:8px 12px;padding-top:calc(env(safe-area-inset-top,0px) + 8px)}.chat-drawer__header-top{gap:4px}.chat-drawer__title{font-size:15px}.chat-drawer__close-btn{width:36px;height:36px;min-width:36px}.chat-drawer__content{height:calc(100vh - 108px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}.chat-drawer-trigger{display:none}.chat-messages-list{padding:12px}.chat-message{max-width:95%}.enhanced-chat-input{padding:8px 12px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 8px)}.enhanced-chat-input__form{padding:6px}.enhanced-chat-input__textarea{min-height:60px;font-size:15px}.enhanced-chat-input__send{width:36px;height:36px;min-width:36px}}@media(max-width:640px){.chat-drawer__header,.chat-drawer__header-bottom{padding:4px 8px;gap:4px}.chat-drawer__title{font-size:14px}.chat-drawer__session-actions{gap:2px}.session-list{top:80px;max-height:50vh}.session-list__header{padding:4px 12px}.session-list__new-btn{padding:6px 10px;font-size:11px}.session-item{padding:4px 8px}.session-item__title{font-size:12px}.chat-messages-list{padding:8px;gap:12px}.chat-message-content{padding:8px 12px;font-size:13px}.chat-message-avatar{width:28px;height:28px}.chat-message-avatar svg{width:14px;height:14px}.enhanced-chat-input{padding:4px 8px;max-height:140px}.enhanced-chat-input__form{padding:4px;border-radius:12px}.enhanced-chat-input__textarea{min-height:44px;max-height:80px;padding:8px 10px;font-size:14px}.enhanced-chat-input__selection{gap:4px;padding-bottom:4px;margin-bottom:4px}.enhanced-chat-input__selection-item{width:32px;height:32px}.enhanced-chat-input__selection-item--text{min-width:48px;max-width:100px;padding:4px 8px}.model-selector__trigger{padding:3px 8px;font-size:11px}.model-selector__dropdown{min-width:280px;max-width:calc(100vw - 32px)}.model-selector__item{padding:8px 10px}.model-selector__item-name{font-size:13px}.model-selector__item-desc{font-size:11px}}@media(max-width:480px){.chat-drawer__header-bottom .chat-drawer__session-actions{display:none}.enhanced-chat-input__selection-item{width:28px;height:28px}.enhanced-chat-input__send{width:32px;height:32px;min-width:32px}.model-selector--variant-capsule .model-selector__trigger{padding:2px 6px;font-size:10px}.model-selector__trigger-text{max-width:60px}}.chat-section{display:flex;flex-direction:column;height:calc(100vh - 268px);overflow:hidden;padding:0!important}.chat-messages{flex:1;display:flex;flex-direction:column;overflow:hidden;padding:0!important}.chat-messages-list{flex:1;overflow-y:auto;padding:16px 0 16px 16px;display:flex;flex-direction:column;gap:16px}.chat-message{display:flex;flex-wrap:wrap;gap:12px;max-width:90%;padding:0!important}.chat-message--user{flex-direction:row-reverse;align-self:flex-end}.chat-message--user .chat-message-content{background:linear-gradient(135deg,#f39c12,#e67e22);color:#fff;border-radius:12px 12px 4px;border:none;box-shadow:0 4px 12px #f39c1233}.chat-message--assistant{align-self:flex-start}.chat-message--assistant .chat-message-content{background:#fff;border-radius:12px 12px 12px 4px;border:1px solid var(--td-component-border);box-shadow:0 2px 8px #0000000a}.chat-message--error .chat-message-content{background:var(--td-error-color-1);border:1px solid var(--td-error-color-3);color:var(--td-error-color-7)}.chat-message--error .chat-message-avatar{background:var(--td-error-color-1);color:var(--td-error-color)}.chat-message-avatar{width:32px;height:32px;border-radius:50%;background:var(--td-bg-color-secondarycontainer);display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-message-avatar svg{width:18px;height:18px;color:var(--td-text-color-secondary)}.chat-message-content{padding:12px 16px;font-size:14px;line-height:1.6;color:var(--td-text-color-primary);word-break:break-word;-webkit-user-select:text;-moz-user-select:text;user-select:text;cursor:text}.chat-message-content::-moz-selection{background-color:rgba(var(--td-brand-color-rgb),.3)}.chat-message-content::selection{background-color:rgba(var(--td-brand-color-rgb),.3)}.chat-message-content p{margin:0 0 8px}.chat-message-content p:last-child{margin-bottom:0}.chat-message-content pre{margin:12px 0;padding:12px;background:var(--td-bg-color-page);border-radius:8px;overflow-x:auto;font-size:13px}.chat-message-content pre code{background:none;padding:0}.chat-message-content code{background:var(--td-bg-color-page);padding:2px 6px;border-radius:4px;font-size:13px;font-family:SF Mono,Monaco,monospace}.chat-message-content ul,.chat-message-content ol{margin:8px 0;padding-left:24px}.chat-message-content blockquote{margin:12px 0;padding-left:12px;border-left:3px solid var(--td-brand-color);color:var(--td-text-color-secondary)}.chat-message-actions{flex-basis:100%;display:flex;justify-content:flex-end;flex-direction:row!important;align-items:center;gap:8px;margin-top:0;opacity:0;transition:opacity .2s ease;--spacing: 5px}.chat-message:hover .chat-message-actions{opacity:1}.chat-message--user .chat-message-actions{margin-left:0;justify-content:flex-end}.chat-message--user .chat-message-actions .chat-message-content{padding:0!important}.chat-message-actions button{padding:6px 12px;background:var(--td-bg-color-container);border:1px solid var(--td-component-border);border-radius:6px;cursor:pointer;color:var(--td-text-color-secondary);font-size:12px;transition:all .2s ease}.chat-message-actions button:hover{background:var(--td-bg-color-container-hover);color:var(--td-text-color-primary);border-color:var(--td-brand-color)}.chat-loading{display:flex;align-items:center;gap:8px;padding:16px;color:var(--td-text-color-secondary);font-size:14px}.chat-loading--full{flex:1;height:100%;justify-content:center;flex-direction:column}.chat-loading__spinner{width:16px;height:16px;border:2px solid var(--td-bg-color-secondarycontainer);border-top-color:var(--td-brand-color);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center}.chat-empty h3{margin:0 0 8px;font-size:18px;font-weight:600;color:var(--td-text-color-primary)}.chat-empty p{margin:0;color:var(--td-text-color-placeholder);font-size:14px}.chat-input{padding:16px 24px;border-top:1px solid var(--td-component-border);background:var(--td-bg-color-container)}.chat-input-form{display:flex;align-items:flex-end;gap:12px;background:var(--td-bg-color-container);border-radius:16px;padding:8px;box-shadow:0 2px 12px #0000000f;transition:all .3s ease}.chat-input-form:focus-within{box-shadow:0 4px 20px #5a4fcf26}.chat-input-formtextarea:focus{border:none!important}.chat-input-field{flex:1;width:100%;min-height:44px;max-height:120px;padding:8px;background:transparent;border:none;border-radius:12px;resize:none;font-size:15px;line-height:1.6;color:var(--td-text-color-primary);outline:none;transition:all .2s ease}.chat-input-field::-moz-placeholder{color:var(--td-text-color-placeholder)}.chat-input-field::placeholder{color:var(--td-text-color-placeholder)}.chat-input-submit{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#5a4fcf,#7b68ee);border:none;border-radius:12px;cursor:pointer;color:#fff;transition:all .3s ease;box-shadow:0 2px 8px #5a4fcf40}.chat-input-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 16px #5a4fcf59}.chat-input-submit:active:not(:disabled){transform:translateY(0)}.chat-input-submit:disabled{background:var(--td-bg-color-component-disabled);color:var(--td-text-color-disabled);cursor:not-allowed;box-shadow:none}.chat-input-submit svg{width:20px;height:20px}.enhanced-chat-input{position:relative;flex-shrink:0;max-height:160px;padding:12px 16px;border-top:1px solid var(--td-component-border);background:#fff;overflow-y:auto}.enhanced-chat-input__selection{display:flex;flex-wrap:wrap;gap:8px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px dashed var(--td-component-border);align-items:center}.enhanced-chat-input__selection-item{position:relative;width:36px;height:36px;border-radius:4px;overflow:hidden;background:#f5f5f5;flex-shrink:0;cursor:pointer;transition:transform .15s ease;display:flex;align-items:center;justify-content:center}.enhanced-chat-input__selection-item:hover{transform:scale(1.05)}.enhanced-chat-input__selection-item img,.enhanced-chat-input__selection-item video{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;background:#f5f5f5}.enhanced-chat-input__selection-item--graphics{border:1px solid #f39c12}.enhanced-chat-input__selection-item--video{border:2px solid #3b82f6}.enhanced-chat-input__selection-item--text{width:auto;height:auto;min-width:64px;max-width:180px;padding:8px 12px;background:#eff6ff;border:1px solid #bfdbfe;display:flex;align-items:center;justify-content:flex-start}.enhanced-chat-input__form{display:flex;align-items:flex-start;gap:8px;background:#fff;border-radius:16px;padding:8px;border:1px solid var(--td-component-border);box-shadow:0 2px 12px #0000000f;transition:all .3s ease}.enhanced-chat-input__form:focus-within{border-color:var(--td-brand-color);box-shadow:0 4px 20px #f39c1226}.enhanced-chat-input__input-wrapper{position:relative;flex:1}.enhanced-chat-input__highlight-layer{position:absolute;top:0;left:0;right:0;bottom:0;padding:10px 12px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word;word-break:break-word;pointer-events:none;font-family:inherit;overflow:hidden;z-index:1;box-sizing:border-box}.enhanced-chat-input__highlight-text{color:transparent}.enhanced-chat-input__highlight-tag{color:transparent;border-radius:3px;box-decoration-break:clone;-webkit-box-decoration-break:clone;padding:0 2px;margin:0 -2px}.enhanced-chat-input__highlight-tag--image{background:#e5393526}.enhanced-chat-input__highlight-tag--video{background:#ff980026}.enhanced-chat-input__highlight-tag--param{background:#9c27b026}.enhanced-chat-input__highlight-tag--count{background:#2196f326}.enhanced-chat-input__textarea{position:relative;z-index:2;width:100%;min-height:88px;max-height:120px;padding:10px 12px;background:transparent;border:none;border-radius:12px;resize:none;font-size:14px;line-height:1.5;font-family:inherit;color:var(--td-text-color-primary);outline:none;caret-color:var(--td-brand-color)}.enhanced-chat-input__textarea::-moz-placeholder{color:var(--td-text-color-placeholder)}.enhanced-chat-input__textarea::placeholder{color:var(--td-text-color-placeholder)}.enhanced-chat-input__send{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:#f3f4f6;border:none;border-radius:50%;color:#9ca3af;cursor:not-allowed;transition:all .2s ease;flex-shrink:0}.enhanced-chat-input__send--active{background:#f59e0b;color:#fff;cursor:pointer;box-shadow:0 2px 8px #f59e0b66}.enhanced-chat-input__send--active:hover{background:#d97706;transform:scale(1.05)}.enhanced-chat-input__send:disabled{background:#f3f4f6;color:#9ca3af;cursor:not-allowed;box-shadow:none}.enhanced-chat-input__send svg{width:20px;height:20px}.mermaid-renderer{position:relative;margin:12px 0;padding:16px;background:var(--td-bg-color-container);border:1px solid var(--td-component-border);border-radius:12px;overflow-x:auto;transition:all .2s ease}.mermaid-renderer:hover{border-color:var(--td-brand-color);box-shadow:0 2px 8px #00000014}.mermaid-renderer__loading{display:flex;align-items:center;justify-content:center;padding:24px;color:var(--td-text-color-placeholder);font-size:14px}.mermaid-renderer__container{display:flex;justify-content:center;align-items:center;cursor:pointer;transition:transform .2s ease}.mermaid-renderer__container:hover{transform:scale(1.02)}.mermaid-renderer__container svg{max-width:100%;height:auto}.mermaid-renderer__hint{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:12px;padding:8px;color:var(--td-text-color-placeholder);font-size:12px;opacity:0;transition:opacity .2s ease}.mermaid-renderer__hint svg{width:16px;height:16px}.mermaid-renderer:hover .mermaid-renderer__hint{opacity:1}.mermaid-renderer--error{background:var(--td-error-color-1);border-color:var(--td-error-color-3)}.mermaid-renderer__error{color:var(--td-error-color-7);font-size:14px}.mermaid-renderer__error strong{display:block;margin-bottom:8px}.mermaid-renderer__error pre{margin:8px 0;padding:8px;background:var(--td-bg-color-container);border-radius:4px;font-size:12px;overflow-x:auto}.mermaid-renderer__error details{margin-top:12px}.mermaid-renderer__error details summary{cursor:pointer;color:var(--td-text-color-secondary);font-size:12px;padding:8px}.mermaid-renderer__error details summary:hover{color:var(--td-text-color-primary)}.mermaid-preview-dialog .t-dialog__body{padding:24px;max-height:80vh;overflow:auto;background:var(--td-bg-color-container)}.mermaid-preview-content{display:flex;justify-content:center;align-items:center;min-height:400px}.mermaid-preview-content svg{max-width:100%;height:auto}.model-selector{position:relative;min-width:0}.model-selector__trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 10px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;font-size:12px;font-weight:500;color:var(--td-text-color-secondary);cursor:pointer;transition:all .2s ease;outline:none;width:auto;flex-wrap:nowrap;white-space:nowrap}.model-selector__trigger:hover{background:#f9fafb;border-color:var(--td-brand-color);color:var(--td-text-color-primary)}.model-selector__trigger--active{border-color:var(--td-brand-color);box-shadow:0 0 0 2px rgba(var(--td-brand-color-rgb),.1)}.model-selector--variant-form{width:100%;flex:none}.model-selector--variant-form .model-selector__trigger{display:flex;align-items:center;width:100%;max-width:100%;padding:8px 12px;border-radius:6px;background:#fff;border:1px solid #e5e7eb;min-height:36px;box-sizing:border-box;justify-content:flex-start;gap:8px}.model-selector--variant-form .model-selector__trigger:hover{border-color:var(--td-brand-color)}.model-selector--variant-form .model-selector__trigger--active{border-color:var(--td-brand-color);box-shadow:0 0 0 2px #f39c121a}.model-selector--variant-form .model-selector__trigger-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.model-selector--variant-form .model-selector__trigger-health{flex-shrink:0}.model-selector--variant-form .model-selector__trigger-text{font-size:14px;color:var(--td-text-color-primary);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-selector--variant-form .model-selector__trigger-icon{flex-shrink:0;color:#9ca3af}.model-selector--variant-capsule{flex:none;width:auto}.model-selector--variant-capsule .model-selector__trigger{width:auto;max-width:none;background:#0000000a;border:none;padding:4px 12px;border-radius:10px;color:var(--td-text-color-primary)}.model-selector--variant-capsule .model-selector__trigger:hover{background:#00000014}.model-selector--variant-capsule .model-selector__trigger--active{background:#f39c121a;color:var(--td-brand-color);box-shadow:none}.model-selector__trigger-content{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden;flex-wrap:nowrap}.model-selector__trigger-icon-provider{flex-shrink:0;width:16px;height:16px;border-radius:50%}.model-selector__trigger-health{margin-left:-2px;margin-right:2px;flex-shrink:0;display:inline-flex;align-items:center}.model-selector__trigger-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.model-selector__trigger-icon{flex-shrink:0;color:var(--td-text-color-placeholder);transition:transform .2s ease;width:14px;height:14px}.model-selector__trigger-icon--open{transform:rotate(180deg)}.model-selector__dropdown{position:absolute;top:calc(100% + 8px);left:0;z-index:1000;min-width:360px;max-width:440px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 8px 16px #0000001a,0 3px 6px #0000000f;overflow:hidden;animation:slideDown .15s cubic-bezier(.16,1,.3,1)}.model-selector__search{padding:12px 12px 8px;background:#fff}.model-selector__search .t-input{font-size:13px;border-radius:8px}.model-selector__search .t-input .t-input__inner{padding:8px 12px;font-size:13px}.model-selector__search .t-input:focus,.model-selector__search .t-input.t-is-focused{border-color:var(--td-brand-color);box-shadow:0 0 0 2px rgba(var(--td-brand-color-rgb),.1)}.model-selector__list{max-height:480px;overflow-y:auto;padding:12px}.model-selector__list::-webkit-scrollbar{width:6px}.model-selector__list::-webkit-scrollbar-track{background:transparent}.model-selector__list::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:20px}.model-selector__list::-webkit-scrollbar-thumb:hover{background:#9ca3af}.model-selector__empty{padding:32px 16px;text-align:center;font-size:13px;color:#9ca3af}.model-selector__group{margin-bottom:16px}.model-selector__group:last-child{margin-bottom:0}.model-selector__group:not(:first-child){padding-top:12px;border-top:1px solid #f3f4f6}.model-selector__group-header{padding:8px 10px 6px;font-size:11px;font-weight:700;color:#9ca3af;text-transform:uppercase;letter-spacing:.8px}.model-selector__item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;background:transparent;border:1px solid transparent;border-radius:8px;text-align:left;cursor:pointer;transition:all .15s ease;outline:none;position:relative}.model-selector__item:hover{background:#f9fafb}.model-selector__item--active{background:#f39c121a;border-color:#f39c1233}.model-selector__item--active .model-selector__item-name{color:#d97706;font-weight:600}.model-selector__item--active .model-selector__item-desc{color:#d97706;opacity:.7}.model-selector__item--active .model-selector__check{color:#f39c12}.model-selector__item--active .model-selector__item-icon{border:1px solid rgba(243,156,18,.3)}.model-selector__item-icon{flex-shrink:0;width:24px;height:24px;border-radius:50%}.model-selector__item-icon--text{display:inline-flex;align-items:center;justify-content:center;background:#f3f4f6;color:#4b5563;font-size:11px;font-weight:700;line-height:1}.model-selector__item-content{flex:1;min-width:0}.model-selector__item-header{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:4px}.model-selector__item-name{font-size:14px;font-weight:500;color:var(--td-text-color-primary)}.model-selector__item-provider{display:inline-flex;align-items:center;max-width:160px;padding:0 6px;border-radius:999px;border:1px solid rgba(37,99,235,.18);background:#2563eb14;color:#1d4ed8;font-size:11px;font-weight:600;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}.model-selector__item-desc{font-size:12px;color:var(--td-text-color-placeholder);line-height:1.5}.model-selector__item-price{font-size:11px;color:var(--td-text-color-placeholder);white-space:nowrap;margin-left:auto}.model-selector__badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.model-selector__badge{display:inline-block;padding:3px 7px;font-size:10px;font-weight:600;border-radius:5px;white-space:nowrap;letter-spacing:.2px}.model-selector__badge.badge-new,.model-selector__badge.badge-pro{background:#f39c121a;color:#d97706;border:1px solid rgba(243,156,18,.2);text-transform:uppercase}.model-selector__badge.badge-fast{background:#ecfdf5;color:#059669;border:1px solid #a7f3d0}.model-selector__badge.badge-multimodal{background:#eff6ff;color:#2563eb;border:1px solid #bfdbfe}.model-selector__badge.badge-reasoning{background:#fff7ed;color:#ea580c;border:1px solid #ffedd5}.model-selector__badge.badge-economic{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.model-selector__check{flex-shrink:0;color:var(--td-brand-color);margin-left:auto}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@@ -0,0 +1,11 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-Cos6lOhr.css","./index-CJ7peDFP.css","./MediaLibrarySidebar-CNCXXhfY.css","./use-runtime-models-BgWWl4Ng.css","./index-I7GscWS1.css","./main-DY6jstww.css","./ChatMessagesArea-DyR_wHFQ.css"])))=>i.map(i=>d[i]);
2
+ import{aI as oe,r as s,y as r,kf as bt,i9 as vt,f_ as rt,fP as Tt,bV as ke,hm as Ct,lE as Dt,hv as Ie,hy as Rt,lF as ot,f$ as At,dM as Nt,ig as jt,ih as Lt,bD as Wt,lG as $t,lH as Pt,bj as it,h7 as qe,fR as re,lI as Ut,lJ as zt,lK as Ht,lL as Ft,lM as Gt,lN as Kt,lO as Vt,l3 as Bt,hd as $e,l2 as Ot,kR as Xt,lP as qt,lQ as Jt,hK as Qt,hw as Je,bL as Yt,b7 as Zt,hQ as es,lR as ts,_ as ct}from"./tool-windows-hjm6YiPY.js";import{u as ss,b as ns,i as Qe,V as as,j as rs,h as os,f as is}from"./use-runtime-models-C0uyCfar.js";import{a as cs,f as Ye,b as ls}from"./model-selection-BaH65gMK.js";import{S as ds,i as us,u as fs}from"./index-D4R9cQ86.js";import{u as ms,e as ps}from"./main-DX4kRYQX.js";const lt=oe.memo(({session:t,isActive:e,onSelect:o,onDelete:d,onRename:g})=>{const[i,c]=s.useState(!1),[l,I]=s.useState(t.title),M=s.useRef(null),S=s.useCallback(()=>{i||o()},[o,i]),E=s.useCallback(_=>{_.stopPropagation(),d()},[d]),D=s.useCallback(_=>{_.stopPropagation(),I(t.title),c(!0)},[t.title]),y=s.useCallback(()=>{const _=l.trim();_&&_!==t.title&&g(_),c(!1)},[l,t.title,g]),z=s.useCallback(()=>{I(t.title),c(!1)},[t.title]),k=s.useCallback(_=>{_.key==="Enter"?(_.preventDefault(),y()):_.key==="Escape"&&(_.preventDefault(),z())},[y,z]),b=s.useCallback(_=>{I(_.target.value)},[]);s.useEffect(()=>{i&&M.current&&(M.current.focus(),M.current.select())},[i]);const H=s.useMemo(()=>{const _=new Date(t.updatedAt),q=new Date;return _.toDateString()===q.toDateString()?_.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}):_.toLocaleDateString("zh-CN",{month:"short",day:"numeric"})},[t.updatedAt]);return r.jsxs("div",{className:`session-item ${e?"session-item--active":""} ${i?"session-item--editing":""}`,"data-track":"chat_click_session_select",onClick:S,role:"button",tabIndex:0,onKeyDown:_=>!i&&_.key==="Enter"&&S(),children:[r.jsxs("div",{className:"session-item__content",children:[i?r.jsx("input",{ref:M,className:"session-item__title-input",value:l,onChange:b,onKeyDown:k,onBlur:y,onClick:_=>_.stopPropagation(),maxLength:50}):r.jsx("div",{className:"session-item__title",children:t.title}),r.jsx("div",{className:"session-item__time",children:H})]}),!i&&r.jsxs("div",{className:"session-item__actions",children:[r.jsx("button",{className:"session-item__edit","data-track":"chat_click_session_edit",onClick:D,"aria-label":`编辑会话标题: ${t.title}`,children:r.jsx(bt,{size:14})}),r.jsx("button",{className:"session-item__delete","data-track":"chat_click_session_delete",onClick:E,"aria-label":`删除会话: ${t.title}`,children:r.jsx(vt,{size:14})})]})]})});lt.displayName="SessionItem";const dt=oe.memo(({sessions:t,activeSessionId:e,onSelectSession:o,onNewSession:d,onDeleteSession:g,onRenameSession:i})=>{const[c,l]=oe.useState(null),I=s.useCallback(y=>{o(y)},[o]),M=s.useCallback(y=>{l(y)},[]),S=s.useCallback(()=>{c&&(g(c),l(null))},[c,g]),E=s.useCallback(()=>{l(null)},[]),D=s.useCallback((y,z)=>{i(y,z)},[i]);return r.jsxs("div",{className:"session-list",children:[r.jsxs("div",{className:"session-list__header",children:[r.jsx("span",{className:"session-list__title",children:"会话列表"}),r.jsxs("button",{className:"session-list__new-btn","data-track":"chat_click_session_new",onClick:d,"aria-label":"新建会话",children:[r.jsx(rt,{size:14}),r.jsx("span",{children:"新建"})]})]}),r.jsx("div",{className:"session-list__items",children:t.length===0?r.jsx("div",{className:"session-list__empty",children:"暂无会话"}):t.map(y=>r.jsx(lt,{session:y,isActive:y.id===e,onSelect:()=>I(y.id),onDelete:()=>M(y.id),onRename:z=>D(y.id,z)},y.id))}),r.jsx(Tt,{open:c!==null,title:"删除会话",description:"确定删除此会话吗?删除后无法恢复。",confirmText:"删除",cancelText:"取消",danger:!0,onOpenChange:y=>{y||E()},onConfirm:S})]})});dt.displayName="SessionList";const ut=oe.memo(({isOpen:t,onClick:e,drawerWidth:o})=>{const d=t&&o?{right:o-18}:void 0;return r.jsx(ke,{content:t?"收起对话":"展开对话",children:r.jsx("button",{className:`chat-drawer-trigger ${t?"chat-drawer-trigger--active":""}`,"data-track":t?"chat_click_drawer_close":"chat_click_drawer_open",onClick:e,"aria-label":t?"收起对话":"展开对话","aria-expanded":t,style:d,children:r.jsx(Ct,{size:16,className:"chat-drawer-trigger__icon"})})})});ut.displayName="ChatDrawerTrigger";function Ee(t){return t.sourceProfileName||ot[t.vendor]||t.id}const hs=oe.memo(({model:t})=>{const e=os(t.sourceProfileId,t.id);return e?r.jsx("span",{className:"model-selector__item-price",children:e}):null}),gs=oe.memo(({model:t})=>{const e=is(t.sourceProfileId,t.id);return e!=null&&e.description?r.jsx("div",{className:"model-selector__item-desc",children:e.description}):null});function ws(t,e){var i;const o=Ee(t),d=(i=t.description)==null?void 0:i.trim(),g=(e==null?void 0:e.includeProvider)??!0;return d?!g||d.includes(o)?d:`${o} · ${d}`:g?o:""}function _s(t){return Ee(t).trim().slice(0,1).toUpperCase()||"M"}const ft=oe.memo(({className:t,value:e,valueRef:o,onChange:d,variant:g="capsule"})=>{var $;const i=ss("text"),c=(($=i[0])==null?void 0:$.id)||Dt,[l,I]=s.useState(c),[M,S]=s.useState(()=>Ie(null,c)),E=e??l,D=o===void 0?M:o,[y,z]=s.useState(!1),[k,b]=s.useState(""),[H,_]=s.useState(null),q=s.useRef(null),O=s.useRef(null);s.useEffect(()=>{!e&&c&&l!==c&&(I(c),S(Ie(null,c)))},[c,l,e]),s.useEffect(()=>{if(!y)return;const p=m=>{const U=m.target;q.current&&!q.current.contains(U)&&O.current&&!O.current.contains(U)&&(z(!1),b(""))},u=setTimeout(()=>{document.addEventListener("mousedown",p)},100);return()=>{clearTimeout(u),document.removeEventListener("mousedown",p)}},[y]);const V=s.useMemo(()=>E?cs(E,D):null,[E,D]),j=s.useMemo(()=>{if(Ye(i,E,D)||!E)return i;const u=Rt("text",E,D);return u?[u,...i]:i},[i,E,D]),x=s.useMemo(()=>Ye(j,E,D)||j.find(p=>p.id===E),[j,E,D]),C=s.useCallback(p=>{const u=Ie(p.sourceProfileId||null,p.id);e===void 0&&I(p.id),o===void 0&&S(u),d==null||d(p.id,u),z(!1),b("")},[e,o,d]),P=s.useCallback(()=>{const p=!y;z(p),p?_((x==null?void 0:x.vendor)||null):b("")},[x==null?void 0:x.vendor,y]),W=s.useMemo(()=>{const p=new Map,u=[];return j.forEach(m=>{p.has(m.vendor)||(u.push(m.vendor),p.set(m.vendor,0)),p.set(m.vendor,(p.get(m.vendor)??0)+1)}),u.map(m=>({id:m,label:ot[m],count:p.get(m)??0,icon:r.jsx(ns,{vendor:m,size:14})}))},[j]),ne=s.useCallback(p=>{_(p)},[]),ie=s.useMemo(()=>{const p=k.toLowerCase().trim();return p?j.filter(u=>{var U,J;const m=Ee(u).toLowerCase();return u.id.toLowerCase().includes(p)||u.label.toLowerCase().includes(p)||((U=u.shortLabel)==null?void 0:U.toLowerCase().includes(p))||((J=u.description)==null?void 0:J.toLowerCase().includes(p))||m.includes(p)}):H?j.filter(u=>u.vendor===H):j},[k,H,j]),[X,Z]=s.useState({top:0,left:0,width:0,bottom:0,placement:"bottom",maxHeight:480});s.useLayoutEffect(()=>{if(!y)return;const p=()=>{if(!O.current)return;const u=O.current.getBoundingClientRect(),m=window.innerHeight,U=m-u.bottom,J=u.top,de=U<400&&J>U?"top":"bottom",ee=de==="top"?J-16:m-u.bottom-16;Z({top:u.top,left:u.left,width:u.width,bottom:u.bottom,placement:de,maxHeight:Math.min(Math.max(ee,200),600)})};return p(),window.addEventListener("resize",p),window.addEventListener("scroll",p,!0),()=>{window.removeEventListener("resize",p),window.removeEventListener("scroll",p,!0)}},[y]);const le=()=>{if(!y)return null;const p=r.jsxs("div",{ref:q,className:"model-selector__dropdown",style:{position:"fixed",zIndex:Nt.DROPDOWN_PORTAL,left:X.left,top:X.placement==="bottom"?X.bottom+8:"auto",bottom:X.placement==="top"?window.innerHeight-X.top+8:"auto",minWidth:360,width:g==="form"?X.width:"auto",maxHeight:X.maxHeight,visibility:X.width===0?"hidden":"visible",transformOrigin:X.placement==="bottom"?"top left":"bottom left",display:"flex",flexDirection:"column"},onClick:u=>u.stopPropagation(),children:[r.jsx("div",{className:"model-selector__search",children:r.jsx(jt,{value:k,onChange:b,placeholder:"搜索模型...",prefixIcon:r.jsx(Lt,{}),clearable:!0,autofocus:!0})}),r.jsx(as,{tabs:W,activeTab:H,onTabChange:ne,searchQuery:k,compact:!0,children:r.jsx("div",{className:"model-selector__list",children:ie.length===0?r.jsx("div",{className:"model-selector__empty",children:"未找到匹配的模型"}):ie.map(u=>{const m=ls(u),U=m===V,J=!!k.trim(),de=ws(u,{includeProvider:!J});return r.jsxs("button",{className:`model-selector__item ${U?"model-selector__item--active":""}`,"data-track":"chat_click_model_select",onClick:()=>C(u),children:[r.jsx("span",{className:"model-selector__item-icon model-selector__item-icon--text","aria-hidden":"true",children:_s(u)}),r.jsxs("div",{className:"model-selector__item-content",children:[r.jsxs("div",{className:"model-selector__item-header",children:[r.jsx("span",{className:"model-selector__item-name",children:u.shortLabel||u.label}),J?r.jsx("span",{className:"model-selector__item-provider",children:Ee(u)}):null,r.jsx(Qe,{modelId:u.id,profileId:u.sourceProfileId||null}),r.jsx(rs,{modelId:u.id}),r.jsx(hs,{model:u})]}),de?r.jsx("div",{className:"model-selector__item-desc",children:de}):r.jsx(gs,{model:u})]}),U&&r.jsx("svg",{className:"model-selector__check",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:r.jsx("path",{d:"M13.3334 4L6.00002 11.3333L2.66669 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]},m)})})})]});return Wt.createPortal(p,document.body)};return r.jsxs("div",{className:`model-selector ${t||""} model-selector--variant-${g}`,children:[r.jsxs("button",{ref:O,className:`model-selector__trigger ${y?"model-selector__trigger--active":""}`,"data-track":"chat_click_model_selector",onClick:P,"aria-label":"选择模型","aria-expanded":y,children:[r.jsxs("div",{className:"model-selector__trigger-content",children:[r.jsx(Qe,{modelId:(x==null?void 0:x.id)||E,profileId:(x==null?void 0:x.sourceProfileId)||null,className:"model-selector__trigger-health"}),r.jsx("span",{className:"model-selector__trigger-text",children:(x==null?void 0:x.shortLabel)||(x==null?void 0:x.label)||"选择模型"})]}),r.jsx(At,{size:16,className:`model-selector__trigger-icon ${y?"model-selector__trigger-icon--open":""}`})]}),le()]})});ft.displayName="ModelSelector";const mt=s.forwardRef(({selectedContent:t,onSend:e,disabled:o=!1,placeholder:d="输入消息..."},g)=>{const i=s.useRef(null),c=s.useRef(null),[l,I]=s.useState(""),M=t.length>0,{addHistory:S}=ms();s.useImperativeHandle(g,()=>({setContent:k=>{var b;I(k),(b=i.current)==null||b.focus()},getContent:()=>l,focus:()=>{var k;return(k=i.current)==null?void 0:k.focus()}}),[l]);const E=s.useCallback(()=>{const k=l.trim();if(!k&&t.length===0)return;const b=[];k&&b.push({type:"text",text:k}),t.forEach((_,q)=>{_.type==="image"||_.type==="graphics"?b.push({type:"data-file",data:{filename:`${_.type}-${q+1}.png`,mediaType:"image/png",url:_.url||""}}):_.type==="video"&&b.push({type:"data-file",data:{filename:`video-${q+1}.mp4`,mediaType:"video/mp4",url:_.url||""}})});const H={id:`msg_${Date.now()}`,role:"user",parts:b};k&&S(k,M,"agent"),Promise.resolve(e(H)).catch(_=>{console.error("[EnhancedChatInput] send failed:",_)}),I("")},[l,t,e,S,M]),D=s.useCallback(k=>{k.nativeEvent.isComposing||k.key==="Enter"&&!k.shiftKey&&(k.preventDefault(),E())},[E]);s.useEffect(()=>{i.current&&(i.current.style.height="auto",i.current.style.height=`${Math.min(i.current.scrollHeight,120)}px`)},[l]);const y=()=>t.length===0?null:r.jsx("div",{className:"enhanced-chat-input__selection",children:r.jsx(ds,{items:t,language:"zh",enableHoverPreview:!0})}),z=(l.trim()||t.length>0)&&!o;return r.jsxs("div",{className:"enhanced-chat-input",ref:c,children:[y(),r.jsxs("div",{className:"enhanced-chat-input__form",children:[r.jsx("div",{className:"enhanced-chat-input__input-wrapper",children:r.jsx("textarea",{ref:i,className:"enhanced-chat-input__textarea",value:l,onChange:k=>I(k.target.value),onKeyDown:D,placeholder:M?"描述你想要的效果...":d,disabled:o,rows:4})}),r.jsx("button",{className:`enhanced-chat-input__send ${z?"enhanced-chat-input__send--active":""}`,onClick:E,disabled:!z,"aria-label":"发送",children:r.jsx($t,{size:20})})]})]})});mt.displayName="EnhancedChatInput";const Me={MAX_TITLE_LENGTH:30,DRAWER_MIN_WIDTH:320,DRAWER_MAX_WIDTH:500,DRAWER_DEFAULT_WIDTH_RATIO:.3},ge={DRAWER_STATE:"aitu:chat:drawer-state",ACTIVE_SESSION:"aitu:chat:active-session",DATABASE_NAME:"aitu-chat",SESSIONS_STORE:"sessions",MESSAGES_STORE:"messages"},_e=it.createInstance({name:ge.DATABASE_NAME,storeName:ge.SESSIONS_STORE}),pe=it.createInstance({name:ge.DATABASE_NAME,storeName:ge.MESSAGES_STORE});function pt(){return Pt()}function Ss(t){const e=t.trim().replace(/\n/g," ");return e.length<=Me.MAX_TITLE_LENGTH?e:e.slice(0,Me.MAX_TITLE_LENGTH-3)+"..."}async function xs(){const t=Date.now(),e={id:pt(),title:"新对话",createdAt:t,updatedAt:t,messageCount:0};return await _e.setItem(e.id,e),e}async function be(t){return _e.getItem(t)}async function Is(){const t=[];return await _e.iterate(e=>{t.push(e)}),await new Promise(e=>{typeof window<"u"&&"requestIdleCallback"in window?window.requestIdleCallback(()=>e(),{timeout:50}):setTimeout(e,0)}),t.sort((e,o)=>o.updatedAt-e.updatedAt)}async function Ue(t,e){const o=await be(t);if(o){const d={...o,...e,updatedAt:Date.now()};await _e.setItem(t,d)}}async function Ms(t){const e=await ht(t);for(const o of e)await pe.removeItem(o.id);await _e.removeItem(t)}async function ys(t){await pe.setItem(t.id,t);const e=await be(t.sessionId);if(e){const o={messageCount:e.messageCount+1,updatedAt:Date.now()};await Ue(t.sessionId,o)}}async function ht(t){const e=[];return await pe.iterate(o=>{o.sessionId===t&&e.push(o)}),e.sort((o,d)=>o.timestamp-d.timestamp)}async function ks(t,e){const o=await pe.getItem(t);if(o){const d={...o,...e};await pe.setItem(t,d)}}async function Es(t){const e=await pe.getItem(t);if(e){await pe.removeItem(t);const o=await be(e.sessionId);o&&await Ue(e.sessionId,{messageCount:Math.max(0,o.messageCount-1)})}}const Ze={isOpen:!1,width:Math.min(Me.DRAWER_MAX_WIDTH,Math.max(Me.DRAWER_MIN_WIDTH,window.innerWidth*Me.DRAWER_DEFAULT_WIDTH_RATIO)),activeSessionId:null};function gt(){try{const t=localStorage.getItem(ge.DRAWER_STATE);if(t)return{...Ze,...JSON.parse(t)}}catch(t){console.error("[ChatStorage] Failed to get drawer state:",t)}return Ze}function bs(t){try{const o={...gt(),...t};localStorage.setItem(ge.DRAWER_STATE,JSON.stringify(o))}catch(e){console.error("[ChatStorage] Failed to set drawer state:",e)}}async function vs(){await _e.clear(),await pe.clear(),localStorage.removeItem(ge.DRAWER_STATE)}const T={createSession:xs,getSession:be,getAllSessions:Is,updateSession:Ue,deleteSession:Ms,addMessage:ys,getMessages:ht,updateMessage:ks,deleteMessage:Es,getDrawerState:gt,setDrawerState:bs,clearAllData:vs,generateId:pt,generateTitle:Ss};var Y=(t=>(t.SENDING="sending",t.STREAMING="streaming",t.SUCCESS="success",t.FAILED="failed",t))(Y||{}),se=(t=>(t.USER="user",t.ASSISTANT="assistant",t))(se||{});let ce=null;function wt(t){const e={};let o=1,d=1,g=1,i=t;return i=i.replace(/data:image\/[^;]+;base64,[A-Za-z0-9+/=]+/g,c=>{const l=`[图片${o}]`;return e[l]=c,o++,l}),i=i.replace(/data:video\/[^;]+;base64,[A-Za-z0-9+/=]+/g,c=>{const l=`[视频${d}]`;return e[l]=c,d++,l}),i=i.replace(/blob:[^\s"'<>]+/g,c=>{const l=`[媒体${g}]`;return e[l]=c,g++,l}),i=i.replace(/https?:\/\/[^\s"'<>]+\.(png|jpg|jpeg|gif|webp|svg|bmp)(\?[^\s"'<>]*)?/gi,c=>{const l=`[图片${o}]`;return e[l]=c,o++,l}),i=i.replace(/https?:\/\/[^\s"'<>]+\.(mp4|webm|mov|avi|mkv)(\?[^\s"'<>]*)?/gi,c=>{const l=`[视频${d}]`;return e[l]=c,d++,l}),{sanitized:i,urlMap:e}}function Ts(t,e){let o=t;for(const[d,g]of Object.entries(e))o=o.split(d).join(g);return o}async function Cs(t,e={}){const o={};let d=e.maxImageCount??Number.POSITIVE_INFINITY;return{geminiMessages:await Promise.all(t.filter(i=>i.status==="success"||i.status==="streaming").map(async i=>{const{sanitized:c,urlMap:l}=wt(i.content);Object.assign(o,l);const I=[{type:"text",text:c}];if(e.includeImageAttachments&&i.role===se.USER&&i.attachments&&i.attachments.length>0&&d>0){const M=await Vt(i.attachments,d);d-=M.length,I.push(...M)}return{role:i.role===se.USER?"user":"assistant",content:I}})),urlMap:o}}async function Ds(t,e,o=[],d,g,i){return Rs(t,e,o,d,g,i)}async function Rs(t,e,o=[],d,g,i){ce&&ce.abort(),ce=new AbortController;const c=ce.signal,l=Date.now().toString(),I=Date.now(),M=(typeof g=="string"?g:g==null?void 0:g.modelId)||qe.getConfig().modelName||"unknown";try{re.trackModelCall({taskId:l,taskType:"chat",model:M,promptLength:e.length,hasUploadedImage:o.length>0,startTime:I});const S=Ut("text",g),E=zt(S==null?void 0:S.binding),D=Ht(S==null?void 0:S.binding),y=Ft(o),z=Math.max(D-y,0),{geminiMessages:k,urlMap:b}=await Cs(t,{includeImageAttachments:E,maxImageCount:z}),{sanitized:H,urlMap:_}=wt(e),q={...b,..._},O=Gt(k),V=Math.max(D-O,0),j=[{type:"text",text:H}];if(E&&o.length>0&&V>0){const W=await Kt(o,V);j.push(...W)}const x=[];i&&x.push({role:"system",content:[{type:"text",text:i}]}),x.push(...k,{role:"user",content:j});let C="";if(await qe.sendChat(x,W=>{if(c.aborted)return;const ne=Ts(W,q);C=ne,d({type:"content",content:ne})},c,g||void 0),c.aborted)throw new Error("Request cancelled");const P=Date.now()-I;return re.trackModelSuccess({taskId:l,taskType:"chat",model:M,duration:P,resultSize:C.length}),d({type:"done"}),ce=null,C}catch(S){ce=null;const E=Date.now()-I;if(c.aborted||S.message==="Request cancelled"||S.name==="AbortError")throw re.trackTaskCancellation({taskId:l,taskType:"chat",duration:E}),d({type:"done"}),new Error("Request cancelled");const D=S instanceof Error?S.message:"Unknown error occurred";throw re.trackModelFailure({taskId:l,taskType:"chat",model:M,duration:E,error:D}),d({type:"error",error:D}),S}}function As(){ce&&(ce.abort(),ce=null)}function Ns(){return ce!==null}const et={sendChatMessage:Ds,stopGeneration:As,isGenerating:Ns},Pe="[[WORKFLOW_MESSAGE]]",js=["generate_image","generate_video","generate_grid_image","generate_photo_wall"];function Ls(t){var g;if(!js.includes(t.name))return t;const e={...t.arguments},o=e.model;let d=!1;if(!o)d=!0;else{const i=Bt(o),c=t.name==="generate_video";(c&&i!=="video"||!c&&i!=="image")&&(d=!0)}if(d){const i=$e.get(),c=t.name==="generate_video";let l;c?l=i.videoModelName||"veo3":l=i.imageModelName||((g=Ot[0])==null?void 0:g.id)||"gemini-2.5-flash-image-vip",e.model=l}return{...t,arguments:e}}function Ws(t){const e=[];t.aiAnalysis&&e.push(t.aiAnalysis);const o=t.steps.filter(c=>c.status==="completed"),d=t.steps.filter(c=>c.status==="failed");if(o.length>0||d.length>0){const c=[];o.length>0&&c.push(`成功执行 ${o.length} 个工具`),d.length>0&&c.push(`${d.length} 个工具执行失败`),c.length>0&&e.push(`[执行结果: ${c.join(",")}]`)}const g=t.steps.map(c=>{const l={};for(const[I,M]of Object.entries(c.args||{}))I!=="context"&&(typeof M=="string"&&M.length>200?l[I]=M.substring(0,200)+"...":l[I]=M);return{mcp:c.mcp,args:l}}),i={content:e.join(`
3
+ `)||`已完成任务: ${t.name}`,next:g};return JSON.stringify(i)}function $s(t){const e=[{type:"text",text:t.content}];if(t.attachments&&t.attachments.length>0)for(const o of t.attachments)e.push({type:"data-file",data:{filename:o.name,mediaType:o.type,url:o.data}});return{id:t.id,role:t.role===se.USER?"user":"assistant",parts:e}}function Ps(t,e){const d=t.parts.filter(c=>c.type==="text").map(c=>c.text).join(""),i=t.parts.filter(c=>c.type==="data-file").map((c,l)=>{const I=c.data;return{id:`${t.id}-att-${l}`,name:I.filename,type:I.mediaType,size:0,data:I.url,isBlob:!1}});return{id:t.id,sessionId:e,role:t.role==="user"?se.USER:se.ASSISTANT,content:d,timestamp:Date.now(),status:Y.SUCCESS,attachments:i.length>0?i:void 0}}function Us(t){return t.workflow&&t.content.startsWith(Pe)?{...t,content:Ws(t.workflow)}:t}function tt(t){return t.parts.filter(e=>e.type==="text").map(e=>e.text).join("")}us();function zs(t){const{sessionId:e,temporaryModel:o,onToolCalls:d,onWorkflowUpdate:g}=t,i=s.useRef(Xt()),c=s.useRef(d);c.current=d;const l=s.useRef(g);l.current=g;const I=s.useRef(o);I.current=o;const[M,S]=s.useState([]),[E,D]=s.useState("ready"),[y,z]=s.useState(!1),k=s.useRef(null),b=s.useRef([]),H=s.useRef(!1);s.useEffect(()=>{if(!e){S([]),b.current=[];return}(async()=>{z(!0);try{const C=await T.getMessages(e);b.current=C,S(C.map($s))}catch(C){console.error("[useChatHandler] Failed to load messages:",C),S([]),b.current=[]}finally{z(!1)}})()},[e]);const _=s.useCallback(async x=>{if(!e)return;if(H.current){console.warn("[useChatHandler] Message already being sent, ignoring duplicate call");return}H.current=!0,D("submitted");const C=Ps(x,e);await T.addMessage(C),S($=>[...$,x]);const P=await T.getSession(e);await T.updateSession(e,{updatedAt:Date.now(),messageCount:((P==null?void 0:P.messageCount)||0)+1});const W=T.generateId();k.current=W;const ne={id:W,role:"assistant",parts:[{type:"text",text:""}]};S($=>[...$,ne]),D("streaming");const ie=b.current.map(Us);ie.push(C),b.current=[...b.current,C];const X=tt(x);let Z="",le=!1;try{await et.sendChatMessage(ie.slice(0,-1),X,C.attachments||[],$=>{if($.type==="content"&&$.content)Z=$.content,S(p=>p.map(u=>u.id===W?{...u,parts:[{type:"text",text:Z}]}:u));else if($.type==="done"){const p=qt(Z),u=Jt(Z)||Z;if(p.length>0&&c.current){const U=p.map(ee=>Ls(ee)),J=async()=>{const ee=[];for(const ue of U)try{const fe=await Qt.executeTool(ue);ee.push({toolCall:ue,success:fe.success,data:fe.data,error:fe.error,taskId:fe.taskId})}catch(fe){ee.push({toolCall:ue,success:!1,error:fe.message||"工具执行失败"})}return ee},de=`${Pe}${W}`;S(ee=>ee.map(ue=>ue.id===W?{...ue,parts:[{type:"text",text:de}]}:ue)),c.current(U,W,J,u)}D("ready");const m={id:W,sessionId:e,role:se.ASSISTANT,content:p.length>0?`${Pe}${W}`:Z,timestamp:Date.now(),status:p.length>0?Y.STREAMING:Y.SUCCESS};T.addMessage(m),b.current=[...b.current,m],T.updateSession(e,{updatedAt:Date.now(),messageCount:((P==null?void 0:P.messageCount)||0)+2}),k.current=null,H.current=!1}else if($.type==="error"&&$.error){le=!0,D("error");const p=`❌ 错误: ${$.error}`;S(m=>m.map(U=>U.id===W?{...U,parts:[{type:"text",text:p}]}:U));const u={id:W,sessionId:e,role:se.ASSISTANT,content:p,timestamp:Date.now(),status:Y.FAILED,error:$.error};T.addMessage(u),b.current=[...b.current,u],k.current=null,H.current=!1}},I.current,i.current)}catch($){if($.message!=="Request cancelled"&&!le){D("error"),console.error("[useChatHandler] Stream error:",$);const p=`❌ 错误: ${$.message||"未知错误"}`;if(S(u=>u.map(m=>m.id===W?{...m,parts:[{type:"text",text:p}]}:m)),e&&W){const u={id:W,sessionId:e,role:se.ASSISTANT,content:p,timestamp:Date.now(),status:Y.FAILED,error:$.message||"未知错误"};T.addMessage(u),b.current=[...b.current,u]}}k.current=null,H.current=!1}},[e]),q=s.useCallback(async()=>{if(et.stopGeneration(),D("ready"),k.current&&e){const x=M.find(C=>C.id===k.current);if(x){const C=tt(x),P={id:x.id,sessionId:e,role:se.ASSISTANT,content:C,timestamp:Date.now(),status:Y.SUCCESS};await T.addMessage(P)}k.current=null}},[e,M]),O=s.useCallback(x=>{if(M.length<2)return;const C=[...M].reverse().findIndex(ie=>ie.role==="user");if(C===-1)return;const P=M.length-1-C,W=M[P],ne=M.slice(0,P+1);S(ne),_(W)},[M,_]),V=s.useCallback((x,C)=>{S(x),C&&(b.current=C)},[]),j=s.useCallback((x,C)=>{b.current=b.current.map(P=>P.id===x?{...P,workflow:C}:P)},[]);return{messages:M,status:E,sendMessage:_,stop:q,regenerate:O,setMessages:S,setMessagesWithRaw:V,updateRawMessageWorkflow:j,isLoading:y}}const Hs=oe.lazy(()=>ct(()=>import("./ChatMessagesArea-AG3RXe34.js").then(t=>t.C),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),st="[[WORKFLOW_MESSAGE]]";function Fs(t,e){switch(t){case"generate_image":return`生成图片: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_video":return`生成视频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_audio":return`生成音频: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_text":return`生成文本: ${((e==null?void 0:e.prompt)||"").substring(0,30)}...`;case"generate_grid_image":return`生成宫格图: ${((e==null?void 0:e.theme)||"").substring(0,30)}...`;case"canvas_insertion":return"插入到画布";case"generate_mermaid":return"生成流程图";case"generate_mindmap":return"生成思维导图";default:return`执行 ${t}`}}const nt="chat-drawer-width",Gs=Math.max(375,window.innerWidth*.5),at=375,Ks=s.forwardRef(({defaultOpen:t=!1,onOpenChange:e},o)=>{const[d,g]=s.useState(()=>T.getDrawerState().isOpen??t),[i,c]=s.useState([]),[l,I]=s.useState(null),[M,S]=s.useState(!1),[E,D]=s.useState(()=>{const a=localStorage.getItem(nt);if(a){const n=parseInt(a,10);if(!isNaN(n)&&n>=at)return Math.min(n,window.innerWidth-60)}return Gs}),[y,z]=s.useState(!1),k=s.useRef(null),[b,H]=s.useState(()=>Je("text").modelId),[_,q]=s.useState(()=>{const a=Je("text");return Ie(a.profileId,a.modelId)}),[O,V]=s.useState(new Map),j=s.useRef(null),[x,C]=s.useState(null),{executeRetry:P,selectedContent:W,setIsDrawerOpen:ne,setDrawerWidth:ie}=ps();s.useEffect(()=>{ne(d)},[d,ne]),s.useEffect(()=>{ie(E)},[E,ie]);const X=oe.useRef(null),Z=oe.useRef(null),{appState:le,setAppState:$}=Yt();s.useEffect(()=>{if(!y)return;const a=h=>{const f=window.innerWidth-h.clientX,w=Math.max(at,Math.min(f,window.innerWidth-60));D(w)},n=()=>{z(!1),localStorage.setItem(nt,String(E))};return document.addEventListener("mousemove",a),document.addEventListener("mouseup",n),document.body.style.userSelect="none",document.body.style.cursor="ew-resize",()=>{document.removeEventListener("mousemove",a),document.removeEventListener("mouseup",n),document.body.style.userSelect="",document.body.style.cursor=""}},[y,E]),s.useEffect(()=>{const a=()=>{const n=window.innerWidth-60;E>n&&D(n)};return window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[E]);const p=s.useCallback(a=>{a.preventDefault(),z(!0)},[]),u=s.useCallback(async(a,n,h,f)=>{var L,v;const A={id:`workflow-${Date.now()}`,name:"AI 智能生成",generationType:(L=a[0])!=null&&L.name.includes("video")?"video":(v=a[0])!=null&&v.name.includes("audio")?"audio":"image",prompt:f||"",aiAnalysis:f,count:a.length,steps:a.map((R,K)=>({id:`step-${K}`,mcp:R.name,status:"pending",description:Fs(R.name,R.arguments),args:R.arguments}))};V(R=>{const K=new Map(R);return K.set(n,A),K}),j.current=n,T.updateMessage(n,{workflow:A});try{const R=await h();re.track("chat_tool_execution_complete",{success:!0,resultCount:R.length}),V(K=>{const N=new Map(K),F=N.get(n);if(F){const B={...F,steps:F.steps.map((me,xe)=>{const Q=R[xe];return{...me,status:Q!=null&&Q.success?"completed":"failed",error:Q==null?void 0:Q.error,result:Q==null?void 0:Q.data}})};N.set(n,B),T.updateMessage(n,{workflow:B,status:Y.SUCCESS})}return N})}catch(R){console.error("[ChatDrawer] Tool execution failed:",R),V(K=>{const N=new Map(K),F=N.get(n);if(F){const B={...F,steps:F.steps.map(me=>({...me,status:"failed",error:R.message||"执行失败"}))};N.set(n,B),T.updateMessage(n,{workflow:B,status:Y.FAILED})}return N})}},[]),m=zs({sessionId:l,temporaryModel:_||b,onToolCalls:u}),U=s.useRef(m.sendMessage);U.current=m.sendMessage,s.useEffect(()=>{(async()=>{const n=T.getDrawerState(),h=await T.getAllSessions();c(h);let f=null;if(n.activeSessionId?(f=n.activeSessionId,I(n.activeSessionId)):h.length>0&&(f=h[0].id,I(h[0].id)),f)try{const w=await T.getMessages(f),A=new Map;for(const v of w)v.workflow&&A.set(v.id,v.workflow);V(A);const L=w.find(v=>v.workflow&&v.status===Y.STREAMING);j.current=(L==null?void 0:L.id)||null}catch(w){console.error("[ChatDrawer] Failed to load workflow messages:",w)}})()},[]),s.useEffect(()=>{T.setDrawerState({isOpen:d,activeSessionId:l})},[d,l]),s.useEffect(()=>{if(l&&ae.current){const a=ae.current;ae.current=null,setTimeout(()=>{U.current(a)},100)}},[l]),s.useEffect(()=>{if(!le.openSettings&&ae.current){const a=$e.get();if(a!=null&&a.apiKey){const n=ae.current;ae.current=null,l?setTimeout(()=>{U.current(n)},100):(async()=>{const h=await T.createSession();c(f=>[h,...f]),I(h.id),ae.current=n})()}}},[le.openSettings,l]),s.useEffect(()=>{const a=n=>{n.key==="Escape"&&d&&(g(!1),e==null||e(!1))};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[d,e]),s.useEffect(()=>{let a=null;return(async()=>{const{workflowSubmissionService:h}=await ct(async()=>{const{workflowSubmissionService:f}=await import("./workflow-submission-service-BuFuRV_m.js").then(w=>w.a);return{workflowSubmissionService:f}},__vite__mapDeps([0]),import.meta.url);a=h.subscribeToAllEvents(f=>{const w=f;V(A=>{let L=null;for(const[N,F]of A.entries())if(F.id===w.workflowId){L=N;break}if(!L)return A;const v=A.get(L);if(!v)return A;const R=new Map(A);let K;switch(w.type){case"step":{K={...v,steps:v.steps.map(N=>N.id===w.stepId?{...N,status:w.status||N.status,result:w.result??N.result,error:w.error??N.error}:N)};break}case"steps_added":{const F=(w.steps||[]).map(B=>({id:B.id,mcp:B.mcp,args:B.args,description:B.description,status:B.status}));K={...v,steps:[...v.steps,...F]};break}case"completed":case"failed":{const N=w.type==="completed"?"completed":"failed";K={...v,status:N,steps:v.steps.map(F=>{if(F.status==="running"||F.status==="pending"){const B=F.result;return B!=null&&B.taskId?F:{...F,status:N,error:w.type==="failed"?w.error:void 0}}return F})};break}default:return A}return R.set(L,K),T.updateMessage(L,{workflow:K}),R})})})().catch(h=>{console.error("[ChatDrawer] Failed to setup workflow sync:",h)}),()=>{a==null||a.unsubscribe()}},[]),s.useEffect(()=>{if(!M)return;const a=h=>{const f=h.target;f.closest(".t-dialog")===null&&X.current&&!X.current.contains(f)&&Z.current&&!Z.current.contains(f)&&S(!1)},n=setTimeout(()=>{document.addEventListener("mousedown",a)},100);return()=>{clearTimeout(n),document.removeEventListener("mousedown",a)}},[M]);const J=s.useCallback(()=>{g(a=>{const n=!a;return e==null||e(n),n})},[e]),de=s.useCallback(()=>{g(!1),e==null||e(!1)},[e]),ee=s.useCallback(async()=>{re.track("chat_session_create");const a=await T.createSession();c(n=>[a,...n]),I(a.id),S(!1),V(new Map),j.current=null,H(void 0)},[]),ue=s.useCallback(()=>{S(a=>!a)},[]),fe=s.useCallback(async a=>{re.track("chat_session_select"),I(a),S(!1),H(void 0);try{const n=await T.getMessages(a),h=new Map;for(const w of n)w.workflow&&h.set(w.id,w.workflow);V(h);const f=n.find(w=>w.workflow&&w.status===Y.STREAMING);j.current=(f==null?void 0:f.id)||null}catch(n){console.error("[ChatDrawer] Failed to load workflow messages:",n),V(new Map),j.current=null}},[]),_t=s.useCallback(async a=>{re.track("chat_session_delete"),await T.deleteSession(a),c(n=>{const h=n.filter(f=>f.id!==a);if(l===a){const f=h[0]||null;I((f==null?void 0:f.id)||null)}return h})},[l]),ve=s.useCallback(async(a,n)=>{re.track("chat_session_rename"),await T.updateSession(a,{title:n}),c(h=>h.map(f=>f.id===a?{...f,title:n}:f))},[]),ae=oe.useRef(null),Se=s.useCallback(async a=>{try{re.track("chat_message_send",{hasImages:a.parts.some(h=>h.type==="image_url")});const n=$e.get();if(!(n!=null&&n.apiKey)){ae.current=a,$({...le,openSettings:!0});return}if(ae.current=null,!l){const h=await T.createSession();c(f=>[h,...f]),I(h.id),ae.current=a;return}await m.sendMessage(a)}catch(n){console.error("[ChatDrawer] send message failed:",n),ae.current=a}},[l,m,le,$]),ze=s.useCallback(async a=>{var Xe;const{context:n,workflow:h,textModel:f,autoOpen:w=!0}=a;w&&(g(!0),e==null||e(!0)),f&&H(f);const A=await T.createSession(),L=[];n.userInstruction&&L.push(n.userInstruction),n.selection.texts.length>0&&L.push(`
4
+ 📝 选中的文本:
5
+ ${n.selection.texts.join(`
6
+ `)}`),n.selection.texts.length===0&&!n.userInstruction&&n.finalPrompt&&L.push(`
7
+ 提示词:
8
+ ${n.finalPrompt}`);const v=[],R=n.model.isExplicit?`模型: ${n.model.id}`:`模型: ${n.model.id} (默认)`;v.push(R),n.params.count>1&&v.push(`数量: ${n.params.count}`),v.length>0&&L.push(`
9
+ ---
10
+ ${v.join(" • ")}`);const K=L.join(`
11
+ `);let N="新任务";if(n.finalPrompt)N=n.finalPrompt;else if(n.selection.texts.length>0)N=n.selection.texts[0];else if(n.userInstruction){const G=n.userInstruction.indexOf(":"),te=n.userInstruction.indexOf(":"),We=G>=0&&te>=0?Math.min(G,te):Math.max(G,te);We>=0&&We<n.userInstruction.length-1?N=n.userInstruction.substring(We+1).trim():N=n.userInstruction}else n.model.id&&(N=`模型: ${n.model.id}`);const F=N;await T.updateSession(A.id,{title:F}),A.title=F,c(G=>[A,...G]),I(A.id);const B=Date.now(),me=`msg_${B}_user`,xe=[{type:"text",text:K}],Q=[...n.selection.images,...n.selection.graphics];for(let G=0;G<Q.length;G++)xe.push({type:"data-file",data:{filename:`image-${G+1}.png`,mediaType:"image/png",url:Q[G]}});for(let G=0;G<n.selection.videos.length;G++)xe.push({type:"data-file",data:{filename:`video-${G+1}.mp4`,mediaType:"video/mp4",url:n.selection.videos[G]}});const kt={id:me,role:"user",parts:xe},we=`msg_${B}_workflow`,Et={id:we,role:"assistant",parts:[{type:"text",text:`${st}${we}`}]};V(G=>{const te=new Map(G);return te.set(we,h),te}),j.current=we;const Be={id:me,sessionId:A.id,role:se.USER,content:K,timestamp:Date.now(),status:Y.SUCCESS,aiContext:n,attachments:Q.length>0||n.selection.videos.length>0?[...Q.map((G,te)=>({id:`${me}-img-${te}`,name:`image-${te+1}.png`,type:"image/png",size:0,data:G,isBlob:!1})),...n.selection.videos.map((G,te)=>({id:`${me}-vid-${te}`,name:`video-${te+1}.mp4`,type:"video/mp4",size:0,data:G,isBlob:!1}))]:void 0};await T.addMessage(Be);const Oe={id:we,sessionId:A.id,role:se.ASSISTANT,content:`${st}${we}`,timestamp:Date.now(),status:Y.STREAMING,workflow:h};await T.addMessage(Oe),(Xe=m.setMessagesWithRaw)==null||Xe.call(m,[kt,Et],[Be,Oe])},[m,e]),He=s.useCallback(async a=>{var h;let n=j.current;if(!n){for(const[f,w]of O.entries())if(w.id===a.id){n=f,j.current=f;break}}n&&(V(f=>{const w=new Map(f);return w.set(n,a),w}),T.updateMessage(n,{workflow:a}),(h=m.updateRawMessageWorkflow)==null||h.call(m,n,a))},[l,i,m,O]),Fe=s.useCallback(a=>{const n=j.current;n&&V(h=>{var A;const f=new Map(h),w=f.get(n);if(w){const L=w.logs||[],v={...w,logs:[...L,a]};f.set(n,v),T.updateMessage(n,{workflow:v}),(A=m.updateRawMessageWorkflow)==null||A.call(m,n,v)}return f})},[m]),Te=s.useRef(null),Ge=s.useCallback(a=>{const n=j.current;n&&V(h=>{const f=new Map(h),w=f.get(n);if(w){const A=w.logs||[];let L=-1;for(let R=A.length-1;R>=0;R--)if(A[R].type==="thinking"){L=R;break}let v;if(L>=0){const R=[...A],K=R[L];R[L]={...K,content:K.content+a},v={...w,logs:R}}else v={...w,logs:[...A,{type:"thinking",timestamp:Date.now(),content:a}]};f.set(n,v),Te.current&&clearTimeout(Te.current),Te.current=setTimeout(()=>{var R;T.updateMessage(n,{workflow:v}),(R=m.updateRawMessageWorkflow)==null||R.call(m,n,v)},500)}return f})},[m]),Ce=s.useCallback(async(a,n,h)=>{if(!x){re.track("chat_workflow_retry",{stepIndex:h});try{C(a),j.current=a,await P(n,h)}finally{C(null)}}},[P,x]);s.useImperativeHandle(o,()=>({open:()=>{g(!0),e==null||e(!0)},close:()=>{g(!1),e==null||e(!1)},toggle:J,sendMessage:async a=>{g(!0),e==null||e(!0);const n={id:`msg_${Date.now()}`,role:"user",parts:[{type:"text",text:a}]};await Se(n)},sendWorkflowMessage:ze,updateWorkflowMessage:He,appendAgentLog:Fe,updateThinkingContent:Ge,isOpen:()=>d,retryWorkflowFromStep:async(a,n)=>{let h=null;for(const[f,w]of O.entries())if(w.id===a.id){h=f;break}h?await Ce(h,a,n):console.warn("[ChatDrawer] Could not find message ID for workflow retry",a.id)}}),[d,J,Se,ze,He,Fe,Ge,e,O,Ce]);const St=s.useMemo(()=>({...m,sendMessage:Se}),[m,Se]),De=i.find(a=>a.id===l),he=(De==null?void 0:De.title)||"新对话",[Re,Ae]=s.useState(!1),[Ne,je]=s.useState(""),ye=s.useRef(null),xt=s.useCallback(()=>{je(he),Ae(!0)},[he]),Le=s.useCallback(async()=>{const a=Ne.trim();a&&a!==he&&l&&await ve(l,a),Ae(!1)},[Ne,he,l,ve]),Ke=s.useCallback(()=>{je(he),Ae(!1)},[he]),It=s.useCallback(a=>{a.key==="Enter"?(a.preventDefault(),Le()):a.key==="Escape"&&(a.preventDefault(),Ke())},[Le,Ke]);s.useEffect(()=>{Re&&ye.current&&(ye.current.focus(),ye.current.select())},[Re]);const Ve=s.useRef(null);fs(Ve,{enableCopy:!0,stopPropagation:!0});const[Mt,yt]=s.useState(!1);return s.useEffect(()=>{d&&yt(!0)},[d]),r.jsxs(r.Fragment,{children:[r.jsx(ut,{isOpen:d,onClick:J,drawerWidth:E}),r.jsxs("div",{className:`chat-drawer ${Zt} ${d?"chat-drawer--open":""} ${y?"chat-drawer--dragging":""}`,style:{width:E},"data-testid":"chat-drawer",children:[r.jsx("div",{ref:k,className:"chat-drawer__resize-handle",onMouseDown:p}),r.jsxs("div",{ref:Ve,className:"chat-drawer__body",children:[r.jsxs("div",{className:"chat-drawer__header",children:[r.jsxs("div",{className:"chat-drawer__header-top",children:[r.jsx(ke,{content:"关闭",children:r.jsx("button",{className:"chat-drawer__close-btn","data-track":"chat_click_drawer_close",onClick:de,"aria-label":"关闭对话",children:r.jsx(es,{size:16})})}),Re?r.jsx("input",{ref:ye,className:"chat-drawer__title-input",value:Ne,onChange:a=>je(a.target.value),onKeyDown:It,onBlur:Le,maxLength:50}):r.jsx("h2",{className:"chat-drawer__title chat-drawer__title--editable",onClick:xt,title:"点击编辑标题",children:he})]}),r.jsxs("div",{className:"chat-drawer__header-bottom",children:[r.jsx(ft,{value:b,valueRef:_,onChange:(a,n)=>{H(a),q(n||Ie(null,a))}}),r.jsxs("div",{className:"chat-drawer__session-actions",children:[r.jsx(ke,{content:"会话列表",children:r.jsx("button",{ref:Z,className:`chat-drawer__close-btn ${M?"chat-drawer__close-btn--active":""}`,"data-track":"chat_click_sessions_toggle",onClick:ue,"aria-label":"会话列表",children:r.jsx(ts,{size:16})})}),r.jsx(ke,{content:"新对话",children:r.jsx("button",{className:"chat-drawer__close-btn","data-track":"chat_click_new_session",onClick:ee,"aria-label":"新对话",children:r.jsx(rt,{size:16})})})]})]})]}),M&&r.jsx("div",{ref:X,children:r.jsx(dt,{sessions:i,activeSessionId:l,onSelectSession:fe,onNewSession:ee,onDeleteSession:_t,onRenameSession:ve})}),r.jsxs("div",{className:"chat-drawer__content",children:[Mt&&r.jsx(s.Suspense,{fallback:r.jsx("div",{className:"chat-loading chat-loading--full",children:r.jsx("div",{className:"chat-loading__spinner"})}),children:r.jsx(Hs,{handler:St,workflowMessages:O,retryingWorkflowId:x,handleWorkflowRetry:Ce})}),r.jsx(mt,{selectedContent:W,onSend:Se,placeholder:"支持连续对话"})]})]})]})]})});Ks.displayName="ChatDrawer";export{Ks as C,ft as M,dt as S,ut as a,lt as b};