libre-webui 0.18.0 → 0.19.1

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 (371) hide show
  1. package/README.md +30 -17
  2. package/backend/dist/db.d.ts.map +1 -1
  3. package/backend/dist/db.js +45 -0
  4. package/backend/dist/db.js.map +1 -1
  5. package/backend/dist/index.d.ts.map +1 -1
  6. package/backend/dist/index.js +33 -9
  7. package/backend/dist/index.js.map +1 -1
  8. package/backend/dist/middleware/auth.d.ts.map +1 -1
  9. package/backend/dist/middleware/index.d.ts.map +1 -1
  10. package/backend/dist/models/personaModel.d.ts.map +1 -1
  11. package/backend/dist/models/personaModel.js.map +1 -1
  12. package/backend/dist/models/userModel.d.ts +3 -2
  13. package/backend/dist/models/userModel.d.ts.map +1 -1
  14. package/backend/dist/models/userModel.js +5 -2
  15. package/backend/dist/models/userModel.js.map +1 -1
  16. package/backend/dist/routes/agentCli.d.ts.map +1 -1
  17. package/backend/dist/routes/agentCli.js +2 -2
  18. package/backend/dist/routes/agentCli.js.map +1 -1
  19. package/backend/dist/routes/auth.d.ts.map +1 -1
  20. package/backend/dist/routes/auth.js +73 -23
  21. package/backend/dist/routes/auth.js.map +1 -1
  22. package/backend/dist/routes/chat.d.ts.map +1 -1
  23. package/backend/dist/routes/chat.js +103 -2
  24. package/backend/dist/routes/chat.js.map +1 -1
  25. package/backend/dist/routes/documents.d.ts.map +1 -1
  26. package/backend/dist/routes/documents.js +130 -0
  27. package/backend/dist/routes/documents.js.map +1 -1
  28. package/backend/dist/routes/embeddings.d.ts.map +1 -1
  29. package/backend/dist/routes/huggingfaceHub.d.ts.map +1 -1
  30. package/backend/dist/routes/imageGen.d.ts.map +1 -1
  31. package/backend/dist/routes/libreClaw.d.ts.map +1 -1
  32. package/backend/dist/routes/media.d.ts.map +1 -1
  33. package/backend/dist/routes/notes.d.ts +3 -0
  34. package/backend/dist/routes/notes.d.ts.map +1 -0
  35. package/backend/dist/routes/notes.js +121 -0
  36. package/backend/dist/routes/notes.js.map +1 -0
  37. package/backend/dist/routes/ollama.d.ts.map +1 -1
  38. package/backend/dist/routes/ollama.js +2 -2
  39. package/backend/dist/routes/ollama.js.map +1 -1
  40. package/backend/dist/routes/personas.d.ts.map +1 -1
  41. package/backend/dist/routes/plugins.d.ts.map +1 -1
  42. package/backend/dist/routes/preferences.d.ts.map +1 -1
  43. package/backend/dist/routes/systemDiagnostics.d.ts.map +1 -1
  44. package/backend/dist/routes/tts.d.ts.map +1 -1
  45. package/backend/dist/routes/users.d.ts.map +1 -1
  46. package/backend/dist/routes/users.js +21 -0
  47. package/backend/dist/routes/users.js.map +1 -1
  48. package/backend/dist/routes/work.d.ts.map +1 -1
  49. package/backend/dist/services/agentCliService.d.ts +37 -4
  50. package/backend/dist/services/agentCliService.d.ts.map +1 -1
  51. package/backend/dist/services/agentCliService.js +229 -10
  52. package/backend/dist/services/agentCliService.js.map +1 -1
  53. package/backend/dist/services/assistantCompletionService.d.ts.map +1 -1
  54. package/backend/dist/services/authService.d.ts.map +1 -1
  55. package/backend/dist/services/authService.js +6 -1
  56. package/backend/dist/services/authService.js.map +1 -1
  57. package/backend/dist/services/chatGenerationService.d.ts.map +1 -1
  58. package/backend/dist/services/chatGenerationService.js +3 -3
  59. package/backend/dist/services/chatGenerationService.js.map +1 -1
  60. package/backend/dist/services/chatRequestService.d.ts.map +1 -1
  61. package/backend/dist/services/chatService.d.ts +6 -1
  62. package/backend/dist/services/chatService.d.ts.map +1 -1
  63. package/backend/dist/services/chatService.js +54 -1
  64. package/backend/dist/services/chatService.js.map +1 -1
  65. package/backend/dist/services/codexOAuthService.d.ts +22 -0
  66. package/backend/dist/services/codexOAuthService.d.ts.map +1 -0
  67. package/backend/dist/services/codexOAuthService.js +176 -0
  68. package/backend/dist/services/codexOAuthService.js.map +1 -0
  69. package/backend/dist/services/documentService.d.ts +7 -1
  70. package/backend/dist/services/documentService.d.ts.map +1 -1
  71. package/backend/dist/services/documentService.js +24 -11
  72. package/backend/dist/services/documentService.js.map +1 -1
  73. package/backend/dist/services/embeddingService.d.ts.map +1 -1
  74. package/backend/dist/services/encryptionService.d.ts.map +1 -1
  75. package/backend/dist/services/encryptionService.js.map +1 -1
  76. package/backend/dist/services/followUpService.d.ts +44 -0
  77. package/backend/dist/services/followUpService.d.ts.map +1 -0
  78. package/backend/dist/services/followUpService.js +123 -0
  79. package/backend/dist/services/followUpService.js.map +1 -0
  80. package/backend/dist/services/galleryService.d.ts.map +1 -1
  81. package/backend/dist/services/galleryService.js.map +1 -1
  82. package/backend/dist/services/libreClawService.d.ts.map +1 -1
  83. package/backend/dist/services/mediaGenerationJobService.d.ts.map +1 -1
  84. package/backend/dist/services/mediaGenerationJobService.js.map +1 -1
  85. package/backend/dist/services/memoryService.d.ts.map +1 -1
  86. package/backend/dist/services/memoryService.js.map +1 -1
  87. package/backend/dist/services/mutationEngineService.d.ts.map +1 -1
  88. package/backend/dist/services/oauthSecurity.d.ts +14 -0
  89. package/backend/dist/services/oauthSecurity.d.ts.map +1 -0
  90. package/backend/dist/services/oauthSecurity.js +101 -0
  91. package/backend/dist/services/oauthSecurity.js.map +1 -0
  92. package/backend/dist/services/ollamaService.d.ts +8 -2
  93. package/backend/dist/services/ollamaService.d.ts.map +1 -1
  94. package/backend/dist/services/ollamaService.js +40 -2
  95. package/backend/dist/services/ollamaService.js.map +1 -1
  96. package/backend/dist/services/personaService.d.ts.map +1 -1
  97. package/backend/dist/services/personaService.js.map +1 -1
  98. package/backend/dist/services/pluginActivationService.d.ts.map +1 -1
  99. package/backend/dist/services/pluginActivationService.js.map +1 -1
  100. package/backend/dist/services/pluginAudioGenerationService.d.ts.map +1 -1
  101. package/backend/dist/services/pluginAudioGenerationService.js.map +1 -1
  102. package/backend/dist/services/pluginCapabilityRegistryService.d.ts.map +1 -1
  103. package/backend/dist/services/pluginCapabilityRegistryService.js.map +1 -1
  104. package/backend/dist/services/pluginCredentialsService.d.ts.map +1 -1
  105. package/backend/dist/services/pluginEmbeddingService.d.ts.map +1 -1
  106. package/backend/dist/services/pluginEmbeddingService.js.map +1 -1
  107. package/backend/dist/services/pluginImageGenerationService.d.ts.map +1 -1
  108. package/backend/dist/services/pluginImageGenerationService.js.map +1 -1
  109. package/backend/dist/services/pluginService.d.ts +5 -0
  110. package/backend/dist/services/pluginService.d.ts.map +1 -1
  111. package/backend/dist/services/pluginService.js +53 -4
  112. package/backend/dist/services/pluginService.js.map +1 -1
  113. package/backend/dist/services/pluginTTSService.d.ts.map +1 -1
  114. package/backend/dist/services/pluginTTSService.js.map +1 -1
  115. package/backend/dist/services/pluginUsageService.d.ts +18 -0
  116. package/backend/dist/services/pluginUsageService.d.ts.map +1 -1
  117. package/backend/dist/services/pluginUsageService.js +53 -0
  118. package/backend/dist/services/pluginUsageService.js.map +1 -1
  119. package/backend/dist/services/pluginVariablesService.d.ts.map +1 -1
  120. package/backend/dist/services/pluginVariablesService.js.map +1 -1
  121. package/backend/dist/services/pluginVideoGenerationService.d.ts.map +1 -1
  122. package/backend/dist/services/pluginVideoGenerationService.js.map +1 -1
  123. package/backend/dist/services/preferencesService.d.ts.map +1 -1
  124. package/backend/dist/services/preferencesService.js +1 -0
  125. package/backend/dist/services/preferencesService.js.map +1 -1
  126. package/backend/dist/services/registrationPolicy.d.ts +3 -3
  127. package/backend/dist/services/registrationPolicy.d.ts.map +1 -1
  128. package/backend/dist/services/registrationPolicy.js +4 -4
  129. package/backend/dist/services/registrationPolicy.js.map +1 -1
  130. package/backend/dist/services/simpleGitHubOAuth.d.ts +1 -1
  131. package/backend/dist/services/simpleGitHubOAuth.d.ts.map +1 -1
  132. package/backend/dist/services/simpleGitHubOAuth.js +5 -1
  133. package/backend/dist/services/simpleGitHubOAuth.js.map +1 -1
  134. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts +1 -1
  135. package/backend/dist/services/simpleHuggingFaceOAuth.d.ts.map +1 -1
  136. package/backend/dist/services/simpleHuggingFaceOAuth.js +5 -5
  137. package/backend/dist/services/simpleHuggingFaceOAuth.js.map +1 -1
  138. package/backend/dist/services/systemDiagnosticsService.d.ts.map +1 -1
  139. package/backend/dist/services/systemDiagnosticsService.js.map +1 -1
  140. package/backend/dist/services/titleGenerationService.d.ts.map +1 -1
  141. package/backend/dist/services/turnstileService.d.ts.map +1 -1
  142. package/backend/dist/services/userService.d.ts +1 -0
  143. package/backend/dist/services/userService.js +1 -1
  144. package/backend/dist/services/workAgentService.d.ts.map +1 -1
  145. package/backend/dist/services/workAgentService.js.map +1 -1
  146. package/backend/dist/services/workEventService.d.ts.map +1 -1
  147. package/backend/dist/services/workEventService.js.map +1 -1
  148. package/backend/dist/services/workHostWorkspaceService.d.ts.map +1 -1
  149. package/backend/dist/services/workModelProviderService.d.ts.map +1 -1
  150. package/backend/dist/services/workModelProviderService.js +30 -6
  151. package/backend/dist/services/workModelProviderService.js.map +1 -1
  152. package/backend/dist/services/workPreviewProxyService.d.ts.map +1 -1
  153. package/backend/dist/services/workPreviewProxyService.js.map +1 -1
  154. package/backend/dist/services/workRuntimeService.d.ts +6 -6
  155. package/backend/dist/services/workRuntimeService.d.ts.map +1 -1
  156. package/backend/dist/services/workRuntimeService.js.map +1 -1
  157. package/backend/dist/services/workTaskService.d.ts.map +1 -1
  158. package/backend/dist/services/workTaskService.js.map +1 -1
  159. package/backend/dist/services/workTerminalService.d.ts +1 -1
  160. package/backend/dist/services/workTerminalService.d.ts.map +1 -1
  161. package/backend/dist/services/workTerminalService.js.map +1 -1
  162. package/backend/dist/storage.d.ts +12 -1
  163. package/backend/dist/storage.d.ts.map +1 -1
  164. package/backend/dist/storage.js +183 -9
  165. package/backend/dist/storage.js.map +1 -1
  166. package/backend/dist/storageMappers.d.ts +13 -0
  167. package/backend/dist/storageMappers.d.ts.map +1 -1
  168. package/backend/dist/storageMappers.js +5 -0
  169. package/backend/dist/storageMappers.js.map +1 -1
  170. package/backend/dist/types/index.d.ts +29 -0
  171. package/backend/dist/types/index.d.ts.map +1 -1
  172. package/backend/dist/types/index.js.map +1 -1
  173. package/backend/dist/utils/chatContext.js.map +1 -1
  174. package/backend/dist/utils/chatDocumentContext.d.ts.map +1 -1
  175. package/backend/dist/utils/chatDocumentContext.js +6 -1
  176. package/backend/dist/utils/chatDocumentContext.js.map +1 -1
  177. package/backend/dist/utils/chatProviderSelection.d.ts.map +1 -1
  178. package/backend/dist/utils/generationUtils.d.ts.map +1 -1
  179. package/backend/dist/utils/hash.d.ts.map +1 -1
  180. package/backend/dist/utils/hash.js +13 -2
  181. package/backend/dist/utils/hash.js.map +1 -1
  182. package/backend/dist/utils/logger.d.ts +1 -1
  183. package/backend/dist/utils/logger.d.ts.map +1 -1
  184. package/backend/dist/utils/ollamaStreaming.d.ts +6 -2
  185. package/backend/dist/utils/ollamaStreaming.d.ts.map +1 -1
  186. package/backend/dist/utils/ollamaStreaming.js +12 -2
  187. package/backend/dist/utils/ollamaStreaming.js.map +1 -1
  188. package/backend/dist/utils/openAIResponsesAdapter.js.map +1 -1
  189. package/backend/dist/utils/packagePaths.js.map +1 -1
  190. package/backend/dist/utils/pluginChatAdapter.d.ts.map +1 -1
  191. package/backend/dist/utils/pluginChatAdapter.js +11 -4
  192. package/backend/dist/utils/pluginChatAdapter.js.map +1 -1
  193. package/backend/dist/utils/pluginChatContext.js.map +1 -1
  194. package/backend/dist/utils/pluginDefinitionTrust.d.ts.map +1 -1
  195. package/backend/dist/utils/pluginDefinitionTrust.js +1 -0
  196. package/backend/dist/utils/pluginDefinitionTrust.js.map +1 -1
  197. package/backend/dist/utils/pluginStreamAdapter.d.ts +10 -1
  198. package/backend/dist/utils/pluginStreamAdapter.d.ts.map +1 -1
  199. package/backend/dist/utils/pluginStreamAdapter.js +30 -23
  200. package/backend/dist/utils/pluginStreamAdapter.js.map +1 -1
  201. package/backend/dist/utils/pluginValidation.d.ts +1 -1
  202. package/backend/dist/utils/pluginValidation.d.ts.map +1 -1
  203. package/backend/dist/utils/pluginValidation.js +17 -0
  204. package/backend/dist/utils/pluginValidation.js.map +1 -1
  205. package/backend/dist/utils/resourceLimits.d.ts +10 -0
  206. package/backend/dist/utils/resourceLimits.d.ts.map +1 -0
  207. package/backend/dist/utils/resourceLimits.js +29 -0
  208. package/backend/dist/utils/resourceLimits.js.map +1 -0
  209. package/backend/dist/utils/thinkingPhaseTimer.d.ts +21 -0
  210. package/backend/dist/utils/thinkingPhaseTimer.d.ts.map +1 -0
  211. package/backend/dist/utils/thinkingPhaseTimer.js +84 -0
  212. package/backend/dist/utils/thinkingPhaseTimer.js.map +1 -0
  213. package/backend/dist/utils/webpageFetcher.d.ts +25 -0
  214. package/backend/dist/utils/webpageFetcher.d.ts.map +1 -0
  215. package/backend/dist/utils/webpageFetcher.js +231 -0
  216. package/backend/dist/utils/webpageFetcher.js.map +1 -0
  217. package/backend/dist/utils/websocketMessages.js.map +1 -1
  218. package/backend/dist/websocketServer.d.ts.map +1 -1
  219. package/backend/dist/websocketServer.js +2 -1
  220. package/backend/dist/websocketServer.js.map +1 -1
  221. package/backend/package.json +8 -7
  222. package/bin/cli.js +2 -2
  223. package/frontend/dist/assets/index-BA116EVY.js +11 -0
  224. package/frontend/dist/assets/index-CFhy8YLA.css +1 -0
  225. package/frontend/dist/assets/markdown-math-ClQbWekD.css +1 -0
  226. package/frontend/dist/assets/xterm-DHcfr8qj.css +1 -0
  227. package/frontend/dist/index.html +21 -16
  228. package/frontend/dist/js/ArtifactContainer-CBTr5mSK.js +1 -0
  229. package/frontend/dist/js/{ArtifactDemoPage-BWN0MWCx.js → ArtifactDemoPage-0BLd-m3N.js} +1 -1
  230. package/frontend/dist/js/ArtifactSlideOutPanel-DjGIUKtP.js +1 -0
  231. package/frontend/dist/js/{Button-CRwzOaDZ.js → Button-X9TT9gTD.js} +1 -1
  232. package/frontend/dist/js/ChatPage-BgLadsgU.js +16 -0
  233. package/frontend/dist/js/FirstTimeSetup-CZKfjAkx.js +1 -0
  234. package/frontend/dist/js/GalleryPage-DH-KEeIZ.js +1 -0
  235. package/frontend/dist/js/HomePage-C4TJCwU6.js +1 -0
  236. package/frontend/dist/js/LibreClawPage-B_eC8oQo.js +1 -0
  237. package/frontend/dist/js/{ModelManagerModals-C2rwHd01.js → ModelManagerModals-D9j9RECi.js} +1 -1
  238. package/frontend/dist/js/ModelSelector-DwhKmtQx.js +1 -0
  239. package/frontend/dist/js/ModelsPage-DQm2DgF3.js +2 -0
  240. package/frontend/dist/js/NotesPage-pNuo3BZp.js +1 -0
  241. package/frontend/dist/js/{OptimizedSyntaxHighlighter-Ci9sRc78.js → OptimizedSyntaxHighlighter-CWYUn9Oe.js} +1 -1
  242. package/frontend/dist/js/PersonasPage-DpHCAyoD.js +13 -0
  243. package/frontend/dist/js/PluginUsagePage-Cd5MJbLi.js +1 -0
  244. package/frontend/dist/js/{RichMessageContent-nAEaPTpH.js → RichMessageContent-B1bidjA8.js} +3 -3
  245. package/frontend/dist/js/SettingsModal-ZbZKdZcC.js +1 -0
  246. package/frontend/dist/js/SystemPage-CUfqMR-l.js +1 -0
  247. package/frontend/dist/js/UserManagementPage-5ZGnsxNF.js +1 -0
  248. package/frontend/dist/js/WorkPage-ShAy19E2.js +5 -0
  249. package/frontend/dist/js/addon-fit-DIOBYJe3.js +1 -0
  250. package/frontend/dist/js/api-CI1Inz7g.js +19 -0
  251. package/frontend/dist/js/appStore-wGpPGj47.js +2 -0
  252. package/frontend/dist/js/ar-ONXFvOB1.js +2 -0
  253. package/frontend/dist/js/artifactHtml-C0Hu9I1u.js +41 -0
  254. package/frontend/dist/js/authStore-D-d7UIpv.js +3 -0
  255. package/frontend/dist/js/babel-CmENXdZw.js +16 -0
  256. package/frontend/dist/js/bn-BLhREPm6.js +2 -0
  257. package/frontend/dist/js/chatStore-BaX22w_g.js +2 -0
  258. package/frontend/dist/js/cs-Bg8E9fG5.js +2 -0
  259. package/frontend/dist/js/da-ODCU8w4x.js +2 -0
  260. package/frontend/dist/js/de-nuGHRJ5N.js +2 -0
  261. package/frontend/dist/js/es-DcN_cwum.js +2 -0
  262. package/frontend/dist/js/estree-vPoIgYRx.js +44 -0
  263. package/frontend/dist/js/fr-C-L_xGr5.js +2 -0
  264. package/frontend/dist/js/hi-DUEtwA9G.js +2 -0
  265. package/frontend/dist/js/html-_taODyXh.js +25 -0
  266. package/frontend/dist/js/i18n-xir4Zz7C.js +2 -0
  267. package/frontend/dist/js/i18next-DgmgtwsV.js +1 -0
  268. package/frontend/dist/js/id-DNTYhti_.js +2 -0
  269. package/frontend/dist/js/imageGenModels-Dx_QMLJQ.js +1 -0
  270. package/frontend/dist/js/is-Bx28ymbQ.js +2 -0
  271. package/frontend/dist/js/it-BjW-JLlS.js +2 -0
  272. package/frontend/dist/js/ja-uThj4Q1w.js +2 -0
  273. package/frontend/dist/js/ko-DqgmMYXK.js +2 -0
  274. package/frontend/dist/js/logger-DSXjF4ye.js +1 -0
  275. package/frontend/dist/js/markdown-CLKggXc3.js +70 -0
  276. package/frontend/dist/js/markdown-core-DHnR5Hw8.js +16 -0
  277. package/frontend/dist/js/markdown-math-B7FlYsmr.js +261 -0
  278. package/frontend/dist/js/messageCodeStyles-B0BoOSOR.js +2 -0
  279. package/frontend/dist/js/ms-R9kt_P0T.js +2 -0
  280. package/frontend/dist/js/nl-BjmtEgpK.js +2 -0
  281. package/frontend/dist/js/pl-C8_gU9r1.js +2 -0
  282. package/frontend/dist/js/postcss-B5WIGhAY.js +62 -0
  283. package/frontend/dist/js/pt-7BJForUD.js +2 -0
  284. package/frontend/dist/js/react-vendor-DPNXrO-8.js +9 -0
  285. package/frontend/dist/js/{rolldown-runtime-QTnfLwEv.js → rolldown-runtime-hePW80VL.js} +1 -1
  286. package/frontend/dist/js/router-vendor-Ca9zqOqT.js +1 -0
  287. package/frontend/dist/js/ru-D2HmhY6Y.js +2 -0
  288. package/frontend/dist/js/{standalone-C0NjJpWr.js → standalone-53qXRmN5.js} +8 -8
  289. package/frontend/dist/js/sv-zny3sDBM.js +2 -0
  290. package/frontend/dist/js/syntax-highlight-Ca9bHsaz.js +8 -0
  291. package/frontend/dist/js/th-CAzEKRz8.js +2 -0
  292. package/frontend/dist/js/tr-BmYgtmUo.js +2 -0
  293. package/frontend/dist/js/{typescript-d0TUM2-0.js → typescript-C6-ED_Fw.js} +10 -10
  294. package/frontend/dist/js/ui-BXTx1csA.js +2 -0
  295. package/frontend/dist/js/ui-vendor-D_pYT79f.js +177 -0
  296. package/frontend/dist/js/uk-eiYZ0uRq.js +2 -0
  297. package/frontend/dist/js/useTranslation-CdeLZqSW.js +1 -0
  298. package/frontend/dist/js/utils-BhpNrGnR.js +1 -0
  299. package/frontend/dist/js/utils-vendor-1zob7nK9.js +9 -0
  300. package/frontend/dist/js/vi-C7SVAWpO.js +2 -0
  301. package/frontend/dist/js/welcomePrompts-to5mv_gx.js +1 -0
  302. package/frontend/dist/js/xterm-Da5ppSVt.js +18 -0
  303. package/frontend/dist/js/{yaml-mLy9chOK.js → yaml-QD4znPfZ.js} +20 -20
  304. package/frontend/dist/js/zh-2Q3cQv3s.js +2 -0
  305. package/package.json +19 -12
  306. package/plugins/codex-oauth.json +19 -0
  307. package/frontend/dist/assets/index-ChhWhug2.css +0 -1
  308. package/frontend/dist/assets/index-CmZntyR1.js +0 -3
  309. package/frontend/dist/assets/markdown-math-CYlHEDRF.css +0 -1
  310. package/frontend/dist/assets/xterm-CmMoOwwu.css +0 -1
  311. package/frontend/dist/js/ArtifactContainer-CBAbdoIJ.js +0 -1
  312. package/frontend/dist/js/ArtifactSlideOutPanel-D-AvYkfk.js +0 -1
  313. package/frontend/dist/js/ChatPage-w2FkF_fE.js +0 -16
  314. package/frontend/dist/js/FirstTimeSetup-CzBxl7UH.js +0 -1
  315. package/frontend/dist/js/GalleryPage-Cv8pniRW.js +0 -1
  316. package/frontend/dist/js/HomePage-Vyj4ndU4.js +0 -1
  317. package/frontend/dist/js/LibreClawPage-CYhLgQB-.js +0 -1
  318. package/frontend/dist/js/ModelSelector-D7kDjZV9.js +0 -1
  319. package/frontend/dist/js/ModelsPage-BnUddkrs.js +0 -2
  320. package/frontend/dist/js/PersonasPage-BL5XlrEm.js +0 -13
  321. package/frontend/dist/js/PluginUsagePage-BXqweCCs.js +0 -1
  322. package/frontend/dist/js/SettingsModal-DZYCI5-y.js +0 -1
  323. package/frontend/dist/js/SystemPage-jdHYfn9A.js +0 -1
  324. package/frontend/dist/js/UserManagementPage-BpOnt6os.js +0 -1
  325. package/frontend/dist/js/WorkPage-DAp1T1dl.js +0 -5
  326. package/frontend/dist/js/addon-fit-Cj0_dfHF.js +0 -1
  327. package/frontend/dist/js/api-BCqWXjZI.js +0 -19
  328. package/frontend/dist/js/appStore-CDM6V5ny.js +0 -2
  329. package/frontend/dist/js/ar-DS8gs8WK.js +0 -2
  330. package/frontend/dist/js/artifactHtml-B7Oy2e__.js +0 -27
  331. package/frontend/dist/js/authStore-Bl5ofD_h.js +0 -4
  332. package/frontend/dist/js/babel-BnLuavNv.js +0 -16
  333. package/frontend/dist/js/bn-CrMPJwTR.js +0 -2
  334. package/frontend/dist/js/cs-BL116Ezu.js +0 -2
  335. package/frontend/dist/js/da-TDNaKzqy.js +0 -2
  336. package/frontend/dist/js/de-DkIqdAB5.js +0 -2
  337. package/frontend/dist/js/demoMode-BhEpMVh5.js +0 -1
  338. package/frontend/dist/js/es-CHRXt6Fd.js +0 -2
  339. package/frontend/dist/js/estree-BFya-bSu.js +0 -44
  340. package/frontend/dist/js/fr-8715yUKq.js +0 -2
  341. package/frontend/dist/js/hi-C2O08SBU.js +0 -2
  342. package/frontend/dist/js/html-DJot0Wwf.js +0 -25
  343. package/frontend/dist/js/id-Dq7UXUEV.js +0 -2
  344. package/frontend/dist/js/is-B3dbbhSl.js +0 -2
  345. package/frontend/dist/js/it-CLSuu2K7.js +0 -2
  346. package/frontend/dist/js/ja-CthrqyCR.js +0 -2
  347. package/frontend/dist/js/ko-BJvFDJ82.js +0 -2
  348. package/frontend/dist/js/logger-DbNs3-DK.js +0 -1
  349. package/frontend/dist/js/markdown-CXwWsPYG.js +0 -70
  350. package/frontend/dist/js/markdown-core-GI9BPwrB.js +0 -16
  351. package/frontend/dist/js/markdown-math-E4O1gcxj.js +0 -261
  352. package/frontend/dist/js/ms-QV0202Mj.js +0 -2
  353. package/frontend/dist/js/nl-Dob1m1pV.js +0 -2
  354. package/frontend/dist/js/pl-urfOKnYI.js +0 -2
  355. package/frontend/dist/js/postcss-DSDkwgFE.js +0 -62
  356. package/frontend/dist/js/pt-D52Xkpi0.js +0 -2
  357. package/frontend/dist/js/react-vendor-DyG_ODzn.js +0 -9
  358. package/frontend/dist/js/router-vendor-BjDI9mRe.js +0 -1
  359. package/frontend/dist/js/ru-CwnW9Xe2.js +0 -2
  360. package/frontend/dist/js/sv-BNclj-Fo.js +0 -2
  361. package/frontend/dist/js/syntax-highlight-pM1xnNpY.js +0 -8
  362. package/frontend/dist/js/th-BlQ4PL57.js +0 -2
  363. package/frontend/dist/js/tr-B80aZ1px.js +0 -2
  364. package/frontend/dist/js/ui-vendor-ChfdHf5M.js +0 -177
  365. package/frontend/dist/js/uk-DZuuaI56.js +0 -2
  366. package/frontend/dist/js/useTranslation-Cs6iTP4m.js +0 -1
  367. package/frontend/dist/js/utils-DmZD5uA3.js +0 -1
  368. package/frontend/dist/js/utils-vendor-Cbaj0BC5.js +0 -9
  369. package/frontend/dist/js/vi-Bg42fPfF.js +0 -2
  370. package/frontend/dist/js/xterm-DKl1QLiw.js +0 -7
  371. package/frontend/dist/js/zh-BSt87zs6.js +0 -2
@@ -1 +0,0 @@
1
- @font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2)format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff)format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2)format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff)format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2)format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff)format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2)format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff)format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2)format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff)format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2)format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff)format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2)format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff)format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2)format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff)format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2)format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff)format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2)format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff)format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2)format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff)format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2)format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff)format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2)format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff)format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2)format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff)format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2)format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff)format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2)format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff)format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2)format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff)format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC)format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff)format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2)format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff)format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf)format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2)format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff)format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf)format("truetype")}.katex{text-indent:0;text-rendering:auto;font:1.21em/1.2 KaTeX_Main,Times New Roman,serif;position:relative}.katex *{border-color:currentColor;-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.17.0"}.katex .katex-mathml{clip-path:inset(50%);border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{white-space:nowrap;width:min-content;position:relative}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;table-layout:fixed;display:inline-table}.katex .vlist-r{display:table-row}.katex .vlist{vertical-align:bottom;display:table-cell;position:relative}.katex .vlist>span{height:0;display:block;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{width:0;overflow:hidden}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{vertical-align:bottom;width:2px;min-width:2px;font-size:1px;display:table-cell}.katex .vbox{flex-direction:column;align-items:baseline;display:inline-flex}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{flex-direction:row;display:inline-flex}.katex .thinbox{width:0;max-width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;width:100%;display:inline-block}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{line-height:0;display:inline}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;width:100%;display:inline-block}.katex .hdashline{border-bottom-style:dashed;width:100%;display:inline-block}.katex .sqrt>.root{margin-left:.277778em;margin-right:-.555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.833333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.714286em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.857143em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14286em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71429em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96286em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55429em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.416667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.583333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.833333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.347222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.416667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.486111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.694444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.833333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44028em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.289352em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.347222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.405093em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.520833em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.578704em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.694444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.833333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.289296em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.385728em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.433944em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.578592em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.694311em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.833173em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.200965em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.241158em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.281351em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.321543em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.361736em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.401929em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.482315em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.694534em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.833601em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{width:.12em;display:inline-block}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{min-width:1px;display:inline-block}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;height:inherit;width:100%;display:block;position:absolute}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;min-width:0;max-width:none;min-height:0;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{width:50.2%;position:absolute;left:0;overflow:hidden}.katex .halfarrow-right{width:50.2%;position:absolute;right:0;overflow:hidden}.katex .brace-left{width:25.1%;position:absolute;left:0;overflow:hidden}.katex .brace-center{width:50%;position:absolute;left:25%;overflow:hidden}.katex .brace-right{width:25.1%;position:absolute;right:0;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{box-sizing:border-box;border-top:.049em solid;border-right:.049em solid;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{text-align:left;display:inline-block;position:absolute;right:calc(50% + .3em)}.katex .cd-label-right{text-align:right;display:inline-block;position:absolute;left:calc(50% + .3em)}.katex-display{text-align:center;margin:1em 0;display:block}.katex-display>.katex{text-align:center;white-space:nowrap;display:block}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left;padding-left:2em}body{counter-reset:katexEqnNo mmlEqnNo}
@@ -1 +0,0 @@
1
- .xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;top:0;bottom:0;left:0;right:0}.xterm .xterm-accessibility-tree:not(.debug) ::-moz-selection{color:#0000}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{d as t,f as n}from"./markdown-core-GI9BPwrB.js";import{t as r}from"./useTranslation-Cs6iTP4m.js";import{Et as i,H as a,Pt as o,Xt as s,bt as c,cn as l,mt as u,rt as d,wt as f,xt as p,yt as m}from"./ui-vendor-ChfdHf5M.js";import{t as h}from"./logger-DbNs3-DK.js";import{t as g}from"./utils-DmZD5uA3.js";import{t as _}from"./appStore-CDM6V5ny.js";import{t as v}from"./Button-CRwzOaDZ.js";import{t as y}from"./OptimizedSyntaxHighlighter-Ci9sRc78.js";import{n as b,r as x,t as S}from"./artifactHtml-B7Oy2e__.js";var C=e(n(),1),w=t(),T=h(`components:artifact-renderer`),E=({artifact:e,className:t})=>{let{t:n}=r(),[h,E]=(0,C.useState)(!1),[D,O]=(0,C.useState)(`preview`),k=(0,C.useRef)(null),{theme:A,openArtifactPanel:j}=_(),M=async e=>{try{await navigator.clipboard.writeText(e),E(!0),setTimeout(()=>E(!1),2e3)}catch(e){T.error(`Failed to copy:`,e)}},N=()=>{let t=e.type===`html`?x(e.content,e.title):e.content,n=new Blob([t],{type:P(e.type)}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`${e.title}.${F(e.type)}`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},P=e=>{switch(e){case`html`:return`text/html`;case`react`:return`text/javascript`;case`svg`:return`image/svg+xml`;case`css`:return`text/css`;case`json`:return`application/json`;default:return`text/plain`}},F=e=>{switch(e){case`html`:return`html`;case`react`:return`jsx`;case`svg`:return`svg`;case`css`:return`css`;case`json`:return`json`;default:return`txt`}},I=()=>{switch(e.type){case`html`:return(0,w.jsx)(d,{className:`h-4 w-4`});case`react`:return(0,w.jsx)(i,{className:`h-4 w-4`});case`svg`:return(0,w.jsx)(u,{className:`h-4 w-4`});case`code`:return(0,w.jsx)(i,{className:`h-4 w-4`});default:return(0,w.jsx)(u,{className:`h-4 w-4`})}},L=()=>(0,w.jsx)(`div`,{"data-testid":`artifact-html-fallback`,className:`w-full h-64 sm:h-80 lg:h-96 flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg border border-gray-200 dark:border-dark-200 p-4`,children:(0,w.jsxs)(`div`,{className:`max-w-sm text-center`,children:[(0,w.jsx)(s,{className:`h-8 w-8 text-primary-500 mx-auto mb-3`}),(0,w.jsx)(`p`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100`,children:n(`artifacts.previewUnavailable`)}),(0,w.jsx)(`p`,{className:`mt-1 text-sm text-gray-600 dark:text-gray-400`,children:n(`artifacts.previewUnavailableDescription`)}),(0,w.jsxs)(v,{variant:`outline`,size:`sm`,onClick:()=>O(`code`),className:`mt-4`,children:[(0,w.jsx)(l,{className:`h-3.5 w-3.5 mr-1.5`}),n(`artifacts.code`)]})]})}),R=()=>e.content.trim()?(0,w.jsx)(`iframe`,{ref:k,"data-testid":`artifact-html-preview`,srcDoc:x(e.content,e.title),className:`w-full h-64 sm:h-80 lg:h-96 border-0 rounded-lg`,sandbox:b,allow:S,allowFullScreen:!0,title:e.title}):L(),z=()=>{try{return(0,w.jsx)(`div`,{className:`w-full h-64 sm:h-80 lg:h-96 flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg overflow-hidden border border-gray-200 dark:border-dark-200`,dangerouslySetInnerHTML:{__html:e.content}})}catch{return(0,w.jsx)(`div`,{className:`w-full h-64 sm:h-80 lg:h-96 flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg border border-gray-200 dark:border-dark-200`,children:(0,w.jsxs)(`div`,{className:`text-center`,children:[(0,w.jsx)(s,{className:`h-8 w-8 text-primary-500 mx-auto mb-2`}),(0,w.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-600`,children:n(`artifacts.invalidSvg`)})]})})}},B=()=>(0,w.jsx)(`div`,{className:`relative max-h-64 sm:max-h-80 lg:max-h-96 overflow-auto`,children:(0,w.jsx)(y,{language:(()=>{if(e.language)return e.language;switch(e.type){case`html`:return`html`;case`react`:return`jsx`;case`svg`:return`xml`;case`json`:return`json`;default:return`text`}})(),isDark:A.mode===`dark`,className:`!m-0 !rounded-lg`,children:e.content})}),V=()=>{try{let t=JSON.parse(e.content),n=JSON.stringify(t,null,2);return(0,w.jsx)(`div`,{className:`relative max-h-64 sm:max-h-80 lg:max-h-96 overflow-auto`,children:(0,w.jsx)(y,{language:`json`,isDark:A.mode===`dark`,className:`!m-0 !rounded-lg`,children:n})})}catch{return(0,w.jsx)(`div`,{className:`w-full h-32 flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg border border-gray-200 dark:border-dark-200`,children:(0,w.jsxs)(`div`,{className:`text-center`,children:[(0,w.jsx)(s,{className:`h-8 w-8 text-primary-500 mx-auto mb-2`}),(0,w.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-600`,children:n(`artifacts.invalidJson`)})]})})}},H=()=>{if(D===`code`)return B();switch(e.type){case`html`:return R();case`svg`:return z();case`json`:return V();default:return B()}},U=()=>e.type===`html`||e.type===`svg`||e.type===`react`;return(0,w.jsxs)(`div`,{className:g(`border border-gray-200 dark:border-dark-200 rounded-xl bg-white dark:bg-dark-25 shadow-lg transition-all duration-300 hover:shadow-xl`,`w-full max-w-full overflow-hidden animate-fade-in`,`max-h-[400px] flex flex-col`,t),children:[(0,w.jsxs)(`div`,{className:`px-1.5 py-1.5 sm:p-4 border-b border-gray-100 dark:border-dark-200 flex-shrink-0`,children:[(0,w.jsxs)(`div`,{className:`flex flex-col gap-2 sm:hidden`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`div`,{className:`h-4 w-4 flex-shrink-0 flex items-center justify-center`,children:I()}),(0,w.jsx)(`h3`,{className:`font-medium text-gray-900 dark:text-gray-100 truncate text-sm leading-tight flex-1`,children:e.title})]}),(0,w.jsxs)(`div`,{className:`flex items-center justify-end gap-0.5`,children:[U()&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(v,{variant:D===`preview`?`primary`:`ghost`,size:`sm`,onClick:()=>O(`preview`),className:`h-5 px-0.5 text-xs`,title:n(`artifacts.previewMode`),children:(0,w.jsx)(m,{className:`h-2.5 w-2.5`})}),(0,w.jsx)(v,{variant:D===`code`?`primary`:`ghost`,size:`sm`,onClick:()=>O(`code`),className:`h-5 px-0.5 text-xs`,title:n(`artifacts.codeMode`),children:(0,w.jsx)(l,{className:`h-2.5 w-2.5`})}),(0,w.jsx)(`div`,{className:`w-px h-2 bg-gray-300 dark:bg-gray-600 mx-0.5`})]}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:()=>M(e.content),className:`h-5 w-5 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 touch-manipulation`,title:n(`artifacts.copyContent`),children:h?(0,w.jsx)(o,{className:`h-2.5 w-2.5 text-green-500`}):(0,w.jsx)(f,{className:`h-2.5 w-2.5`})}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:N,className:`h-5 w-5 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 touch-manipulation`,title:n(`artifacts.download`),children:(0,w.jsx)(p,{className:`h-2.5 w-2.5`})}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:()=>j(e),className:`h-5 w-5 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 touch-manipulation border border-gray-200 dark:border-dark-300 hover:border-gray-300 dark:hover:border-dark-400`,title:n(`artifacts.openInPanel`),children:(0,w.jsx)(a,{className:`h-2.5 w-2.5`})})]})]}),(0,w.jsxs)(`div`,{className:`hidden sm:flex items-center justify-between gap-2`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,w.jsx)(`div`,{className:`flex-shrink-0`,children:I()}),(0,w.jsx)(`h3`,{className:`font-semibold text-gray-900 dark:text-gray-100 truncate`,children:e.title})]}),(0,w.jsx)(`span`,{className:`text-xs bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300 px-2 py-1 rounded-full font-medium flex-shrink-0`,children:e.type.toUpperCase()})]}),(0,w.jsxs)(`div`,{className:`flex items-center gap-1 flex-shrink-0`,children:[U()&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(v,{variant:D===`preview`?`primary`:`ghost`,size:`sm`,onClick:()=>O(`preview`),className:`h-8 px-3 text-xs`,title:n(`artifacts.previewMode`),children:[(0,w.jsx)(m,{className:`h-3 w-3 mr-1`}),n(`artifacts.preview`)]}),(0,w.jsxs)(v,{variant:D===`code`?`primary`:`ghost`,size:`sm`,onClick:()=>O(`code`),className:`h-8 px-3 text-xs`,title:n(`artifacts.codeMode`),children:[(0,w.jsx)(l,{className:`h-3 w-3 mr-1`}),n(`artifacts.code`)]}),(0,w.jsx)(`div`,{className:`w-px h-4 bg-gray-300 dark:bg-gray-600 mx-1`})]}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:()=>M(e.content),className:`h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-dark-200`,title:n(`artifacts.copyContent`),children:h?(0,w.jsx)(o,{className:`h-4 w-4 text-green-500`}):(0,w.jsx)(f,{className:`h-4 w-4`})}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:N,className:`h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-dark-200`,title:n(`artifacts.download`),children:(0,w.jsx)(p,{className:`h-4 w-4`})}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:()=>j(e),className:`h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-dark-200`,title:n(`artifacts.openInPanel`),children:(0,w.jsx)(a,{className:`h-4 w-4`})})]})]})]}),(0,w.jsxs)(`div`,{className:`p-4 flex-1 overflow-hidden min-h-0`,children:[e.description&&(0,w.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-gray-400 mb-4`,children:e.description}),(0,w.jsx)(`div`,{className:`h-full overflow-auto`,children:H()})]}),(0,w.jsxs)(`div`,{className:`flex items-center justify-between p-3 border-t border-gray-100 dark:border-dark-200 bg-gray-50 dark:bg-dark-100/50 flex-shrink-0`,children:[(0,w.jsxs)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[n(`artifacts.created`),`:`,` `,new Date(e.createdAt).toLocaleString()]}),(e.type===`html`||e.type===`react`)&&(0,w.jsxs)(v,{variant:`ghost`,size:`sm`,onClick:()=>{let t=window.open(``,`_blank`);t&&(t.document.write(x(e.content,e.title)),t.document.close())},className:`text-xs hover:bg-gray-100 dark:hover:bg-dark-200`,children:[(0,w.jsx)(c,{className:`h-3 w-3 mr-1`}),n(`artifacts.openInNewWindow`)]})]})]})},D=({artifacts:e,className:t})=>!e||e.length===0?null:(0,w.jsx)(`div`,{className:g(`space-y-3`,t),children:e.map(e=>(0,w.jsx)(E,{artifact:e},e.id))});export{D as t};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{d as t,f as n}from"./markdown-core-GI9BPwrB.js";import{n as r}from"./react-vendor-DyG_ODzn.js";import{t as i}from"./useTranslation-Cs6iTP4m.js";import{Et as a,Pt as o,Xt as s,bt as ee,cn as c,mt as l,n as u,nt as d,rt as f,wt as p,xt as te,yt as m}from"./ui-vendor-ChfdHf5M.js";import{t as h}from"./logger-DbNs3-DK.js";import{t as g}from"./utils-DmZD5uA3.js";import{t as _}from"./appStore-CDM6V5ny.js";import{t as v}from"./Button-CRwzOaDZ.js";import{j as y}from"../assets/index-CmZntyR1.js";import{t as b}from"./OptimizedSyntaxHighlighter-Ci9sRc78.js";import{n as ne,r as x,t as re}from"./artifactHtml-B7Oy2e__.js";var S=e(n(),1),C=r(),w=t(),T=h(`components:artifact-slide-out-panel`),E=320,D=.9,O=600,k=()=>{let{t:e,i18n:t}=i(),n=y(t.language),{artifactPanelOpen:r,artifactPanelArtifact:h,closeArtifactPanel:k,theme:A}=_(),[j,M]=(0,S.useState)(!1),[N,P]=(0,S.useState)(`preview`),[F,I]=(0,S.useState)(O),[L,R]=(0,S.useState)(!1),z=(0,S.useRef)(null),B=(0,S.useRef)(null),V=(0,S.useRef)(null),H=(0,S.useRef)(0),U=(0,S.useRef)(0),W=(0,S.useRef)(null),G=(0,S.useRef)(null),K=(0,S.useRef)(F),q=h?.id??null;q!==V.current&&(V.current=q,N!==`preview`&&P(`preview`));let J=(0,S.useCallback)(e=>{K.current=e,G.current===null&&(G.current=window.requestAnimationFrame(()=>{G.current=null,I(K.current)}))},[]),Y=(0,S.useCallback)(()=>{W.current=null,R(!1),G.current!==null&&(window.cancelAnimationFrame(G.current),G.current=null,I(K.current))},[]),ie=(0,S.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),W.current=e.pointerId,U.current=F,H.current=e.clientX,K.current=F,e.currentTarget.setPointerCapture(e.pointerId),R(!0)},[F]),X=(0,S.useCallback)(e=>{if(!L||W.current!==null&&e.pointerId!==W.current)return;e.preventDefault();let t=(H.current-e.clientX)*(n?-1:1),r=window.innerWidth*D;J(Math.min(r,Math.max(E,U.current+t)))},[L,n,J]);if((0,S.useEffect)(()=>{if(!L){document.body.style.userSelect=``,document.body.style.cursor=``;return}let e=e=>{(W.current===null||e.pointerId===W.current)&&Y()};return window.addEventListener(`pointermove`,X,{passive:!1}),window.addEventListener(`pointerup`,e),window.addEventListener(`pointercancel`,e),window.addEventListener(`blur`,Y),document.body.style.userSelect=`none`,document.body.style.cursor=`col-resize`,()=>{window.removeEventListener(`pointermove`,X),window.removeEventListener(`pointerup`,e),window.removeEventListener(`pointercancel`,e),window.removeEventListener(`blur`,Y),document.body.style.userSelect=``,document.body.style.cursor=``}},[L,X,Y]),(0,S.useEffect)(()=>{let e=()=>{let e=window.innerWidth*D;F>e&&I(e)};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[F]),(0,S.useEffect)(()=>{let e=e=>{e.key===`Escape`&&r&&k()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,k]),(0,S.useEffect)(()=>{let e=e=>{L||B.current&&!B.current.contains(e.target)&&r&&k()},t=setTimeout(()=>{window.addEventListener(`mousedown`,e)},100);return()=>{clearTimeout(t),window.removeEventListener(`mousedown`,e)}},[r,k,L]),!h)return null;let Z=h,ae=async e=>{try{await navigator.clipboard.writeText(e),M(!0),setTimeout(()=>M(!1),2e3)}catch(e){T.error(`Failed to copy:`,e)}},oe=()=>{let e=Z.type===`html`?x(Z.content,Z.title):Z.content,t=new Blob([e],{type:se(Z.type)}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${Z.title}.${ce(Z.type)}`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},se=e=>{switch(e){case`html`:return`text/html`;case`react`:return`text/javascript`;case`svg`:return`image/svg+xml`;case`css`:return`text/css`;case`json`:return`application/json`;default:return`text/plain`}},ce=e=>{switch(e){case`html`:return`html`;case`react`:return`jsx`;case`svg`:return`svg`;case`css`:return`css`;case`json`:return`json`;default:return`txt`}},le=()=>{switch(Z.type){case`html`:return(0,w.jsx)(f,{className:`h-5 w-5`});case`react`:return(0,w.jsx)(a,{className:`h-5 w-5`});case`svg`:return(0,w.jsx)(l,{className:`h-5 w-5`});case`code`:return(0,w.jsx)(a,{className:`h-5 w-5`});default:return(0,w.jsx)(l,{className:`h-5 w-5`})}},ue=()=>(0,w.jsx)(`div`,{"data-testid":`artifact-html-fallback`,className:`w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg border border-gray-200 dark:border-dark-200 p-4`,children:(0,w.jsxs)(`div`,{className:`max-w-sm text-center`,children:[(0,w.jsx)(s,{className:`h-8 w-8 text-primary-500 mx-auto mb-3`}),(0,w.jsx)(`p`,{className:`text-sm font-medium text-gray-900 dark:text-gray-100`,children:e(`artifacts.previewUnavailable`)}),(0,w.jsx)(`p`,{className:`mt-1 text-sm text-gray-600 dark:text-gray-400`,children:e(`artifacts.previewUnavailableDescription`)}),(0,w.jsxs)(v,{variant:`outline`,size:`sm`,onClick:()=>P(`code`),className:`mt-4`,children:[(0,w.jsx)(c,{className:`h-3.5 w-3.5 me-1.5`}),e(`artifacts.code`)]})]})}),de=()=>Z.content.trim()?(0,w.jsx)(`iframe`,{ref:z,"data-testid":`artifact-html-preview`,srcDoc:x(Z.content,Z.title),className:g(`w-full h-full border-0 rounded-lg bg-white`,L&&`pointer-events-none`),sandbox:ne,allow:re,allowFullScreen:!0,title:Z.title}):ue(),fe=()=>{try{return(0,w.jsx)(`div`,{className:`w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg overflow-auto p-4`,dangerouslySetInnerHTML:{__html:Z.content}})}catch{return(0,w.jsx)(`div`,{className:`w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg`,children:(0,w.jsxs)(`div`,{className:`text-center`,children:[(0,w.jsx)(s,{className:`h-8 w-8 text-primary-500 mx-auto mb-2`}),(0,w.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-600`,children:e(`artifacts.invalidSvg`)})]})})}},Q=()=>(0,w.jsx)(`div`,{className:`h-full overflow-auto`,children:(0,w.jsx)(b,{language:(()=>{if(Z.language)return Z.language;switch(Z.type){case`html`:return`html`;case`react`:return`jsx`;case`svg`:return`xml`;case`json`:return`json`;default:return`text`}})(),isDark:A.mode===`dark`,className:`!m-0 !rounded-lg !h-full`,children:Z.content})}),pe=()=>{try{let e=JSON.parse(Z.content),t=JSON.stringify(e,null,2);return(0,w.jsx)(`div`,{className:`h-full overflow-auto`,children:(0,w.jsx)(b,{language:`json`,isDark:A.mode===`dark`,className:`!m-0 !rounded-lg !h-full`,children:t})})}catch{return(0,w.jsx)(`div`,{className:`w-full h-full flex items-center justify-center bg-gray-50 dark:bg-dark-100 rounded-lg`,children:(0,w.jsxs)(`div`,{className:`text-center`,children:[(0,w.jsx)(s,{className:`h-8 w-8 text-primary-500 mx-auto mb-2`}),(0,w.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-600`,children:e(`artifacts.invalidJson`)})]})})}},me=()=>{if(N===`code`)return Q();switch(Z.type){case`html`:return de();case`svg`:return fe();case`json`:return pe();default:return Q()}},he=()=>Z.type===`html`||Z.type===`svg`||Z.type===`react`,$=typeof window<`u`&&window.innerWidth<640,ge=$?`100%`:`${F}px`;return(0,C.createPortal)((0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(`div`,{className:g(`fixed inset-0 bg-black/30 dark:bg-black/50 z-40 transition-opacity duration-300`,r?`opacity-100`:`opacity-0 pointer-events-none`)}),L&&(0,w.jsx)(`div`,{className:`fixed inset-0 z-[55] cursor-col-resize select-none`,"aria-hidden":`true`}),(0,w.jsxs)(`div`,{ref:B,"data-testid":`artifact-slide-out-panel`,style:{width:ge},className:g(`fixed top-0 end-0 h-full z-50`,`bg-white dark:bg-dark-25`,`shadow-2xl border-s border-gray-200 dark:border-dark-200`,`flex flex-col`,`transform transition-transform duration-300 ease-out`,r?`translate-x-0`:`translate-x-full rtl:-translate-x-full`),children:[!$&&(0,w.jsxs)(`div`,{onPointerDown:ie,"data-testid":`artifact-resize-handle`,className:g(`absolute start-0 top-0 bottom-0 w-4 -ms-2 cursor-col-resize z-[56]`,`flex items-center justify-center`,`touch-none select-none group`),children:[(0,w.jsx)(`div`,{className:g(`w-1 h-16 rounded-full transition-all duration-200`,`bg-gray-300 dark:bg-dark-300`,`group-hover:bg-primary-500 group-hover:h-24`,L&&`bg-primary-500 h-24`)}),(0,w.jsx)(`div`,{className:g(`absolute left-1/2 -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity`,`text-gray-400 dark:text-dark-500`,L&&`opacity-100`),children:(0,w.jsx)(d,{className:`h-4 w-4`})})]}),(0,w.jsxs)(`div`,{className:`flex items-center justify-between p-4 border-b border-gray-200 dark:border-dark-200`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,w.jsx)(`div`,{className:`text-gray-600 dark:text-gray-400 flex-shrink-0`,children:le()}),(0,w.jsx)(`h2`,{className:`font-semibold text-gray-900 dark:text-gray-100 truncate`,children:Z.title}),(0,w.jsx)(`span`,{className:`text-xs bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300 px-2 py-1 rounded-full font-medium flex-shrink-0`,children:Z.type.toUpperCase()})]}),(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:k,className:`h-8 w-8 p-0 hover:bg-gray-100 dark:hover:bg-dark-200 flex-shrink-0`,title:e(`artifacts.closePanelEsc`),children:(0,w.jsx)(u,{className:`h-5 w-5`})})]}),(0,w.jsxs)(`div`,{className:`flex items-center justify-between px-4 py-2 border-b border-gray-100 dark:border-dark-200 bg-gray-50 dark:bg-dark-100/50`,children:[(0,w.jsx)(`div`,{className:`flex items-center gap-1`,children:he()&&(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(v,{variant:N===`preview`?`primary`:`ghost`,size:`sm`,onClick:()=>P(`preview`),className:`h-8 px-3 text-xs`,title:e(`artifacts.previewMode`),children:[(0,w.jsx)(m,{className:`h-3.5 w-3.5 me-1.5`}),e(`artifacts.preview`)]}),(0,w.jsxs)(v,{variant:N===`code`?`primary`:`ghost`,size:`sm`,onClick:()=>P(`code`),className:`h-8 px-3 text-xs`,title:e(`artifacts.codeMode`),children:[(0,w.jsx)(c,{className:`h-3.5 w-3.5 me-1.5`}),e(`artifacts.code`)]})]})}),(0,w.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,w.jsx)(v,{variant:`ghost`,size:`sm`,onClick:()=>ae(Z.content),className:`h-8 px-3 text-xs hover:bg-gray-100 dark:hover:bg-dark-200`,title:e(`artifacts.copyContent`),children:j?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(o,{className:`h-3.5 w-3.5 me-1.5 text-green-500`}),e(`artifacts.copied`)]}):(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(p,{className:`h-3.5 w-3.5 me-1.5`}),e(`artifacts.copyButton`)]})}),(0,w.jsxs)(v,{variant:`ghost`,size:`sm`,onClick:oe,className:`h-8 px-3 text-xs hover:bg-gray-100 dark:hover:bg-dark-200`,title:e(`artifacts.download`),children:[(0,w.jsx)(te,{className:`h-3.5 w-3.5 me-1.5`}),e(`artifacts.download`)]}),(Z.type===`html`||Z.type===`react`)&&(0,w.jsxs)(v,{variant:`ghost`,size:`sm`,onClick:()=>{let e=window.open(``,`_blank`);e&&(e.document.write(x(Z.content,Z.title)),e.document.close())},className:`h-8 px-3 text-xs hover:bg-gray-100 dark:hover:bg-dark-200`,title:e(`artifacts.openInNewWindow`),children:[(0,w.jsx)(ee,{className:`h-3.5 w-3.5 me-1.5`}),e(`artifacts.open`)]})]})]}),Z.description&&(0,w.jsx)(`div`,{className:`px-4 py-3 border-b border-gray-100 dark:border-dark-200`,children:(0,w.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-gray-400`,children:Z.description})}),(0,w.jsx)(`div`,{className:`flex-1 p-4 overflow-hidden`,children:me()}),(0,w.jsx)(`div`,{className:`px-4 py-2 border-t border-gray-100 dark:border-dark-200 bg-gray-50 dark:bg-dark-100/50`,children:(0,w.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,w.jsxs)(`div`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:[e(`artifacts.created`),`:`,` `,new Date(Z.createdAt).toLocaleString()]}),!$&&(0,w.jsx)(`div`,{className:`text-xs text-gray-400 dark:text-dark-500`,children:e(`artifacts.dragEdgeToResize`)})]})})]})]}),document.body)};export{k as ArtifactSlideOutPanel};
@@ -1,16 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{d as t,f as n}from"./markdown-core-GI9BPwrB.js";import{n as r}from"./react-vendor-DyG_ODzn.js";import{d as i,f as a,u as o}from"./router-vendor-BjDI9mRe.js";import{t as s}from"./useTranslation-Cs6iTP4m.js";import{At as c,B as l,C as u,D as d,Et as f,Kt as p,M as m,Nt as h,Pt as g,St as _,T as v,Ut as y,X as b,Y as x,_ as S,a as C,b as w,cn as T,en as E,fn as D,i as O,jt as k,k as ee,mt as A,n as j,nn as M,ot as N,p as P,pn as F,pt as I,r as L,rn as R,rt as te,st as ne,t as re,u as z,w as B,wt as ie,x as V,z as ae,zt as oe}from"./ui-vendor-ChfdHf5M.js";import{n as H}from"./demoMode-BhEpMVh5.js";import{t as U}from"./logger-DbNs3-DK.js";import{D as se,T as ce,a as le,d as ue,f as de,g as fe,i as pe,n as me,u as he}from"./api-BCqWXjZI.js";import{a as ge,n as _e,r as ve,t as W}from"./utils-DmZD5uA3.js";import{_ as ye,d as be,f as xe,m as Se,n as Ce,p as we,r as G,u as K,v as Te}from"./authStore-Bl5ofD_h.js";import{t as q}from"./appStore-CDM6V5ny.js";import{t as J}from"./Button-CRwzOaDZ.js";import{D as Ee,O as De,T as Oe,g as ke,j as Ae,k as je,w as Me}from"../assets/index-CmZntyR1.js";import{a as Ne,i as Pe}from"./artifactHtml-B7Oy2e__.js";import{t as Fe}from"./ArtifactContainer-CBAbdoIJ.js";import{t as Ie}from"./ModelSelector-D7kDjZV9.js";var Le=r(),Y=e(n(),1),X=t(),Re=({statistics:e,className:t=``})=>{let[n,r]=(0,Y.useState)(!1),{t:i}=s(),a=e=>{if(e==null)return`N/A`;let t=e/1e6;return t<1e3?`${Math.round(t)}ms`:`${(t/1e3).toFixed(2)}s`},o=e=>e?`${e.toFixed(1)} t/s`:`N/A`,c=e.prompt_eval_count||0,l=e.eval_count||0,u=c+l,d=a(e.total_duration),f=o(e.tokens_per_second);return(0,X.jsxs)(`div`,{className:`text-xs text-gray-500 dark:text-dark-500 mt-2 ${t}`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-4 mb-1`,children:[(0,X.jsxs)(`span`,{className:`flex items-center gap-1 text-gray-600 dark:text-dark-600`,children:[(0,X.jsx)(x,{size:12,className:`text-primary-500`}),l,` tokens`]}),(0,X.jsx)(`span`,{className:`text-gray-500 dark:text-dark-500`,children:f}),(0,X.jsx)(`span`,{className:`text-gray-500 dark:text-dark-500`,children:d}),e.model&&(0,X.jsx)(`span`,{className:`text-gray-400 dark:text-dark-400 bg-gray-100 dark:bg-dark-200 px-2 py-0.5 rounded-full truncate max-w-32 sm:max-w-48`,title:e.model,children:e.model})]}),(0,X.jsxs)(`button`,{onClick:()=>r(!n),className:`flex items-center gap-1 text-gray-400 dark:text-dark-400 hover:text-gray-600 dark:hover:text-dark-600 transition-colors`,children:[n?(0,X.jsx)(h,{size:12}):(0,X.jsx)(k,{size:12,className:`rtl:rotate-180`}),(0,X.jsx)(`span`,{children:i(`generationStats.details`)})]}),n&&(0,X.jsxs)(`div`,{className:`mt-2 p-3 bg-gray-50 dark:bg-dark-100 border border-gray-200 dark:border-dark-300 rounded-lg text-xs space-y-2`,children:[(0,X.jsxs)(`div`,{className:`grid grid-cols-2 gap-x-4 gap-y-2`,children:[(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.promptTokens`)}),` `,c]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.generatedTokens`)}),` `,l]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.totalTokens`)}),` `,u]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.speed`)}),` `,f]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.promptEval`)}),` `,a(e.prompt_eval_duration)]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.generation`)}),` `,a(e.eval_duration)]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.modelLoad`)}),` `,a(e.load_duration)]}),(0,X.jsxs)(`div`,{className:`text-gray-700 dark:text-dark-700`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.totalTime`)}),` `,d]})]}),e.created_at&&(0,X.jsxs)(`div`,{className:`pt-2 border-t border-gray-200 dark:border-dark-300 text-gray-600 dark:text-dark-600`,children:[(0,X.jsx)(`span`,{className:`font-medium text-gray-800 dark:text-dark-800`,children:i(`generationStats.generatedAt`)}),` `,new Date(e.created_at).toLocaleTimeString()]})]})]})},ze=U(`components:ttsbutton`),Be=null,Ve=null,He=0,Ue=300*1e3;async function We(e=!1){let t=Date.now();return!e&&Be!==null&&t-He<Ue?Be:Ve||(Ve=(async()=>{try{let e=await le.getModels();return e.success&&e.data&&e.data.length>0?(Be=e.data,He=t,e.data):(Be=[],He=t,[])}catch{return Be=[],He=t,[]}finally{Ve=null}})(),Ve)}function Ge(e){return e.split(/(?<=[.!?]["']?\s)|(?<=[.!?]["']?$)/).map(e=>e.trim()).filter(e=>e.length>0)}var Ke=({text:e,className:t,size:n=`sm`})=>{let{t:r}=s(),{preferences:i}=q(),[a,o]=(0,Y.useState)(!1),[c,l]=(0,Y.useState)(!1),[u,d]=(0,Y.useState)(null),[f,p]=(0,Y.useState)([]),[m,h]=(0,Y.useState)(null),g=(0,Y.useRef)(null),_=(0,Y.useRef)(!1),v=(0,Y.useRef)([]),y=(0,Y.useRef)(0);(0,Y.useEffect)(()=>{let e=!0;return(async()=>{let t=await We(),n=me(t,i.ttsSettings?.model,i.ttsSettings?.pluginId);i.ttsSettings?.model&&!n&&(t=await We(!0)),e&&(p(t),h(t.length>0))})(),()=>{e=!1}},[i.ttsSettings?.model,i.ttsSettings?.pluginId]);let b=(0,Y.useCallback)(async(e,t,n,i,a,o)=>{let s=await le.generateBase64({model:t,pluginId:n,input:e,voice:i,speed:a,response_format:o});if(!s.success||!s.data?.audio)throw Error(s.message||r(`ttsButton.generateFailed`));let c=`data:${s.data.mimeType};base64,${s.data.audio}`,l=new Audio(c);return g.current=l,new Promise((e,t)=>{l.onended=()=>{g.current=null,e()},l.onerror=()=>{g.current=null,t(Error(r(`ttsButton.playbackFailed`)))},l.play().catch(t)})},[r]),x=(0,Y.useCallback)(async(e,t,n,r,i,a)=>{v.current=e,y.current=0,_.current=!1;let o=null,s=async e=>{try{let o=await le.generateBase64({model:t,pluginId:n,input:e,voice:r,speed:i,response_format:a});return!o.success||!o.data?.audio?null:{audioUrl:`data:${o.data.mimeType};base64,${o.data.audio}`,mimeType:o.data.mimeType}}catch{return null}};e.length>0&&(o=s(e[0]));for(let t=0;t<e.length&&!_.current;t++){y.current=t;try{let n=await o;if(_.current)break;if(o=t+1<e.length?s(e[t+1]):null,!n){ze.warn(`Failed to generate audio for sentence ${t+1}, skipping`);continue}let r=new Audio(n.audioUrl);g.current=r,await new Promise((e,t)=>{r.onended=()=>{g.current=null,e()},r.onerror=()=>{g.current=null,e()},r.play().catch(()=>{e()})})}catch(e){ze.error(`Error playing sentence ${t+1}:`,e)}}},[]),w=(0,Y.useCallback)(()=>{_.current=!0,g.current&&(g.current.pause(),g.current.currentTime=0,g.current=null),o(!1),l(!1)},[]),T=async()=>{if(!c){if(a){w();return}l(!0),d(null),_.current=!1;try{let t=i.ttsSettings,n=pe(f,t?.model,t?.pluginId),a=n?.model||t?.model||`tts-1`,s=n?.plugin||t?.pluginId,c=n?.model===t?.model&&(!t?.pluginId||n?.plugin===t.pluginId)?t?.voice||n?.config?.default_voice||`alloy`:n?.config?.default_voice||`alloy`,u=t?.speed||1,p=n?.config?.default_format;if(t?.streamSentences){let t=Ge(e);if(t.length===0)throw Error(r(`ttsButton.generateFailed`));l(!1),o(!0),await x(t,a,s,c,u,p),_.current||o(!1)}else await b(e,a,s,c,u,p),l(!1),o(!0),g.current&&(g.current.onended=()=>{o(!1),g.current=null},g.current.onerror=()=>{d(r(`ttsButton.playbackFailed`)),o(!1),g.current=null})}catch(e){d(e instanceof Error?e.message:r(`ttsButton.generateFailed`)),ze.error(`TTS error:`,e),o(!1),l(!1)}}};if((0,Y.useEffect)(()=>()=>{_.current=!0,g.current&&(g.current.pause(),g.current=null)},[]),m===!1||m===null)return null;let E={sm:`h-6 w-6 p-1`,md:`h-8 w-8 p-1.5`,lg:`h-10 w-10 p-2`},D={sm:`h-3.5 w-3.5`,md:`h-4 w-4`,lg:`h-5 w-5`};return(0,X.jsx)(`button`,{onClick:T,disabled:c||!e,title:u||r(a?`ttsButton.stopSpeaking`:c?`ttsButton.generatingSpeech`:`ttsButton.readAloud`),className:W(`rounded-full transition-all duration-200`,`hover:bg-gray-100 dark:hover:bg-dark-200`,`focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1`,`disabled:opacity-50 disabled:cursor-not-allowed`,u?`text-red-500 dark:text-red-400`:a?`text-primary-600 dark:text-primary-400 bg-primary-50 dark:bg-primary-900/20`:`text-gray-500 dark:text-gray-400`,E[n],t),children:c?(0,X.jsx)(R,{className:W(D[n],`animate-spin`)}):a?(0,X.jsx)(S,{className:D[n]}):u?(0,X.jsx)(O,{className:D[n]}):(0,X.jsx)(C,{className:D[n]})})},qe=/```([^\n`]*)\n([\s\S]*?)\n```/g,Je=/[\w@./-]+\.(?:html?|css|mjs|js|jsx|ts|tsx|svg|json|py)/i,Ye=[`html`,`react`,`svg`,`mermaid`,`chart`,`code`,`text`,`json`],Xe=[{regex:/<artifact\s+type="([^"]+)"\s+title="([^"]+)"[^>]*>([\s\S]*?)<\/artifact>/gi,extract:e=>({type:it(e[1]),title:Ze(e[2]).trim()||`Artifact`,content:e[3].trim()})},{regex:/<artifact\s+type="([^"]+)"[^>]*>([\s\S]*?)<\/artifact>/gi,extract:e=>{let t=it(e[1]);return{type:t,title:`${t.toUpperCase()} Artifact`,content:e[2].trim()}}}];function Ze(e){if(typeof document<`u`){let t=document.createElement(`div`);return t.innerHTML=e,t.textContent||t.innerText||``}return $e(Qe(e))}function Qe(e){return e.replace(/&(lt|gt|quot|apos|#39);/gi,(e,t)=>{switch(t.toLowerCase()){case`lt`:return`<`;case`gt`:return`>`;case`quot`:return`"`;case`apos`:case`#39`:return`'`;default:return``}}).replace(/&amp;/gi,`&`)}function $e(e){let t=``,n=!1,r=null;for(let i=0;i<e.length;i+=1){let a=e[i];if(n){if(r){a===r&&(r=null);continue}if(a===`"`||a===`'`){r=a;continue}a===`>`&&(n=!1);continue}if(a===`<`){let t=e[i+1];if(t&&/[!/A-Za-z?]/.test(t)){n=!0;continue}}t+=a}return t}function et(e){let t=e.match(/<title[^>]*>([\s\S]*?)<\/title>/i);if(t)return Ze(t[1]).trim()||null;let n=e.match(/<h1[^>]*>([\s\S]*?)<\/h1>/i);return n&&Ze(n[1]).trim()||null}function tt(e){let t=e.match(/(?:function|const)\s+(\w+)/);if(t)return t[1];let n=e.match(/class\s+(\w+)/);return n?n[1]:null}function nt(e){if(e.includes(`def main(`))return`Python Script`;let t=e.match(/class\s+(\w+)/);if(t)return`${t[1]} Class`;let n=e.match(/def\s+(\w+)/);return n&&n[1]!==`__init__`?`${n[1]} Function`:null}function rt(e){let t=e.match(/function\s+(\w+)/);if(t)return`${t[1]} Function`;let n=e.match(/(?:const|let)\s+(\w+)\s*=/);return n?n[1]:null}function it(e){let t=e.trim().toLowerCase();return Ye.includes(t)?t:`text`}function Z(e){if(!e)return;let t=e.trim().toLowerCase().replace(/^\./,``).replace(/[,:;]+$/,``);switch(t){case`htm`:case`html`:return`html`;case`js`:case`mjs`:case`javascript`:return`javascript`;case`jsx`:case`tsx`:case`react`:return`react`;case`ts`:case`typescript`:return`typescript`;case`py`:case`python`:return`python`;case`css`:case`svg`:case`json`:return t;default:return t||void 0}}function at(e){let t=[],n=new RegExp(qe),r;for(;(r=n.exec(e))!==null;){let n=r[1].trim(),i=ot(n,ct(e,r.index));t.push({raw:r[0],info:n,content:r[2].trim(),start:r.index,end:r.index+r[0].length,language:i.language,fileName:i.fileName})}return t}function ot(e,t){let n=st(e)||t,r=e.split(/\s+/).filter(Boolean)[0]?.replace(/[{}[\]()]/g,``);return{language:(r&&!Je.test(r)&&!r.includes(`=`)?Z(r):void 0)||Z(ut(n)),fileName:n}}function st(e){let t=e.match(/(?:file(?:name)?|path|name)\s*=\s*["']?([^"'\s]+)["']?/i);if(t&&Je.test(t[1]))return lt(t[1]);let n=e.match(Je);return n?lt(n[0]):void 0}function ct(e,t){let n=e.slice(Math.max(0,t-180),t).split(`
2
- `).slice(-3).reverse();for(let e of n){let t=e.trim().replace(/^#{1,6}\s*/,``).replace(/^[-*]\s*/,``).replace(/[::]\s*$/,``).match(Je);if(t)return lt(t[0])}}function lt(e){return e.replace(/^["'`]+|["'`:]+$/g,``)}function ut(e){return e?.match(/\.([a-z0-9]+)$/i)?.[1]}function dt(e){return e?.split(/[\\/]/).pop()}function Q(e){let t=dt(e);if(!t)return null;let n=t.replace(/\.[^.]+$/,``);return/^(index|main|app)$/i.test(n)?null:n.replace(/[-_]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}function ft(e){let t=Date.now();return{...e,id:`artifact-${t}-${Math.random().toString(36).slice(2,11)}`,createdAt:t,updatedAt:t}}function pt(e){let t=Z(e.language)||Z(ut(e.fileName));switch(t){case`html`:return{type:`html`,title:et(e.content)||Q(e.fileName)||`HTML Document`};case`svg`:return{type:`svg`,title:Q(e.fileName)||`SVG Image`};case`react`:return{type:`react`,title:tt(e.content)||Q(e.fileName)||`React Component`,language:`jsx`};case`json`:return{type:`json`,title:Q(e.fileName)||`JSON Data`};case`python`:return{type:`code`,title:nt(e.content)||Q(e.fileName)||`Python Code`,language:`python`};case`css`:return{type:`code`,title:Q(e.fileName)||`CSS Styles`,language:`css`};case`javascript`:return{type:`code`,title:rt(e.content)||Q(e.fileName)||`JavaScript Code`,language:`javascript`};case`typescript`:return{type:`code`,title:Q(e.fileName)||`TypeScript Code`,language:`typescript`};default:return t?{type:`code`,title:Q(e.fileName)||`${t.toUpperCase()} Code`,language:t}:null}}function mt(e){return(Z(e.language)||Z(ut(e.fileName)))===`html`}function ht(e){return(Z(e.language)||Z(ut(e.fileName)))===`css`}function gt(e){return(Z(e.language)||Z(ut(e.fileName)))===`javascript`}function _t(e){let t=at(e),n=t.filter(mt);if(n.length===0)return null;let r=t.filter(ht),i=t.filter(gt);if(r.length===0&&i.length===0)return null;let a=n.find(e=>/(^|[/\\])index\.html?$/i.test(e.fileName||``))||n[0],o=Ne(vt(a.content,r,i),r.map(e=>e.content),i.map(e=>e.content));return Ct(o,`html`)?{artifact:ft({type:`html`,title:et(o)||Q(a.fileName)||`Interactive HTML App`,description:`Bundled generated HTML, CSS, and JavaScript files into one runnable artifact.`,content:o}),ranges:[a,...r,...i]}:null}function vt(e,t,n){let r=e;for(let e of t){let t=dt(e.fileName);t&&(r=r.replace(RegExp(`<link\\b[^>]*href=["'][^"']*${St(t)}["'][^>]*>`,`gi`),``))}for(let e of n){let t=dt(e.fileName);t&&(r=r.replace(RegExp(`<script\\b[^>]*src=["'][^"']*${St(t)}["'][^>]*>\\s*<\\/script>`,`gi`),``))}return r}function yt(e){let t=/<!doctype\s+html|<html[\s>]/i.exec(e);if(!t||t.index===void 0)return null;let n=at(e);if(bt(t.index,n))return null;let r=t.index,i=/<\/html>/gi;i.lastIndex=r;let a=i.exec(e),o=a?a.index+a[0].length:e.length,s=e.slice(r,o).trim();return Ct(s,`html`)?{artifact:ft({type:`html`,title:et(s)||`HTML Document`,content:s}),ranges:[{start:r,end:o}]}:null}function bt(e,t){return t.some(t=>e>=t.start&&e<=t.end)}function xt(e,t){return[...t].sort((e,t)=>t.start-e.start).reduce((e,t)=>`${e.slice(0,t.start)}${e.slice(t.end)}`,e)}function St(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ct(e,t){if(t===`html`){let t=e.trim(),n=/<[^>]+>/.test(t),r=/<(canvas|script|style|button|form|input|select|textarea|video|audio)\b/i.test(t)||/\bon(?:click|input|submit|keydown|keyup|mousemove)=/i.test(t);return n&&(Pe(t)||t.length>160||r)}if(t===`svg`)return/<svg[^>]*>/.test(e);if(t===`react`)return/<[A-Z][^>]*>/.test(e)||/return\s*\(/.test(e);if(t===`json`)try{return JSON.parse(e),e.trim().length>100}catch{return!1}if(t===`code`){let t=e.split(`
3
- `).length,n=e.trim().length,r=/function|class|def |import |from |const |let |var |if |for |while |try |catch/.test(e);return(n>500||t>15)&&r}return e.trim().length>200}function wt(e){let t=[],n=e;for(let e of Xe){e.regex.lastIndex=0;let r=[],i;for(;(i=e.regex.exec(n))!==null;){let n=e.extract(i);Ct(n.content,n.type)&&(t.push(ft({type:n.type,title:n.title,content:n.content})),r.push({start:i.index,end:i.index+i[0].length}))}n=xt(n,r)}let r=_t(n);for(;r;)t.push(r.artifact),n=xt(n,r.ranges),r=_t(n);let i=yt(n);i&&(t.push(i.artifact),n=xt(n,i.ranges));let a=at(n),o=[];for(let e of a){let n=pt(e);!n||!Ct(e.content,n.type)||(t.push(ft({type:n.type,title:n.title,content:e.content,language:n.language})),o.push(e))}return n=xt(n,o),{content:n.trim(),artifacts:t}}var Tt=U(`components:chat-message`),Et=({message:e,isStreaming:t=!1,className:n,isLastAssistantMessage:r=!1,onRegenerate:i})=>{let{t:a,i18n:o}=s(),l=e.role===`user`,u=e.role===`system`,{preferences:f}=q(),{user:p}=Ce(),{setSystemMessage:m,getCurrentPersona:_}=K(),y=_(),[b,x]=(0,Y.useState)(!1),[S,C]=(0,Y.useState)(e.content),[T,E]=(0,Y.useState)(null),[D,O]=(0,Y.useState)(!1),[k,ee]=(0,Y.useState)(!1),[A,N]=(0,Y.useState)(!1),[P,F]=(0,Y.useState)(!1),[I,L]=(0,Y.useState)(!1),R=(0,Y.useRef)(null),te=(0,Y.useRef)(t),ne=(0,Y.useRef)(!1),re=async()=>{try{await navigator.clipboard.writeText(e.content),L(!0),setTimeout(()=>L(!1),2e3)}catch(e){Tt.error(`Failed to copy message:`,e)}},{thinkingContent:z,thinkingStreaming:B,parsedContent:V,artifacts:ae}=(0,Y.useMemo)(()=>{if(l||u||!e.content)return{thinkingContent:null,thinkingStreaming:!1,parsedContent:e.content,artifacts:e.artifacts||[]};let n=ge(e.content),r=n.content,i=t&&!n.thinkingComplete;if(e.artifacts&&e.artifacts.length>0)return{thinkingContent:n.thinking,thinkingStreaming:i,parsedContent:r,artifacts:e.artifacts};if(!t){let e=wt(r);return{thinkingContent:n.thinking,thinkingStreaming:i,parsedContent:e.content,artifacts:e.artifacts}}return{thinkingContent:n.thinking,thinkingStreaming:i,parsedContent:r,artifacts:[]}},[e.content,e.artifacts,l,u,t]);(0,Y.useEffect)(()=>{let e=te.current&&!t;return te.current=t,e&&!ne.current&&!l&&!u&&V&&f.ttsSettings?.enabled&&f.ttsSettings?.autoPlay&&(ne.current=!0,(async()=>{F(!0);try{let e=await le.getModels(),t=e.success&&e.data?e.data:[],n=f.ttsSettings,r=pe(t,n?.model,n?.pluginId),i=me(t,n?.model,n?.pluginId),a=await le.generateBase64({model:r?.model||n?.model||`tts-1`,pluginId:r?.plugin||n?.pluginId,input:V,voice:i?n?.voice||r?.config?.default_voice||`alloy`:r?.config?.default_voice||`alloy`,speed:n?.speed||1,response_format:r?.config?.default_format});if(a.success&&a.data?.audio){let e=`data:${a.data.mimeType};base64,${a.data.audio}`,t=new Audio(e);R.current=t,t.onended=()=>{F(!1),R.current=null},t.onerror=()=>{F(!1),R.current=null},await t.play()}}catch(e){Tt.error(`Auto-play TTS failed:`,e),F(!1)}})()),()=>{R.current&&(R.current.pause(),R.current=null)}},[t,l,u,V,f.ttsSettings]);let H=()=>u?a(`chatMessage.system`):l?f.showUsername&&p?.username?p.username:a(`chatMessage.you`):y?.name?y.name:e.model||a(`chatMessage.assistant`),U=()=>{x(!0),C(e.content)},se=async()=>{O(!0);try{m(S),x(!1),Tt.debug(`✅ System message updated:`,S)}catch(e){Tt.error(`Failed to save system message:`,e)}finally{O(!1)}},ce=()=>{x(!1),C(e.content)},ue=(e,t=100)=>e.length<=t?e:e.substring(0,t)+`...`,de=u&&e.content.length>100;return(0,X.jsxs)(`div`,{className:W(`group flex py-1.5 transition-colors sm:py-2`,l?`justify-end`:`justify-start`,n),children:[(0,X.jsx)(`div`,{className:W(`flex min-w-0`,l?`max-w-[85%] sm:max-w-[70%]`:`w-full`),children:(0,X.jsxs)(`div`,{className:W(`min-w-0 flex-1`,l?`flex flex-col items-end`:u?`py-1.5`:`py-0.5`),children:[!l&&!u&&(0,X.jsxs)(`div`,{className:`mb-1 flex items-center gap-2`,children:[(0,X.jsx)(`span`,{dir:`auto`,className:`text-[11px] font-semibold uppercase tracking-[0.08em] text-gray-700 rtl:tracking-normal dark:text-dark-700`,children:H()}),e.model&&y?.name&&(0,X.jsx)(`span`,{dir:`ltr`,className:`max-w-32 truncate rounded-full bg-gray-100 px-2 py-0.5 text-[10px] text-gray-500 dark:bg-dark-200 dark:text-dark-600 sm:max-w-48`,title:e.model,children:e.model}),(0,X.jsx)(`span`,{dir:`auto`,className:`text-[10px] tabular-nums text-gray-400 dark:text-dark-500`,children:_e(e.timestamp,o.language)})]}),(0,X.jsxs)(`div`,{className:W(!l&&!u&&`text-[0.9375rem] leading-[1.65] text-gray-800 dark:text-dark-800`),children:[e.images&&e.images.length>0&&(0,X.jsx)(`div`,{className:`mb-1.5 grid max-w-lg grid-cols-2 gap-1.5 sm:grid-cols-3`,children:e.images.map((e,t)=>(0,X.jsx)(`div`,{className:`aspect-square overflow-hidden rounded-xl border border-black/[0.06] bg-gray-100 dark:border-white/[0.08] dark:bg-gray-800`,children:(0,X.jsx)(`img`,{src:e,alt:`Uploaded image ${t+1}`,className:`w-full h-full object-cover cursor-pointer hover:opacity-90 transition-opacity`,onClick:()=>E(e)})},t))}),l?(0,X.jsx)(`div`,{className:`rounded-2xl rounded-ee-md border border-black/[0.06] bg-gray-900 px-3.5 py-2 text-white shadow-sm dark:border-white/[0.07] dark:bg-dark-300`,children:(0,X.jsx)(`p`,{dir:`auto`,className:`whitespace-pre-wrap text-[0.9375rem] leading-relaxed`,children:e.content})}):u?(0,X.jsxs)(`div`,{className:`relative z-0 rounded-2xl border border-black/[0.06] bg-white/55 p-3 dark:border-white/[0.06] dark:bg-dark-200/45`,children:[(0,X.jsxs)(`div`,{className:`mb-2 flex items-center justify-between text-[10px] font-semibold uppercase tracking-[0.12em] text-gray-500 dark:text-dark-500`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,X.jsx)(w,{className:`h-2.5 w-2.5 opacity-50`}),a(`chatMessage.system`)]}),(0,X.jsx)(`div`,{className:`flex items-center gap-1`,children:b?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`button`,{onClick:se,disabled:D,className:`rounded-lg p-1.5 transition-colors hover:bg-gray-100 disabled:opacity-50 dark:hover:bg-dark-300`,title:a(`chatMessage.saveChanges`),children:(0,X.jsx)(v,{className:`h-3 w-3 text-green-600 dark:text-green-400`})}),(0,X.jsx)(`button`,{onClick:ce,disabled:D,className:`rounded-lg p-1.5 transition-colors hover:bg-gray-100 disabled:opacity-50 dark:hover:bg-dark-300`,title:a(`chatMessage.cancelEditing`),children:(0,X.jsx)(j,{className:`h-3 w-3 text-red-600 dark:text-red-400`})})]}):(0,X.jsx)(`button`,{onClick:U,className:`rounded-lg p-1.5 transition-colors hover:bg-gray-100 dark:hover:bg-dark-300`,title:a(`chatMessage.editSystemMessage`),children:(0,X.jsx)(M,{className:`h-3 w-3 text-gray-600 dark:text-gray-400`})})})]}),b?(0,X.jsx)(`textarea`,{dir:`auto`,value:S,onChange:e=>C(e.target.value),className:`min-h-[100px] w-full resize-none rounded-xl border border-black/[0.08] bg-white p-3 text-sm text-gray-900 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-primary-500 dark:border-white/[0.08] dark:bg-dark-100 dark:text-dark-900 dark:focus:ring-primary-400`,placeholder:a(`chatMessage.systemMessagePlaceholder`),disabled:D}):(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`p`,{dir:`auto`,className:`whitespace-pre-wrap text-xs leading-relaxed text-gray-500 dark:text-dark-600`,children:k?e.content:ue(e.content)}),de&&(0,X.jsx)(`button`,{onClick:()=>ee(!k),className:`mt-2 flex items-center gap-1 text-xs text-gray-400 transition-colors hover:text-gray-900 dark:text-dark-500 dark:hover:text-dark-900`,children:k?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(c,{className:`h-3 w-3`}),a(`chatMessage.showLess`)]}):(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(h,{className:`h-3 w-3`}),a(`chatMessage.showMore`)]})})]})]}):(0,X.jsxs)(`div`,{className:`relative`,children:[(z||B)&&(0,X.jsxs)(`div`,{className:`mb-3 border-s border-gray-200 ps-3 dark:border-dark-300`,children:[(0,X.jsxs)(`button`,{onClick:()=>N(!A),className:`flex items-center gap-1.5 text-xs text-gray-500 transition-colors hover:text-gray-900 dark:text-dark-600 dark:hover:text-dark-900`,children:[(0,X.jsx)(oe,{className:W(`h-3.5 w-3.5`,B&&`animate-pulse-subtle motion-reduce:animate-none`)}),B?(0,X.jsxs)(`span`,{className:`animate-shimmer bg-gradient-to-r from-gray-400 via-gray-900 to-gray-400 bg-[length:200%_100%] bg-clip-text font-medium text-transparent motion-reduce:animate-none motion-reduce:bg-none motion-reduce:text-gray-500 dark:from-dark-500 dark:via-dark-900 dark:to-dark-500 motion-reduce:dark:text-dark-600`,children:[a(`chatMessage.thinking`),`…`]}):(0,X.jsx)(`span`,{className:`font-medium`,children:a(`chatMessage.thinking`)}),A?(0,X.jsx)(c,{className:`h-3.5 w-3.5`}):(0,X.jsx)(h,{className:`h-3.5 w-3.5`})]}),A&&z&&(0,X.jsx)(`div`,{className:`mt-2 rounded-xl bg-gray-100/60 p-2.5 dark:bg-dark-200/60`,children:(0,X.jsx)(`p`,{dir:`auto`,className:`whitespace-pre-wrap text-[13px] leading-relaxed text-gray-600 dark:text-dark-700`,children:z})})]}),(0,X.jsx)(ke,{content:V,isStreaming:t})]}),!l&&!u&&ae.length>0&&(0,X.jsx)(`div`,{className:`mt-3`,children:(0,X.jsx)(Fe,{artifacts:ae})}),!l&&!u&&e.statistics&&(0,X.jsx)(`div`,{className:`mt-2`,children:(0,X.jsx)(Re,{statistics:e.statistics})}),!u&&!t&&(0,X.jsxs)(`div`,{className:W(`flex items-center gap-0.5 text-gray-400 dark:text-dark-500`,`sm:opacity-0 sm:transition-opacity sm:duration-150 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100`,l?`mt-1 justify-end`:`mt-1`),children:[l&&(0,X.jsxs)(`span`,{dir:`auto`,className:`me-1 text-[10px] tabular-nums`,title:_e(e.timestamp,o.language),children:[H(),` ·`,` `,_e(e.timestamp,o.language)]}),!l&&V&&(0,X.jsx)(Ke,{text:V,size:`sm`,className:W(`transition-colors`,P&&`bg-primary-50 text-primary-600 dark:bg-primary-900/20 dark:text-primary-400`)}),(0,X.jsx)(`button`,{onClick:re,className:`flex h-7 w-7 items-center justify-center rounded-full transition-colors hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-dark-200 dark:hover:text-dark-800`,title:a(I?`chatMessage.copied`:`chatMessage.copyMessage`),children:I?(0,X.jsx)(g,{className:`h-3.5 w-3.5 text-green-500`}):(0,X.jsx)(ie,{className:`h-3.5 w-3.5`})}),!l&&r&&i&&(0,X.jsx)(`button`,{onClick:i,className:`flex h-7 w-7 items-center justify-center rounded-full transition-colors hover:bg-gray-100 hover:text-gray-800 dark:hover:bg-dark-200 dark:hover:text-dark-800`,title:a(`chatMessage.regenerateResponse`),children:(0,X.jsx)(d,{className:`h-3.5 w-3.5`})})]})]})]})}),T&&(0,Le.createPortal)((0,X.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":a(`chatMessage.fullSizeImage`),className:`fixed inset-0 z-[9999] flex items-center justify-center bg-black/85 p-6 backdrop-blur-md`,onClick:()=>E(null),children:[(0,X.jsx)(`button`,{className:`absolute end-6 top-6 rounded-full border border-white/15 bg-white/10 p-3 text-white transition-colors hover:bg-white/20`,onClick:e=>{e.stopPropagation(),E(null)},children:(0,X.jsx)(j,{className:`h-7 w-7`})}),(0,X.jsx)(`img`,{src:T,alt:a(`chatMessage.fullSizeImage`),className:`max-h-[90vh] max-w-[90vw] rounded-2xl object-contain shadow-2xl`,onClick:e=>e.stopPropagation()})]}),document.body)]})},Dt=()=>typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches,Ot=220,kt=e=>{let t=e.slice(0,Ot*4).replace(/```(?:\w+)?\s*([\s\S]*?)```/g,`$1`).replace(/!\[([^\]]*)\]\([^)]*\)/g,`$1`).replace(/\[([^\]]+)\]\([^)]*\)/g,`$1`).replace(/<[^>]+>/g,` `).replace(/[#>*_~`|]/g,` `).replace(/\s+/g,` `).trim();return t.length>Ot?`${t.slice(0,Ot-1).trimEnd()}…`:t},At=Y.memo(function({items:e,activeId:t,onSelect:n}){let{t:r}=s(),i=(0,Y.useRef)(null),a=(0,Y.useRef)(null),o=(0,Y.useRef)(new Map),[c,l]=(0,Y.useState)(null),[u,d]=(0,Y.useState)(0),f=(0,Y.useCallback)((e,t)=>{let n=i.current;if(!n)return;let r=n.getBoundingClientRect(),a=t.getBoundingClientRect();d(a.top-r.top+a.height/2),l(e)},[]),p=(0,Y.useCallback)(t=>{let r=e[t],i=r?o.current.get(r.id):void 0;!r||!i||(i.focus(),f(r.id,i),n(r.id))},[e,n,f]);if((0,Y.useEffect)(()=>{if(!t)return;let e=a.current,n=o.current.get(t);if(!e||!n)return;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect(),s=null;i.top<r.top?s=e.scrollTop-(r.top-i.top)-8:i.bottom>r.bottom&&(s=e.scrollTop+(i.bottom-r.bottom)+8),s!==null&&e.scrollTo({top:s,behavior:Dt()?`auto`:`smooth`})},[t]),e.length<3)return null;let m=Math.max(0,e.findIndex(e=>e.id===t)),h=e[m]?.id,g=e.findIndex(e=>e.id===c),_=g>=0?e[g]:null,v=g>=0?`conversation-history-preview-${g}`:void 0;return(0,X.jsxs)(`nav`,{ref:i,"data-testid":`conversation-history-rail`,"aria-label":r(`chatHistory.label`),className:`pointer-events-none absolute top-1/2 z-20 hidden h-[min(58vh,30rem)] w-7 -translate-y-1/2 lg:block xl:w-9`,style:{insetInlineStart:`max(0.25rem, calc(50% - 27rem))`},onPointerLeave:()=>{i.current?.contains(document.activeElement)||l(null)},children:[(0,X.jsx)(`ol`,{ref:a,className:`pointer-events-auto flex h-full min-h-0 flex-col overflow-y-auto py-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&>li:first-child]:mt-auto [&>li:last-child]:mb-auto`,children:e.map((t,a)=>{let s=t.id===h,u=Math.abs(a-m),d=c===t.id?v:void 0;return(0,X.jsx)(`li`,{className:`flex h-4 flex-none items-center`,children:(0,X.jsx)(`button`,{ref:e=>{e?o.current.set(t.id,e):o.current.delete(t.id)},type:`button`,"data-testid":`conversation-history-marker`,"aria-current":s?`location`:void 0,"aria-describedby":d,"aria-label":r(`chatHistory.jumpToTurn`,{index:a+1,total:e.length}),tabIndex:a===m?0:-1,className:W(`group flex h-4 w-7 items-center outline-none xl:w-9`,`focus-visible:ring-2 focus-visible:ring-primary-500/45 focus-visible:ring-offset-2 focus-visible:ring-offset-canvas`,`rounded-sm`),onClick:()=>n(t.id),onPointerEnter:e=>f(t.id,e.currentTarget),onFocus:e=>f(t.id,e.currentTarget),onBlur:()=>{window.requestAnimationFrame(()=>{i.current?.contains(document.activeElement)||l(null)})},onKeyDown:t=>{if(t.key===`Escape`){l(null);return}let n=null;t.key===`ArrowDown`?n=Math.min(e.length-1,a+1):t.key===`ArrowUp`?n=Math.max(0,a-1):t.key===`Home`?n=0:t.key===`End`&&(n=e.length-1),n!==null&&(t.preventDefault(),p(n))},children:(0,X.jsx)(`span`,{"aria-hidden":`true`,className:W(`block h-0.5 rounded-full transition-[width,background-color,opacity] duration-150 motion-reduce:transition-none`,s?`w-6 bg-ink xl:w-7`:u===1?`w-3.5 bg-ink-subtle opacity-80 group-hover:w-5 group-hover:bg-ink-muted group-hover:opacity-100 group-focus-visible:w-5`:`w-2.5 bg-line-strong opacity-70 group-hover:w-5 group-hover:bg-ink-muted group-hover:opacity-100 group-focus-visible:w-5`)})})},t.id)})}),_&&(0,X.jsx)(`div`,{id:v,role:`tooltip`,className:W(`pointer-events-none absolute start-full ms-2 w-72 -translate-y-1/2`,`overflow-hidden rounded-xl border border-line bg-surface-overlay/95 shadow-overlay backdrop-blur-xl`,`animate-fade-in motion-reduce:animate-none`),style:{top:`clamp(3.5rem, ${u}px, calc(100% - 3.5rem))`},children:(0,X.jsxs)(`div`,{className:`px-3.5 py-3`,children:[(0,X.jsx)(`p`,{dir:`auto`,className:`truncate text-[13px] font-semibold leading-5 text-ink`,children:kt(_.prompt)}),_.response&&(0,X.jsx)(`p`,{dir:`auto`,className:`mt-1 line-clamp-3 text-xs leading-5 text-ink-muted`,children:kt(_.response)})]})})]})}),jt=({messages:e,isStreaming:t=!1,streamingMessage:n,streamingMessageId:r,isLastAssistantMessage:i=!1,onRegenerate:a,onSelectBranch:o,className:s})=>{if(e.length===1){let o=e[0],c=t&&r===o.id;return(0,X.jsx)(Et,{message:c&&n?{...o,content:n}:o,isStreaming:c,isLastAssistantMessage:i,onRegenerate:a,className:s})}return(0,X.jsxs)(`div`,{className:W(`relative py-2`,s),children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5 pb-3 text-[10px] font-medium uppercase tracking-[0.12em] text-gray-400 dark:text-dark-500`,children:[(0,X.jsx)(N,{className:`h-3 w-3`}),(0,X.jsxs)(`span`,{children:[e.length,` variants`]})]}),(0,X.jsx)(`div`,{className:`grid grid-cols-1 gap-3 md:grid-cols-2`,children:e.map((e,s)=>{let c=e.isActive!==!1,l=t&&r===e.id,u=l&&n?{...e,content:n}:e;return(0,X.jsxs)(`div`,{className:W(`relative overflow-hidden rounded-2xl border bg-white/45 transition-colors duration-150 dark:bg-dark-200/35`,c||l?`border-primary-500/30 ring-1 ring-primary-500/10 dark:border-primary-400/30`:`border-black/[0.07] hover:bg-white/80 dark:border-white/[0.07] dark:hover:bg-dark-200/70`,!c&&!l&&`cursor-pointer`),role:!c&&!l?`button`:void 0,tabIndex:!c&&!l?0:void 0,onClick:()=>!c&&!l&&o?.(e.id),onKeyDown:t=>{!c&&!l&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),o?.(e.id))},children:[(0,X.jsxs)(`div`,{className:W(`flex items-center justify-between border-b px-3 py-2 text-[10px] font-medium uppercase tracking-[0.12em]`,c||l?`border-primary-500/10 bg-primary-50/50 text-primary-600 dark:border-primary-400/10 dark:bg-primary-900/10 dark:text-primary-400`:`border-black/[0.05] text-gray-400 dark:border-white/[0.05] dark:text-dark-500`),children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,X.jsx)(`span`,{className:`font-medium`,children:s+1}),l&&(0,X.jsx)(`span`,{className:`text-[10px] opacity-70 animate-pulse`,children:`generating...`})]}),c&&!l&&(0,X.jsx)(g,{className:`h-3 w-3`}),!c&&!l&&(0,X.jsx)(`span`,{className:`text-[10px] opacity-50`,children:`select`})]}),(0,X.jsx)(`div`,{className:W(!c&&!l&&`opacity-75`),children:(0,X.jsx)(Et,{message:u,isStreaming:l,isLastAssistantMessage:i&&(c||l),onRegenerate:c&&!t?a:void 0,className:`px-3 pb-3 !text-sm`})})]},e.id)})})]})},Mt={web_search:B,web_fetch:te,exec:P,browser:te,Read:A,Write:A,Edit:A,image:b,memory_search:_,memory_get:_,working:L,thinking:L,default:L},Nt={web_search:`Searching the web`,web_fetch:`Fetching page`,exec:`Running command`,browser:`Using browser`,Read:`Reading file`,Write:`Writing file`,Edit:`Editing file`,image:`Analyzing image`,memory_search:`Searching memory`,memory_get:`Reading memory`,cron:`Managing schedule`,message:`Sending message`,tts:`Generating speech`,nodes:`Checking devices`,sessions_spawn:`Spawning agent`,canvas:`Rendering canvas`,process:`Managing process`,working:`Using tools`,thinking:`Thinking`},Pt=({tools:e,className:t})=>{if(e.length===0)return null;let n=e.filter(e=>e.phase!==`result`&&e.phase!==`done`);return n.length===0?null:(0,X.jsx)(`div`,{className:W(`flex flex-col gap-1 py-2 px-1`,t),children:n.map(e=>{let t=Mt[e.name]||Mt.default,n=Nt[e.name]||`Using ${e.name}`,r=e.phase===`result`;return(0,X.jsxs)(`div`,{className:W(`flex items-center gap-2 text-sm transition-all duration-300`,r?`text-green-600 dark:text-green-400 opacity-60`:`text-gray-500 dark:text-gray-400`),children:[(0,X.jsx)(`div`,{className:W(`flex items-center justify-center w-5 h-5`,!r&&`animate-spin-slow`),children:(0,X.jsx)(t,{className:`h-3.5 w-3.5`})}),(0,X.jsx)(`span`,{className:`text-xs font-medium`,children:r?`✓ ${n}`:`${n}…`}),!r&&(0,X.jsxs)(`div`,{className:`flex gap-0.5`,children:[(0,X.jsx)(`div`,{className:`w-1 h-1 bg-current rounded-full animate-bounce`,style:{animationDelay:`0ms`}}),(0,X.jsx)(`div`,{className:`w-1 h-1 bg-current rounded-full animate-bounce`,style:{animationDelay:`150ms`}}),(0,X.jsx)(`div`,{className:`w-1 h-1 bg-current rounded-full animate-bounce`,style:{animationDelay:`300ms`}})]})]},e.toolCallId)})})};U(`components:chat-messages`);var Ft=e=>e.messages.find(e=>e.isActive===!0)||e.messages.find(e=>e.isActive!==!1)||e.messages[0],It=()=>typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`,Lt=e=>Math.min(120,e*.28),Rt=({messages:e,streamingMessage:t,streamingMessageId:n,isStreaming:r=!1,toolActivities:i=[],className:a,onRegenerate:o,onSelectBranch:c})=>{let{t:l}=s(),u=(0,Y.useRef)(null),d=(0,Y.useRef)(void 0),f=(0,Y.useRef)(null),m=(0,Y.useRef)(null),h=(0,Y.useRef)(new Map),g=(0,Y.useRef)(null),_=(0,Y.useRef)(0),v=(0,Y.useRef)(!1),y=(0,Y.useRef)(!1),[b,x]=(0,Y.useState)(!1),S=(0,Y.useMemo)(()=>{let t=[],n=new Set,r=[...e].sort((e,t)=>e.role===`system`&&t.role!==`system`?-1:t.role===`system`&&e.role!==`system`?1:e.parentId===t.parentId?(e.branchIndex||0)-(t.branchIndex||0):e.timestamp-t.timestamp);for(let i of r){if(n.has(i.id))continue;let r=i.parentId;if(r){let a=t.findIndex(e=>e.id===r);if(a>=0)t[a].messages.push(i);else{let a=e.find(e=>e.id===r);a&&!n.has(r)?(t.push({id:r,messages:[a,i],messageIndex:t.length}),n.add(r)):t.push({id:i.id,messages:[i],messageIndex:t.length})}n.add(i.id)}else{let r=e.filter(e=>e.parentId===i.id);r.length>0?(t.push({id:i.id,messages:[i,...r],messageIndex:t.length}),n.add(i.id),r.forEach(e=>n.add(e.id))):(t.push({id:i.id,messages:[i],messageIndex:t.length}),n.add(i.id))}}return t.sort((e,t)=>{let n=e.messages[0],r=t.messages[0];return n.role===`system`&&r.role!==`system`?-1:r.role===`system`&&n.role!==`system`?1:n.timestamp-r.timestamp})},[e]),C=(0,Y.useMemo)(()=>{let e=[];for(let t=0;t<S.length;t++){let n=S[t],r=Ft(n);if(r.role!==`user`)continue;let i;for(let e=t+1;e<S.length;e++){let t=Ft(S[e]);if(t.role===`user`)break;if(t.role===`assistant`){i=t.content;break}}e.push({id:n.id,prompt:r.content,response:i})}return e},[S]),w=C.map(e=>e.id).join(``),T=(0,Y.useMemo)(()=>w?w.split(``):[],[w]),D=(0,Y.useMemo)(()=>new Set(T),[T]),[O,k]=(0,Y.useState)(null),ee=(0,Y.useCallback)(()=>{let e=f.current;if(!e||T.length===0){k(null);return}let t=e.scrollHeight-e.scrollTop-e.clientHeight,n=Math.min(_.current,T.length-1);if(t<=2)n=T.length-1;else{let t=e.scrollTop+Lt(e.clientHeight);for(;n<T.length-1;){let e=h.current.get(T[n+1]);if(!e||e.offsetTop>t)break;n++}for(;n>0;){let e=h.current.get(T[n]);if(!e||e.offsetTop<=t)break;n--}}_.current=n;let r=T[n];k(e=>e===r?e:r)},[T]),A=(0,Y.useCallback)(()=>{g.current===null&&(g.current=window.requestAnimationFrame(()=>{g.current=null,ee()}))},[ee]),j=(0,Y.useCallback)(()=>{let t=f.current;if(d.current&&clearTimeout(d.current),v.current=!1,d.current=void 0,!t)return;let n=t.scrollHeight-t.scrollTop-t.clientHeight<100;y.current=!n,x(!n&&e.length>0),A()},[e.length,A]),M=(0,Y.useCallback)(()=>{d.current&&clearTimeout(d.current),d.current=setTimeout(j,180)},[j]),N=(0,Y.useCallback)((e=!1)=>{y.current&&!e||u.current?.scrollIntoView({behavior:It()})},[]),P=(0,Y.useCallback)(()=>{let t=f.current;if(!t)return;let{scrollTop:n,scrollHeight:r,clientHeight:i}=t,a=r-n-i,o=a<100;if(v.current){y.current=!0,x(!o&&e.length>0),A(),M();return}y.current=!o,x(!o&&e.length>0),a<=2&&T.length>0?(_.current=T.length-1,k(T[T.length-1])):A()},[T,e.length,M,A]),F=(0,Y.useCallback)(e=>{let t=f.current,n=h.current.get(e);if(!t||!n)return;let r=It();v.current=!0,y.current=!0,t.scrollTo({top:Math.max(0,n.offsetTop-Lt(t.clientHeight)),behavior:r}),A(),r===`auto`?j():M()},[j,M,A]),I=(0,Y.useRef)(e.length);if((0,Y.useEffect)(()=>{e.length>I.current&&!y.current&&N(),I.current=e.length},[e.length,N]),(0,Y.useEffect)(()=>{r&&t&&!y.current&&requestAnimationFrame(()=>{let e=f.current;e&&(e.scrollTop=e.scrollHeight)})},[r,t]),(0,Y.useEffect)(()=>{A();let e=m.current,t=f.current,n=typeof ResizeObserver>`u`?null:new ResizeObserver(A);return e&&n?.observe(e),t&&n?.observe(t),window.addEventListener(`resize`,A),()=>{n?.disconnect(),window.removeEventListener(`resize`,A)}},[w,A]),(0,Y.useEffect)(()=>()=>{g.current!==null&&(window.cancelAnimationFrame(g.current),g.current=null)},[]),(0,Y.useEffect)(()=>()=>{d.current&&clearTimeout(d.current)},[]),e.length===0&&!r)return(0,X.jsx)(`div`,{className:W(`flex-1 flex items-center justify-center p-6 sm:p-10`,a),children:(0,X.jsxs)(`div`,{className:`max-w-sm text-center text-gray-500 dark:text-dark-600`,children:[(0,X.jsx)(`div`,{className:`mx-auto mb-5 flex h-11 w-11 items-center justify-center rounded-2xl border border-black/[0.06] bg-surface/70 text-gray-500 shadow-sm dark:border-white/[0.07] dark:bg-dark-200/70 dark:text-dark-600`,children:(0,X.jsx)(E,{className:`h-4 w-4`})}),(0,X.jsx)(`h3`,{className:`mb-2 text-lg font-medium tracking-[-0.02em] text-gray-900 dark:text-dark-900 sm:text-xl`,children:l(`chatMessage.startConversation`)}),(0,X.jsx)(`p`,{className:`px-4 text-sm leading-relaxed`,children:l(`chatMessage.startConversationDescription`)})]})});let L=-1;for(let e=S.length-1;e>=0;e--)if(S[e].messages.some(e=>e.role===`assistant`)){L=e;break}return(0,X.jsxs)(`div`,{className:W(`relative min-h-0 flex-1`,a),style:{WebkitAppRegion:`no-drag`},children:[(0,X.jsx)(`div`,{ref:f,"data-testid":`chat-scroll-viewport`,onScroll:P,className:W(`h-full overflow-y-auto scrollbar-thin scrollbar-thumb-gray-300 dark:scrollbar-thumb-gray-600`,`scrollbar-track-transparent hover:scrollbar-thumb-gray-400 dark:hover:scrollbar-thumb-gray-500`,`overscroll-behavior-y-contain`,`[-webkit-overflow-scrolling:touch]`),style:{WebkitOverflowScrolling:`touch`,overscrollBehaviorY:`contain`},children:(0,X.jsxs)(`div`,{ref:m,className:`mx-auto w-full min-w-0 max-w-3xl px-4 sm:px-6 md:px-8`,children:[S.map((e,i)=>{let a=i===L,s=D.has(e.id),l=r&&e.messages.some(e=>e.id===n),u;if(e.messages.length===1){let s=e.messages[0],c=r&&s.id===n;u=(0,X.jsx)(Et,{message:c&&t?{...s,content:t}:s,isStreaming:c,isLastAssistantMessage:a,onRegenerate:a?o:void 0,className:i===0?`mt-3 sm:mt-4`:``})}else u=(0,X.jsx)(jt,{messages:e.messages,isStreaming:l,streamingMessage:t,streamingMessageId:n||void 0,isLastAssistantMessage:a,onRegenerate:a?o:void 0,onSelectBranch:c,className:i===0?`mt-3 sm:mt-4`:``});return(0,X.jsx)(`div`,{ref:t=>{s&&(t?h.current.set(e.id,t):h.current.delete(e.id))},"data-testid":s?`conversation-turn-anchor`:void 0,"data-history-id":s?e.id:void 0,children:u},e.id)}),r&&i.length>0&&(0,X.jsx)(Pt,{tools:i,className:`px-0`}),(0,X.jsx)(`div`,{ref:u,className:`h-4 sm:h-6`})]})}),(0,X.jsx)(At,{items:C,activeId:O,onSelect:F}),b&&(0,X.jsxs)(`button`,{onClick:()=>{v.current=!1,d.current&&(clearTimeout(d.current),d.current=void 0),y.current=!1,u.current?.scrollIntoView({behavior:It()}),x(!1)},className:W(`absolute bottom-4 left-1/2 -translate-x-1/2 z-10`,`flex items-center justify-center gap-1.5`,`px-3.5 py-2 rounded-full`,`bg-surface/90 dark:bg-dark-200/90`,`border border-black/[0.07] dark:border-white/[0.08]`,`shadow-[0_8px_28px_rgba(15,23,42,0.12)] backdrop-blur-xl`,`text-gray-600 dark:text-dark-600`,`hover:bg-surface-raised dark:hover:bg-dark-200`,`hover:text-gray-900 dark:hover:text-dark-800`,`transition-colors duration-150`),title:l(`chatMessage.scrollToBottom`),children:[(0,X.jsx)(p,{className:`h-4 w-4`}),(0,X.jsx)(`span`,{className:`text-xs font-medium`,children:l(`chatMessage.newMessages`)})]})]})};function zt(e){let t=(e.match(/```/g)||[]).length,n=t%2==1,r=null;if(n){let t=e.lastIndexOf("```");if(t!==-1){let n=e.slice(t+3).match(/^(\w+)/);n&&(r=n[1])}}return{hasCodeBlocks:t>0,isInCodeBlock:n,language:r}}var Bt=Y.forwardRef(({value:e,onChange:t,className:n,placeholder:r,disabled:i,onKeyDown:a,dir:o=`auto`,...s},c)=>{let{hasCodeBlocks:l,isInCodeBlock:u,language:d}=(0,Y.useMemo)(()=>zt(e),[e]);return(0,X.jsxs)(`div`,{className:`relative w-full`,children:[(0,X.jsx)(`textarea`,{ref:c,value:e,onChange:t,onKeyDown:a,placeholder:r,disabled:i,dir:o,className:W(`w-full resize-none transition-all duration-200`,u&&[`font-mono text-[13px]`,`bg-gray-50 dark:bg-dark-100/50`,`rounded-lg`],n),...s}),l&&(0,X.jsx)(`div`,{className:`absolute end-0 top-0 pointer-events-none flex items-center gap-1`,children:(0,X.jsxs)(`div`,{className:W(`flex items-center gap-1 px-1.5 py-0.5 rounded-md text-[10px] font-medium`,`bg-gray-100 dark:bg-dark-200`,`text-gray-500 dark:text-gray-400`,`border border-gray-200/50 dark:border-dark-300/50`,u&&`animate-pulse`),children:[(0,X.jsx)(T,{className:`h-3 w-3`}),d&&(0,X.jsx)(`span`,{children:d}),!d&&u&&(0,X.jsx)(`span`,{children:`code`})]})})]})});Bt.displayName=`CodeAwareTextarea`;var Vt=U(`components:media-upload`),Ht=({images:e,onImagesChange:t,maxImages:n=5,sessionId:r,onDocumentUploaded:i,disabled:a=!1,className:o})=>{let{t:c}=s(),l=(0,Y.useRef)(null),[u,d]=(0,Y.useState)(!1),[f,p]=(0,Y.useState)(!1),[m,h]=(0,Y.useState)([]),g=async e=>{if(!(!e||a))for(let t=0;t<e.length;t++){let n=e[t];n.type.startsWith(`image/`)?await _(n):n.type.includes(`pdf`)||n.type.includes(`text`)?await v(n):F.error(`File type not supported: ${n.name}`)}},_=async r=>{if(n-e.length<=0){F.error(`Maximum ${n} images allowed`);return}if(r.size>10*1024*1024){F.error(`Image ${r.name} is too large (max 10MB)`);return}let i=new FileReader;i.onload=n=>{n.target?.result&&t([...e,n.target.result])},i.readAsDataURL(r)},v=async e=>{if(e.size>10*1024*1024){F.error(`File size must be less than 10MB`);return}p(!0);try{let t=await ce.uploadDocument(e,r);if(t.success&&t.data){let n=t.data;h(e=>[...e,n]),i?.(n),F.success(`Document "${e.name}" uploaded`)}else F.error(t.error||`Failed to upload document`)}catch(e){Vt.error(`Document upload error:`,e),F.error(`Failed to upload document`)}finally{p(!1)}},y=e=>{e.preventDefault(),a||d(!0)},b=e=>{e.preventDefault(),d(!1)},x=e=>{e.preventDefault(),d(!1),a||g(e.dataTransfer.files)},S=n=>{t(e.filter((e,t)=>t!==n))},C=async e=>{try{let t=await ce.deleteDocument(e);t.success?(h(t=>t.filter(t=>t.id!==e)),F.success(`Document removed`)):F.error(t.error||`Failed to remove document`)}catch(e){Vt.error(`Error removing document:`,e),F.error(`Failed to remove document`)}},w=e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]},T=e.length>0||m.length>0;return(0,X.jsxs)(`div`,{className:W(`space-y-3`,o),children:[(0,X.jsxs)(`div`,{className:W(`border-2 border-dashed rounded-xl p-6 transition-all duration-200 cursor-pointer`,`border-gray-300 dark:border-gray-600`,`hover:border-primary-400 dark:hover:border-primary-500`,u&&`border-primary-500 dark:border-primary-400 bg-primary-50/50 dark:bg-primary-900/10`,a&&`opacity-50 cursor-not-allowed`),onDragOver:y,onDragLeave:b,onDrop:x,onClick:()=>!a&&l.current?.click(),children:[(0,X.jsx)(`input`,{ref:l,type:`file`,multiple:!0,accept:`image/*,.pdf,.txt`,onChange:e=>{g(e.target.files),e.target.value=``},className:`hidden`,disabled:a}),(0,X.jsxs)(`div`,{className:`flex flex-col items-center text-center`,children:[f?(0,X.jsx)(R,{className:`h-8 w-8 text-gray-400 dark:text-gray-500 mb-2 animate-spin`}):(0,X.jsx)(z,{className:`h-8 w-8 text-gray-400 dark:text-gray-500 mb-2`}),(0,X.jsxs)(`p`,{className:`text-sm text-gray-700 dark:text-gray-300`,children:[c(`chat.mediaUpload.dropImagesHere`),` `,(0,X.jsx)(`span`,{className:`text-primary-600 dark:text-primary-400 font-medium`,children:c(`chat.mediaUpload.browse`)})]}),(0,X.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 mt-1`,children:c(`chat.mediaUpload.supportedFormats`)})]})]}),T&&(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[e.map((e,t)=>(0,X.jsxs)(`div`,{className:`relative group w-16 h-16 rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-800 border border-gray-200 dark:border-gray-700`,children:[(0,X.jsx)(`img`,{src:e,alt:`Upload ${t+1}`,className:`w-full h-full object-cover`}),(0,X.jsx)(`button`,{onClick:e=>{e.stopPropagation(),S(t)},className:`absolute top-0.5 right-0.5 p-0.5 rounded-full bg-black/60 hover:bg-black/80 text-white opacity-0 group-hover:opacity-100 transition-opacity`,children:(0,X.jsx)(j,{className:`h-3 w-3`})})]},`img-${t}`)),m.map(e=>(0,X.jsxs)(`div`,{className:`relative group flex items-center gap-2 px-3 py-2 rounded-lg bg-gray-100 dark:bg-gray-800 border border-gray-200 dark:border-gray-700`,children:[e.fileType===`pdf`?(0,X.jsx)(A,{className:`w-4 h-4 text-red-500 flex-shrink-0`}):(0,X.jsx)(I,{className:`w-4 h-4 text-blue-500 flex-shrink-0`}),(0,X.jsxs)(`div`,{className:`min-w-0`,children:[(0,X.jsx)(`p`,{className:`text-xs font-medium text-gray-900 dark:text-gray-100 truncate max-w-[100px]`,children:e.filename}),(0,X.jsx)(`p`,{className:`text-[10px] text-gray-500 dark:text-gray-400`,children:w(e.size)})]}),(0,X.jsx)(`button`,{onClick:t=>{t.stopPropagation(),C(e.id)},className:`p-0.5 rounded-full hover:bg-gray-200 dark:hover:bg-gray-700 text-gray-500 hover:text-red-500 transition-colors`,children:(0,X.jsx)(j,{className:`h-3 w-3`})})]},e.id))]})]})},Ut=U(`components:document-indicator`),Wt=({sessionId:e,className:t=``})=>{let[n,r]=(0,Y.useState)([]);if((0,Y.useEffect)(()=>{e&&(async()=>{try{let t=await ce.getDocuments(e);t.success&&t.data&&r(t.data)}catch(e){Ut.error(`Failed to load documents:`,e)}})()},[e]),!e||n.length===0)return null;let i=n.reduce((e,t)=>e+t.size,0);return(0,X.jsxs)(`div`,{className:`
4
- inline-flex items-center space-x-1 px-2 py-1
5
- bg-blue-50 dark:bg-blue-900/20
6
- border border-blue-200 dark:border-blue-800
7
- rounded-md text-xs
8
- ${t}
9
- `,title:`${n.length} document(s) available for context - Total: ${(e=>{if(e===0)return`0 B`;let t=1024,n=[`B`,`KB`,`MB`,`GB`],r=Math.floor(Math.log(e)/Math.log(t));return parseFloat((e/t**r).toFixed(1))+` `+n[r]})(i)}`,children:[(0,X.jsx)(y,{className:`w-3 h-3 text-blue-600 dark:text-blue-400`}),(0,X.jsxs)(`span`,{className:`text-blue-700 dark:text-blue-300 font-medium`,children:[n.length,` doc`,n.length===1?``:`s`]})]})},Gt=U(`components:structured-output`),Kt=[{key:`none`,value:null},{key:`json`,value:`json`},{key:`list`,value:{type:`object`,properties:{items:{type:`array`,items:{type:`string`}}},required:[`items`]}},{key:`summary`,value:{type:`object`,properties:{title:{type:`string`},summary:{type:`string`},key_points:{type:`array`,items:{type:`string`}}},required:[`title`,`summary`,`key_points`]}},{key:`analysis`,value:{type:`object`,properties:{analysis:{type:`string`},pros:{type:`array`,items:{type:`string`}},cons:{type:`array`,items:{type:`string`}},recommendation:{type:`string`}},required:[`analysis`,`pros`,`cons`,`recommendation`]}},{key:`custom`,value:`custom`}],qt=({format:e,onFormatChange:t,className:n})=>{let{t:r}=s(),[i,a]=(0,Y.useState)(!1),[o,c]=(0,Y.useState)(``),l=()=>Kt.map(e=>({key:e.key,label:r(`chat.structuredOutput.${e.key}`),value:e.value,description:r(`chat.structuredOutput.${e.key}Description`)})),u=()=>{let t=l();return e===null?t[0]:e===`json`?t[1]:typeof e==`object`?t.find(t=>typeof t.value==`object`&&JSON.stringify(t.value)===JSON.stringify(e))||{key:`customSchema`,label:r(`chat.structuredOutput.custom`),value:e,description:r(`chat.structuredOutput.customSchema`)}:t[0]},d=e=>{let n=l().find(t=>t.label===e);if(n){if(n.value===`custom`){a(!0);return}a(!1),t(n.value)}};return(0,X.jsxs)(`div`,{className:W(`space-y-3`,n),children:[(0,X.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,X.jsxs)(`div`,{className:`flex items-center`,children:[(0,X.jsx)(w,{className:`h-4 w-4 text-gray-500 mr-2`}),(0,X.jsx)(`span`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300`,children:r(`chat.structuredOutput.title`)})]})}),(0,X.jsx)(Me,{value:u().label,onChange:e=>d(e.target.value),options:l().map(e=>({value:e.label,label:e.label}))}),(0,X.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:u().description}),i&&(0,X.jsxs)(`div`,{className:`space-y-3`,children:[(0,X.jsx)(Oe,{value:o,onChange:e=>c(e.target.value),placeholder:`{
10
- "type": "object",
11
- "properties": {
12
- "field1": { "type": "string" },
13
- "field2": { "type": "number" }
14
- },
15
- "required": ["field1"]
16
- }`,rows:8,className:`font-mono text-sm`}),(0,X.jsxs)(`div`,{className:`flex gap-2`,children:[(0,X.jsx)(J,{onClick:()=>{try{t(JSON.parse(o)),a(!1)}catch(e){Gt.error(`Invalid JSON schema:`,e)}},size:`sm`,disabled:!o.trim(),children:r(`chat.structuredOutput.applySchema`)}),(0,X.jsx)(J,{onClick:()=>{a(!1),c(``)},variant:`outline`,size:`sm`,children:r(`chat.structuredOutput.cancel`)})]})]}),(()=>{let e=u();return!e.value||e.value===`json`?null:(0,X.jsxs)(`div`,{className:`mt-3 p-3 bg-gray-50 dark:bg-gray-800 rounded-md`,children:[(0,X.jsxs)(`div`,{className:`flex items-center mb-2`,children:[(0,X.jsx)(f,{className:`h-4 w-4 text-gray-500 mr-2`}),(0,X.jsx)(`span`,{className:`text-sm font-medium text-gray-700 dark:text-gray-300`,children:r(`chat.structuredOutput.schemaPreview`)})]}),(0,X.jsx)(`pre`,{className:`text-xs text-gray-700 dark:text-gray-300 overflow-x-auto`,children:JSON.stringify(e.value,null,2)})]})})(),e&&(0,X.jsxs)(`div`,{className:`flex items-center text-xs text-green-600 dark:text-green-400`,children:[(0,X.jsx)(A,{className:`h-3 w-3 mr-1`}),r(`chat.structuredOutput.enabled`)]})]})},Jt=U(`components:chat-input`),Yt=({onSendMessage:e,onStopGeneration:t,disabled:n=!1})=>{let{t:r}=s(),[i,a]=(0,Y.useState)(``),[o,c]=(0,Y.useState)([]),[l,d]=(0,Y.useState)(null),[f,p]=(0,Y.useState)(!1),[h,g]=(0,Y.useState)(null),[_,v]=(0,Y.useState)(!1),{isGenerating:y,setBackgroundImage:b}=q(),x=q(e=>e.preferences.imageGenSettings?.enabled===!0),C=x&&_,{currentSession:w,models:T}=K(),E=(0,Y.useRef)(null),O=(0,Y.useMemo)(()=>({model:w?.personaId?`persona:${w.personaId}`:w?.model||``,providerType:w?.providerType,providerId:w?.providerId}),[w?.model,w?.personaId,w?.providerId,w?.providerType]),k=(0,Y.useMemo)(()=>Te(T,O),[T,O]),A=O.model?Se(k,O):``,j=ye(T,O);(0,Y.useEffect)(()=>{let e=!1;return x&&(async()=>{try{let t=await fe.getPlugins();if(e)return;v(!!(t.success&&t.data&&t.data.length>0))}catch{if(e)return;v(!1)}})(),()=>{e=!0}},[x]);let M=t=>{if(t.preventDefault(),!(!i.trim()||y)){if(!j){D.error(`Select an available model before sending`);return}e(i.trim(),o.length>0?o:void 0,l||void 0),a(``),c([])}},N=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),M(e))},P=()=>{t()};(0,Y.useEffect)(()=>{let e=E.current;e&&(e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,200)+`px`)},[i]),(0,Y.useEffect)(()=>{(async()=>{if(w?.personaId)try{let e=await he.getPersona(w.personaId);if(e.success&&e.data)g(e.data);else{Jt.warn(`Persona ${w.personaId} not found, clearing reference`),g(null);let{setCurrentSession:e}=K.getState();e({...w,personaId:void 0})}}catch(e){if(Jt.error(`Failed to load current persona:`,e),g(null),w){let{setCurrentSession:e}=K.getState();e({...w,personaId:void 0})}}else g(null)})()},[w?.personaId]);let F=async e=>{let t=xe(k,e.target.value);if(t&&w)try{if(t.model.startsWith(`persona:`)){let e=t.model.slice(8),n=await he.getPersona(e);if(!n.success||!n.data){D.error(`Failed to load persona details`);return}let i=n.data,a=await se.updateSession(w.id,{personaId:e,model:t.model,providerType:`ollama`,providerId:null});if(a.success&&a.data){let{sessions:e}=K.getState(),t=e.map(e=>e.id===w.id?a.data:e);K.setState({sessions:t,currentSession:a.data}),i.background&&b(i.background),D.success(r(`chat.persona.applied`))}}else{let e=await se.updateSession(w.id,{model:t.model,providerType:t.providerType,providerId:t.providerType===`plugin`&&t.providerId||null,personaId:null});if(e.success&&e.data){let{sessions:t}=K.getState(),n=t.map(t=>t.id===w.id?e.data:t);K.setState({sessions:n,currentSession:e.data}),b(null),D.success(r(`chat.model.updated`))}}}catch(e){Jt.error(`Failed to update session:`,e),D.error(`Failed to update session`)}},I=o.length>0||l!==null;return(0,X.jsx)(`div`,{className:`pointer-events-none`,children:(0,X.jsxs)(`div`,{className:`pointer-events-auto mx-auto w-full max-w-3xl px-4 sm:px-6 md:px-8`,children:[f&&(0,X.jsxs)(`div`,{className:`mb-2 animate-slide-up rounded-2xl border border-black/[0.07] bg-surface/90 p-4 shadow-[0_12px_40px_rgba(15,23,42,0.08)] backdrop-blur-xl dark:border-white/[0.08] dark:bg-dark-200/90`,children:[(0,X.jsx)(Ht,{images:o,onImagesChange:c,maxImages:5,sessionId:w?.id,disabled:n}),(0,X.jsx)(qt,{format:l,onFormatChange:d})]}),(0,X.jsxs)(`div`,{className:`pb-2.5 pt-1.5 sm:pb-3`,children:[(0,X.jsx)(`form`,{onSubmit:M,children:(0,X.jsxs)(`div`,{className:W(`flex items-end gap-2 rounded-[1.35rem] border p-2 transition-[border-color,box-shadow,background-color] duration-200`,`bg-surface/[0.92] dark:bg-dark-200/[0.92] backdrop-blur-xl`,`border-black/[0.08] dark:border-white/[0.09]`,`shadow-[0_1px_2px_rgba(0,0,0,0.03),0_14px_42px_rgba(15,23,42,0.08)]`,`focus-within:border-primary-500/35 focus-within:shadow-[0_1px_2px_rgba(0,0,0,0.03),0_18px_52px_rgba(15,23,42,0.11)]`),children:[(0,X.jsx)(J,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>p(!f),className:W(`h-8 w-8 sm:h-9 sm:w-9 !p-0 rounded-full flex-shrink-0`,`text-gray-500 dark:text-dark-600 hover:bg-gray-100 dark:hover:bg-dark-300`,`transition-colors duration-150 touch-manipulation`,I&&`text-primary-600 dark:text-primary-400`,f&&`bg-gray-100 dark:bg-dark-300`),title:r(`chat.input.attachments`),children:I?(0,X.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,X.jsx)(m,{className:`h-4 w-4`}),(0,X.jsx)(`div`,{className:`absolute -top-0.5 -end-0.5 h-2 w-2 bg-primary-500 dark:bg-primary-400 rounded-full ring-2 ring-white dark:ring-dark-50`})]}):f?(0,X.jsx)(ae,{className:`h-4 w-4`}):(0,X.jsx)(ee,{className:`h-4 w-4`})}),(0,X.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,X.jsx)(Bt,{ref:E,value:i,onChange:e=>a(e.target.value),onKeyDown:N,placeholder:r(`chat.input.placeholder`),disabled:n,className:`!m-0 min-h-[36px] max-h-[160px] resize-none !rounded-none !border-0 !bg-transparent !p-1.5 !shadow-none scrollbar-thin scrollbar-thumb-gray-300 placeholder:text-gray-400 focus:!border-0 focus:!bg-transparent focus:!shadow-none focus:!ring-0 dark:scrollbar-thumb-dark-400 dark:placeholder:text-dark-500 text-[0.9375rem] leading-relaxed touch-manipulation`,rows:1})}),(0,X.jsxs)(`div`,{className:`flex flex-shrink-0 items-center gap-1 sm:gap-2`,children:[w&&k.length>0&&(0,X.jsx)(`div`,{className:`hidden sm:block`,children:(0,X.jsx)(Ie,{models:k,selectedModel:A,onModelChange:F,getModelValue:be,currentPersona:h,className:`min-w-[150px] max-w-[230px]`,compact:!0,showImageGen:C})}),y?(0,X.jsx)(J,{type:`button`,variant:`ghost`,size:`sm`,onClick:P,className:W(`h-8 w-8 sm:h-9 sm:w-9 p-0 rounded-full flex-shrink-0 flex items-center justify-center`,`bg-red-50 dark:bg-red-900/20`,`text-red-500 dark:text-red-400`,`hover:bg-red-100 dark:hover:bg-red-900/30`,`transition-colors duration-150 touch-manipulation`),title:r(`chat.input.stopGeneration`),children:(0,X.jsx)(S,{className:`h-4 w-4`})}):(0,X.jsx)(J,{type:`submit`,variant:`ghost`,size:`sm`,disabled:!i.trim()||n||!j,className:W(`h-8 w-8 sm:h-9 sm:w-9 p-0 rounded-full flex-shrink-0 flex items-center justify-center`,`bg-gray-100 text-gray-400 dark:bg-dark-300 dark:text-dark-500`,`disabled:cursor-not-allowed disabled:opacity-70`,`transition-colors duration-150 touch-manipulation`,i.trim()&&!n&&j&&[`bg-gray-950 text-white hover:bg-gray-800`,`dark:bg-white dark:text-gray-950 dark:hover:bg-gray-100`,`shadow-sm`]),title:r(`chat.input.sendMessage`),children:(0,X.jsx)(u,{className:`h-4 w-4`})})]})]})}),w&&k.length>0&&(0,X.jsx)(`div`,{className:`mt-3 sm:hidden`,children:(0,X.jsx)(Ie,{models:k,selectedModel:A,onModelChange:F,getModelValue:be,currentPersona:h,className:`w-full`,compact:!0,showImageGen:C})}),(0,X.jsxs)(`div`,{className:`mt-1.5 flex min-h-4 items-center justify-center gap-2 text-[10px] text-gray-400 dark:text-dark-500`,children:[(0,X.jsx)(Wt,{sessionId:w?.id}),(0,X.jsxs)(`div`,{className:`text-center leading-relaxed`,children:[(0,X.jsx)(`span`,{children:r(`chat.footer.disclaimer`)}),I&&(0,X.jsxs)(`span`,{className:`ms-2 text-primary-600 dark:text-primary-400`,children:[`•`,` `,o.length>0&&r(`chat.footer.images`,{count:o.length}),o.length>0&&l&&` • `,l&&r(`chat.footer.structuredOutput`)]})]})]})]})]})})},Xt=({persona:e,onClear:t,className:n})=>{let[r,i]=(0,Y.useState)(!1),a=(0,Y.useRef)(null),[o,s]=(0,Y.useState)({top:0,left:0});(0,Y.useEffect)(()=>{if(r&&a.current){let e=a.current.getBoundingClientRect(),t=document.documentElement.dir===`rtl`?e.right-288:e.left;s({top:e.bottom+8,left:Math.min(window.innerWidth-288-8,Math.max(8,t))})}},[r]);let c=!!(e.memory_settings?.enabled||e.mutation_settings?.enabled),u=()=>ue(e,64),d=t=>{de(t.currentTarget,e.name,64)};return(0,X.jsxs)(`div`,{className:W(`relative`,n),children:[(0,X.jsxs)(`button`,{ref:a,onClick:()=>i(!r),className:W(`flex items-center gap-2 px-3 py-1.5 rounded-full transition-all duration-200`,`bg-primary-50 dark:bg-primary-900/30`,`border border-primary-200 dark:border-primary-700/50`,`hover:bg-primary-100 dark:hover:bg-primary-900/40`,`text-primary-700 dark:text-primary-300`),children:[(0,X.jsx)(`img`,{src:u(),alt:e.name,className:`w-5 h-5 rounded-full object-cover`,onError:d}),(0,X.jsx)(`span`,{className:`text-sm font-medium max-w-[120px] truncate`,children:e.name}),c&&(0,X.jsx)(E,{className:`h-3 w-3 text-purple-500 dark:text-purple-400`}),(0,X.jsx)(h,{className:W(`h-3.5 w-3.5 transition-transform duration-200`,r&&`rotate-180`)})]}),r&&(0,Le.createPortal)((0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`div`,{className:`fixed inset-0 z-[9998]`,onClick:()=>i(!1)}),(0,X.jsx)(`div`,{className:`fixed w-72 z-[9999]`,style:{top:o.top,left:o.left},children:(0,X.jsxs)(`div`,{className:W(`rounded-xl overflow-hidden shadow-xl`,`bg-white dark:bg-dark-100`,`border border-gray-200 dark:border-dark-300`),children:[(0,X.jsxs)(`div`,{className:`relative h-16`,children:[e.background?(0,X.jsx)(`div`,{className:`absolute inset-0 bg-cover bg-center`,style:{backgroundImage:`url(${e.background})`}}):(0,X.jsx)(`div`,{className:`absolute inset-0 bg-gradient-to-br from-primary-400 via-primary-500 to-purple-600 dark:from-primary-600 dark:via-primary-700 dark:to-purple-800`}),(0,X.jsx)(`div`,{className:`absolute inset-0 bg-black/10`}),t&&(0,X.jsx)(`button`,{onClick:e=>{e.stopPropagation(),t(),i(!1)},className:`absolute top-2 end-2 p-1 rounded-full bg-white/20 hover:bg-white/30 backdrop-blur-sm transition-colors`,title:`Remove persona`,children:(0,X.jsx)(j,{className:`h-3.5 w-3.5 text-white`})}),c&&(0,X.jsxs)(`div`,{className:`absolute top-2 start-2 flex items-center gap-1 px-2 py-0.5 rounded-full bg-white/20 backdrop-blur-sm text-white text-[10px] font-medium`,children:[(0,X.jsx)(oe,{className:`h-3 w-3`}),`Enhanced`]})]}),(0,X.jsx)(`div`,{className:`relative px-4 -mt-6`,children:(0,X.jsx)(`img`,{src:u(),alt:e.name,className:`w-12 h-12 rounded-lg object-cover ring-3 ring-white dark:ring-dark-100 shadow-md`,onError:d})}),(0,X.jsxs)(`div`,{className:`px-4 pt-2 pb-4`,children:[(0,X.jsx)(`h4`,{className:`text-base font-semibold text-gray-900 dark:text-gray-100`,children:e.name}),(0,X.jsxs)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400 flex items-center gap-1 mt-0.5`,children:[(0,X.jsx)(V,{className:`h-3 w-3`}),e.model]}),e.description&&(0,X.jsx)(`p`,{className:`text-xs text-gray-600 dark:text-gray-400 mt-2 line-clamp-2`,children:e.description}),e.parameters.system_prompt&&(0,X.jsxs)(`div`,{className:`mt-3 p-2 rounded-lg bg-gray-50 dark:bg-dark-50 border border-gray-100 dark:border-dark-200`,children:[(0,X.jsxs)(`div`,{className:`flex items-center gap-1 mb-1`,children:[(0,X.jsx)(l,{className:`h-2.5 w-2.5 text-gray-400`}),(0,X.jsx)(`span`,{className:`text-[9px] uppercase tracking-wider font-medium text-gray-400`,children:`System`})]}),(0,X.jsxs)(`p`,{className:`text-[11px] text-gray-600 dark:text-gray-400 line-clamp-2 italic`,children:[`“`,e.parameters.system_prompt,`”`]})]}),(0,X.jsxs)(`div`,{className:`flex flex-wrap gap-1 mt-3`,children:[(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-[10px] font-medium bg-gray-100 dark:bg-dark-200 text-gray-600 dark:text-gray-400`,children:[(0,X.jsx)(re,{className:`h-2.5 w-2.5`}),e.parameters.temperature?.toFixed(1)||`0.7`]}),(0,X.jsxs)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium bg-gray-100 dark:bg-dark-200 text-gray-600 dark:text-gray-400`,children:[`Top-P `,e.parameters.top_p?.toFixed(1)||`0.9`]}),e.memory_settings?.enabled&&(0,X.jsxs)(`span`,{className:`inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-[10px] font-medium bg-purple-100 dark:bg-purple-900/30 text-purple-700 dark:text-purple-300`,children:[(0,X.jsx)(oe,{className:`h-2.5 w-2.5`}),`Memory`]})]})]})]})})]}),document.body)]})},Zt=({images:e,onImagesChange:t,maxImages:n=5,className:r})=>{let{t:i}=s(),a=(0,Y.useRef)(null),[o,c]=(0,Y.useState)(!1),l=r=>{if(!r)return;let i=[],a=n-e.length;for(let n=0;n<Math.min(r.length,a);n++){let o=r[n];if(!o.type.startsWith(`image/`)){F.error(`File ${o.name} is not an image`);continue}if(o.size>10*1024*1024){F.error(`Image ${o.name} is too large (max 10MB)`);continue}let s=new FileReader;s.onload=n=>{n.target?.result&&(i.push(n.target.result),i.length===Math.min(r.length,a)&&t([...e,...i]))},s.readAsDataURL(o)}r.length>a&&F.error(`Only ${a} more images can be added`)},u=e=>{e.preventDefault(),c(!0)},d=e=>{e.preventDefault(),c(!1)},f=e=>{e.preventDefault(),c(!1),l(e.dataTransfer.files)},p=n=>{t(e.filter((e,t)=>t!==n))},m=e.length<n;return(0,X.jsxs)(`div`,{className:W(`space-y-3`,r),children:[m&&(0,X.jsxs)(`div`,{className:W(`border-2 border-dashed border-gray-300 dark:border-gray-600 rounded-lg p-4 transition-colors`,`hover:border-primary-400 dark:hover:border-primary-500`,o&&`border-primary-500 bg-primary-50 dark:bg-primary-900/20`),onDragOver:u,onDragLeave:d,onDrop:f,children:[(0,X.jsx)(`input`,{ref:a,type:`file`,multiple:!0,accept:`image/*`,onChange:e=>l(e.target.files),className:`hidden`}),(0,X.jsxs)(`div`,{className:`flex flex-col items-center text-center`,children:[(0,X.jsx)(z,{className:`h-8 w-8 text-gray-400 dark:text-gray-500 mb-2`}),(0,X.jsxs)(`p`,{className:`text-sm text-gray-700 dark:text-gray-300 mb-2`,children:[i(`chat.mediaUpload.dropImagesHere`),` `,(0,X.jsx)(`button`,{onClick:()=>a.current?.click(),className:`text-primary-600 dark:text-primary-400 hover:underline font-medium`,children:i(`chat.mediaUpload.browse`)})]}),(0,X.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-gray-400`,children:i(`chat.mediaUpload.supportedFormats`)})]})]}),e.length>0&&(0,X.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-3`,children:e.map((e,t)=>(0,X.jsxs)(`div`,{className:`relative group aspect-square rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-800 border border-gray-200 dark:border-gray-700`,children:[(0,X.jsx)(`img`,{src:e,alt:`Upload ${t+1}`,className:`w-full h-full object-cover`}),(0,X.jsx)(`div`,{className:`absolute inset-0 bg-black bg-opacity-0 group-hover:bg-opacity-50 transition-all duration-200 flex items-center justify-center`,children:(0,X.jsx)(J,{variant:`ghost`,size:`sm`,onClick:()=>p(t),className:`opacity-0 group-hover:opacity-100 transition-opacity bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 hover:bg-red-100 dark:hover:bg-red-900/20 hover:text-red-600 dark:hover:text-red-400 p-1 rounded-full`,children:(0,X.jsx)(j,{className:`h-4 w-4`})})})]},t))}),m&&e.length>0&&(0,X.jsxs)(J,{variant:`outline`,size:`sm`,onClick:()=>a.current?.click(),className:`w-full sm:w-auto`,children:[(0,X.jsx)(b,{className:`h-4 w-4 mr-2`}),`Add More Images (`,e.length,`/`,n,`)`]})]})},$=U(`use-chat`),Qt=new Set([`New Chat`,`New Demo Session`]),$t=e=>!e||Qt.has(e),en=e=>{let[t,n]=(0,Y.useState)(``),[r,i]=(0,Y.useState)(null),[a,o]=(0,Y.useState)(!1),[s,c]=(0,Y.useState)([]),{addMessage:l,updateMessage:u,updateMessageWithStatistics:d,applySessionTitle:f,setGeneratingTitleForSession:p}=K(),{setIsGenerating:m,preferences:h}=q(),g=(0,Y.useRef)(null),_=(0,Y.useRef)(null),v=(0,Y.useRef)(!1),y=(0,Y.useRef)(null),b=(0,Y.useRef)(``),x=(0,Y.useRef)(0),S=(0,Y.useRef)(void 0),C=(0,Y.useRef)(null),w=(0,Y.useRef)(``),T=(0,Y.useCallback)(()=>{C.current!==null&&typeof window<`u`&&window.cancelAnimationFrame(C.current),C.current=null},[]),E=(0,Y.useCallback)((e,t=!1)=>{if(w.current=e,t||typeof window>`u`){T(),n(e);return}C.current===null&&(C.current=window.requestAnimationFrame(()=>{C.current=null,n(w.current)}))},[T]),D=(0,Y.useCallback)(()=>{T(),w.current=``,n(``)},[T]),O=(0,Y.useCallback)(()=>{_.current=null,v.current=!1,y.current=null},[]),k=(0,Y.useCallback)(async e=>{let t=q.getState().preferences.titleSettings,n=_.current,r=v.current&&y.current===e;if($.debug(`Auto-title check:`,{firstMessage:n,autoTitle:t?.autoTitle,taskModel:t?.taskModel,shouldGenerateTitle:r}),!n||!r||!t?.autoTitle||!t?.taskModel){O();return}O(),$.debug(`Triggering auto-title generation...`),p(e);try{let r=await se.generateTitle(e,t.taskModel,n,t.taskProviderType,t.taskProviderId);if($.debug(`Title generation response:`,r),!r.success||!r.data?.title)throw Error(r.error||`Title generation returned no title`);f(e,r.data.title,r.data.updatedAt),r.data.source===`fallback`?F.error(`Could not generate a title; using the message preview`):F.success(`Chat title generated`)}catch(e){$.error(`Failed to generate title:`,e),F.error(`Failed to generate chat title`)}finally{p(null)}},[f,O,p]);return(0,Y.useEffect)(()=>()=>{G.offMessage(`user_message`),G.offMessage(`assistant_chunk`),G.offMessage(`assistant_complete`),G.offMessage(`tool_status`),G.offMessage(`error`)},[e]),(0,Y.useEffect)(()=>{if(!e){G.offMessage(`user_message`),G.offMessage(`assistant_chunk`),G.offMessage(`assistant_complete`),G.offMessage(`tool_status`),G.offMessage(`error`);return}return G.onMessage(`user_message`,()=>{}),G.onMessage(`assistant_chunk`,t=>{let n=t,r=n.messageId||g.current;r&&(b.current=n.total,E(n.total,n.done),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{u(e,r,b.current),x.current=Date.now()},n.done?0:200))}),G.onMessage(`tool_status`,e=>{let t=e;c(e=>e.find(e=>e.toolCallId===t.toolCallId)?e.map(e=>e.toolCallId===t.toolCallId?{...e,phase:t.phase}:e):[...e,{toolCallId:t.toolCallId,name:t.name,phase:t.phase,startedAt:Date.now()}])}),G.onMessage(`assistant_complete`,t=>{let n=t;$.debug(`Hook: Received assistant_complete for session:`,e,`messageId:`,n.messageId,`with statistics:`,!!n.statistics),o(!1),D(),m(!1),c([]);let r=n.messageId||g.current;n&&r&&d(e,r,b.current||n.content,n.statistics,n.providerMetadata),k(e),g.current=null,b.current=``,S.current&&clearTimeout(S.current),x.current=0}),G.onMessage(`error`,e=>{let t=e;if(o(!1),D(),m(!1),g.current=null,t.code===`SESSION_NOT_FOUND`){$.warn(`Session not found, redirecting to create new session...`),F.error(`Session not found. Creating a new session...`),window.location.href=`/`;return}F.error(t.error),O()}),o(!1),D(),g.current=null,()=>{S.current&&clearTimeout(S.current),T()}},[e,u,d,m,E,D,T,k,O]),{sendMessage:(0,Y.useCallback)(async(t,n,r)=>{if(!(!e||!t.trim()&&(!n||n.length===0)))try{let a=K.getState(),s=a.currentSession,c={model:s?.personaId?`persona:${s.personaId}`:s?.model||``,providerType:s?.providerType,providerId:s?.providerId};if(!ye(a.models,c)){F.error(`Select an available model before sending`);return}m(!0),o(!0),D(),S.current&&clearTimeout(S.current),x.current=Date.now();let d=s?.isPrivate===!0,f=s?.messages?.some(e=>e.role===`user`);!d&&!f&&$t(s?.title)?(_.current=t.trim(),v.current=!0,y.current=e):(_.current=null,v.current=!1,y.current=null),l(e,{role:`user`,content:t.trim(),images:n});let p=ve();if(g.current=p,i(p),l(e,{role:`assistant`,content:``,id:p}),H()){let n=`Demo response for: ${t.trim()}`;window.setTimeout(()=>{u(e,p,n),o(!1),D(),i(null),m(!1),k(e),g.current=null,b.current=``},500);return}G.isConnected||await G.connect();let C=d?s?.messages?.filter(e=>e.role!==`system`&&e.id!==p).map(e=>({role:e.role,content:e.content,images:e.images,providerMetadata:e.providerMetadata})):void 0;G.send({type:`chat_stream`,data:{sessionId:e,content:t.trim(),images:n,format:r,options:h.generationOptions,assistantMessageId:p,isPrivate:d,...d?{model:s?.model,providerType:s?.providerType,providerId:s?.providerId,messageHistory:C}:{}}})}catch(e){$.error(`Failed to send message:`,e),o(!1),D(),i(null),m(!1),g.current=null,F.error(`Failed to send message`)}},[e,l,u,m,D,k,h.generationOptions]),stopGeneration:(0,Y.useCallback)(()=>{o(!1),D(),i(null),m(!1),g.current=null},[m,D]),regenerateLastMessage:(0,Y.useCallback)(async()=>{let t=K.getState(),n=t.currentSession;if(!n||!e)return;if(!ye(t.models,{model:n.personaId?`persona:${n.personaId}`:n.model,providerType:n.providerType,providerId:n.providerId})){F.error(`Select an available model before regenerating`);return}let r=n.messages,a=-1,s=-1;for(let e=r.length-1;e>=0;e--)if(r[e].role===`assistant`){s=e;break}if(s>0){for(let e=s-1;e>=0;e--)if(r[e].role===`user`){a=e;break}}if(a===-1||s===-1){F.error(`No message to regenerate`);return}let c=r[a],u=r[s];try{m(!0),o(!0),D(),S.current&&clearTimeout(S.current),x.current=Date.now();let t=ve();g.current=t,i(t),l(e,{role:`assistant`,content:``,id:t,parentId:u.parentId||u.id,branchIndex:u.siblingCount||1,isActive:!0}),G.isConnected||await G.connect();let a=n.isPrivate===!0,s=a?r.filter(e=>e.role!==`system`).map(e=>({role:e.role,content:e.content,images:e.images,providerMetadata:e.providerMetadata})):void 0;G.send({type:`chat_stream`,data:{sessionId:e,content:c.content,images:c.images,options:h.generationOptions,assistantMessageId:t,regenerate:!0,originalMessageId:u.id,isPrivate:a,...a?{model:n.model,providerType:n.providerType,providerId:n.providerId,messageHistory:s}:{}}})}catch(e){$.error(`Failed to regenerate message:`,e),o(!1),D(),i(null),m(!1),g.current=null,F.error(`Failed to regenerate message`)}},[e,m,D,l,h.generationOptions]),selectBranch:(0,Y.useCallback)(async t=>{let n=K.getState().currentSession;if(!n||!e)return;let r=n.messages.find(e=>e.id===t);if(!r){F.error(`Message not found`);return}if(r.isActive!==!1)return;let i=r.parentId||r.id,a=r.branchIndex||0;try{let r=await se.switchMessageBranch(e,t,a);if(r.success&&r.data){let r=n.messages.map(e=>e.id===i||e.parentId===i?{...e,isActive:e.id===t}:e),o={...n,messages:r,updatedAt:Date.now()};K.setState(t=>({sessions:t.sessions.map(t=>t.id===e?o:t),currentSession:o})),F.success(`Switched to variant ${a+1}`)}else F.error(r.error||`Failed to select branch`)}catch(e){$.error(`Failed to select branch:`,e),F.error(`Failed to select branch`)}},[e]),isStreaming:a,streamingMessage:t,streamingMessageId:r,toolActivities:s}},tn=U(`pages:chat-page`),nn=(e,t,n=!1)=>{let r=new Date().getHours(),i=e?`${n?`،`:`,`} \u2068${e}\u2069`:``;return r>=5&&r<12?{id:`time`,title:`${t?t(`chat.greeting.morning`):`Good morning`}${i}`,subtitle:t?t(`chat.welcome.helpToday`):`What can I help with today?`}:r>=12&&r<17?{id:`time`,title:`${t?t(`chat.greeting.afternoon`):`Good afternoon`}${i}`,subtitle:t?t(`chat.welcome.helpToday`):`What can I help with today?`}:r>=17&&r<21?{id:`time`,title:`${t?t(`chat.greeting.evening`):`Good evening`}${i}`,subtitle:t?t(`chat.welcome.helpTonight`):`What can I help with tonight?`}:{id:`time`,title:`${t?t(`chat.greeting.night`):`Good night`}${i}`,subtitle:t?t(`chat.welcome.helpTonight`):`What can I help with tonight?`}},rn=(e,t,n,r=!1)=>{let i=De(e);return i===`time`?nn(t,n,r):{id:i,title:n?n(`chat.welcome.variety.${i}.title`):`What should we make?`,subtitle:n?n(`chat.welcome.variety.${i}.subtitle`):`Start with a thought, a sketch, or a stubborn problem.`}},an=()=>{let{t:e,i18n:t}=s(),{sessionId:n}=a(),r=i(),c=o(),{currentSession:l,sessions:d,models:f,selectedModel:p,selectedProviderType:h,selectedProviderId:g,setSelectedModel:_,createSession:v,setCurrentSession:y,loadSessions:b,getCurrentPersona:x}=K(),{user:S}=Ce(),C=q(e=>e.preferences.imageGenSettings?.enabled===!0),{sendMessage:w,stopGeneration:T,regenerateLastMessage:E,selectBranch:D,isStreaming:O,streamingMessage:k,streamingMessageId:A,toolActivities:j}=en(l?.id||``),M=x(),N=(0,Y.useMemo)(()=>({model:p,providerType:h,providerId:g}),[p,g,h]),P=(0,Y.useMemo)(()=>Te(f,N),[f,N]),I=p?Se(P,N):``,L=ye(f,N),R=new URLSearchParams(c.search).get(`incognito`)===`1`,[te,re]=(0,Y.useState)(je),z=(0,Y.useMemo)(()=>rn(te,S?.username,e,Ae(t.language)),[t.language,e,S?.username,te]),[B,ie]=(0,Y.useState)(``),[V,oe]=(0,Y.useState)([]),[H,U]=(0,Y.useState)(!1),ce=(0,Y.useRef)(null);(0,Y.useEffect)(()=>{let e=()=>{re(je())};return window.addEventListener(Ee,e),()=>window.removeEventListener(Ee,e)},[]);let[le,ue]=(0,Y.useState)(!1),de=C&&le,pe=(0,Y.useCallback)((t=!0)=>{let n=p?N:f[0]?we(f[0]):null;if(!n||!ye(f,n))return t&&F.error(e(`chat.model.selectBeforePrivateChat`)),!1;let r=Date.now();return y({id:`private-${r}`,title:e(`chat.session.incognito`,`Incognito Chat`),model:n.model,providerType:n.providerType,providerId:n.providerId,messages:[],createdAt:r,updatedAt:r,isPrivate:!0}),!0},[f,p,N,y,e]);(0,Y.useEffect)(()=>{d.length===0&&b()},[b,d.length]),(0,Y.useEffect)(()=>{!R||l?.isPrivate||pe(!1)},[l?.isPrivate,R,pe]),(0,Y.useEffect)(()=>{let e=!1;return C&&(async()=>{try{let t=await fe.getPlugins();if(e)return;ue(!!(t.success&&t.data&&t.data.length>0))}catch{if(e)return;ue(!1)}})(),()=>{e=!0}},[C]),(0,Y.useEffect)(()=>{(()=>{if(sessionStorage.getItem(`forceWelcomeScreen`)){sessionStorage.removeItem(`forceWelcomeScreen`);return}if(!(l?.isPrivate&&!n)&&d.length!==0)if(n){let e=d.find(e=>e.id===n);e&&e.id!==l?.id?y(e):e||(tn.warn(`Session ${n} not found for current user, redirecting...`),d.length>0?r(`/c/${d[0].id}`,{replace:!0}):r(`/`,{replace:!0}))}else!n&&d.length>0&&c.pathname===`/`&&r(`/c/${d[0].id}`,{replace:!0})})()},[n,d,y,r,l?.id,l?.isPrivate,c.pathname]),(0,Y.useEffect)(()=>{if(l?.id){let e=sessionStorage.getItem(`pendingMessage`);if(e){sessionStorage.removeItem(`pendingMessage`);try{let t=JSON.parse(e);setTimeout(()=>{w(t.content,t.images)},100)}catch(e){tn.error(`Failed to parse pending message:`,e)}}}},[l?.id,w]),(0,Y.useEffect)(()=>{let e=ce.current;e&&(e.style.height=`auto`,e.style.height=Math.min(e.scrollHeight,200)+`px`)},[B]);let me=async t=>{if(t.preventDefault(),!B.trim()||!p)return;if(!L){F.error(e(`chat.model.selectBeforeSending`));return}let n={content:B.trim(),images:V.length>0?V:void 0};sessionStorage.setItem(`pendingMessage`,JSON.stringify(n)),ie(``),oe([]);let i=await v(p,void 0,p.startsWith(`persona:`)?p.slice(8):void 0,h,g);i&&r(`/c/${i.id}`,{replace:!0})},he=e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),me(e))},ge=async e=>{let t=xe(P,e.target.value);t&&_(t.model,t.providerType,t.providerId)},_e=(e,t,n)=>{l&&w(e,t,n)};if(!l){let t=V.length>0;return(0,X.jsxs)(`div`,{className:`relative h-full flex-1 overflow-y-auto overflow-x-hidden px-4 py-20 sm:px-8 sm:py-24`,children:[(0,X.jsxs)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0`,children:[(0,X.jsx)(`div`,{className:`absolute left-[12%] top-[18%] h-56 w-56 rounded-full bg-primary-500/[0.035] blur-3xl dark:bg-primary-400/[0.04]`}),(0,X.jsx)(`div`,{className:`absolute bottom-[16%] right-[10%] h-72 w-72 rounded-full bg-gray-900/[0.025] blur-3xl dark:bg-white/[0.025]`}),(0,X.jsx)(`div`,{className:`absolute left-1/2 top-0 h-16 w-px bg-gray-300/60 dark:bg-white/10`})]}),(0,X.jsxs)(`button`,{onClick:()=>pe(),disabled:!p&&f.length===0||!!p&&!L,className:`absolute end-4 top-4 z-10 flex items-center gap-2 rounded-full border border-black/[0.07] bg-surface/65 px-3 py-2 text-xs font-medium text-gray-500 backdrop-blur-md transition-colors duration-150 hover:bg-surface-raised hover:text-gray-950 disabled:cursor-not-allowed disabled:opacity-50 dark:border-white/[0.08] dark:bg-dark-200/65 dark:text-dark-600 dark:hover:bg-dark-200 dark:hover:text-dark-950 sm:end-6 sm:top-6`,title:e(`chat.session.privateTooltip`),children:[(0,X.jsx)(ne,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{children:e(`chat.session.incognito`,`Incognito Chat`)})]}),(0,X.jsxs)(`div`,{className:`relative z-[1] mx-auto flex min-h-full w-full max-w-3xl flex-col items-center justify-center`,children:[(0,X.jsxs)(`div`,{className:`mb-10 flex flex-col items-center text-center animate-fade-in sm:mb-12`,"aria-live":`polite`,children:[(0,X.jsx)(`h1`,{className:`mb-4 max-w-3xl text-balance text-[clamp(2.65rem,7vw,5.25rem)] font-light leading-[0.98] tracking-[-0.055em] text-gray-950 dark:text-dark-950 rtl:leading-[1.12] rtl:tracking-normal`,children:z.title}),(0,X.jsx)(`p`,{className:`max-w-xl text-balance text-base leading-relaxed text-gray-500 dark:text-dark-600 sm:text-lg`,children:z.subtitle})]},z.id),P.length>0?(0,X.jsxs)(`div`,{className:`w-full`,children:[H&&(0,X.jsx)(`div`,{className:`mb-3 animate-slide-up rounded-2xl border border-black/[0.07] bg-surface/80 p-4 shadow-sm backdrop-blur-xl dark:border-white/[0.08] dark:bg-dark-200/80`,children:(0,X.jsx)(Zt,{images:V,onImagesChange:oe,maxImages:5})}),(0,X.jsx)(`form`,{onSubmit:me,children:(0,X.jsxs)(`div`,{className:W(`flex items-end gap-2 rounded-[1.35rem] border p-2 transition-[border-color,box-shadow,background-color] duration-200`,`border-black/[0.08] bg-surface/90 dark:border-white/[0.09] dark:bg-dark-200/90`,`shadow-[0_1px_2px_rgba(0,0,0,0.03),0_18px_50px_rgba(15,23,42,0.08)] backdrop-blur-xl`,`focus-within:border-primary-500/35 focus-within:shadow-[0_1px_2px_rgba(0,0,0,0.03),0_22px_65px_rgba(15,23,42,0.12)]`),children:[(0,X.jsx)(J,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>U(!H),className:W(`h-8 w-8 sm:h-9 sm:w-9 !p-0 rounded-full flex-shrink-0`,`text-gray-500 dark:text-dark-600 hover:bg-gray-100 dark:hover:bg-dark-300 transition-colors touch-manipulation`,t&&`text-primary-600 dark:text-primary-400`,H&&`bg-gray-100 dark:bg-dark-300`),title:e(`chat.input.attachImages`),children:t?(0,X.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,X.jsx)(m,{className:`h-4 w-4`}),(0,X.jsx)(`div`,{className:`absolute -top-0.5 -end-0.5 h-1.5 w-1.5 bg-primary-500 rounded-full`})]}):H?(0,X.jsx)(ae,{className:`h-4 w-4`}):(0,X.jsx)(ee,{className:`h-4 w-4`})}),(0,X.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,X.jsx)(Bt,{ref:ce,value:B,onChange:e=>ie(e.target.value),onKeyDown:he,placeholder:e(`chat.input.messagePlaceholder`),className:`!m-0 min-h-[36px] max-h-[160px] resize-none !rounded-none !border-0 !bg-transparent !p-1.5 !shadow-none scrollbar-thin scrollbar-thumb-gray-300 placeholder:text-gray-400 focus:!border-0 focus:!bg-transparent focus:!shadow-none focus:!ring-0 dark:scrollbar-thumb-dark-400 dark:placeholder:text-dark-500 text-[0.9375rem] leading-relaxed touch-manipulation`,rows:1})}),(0,X.jsx)(`div`,{className:`hidden sm:block`,children:(0,X.jsx)(Ie,{models:P,selectedModel:I,onModelChange:ge,getModelValue:be,className:`min-w-[140px] max-w-[210px]`,compact:!0,showImageGen:de})}),(0,X.jsx)(J,{type:`submit`,variant:`ghost`,size:`sm`,disabled:!B.trim()||!p||!L,className:W(`h-8 w-8 sm:h-9 sm:w-9 p-0 rounded-full flex-shrink-0 flex items-center justify-center`,`bg-gray-950 text-white hover:bg-gray-800 dark:bg-white dark:text-gray-950 dark:hover:bg-gray-100`,`disabled:bg-gray-100 disabled:text-gray-400 dark:disabled:bg-dark-300 dark:disabled:text-dark-500 disabled:hover:bg-gray-100 dark:disabled:hover:bg-dark-300`,`transition-colors duration-150 touch-manipulation`,B.trim()&&p&&`shadow-sm`),title:e(`chat.input.sendMessage`),children:(0,X.jsx)(u,{className:`h-4 w-4`})})]})}),(0,X.jsx)(`div`,{className:`sm:hidden mt-4`,children:(0,X.jsx)(Ie,{models:P,selectedModel:I,onModelChange:ge,getModelValue:be,className:`w-full`,compact:!0,showImageGen:de})}),(0,X.jsx)(`p`,{className:`mt-4 text-center text-[10px] leading-relaxed text-gray-400 dark:text-dark-500`,children:e(`chat.footer.disclaimer`)})]}):(0,X.jsx)(`div`,{className:`w-full max-w-lg`,children:(0,X.jsxs)(`div`,{className:`rounded-2xl border border-black/[0.07] bg-surface/70 p-6 backdrop-blur-xl dark:border-white/[0.08] dark:bg-dark-200/70`,children:[(0,X.jsx)(`p`,{className:`mb-4 text-sm leading-relaxed text-gray-600 dark:text-dark-700`,children:e(`chat.model.noModelsDescription`)}),(0,X.jsx)(`code`,{className:`block rounded-xl bg-gray-100 p-3 font-mono text-xs text-gray-800 dark:bg-dark-300 dark:text-dark-700`,children:e(`chat.model.pullCommand`)})]})})]})]})}return(0,X.jsxs)(`div`,{className:`relative flex h-full flex-col`,style:M?.background?{backgroundImage:`url(${M.background})`,backgroundSize:`cover`,backgroundPosition:`center`,backgroundRepeat:`no-repeat`}:void 0,children:[M?.background&&(0,X.jsx)(`div`,{className:`absolute inset-0 bg-gray-50/[0.88] backdrop-blur-sm dark:bg-dark-100/[0.88]`}),(0,X.jsxs)(`div`,{className:`relative z-10 flex h-full flex-col`,children:[l?.isPrivate&&(0,X.jsx)(`div`,{className:`flex-shrink-0 border-b border-black/[0.05] bg-surface/55 px-4 py-2 backdrop-blur-xl dark:border-white/[0.06] dark:bg-dark-100/55`,children:(0,X.jsxs)(`div`,{className:`flex items-center justify-center gap-2 text-gray-500 dark:text-dark-600`,children:[(0,X.jsx)(ne,{className:`h-3.5 w-3.5`}),(0,X.jsx)(`span`,{className:`text-xs font-medium`,children:e(`chat.session.privateMode`)}),(0,X.jsxs)(`span`,{className:`hidden text-[11px] text-gray-400 dark:text-dark-500 sm:inline`,children:[`— `,e(`chat.session.privateDescription`)]})]})}),M&&!l?.isPrivate&&(0,X.jsx)(`div`,{className:`flex-shrink-0 border-b border-black/[0.05] bg-surface/55 px-4 py-2 backdrop-blur-xl dark:border-white/[0.06] dark:bg-dark-100/55`,children:(0,X.jsx)(Xt,{persona:M,onClear:()=>{l&&se.updateSession(l.id,{model:M.model,providerType:`ollama`,providerId:null,personaId:null}).then(e=>{if(!e.success||!e.data)throw Error(e.error||`Failed to remove persona`);K.setState(t=>({sessions:t.sessions.map(t=>t.id===l.id?e.data:t),currentSession:e.data}))}).catch(t=>{tn.error(`Failed to remove persona:`,t),F.error(e(`chat.persona.removeFailed`))})}})}),(0,X.jsx)(Rt,{messages:l.messages,streamingMessage:k,streamingMessageId:A,isStreaming:O,toolActivities:j,onRegenerate:E,onSelectBranch:D,className:`flex-1`}),(0,X.jsx)(Yt,{onSendMessage:_e,onStopGeneration:T,disabled:!l})]})]})};export{an as ChatPage,an as default};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{d as t,f as n}from"./markdown-core-GI9BPwrB.js";import{t as r}from"./useTranslation-Cs6iTP4m.js";import{J as i,Pt as a,Wt as o,Xt as s,c,fn as l,rt as u,t as d,v as f,vt as p,wt as m,yt as h}from"./ui-vendor-ChfdHf5M.js";import{t as g}from"./logger-DbNs3-DK.js";import{O as _}from"./api-BCqWXjZI.js";import{n as v}from"./authStore-Bl5ofD_h.js";import{o as y,t as b}from"../assets/index-CmZntyR1.js";var x=e(n(),1),S=t(),C=g(`components:first-time-setup`),w=({onComplete:e})=>{let{t}=r(),[n,g]=(0,x.useState)(`welcome`),[w,T]=(0,x.useState)(``),[E,D]=(0,x.useState)(``),[O,k]=(0,x.useState)(``),[A,j]=(0,x.useState)(!1),[M,N]=(0,x.useState)(!1),[P,F]=(0,x.useState)(!1),[I,L]=(0,x.useState)(null),[R,z]=(0,x.useState)(!1),[B,V]=(0,x.useState)(!1),[H,U]=(0,x.useState)(``),{login:W,systemInfo:G}=v(),K=G?.turnstile?.siteKey,q=!!(G?.turnstile?.enabled&&K),J=(0,x.useCallback)(e=>{U(e)},[]),Y=(0,x.useMemo)(()=>P||q&&!H,[P,q,H]);(0,x.useEffect)(()=>{n===`encryption-key`&&!I&&_.getEncryptionKey().then(e=>{e.success&&e.data&&L(e.data.encryptionKey)})},[n,I]);let X=async e=>{if(e.preventDefault(),!w.trim()||!E.trim()||!O.trim()){l.error(t(`setup.admin.fillAllFields`));return}if(E!==O){l.error(t(`auth.signup.passwordMismatch`));return}if(E.length<6){l.error(t(`auth.signup.passwordTooShort`));return}if(q&&!H){l.error(t(`auth.signup.tryAgain`));return}F(!0);try{let e=await _.signup({username:w,password:E,email:``,turnstileToken:H});if(e.success&&e.data){if(!(`token`in e.data)){l.error(t(`setup.admin.approvalUnexpected`,`The initial administrator could not be activated. Please try again.`));return}W(e.data.user,e.data.token,e.data.systemInfo),l.success(t(`setup.admin.success`)),g(`encryption-key`)}else l.error(e.message||t(`setup.admin.failed`))}catch(e){C.error(`Admin creation error:`,e),l.error(t(`setup.admin.failed`))}finally{U(``),F(!1)}},Z=async()=>{if(I)try{await navigator.clipboard.writeText(I),z(!0),l.success(t(`setup.encryptionKey.copied`)),setTimeout(()=>z(!1),3e3)}catch{l.error(t(`setup.encryptionKey.copyFailed`))}},Q=()=>{if(!B){l.error(t(`setup.encryptionKey.confirmRequired`));return}e?.()},$=e=>{if(e.key===`Enter`){let t=e.currentTarget.form;t&&t.requestSubmit()}};return n===`welcome`?(0,S.jsxs)(`div`,{className:`min-h-screen bg-gray-50 px-4 py-16 dark:bg-dark-50 sm:px-6 lg:flex lg:flex-col lg:justify-center lg:py-20`,children:[(0,S.jsx)(`div`,{className:`sm:mx-auto sm:w-full sm:max-w-md`,children:(0,S.jsx)(`div`,{className:`flex flex-col items-center`,children:(0,S.jsx)(y,{className:`text-gray-900 dark:text-gray-100`})})}),(0,S.jsx)(`div`,{className:`mt-10 sm:mx-auto sm:w-full sm:max-w-md`,children:(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-md rounded-2xl border border-gray-200/80 bg-white/80 p-6 shadow-sm backdrop-blur-xl dark:border-white/10 dark:bg-white/[0.04] sm:p-8`,children:[(0,S.jsxs)(`div`,{className:`mb-7 text-start`,children:[(0,S.jsx)(`h1`,{className:`mb-2 text-2xl font-normal tracking-[-0.03em] text-gray-950 dark:text-dark-950`,children:t(`setup.welcome.subtitle`)}),(0,S.jsx)(`p`,{className:`text-gray-600 dark:text-dark-500`,children:t(`setup.welcome.description`)})]}),(0,S.jsxs)(`div`,{className:`mb-7 divide-y divide-gray-200/70 border-y border-gray-200/70 dark:divide-white/[0.08] dark:border-white/[0.08]`,children:[(0,S.jsxs)(`div`,{className:`flex items-start gap-3 py-4`,children:[(0,S.jsx)(`div`,{className:`flex-shrink-0 mt-1`,children:(0,S.jsx)(f,{className:`h-5 w-5 text-primary-600 dark:text-primary-400`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h3`,{className:`text-sm font-medium text-gray-900 dark:text-dark-950`,children:t(`setup.welcome.features.secure.title`)}),(0,S.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-500`,children:t(`setup.welcome.features.secure.description`)})]})]}),(0,S.jsxs)(`div`,{className:`flex items-start gap-3 py-4`,children:[(0,S.jsx)(`div`,{className:`flex-shrink-0 mt-1`,children:(0,S.jsx)(d,{className:`h-5 w-5 text-primary-600 dark:text-primary-400`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h3`,{className:`text-sm font-medium text-gray-900 dark:text-dark-950`,children:t(`setup.welcome.features.fast.title`)}),(0,S.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-500`,children:t(`setup.welcome.features.fast.description`)})]})]}),(0,S.jsxs)(`div`,{className:`flex items-start gap-3 py-4`,children:[(0,S.jsx)(`div`,{className:`flex-shrink-0 mt-1`,children:(0,S.jsx)(u,{className:`h-5 w-5 text-primary-600 dark:text-primary-400`})}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`h3`,{className:`text-sm font-medium text-gray-900 dark:text-dark-950`,children:t(`setup.welcome.features.openSource.title`)}),(0,S.jsx)(`p`,{className:`text-sm text-gray-600 dark:text-dark-500`,children:t(`setup.welcome.features.openSource.description`)})]})]})]}),(0,S.jsx)(`button`,{onClick:()=>g(`create-admin`),className:`flex min-h-11 w-full items-center justify-center rounded-xl border border-transparent bg-primary-600 px-4 py-2.5 text-sm font-medium text-white transition-colors duration-200 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2`,children:(0,S.jsxs)(`div`,{className:`flex items-center`,children:[(0,S.jsx)(`span`,{children:t(`setup.welcome.createAdmin`)}),(0,S.jsx)(o,{size:16,className:`ms-2 rtl:rotate-180`})]})})]})})]}):n===`encryption-key`?(0,S.jsxs)(`div`,{className:`min-h-screen bg-gray-50 px-4 py-16 dark:bg-dark-50 sm:px-6 lg:flex lg:flex-col lg:justify-center lg:py-20`,children:[(0,S.jsxs)(`div`,{className:`sm:mx-auto sm:w-full sm:max-w-md`,children:[(0,S.jsx)(`div`,{className:`flex flex-col items-center`,children:(0,S.jsx)(y,{className:`text-gray-900 dark:text-gray-100`})}),(0,S.jsx)(`h2`,{className:`mt-8 text-center text-3xl font-light tracking-[-0.035em] text-gray-950 dark:text-dark-950`,children:t(`setup.encryptionKey.title`)})]}),(0,S.jsx)(`div`,{className:`mt-10 sm:mx-auto sm:w-full sm:max-w-lg`,children:(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-lg rounded-2xl border border-gray-200/80 bg-white/80 p-6 shadow-sm backdrop-blur-xl dark:border-white/10 dark:bg-white/[0.04] sm:p-8`,children:[(0,S.jsxs)(`div`,{className:`mb-7 text-start`,children:[(0,S.jsx)(`div`,{className:`flex justify-center mb-4`,children:(0,S.jsx)(`div`,{className:`rounded-xl border border-amber-200 bg-amber-500/10 p-3 dark:border-amber-800/60 dark:bg-amber-900/20`,children:(0,S.jsx)(i,{className:`h-8 w-8 text-amber-600 dark:text-amber-400`})})}),(0,S.jsx)(`h1`,{className:`mb-2 text-2xl font-normal tracking-[-0.03em] text-gray-950 dark:text-dark-950`,children:t(`setup.encryptionKey.subtitle`)}),(0,S.jsx)(`p`,{className:`text-gray-600 dark:text-dark-500`,children:t(`setup.encryptionKey.description`)})]}),(0,S.jsx)(`div`,{className:`mb-6 rounded-xl border border-amber-200 bg-amber-500/10 p-4 dark:border-amber-800/60 dark:bg-amber-900/20`,children:(0,S.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,S.jsx)(s,{className:`h-5 w-5 text-amber-600 dark:text-amber-400 flex-shrink-0 mt-0.5`}),(0,S.jsxs)(`div`,{className:`text-sm text-ink`,children:[(0,S.jsx)(`p`,{className:`font-medium mb-1`,children:t(`setup.encryptionKey.warning`)}),(0,S.jsx)(`p`,{children:t(`setup.encryptionKey.warningText`)})]})]})}),(0,S.jsxs)(`div`,{className:`mb-6`,children:[(0,S.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2`,children:t(`setup.encryptionKey.label`)}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{className:`w-full break-all rounded-xl border border-gray-200 bg-gray-50 px-3 py-3 pe-12 font-mono text-sm text-gray-900 dark:border-white/10 dark:bg-white/[0.035] dark:text-dark-800`,children:I||t(`setup.encryptionKey.loading`)}),(0,S.jsx)(`button`,{type:`button`,onClick:Z,disabled:!I,className:`absolute end-2 top-1/2 -translate-y-1/2 p-2 text-gray-500 hover:text-gray-700 disabled:opacity-50 dark:text-dark-500 dark:hover:text-dark-700`,title:t(`setup.encryptionKey.copyToClipboard`),children:R?(0,S.jsx)(a,{className:`h-5 w-5 text-green-500`}):(0,S.jsx)(m,{className:`h-5 w-5`})})]}),(0,S.jsx)(`p`,{className:`mt-2 text-xs text-gray-500 dark:text-dark-500`,children:t(`setup.encryptionKey.envNote`)})]}),(0,S.jsx)(`div`,{className:`mb-6`,children:(0,S.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3`,children:[(0,S.jsx)(`input`,{type:`checkbox`,checked:B,onChange:e=>V(e.target.checked),className:`mt-1 h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 dark:border-dark-300 rounded`}),(0,S.jsx)(`span`,{className:`text-sm text-gray-700 dark:text-dark-700`,children:t(`setup.encryptionKey.acknowledgment`)})]})}),(0,S.jsx)(`button`,{onClick:Q,disabled:!B,className:`flex min-h-11 w-full items-center justify-center rounded-xl border border-transparent bg-primary-600 px-4 py-2.5 text-sm font-medium text-white transition-colors duration-200 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50`,children:(0,S.jsxs)(`div`,{className:`flex items-center`,children:[(0,S.jsx)(`span`,{children:t(`setup.encryptionKey.continue`)}),(0,S.jsx)(o,{size:16,className:`ms-2 rtl:rotate-180`})]})})]})})]}):(0,S.jsxs)(`div`,{className:`min-h-screen bg-gray-50 px-4 py-16 dark:bg-dark-50 sm:px-6 lg:flex lg:flex-col lg:justify-center lg:py-20`,children:[(0,S.jsxs)(`div`,{className:`sm:mx-auto sm:w-full sm:max-w-md`,children:[(0,S.jsx)(`div`,{className:`flex flex-col items-center`,children:(0,S.jsx)(y,{className:`text-gray-900 dark:text-gray-100`})}),(0,S.jsx)(`h2`,{className:`mt-8 text-center text-3xl font-light tracking-[-0.035em] text-gray-950 dark:text-dark-950`,children:t(`setup.admin.title`)})]}),(0,S.jsx)(`div`,{className:`mt-10 sm:mx-auto sm:w-full sm:max-w-md`,children:(0,S.jsxs)(`div`,{className:`mx-auto w-full max-w-md rounded-2xl border border-gray-200/80 bg-white/80 p-6 shadow-sm backdrop-blur-xl dark:border-white/10 dark:bg-white/[0.04] sm:p-8`,children:[(0,S.jsxs)(`div`,{className:`mb-7 text-start`,children:[(0,S.jsx)(`h1`,{className:`mb-2 text-2xl font-normal tracking-[-0.03em] text-gray-950 dark:text-dark-950`,children:t(`setup.admin.subtitle`)}),(0,S.jsx)(`p`,{className:`text-gray-600 dark:text-dark-500`,children:t(`setup.admin.description`)})]}),(0,S.jsxs)(`form`,{onSubmit:X,className:`space-y-4`,children:[(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{htmlFor:`username`,className:`block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2`,children:t(`auth.login.username`)}),(0,S.jsx)(`input`,{id:`username`,type:`text`,value:w,onChange:e=>T(e.target.value),onKeyDown:$,className:`w-full rounded-xl border border-gray-200 bg-white/80 px-3 py-2.5 text-gray-900 transition-colors duration-200 focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-800`,placeholder:t(`setup.admin.usernamePlaceholder`),required:!0,disabled:P})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{htmlFor:`password`,className:`block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2`,children:t(`auth.login.password`)}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`input`,{id:`password`,type:A?`text`:`password`,value:E,onChange:e=>D(e.target.value),onKeyDown:$,className:`w-full rounded-xl border border-gray-200 bg-white/80 px-3 py-2.5 pe-10 text-gray-900 transition-colors duration-200 focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-800`,placeholder:t(`setup.admin.passwordPlaceholder`),required:!0,disabled:P}),(0,S.jsx)(`button`,{type:`button`,onClick:()=>j(!A),className:`absolute inset-y-0 end-0 flex items-center pe-3 text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700`,disabled:P,children:A?(0,S.jsx)(p,{size:20}):(0,S.jsx)(h,{size:20})})]})]}),(0,S.jsxs)(`div`,{children:[(0,S.jsx)(`label`,{htmlFor:`confirmPassword`,className:`block text-sm font-medium text-gray-700 dark:text-dark-700 mb-2`,children:t(`auth.signup.confirmPassword`)}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`input`,{id:`confirmPassword`,type:M?`text`:`password`,value:O,onChange:e=>k(e.target.value),onKeyDown:$,className:`w-full rounded-xl border border-gray-200 bg-white/80 px-3 py-2.5 pe-10 text-gray-900 transition-colors duration-200 focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-800`,placeholder:t(`setup.admin.confirmPlaceholder`),required:!0,disabled:P}),(0,S.jsx)(`button`,{type:`button`,onClick:()=>N(!M),className:`absolute inset-y-0 end-0 flex items-center pe-3 text-gray-400 hover:text-gray-600 dark:text-dark-500 dark:hover:text-dark-700`,disabled:P,children:M?(0,S.jsx)(p,{size:20}):(0,S.jsx)(h,{size:20})})]})]}),q&&K&&(0,S.jsx)(b,{siteKey:K,action:`signup`,disabled:P,errorMessage:t(`auth.signup.tryAgain`),onTokenChange:J}),(0,S.jsxs)(`div`,{className:`flex gap-3`,children:[(0,S.jsx)(`button`,{type:`button`,onClick:()=>g(`welcome`),disabled:P,className:`min-h-11 flex-1 rounded-xl border border-gray-200 bg-transparent px-4 py-2.5 text-sm font-medium text-gray-700 transition-colors duration-200 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-white/10 dark:text-dark-700 dark:hover:bg-white/[0.06]`,children:t(`common.back`)}),(0,S.jsx)(`button`,{type:`submit`,disabled:Y,className:`flex min-h-11 flex-1 items-center justify-center rounded-xl border border-transparent bg-primary-600 px-4 py-2.5 text-sm font-medium text-white transition-colors duration-200 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50`,children:P?(0,S.jsxs)(`div`,{className:`flex items-center`,children:[(0,S.jsx)(`div`,{className:`me-2 h-4 w-4 animate-spin rounded-full border-b-2 border-white`}),t(`setup.admin.creating`)]}):(0,S.jsxs)(`div`,{className:`flex items-center`,children:[(0,S.jsx)(c,{size:16,className:`me-2`}),t(`setup.admin.createAdmin`)]})})]})]}),(0,S.jsx)(`div`,{className:`mt-6 text-center`,children:(0,S.jsx)(`p`,{className:`text-xs text-gray-500 dark:text-dark-500`,children:t(`setup.admin.note`)})})]})})]})};export{w as FirstTimeSetup};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{d as t,f as n}from"./markdown-core-GI9BPwrB.js";import{n as r}from"./react-vendor-DyG_ODzn.js";import{t as i}from"./useTranslation-Cs6iTP4m.js";import{Ct as a,H as o,Ot as s,X as c,Z as l,a as u,dt as d,en as f,f as p,fn as m,n as h,rn as g,xt as _}from"./ui-vendor-ChfdHf5M.js";import{t as v}from"./logger-DbNs3-DK.js";import{C as y,b,g as x,m as S,v as C,y as w}from"./api-BCqWXjZI.js";import{t as T}from"./utils-DmZD5uA3.js";import{t as E}from"./appStore-CDM6V5ny.js";import{t as D}from"./Button-CRwzOaDZ.js";import{B as O,F as k,I as A,L as j,R as M,V as N,c as P,l as F}from"../assets/index-CmZntyR1.js";var I=class extends M{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:O(t,n.data),hasPreviousPage:N(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}};function L(e,t){return A(e,I,t)}var R=e(n(),1),z=r(),B=t(),V=v(`components:image-generation-panel`);function H(e,t={}){let n=e.config?.sizes&&e.config.sizes.length>0?e.config.sizes:[t.size||e.config?.default_size||`1024x1024`],r=e.config?.qualities&&e.config.qualities.length>0?e.config.qualities:e.config?.omit_quality_when_empty?[]:[t.quality||e.config?.default_quality||`standard`],i=e.config?.styles&&e.config.styles.length>0?e.config.styles:[];return{pluginId:e.id,model:y(e.models,t.model,void 0,``),size:y(n,t.size,e.config?.default_size,`1024x1024`),quality:r.length>0?y(r,t.quality,e.config?.default_quality,`standard`):``,style:i.length>0?y(i,t.style,e.config?.default_style,i[0]):``,sizes:n,qualities:r,styles:i,maxPromptLength:e.config?.max_prompt_length??null,sizeLabel:e.config?.size_label||``}}var U=({isOpen:e,onClose:t,onImageGenerated:n})=>{let{t:r}=i(),a=E(e=>e.preferences.imageGenSettings),o=a?.enabled===!0,[s,l]=(0,R.useState)([]),[u,d]=(0,R.useState)(``),[p,v]=(0,R.useState)(``),[y,S]=(0,R.useState)(``),[O,k]=(0,R.useState)(`1024x1024`),[A,j]=(0,R.useState)(`standard`),[M,N]=(0,R.useState)(``),[P,F]=(0,R.useState)(!1),[I,L]=(0,R.useState)(null),[U,W]=(0,R.useState)([`512x512`,`768x768`,`1024x1024`]),[G,K]=(0,R.useState)([`standard`,`high`]),[q,ee]=(0,R.useState)([]),[J,Y]=(0,R.useState)(null),[te,ne]=(0,R.useState)(``),X=R.useId(),Z=(0,R.useCallback)((e,t)=>{let n=H(e,t);d(n.pluginId),v(n.model),k(n.size),j(n.quality),N(n.style),W(n.sizes),K(n.qualities),ee(n.styles),Y(n.maxPromptLength),ne(n.sizeLabel)},[]);(0,R.useEffect)(()=>{let t=!1;return e&&o&&(async()=>{try{let e=await x.getPlugins();if(t)return;let n=e.success&&e.data?e.data.filter(e=>e.models.length>0):[];l(n);let r=C(n,a);r?Z(r,a):(d(``),v(``))}catch(e){if(t)return;l([]),d(``),v(``),V.error(`Failed to load image generation plugins:`,e)}})(),()=>{t=!0}},[Z,o,e,a]),(0,R.useEffect)(()=>{if(!e)return;let n=document.body.style.overflow,r=e=>{e.key===`Escape`&&t()};return document.body.style.overflow=`hidden`,document.addEventListener(`keydown`,r),()=>{document.body.style.overflow=n,document.removeEventListener(`keydown`,r)}},[e,t]);let Q=e=>{let t=s.find(t=>t.id===e);t&&Z(t,{model:p,size:O,quality:A,style:M})},re=async()=>{if(!o||!u||!p||!y.trim()){m.error(r(`imageGeneration.enterPrompt`));return}if(J&&y.length>J){m.error(r(`imageGeneration.promptTooLong`,{max:J.toLocaleString()}));return}F(!0),L(null);try{let e=await x.generate({model:p,pluginId:u,prompt:y.trim(),size:O,quality:A,...M?{style:M}:{}});if(e.success&&e.data?.images&&e.data.images.length>0){let i=b(e.data.images[0]);i&&(m.success(r(`imageGeneration.success`)),n?(n(i,y.trim(),p),S(``),L(null),t()):L(i))}else m.error(r(`imageGeneration.failed`))}catch(e){V.error(`Image generation failed:`,e);let t=e instanceof Error?e.message:r(`imageGeneration.failed`);m.error(t)}finally{F(!1)}},ie=()=>{if(!I)return;let e=document.createElement(`a`);e.href=I,e.download=`generated-image-${Date.now()}.${w(I)}`,document.body.appendChild(e),e.click(),document.body.removeChild(e)};if(!e||!o)return null;let $=s.find(e=>e.id===u);return(0,z.createPortal)((0,B.jsxs)(`div`,{className:`fixed inset-0 z-[99999] flex items-center justify-center p-3 sm:p-6`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":X,children:[(0,B.jsx)(`div`,{className:`absolute inset-0 bg-black/55 backdrop-blur-sm`,onClick:t}),(0,B.jsxs)(`div`,{className:T(`relative bg-white/95 dark:bg-dark-25/95`,`border border-gray-200/80 dark:border-white/10`,`rounded-3xl shadow-2xl backdrop-blur-xl`,`flex max-h-[92vh] w-full max-w-2xl flex-col overflow-hidden`),onClick:e=>e.stopPropagation(),children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between border-b border-gray-200/70 px-5 py-4 dark:border-white/[0.08] sm:px-6 sm:py-5`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(`h2`,{id:X,className:`text-xl font-normal tracking-[-0.025em] text-gray-950 dark:text-dark-950`,children:r(`imageGeneration.title`)})}),(0,B.jsx)(`button`,{onClick:t,className:`rounded-xl p-2 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-900 dark:text-dark-500 dark:hover:bg-white/[0.06] dark:hover:text-dark-900`,title:r(`common.close`,{defaultValue:`Close`}),children:(0,B.jsx)(h,{className:`h-5 w-5 text-gray-500 dark:text-gray-400`})})]}),(0,B.jsx)(`div`,{className:`scroll-region min-h-0 flex-1 space-y-5 p-5 scrollbar-thin sm:p-6`,children:$?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:r(`settings.plugins.title`)}),(0,B.jsx)(`select`,{value:u,onChange:e=>Q(e.target.value),className:T(`w-full rounded-xl px-3 py-2.5 text-sm`,`bg-white/70 dark:bg-white/[0.035]`,`border border-gray-200/80 dark:border-white/10`,`text-gray-900 dark:text-gray-100`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`),children:s.map(e=>(0,B.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:r(`imageGeneration.model`)}),(0,B.jsx)(`select`,{value:p,onChange:e=>v(e.target.value),className:T(`w-full rounded-xl px-3 py-2.5 text-sm`,`bg-white/70 dark:bg-white/[0.035]`,`border border-gray-200/80 dark:border-white/10`,`text-gray-900 dark:text-gray-100`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`),children:$?.models.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))})]}),q.length>0&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:r(`imageGeneration.style`)}),(0,B.jsx)(`select`,{value:M,onChange:e=>N(e.target.value),className:T(`w-full rounded-xl px-3 py-2.5 text-sm`,`bg-white/70 dark:bg-white/[0.035]`,`border border-gray-200/80 dark:border-white/10`,`text-gray-900 dark:text-gray-100`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`),children:q.map(e=>(0,B.jsx)(`option`,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]})]}),(0,B.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:te||r(`imageGeneration.size`)}),(0,B.jsx)(`select`,{value:O,onChange:e=>k(e.target.value),className:T(`w-full rounded-xl px-3 py-2.5 text-sm`,`bg-white/70 dark:bg-white/[0.035]`,`border border-gray-200/80 dark:border-white/10`,`text-gray-900 dark:text-gray-100`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`),children:U.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))})]}),G.length>0&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:r(`imageGeneration.quality`)}),(0,B.jsx)(`select`,{value:A,onChange:e=>j(e.target.value),className:T(`w-full rounded-xl px-3 py-2.5 text-sm`,`bg-white/70 dark:bg-white/[0.035]`,`border border-gray-200/80 dark:border-white/10`,`text-gray-900 dark:text-gray-100`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`),children:G.map(e=>(0,B.jsx)(`option`,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1`,children:r(`imageGeneration.prompt`)}),(0,B.jsx)(`textarea`,{value:y,onChange:e=>S(e.target.value),placeholder:r(`imageGeneration.promptPlaceholder`),rows:5,className:T(`w-full resize-none rounded-2xl px-4 py-3 text-sm leading-6`,`bg-white/70 dark:bg-white/[0.035]`,`border border-gray-200/80 dark:border-white/10`,`text-gray-900 dark:text-gray-100`,`placeholder-gray-500 dark:placeholder-gray-400`,`focus:outline-none focus:ring-2 focus:ring-primary-500/20`,J&&y.length>J&&`border-red-500 dark:border-red-500`)}),J&&(0,B.jsxs)(`div`,{className:T(`mt-1 text-end text-xs`,y.length>J?`text-red-500`:`text-gray-500 dark:text-gray-400`),children:[y.length.toLocaleString(),` /`,` `,J.toLocaleString()]})]}),I&&(0,B.jsxs)(`div`,{className:`relative overflow-hidden rounded-2xl border border-gray-200/80 dark:border-white/10`,children:[(0,B.jsx)(`img`,{src:I,alt:`Generated`,className:`w-full h-auto`}),(0,B.jsx)(`button`,{onClick:ie,className:T(`absolute bottom-3 end-3 rounded-lg p-2`,`bg-white/90 dark:bg-dark-100/90`,`hover:bg-white dark:hover:bg-dark-100`,`border border-gray-200 dark:border-dark-300`,`transition-colors`),title:r(`imageGallery.download`),children:(0,B.jsx)(_,{className:`h-5 w-5 text-gray-700 dark:text-gray-200`})})]})]}):(0,B.jsxs)(`div`,{className:`text-center py-8`,children:[(0,B.jsx)(c,{className:`h-12 w-12 mx-auto mb-3 text-gray-300 dark:text-gray-600`}),(0,B.jsx)(`p`,{className:`text-gray-500 dark:text-gray-400`,children:r(`imageGeneration.noModels`)}),(0,B.jsx)(`p`,{className:`text-sm text-gray-400 dark:text-gray-500 mt-1`,children:r(`imageGeneration.configurePlugin`)})]})}),$&&(0,B.jsx)(`div`,{className:`border-t border-gray-200/70 p-4 dark:border-white/[0.08] sm:px-6 sm:py-5`,children:(0,B.jsx)(D,{onClick:re,disabled:P||!o||!y.trim()||!u||!p,className:T(`w-full py-2.5 rounded-xl font-medium`,`bg-primary-600 dark:bg-primary-600`,`hover:bg-primary-700 dark:hover:bg-primary-500`,`text-white`,`disabled:opacity-50 disabled:cursor-not-allowed`,`transition-colors`),children:P?(0,B.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,B.jsx)(g,{className:`h-4 w-4 animate-spin`}),r(`imageGeneration.generating`)]}):(0,B.jsxs)(`span`,{className:`flex items-center justify-center gap-2`,children:[(0,B.jsx)(f,{className:`h-4 w-4`}),r(`imageGeneration.generate`)]})})})]})]}),document.body)},W={video:[],audio:[]};function G({isOpen:e,initialKind:t,onClose:n,onGenerated:r}){let{t:a}=i(),[o,s]=(0,R.useState)(t),[c,l]=(0,R.useState)(W),[p,_]=(0,R.useState)(``),[v,y]=(0,R.useState)(``),[b,x]=(0,R.useState)(`alloy`),[C,w]=(0,R.useState)(``),[E,O]=(0,R.useState)(``),[k,A]=(0,R.useState)(``),[j,M]=(0,R.useState)(!0),[N,P]=(0,R.useState)(!0),[F,I]=(0,R.useState)(!1),L=R.useId();(0,R.useEffect)(()=>{if(!e)return;let t=!1;return S.getModels().then(e=>{t||!e.success||!e.data||l(e.data)}).catch(()=>{t||m.error(a(`mediaGeneration.loadFailed`))}).finally(()=>{t||P(!1)}),()=>{t=!0}},[e,a]);let V=o===`video`?c.video:c.audio,H=V.some(e=>q(e)===p)?p:V[0]?q(V[0]):``,U=(0,R.useMemo)(()=>V.find(e=>q(e)===H),[H,V]),G=o===`video`?U?.config:void 0,Y=o===`audio`?U:void 0;return e?(0,z.createPortal)((0,B.jsxs)(`div`,{className:`fixed inset-0 z-[99999] flex items-center justify-center p-3 sm:p-6`,children:[(0,B.jsx)(`button`,{className:`absolute inset-0 bg-black/55 backdrop-blur-sm`,onClick:n,"aria-label":a(`common.close`)}),(0,B.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-labelledby":L,className:`relative flex max-h-[92vh] w-full max-w-2xl flex-col overflow-hidden rounded-2xl border border-gray-200/80 bg-white/95 shadow-2xl backdrop-blur-xl dark:border-white/10 dark:bg-dark-25/95`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between border-b border-gray-200/70 px-4 py-3 dark:border-white/[0.08] sm:px-5`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{id:L,className:`text-xl text-gray-950 dark:text-dark-950`,children:a(`mediaGeneration.title`)}),(0,B.jsx)(`p`,{className:`mt-1 text-sm text-gray-500 dark:text-dark-500`,children:a(`mediaGeneration.description`)})]}),(0,B.jsx)(`button`,{onClick:n,className:`rounded-xl p-2`,children:(0,B.jsx)(h,{className:`h-5 w-5`})})]}),(0,B.jsxs)(`div`,{className:`scroll-region min-h-0 flex-1 space-y-4 p-4 sm:p-5`,children:[(0,B.jsx)(`div`,{className:`grid grid-cols-2 gap-2 rounded-xl bg-gray-100 p-1 dark:bg-white/[0.05]`,children:[`video`,`audio`].map(e=>(0,B.jsxs)(`button`,{type:`button`,onClick:()=>s(e),className:T(`flex items-center justify-center gap-2 rounded-xl px-3 py-2 text-sm transition-colors`,e===o?`bg-white text-gray-950 shadow-sm dark:bg-white/10 dark:text-white`:`text-gray-500 dark:text-dark-500`),children:[e===`video`?(0,B.jsx)(d,{className:`h-4 w-4`}):(0,B.jsx)(u,{className:`h-4 w-4`}),a(`mediaGeneration.${e}`)]},e))}),N?(0,B.jsx)(`div`,{className:`flex justify-center py-12`,children:(0,B.jsx)(g,{className:`h-7 w-7 animate-spin`})}):V.length===0?(0,B.jsx)(`div`,{className:`rounded-xl border border-amber-500/25 bg-amber-500/10 p-4 text-sm text-amber-800 dark:text-amber-200`,children:a(`mediaGeneration.noModels`,{kind:a(`mediaGeneration.${o}`)})}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(K,{label:a(`mediaGeneration.model`),children:(0,B.jsx)(`select`,{value:H,onChange:e=>{_(e.target.value),w(``),O(``),A(``),M(!0)},className:J,children:V.map(e=>(0,B.jsxs)(`option`,{value:q(e),children:[e.model,` (`,e.plugin,`mode`in e?` · ${a(`mediaGeneration.${e.mode}`)}`:``,`)`]},q(e)))})}),o===`audio`?(0,B.jsx)(K,{label:a(`mediaGeneration.voice`),children:(0,B.jsx)(`input`,{value:b,onChange:e=>x(e.target.value),className:J,placeholder:`alloy`})}):(0,B.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-3`,children:[(0,B.jsx)(K,{label:a(`mediaGeneration.resolution`),children:(0,B.jsxs)(`select`,{value:C,onChange:e=>w(e.target.value),className:J,children:[(0,B.jsx)(`option`,{value:``,children:a(`mediaGeneration.providerDefault`)}),G?.resolutions?.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})}),(0,B.jsx)(K,{label:a(`mediaGeneration.aspectRatio`),children:(0,B.jsxs)(`select`,{value:E,onChange:e=>O(e.target.value),className:J,children:[(0,B.jsx)(`option`,{value:``,children:a(`mediaGeneration.providerDefault`)}),G?.aspect_ratios?.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})}),(0,B.jsx)(K,{label:a(`mediaGeneration.duration`),children:(0,B.jsxs)(`select`,{value:k,onChange:e=>A(e.target.value),className:J,children:[(0,B.jsx)(`option`,{value:``,children:a(`mediaGeneration.providerDefault`)}),G?.durations?.map(e=>(0,B.jsxs)(`option`,{value:e,children:[e,`s`]},e))]})})]}),o===`video`&&G?.supports_audio&&(0,B.jsxs)(`label`,{className:`flex items-center gap-3 text-sm`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:j,onChange:e=>M(e.target.checked)}),a(`mediaGeneration.generateAudio`)]}),(0,B.jsx)(K,{label:o===`video`||Y?.mode===`sound`?a(`mediaGeneration.prompt`):a(`mediaGeneration.text`),children:(0,B.jsx)(`textarea`,{value:v,onChange:e=>y(e.target.value),rows:6,className:T(J,`resize-none`),placeholder:a(o===`audio`&&Y?.mode===`sound`?`mediaGeneration.soundPlaceholder`:`mediaGeneration.${o}Placeholder`)})})]})]}),V.length>0&&(0,B.jsx)(`div`,{className:`border-t border-gray-200/70 p-4 dark:border-white/[0.08] sm:px-5`,children:(0,B.jsxs)(D,{onClick:async()=>{if(!(!U||!v.trim())){I(!0);try{if(o===`audio`){let e=Y?.mode===`sound`?await S.generateSound({model:U.model,pluginId:U.plugin,prompt:v.trim(),voice:b.trim()||void 0,format:`wav`}):await S.generateAudio({model:U.model,pluginId:U.plugin,input:v.trim(),voice:b.trim()||void 0,response_format:`mp3`});if(!e.success)throw Error(e.message)}else{let e=await S.generateVideo({model:U.model,pluginId:U.plugin,prompt:v.trim(),...k?{duration:Number(k)}:{},...C?{resolution:C}:{},...E?{aspect_ratio:E}:{},...G?.supports_audio?{generate_audio:j}:{}});if(!e.success||!e.data)throw Error(e.message||a(`mediaGeneration.failed`));let t=e.data,n=0;for(;t.status===`pending`||t.status===`in_progress`;){await ee(3e4);try{let e=await S.getVideoJob(t.id);if(!e.success||!e.data)throw Error(e.message||a(`mediaGeneration.failed`));t=e.data,n=0}catch(e){if(n+=1,n>=5)throw e}}if(t.status===`failed`)throw Error(t.error||a(`mediaGeneration.failed`))}m.success(a(`mediaGeneration.success`)),y(``),r(),n()}catch(e){m.error(e instanceof Error?e.message:a(`mediaGeneration.failed`))}finally{I(!1)}}},disabled:F||!U||!v.trim(),className:`w-full gap-2`,children:[F?(0,B.jsx)(g,{className:`h-4 w-4 animate-spin`}):(0,B.jsx)(f,{className:`h-4 w-4`}),a(F?`mediaGeneration.generating`:`mediaGeneration.generate`)]})})]})]}),document.body):null}function K({label:e,children:t}){return(0,B.jsxs)(`label`,{className:`block space-y-1.5 text-sm font-medium text-gray-700 dark:text-gray-300`,children:[(0,B.jsx)(`span`,{children:e}),t]})}function q(e){return`${e.mode||`default`}::${e.plugin}::${e.model}`}function ee(e){return new Promise(t=>window.setTimeout(t,e))}var J=`w-full rounded-xl border border-gray-200/80 bg-white/70 px-3 py-2.5 text-sm text-gray-900 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:border-white/10 dark:bg-white/[0.035] dark:text-gray-100`,Y=({image:e,onClose:t,onDelete:n,onDownload:r})=>{let{t:c}=i();return(0,R.useEffect)(()=>{let e=e=>{e.key===`Escape`&&t()};return document.addEventListener(`keydown`,e),document.body.style.overflow=`hidden`,()=>{document.removeEventListener(`keydown`,e),document.body.style.overflow=``}},[t]),(0,z.createPortal)((0,B.jsxs)(`div`,{className:`fixed inset-0 z-[99999] flex items-center justify-center`,onClick:t,children:[(0,B.jsx)(`div`,{className:`absolute inset-0 bg-black/90 backdrop-blur-sm`}),(0,B.jsxs)(`div`,{className:`relative flex flex-col lg:flex-row max-w-7xl max-h-[95vh] w-full mx-4 gap-4`,onClick:e=>e.stopPropagation(),children:[(0,B.jsx)(`button`,{onClick:t,className:T(`absolute -top-12 right-0 lg:top-0 lg:-right-12 z-10`,`p-2 rounded-full`,`bg-white/10 hover:bg-white/20`,`transition-colors`),children:(0,B.jsx)(h,{className:`h-6 w-6 text-white`})}),(0,B.jsx)(`div`,{className:`flex-1 flex items-center justify-center min-h-0`,children:(0,B.jsx)(`img`,{src:e.imageData,alt:e.prompt,className:`max-w-full max-h-[70vh] lg:max-h-[90vh] object-contain rounded-lg`})}),(0,B.jsxs)(`div`,{className:T(`w-full lg:w-80 flex-shrink-0`,`bg-white dark:bg-dark-100`,`rounded-xl p-4 lg:p-5`,`overflow-y-auto max-h-[25vh] lg:max-h-[90vh]`),children:[(0,B.jsxs)(`div`,{className:`mb-4`,children:[(0,B.jsx)(`h3`,{className:`text-sm font-medium text-gray-500 dark:text-gray-400 mb-1`,children:c(`gallery.prompt`)}),(0,B.jsx)(`p`,{className:`text-gray-900 dark:text-gray-100 text-sm leading-relaxed`,children:e.prompt})]}),(0,B.jsxs)(`div`,{className:`space-y-3 mb-4`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,B.jsx)(a,{className:`h-4 w-4 text-gray-400 dark:text-gray-500`}),(0,B.jsxs)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:[c(`gallery.model`),`:`]}),(0,B.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:e.model})]}),e.size&&(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,B.jsx)(o,{className:`h-4 w-4 text-gray-400 dark:text-gray-500`}),(0,B.jsxs)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:[c(`gallery.size`),`:`]}),(0,B.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:e.size})]}),e.quality&&(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,B.jsx)(`span`,{className:`w-4 h-4 flex items-center justify-center text-gray-400 dark:text-gray-500 text-xs font-bold`,children:`Q`}),(0,B.jsxs)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:[c(`gallery.quality`),`:`]}),(0,B.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100 capitalize`,children:e.quality})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,B.jsx)(s,{className:`h-4 w-4 text-gray-400 dark:text-gray-500`}),(0,B.jsxs)(`span`,{className:`text-gray-500 dark:text-gray-400`,children:[c(`gallery.created`),`:`]}),(0,B.jsx)(`span`,{className:`text-gray-900 dark:text-gray-100`,children:(e=>new Date(e).toLocaleString(void 0,{year:`numeric`,month:`long`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}))(e.createdAt)})]})]}),(0,B.jsxs)(`div`,{className:`flex gap-2 pt-4 border-t border-gray-200 dark:border-dark-300`,children:[(0,B.jsxs)(`button`,{onClick:()=>{if(r)r(e);else{let t=document.createElement(`a`);t.href=e.imageData,t.download=`generated-${e.id}.${w(e.imageData)}`,document.body.appendChild(t),t.click(),document.body.removeChild(t)}},className:T(`flex-1 flex items-center justify-center gap-2 py-2.5 rounded-lg`,`bg-primary-600 dark:bg-primary-600`,`hover:bg-primary-700 dark:hover:bg-primary-500`,`text-white font-medium text-sm`,`transition-colors`),children:[(0,B.jsx)(_,{className:`h-4 w-4`}),c(`gallery.download`)]}),n&&(0,B.jsx)(`button`,{onClick:()=>n(e.id),className:T(`p-2.5 rounded-lg`,`bg-gray-100 dark:bg-dark-200`,`hover:bg-red-100 dark:hover:bg-red-900/30`,`text-gray-600 dark:text-gray-300`,`hover:text-red-600 dark:hover:text-red-400`,`transition-colors`),title:`Delete image`,children:(0,B.jsx)(p,{className:`h-4 w-4`})})]})]})]})]}),document.body)};function te({kind:e,refreshKey:t,onCountChange:n}){let{t:r}=i(),a=j(),[o,s]=(0,R.useState)(null),[c,u]=(0,R.useState)(null),d=L({queryKey:[`media-gallery`,e||`all`,t||0],queryFn:async({pageParam:t})=>{let n=await S.getGallery({limit:20,offset:t,...e?{kind:e}:{}});if(!n.success||!n.data)throw Error(n.message||r(`imageGallery.loadFailed`));return n.data},initialPageParam:0,getNextPageParam:(e,t)=>{let n=t.reduce((e,t)=>e+t.media.length,0);return n<e.total?n:void 0}}),f=(0,R.useMemo)(()=>d.data?.pages.flatMap(e=>e.media)||[],[d.data]),h=d.data?.pages[0]?.total||0;(0,R.useEffect)(()=>n?.(h),[n,h]);let v=async e=>{if(!c){u(e.id);try{let t=await S.deleteGalleryItem(e.id);if(!t.success)throw Error(t.message);s(null),await a.invalidateQueries({queryKey:[`media-gallery`]}),m.success(r(`imageGallery.deleteSuccess`))}catch{m.error(r(`imageGallery.deleteFailed`))}finally{u(null)}}},y=async e=>{let t=await S.getGalleryContent(e.id),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`generated-${e.id}.${Z(e.mimeType)}`,document.body.appendChild(r),r.click(),r.remove(),URL.revokeObjectURL(n)};return d.isLoading?(0,B.jsx)(`div`,{className:`flex justify-center py-12`,children:(0,B.jsx)(g,{className:`h-8 w-8 animate-spin text-gray-400`})}):f.length===0?(0,B.jsxs)(`div`,{className:`flex flex-col items-center justify-center rounded-2xl border border-dashed border-gray-300 bg-white/30 px-6 py-12 text-center dark:border-white/15 dark:bg-white/[0.02]`,children:[(0,B.jsx)(l,{className:`mb-4 h-10 w-10 text-gray-300 dark:text-gray-600`}),(0,B.jsx)(`h3`,{className:`text-lg font-medium`,children:r(`mediaGallery.empty`)}),(0,B.jsx)(`p`,{className:`mt-2 max-w-sm text-gray-500 dark:text-gray-400`,children:r(`mediaGallery.emptyHint`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4`,children:f.map(e=>(0,B.jsxs)(`article`,{className:`overflow-hidden rounded-2xl border border-gray-200/80 bg-white/70 dark:border-white/10 dark:bg-white/[0.025]`,children:[(0,B.jsx)(ne,{item:e,onOpenImage:t=>s(X(e,t))}),(0,B.jsxs)(`div`,{className:`space-y-3 p-3`,children:[(0,B.jsx)(`p`,{className:`line-clamp-2 text-sm text-gray-800 dark:text-gray-200`,children:e.prompt}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,B.jsx)(`span`,{className:`min-w-0 truncate text-xs text-gray-500`,children:e.model}),(0,B.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[(0,B.jsx)(`button`,{onClick:()=>void y(e),className:`rounded-lg p-1.5 hover:bg-gray-100 dark:hover:bg-white/10`,title:r(`imageGallery.download`),children:(0,B.jsx)(_,{className:`h-4 w-4`})}),(0,B.jsx)(`button`,{onClick:()=>void v(e),disabled:c===e.id,className:`rounded-lg p-1.5 hover:bg-red-500/15 hover:text-red-500`,title:r(`imageGallery.delete`),children:c===e.id?(0,B.jsx)(g,{className:`h-4 w-4 animate-spin`}):(0,B.jsx)(p,{className:`h-4 w-4`})})]})]})]})]},e.id))}),d.hasNextPage&&(0,B.jsx)(`div`,{className:`mt-8 flex justify-center`,children:(0,B.jsx)(D,{variant:`outline`,disabled:d.isFetchingNextPage,onClick:()=>void d.fetchNextPage(),children:d.isFetchingNextPage?r(`common.loading`):r(`imageGallery.loadMore`,{current:f.length,total:h})})}),o&&(0,B.jsx)(Y,{image:o,onClose:()=>s(null),onDelete:e=>{let t=f.find(t=>t.id===e);t&&v(t)},onDownload:e=>{let t=f.find(t=>t.id===e.id);t&&y(t)}})]})}function ne({item:e,onOpenImage:t}){let{data:n,isLoading:r}=k({queryKey:[`media-gallery-content`,e.id],queryFn:()=>S.getGalleryContent(e.id),staleTime:5*6e4}),i=(0,R.useMemo)(()=>n?URL.createObjectURL(n):``,[n]);return(0,R.useEffect)(()=>()=>{i&&URL.revokeObjectURL(i)},[i]),r||!i?(0,B.jsx)(`div`,{className:`flex aspect-video items-center justify-center bg-gray-100 dark:bg-white/[0.03]`,children:(0,B.jsx)(g,{className:`h-6 w-6 animate-spin text-gray-400`})}):e.kind===`image`?(0,B.jsx)(`button`,{className:`block aspect-square w-full overflow-hidden`,onClick:()=>t(i),children:(0,B.jsx)(`img`,{src:i,alt:e.prompt,className:`h-full w-full object-cover`,loading:`lazy`})}):e.kind===`video`?(0,B.jsx)(`div`,{className:`aspect-video bg-black`,children:(0,B.jsx)(`video`,{src:i,controls:!0,preload:`metadata`,className:`h-full w-full object-contain`})}):(0,B.jsxs)(`div`,{className:`flex min-h-40 flex-col items-center justify-center gap-3 bg-gradient-to-br from-primary-500/10 to-cyan-500/10 p-4`,children:[(0,B.jsx)(u,{className:`h-9 w-9 text-primary-500`}),(0,B.jsx)(`audio`,{src:i,controls:!0,preload:`metadata`,className:`w-full`})]})}function X(e,t){return{id:e.id,userId:e.userId,prompt:e.prompt,model:e.model,imageData:t,size:e.size,quality:e.quality,createdAt:e.createdAt}}function Z(e){let t=e.split(`/`)[1]?.split(`;`)[0];return t===`mpeg`?e.startsWith(`audio/`)?`mp3`:`mpeg`:t===`svg+xml`?`svg`:t||`bin`}var Q=()=>{let{t:e}=i(),[t,n]=(0,R.useState)(null),[r,a]=(0,R.useState)(!1),[o,s]=(0,R.useState)(null),[l,f]=(0,R.useState)(`all`),[p,m]=(0,R.useState)(0),h=E(e=>e.preferences.imageGenSettings?.enabled===!0),g=(0,R.useCallback)(()=>{m(e=>e+1)},[]);return(0,B.jsxs)(F,{width:`wide`,children:[(0,B.jsx)(P,{title:e(`sidebar.navigation.imagine`),description:e(`gallery.subtitle`),meta:t!==null&&t>0?(0,B.jsx)(`span`,{className:`inline-flex rounded-full border border-gray-200/80 bg-white/60 px-2.5 py-1 text-xs text-gray-500 dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-500`,children:e(`mediaGallery.itemCount`,{count:t})}):null,actions:(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsxs)(D,{onClick:()=>{h&&a(!0)},disabled:!h,className:`gap-2 px-4`,children:[(0,B.jsx)(c,{className:`h-4 w-4`,"aria-hidden":`true`}),e(`gallery.generate`)]}),(0,B.jsxs)(D,{variant:`outline`,onClick:()=>s(`video`),className:`gap-2 px-4`,children:[(0,B.jsx)(d,{className:`h-4 w-4`,"aria-hidden":`true`}),e(`mediaGeneration.video`)]}),(0,B.jsxs)(D,{variant:`outline`,onClick:()=>s(`audio`),className:`gap-2 px-4`,children:[(0,B.jsx)(u,{className:`h-4 w-4`,"aria-hidden":`true`}),e(`mediaGeneration.audio`)]})]})}),(0,B.jsx)(`div`,{className:`mb-5 flex flex-wrap gap-2`,children:[`all`,`image`,`video`,`audio`].map(t=>(0,B.jsx)(`button`,{type:`button`,onClick:()=>f(t),className:T(`rounded-full border px-3 py-1.5 text-sm transition-colors`,l===t?`border-gray-950 bg-gray-950 text-white dark:border-white dark:bg-white dark:text-gray-950`:`border-gray-200 text-gray-600 hover:border-gray-400 dark:border-white/10 dark:text-dark-600`),children:e(`mediaGallery.filters.${t}`)},t))}),(0,B.jsx)(te,{kind:l===`all`?void 0:l,refreshKey:p,onCountChange:n}),(0,B.jsx)(U,{isOpen:r&&h,onClose:()=>a(!1),onImageGenerated:g}),(0,B.jsx)(G,{isOpen:o!==null,initialKind:o||`video`,onClose:()=>s(null),onGenerated:g},o||`closed`)]})};export{Q as GalleryPage,Q as default};
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{d as t,f as n}from"./markdown-core-GI9BPwrB.js";import{d as r}from"./router-vendor-BjDI9mRe.js";import{t as i}from"./useTranslation-Cs6iTP4m.js";import{B as a,Ht as o,Rt as s,St as c,en as l,s as u,st as d}from"./ui-vendor-ChfdHf5M.js";import{i as f,n as p,t as m}from"./utils-DmZD5uA3.js";import{l as h,n as g,u as _}from"./authStore-Bl5ofD_h.js";import{a as v,i as y,n as b,r as x}from"../assets/index-CmZntyR1.js";import{t as S}from"./work-DVgm81bJ.js";var C=e(n(),1),w=t(),T=e=>e<5?[`home.greeting.night`,`Up late`]:e<12?[`home.greeting.morning`,`Morning`]:e<18?[`home.greeting.afternoon`,`Afternoon`]:[`home.greeting.evening`,`Evening`],E=`mb-2 text-xs font-medium text-gray-500 dark:text-dark-500`,D=`group flex w-full items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-start text-sm text-gray-700 transition-colors hover:bg-white hover:text-gray-950 dark:text-dark-700 dark:hover:bg-dark-200 dark:hover:text-dark-950 outline-none focus-visible:ring-2 focus-visible:ring-primary-500/40`,O=()=>{let{t:e,i18n:t}=i(),n=r(),{user:O,systemInfo:k,isAdmin:A}=g(),j=_(e=>e.sessions),M=h(e=>e.tasks),N=h(e=>e.capabilities),P=h(e=>e.loadTasks),F=h(e=>e.loadCapabilities),I=k?.requiresAuth===!1||A(),L=I;(0,C.useEffect)(()=>{I&&(P(!0).catch(()=>{}),F().catch(()=>{}))},[I,P,F]);let[R,z]=T(new Date().getHours()),B=e(R,z),V=O?.username,H=[...j].sort((e,t)=>t.updatedAt-e.updatedAt).slice(0,4),U=[...M].sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime()).slice(0,3),W=N?.activeRuntimes?.user??0,G=f()?`⌘`:`Ctrl`,K=H.length>0||U.length>0;return(0,w.jsx)(`div`,{"data-testid":`home-page`,className:`h-full overflow-y-auto scrollbar-thin`,children:(0,w.jsxs)(`div`,{className:`mx-auto flex min-h-full w-full max-w-xl flex-col justify-center px-6 py-12`,children:[(0,w.jsx)(`h1`,{className:`text-2xl font-semibold tracking-tight text-gray-950 dark:text-dark-950`,children:V?`${B}, ${V}.`:`${B}.`}),(0,w.jsxs)(`p`,{className:`mt-1 font-mono text-xs text-gray-400 dark:text-dark-500`,children:[window.location.host||`Libre WebUI`,k?.version?` · v${k.version}`:``]}),(0,w.jsxs)(`div`,{className:`mt-8`,children:[(0,w.jsx)(`p`,{className:E,children:e(`home.start`,`Start`)}),(0,w.jsxs)(`div`,{className:`-mx-2.5 flex flex-col`,children:[(0,w.jsxs)(`button`,{type:`button`,"data-testid":`home-new-chat`,className:D,onClick:()=>x(n),children:[(0,w.jsx)(a,{className:`h-4 w-4 shrink-0 text-gray-400 transition-colors group-hover:text-gray-600 dark:text-dark-500 dark:group-hover:text-dark-700`}),(0,w.jsx)(`span`,{className:`flex-1`,children:e(`tabs.newChat`,`New Chat`)}),(0,w.jsxs)(`span`,{className:`font-mono text-[10px] tracking-wide text-gray-400 opacity-0 transition-opacity group-hover:opacity-100 dark:text-dark-500`,children:[G,`⇧O`]})]}),(0,w.jsxs)(`button`,{type:`button`,"data-testid":`home-incognito-chat`,className:D,onClick:()=>b(n),children:[(0,w.jsx)(d,{className:`h-4 w-4 shrink-0 text-gray-400 transition-colors group-hover:text-gray-600 dark:text-dark-500 dark:group-hover:text-dark-700`}),(0,w.jsx)(`span`,{className:`flex-1`,children:e(`chat.session.incognito`,`Incognito Chat`)})]}),I&&(0,w.jsxs)(`button`,{type:`button`,"data-testid":`home-new-work`,className:D,onClick:()=>y(n),children:[(0,w.jsx)(s,{className:`h-4 w-4 shrink-0 text-gray-400 transition-colors group-hover:text-gray-600 dark:text-dark-500 dark:group-hover:text-dark-700`}),(0,w.jsx)(`span`,{className:`flex-1`,children:e(`tabs.newWork`,`New Work`)}),(0,w.jsxs)(`span`,{className:`font-mono text-[10px] tracking-wide text-gray-400 opacity-0 transition-opacity group-hover:opacity-100 dark:text-dark-500`,children:[G,`⇧U`]})]})]})]}),K&&(0,w.jsxs)(`div`,{className:`mt-8`,children:[(0,w.jsxs)(`div`,{className:`mb-2 flex items-baseline justify-between`,children:[(0,w.jsx)(`p`,{className:m(E,`mb-0`),children:e(`home.continue`,`Continue`)}),I&&W>0&&(0,w.jsxs)(`span`,{className:`flex items-center gap-1.5 font-mono text-[10px] text-gray-400 dark:text-dark-500`,children:[(0,w.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse-subtle rounded-full bg-[rgb(48,121,255)]`}),W,` `,e(`home.active`,`active`)]})]}),(0,w.jsxs)(`div`,{className:`-mx-2.5 flex flex-col`,children:[U.map(r=>{let i=v[r.status];return(0,w.jsxs)(`button`,{type:`button`,"data-testid":`home-continue-work`,className:D,onClick:()=>n(`/work/${r.id}`),children:[(0,w.jsx)(`span`,{"aria-hidden":`true`,className:m(`h-2 w-2 shrink-0 rounded-full ring-1 ring-black/[0.06] dark:ring-white/[0.1]`,i.animated&&`animate-pulse-subtle`),style:{backgroundColor:i.color}}),(0,w.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:r.title||e(`work.tasks.untitled`,`Untitled task`)}),r.hostPath&&(0,w.jsx)(`span`,{className:`hidden max-w-[14rem] shrink-0 truncate font-mono text-[10px] text-gray-400 sm:inline dark:text-dark-500`,title:r.hostPath,children:r.hostPath}),(0,w.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-gray-400 dark:text-dark-500`,children:S(r)?e(i.labelKey,i.label):p(new Date(r.updatedAt).getTime(),t.language)})]},r.id)}),H.map(r=>(0,w.jsxs)(`button`,{type:`button`,"data-testid":`home-continue-chat`,className:D,onClick:()=>n(`/c/${r.id}`),children:[(0,w.jsx)(a,{className:`h-4 w-4 shrink-0 text-gray-400 dark:text-dark-500`}),(0,w.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:r.title||e(`tabs.chat`,`Chat`)}),(0,w.jsx)(`span`,{className:`hidden shrink-0 font-mono text-[10px] text-gray-400 sm:inline dark:text-dark-500`,children:r.model}),(0,w.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-gray-400 dark:text-dark-500`,children:p(r.updatedAt,t.language)})]},r.id))]})]}),(0,w.jsxs)(`div`,{className:`mt-8`,children:[(0,w.jsx)(`p`,{className:E,children:e(`home.explore`,`Explore`)}),(0,w.jsx)(`div`,{className:`-mx-2.5 flex flex-col`,children:[[`/models`,c,e(`sidebar.navigation.models`,`Models`)],[`/personas`,u,e(`sidebar.navigation.personas`,`Personas`)],[`/gallery`,l,e(`sidebar.navigation.imagine`,`Imagine`)],...L?[[`/agents`,o,e(`sidebar.navigation.agents`,`Agents`)]]:[]].map(([e,t,r])=>(0,w.jsxs)(`button`,{type:`button`,className:D,onClick:()=>n(e),children:[(0,w.jsx)(t,{className:`h-4 w-4 shrink-0 text-gray-400 transition-colors group-hover:text-gray-600 dark:text-dark-500 dark:group-hover:text-dark-700`}),(0,w.jsx)(`span`,{className:`flex-1`,children:r})]},e))})]})]})})};export{O as HomePage,O as default};
@@ -1 +0,0 @@
1
- import{r as e,t}from"./rolldown-runtime-QTnfLwEv.js";import{d as n,f as r}from"./markdown-core-GI9BPwrB.js";import{a as i,c as a,i as o,l as s,n as c,o as l,s as u,t as d,u as f}from"./useTranslation-Cs6iTP4m.js";import{A as p,D as m,Ht as h,Jt as g,Lt as _,Ot as v,Pt as y,_ as b,bt as x,f as S,j as C,n as ee,ot as w,p as te,pn as T,rn as E,y as ne}from"./ui-vendor-ChfdHf5M.js";import{t as D}from"./logger-DbNs3-DK.js";import{h as O}from"./api-BCqWXjZI.js";import{t as k}from"./utils-DmZD5uA3.js";import{t as A}from"./Button-CRwzOaDZ.js";import{P as re,c as j,l as ie}from"../assets/index-CmZntyR1.js";var ae=e(t(((e,t)=>{t.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}}))()),M=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function N(e){var t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(ae.default[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){var r=e.indexOf(`-->`);return{type:`comment`,comment:r===-1?``:e.slice(4,r)}}for(var i=new RegExp(M),a=null;(a=i.exec(e))!==null;)if(a[0].trim())if(a[1]){var o=a[1].trim(),s=[o,``];o.indexOf(`=`)>-1&&(s=o.split(`=`)),t.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(t.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return t}var P=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,oe=/^\s*$/,se=Object.create(null);function F(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:return e+=`<`+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+`="`+e[n]+`"`);return t.length?` `+t.join(` `):``}(t.attrs):``)+(t.voidElement?`/>`:`>`),t.voidElement?e:e+t.children.reduce(F,``)+`</`+t.name+`>`;case`comment`:return e+`<!--`+t.comment+`-->`}}var ce={parse:function(e,t){t||(t={}),t.components||(t.components=se);var n,r=[],i=[],a=-1,o=!1;if(e.indexOf(`<`)!==0){var s=e.indexOf(`<`);r.push({type:`text`,content:s===-1?e:e.substring(0,s)})}return e.replace(P,function(s,c){if(o){if(s!==`</`+n.name+`>`)return;o=!1}var l,u=s.charAt(1)!==`/`,d=s.startsWith(`<!--`),f=c+s.length,p=e.charAt(f);if(d){var m=N(s);return a<0?(r.push(m),r):((l=i[a]).children.push(m),r)}if(u&&(a++,(n=N(s)).type===`tag`&&t.components[n.name]&&(n.type=`component`,o=!0),n.voidElement||o||!p||p===`<`||n.children.push({type:`text`,content:e.slice(f,e.indexOf(`<`,f))}),a===0&&r.push(n),(l=i[a-1])&&l.children.push(n),i[a]=n),(!u||n.voidElement)&&(a>-1&&(n.voidElement||n.name===s.slice(2,-1))&&(a--,n=a===-1?r:i[a]),!o&&p!==`<`&&p)){l=a===-1?r:i[a].children;var h=e.indexOf(`<`,f),g=e.slice(f,h===-1?void 0:h);oe.test(g)&&(g=` `),(h>-1&&a+l.length>=0||g!==` `)&&l.push({type:`text`,content:g})}}),r},stringify:function(e){return e.reduce(function(e,t){return e+F(``,t)},``)}},I=e(r()),L=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},R=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?z(t):t},le=e=>Array.isArray(e)&&e.every(I.isValidElement),z=e=>Array.isArray(e)?e:[e],ue=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},B=e=>{let t={};if(!e)return t;let n=e=>{z(e).forEach(e=>{a(e)||(L(e)?n(R(e)):u(e)&&!(0,I.isValidElement)(e)&&Object.assign(t,e))})};return n(e),t},V=(e,t,n,r)=>{if(!e)return``;let i=``,o=z(e),c=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return o.forEach((e,o)=>{if(a(e)){i+=`${e}`;return}if((0,I.isValidElement)(e)){let{props:s,type:l}=e,u=Object.keys(s).length,d=c.indexOf(l)>-1,f=s.children;if(!f&&d&&!u){i+=`<${l}/>`;return}if(!f&&(!d||u)||s.i18nIsDynamicList){i+=`<${o}></${o}>`;return}if(d&&u<=1){let e=a(f)?f:V(f,t,n,r);i+=`<${l}>${e}</${l}>`;return}let p=V(f,t,n,r);i+=`<${o}>${p}</${o}>`;return}if(e===null){s(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(u(e)){let{format:t,...a}=e,o=Object.keys(a);if(o.length===1){let e=t?`${o[0]}, ${t}`:o[0];i+=`{{${e}}}`;return}s(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}s(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},de=(e,t=[],n={})=>{if(!e)return e;let r=Object.keys(n),i=[...t,...r],a=``,o=0;for(;o<e.length;)if(e[o]===`<`){let t=!1,n=e.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}if(!t){let n=e.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}}t||(a+=`&lt;`,o+=1)}else a+=e[o],o+=1;return a},fe=(e,t,n,r,o,s,c)=>{if(n===``)return[];let d=o.transKeepBasicHtmlNodesFor||[],f=n&&new RegExp(d.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!f&&!c)return[n];let p=t??{},m=e=>{z(e).forEach(e=>{a(e)||(L(e)?m(R(e)):u(e)&&!(0,I.isValidElement)(e)&&Object.assign(p,e))})};m(e);let h=de(n,d,p),g=ce.parse(`<0>${h}</0>`),_={...p,...s},v=(e,t,n)=>{let r=R(e),i=b(r,t.children,n);return le(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},y=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push((0,I.cloneElement)(e,{key:r},i?void 0:t))):n.push(...I.Children.map([e],e=>{if(e.type===I.Fragment||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`children`||t===`i18nIsDynamicList`||(n[t]=e.props[t])}),(0,I.createElement)(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`ref`||t===`children`||(n[t]=e.props[t])}),(0,I.cloneElement)(e,n,i?null:t)}))},b=(e,n,s)=>{let p=z(e),m=z(n),h={};return m.reduce((e,n,m)=>{let g=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,_,r.language);if(n.type===`tag`){let i=p[parseInt(n.name,10)];!i&&t&&(i=t[n.name]),s.length===1&&!i&&(i=s[0][n.name]),i||(i={});let x={...n.attrs};c&&Object.keys(x).forEach(e=>{let t=x[e];a(t)&&(x[e]=l(t))});let S=Object.keys(x).length===0?i:ue({props:x},i),C=(0,I.isValidElement)(S),ee=C&&L(n,!0)&&!n.voidElement,w=f&&u(S)&&S.dummy&&!C,te=u(t)&&Object.hasOwnProperty.call(t,n.name);if(a(S)){let t=r.services.interpolator.interpolate(S,_,r.language);e.push(t)}else if(L(S)||ee)y(S,v(S,n,s),e,m);else if(w)y(S,b(p,n.children,s),e,m);else if(Number.isNaN(parseFloat(n.name)))if(te)y(S,v(S,n,s),e,m,n.voidElement);else if(o.transSupportBasicHtmlNodes&&d.indexOf(n.name)>-1)if(n.voidElement)e.push((0,I.createElement)(n.name,{key:`${n.name}-${m}`}));else{let t=h[n.name]||0;h[n.name]=t+1;let r,i=0;for(let e=0;e<p.length;e+=1){let a=p[e];if((0,I.isValidElement)(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let a=b(r?z(R(r)):p,n.children,s);e.push((0,I.createElement)(n.name,{key:`${n.name}-${m}`},a))}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=b(p,n.children,s);e.push(`<${n.name}>${t}</${n.name}>`)}else if(u(S)&&!C){let t=n.children[0]?g:null;t&&e.push(t)}else y(S,g,e,m,n.children.length!==1||!g)}else if(n.type===`text`){let t=o.transWrapTextNodes,a=typeof o.unescape==`function`?o.unescape:i().unescape,s=c?a(r.services.interpolator.interpolate(n.content,_,r.language)):r.services.interpolator.interpolate(n.content,_,r.language);t?e.push((0,I.createElement)(t,{key:`${n.name}-${m}`},s)):e.push(s)}return e},[])};return R(b([{dummy:!0,children:e||[]}],g,z(e||[]))[0])},H=(e,t,n)=>{let r=e.key||t,i=(0,I.cloneElement)(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return(0,I.createElement)(I.Fragment,null,i)}return(0,I.createElement)(a,{key:r})},pe=(e,t)=>e.map((e,n)=>H(e,n,t)),me=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:H(e[r],r,t)})}),n},he=(e,t,n,r)=>e?Array.isArray(e)?pe(e,t):u(e)?me(e,t):(f(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,U=e=>!u(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function ge({children:e,count:t,parent:n,i18nKey:r,context:s,tOptions:c={},values:l,defaults:u,components:d,ns:p,i18n:m,t:h,shouldUnescape:g,..._}){let v=m||o();if(!v)return f(v,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using i18nextReactModule`,{i18nKey:r}),e;let y=h||v.t.bind(v)||(e=>e),b={...i(),...v.options?.react},x=p||y.ns||v.options?.defaultNS;x=a(x)?[x]:x||[`translation`];let{transDefaultProps:S}=b,C=S?.tOptions?{...S.tOptions,...c}:c,ee=g??S?.shouldUnescape,w=S?.values?{...S.values,...l}:l,te=S?.components?{...S.components,...d}:d,T=V(e,b,v,r),E=u||C?.defaultValue||T||b.transEmptyNodeValue||(typeof r==`function`?re(r):r),{hashTransKey:ne}=b,D=r||(ne?ne(T||E):T||E);l=v.options?.interpolation?.defaultVariables?w&&Object.keys(w).length>0?{...w,...v.options.interpolation.defaultVariables}:{...v.options.interpolation.defaultVariables}:w;let O=B(e);O&&typeof O.count==`number`&&t===void 0&&(t=O.count);let k=l||t!==void 0&&!v.options?.interpolation?.alwaysFormat||!e?C.interpolation:{interpolation:{...C.interpolation,prefix:`#$?`,suffix:`?$#`}},A={...C,context:s||C.context,count:t,...l,...k,defaultValue:E,ns:x},j=D?y(D,A):E;j===D&&E&&(j=E);let ie=he(te,j,v,r),ae=ie||e,M=null;U(ie)&&(M=ie,ae=e);let N=fe(ae,M,j,v,b,A,ee),P=n??b.defaultTransParent;return P?(0,I.createElement)(P,_,N):N}function _e({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:s,defaults:l,components:u,ns:d,i18n:f,t:p,shouldUnescape:m,...h}){let{i18n:g,defaultNS:_}=(0,I.useContext)(c)||{},v=f||g||o(),y=p||v?.t.bind(v);return ge({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:s,defaults:l,components:u,ns:d||y?.ns||_||v?.options?.defaultNS,i18n:v,t:p,shouldUnescape:m,...h})}var W=n(),G=D(`pages:libre-claw`),K={queued:`bg-gray-100 text-gray-700 dark:bg-dark-200 dark:text-dark-700`,running:`bg-primary-100 text-primary-700 dark:bg-primary-900/25 dark:text-primary-300`,blocked:`bg-amber-500/20 text-ink dark:bg-amber-900/30`,done:`bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300`,failed:`bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-300`,cancelled:`bg-slate-100 text-slate-700 dark:bg-slate-800 dark:text-slate-300`},ve={assistant_message:`text-primary-600 dark:text-primary-300`,assistant_delta:`text-primary-600 dark:text-primary-300`,user_message:`text-gray-700 dark:text-dark-700`,permission_request:`text-ink`,permission_response:`text-gray-600 dark:text-dark-600`,tool_call:`text-gray-600 dark:text-dark-600`,tool_result:`text-gray-600 dark:text-dark-600`,usage:`text-gray-600 dark:text-dark-600`,error:`text-red-600 dark:text-red-300`,run_finished:`text-emerald-600 dark:text-emerald-300`},ye=[[`lobster`,`Lobster`],[`lobster-light`,`Lobster Light`],[`github-dark`,`GitHub Dark`],[`github-light`,`GitHub Light`],[`monokai-pro`,`Monokai Pro`],[`night-owl`,`Night Owl`],[`tokyo-night`,`Tokyo Night`],[`ayu`,`Ayu`],[`dracula`,`Dracula`],[`catppuccin-mocha`,`Catppuccin Mocha`],[`catppuccin-latte`,`Catppuccin Latte`],[`gruvbox-dark`,`Gruvbox Dark`],[`nord`,`Nord`],[`solarized-dark`,`Solarized Dark`],[`solarized-light`,`Solarized Light`],[`one-dark-pro`,`One Dark Pro`],[`rose-pine`,`Rose Pine`],[`kanagawa`,`Kanagawa`],[`matrix`,`Matrix`]],be=()=>{let{t:e}=d(),[t,n]=(0,I.useState)(null),[r,i]=(0,I.useState)([]),[a,o]=(0,I.useState)([]),[s,c]=(0,I.useState)([]),[l,u]=(0,I.useState)(null),[f,D]=(0,I.useState)(null),[re,ae]=(0,I.useState)(``),[M,N]=(0,I.useState)(null),[P,oe]=(0,I.useState)(!0),[se,F]=(0,I.useState)(!1),[ce,L]=(0,I.useState)(!1),[R,le]=(0,I.useState)(!1),[z,ue]=(0,I.useState)(!1),[B,V]=(0,I.useState)(``),[de,fe]=(0,I.useState)(`chat`),[H,pe]=(0,I.useState)(``),[me,he]=(0,I.useState)(``),[U,ge]=(0,I.useState)(``),[K,ve]=(0,I.useState)(``),[be,Te]=(0,I.useState)(!1),[Ee,De]=(0,I.useState)(`lobster`),[J,Y]=(0,I.useState)(!0),[je,Me]=(0,I.useState)(``),[Ne,X]=(0,I.useState)(``),[Z,Pe]=(0,I.useState)(``),[Fe,Ie]=(0,I.useState)(`report`),Q=(0,I.useMemo)(()=>r.find(e=>e.run_id===M)||null,[r,M]),Le=(0,I.useMemo)(()=>{let e=new Set(a.filter(e=>e.type===`permission_response`).map(e=>String(e.data.tool_call_id||``)));return a.filter(t=>{if(t.type!==`permission_request`)return!1;let n=String(t.data.tool_call_id||``);return n&&!e.has(n)})},[a]),Re=(0,I.useMemo)(()=>Ae(a,e),[a,e]),$=(0,I.useCallback)(async()=>{try{let[e,t,r,a,o,s]=await Promise.all([O.status(),O.listRuns(30),O.currentModel(),O.currentFallback(),O.usage(``,100),O.listAutomations(50)]);e.success&&e.data&&n(e.data),t.success&&t.data&&(i(t.data.runs),N(e=>e||t.data?.runs[0]?.run_id||null)),r.success&&r.data&&(u(r.data),ge(String(r.data.provider||``)),ve(String(r.data.model||``))),a.success&&a.data&&D(a.data),o.success&&o.data&&ae(String(o.data.text||``)),s.success&&s.data&&c(s.data.automations)}catch(t){G.error(`Failed to load Libre Claw overview:`,t),T.error(e(`libreClaw.toasts.loadStatusFailed`))}finally{oe(!1)}},[e]),ze=(0,I.useCallback)(async(e,t=!1)=>{let n=t?0:a.length>0&&a[a.length-1]?.event_id||0;try{let r=await O.getEvents(e,n);r.success&&r.data&&o(e=>t?r.data?.events||[]:[...e,...r.data?.events||[]])}catch(e){G.error(`Failed to load Libre Claw events:`,e)}},[a]);(0,I.useEffect)(()=>{let e=window.setTimeout(()=>{$()},0);return()=>window.clearTimeout(e)},[$]),(0,I.useEffect)(()=>{if(!M){let e=window.setTimeout(()=>{o([])},0);return()=>window.clearTimeout(e)}let e=M;O.getEvents(e,0).then(e=>{e.success&&e.data&&o(e.data.events)}).catch(e=>{G.error(`Failed to load Libre Claw events:`,e)})},[M]),(0,I.useEffect)(()=>{if(!M||!Q||![`queued`,`running`,`blocked`].includes(Q.state))return;let e=window.setInterval(()=>{ze(M),O.listRuns(30).then(e=>{e.success&&e.data&&i(e.data.runs)})},1500);return()=>window.clearInterval(e)},[ze,Q,M]);let Be=async()=>{if(!B.trim()){T.error(e(`libreClaw.toasts.enterTask`));return}F(!0);try{let t=await O.startRun({message:B,kind:de,provider:H||void 0,model:me||void 0});if(t.success&&t.data){let n=t.data.run;i(e=>[n,...e.filter(e=>e.run_id!==n.run_id)]),N(n.run_id),V(``),T.success(e(`libreClaw.toasts.runStarted`))}else T.error(t.error||e(`libreClaw.toasts.startRunFailed`))}catch(t){G.error(`Failed to start Libre Claw run:`,t),T.error(e(`libreClaw.toasts.startRunFailed`))}finally{F(!1)}},Ve=async t=>{try{await O.cancelRun(t),await $(),T.success(e(`libreClaw.toasts.runCancelled`))}catch(t){G.error(`Failed to cancel Libre Claw run:`,t),T.error(e(`libreClaw.toasts.cancelRunFailed`))}},He=async(t,n)=>{if(!M)return;let r=String(t.data.tool_call_id||``);if(r)try{await O.resolvePermission(M,r,n),await ze(M,!0),T.success(e(n===`deny`?`libreClaw.toasts.denied`:`libreClaw.toasts.approved`))}catch(t){G.error(`Failed to resolve Libre Claw permission:`,t),T.error(e(`libreClaw.toasts.resolvePermissionFailed`))}},Ue=async()=>{if(!U.trim()||!K.trim()){T.error(e(`libreClaw.toasts.providerModelRequired`));return}L(!0);try{let t=await O.updateModel(U,K,be);t.success&&t.data?(u(t.data),T.success(e(`libreClaw.toasts.modelUpdated`))):T.error(t.error||e(`libreClaw.toasts.updateModelFailed`))}catch(t){G.error(`Failed to update Libre Claw model:`,t),T.error(e(`libreClaw.toasts.updateModelFailed`))}finally{L(!1)}},We=async()=>{le(!0);try{let t=await O.updateTheme(Ee,J);t.success?T.success(e(`libreClaw.toasts.themeUpdated`)):T.error(t.error||e(`libreClaw.toasts.updateThemeFailed`))}catch(t){G.error(`Failed to update Libre Claw theme:`,t),T.error(e(`libreClaw.toasts.updateThemeFailed`))}finally{le(!1)}},Ge=async()=>{if(!je.trim()||!Ne.trim()||!Z.trim()){T.error(e(`libreClaw.toasts.automationRequired`));return}ue(!0);try{let t=await O.createAutomation({name:je,schedule:Ne,prompt:Z,route:Fe});t.success?(Me(``),X(``),Pe(``),await $(),T.success(e(`libreClaw.toasts.automationCreated`))):T.error(t.error||e(`libreClaw.toasts.createAutomationFailed`))}catch(t){G.error(`Failed to create Libre Claw automation:`,t),T.error(e(`libreClaw.toasts.createAutomationFailed`))}finally{ue(!1)}},Ke=async(t,n)=>{try{n===`pause`&&await O.pauseAutomation(t),n===`resume`&&await O.resumeAutomation(t),n===`run`&&await O.runAutomationNow(t),n===`delete`&&await O.deleteAutomation(t),await $(),T.success(e(`libreClaw.toasts.automationUpdated`))}catch(t){G.error(`Failed to update Libre Claw automation:`,t),T.error(e(`libreClaw.toasts.updateAutomationFailed`))}};return(0,W.jsxs)(ie,{width:`wide`,contentClassName:`space-y-6`,children:[(0,W.jsx)(j,{className:`mb-0`,title:e(`libreClaw.title`),description:e(`libreClaw.subtitle`),actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(xe,{status:t,t:e}),(0,W.jsxs)(A,{variant:`secondary`,size:`sm`,onClick:$,children:[(0,W.jsx)(m,{className:`h-4 w-4`}),e(`common.refresh`)]}),(0,W.jsxs)(`a`,{href:t?.dashboardUrl||`http://127.0.0.1:8766/dashboard`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex min-h-9 items-center gap-1.5 rounded-xl border border-gray-200/80 bg-white/70 px-3 py-1.5 text-sm font-medium text-gray-700 transition-colors hover:bg-white dark:border-white/10 dark:bg-white/[0.04] dark:text-dark-700 dark:hover:bg-white/[0.08]`,children:[(0,W.jsx)(x,{className:`h-4 w-4`}),e(`libreClaw.dashboard`)]})]})}),!t?.connected&&!P&&(0,W.jsx)(`section`,{className:`rounded-xl border border-amber-200 bg-amber-500/10 p-4 text-ink dark:border-amber-800 dark:bg-amber-900/20`,children:(0,W.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,W.jsx)(te,{className:`mt-0.5 h-5 w-5 shrink-0 text-amber-500`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`font-semibold`,children:e(`libreClaw.connection.disconnectedTitle`)}),(0,W.jsx)(`p`,{className:`mt-1 text-sm opacity-90`,children:(0,W.jsx)(_e,{i18nKey:`libreClaw.connection.disconnectedDescription`,components:{command:(0,W.jsx)(`code`,{}),env:(0,W.jsx)(`code`,{})}})}),t?.error&&(0,W.jsx)(`p`,{className:`mt-2 text-xs opacity-80`,children:t.error})]})]})}),(0,W.jsxs)(`section`,{className:`grid gap-4 lg:grid-cols-[minmax(0,1fr)_360px]`,children:[(0,W.jsx)(q,{title:e(`libreClaw.startRun.title`),icon:(0,W.jsx)(p,{className:`h-4 w-4`}),children:(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(`textarea`,{value:B,onChange:e=>V(e.target.value),placeholder:e(`libreClaw.startRun.placeholder`),className:`min-h-32 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm text-gray-900 outline-none transition focus:border-primary-400 focus:ring-2 focus:ring-primary-100 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800 dark:focus:border-primary-500 dark:focus:ring-primary-900/30`}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-4`,children:[(0,W.jsxs)(`select`,{value:de,onChange:e=>fe(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:[(0,W.jsx)(`option`,{value:`chat`,children:e(`libreClaw.startRun.chatRun`)}),(0,W.jsx)(`option`,{value:`goal`,children:e(`libreClaw.startRun.goalMode`)})]}),(0,W.jsx)(`input`,{value:H,onChange:e=>pe(e.target.value),placeholder:e(`libreClaw.startRun.providerOverride`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,W.jsx)(`input`,{value:me,onChange:e=>he(e.target.value),placeholder:e(`libreClaw.startRun.modelOverride`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,W.jsxs)(A,{onClick:Be,loading:se,children:[(0,W.jsx)(h,{className:`h-4 w-4`}),e(`libreClaw.startRun.run`)]})]})]})}),(0,W.jsx)(q,{title:e(`libreClaw.modelRoute.title`),icon:(0,W.jsx)(w,{className:`h-4 w-4`}),children:(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2 lg:grid-cols-1`,children:[(0,W.jsx)(`input`,{value:U,onChange:e=>ge(e.target.value),placeholder:e(`libreClaw.modelRoute.providerPlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,W.jsx)(`input`,{value:K,onChange:e=>ve(e.target.value),placeholder:e(`libreClaw.modelRoute.modelPlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-gray-600 dark:text-dark-600`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:be,onChange:e=>Te(e.target.checked),className:`h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500`}),e(`libreClaw.modelRoute.persistGlobal`)]}),(0,W.jsx)(A,{variant:`secondary`,onClick:Ue,loading:ce,children:e(`libreClaw.modelRoute.saveModel`)}),(0,W.jsxs)(`div`,{className:`border-t border-gray-100 pt-3 dark:border-dark-200`,children:[(0,W.jsx)(`label`,{className:`mb-1 block text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-dark-500`,children:e(`libreClaw.modelRoute.theme`)}),(0,W.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto] lg:grid-cols-1`,children:[(0,W.jsx)(`select`,{value:Ee,onChange:e=>De(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:ye.map(([e,t])=>(0,W.jsx)(`option`,{value:e,children:t},e))}),(0,W.jsx)(A,{variant:`secondary`,onClick:We,loading:R,children:e(`libreClaw.modelRoute.saveTheme`)})]}),(0,W.jsxs)(`label`,{className:`mt-2 flex items-center gap-2 text-sm text-gray-600 dark:text-dark-600`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:J,onChange:e=>Y(e.target.checked),className:`h-4 w-4 rounded border-gray-300 text-primary-600 focus:ring-primary-500`}),e(`libreClaw.modelRoute.persistGlobal`)]})]}),l&&(0,W.jsx)(`pre`,{className:`max-h-32 overflow-auto rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(l,null,2)})]})})]}),(0,W.jsxs)(`section`,{className:`grid gap-4 xl:grid-cols-[360px_minmax(0,1fr)]`,children:[(0,W.jsx)(q,{title:e(`libreClaw.runs.title`),icon:(0,W.jsx)(g,{className:`h-4 w-4`}),children:(0,W.jsxs)(`div`,{className:`space-y-2`,children:[r.length===0&&(0,W.jsx)(Oe,{text:e(`libreClaw.runs.empty`)}),r.map(t=>(0,W.jsxs)(`button`,{onClick:()=>N(t.run_id),className:k(`w-full rounded-xl border p-3 text-start transition`,M===t.run_id?`border-primary-300 bg-primary-50 dark:border-primary-700 dark:bg-primary-900/20`:`border-gray-200 bg-white hover:bg-gray-50 dark:border-dark-300 dark:bg-dark-50 dark:hover:bg-dark-100`),children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,W.jsx)(`span`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,children:t.title}),(0,W.jsx)(Se,{state:t.state,t:e})]}),(0,W.jsxs)(`div`,{className:`mt-1 truncate text-xs text-gray-500 dark:text-dark-500`,children:[t.provider,`:`,t.model]}),(0,W.jsx)(`div`,{className:`mt-1 text-xs text-gray-400 dark:text-dark-500`,children:ke(t.updated_at)})]},t.run_id))]})}),(0,W.jsxs)(q,{title:Q?Q.title:e(`libreClaw.timeline.title`),icon:(0,W.jsx)(v,{className:`h-4 w-4`}),actions:Q&&[`queued`,`running`,`blocked`].includes(Q.state)?(0,W.jsxs)(A,{variant:`danger`,size:`sm`,onClick:()=>Ve(Q.run_id),children:[(0,W.jsx)(b,{className:`h-4 w-4`}),e(`common.cancel`)]}):null,children:[Le.length>0&&(0,W.jsxs)(`div`,{className:`mb-4 space-y-2 rounded-xl border border-amber-200 bg-amber-500/10 p-3 dark:border-amber-800 dark:bg-amber-900/20`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-ink`,children:[(0,W.jsx)(ne,{className:`h-4 w-4 text-amber-500`}),e(`libreClaw.approvals.needed`)]}),Le.map(t=>(0,W.jsxs)(`div`,{className:`rounded-lg bg-white/70 p-3 dark:bg-dark-50/70`,children:[(0,W.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(t.data.name||e(`libreClaw.fallbacks.tool`))}),(0,W.jsx)(`pre`,{className:`mt-2 max-h-36 overflow-auto rounded bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(t.data.arguments||{},null,2)}),(0,W.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,W.jsxs)(A,{size:`sm`,onClick:()=>He(t,`allow_once`),children:[(0,W.jsx)(y,{className:`h-4 w-4`}),e(`libreClaw.approvals.allowOnce`)]}),(0,W.jsx)(A,{size:`sm`,variant:`secondary`,onClick:()=>He(t,`always_allow_tool`),children:e(`libreClaw.approvals.alwaysAllowTool`)}),(0,W.jsxs)(A,{size:`sm`,variant:`danger`,onClick:()=>He(t,`deny`),children:[(0,W.jsx)(ee,{className:`h-4 w-4`}),e(`libreClaw.approvals.deny`)]})]})]},t.event_id))]}),(0,W.jsxs)(`div`,{className:`space-y-3`,children:[a.length===0&&(0,W.jsx)(Oe,{text:e(`libreClaw.timeline.empty`)}),Re.map(t=>(0,W.jsx)(we,{item:t,t:e},t.key))]})]})]}),(0,W.jsxs)(`section`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,W.jsx)(q,{title:e(`libreClaw.automations.title`),icon:(0,W.jsx)(_,{className:`h-4 w-4`}),children:(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,W.jsx)(`input`,{value:je,onChange:e=>Me(e.target.value),placeholder:e(`libreClaw.automations.namePlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,W.jsx)(`input`,{value:Ne,onChange:e=>X(e.target.value),placeholder:e(`libreClaw.automations.schedulePlaceholder`),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,W.jsxs)(`select`,{value:Fe,onChange:e=>Ie(e.target.value),className:`rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`,children:[(0,W.jsx)(`option`,{value:`report`,children:e(`libreClaw.automations.routes.report`)}),(0,W.jsx)(`option`,{value:`telegram`,children:e(`libreClaw.automations.routes.telegram`)})]}),(0,W.jsx)(A,{onClick:Ge,loading:z,children:e(`libreClaw.automations.create`)})]}),(0,W.jsx)(`textarea`,{value:Z,onChange:e=>Pe(e.target.value),placeholder:e(`libreClaw.automations.promptPlaceholder`),className:`min-h-24 w-full rounded-xl border border-gray-200 bg-white px-3 py-2 text-sm dark:border-dark-300 dark:bg-dark-50 dark:text-dark-800`}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[s.length===0&&(0,W.jsx)(Oe,{text:e(`libreClaw.automations.empty`)}),s.map(t=>(0,W.jsx)(`div`,{className:`rounded-xl border border-gray-200 bg-white p-3 dark:border-dark-300 dark:bg-dark-50`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`div`,{className:`truncate text-sm font-medium text-gray-900 dark:text-dark-900`,children:t.name}),(0,W.jsxs)(`div`,{className:`mt-1 text-xs text-gray-500 dark:text-dark-500`,children:[t.schedule,` ·`,` `,e(`libreClaw.automations.routes.${t.route}`,{defaultValue:t.route}),` `,`·`,` `,e(`libreClaw.automations.status.${t.status}`,{defaultValue:t.status})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[(0,W.jsx)(Ce,{title:e(`libreClaw.automations.runNow`),onClick:()=>Ke(t.automation_id,`run`),children:(0,W.jsx)(p,{className:`h-4 w-4`})}),(0,W.jsx)(Ce,{title:t.status===`paused`?e(`libreClaw.automations.resume`):e(`libreClaw.automations.pause`),onClick:()=>Ke(t.automation_id,t.status===`paused`?`resume`:`pause`),children:t.status===`paused`?(0,W.jsx)(p,{className:`h-4 w-4`}):(0,W.jsx)(C,{className:`h-4 w-4`})}),(0,W.jsx)(Ce,{title:e(`common.delete`),danger:!0,onClick:()=>Ke(t.automation_id,`delete`),children:(0,W.jsx)(S,{className:`h-4 w-4`})})]})]})},t.automation_id))]})]})}),(0,W.jsx)(q,{title:e(`libreClaw.usageFallback.title`),icon:(0,W.jsx)(g,{className:`h-4 w-4`}),children:(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`mb-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`libreClaw.usageFallback.usage`)}),(0,W.jsx)(`pre`,{className:`max-h-52 overflow-auto rounded-xl bg-gray-100 p-3 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:re||e(`libreClaw.usageFallback.noUsage`)})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`mb-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:e(`libreClaw.usageFallback.fallbackRoute`)}),(0,W.jsx)(`pre`,{className:`max-h-52 overflow-auto rounded-xl bg-gray-100 p-3 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(f||{},null,2)})]})]})})]}),P&&(0,W.jsx)(`div`,{className:`fixed inset-0 z-40 flex items-center justify-center bg-white/60 backdrop-blur-sm dark:bg-dark-50/60`,children:(0,W.jsx)(E,{className:`h-7 w-7 animate-spin text-primary-600`})})]})},xe=({status:e,t})=>{let n=!!e?.connected;return(0,W.jsxs)(`span`,{className:k(`inline-flex items-center gap-2 rounded-full px-3 py-1.5 text-sm font-medium`,n?`bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-300`:`bg-amber-500/20 text-ink dark:bg-amber-900/30`),children:[(0,W.jsx)(`span`,{className:k(`h-2 w-2 rounded-full`,n?`bg-emerald-500`:`bg-amber-500`)}),t(n?`libreClaw.status.connected`:`libreClaw.status.disconnected`),e?.health?.active_runs!==void 0&&(0,W.jsxs)(`span`,{className:`opacity-70`,children:[`·`,` `,t(`libreClaw.status.activeRuns`,{count:e.health.active_runs})]})]})},Se=({state:e,t})=>(0,W.jsx)(`span`,{className:k(`rounded-full px-2 py-0.5 text-[11px] font-semibold uppercase tracking-wide`,K[e]||K.queued),children:t(`libreClaw.states.${e}`,{defaultValue:e})}),q=({title:e,icon:t,actions:n,children:r})=>(0,W.jsxs)(`section`,{className:`rounded-2xl border border-gray-200/80 bg-white/60 dark:border-white/10 dark:bg-white/[0.03]`,children:[(0,W.jsxs)(`header`,{className:`flex items-center justify-between gap-3 border-b border-gray-200/70 px-5 py-4 dark:border-white/[0.08]`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-semibold text-gray-900 dark:text-dark-900`,children:[(0,W.jsx)(`span`,{className:`text-primary-600 dark:text-primary-300`,children:t}),e]}),n]}),(0,W.jsx)(`div`,{className:`p-5`,children:r})]}),Ce=({title:e,danger:t,onClick:n,children:r})=>(0,W.jsx)(`button`,{type:`button`,title:e,onClick:n,className:k(`inline-flex h-8 w-8 items-center justify-center rounded-lg transition-colors`,t?`text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20`:`text-gray-500 hover:bg-gray-100 dark:text-dark-500 dark:hover:bg-dark-200`),children:r}),we=({item:e,t})=>(0,W.jsxs)(`article`,{className:k(`rounded-xl border p-3 transition-colors`,e.eventType===`assistant_message`?`border-primary-200 bg-primary-50/60 dark:border-primary-900/60 dark:bg-primary-900/10`:(e.eventType,`border-gray-200/80 bg-white/50 dark:border-white/[0.08] dark:bg-white/[0.025]`)),children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,W.jsx)(`span`,{className:k(`text-xs font-semibold uppercase tracking-wide`,ve[e.eventType]||`text-gray-500 dark:text-dark-500`),children:e.label}),(0,W.jsxs)(`span`,{className:`shrink-0 text-xs text-gray-400 dark:text-dark-500`,children:[Ne(e),` · `,ke(e.timestamp)]})]}),(0,W.jsx)(Te,{item:e,t})]}),Te=({item:e,t})=>{if(e.kind===`assistant_message`)return(0,W.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-6 text-gray-900 dark:text-dark-900`,children:je(e.events)||t(`libreClaw.timeline.streaming`)});let n=e.events[0];return n?n.type===`assistant_delta`?(0,W.jsx)(`p`,{className:`whitespace-pre-wrap text-sm text-gray-800 dark:text-dark-800`,children:String(n.data.text||``)}):n.type===`user_message`?(0,W.jsx)(`p`,{className:`whitespace-pre-wrap text-sm text-gray-800 dark:text-dark-800`,children:String(n.data.content||``)}):n.type===`tool_call`?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(n.data.name||t(`libreClaw.fallbacks.tool`))}),(0,W.jsx)(Y,{value:n.data.arguments||{}})]}):n.type===`tool_result`?(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:[String(n.data.name||t(`libreClaw.fallbacks.tool`)),` ·`,` `,n.data.is_error?t(`libreClaw.timeline.resultError`):t(`libreClaw.timeline.resultOk`)]}),(0,W.jsx)(`pre`,{className:`mt-2 max-h-56 overflow-auto whitespace-pre-wrap rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:String(n.data.content||``)})]}):n.type===`permission_request`?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`text-sm font-medium text-gray-900 dark:text-dark-900`,children:String(n.data.name||t(`libreClaw.approvals.toolApprovalRequested`))}),(0,W.jsx)(Y,{value:n.data.arguments||{}})]}):n.type===`permission_response`?(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(J,{label:t(`libreClaw.metrics.tool`),value:String(n.data.name||n.data.tool_call_id||t(`libreClaw.fallbacks.tool`))}),(0,W.jsx)(J,{label:t(`libreClaw.metrics.resolution`),value:String(n.data.resolution||t(`libreClaw.fallbacks.resolved`))})]}):n.type===`usage`?(0,W.jsx)(Ee,{data:n.data,t}):n.type===`run_finished`?(0,W.jsx)(De,{data:n.data,t}):n.type===`error`?(0,W.jsx)(`p`,{className:`text-sm text-red-700 dark:text-red-300`,children:String(n.data.message||t(`libreClaw.fallbacks.unknownError`))}):(0,W.jsx)(Y,{value:n.data}):null},Ee=({data:e,t})=>(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(J,{label:t(`libreClaw.metrics.provider`),value:String(e.provider||t(`libreClaw.fallbacks.unknown`))}),(0,W.jsx)(J,{label:t(`libreClaw.metrics.model`),value:String(e.model||t(`libreClaw.fallbacks.unknown`))}),(0,W.jsx)(J,{label:t(`libreClaw.metrics.input`),value:t(`libreClaw.metrics.tokens`,{count:X(e.input_tokens),formatted:Z(e.input_tokens)})}),(0,W.jsx)(J,{label:t(`libreClaw.metrics.output`),value:t(`libreClaw.metrics.tokens`,{count:X(e.output_tokens),formatted:Z(e.output_tokens)})}),X(e.cached_tokens)>0&&(0,W.jsx)(J,{label:t(`libreClaw.metrics.cached`),value:t(`libreClaw.metrics.tokens`,{count:X(e.cached_tokens),formatted:Z(e.cached_tokens)})}),X(e.reasoning_tokens)>0&&(0,W.jsx)(J,{label:t(`libreClaw.metrics.reasoning`),value:t(`libreClaw.metrics.tokens`,{count:X(e.reasoning_tokens),formatted:Z(e.reasoning_tokens)})}),(0,W.jsx)(J,{label:t(`libreClaw.metrics.cost`),value:Pe(e.cost)})]}),De=({data:e,t})=>(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(J,{label:t(`libreClaw.metrics.state`),value:t(`libreClaw.states.${String(e.state||`done`)}`,{defaultValue:String(e.state||`done`)})}),e.stop_reason!==void 0&&(0,W.jsx)(J,{label:t(`libreClaw.metrics.stopReason`),value:String(e.stop_reason)})]}),J=({label:e,value:t})=>(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-gray-200/80 bg-white/50 px-2.5 py-1 text-xs text-gray-700 dark:border-white/10 dark:bg-white/[0.035] dark:text-dark-700`,children:[(0,W.jsx)(`span`,{className:`font-semibold text-gray-500 dark:text-dark-500`,children:e}),(0,W.jsx)(`span`,{children:t})]}),Y=({value:e})=>(0,W.jsx)(`pre`,{className:`mt-2 max-h-56 overflow-auto rounded-lg bg-gray-100 p-2 text-xs text-gray-700 dark:bg-dark-200 dark:text-dark-700`,children:JSON.stringify(e,null,2)}),Oe=({text:e})=>(0,W.jsx)(`div`,{className:`rounded-xl border border-dashed border-gray-300 bg-white/30 px-4 py-8 text-center text-sm text-gray-500 dark:border-white/15 dark:bg-white/[0.02] dark:text-dark-500`,children:e}),ke=e=>{if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()},Ae=(e,t)=>{let n=[],r=0;for(;r<e.length;){let i=e[r];if(!i)break;if(i.type===`assistant_delta`){let i=[];for(;e[r]?.type===`assistant_delta`;){let t=e[r];t&&i.push(t),r+=1}let a=i[0],o=i[i.length-1]||a;a&&o&&n.push({key:`assistant-${a.event_id}-${o.event_id}`,kind:`assistant_message`,eventType:`assistant_message`,label:t(`libreClaw.timeline.assistantResponse`),firstEventId:a.event_id,lastEventId:o.event_id,timestamp:a.timestamp,events:i});continue}n.push({key:`${i.type}-${i.event_id}`,kind:`event`,eventType:i.type,label:Me(i.type,t),firstEventId:i.event_id,lastEventId:i.event_id,timestamp:i.timestamp,events:[i]}),r+=1}return n},je=e=>e.map(e=>String(e.data.text||``)).join(``),Me=(e,t)=>({user_message:t(`libreClaw.timeline.labels.userMessage`),tool_call:t(`libreClaw.timeline.labels.toolCall`),tool_result:t(`libreClaw.timeline.labels.toolResult`),permission_request:t(`libreClaw.timeline.labels.approvalRequest`),permission_response:t(`libreClaw.timeline.labels.approvalResponse`),run_started:t(`libreClaw.timeline.labels.runStarted`),run_finished:t(`libreClaw.timeline.labels.runFinished`),usage:t(`libreClaw.timeline.labels.usage`),error:t(`libreClaw.timeline.labels.error`)})[e]||e.replace(/_/g,` `),Ne=e=>e.firstEventId===e.lastEventId?`#${e.firstEventId}`:`#${e.firstEventId}-#${e.lastEventId}`,X=e=>{let t=Number(e);return Number.isFinite(t)?t:0},Z=e=>new Intl.NumberFormat().format(X(e)),Pe=e=>{let t=X(e);return t<=0?`$0.00`:t<.01?`$${t.toFixed(6)}`:`$${t.toFixed(4)}`};export{be as default};