@pheem49/mint 1.16.0 → 1.17.0

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 (848) hide show
  1. package/Cargo.lock +6 -6
  2. package/Cargo.toml +1 -1
  3. package/README.md +1 -1
  4. package/Release_Note.md +71 -72
  5. package/apps/mint-companion/src-tauri/src/compact.rs +69 -0
  6. package/apps/mint-companion/src-tauri/src/main.rs +218 -11
  7. package/apps/mint-companion/vite.config.ts +2 -1
  8. package/crates/mint-cli/src/agent/live_status.rs +43 -2
  9. package/crates/mint-cli/src/agent.rs +178 -38
  10. package/crates/mint-cli/src/commands/agent.rs +225 -31
  11. package/crates/mint-cli/src/commands/browser.rs +127 -0
  12. package/crates/mint-cli/src/commands/config.rs +14 -1
  13. package/crates/mint-cli/src/commands/knowledge.rs +16 -2
  14. package/crates/mint-cli/src/commands/mod.rs +15 -1
  15. package/crates/mint-cli/src/commands/tailnet_web.rs +2 -7
  16. package/crates/mint-cli/src/companion_navigation.rs +268 -0
  17. package/crates/mint-cli/src/interactive/chat_tui.rs +1065 -63
  18. package/crates/mint-cli/src/interactive/command_ui.rs +39 -0
  19. package/crates/mint-cli/src/interactive/slash_commands.rs +114 -6
  20. package/crates/mint-cli/src/interactive/tool_activity.rs +375 -36
  21. package/crates/mint-cli/src/interactive.rs +37 -5
  22. package/crates/mint-cli/src/main.rs +23 -2
  23. package/crates/mint-cli/src/onboard.rs +3494 -1336
  24. package/crates/mint-cli/tests/mods_testing.rs +5 -1
  25. package/crates/mint-companion-protocol/src/lib.rs +113 -0
  26. package/crates/mint-core/src/agent/chat.rs +240 -1
  27. package/crates/mint-core/src/agent/memory.rs +73 -6
  28. package/crates/mint-core/src/agent/safety.rs +56 -4
  29. package/crates/mint-core/src/agent/skill_inventory.rs +3 -1
  30. package/crates/mint-core/src/agent/skills.rs +1 -0
  31. package/crates/mint-core/src/api_server/routes/auth.rs +1 -4
  32. package/crates/mint-core/src/api_server/routes/chat.rs +29 -15
  33. package/crates/mint-core/src/api_server/routes/misc.rs +116 -0
  34. package/crates/mint-core/src/api_server/routes/profile_oauth.rs +43 -26
  35. package/crates/mint-core/src/api_server/routes/sessions.rs +93 -76
  36. package/crates/mint-core/src/api_server/routes/skills_subagents.rs +11 -7
  37. package/crates/mint-core/src/api_server/routes/status_health.rs +18 -8
  38. package/crates/mint-core/src/api_server.rs +211 -65
  39. package/crates/mint-core/src/avatar_bridge.rs +5 -2
  40. package/crates/mint-core/src/browser/cdp.rs +82 -26
  41. package/crates/mint-core/src/browser/lifecycle.rs +143 -43
  42. package/crates/mint-core/src/browser/mod.rs +5 -4
  43. package/crates/mint-core/src/browser/navigate.rs +82 -9
  44. package/crates/mint-core/src/browser/runtime.rs +284 -0
  45. package/crates/mint-core/src/browser/session.rs +263 -7
  46. package/crates/mint-core/src/browser/workflow.rs +386 -0
  47. package/crates/mint-core/src/companion/navigation.rs +115 -0
  48. package/crates/mint-core/src/companion.rs +109 -1
  49. package/crates/mint-core/src/integrations/mcp_result.rs +45 -0
  50. package/crates/mint-core/src/lib.rs +10 -6
  51. package/crates/mint-core/src/media/image_proxy.rs +563 -0
  52. package/crates/mint-core/src/media/tool_images.rs +196 -0
  53. package/crates/mint-core/src/media/tts/playback.rs +609 -0
  54. package/crates/mint-core/src/media/tts.rs +1 -0
  55. package/crates/mint-core/src/media.rs +2 -0
  56. package/crates/mint-core/src/orchestration/context_render.rs +450 -33
  57. package/crates/mint-core/src/orchestration/decision_parsing.rs +5 -23
  58. package/crates/mint-core/src/orchestration/diagnostics.rs +307 -0
  59. package/crates/mint-core/src/orchestration/image_regressions.rs +379 -0
  60. package/crates/mint-core/src/orchestration/loop_guard.rs +334 -0
  61. package/crates/mint-core/src/orchestration/mod.rs +1104 -560
  62. package/crates/mint-core/src/orchestration/reliability.rs +541 -0
  63. package/crates/mint-core/src/orchestration/repeated_failures.rs +8 -0
  64. package/crates/mint-core/src/orchestration/review_regressions.rs +174 -28
  65. package/crates/mint-core/src/orchestration/tools/files.rs +31 -3
  66. package/crates/mint-core/src/orchestration/tools/plugins_mcp.rs +19 -4
  67. package/crates/mint-core/src/orchestration/tools/project.rs +1 -1
  68. package/crates/mint-core/src/orchestration/tools/shell.rs +29 -5
  69. package/crates/mint-core/src/orchestration/tools/web.rs +5 -1
  70. package/crates/mint-core/src/orchestration/trajectory_schema.rs +353 -0
  71. package/crates/mint-core/src/orchestration/truncation.rs +211 -0
  72. package/crates/mint-core/src/orchestration/verification.rs +36 -6
  73. package/crates/mint-core/src/orchestration/workspace_helpers.rs +54 -23
  74. package/crates/mint-core/src/prompts/agent.rs +31 -40
  75. package/crates/mint-core/src/prompts/tool_catalog.rs +134 -40
  76. package/crates/mint-core/src/search/web_search.rs +44 -3
  77. package/crates/mint-core/src/slash/mod.rs +464 -1
  78. package/crates/mint-core/src/swarm/batch.rs +643 -0
  79. package/crates/mint-core/src/swarm/dossier.rs +152 -0
  80. package/crates/mint-core/src/swarm/labels.rs +100 -0
  81. package/crates/mint-core/src/swarm/mod.rs +158 -0
  82. package/crates/mint-core/src/swarm/permissions.rs +167 -0
  83. package/crates/mint-core/src/system/auth.rs +156 -7
  84. package/crates/mint-core/src/system/bg_shell.rs +77 -9
  85. package/crates/mint-core/src/system/config.rs +92 -3
  86. package/crates/mint-core/src/system/mint_web.rs +33 -12
  87. package/crates/mint-core/src/system/shell.rs +179 -10
  88. package/crates/mint-core/src/system/workspace.rs +204 -0
  89. package/crates/mint-core/tests/background_retention.rs +1 -1
  90. package/crates/mint-core/tests/memory_persistence.rs +27 -0
  91. package/out/web/assets/ArtifactPreviewPanel-DAT_Y7i0.css +1 -0
  92. package/out/web/assets/ArtifactPreviewPanel-S0dPfYFx.js +2 -0
  93. package/out/web/assets/CalculationCard-CRjP3E1j.js +1 -0
  94. package/out/web/assets/{CliSessionsView-CtzUJpK_.css → CliSessionsView-C3Br2v5Y.css} +1 -1
  95. package/out/web/assets/CliSessionsView-MI8kXMAb.js +1 -0
  96. package/out/web/assets/CodeReviewPage-CUJceQme.css +1 -0
  97. package/out/web/assets/CodeReviewPage-VCUgPla_.js +2 -0
  98. package/out/web/assets/CommandPalette-BD8SlTE5.js +1 -0
  99. package/out/web/assets/ImageGenCard-BCXxkVJX.js +1 -0
  100. package/out/web/assets/ImageSearchCard-N3yQOr8Z.js +1 -0
  101. package/out/web/assets/ImageStudioPanel-BP7N4rLr.js +1 -0
  102. package/out/web/assets/LibraryPage-WlviRdR8.js +2 -0
  103. package/out/web/assets/LinkedFoldersView-CKRgroWK.js +1 -0
  104. package/out/web/assets/McpRegistryPicker-CoS83vtc.js +1 -0
  105. package/out/web/assets/McpServersView-D3wHnuHg.js +1 -0
  106. package/out/web/assets/MermaidCard-NqrHdyJW.js +2 -0
  107. package/out/web/assets/MintDashboard-B2DJsDDO.css +1 -0
  108. package/out/web/assets/MintDashboard-COw_xol7.js +63 -0
  109. package/out/web/assets/PluginsView-jBYmcKh4.js +1 -0
  110. package/out/web/assets/RewindModal-DempuDod.js +1 -0
  111. package/out/web/assets/ScheduledTasksView-5uw9-V9H.js +1 -0
  112. package/out/web/assets/SelectField-DXBQtrUK.js +1 -0
  113. package/out/web/assets/SelectField-lFEkkWCU.css +1 -0
  114. package/out/web/assets/SettingsWindow-2YP3yj7s.js +4 -0
  115. package/out/web/assets/SettingsWindow-Dz8LQVgD.css +1 -0
  116. package/out/web/assets/SkillsView-C-gp9J7m.js +2 -0
  117. package/out/web/assets/StockCard-BDMCe7mx.js +1 -0
  118. package/out/web/assets/ToolSurfacePage-B0J_q0Jl.js +38 -0
  119. package/out/web/assets/ToolSurfacePage-CRIQ1owD.css +1 -0
  120. package/out/web/assets/UiFeatureCard-6BwxTOCe.js +1 -0
  121. package/out/web/assets/UiGridCard-DvZcLNxb.js +1 -0
  122. package/out/web/assets/UiMockupWidget-DD73QWg1.js +1 -0
  123. package/out/web/assets/VeoStudioPanel-DfsOJKv0.js +4 -0
  124. package/out/web/assets/WeatherCard-CPucIfq8.js +1 -0
  125. package/out/web/assets/WorkspacePanel-BfHKkulU.js +1 -0
  126. package/out/web/assets/WorkspacePdfPreview-Dx_lkjNu.js +2 -0
  127. package/out/web/assets/abnfDiagram-VCTEODGH-BOo3Ckng.js +1 -0
  128. package/out/web/assets/architecture-7GRP2DOG-ZOwheW3n.js +1 -0
  129. package/out/web/assets/architectureDiagram-5GKGNRK7-DC2FDzVd.js +36 -0
  130. package/out/web/assets/{blockDiagram-NRAW4CY4-BrrqzHW5.js → blockDiagram-I7D4REHJ-BrKFWdAH.js} +4 -4
  131. package/out/web/assets/c4Diagram-7LVT6UL2-BHTHK1Yd.js +38 -0
  132. package/out/web/assets/chunk-2Q5K7J3B-D2JLPQzF.js +1 -0
  133. package/out/web/assets/{chunk-TEH6E4GO-G4Cdlyrt.js → chunk-4HAMMTFA-BYFkZwNj.js} +3 -3
  134. package/out/web/assets/{chunk-5VM5RSS4-BiPuE0io.js → chunk-5VM5RSS4-BZ2oBPYQ.js} +1 -1
  135. package/out/web/assets/chunk-75Z2AOVW-BSKfSKSA.js +2 -0
  136. package/out/web/assets/chunk-DU6HZSFF-vIhsiW6n.js +128 -0
  137. package/out/web/assets/chunk-F27PBJKO-BlYpW9xq.js +1 -0
  138. package/out/web/assets/chunk-FOHPRMQF-JXEeeJ9r.js +161 -0
  139. package/out/web/assets/{chunk-GMAD6QVW-BuhEcgHq.js → chunk-GMAD6QVW-BIBz_Ug5.js} +12 -12
  140. package/out/web/assets/chunk-GVQU2GXP-NPSHxeqC.js +1 -0
  141. package/out/web/assets/chunk-IMKFNOWR-YlJK8_Fp.js +231 -0
  142. package/out/web/assets/chunk-JWPE2WC7-BeEMUFDw.js +1 -0
  143. package/out/web/assets/chunk-L3NEJ4N5-DMYi4-af.js +1 -0
  144. package/out/web/assets/chunk-OSK3NFVY-Begd3-jA.js +10 -0
  145. package/out/web/assets/chunk-P2QGCYS3-D1I4xFHN.js +1 -0
  146. package/out/web/assets/chunk-POPQ4Y6H-CafZZzNE.js +1 -0
  147. package/out/web/assets/chunk-PWAF6VOD-Dwh6_Lnt.js +1 -0
  148. package/out/web/assets/chunk-SHT3W25Y-B0XrCSEb.js +168 -0
  149. package/out/web/assets/{chunk-SVP7TREG-Bu_yYb-V.js → chunk-SVP7TREG-CxLsddxC.js} +1 -1
  150. package/out/web/assets/{chunk-LCL6LL3I-BhXV9zyH.js → chunk-TICWLB2K-y156QInb.js} +4 -4
  151. package/out/web/assets/chunk-XXDRQBXY-B9YlhOkE.js +1 -0
  152. package/out/web/assets/chunk-Y2CYZVJY-BxCWjNVG.js +1 -0
  153. package/out/web/assets/classDiagram-ZZMXUADV-BgJ5WtSp.js +1 -0
  154. package/out/web/assets/classDiagram-v2-VYDZK3BY-BgJ5WtSp.js +1 -0
  155. package/out/web/assets/config-CvIO5hkn.js +2 -0
  156. package/out/web/assets/config-DqXJXeZM.css +1 -0
  157. package/out/web/assets/core-Mi3s5D4_.js +1 -0
  158. package/out/web/assets/cose-bilkent-JH36ORCC-qlna31ty.js +1 -0
  159. package/out/web/assets/cynefin-OW5HDTMX-SMVvrLf-.js +1 -0
  160. package/out/web/assets/cynefinDiagram-5FMLGOSQ-rZznN24T.js +62 -0
  161. package/out/web/assets/cytoscape.esm-DWtAUG0r.js +321 -0
  162. package/out/web/assets/dagre-CnWJJM5f.js +1 -0
  163. package/out/web/assets/dagre-GXQ25YYZ-BOToydFu.js +4 -0
  164. package/out/web/assets/diagram-S7CK7UJ4-TMVaGQEJ.js +30 -0
  165. package/out/web/assets/diagram-UQ7AKVKN-C2JK-GP2.js +41 -0
  166. package/out/web/assets/{diagram-VSXAHHWV-BJ86Ov2Y.js → diagram-VSXAHHWV-Cw8VSi2K.js} +1 -1
  167. package/out/web/assets/diagram-VX7I27RA-DXp4fKk9.js +24 -0
  168. package/out/web/assets/diagram-Z3DM3KII-CzSicYiW.js +24 -0
  169. package/out/web/assets/dist-9ISJ7r-g.js +1 -0
  170. package/out/web/assets/dist-js-BV3mI7uw.js +1 -0
  171. package/out/web/assets/ebnfDiagram-PWID7BFC-Dqj-zqPu.js +1 -0
  172. package/out/web/assets/{erDiagram-SSCWMZ5O-CzzmnZWT.js → erDiagram-RLTQ6QDP-DZwFZAuD.js} +3 -3
  173. package/out/web/assets/event-D7D-EBy9.js +1 -0
  174. package/out/web/assets/eventmodeling-NTZA5JFV-C0O-Lvgp.js +1 -0
  175. package/out/web/assets/flowDiagram-HODETNUW-uqCHJond.js +1 -0
  176. package/out/web/assets/ganttDiagram-EL5Y4UJY-Da4ULXTl.js +292 -0
  177. package/out/web/assets/gitGraph-4MIJSDKK-B9wNFZIP.js +1 -0
  178. package/out/web/assets/gitGraphDiagram-WWUBYQGX-RjrhB0MP.js +106 -0
  179. package/out/web/assets/graphlib-Bh9gHply.js +1 -0
  180. package/out/web/assets/index-BmpulIkg.js +168 -0
  181. package/out/web/assets/index-CkvBwhX_.css +1 -0
  182. package/out/web/assets/info-A6RAGUB7-B3dfCpeY.js +1 -0
  183. package/out/web/assets/infoDiagram-27XIBGKW-QVWkLVx7.js +2 -0
  184. package/out/web/assets/{ishikawaDiagram-5VMMS53U-s38yo28y.js → ishikawaDiagram-5VMMS53U-CLFNIRI9.js} +4 -4
  185. package/out/web/assets/journeyDiagram-3NMN7TZE-fgOQadYF.js +139 -0
  186. package/out/web/assets/jsx-runtime-DmUwWVTj.js +1 -0
  187. package/out/web/assets/{kanban-definition-3QL26DDD-DodjgySL.js → kanban-definition-UXKFOSKX-G3Q_9g9O.js} +6 -6
  188. package/out/web/assets/katex-MCdQaEAD.js +257 -0
  189. package/out/web/assets/mermaid-parser.core-v3Jm7nco.js +7 -0
  190. package/out/web/assets/mermaid.core-DTEjLUA1.js +44 -0
  191. package/out/web/assets/{mindmap-definition-FBJOCRG2-260WBDxZ.js → mindmap-definition-YA3MSWOX-C_D42_fF.js} +4 -4
  192. package/out/web/assets/modelManager-BPLycQrN.js +2 -0
  193. package/out/web/assets/oauthManager-BUK7ic7q.js +1 -0
  194. package/out/web/assets/packet-AYTQ26CC-B-R-SHlF.js +1 -0
  195. package/out/web/assets/pdf-Bcahc2yC.js +56 -0
  196. package/out/web/assets/pdf.worker.min-Dkey6ZUl.mjs +27 -0
  197. package/out/web/assets/pegDiagram-XKGWAZYB-Da2q_giz.js +1 -0
  198. package/out/web/assets/pie-WAS4IAKB-BC8F0N7-.js +1 -0
  199. package/out/web/assets/pieDiagram-E7YTZNPT-Iy9REJNC.js +39 -0
  200. package/out/web/assets/{quadrantDiagram-AXDQQJYC-B8D3gU5d.js → quadrantDiagram-AXDQQJYC-ztsiYw7h.js} +4 -4
  201. package/out/web/assets/radar-RG4KPBEZ-B_1P8Z_z.js +1 -0
  202. package/out/web/assets/railroad-74A4TZTK-DuTqczSo.js +1 -0
  203. package/out/web/assets/railroad-abnf-HS5TGJTU-Df29WLmp.js +1 -0
  204. package/out/web/assets/railroad-ebnf-LZEXJU2U-ePFMo-qp.js +1 -0
  205. package/out/web/assets/railroad-peg-WCYAUIDC-DYXLW4_E.js +1 -0
  206. package/out/web/assets/railroadDiagram-O6MQD6OU-LStnZf2S.js +1 -0
  207. package/out/web/assets/{requirementDiagram-EFPCY7ZU-D2X-Ewik.js → requirementDiagram-BXWQKSXE-DmzonMH-.js} +3 -3
  208. package/out/web/assets/rolldown-runtime-CNOWq4Kh.js +1 -0
  209. package/out/web/assets/rough.esm-CNnFptCR.js +1 -0
  210. package/out/web/assets/sankeyDiagram-P5KCCOFB-B8vjmUU1.js +40 -0
  211. package/out/web/assets/sequenceDiagram-WJ2MYXX4-CTnplOAX.js +162 -0
  212. package/out/web/assets/sizeCapture-INFHLROL-C8Q8DbV5.js +1 -0
  213. package/out/web/assets/src-CRDfRlHM.js +1 -0
  214. package/out/web/assets/stateDiagram-D77RDMKH-BFrIaLdI.js +1 -0
  215. package/out/web/assets/stateDiagram-v2-MP3YSRHH-uf3kdNW4.js +1 -0
  216. package/out/web/assets/studio-BBZQ_-QK.js +1 -0
  217. package/out/web/assets/swimlanes-42K2YHIH-BXGngUNU.js +1 -0
  218. package/out/web/assets/swimlanesDiagram-VR7AAH4N-Y8q5bQce.js +8 -0
  219. package/out/web/assets/timeline-definition-24CTP7MA-CegH7n43.js +120 -0
  220. package/out/web/assets/treeView-Q6P3EWNA-DTpJv2Tw.js +1 -0
  221. package/out/web/assets/treemap-WGGIJYW6-i8M9iJU6.js +1 -0
  222. package/out/web/assets/vennDiagram-4TSXK5OY-Dpzo1S8U.js +34 -0
  223. package/out/web/assets/wardley-WFR3VGLG-BrNsgtfw.js +1 -0
  224. package/out/web/assets/{wardleyDiagram-VM6X3IG4-DAdXELbQ.js → wardleyDiagram-VM6X3IG4-lQ92LFE1.js} +35 -35
  225. package/out/web/assets/window-CkUOP7t0.js +1 -0
  226. package/out/web/assets/workspaces-SYPrmbgC.js +1 -0
  227. package/out/web/assets/{xychartDiagram-S5SC5T6Z-IZIXf3Vo.js → xychartDiagram-S5SC5T6Z-BaOaEoBd.js} +4 -4
  228. package/out/web/index-web.html +4 -4
  229. package/out/web/index.html +4 -4
  230. package/out/web/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  231. package/out/web/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  232. package/out/web/pdfjs/cmaps/78-H.bcmap +0 -0
  233. package/out/web/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  234. package/out/web/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  235. package/out/web/pdfjs/cmaps/78-V.bcmap +0 -0
  236. package/out/web/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  237. package/out/web/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  238. package/out/web/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  239. package/out/web/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  240. package/out/web/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  241. package/out/web/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  242. package/out/web/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  243. package/out/web/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  244. package/out/web/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  245. package/out/web/pdfjs/cmaps/Add-H.bcmap +0 -0
  246. package/out/web/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  247. package/out/web/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  248. package/out/web/pdfjs/cmaps/Add-V.bcmap +0 -0
  249. package/out/web/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  250. package/out/web/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  251. package/out/web/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  252. package/out/web/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  253. package/out/web/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  254. package/out/web/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  255. package/out/web/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  256. package/out/web/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  257. package/out/web/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  258. package/out/web/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  259. package/out/web/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  260. package/out/web/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  261. package/out/web/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  262. package/out/web/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  263. package/out/web/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  264. package/out/web/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  265. package/out/web/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  266. package/out/web/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  267. package/out/web/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  268. package/out/web/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  269. package/out/web/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  270. package/out/web/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  271. package/out/web/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  272. package/out/web/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  273. package/out/web/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  274. package/out/web/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  275. package/out/web/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  276. package/out/web/pdfjs/cmaps/B5-H.bcmap +0 -0
  277. package/out/web/pdfjs/cmaps/B5-V.bcmap +0 -0
  278. package/out/web/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  279. package/out/web/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  280. package/out/web/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  281. package/out/web/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  282. package/out/web/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  283. package/out/web/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  284. package/out/web/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  285. package/out/web/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  286. package/out/web/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  287. package/out/web/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  288. package/out/web/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  289. package/out/web/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  290. package/out/web/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  291. package/out/web/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  292. package/out/web/pdfjs/cmaps/EUC-H.bcmap +0 -0
  293. package/out/web/pdfjs/cmaps/EUC-V.bcmap +0 -0
  294. package/out/web/pdfjs/cmaps/Ext-H.bcmap +0 -0
  295. package/out/web/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  296. package/out/web/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  297. package/out/web/pdfjs/cmaps/Ext-V.bcmap +0 -0
  298. package/out/web/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  299. package/out/web/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  300. package/out/web/pdfjs/cmaps/GB-H.bcmap +4 -0
  301. package/out/web/pdfjs/cmaps/GB-V.bcmap +0 -0
  302. package/out/web/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  303. package/out/web/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  304. package/out/web/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  305. package/out/web/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  306. package/out/web/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  307. package/out/web/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  308. package/out/web/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  309. package/out/web/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  310. package/out/web/pdfjs/cmaps/GBT-H.bcmap +0 -0
  311. package/out/web/pdfjs/cmaps/GBT-V.bcmap +0 -0
  312. package/out/web/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  313. package/out/web/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  314. package/out/web/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  315. package/out/web/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  316. package/out/web/pdfjs/cmaps/H.bcmap +0 -0
  317. package/out/web/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  318. package/out/web/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  319. package/out/web/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  320. package/out/web/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  321. package/out/web/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  322. package/out/web/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  323. package/out/web/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  324. package/out/web/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  325. package/out/web/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  326. package/out/web/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  327. package/out/web/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  328. package/out/web/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  329. package/out/web/pdfjs/cmaps/Hankaku.bcmap +0 -0
  330. package/out/web/pdfjs/cmaps/Hiragana.bcmap +0 -0
  331. package/out/web/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  332. package/out/web/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  333. package/out/web/pdfjs/cmaps/KSC-H.bcmap +0 -0
  334. package/out/web/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  335. package/out/web/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  336. package/out/web/pdfjs/cmaps/KSC-V.bcmap +0 -0
  337. package/out/web/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  338. package/out/web/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  339. package/out/web/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  340. package/out/web/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  341. package/out/web/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  342. package/out/web/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  343. package/out/web/pdfjs/cmaps/Katakana.bcmap +0 -0
  344. package/out/web/pdfjs/cmaps/LICENSE +36 -0
  345. package/out/web/pdfjs/cmaps/NWP-H.bcmap +0 -0
  346. package/out/web/pdfjs/cmaps/NWP-V.bcmap +0 -0
  347. package/out/web/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  348. package/out/web/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  349. package/out/web/pdfjs/cmaps/Roman.bcmap +0 -0
  350. package/out/web/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  351. package/out/web/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  352. package/out/web/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  353. package/out/web/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  354. package/out/web/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  355. package/out/web/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  356. package/out/web/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  357. package/out/web/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  358. package/out/web/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  359. package/out/web/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  360. package/out/web/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  361. package/out/web/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  362. package/out/web/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  363. package/out/web/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  364. package/out/web/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  365. package/out/web/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  366. package/out/web/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  367. package/out/web/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  368. package/out/web/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  369. package/out/web/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  370. package/out/web/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  371. package/out/web/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  372. package/out/web/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  373. package/out/web/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  374. package/out/web/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  375. package/out/web/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  376. package/out/web/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  377. package/out/web/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  378. package/out/web/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  379. package/out/web/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  380. package/out/web/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  381. package/out/web/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  382. package/out/web/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  383. package/out/web/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  384. package/out/web/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  385. package/out/web/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  386. package/out/web/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  387. package/out/web/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  388. package/out/web/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  389. package/out/web/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  390. package/out/web/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  391. package/out/web/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  392. package/out/web/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  393. package/out/web/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  394. package/out/web/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  395. package/out/web/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  396. package/out/web/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  397. package/out/web/pdfjs/cmaps/V.bcmap +0 -0
  398. package/out/web/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  399. package/out/web/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  400. package/out/web/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  401. package/out/web/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  402. package/out/web/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  403. package/out/web/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  404. package/out/web/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  405. package/out/web/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  406. package/out/web/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  407. package/out/web/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  408. package/out/web/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  409. package/out/web/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  410. package/out/web/pdfjs/standard_fonts/LICENSE_LIBERATION +363 -0
  411. package/out/web/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  412. package/out/web/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  413. package/out/web/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  414. package/out/web/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  415. package/out/web/pdfjs/wasm/LICENSE_JBIG2 +196 -0
  416. package/out/web/pdfjs/wasm/LICENSE_OPENJPEG +39 -0
  417. package/out/web/pdfjs/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  418. package/out/web/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG +22 -0
  419. package/out/web/pdfjs/wasm/LICENSE_PDFJS_QCMS +19 -0
  420. package/out/web/pdfjs/wasm/LICENSE_QCMS +21 -0
  421. package/out/web/pdfjs/wasm/jbig2.wasm +0 -0
  422. package/out/web/pdfjs/wasm/jbig2_nowasm_fallback.js +15 -0
  423. package/out/web/pdfjs/wasm/openjpeg.wasm +0 -0
  424. package/out/web/pdfjs/wasm/openjpeg_nowasm_fallback.js +17 -0
  425. package/out/web/pdfjs/wasm/qcms_bg.wasm +0 -0
  426. package/out/web/pdfjs/wasm/quickjs-eval.js +16 -0
  427. package/out/web/pdfjs/wasm/quickjs-eval.wasm +0 -0
  428. package/package.json +6 -4
  429. package/slash-commands.json +8 -2
  430. package/src/bin/index.js +4 -1
  431. package/src/bin/pdfjs-assets.mjs +31 -0
  432. package/src/renderer/node_modules/.vite/vitest/CACHEDIR.TAG +3 -0
  433. package/src/renderer/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  434. package/src/renderer/shared/agentProgress.ts +11 -2
  435. package/src/renderer/shared/components/Settings/AgentsTab.tsx +70 -6
  436. package/src/renderer/shared/components/Settings/AudioTab.tsx +1 -1
  437. package/src/renderer/shared/components/Settings/AutomationTab.tsx +57 -0
  438. package/src/renderer/shared/components/Settings/AvatarCropModal.tsx +18 -12
  439. package/src/renderer/shared/components/Settings/CustomProviderLogoPicker.test.tsx +65 -0
  440. package/src/renderer/shared/components/Settings/CustomProviderLogoPicker.tsx +456 -0
  441. package/src/renderer/shared/components/Settings/GeneralTab.tsx +40 -82
  442. package/src/renderer/shared/components/Settings/PluginsTab.tsx +101 -24
  443. package/src/renderer/shared/components/Settings/ProfileTab.tsx +1 -1
  444. package/src/renderer/shared/components/Settings/SettingsWindow.tsx +796 -0
  445. package/src/renderer/shared/components/Settings/ThemeTab.tsx +13 -1
  446. package/src/renderer/shared/components/{AgentActivityDrawer.tsx → activity/AgentActivityDrawer.tsx} +77 -61
  447. package/src/renderer/shared/components/{AgentActivityTable.tsx → activity/AgentActivityTable.tsx} +46 -7
  448. package/src/renderer/shared/components/{McpToolResults.tsx → activity/McpToolResults.tsx} +32 -13
  449. package/src/renderer/shared/components/{PlanChecklistWidget.tsx → activity/PlanChecklistWidget.tsx} +2 -2
  450. package/src/renderer/shared/components/activity/RunSummaryDashboard.test.tsx +127 -0
  451. package/src/renderer/shared/components/activity/RunSummaryDashboard.tsx +222 -0
  452. package/src/renderer/shared/components/activity/SubagentDagView.test.ts +123 -0
  453. package/src/renderer/shared/components/{SubagentDagView.tsx → activity/SubagentDagView.tsx} +97 -43
  454. package/src/renderer/shared/components/activity/SubagentStatusStrip.test.tsx +82 -0
  455. package/src/renderer/shared/components/activity/SubagentStatusStrip.tsx +107 -0
  456. package/src/renderer/shared/components/activity/ViewedImages.tsx +140 -0
  457. package/src/renderer/shared/components/{AuthGate.tsx → app/AuthGate.tsx} +3 -3
  458. package/src/renderer/shared/components/{ChunkErrorBoundary.tsx → app/ChunkErrorBoundary.tsx} +10 -10
  459. package/src/renderer/shared/components/{CommandPalette.tsx → app/CommandPalette.tsx} +25 -25
  460. package/src/renderer/shared/components/{DashboardSidebar.tsx → app/DashboardSidebar.tsx} +7 -5
  461. package/src/renderer/shared/components/{DesktopTitlebar.tsx → app/DesktopTitlebar.tsx} +7 -24
  462. package/src/renderer/shared/components/{ErrorNotice.tsx → app/ErrorNotice.tsx} +1 -1
  463. package/src/renderer/shared/components/{MintDashboard.tsx → app/MintDashboard.tsx} +191 -212
  464. package/src/renderer/shared/components/{ModalErrorBoundary.tsx → app/ModalErrorBoundary.tsx} +5 -5
  465. package/src/renderer/shared/components/{CalculationCard.tsx → cards/CalculationCard.tsx} +13 -27
  466. package/src/renderer/shared/components/{ImageGenCard.tsx → cards/ImageGenCard.tsx} +9 -22
  467. package/src/renderer/shared/components/{ImageSearchCard.tsx → cards/ImageSearchCard.tsx} +9 -22
  468. package/src/renderer/shared/components/{MermaidCard.tsx → cards/MermaidCard.tsx} +37 -21
  469. package/src/renderer/shared/components/{StockCard.tsx → cards/StockCard.tsx} +15 -31
  470. package/src/renderer/shared/components/cards/ToolResultCards.tsx +86 -0
  471. package/src/renderer/shared/components/{UiFeatureCard.tsx → cards/UiFeatureCard.tsx} +6 -6
  472. package/src/renderer/shared/components/{UiGridCard.tsx → cards/UiGridCard.tsx} +3 -3
  473. package/src/renderer/shared/components/{WeatherCard.tsx → cards/WeatherCard.tsx} +1 -1
  474. package/src/renderer/shared/components/{ApprovalCard.test.tsx → chat/ApprovalCard.test.tsx} +1 -1
  475. package/src/renderer/shared/components/{ApprovalCard.tsx → chat/ApprovalCard.tsx} +5 -5
  476. package/src/renderer/shared/components/{ChatCodeBlock.tsx → chat/ChatCodeBlock.tsx} +1 -1
  477. package/src/renderer/shared/components/{ChatMessageItem.test.tsx → chat/ChatMessageItem.test.tsx} +92 -15
  478. package/src/renderer/shared/components/{ChatMessageItem.tsx → chat/ChatMessageItem.tsx} +73 -157
  479. package/src/renderer/shared/components/chat/ChatPanel.test.tsx +31 -0
  480. package/src/renderer/shared/components/{ChatPanel.tsx → chat/ChatPanel.tsx} +244 -493
  481. package/src/renderer/shared/components/{CollapsiblePasteInput.tsx → chat/CollapsiblePasteInput.tsx} +2 -2
  482. package/src/renderer/shared/components/{DiffReviewModal.tsx → chat/DiffReviewModal.tsx} +40 -40
  483. package/src/renderer/shared/components/{GeminiLiveOverlay.tsx → chat/GeminiLiveOverlay.tsx} +2 -2
  484. package/src/renderer/shared/components/{ModelSelectorPopover.tsx → chat/ModelSelectorPopover.tsx} +3 -3
  485. package/src/renderer/shared/components/chat/QueuedMessagesBanner.test.tsx +89 -0
  486. package/src/renderer/shared/components/chat/QueuedMessagesBanner.tsx +201 -0
  487. package/src/renderer/shared/components/{RewindModal.tsx → chat/RewindModal.tsx} +4 -4
  488. package/src/renderer/shared/components/{SlashChoicePanel.tsx → chat/SlashChoicePanel.tsx} +2 -2
  489. package/src/renderer/shared/components/{SlashSuggestions.tsx → chat/SlashSuggestions.tsx} +4 -4
  490. package/src/renderer/shared/components/{SourcesBlock.tsx → chat/SourcesBlock.tsx} +30 -37
  491. package/src/renderer/shared/components/{ThinkingBlock.tsx → chat/ThinkingBlock.tsx} +1 -1
  492. package/src/renderer/shared/components/chat/TurnFileChanges.test.tsx +86 -0
  493. package/src/renderer/shared/components/chat/TurnFileChanges.tsx +430 -0
  494. package/src/renderer/shared/components/{VoicePill.css → chat/VoicePill.css} +1 -1
  495. package/src/renderer/shared/components/{VoicePill.jsx → chat/VoicePill.jsx} +3 -2
  496. package/src/renderer/shared/components/{CliSessionsView.test.tsx → extensions/CliSessionsView.test.tsx} +2 -2
  497. package/src/renderer/shared/components/{CliSessionsView.tsx → extensions/CliSessionsView.tsx} +14 -12
  498. package/src/renderer/shared/components/{LinkedFoldersView.tsx → extensions/LinkedFoldersView.tsx} +3 -3
  499. package/src/renderer/shared/components/{McpRegistryPicker.tsx → extensions/McpRegistryPicker.tsx} +3 -3
  500. package/src/renderer/shared/components/{McpServersView.tsx → extensions/McpServersView.tsx} +105 -36
  501. package/src/renderer/shared/components/{McpToolAllowlist.tsx → extensions/McpToolAllowlist.tsx} +2 -2
  502. package/src/renderer/shared/components/{ModUi.test.tsx → extensions/ModUi.test.tsx} +9 -4
  503. package/src/renderer/shared/components/{ModsPanel.tsx → extensions/ModsPanel.tsx} +59 -7
  504. package/src/renderer/shared/components/{PluginsView.tsx → extensions/PluginsView.tsx} +6 -6
  505. package/src/renderer/shared/components/{ScheduledTasksView.tsx → extensions/ScheduledTasksView.tsx} +5 -5
  506. package/src/renderer/shared/components/extensions/SkillsView.test.tsx +31 -0
  507. package/src/renderer/shared/components/{SkillsView.tsx → extensions/SkillsView.tsx} +20 -4
  508. package/src/renderer/shared/components/{ImageStudioPanel.tsx → studio/ImageStudioPanel.tsx} +6 -6
  509. package/src/renderer/shared/components/{LibraryItemCard.tsx → studio/LibraryItemCard.tsx} +2 -2
  510. package/src/renderer/shared/components/{LibraryPage.tsx → studio/LibraryPage.tsx} +5 -5
  511. package/src/renderer/shared/components/{LibraryPreview.tsx → studio/LibraryPreview.tsx} +2 -2
  512. package/src/renderer/shared/components/{VeoStudioPanel.tsx → studio/VeoStudioPanel.tsx} +7 -7
  513. package/src/renderer/shared/components/{GlideSelect.css → ui/GlideSelect.css} +7 -6
  514. package/src/renderer/shared/components/ui/ProviderBrandIcon.test.tsx +67 -0
  515. package/src/renderer/shared/components/ui/ProviderBrandIcon.tsx +167 -0
  516. package/src/renderer/shared/components/ui/SelectField.tsx +506 -0
  517. package/src/renderer/shared/components/ui/error-recovery.css +10 -10
  518. package/src/renderer/shared/components/ui/error-recovery.tsx +1 -1
  519. package/src/renderer/shared/components/{ArtifactPreviewPanel.tsx → workspace/ArtifactPreviewPanel.tsx} +256 -112
  520. package/src/renderer/shared/components/workspace/BackgroundTerminals.test.tsx +63 -0
  521. package/src/renderer/shared/components/{BackgroundTerminals.tsx → workspace/BackgroundTerminals.tsx} +40 -9
  522. package/src/renderer/shared/components/{CodeReviewPage.tsx → workspace/CodeReviewPage.tsx} +47 -8
  523. package/src/renderer/shared/components/{GitBranchSelector.tsx → workspace/GitBranchSelector.tsx} +2 -2
  524. package/src/renderer/shared/components/workspace/SessionSources.tsx +113 -0
  525. package/src/renderer/shared/components/{TerminalDock.tsx → workspace/TerminalDock.tsx} +5 -2
  526. package/src/renderer/shared/components/workspace/ToolSurfacePage.test.tsx +68 -0
  527. package/src/renderer/shared/components/{ToolSurfacePage.tsx → workspace/ToolSurfacePage.tsx} +322 -71
  528. package/src/renderer/shared/components/{ToolsPanelToggle.tsx → workspace/ToolsPanelToggle.tsx} +1 -1
  529. package/src/renderer/shared/components/workspace/WorkspaceFileInfo.tsx +28 -0
  530. package/src/renderer/shared/components/workspace/WorkspaceMediaPreview.tsx +17 -0
  531. package/src/renderer/shared/components/{WorkspacePaneResizer.tsx → workspace/WorkspacePaneResizer.tsx} +1 -1
  532. package/src/renderer/shared/components/workspace/WorkspacePdfPreview.tsx +89 -0
  533. package/src/renderer/shared/components/{WorkspacePreviewActions.test.tsx → workspace/WorkspacePreviewActions.test.tsx} +48 -3
  534. package/src/renderer/shared/components/{WorkspacePreviewActions.tsx → workspace/WorkspacePreviewActions.tsx} +3 -3
  535. package/src/renderer/shared/components/{WorkspaceSelector.tsx → workspace/WorkspaceSelector.tsx} +99 -7
  536. package/src/renderer/shared/components/{workspace-selector.css → workspace/workspace-selector.css} +84 -2
  537. package/src/renderer/shared/constants/config.ts +7 -0
  538. package/src/renderer/shared/conversation/coordinator.test.ts +46 -0
  539. package/src/renderer/shared/conversation/coordinator.ts +50 -2
  540. package/src/renderer/shared/conversation/lifecycle.test.ts +163 -1
  541. package/src/renderer/shared/conversation/lifecycle.ts +164 -7
  542. package/src/renderer/shared/conversation/projectNavigation.test.ts +18 -0
  543. package/src/renderer/shared/conversation/projectNavigation.ts +11 -0
  544. package/src/renderer/shared/conversation/transport.test.ts +20 -0
  545. package/src/renderer/shared/conversation/transport.ts +51 -9
  546. package/src/renderer/shared/conversation/useConversationCoordinator.ts +42 -12
  547. package/src/renderer/shared/css/agent-observability.css +72 -11
  548. package/src/renderer/shared/css/chat-ui-cards.css +35 -35
  549. package/src/renderer/shared/css/code-review.css +86 -86
  550. package/src/renderer/shared/css/code-sessions.css +10 -10
  551. package/src/renderer/shared/css/file-changes.css +167 -5
  552. package/src/renderer/shared/css/management-views.css +78 -37
  553. package/src/renderer/shared/css/mcp-results.css +46 -3
  554. package/src/renderer/shared/css/queued-messages.css +221 -0
  555. package/src/renderer/shared/css/session-sources.css +12 -7
  556. package/src/renderer/shared/css/settings/agents.css +2 -2
  557. package/src/renderer/{src-web → shared}/css/settings/base.css +101 -107
  558. package/src/renderer/shared/css/settings/general.css +384 -92
  559. package/src/renderer/shared/css/settings/plugins.css +8 -8
  560. package/src/renderer/shared/css/settings/theme.css +44 -32
  561. package/src/renderer/shared/css/ui-tailwind.css +2 -2
  562. package/src/renderer/shared/css/viewed-images.css +89 -0
  563. package/src/renderer/shared/css/workspace-file-info.css +12 -0
  564. package/src/renderer/shared/css/workspace-media-preview.css +13 -0
  565. package/src/renderer/shared/env.d.ts +9 -0
  566. package/src/renderer/shared/platform.test.ts +143 -0
  567. package/src/renderer/shared/platform.ts +10 -4
  568. package/src/renderer/shared/speech/player.ts +160 -0
  569. package/src/renderer/shared/speech/types.ts +11 -0
  570. package/src/renderer/shared/theme/themeManager.test.ts +20 -0
  571. package/src/renderer/shared/theme/themeManager.ts +3 -1
  572. package/src/renderer/shared/theme/themes.ts +17 -4
  573. package/src/renderer/shared/theme/tokens.css +448 -51
  574. package/src/renderer/shared/types.ts +56 -1
  575. package/src/renderer/shared/utils/agentActivity.test.ts +165 -6
  576. package/src/renderer/shared/utils/agentActivity.ts +181 -31
  577. package/src/renderer/shared/utils/artifactBrowser.ts +1 -1
  578. package/src/renderer/shared/utils/artifacts.ts +55 -0
  579. package/src/renderer/shared/utils/contextCompaction.test.tsx +1 -1
  580. package/src/renderer/shared/utils/externalLinks.ts +91 -0
  581. package/src/renderer/shared/utils/lazyWithRetry.ts +13 -0
  582. package/src/renderer/shared/utils/markdown.tsx +169 -35
  583. package/src/renderer/shared/utils/markdown.webImages.test.tsx +124 -2
  584. package/src/renderer/shared/utils/mcpResults.test.tsx +24 -1
  585. package/src/renderer/shared/utils/pdfRange.ts +16 -0
  586. package/src/renderer/shared/utils/previewObjectUrls.ts +20 -0
  587. package/src/renderer/shared/utils/sessionSources.test.ts +41 -1
  588. package/src/renderer/shared/utils/sessionSources.ts +2 -0
  589. package/src/renderer/shared/utils/slashCommandProcessor.ts +4 -1
  590. package/src/renderer/shared/utils/speech.ts +18 -4
  591. package/src/renderer/shared/utils/useNativeVoiceInput.ts +19 -5
  592. package/src/renderer/shared/utils/useSessionSources.ts +4 -0
  593. package/src/renderer/shared/utils/viewedImages.test.ts +129 -0
  594. package/src/renderer/shared/utils/viewedImages.ts +81 -10
  595. package/src/renderer/shared/utils/workspaceDrag.ts +30 -0
  596. package/src/renderer/shared/utils/workspaceImage.ts +17 -0
  597. package/src/renderer/shared/utils/workspaceListPreferences.test.ts +64 -0
  598. package/src/renderer/shared/utils/workspaceListPreferences.ts +54 -0
  599. package/src/renderer/shared/utils/workspaceMedia.ts +41 -0
  600. package/src/renderer/shared/utils/workspacePreview.test.ts +147 -2
  601. package/src/renderer/shared/utils/workspacePreview.ts +34 -3
  602. package/src/renderer/shared/utils/workspaces.ts +3 -2
  603. package/src/renderer/src/App.tsx +6 -8
  604. package/src/renderer/src/components/ChatPanel.tsx +1 -1
  605. package/src/renderer/src/components/DashboardSidebar.tsx +2 -2
  606. package/src/renderer/src/components/ImageStudioPanel.tsx +1 -1
  607. package/src/renderer/src/components/LiveTranslateControls.tsx +1 -1
  608. package/src/renderer/src/components/MintDashboard.tsx +1 -1
  609. package/src/renderer/src/components/ProactiveGlow.tsx +1 -1
  610. package/src/renderer/src/components/ScreenPicker.tsx +1 -1
  611. package/src/renderer/src/components/SettingsWindow.tsx +6 -830
  612. package/src/renderer/src/components/SpotlightWindow.tsx +4 -32
  613. package/src/renderer/src/components/VeoStudioPanel.tsx +1 -1
  614. package/src/renderer/src/components/WorkspacePanel.tsx +45 -12
  615. package/src/renderer/src/components/browser-shell.css +26 -26
  616. package/src/renderer/src/components/browser-suggestions-popup.css +8 -8
  617. package/src/renderer/src/css/app-shell.css +22 -102
  618. package/src/renderer/src/css/chat.css +221 -34
  619. package/src/renderer/src/css/desktop-tools.css +6 -337
  620. package/src/renderer/src/css/sidebar-workspace.css +20 -0
  621. package/src/renderer/src/css/spotlight.css +2 -2
  622. package/src/renderer/src/css/tool-surfaces.css +328 -58
  623. package/src/renderer/src/css/widget.css +6 -5
  624. package/src/renderer/src/env.d.ts +13 -0
  625. package/src/renderer/src/index.css +15 -63
  626. package/src/renderer/src/tauri.ts +77 -11
  627. package/src/renderer/src/voiceInput.ts +3 -1
  628. package/src/renderer/src-web/App.tsx +6 -8
  629. package/src/renderer/src-web/components/ChatPanel.tsx +1 -1
  630. package/src/renderer/src-web/components/DashboardSidebar.tsx +2 -2
  631. package/src/renderer/src-web/components/ImageStudioPanel.tsx +1 -1
  632. package/src/renderer/src-web/components/MintDashboard.tsx +1 -1
  633. package/src/renderer/src-web/components/SettingsWindow.tsx +6 -851
  634. package/src/renderer/src-web/components/VeoStudioPanel.tsx +1 -1
  635. package/src/renderer/src-web/css/app-shell.css +16 -100
  636. package/src/renderer/src-web/css/chat.css +221 -34
  637. package/src/renderer/src-web/css/sidebar-workspace.css +20 -0
  638. package/src/renderer/src-web/env.d.ts +14 -0
  639. package/src/renderer/src-web/index.css +15 -63
  640. package/src/renderer/src-web/tauri.ts +71 -13
  641. package/src/renderer/tests/browserArtifacts.browser.html +1 -0
  642. package/src/renderer/tests/browserArtifacts.browser.tsx +68 -0
  643. package/src/renderer/tests/chatEscape.browser.html +1 -0
  644. package/src/renderer/tests/chatEscape.browser.tsx +25 -0
  645. package/src/renderer/tests/chatPerformance.browser.html +1 -1
  646. package/src/renderer/tests/collapsedPaste.browser.html +1 -1
  647. package/src/renderer/tests/composerMenus.browser.html +3 -3
  648. package/src/renderer/tests/contextCompaction.browser.html +1 -1
  649. package/src/renderer/tests/errorRecovery.browser.html +1 -1
  650. package/src/renderer/tests/fixtures/preview.webm +0 -0
  651. package/src/renderer/tests/glideSelect.browser.html +1 -2
  652. package/src/renderer/tests/glideSelect.preview.html +1 -1
  653. package/src/renderer/tests/library.browser.tsx +1 -1
  654. package/src/renderer/tests/liveOrb.browser.html +1 -1
  655. package/src/renderer/tests/mediaFixtures.ts +32 -0
  656. package/src/renderer/tests/modInput.browser.html +1 -1
  657. package/src/renderer/tests/sessionSources.browser.tsx +76 -15
  658. package/src/renderer/tests/toolsPanel.browser.tsx +5 -5
  659. package/src/renderer/tests/viewedImages.browser.tsx +3 -3
  660. package/src/renderer/tests/voiceDictation.browser.html +101 -0
  661. package/src/renderer/tests/voicePill.browser.html +3 -3
  662. package/src/renderer/tests/voicePill.preview.html +1 -1
  663. package/src/renderer/tests/webSources.browser.tsx +2 -98
  664. package/src/renderer/tests/workspaceDrop.browser.html +1 -0
  665. package/src/renderer/tests/workspaceDrop.browser.tsx +183 -0
  666. package/src/renderer/tests/workspaceExpansion.browser.html +1 -0
  667. package/src/renderer/tests/workspaceExpansion.browser.tsx +66 -0
  668. package/src/renderer/tests/workspaceRemoval.browser.html +66 -0
  669. package/src/renderer/tests/workspaceUndo.browser.html +10 -2
  670. package/src-tauri/src/app/lifecycle.rs +44 -1
  671. package/src-tauri/src/commands/conversation.rs +99 -73
  672. package/src-tauri/src/commands/integrations.rs +7 -1
  673. package/src-tauri/src/commands/media.rs +7 -0
  674. package/src-tauri/src/commands/workspace.rs +38 -0
  675. package/tsconfig.json +15 -1
  676. package/vite.config.ts +2 -1
  677. package/vite.config.web.ts +2 -0
  678. package/out/web/assets/CliSessionsView-D7hw0Mgj.js +0 -1
  679. package/out/web/assets/CodeReviewPage-C7bEOJfd.js +0 -4
  680. package/out/web/assets/CodeReviewPage-Dte9uLiL.css +0 -1
  681. package/out/web/assets/CommandPalette-0RrF-AOT.js +0 -1
  682. package/out/web/assets/ImageStudioPanel-CdxkAf_r.js +0 -1
  683. package/out/web/assets/LibraryPage--Qfisp6D.js +0 -2
  684. package/out/web/assets/LinkedFoldersView-2nfZbDgN.js +0 -1
  685. package/out/web/assets/McpRegistryPicker-h9uS8_wT.js +0 -1
  686. package/out/web/assets/McpServersView-slfQJzNB.js +0 -1
  687. package/out/web/assets/MintDashboard-BSR5XpXh.js +0 -25
  688. package/out/web/assets/MintDashboard-CWUcCGhd.css +0 -1
  689. package/out/web/assets/PluginsView-l7LSm503.js +0 -1
  690. package/out/web/assets/ScheduledTasksView-CttmLbq1.js +0 -1
  691. package/out/web/assets/SettingsWindow-BCMLYvEV.js +0 -4
  692. package/out/web/assets/SettingsWindow-DcMVmU9u.css +0 -1
  693. package/out/web/assets/SkillsView-rNs1qr_U.js +0 -2
  694. package/out/web/assets/ToolSurfacePage-B9DzEPWN.js +0 -37
  695. package/out/web/assets/ToolSurfacePage-CTfgggF2.css +0 -1
  696. package/out/web/assets/VeoStudioPanel-DiJs_Cg2.js +0 -4
  697. package/out/web/assets/WorkspacePanel-CbJ1PFoZ.js +0 -1
  698. package/out/web/assets/WorkspaceSelector-B2xIp04D.js +0 -1
  699. package/out/web/assets/WorkspaceSelector-Ca8uJOsS.css +0 -1
  700. package/out/web/assets/abnfDiagram-VCTEODGH-CD0CjoGl.js +0 -1
  701. package/out/web/assets/architecture-7GRP2DOG-RKV83OeZ.js +0 -1
  702. package/out/web/assets/architectureDiagram-5GKGNRK7-nN_HAFct.js +0 -36
  703. package/out/web/assets/c4Diagram-UCG6FXSJ-DTdV8_zE.js +0 -38
  704. package/out/web/assets/chunk-2Q5K7J3B-Dmqrq8Tp.js +0 -1
  705. package/out/web/assets/chunk-75Z2AOVW-_M0z5olV.js +0 -2
  706. package/out/web/assets/chunk-CKBBP62Z-BpQEgeHF.js +0 -2
  707. package/out/web/assets/chunk-CLGD4ZFX-D54yGvGS.js +0 -1
  708. package/out/web/assets/chunk-CacB07dV.js +0 -1
  709. package/out/web/assets/chunk-DSNCTWBM-C-gvT2ru.js +0 -2
  710. package/out/web/assets/chunk-DU6HZSFF-CnFngIhW.js +0 -128
  711. package/out/web/assets/chunk-F27PBJKO-BqtWrnEO.js +0 -1
  712. package/out/web/assets/chunk-FOHPRMQF-BaVC1uA7.js +0 -161
  713. package/out/web/assets/chunk-G27WJ6UU-Ckoq5mi2.js +0 -231
  714. package/out/web/assets/chunk-JQ64N6SF-CF8T7GiZ.js +0 -1
  715. package/out/web/assets/chunk-JWPE2WC7-BwtYOHqU.js +0 -1
  716. package/out/web/assets/chunk-LNGE3PJU-AdBoOWw2.js +0 -34
  717. package/out/web/assets/chunk-OBVCFTLP-CRIkunUB.js +0 -1
  718. package/out/web/assets/chunk-P2QGCYS3-UFEU6BxZ.js +0 -1
  719. package/out/web/assets/chunk-POPQ4Y6H-CQcrNbjr.js +0 -1
  720. package/out/web/assets/chunk-PWAF6VOD-Cc2uVDsG.js +0 -1
  721. package/out/web/assets/chunk-R7TYR2AO-DiCxzdAY.js +0 -10
  722. package/out/web/assets/chunk-RHFEMEQ7-b7hnPmrR.js +0 -168
  723. package/out/web/assets/chunk-XXDRQBXY-DnJkbUaw.js +0 -1
  724. package/out/web/assets/chunk-Y2CYZVJY-C9o-s6OY.js +0 -1
  725. package/out/web/assets/classDiagram-DTDB5LWJ-RnC2mYO4.js +0 -1
  726. package/out/web/assets/classDiagram-v2-JRS7N3AN-RnC2mYO4.js +0 -1
  727. package/out/web/assets/config-CnvCChUM.js +0 -2
  728. package/out/web/assets/config-DM6oIVO3.css +0 -1
  729. package/out/web/assets/core-DsKkQ7ig.js +0 -1
  730. package/out/web/assets/cose-bilkent-JH36ORCC--UN4aw5-.js +0 -1
  731. package/out/web/assets/cynefin-OW5HDTMX-CnzQfOGp.js +0 -1
  732. package/out/web/assets/cynefinDiagram-5FMLGOSQ-DVtQnfpm.js +0 -62
  733. package/out/web/assets/cytoscape.esm-Df1UN4Y1.js +0 -321
  734. package/out/web/assets/dagre-3AP2YEHR-DG76_k5_.js +0 -4
  735. package/out/web/assets/dagre-BWadQu2F.js +0 -1
  736. package/out/web/assets/diagram-S7CK7UJ4-CaouUoze.js +0 -30
  737. package/out/web/assets/diagram-UQ7AKVKN-B4bEc26B.js +0 -41
  738. package/out/web/assets/diagram-VX7I27RA-7hH5IPYf.js +0 -24
  739. package/out/web/assets/diagram-Z3DM3KII-CCM4clo8.js +0 -24
  740. package/out/web/assets/dist-BoTOASLF.js +0 -1
  741. package/out/web/assets/dist-js-BkYNznHX.js +0 -1
  742. package/out/web/assets/ebnfDiagram-PWID7BFC-Da7WAM3k.js +0 -1
  743. package/out/web/assets/event-Cdt7Byyj.js +0 -1
  744. package/out/web/assets/eventmodeling-NTZA5JFV-xcfsA0XD.js +0 -1
  745. package/out/web/assets/flowDiagram-A5DVABFB-JdtH1673.js +0 -1
  746. package/out/web/assets/ganttDiagram-EL5Y4UJY-B3ClFGmL.js +0 -292
  747. package/out/web/assets/gitGraph-4MIJSDKK-BZ_y_cDU.js +0 -1
  748. package/out/web/assets/gitGraphDiagram-WWUBYQGX-drhRSYm3.js +0 -106
  749. package/out/web/assets/graphlib-CTR5ZhLf.js +0 -1
  750. package/out/web/assets/index-BZ9xgmMP.css +0 -1
  751. package/out/web/assets/index-Ca8cCS4h.js +0 -168
  752. package/out/web/assets/info-A6RAGUB7-B7I3K0F1.js +0 -1
  753. package/out/web/assets/infoDiagram-RXCK75RN-deX_1MPh.js +0 -2
  754. package/out/web/assets/journeyDiagram-EYS64GPL-CZn2kB8b.js +0 -139
  755. package/out/web/assets/jsx-runtime-DN4NhQUK.js +0 -1
  756. package/out/web/assets/katex-O3jvqgnU.js +0 -257
  757. package/out/web/assets/markdown-CMhYIcWB.js +0 -39
  758. package/out/web/assets/mermaid-parser.core-Whu2rlJC.js +0 -7
  759. package/out/web/assets/mermaid.core-CKyPo8VH.js +0 -11
  760. package/out/web/assets/modelManager-CUaGWMWu.js +0 -2
  761. package/out/web/assets/oauthManager-DlNhXJr6.js +0 -1
  762. package/out/web/assets/packet-AYTQ26CC-CEeIRKRG.js +0 -1
  763. package/out/web/assets/pegDiagram-XKGWAZYB-BYadI-KO.js +0 -1
  764. package/out/web/assets/pie-WAS4IAKB-D8uf4dh5.js +0 -1
  765. package/out/web/assets/pieDiagram-E7YTZNPT-CjSDy4hO.js +0 -39
  766. package/out/web/assets/radar-RG4KPBEZ-DZJxnokY.js +0 -1
  767. package/out/web/assets/railroad-74A4TZTK-DBysUiUi.js +0 -1
  768. package/out/web/assets/railroad-abnf-HS5TGJTU-CHWxoJYg.js +0 -1
  769. package/out/web/assets/railroad-ebnf-LZEXJU2U-DDv7X6bY.js +0 -1
  770. package/out/web/assets/railroad-peg-WCYAUIDC-DpfcYYNJ.js +0 -1
  771. package/out/web/assets/railroadDiagram-O6MQD6OU-CYtyv0t3.js +0 -1
  772. package/out/web/assets/rough.esm-DFbTUy8a.js +0 -1
  773. package/out/web/assets/sankeyDiagram-P5KCCOFB-Bn2x6C4Y.js +0 -40
  774. package/out/web/assets/sequenceDiagram-WJ2MYXX4-BvFLKtPd.js +0 -162
  775. package/out/web/assets/sizeCapture-X5ZJPWSS-DKeOCaN2.js +0 -1
  776. package/out/web/assets/src-DnfeXQPr.js +0 -1
  777. package/out/web/assets/stateDiagram-HBIQ2CUA-Bx0GWeaY.js +0 -1
  778. package/out/web/assets/stateDiagram-v2-4QOOHH4V--hol1yg_.js +0 -1
  779. package/out/web/assets/studio-B1mk40wD.js +0 -1
  780. package/out/web/assets/swimlanes-XN3QIQJK-CCma0T7L.js +0 -1
  781. package/out/web/assets/swimlanesDiagram-VK2B7HYN-BkohoVsU.js +0 -8
  782. package/out/web/assets/timeline-definition-24CTP7MA-iCRhhJ7C.js +0 -120
  783. package/out/web/assets/treeView-Q6P3EWNA-DZ-y08qp.js +0 -1
  784. package/out/web/assets/treemap-WGGIJYW6-De0CxzMx.js +0 -1
  785. package/out/web/assets/vennDiagram-4TSXK5OY-w_7aZ6xe.js +0 -34
  786. package/out/web/assets/wardley-WFR3VGLG-DT0y0xJ4.js +0 -1
  787. package/out/web/assets/window-BJCVtyET.js +0 -1
  788. package/src/renderer/shared/components/ChatPanel.test.tsx +0 -21
  789. package/src/renderer/shared/components/FormattedMessage.tsx +0 -11
  790. package/src/renderer/shared/components/GlideSelect.d.ts +0 -31
  791. package/src/renderer/shared/components/GlideSelect.jsx +0 -266
  792. package/src/renderer/shared/components/InlineThoughtNote.tsx +0 -27
  793. package/src/renderer/shared/components/ModSessionControls.tsx +0 -8
  794. package/src/renderer/shared/components/ModUi.tsx +0 -26
  795. package/src/renderer/shared/components/ProgressActivity.tsx +0 -17
  796. package/src/renderer/shared/components/ReviewHistory.tsx +0 -42
  797. package/src/renderer/shared/components/RunSummaryDashboard.tsx +0 -143
  798. package/src/renderer/shared/components/SelectField.tsx +0 -38
  799. package/src/renderer/shared/components/SessionSources.tsx +0 -48
  800. package/src/renderer/shared/components/SessionSourcesPopover.tsx +0 -61
  801. package/src/renderer/shared/components/ToolSurfacePage.test.tsx +0 -32
  802. package/src/renderer/shared/components/ViewedImages.tsx +0 -36
  803. package/src/renderer/shared/components/WorkspaceContextPopover.tsx +0 -138
  804. package/src/renderer/shared/components/ui/demo.tsx +0 -26
  805. package/src/renderer/shared/css/session-sources-popover.css +0 -9
  806. package/src/renderer/src/components/CalculationCard.tsx +0 -3
  807. package/src/renderer/src/components/ImageGenCard.tsx +0 -2
  808. package/src/renderer/src/components/ImageSearchCard.tsx +0 -2
  809. package/src/renderer/src/components/MermaidCard.tsx +0 -1
  810. package/src/renderer/src/components/PicturesLibrary.tsx +0 -2
  811. package/src/renderer/src/components/Settings/AgentsTab.tsx +0 -4
  812. package/src/renderer/src/components/Settings/AudioTab.tsx +0 -3
  813. package/src/renderer/src/components/Settings/AutomationTab.tsx +0 -3
  814. package/src/renderer/src/components/Settings/GeneralTab.tsx +0 -3
  815. package/src/renderer/src/components/Settings/MemoryTab.tsx +0 -3
  816. package/src/renderer/src/components/Settings/PluginsTab.tsx +0 -3
  817. package/src/renderer/src/components/Settings/ProfileTab.tsx +0 -3
  818. package/src/renderer/src/components/Settings/ShortcutsTab.tsx +0 -3
  819. package/src/renderer/src/components/Settings/ThemeTab.tsx +0 -3
  820. package/src/renderer/src/components/StockCard.tsx +0 -3
  821. package/src/renderer/src/components/WeatherCard.tsx +0 -3
  822. package/src/renderer/src/css/pictures.css +0 -2
  823. package/src/renderer/src/css/settings/base.css +0 -1266
  824. package/src/renderer/src-web/components/PicturesLibrary.tsx +0 -2
  825. package/src/renderer/src-web/components/Settings/AgentsTab.tsx +0 -4
  826. package/src/renderer/src-web/components/Settings/AudioTab.tsx +0 -3
  827. package/src/renderer/src-web/components/Settings/AutomationTab.tsx +0 -3
  828. package/src/renderer/src-web/components/Settings/GeneralTab.tsx +0 -3
  829. package/src/renderer/src-web/components/Settings/MemoryTab.tsx +0 -3
  830. package/src/renderer/src-web/components/Settings/PluginsTab.tsx +0 -3
  831. package/src/renderer/src-web/components/Settings/ProfileTab.tsx +0 -3
  832. package/src/renderer/src-web/components/Settings/ShortcutsTab.tsx +0 -3
  833. package/src/renderer/src-web/components/Settings/ThemeTab.tsx +0 -3
  834. package/src/renderer/src-web/css/pictures.css +0 -2
  835. package/src/renderer/src-web/css/spotlight.css +0 -102
  836. package/src/renderer/src-web/css/widget.css +0 -213
  837. /package/src/renderer/shared/components/{UiMockupWidget.tsx → cards/UiMockupWidget.tsx} +0 -0
  838. /package/src/renderer/shared/components/{ContextCompactionStatus.tsx → chat/ContextCompactionStatus.tsx} +0 -0
  839. /package/src/renderer/shared/components/{GeminiLiveOverlay.css → chat/GeminiLiveOverlay.css} +0 -0
  840. /package/src/renderer/shared/components/{GeminiLiveOverlay.test.tsx → chat/GeminiLiveOverlay.test.tsx} +0 -0
  841. /package/src/renderer/shared/components/{SlashSuggestions.test.tsx → chat/SlashSuggestions.test.tsx} +0 -0
  842. /package/src/renderer/shared/components/{VirtualChatHistory.tsx → chat/VirtualChatHistory.tsx} +0 -0
  843. /package/src/renderer/shared/components/{VoicePill.d.ts → chat/VoicePill.d.ts} +0 -0
  844. /package/src/renderer/shared/components/{VoicePill.test.tsx → chat/VoicePill.test.tsx} +0 -0
  845. /package/src/renderer/shared/components/{ScreenCaptureDialog.css → studio/ScreenCaptureDialog.css} +0 -0
  846. /package/src/renderer/shared/components/{ScreenCaptureDialog.tsx → studio/ScreenCaptureDialog.tsx} +0 -0
  847. /package/src/renderer/shared/components/{SelectField.test.tsx → ui/SelectField.test.tsx} +0 -0
  848. /package/src/renderer/shared/components/{background-terminals.css → workspace/background-terminals.css} +0 -0
@@ -1,4 +0,0 @@
1
- import{i as e,n as t}from"./chunk-CacB07dV.js";import{n,t as r}from"./jsx-runtime-DN4NhQUK.js";import{D as i,E as a,M as o,R as s,T as c,Vr as l,a as u,c as d,d as f,k as p,l as m,n as h,o as g,r as _,s as v,t as y,u as b}from"./index-Ca8cCS4h.js";import{$ as x,C as S,D as C,E as w,G as T,J as ee,K as te,L as E,M as D,N as O,O as k,Q as ne,S as re,T as ie,U as ae,W as oe,X as se,Y as ce,Z as le,_ as ue,_t as A,at as de,b as fe,c as pe,d as j,dt as me,et as he,f as ge,g as _e,h as ve,i as ye,it as M,k as N,l as be,m as xe,n as Se,nt as Ce,o as we,ot as P,p as Te,q as Ee,r as De,rt as Oe,s as ke,t as Ae,tt as je,u as Me,v as Ne,vt as Pe,x as Fe,y as Ie}from"./config-CnvCChUM.js";import{i as Le,n as Re,r as ze,t as Be}from"./McpRegistryPicker-h9uS8_wT.js";import{a as Ve,c as He,i as Ue,n as We,o as Ge,r as Ke,s as qe,t as Je}from"./oauthManager-DlNhXJr6.js";import{n as Ye,r as Xe}from"./modelManager-CUaGWMWu.js";var Ze=t((()=>{}));function Qe({settings:e,onChange:t}){let n=N(e),[r,i]=(0,$e.useState)(`Checking…`),[a,o]=(0,$e.useState)(!1),[s,c]=(0,$e.useState)(``);(0,$e.useEffect)(()=>{let e=!1,t=()=>{k().then(t=>{e||i(t)}).catch(()=>{e||i(`Could not check permission`)})};return t(),window.addEventListener(`focus`,t),()=>{e=!0,window.removeEventListener(`focus`,t)}},[]);let l=async e=>{o(!0),c(``);try{let t=await k(!0);i(t),t===`granted`?e&&(await window.api.notifyAiResponse(`Your Mint notifications are working.`),c(`Test notification sent. If it does not appear, check your system’s Do Not Disturb setting.`)):c(t===`unsupported`?`Notifications are unavailable in this browser.`:`Allow notifications in your browser or system settings, then check permission again.`)}catch(e){c(e instanceof Error?e.message:String(e))}finally{o(!1)}},u=(e,r,i)=>(0,F.jsxs)(`div`,{className:`toggle-row`,children:[(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`label`,{htmlFor:`notifications-`+e,children:r}),(0,F.jsx)(`p`,{className:`hint`,children:i})]}),(0,F.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,F.jsx)(`input`,{id:`notifications-`+e,type:`checkbox`,"aria-label":r,checked:n[e],disabled:e!==`enabled`&&!n.enabled,onChange:r=>t({...n,[e]:r.target.checked})}),(0,F.jsx)(`span`,{className:`settings-toggle-slider`})]})]},e);return(0,F.jsxs)(`div`,{className:`tab-pane active notifications-tab`,children:[(0,F.jsxs)(`section`,{className:`setting-section`,children:[(0,F.jsx)(`div`,{className:`section-heading`,children:(0,F.jsxs)(`div`,{children:[(0,F.jsx)(`p`,{className:`section-kicker`,children:`Stay informed`}),(0,F.jsx)(`h2`,{className:`section-title`,children:`Notifications`})]})}),(0,F.jsx)(`p`,{className:`hint`,children:`Choose what Mint shows in Desktop and Web. Select Save Settings to apply your changes.`}),(0,F.jsx)(`div`,{className:`toggle-card`,children:u(`enabled`,`Enable notifications`,`Turn Mint notifications on or off.`)})]}),(0,F.jsxs)(`section`,{className:`setting-section`,children:[(0,F.jsx)(`h3`,{children:`Notification types`}),(0,F.jsxs)(`div`,{className:`toggle-card`,children:[u(`replies`,`AI replies`,`Notify when a response finishes while Mint is in the background.`),u(`approvals`,`Approval requests`,`Notify when Mint needs your approval or an answer while in the background.`),u(`system`,`System & background tasks`,`Battery, connection changes, and queued task updates on Desktop.`)]})]}),(0,F.jsxs)(`section`,{className:`setting-section`,children:[(0,F.jsx)(`h3`,{children:`Where notifications appear`}),(0,F.jsxs)(`div`,{className:`toggle-card`,children:[u(`os`,`System notifications`,`Show an operating system popup while Mint is in the background.`),u(`inApp`,`In-app notices`,`Show system and background task updates inside Mint.`)]})]}),(0,F.jsxs)(`section`,{className:`setting-section notifications-permission`,children:[(0,F.jsx)(`h3`,{children:`Notification permission`}),(0,F.jsx)(`p`,{className:`hint`,children:`Permission is specific to this browser or Desktop installation.`}),(0,F.jsxs)(`p`,{className:`notifications-permission-state`,role:`status`,children:[`Status: `,(0,F.jsx)(`strong`,{children:r})]}),r===`denied`&&(0,F.jsx)(`p`,{className:`hint`,children:`Notifications are blocked. Allow them in your browser or system settings.`}),(0,F.jsxs)(`div`,{className:`notifications-actions`,children:[(0,F.jsx)(`button`,{type:`button`,className:`btn-secondary`,disabled:a||r===`unsupported`,onClick:()=>void l(!1),children:`Check permission`}),(0,F.jsx)(`button`,{type:`button`,className:`btn-secondary`,disabled:a||!n.enabled||!n.os||r===`unsupported`,onClick:()=>void l(!0),children:`Send test notification`})]}),s&&(0,F.jsx)(`p`,{className:`notifications-feedback`,role:`status`,children:s})]})]})}var $e,F,et=t((()=>{$e=e(n()),C(),Ze(),F=r()})),tt=t((()=>{})),nt=t((()=>{})),rt=t((()=>{})),it=t((()=>{})),at=t((()=>{})),ot=t((()=>{})),st=t((()=>{})),ct=t((()=>{})),lt=t((()=>{}));function ut(e){let t=e.trim().toLowerCase(),n=se[t===`gemini`||t===`google`?`nanobanana`:t===`flux`?`bfl`:t===`openai`?`dalle`:t];return n?[...n]:[]}function dt(e,t){let[n,r]=(0,ft.useState)(()=>ut(e)),[i,a]=(0,ft.useState)(!1),o=(0,ft.useRef)(0);return(0,ft.useEffect)(()=>{let n=ut(e);r(n);let i=++o.current;a(!0),_(e,t).then(e=>{if(i===o.current&&e&&e.length>0){let t=new Map;for(let e of n)t.set(e.value,e.label);let i=[],a=new Set;for(let n of e)a.has(n)||(a.add(n),i.push({value:n,label:t.get(n)??n}));for(let e of n)a.has(e.value)||(a.add(e.value),i.push(e));r(i)}}).catch(()=>{}).finally(()=>{i===o.current&&a(!1)})},[e,t]),{options:n,models:n.map(e=>e.value),loading:i}}var ft,pt=t((()=>{ft=e(n()),M(),d()}));function mt(e){let t=e.trim().toLowerCase(),n=Ce[t===`gemini`||t===`google`?`veo`:t];return n?[...n]:[]}function ht(e,t){let[n,r]=(0,gt.useState)(()=>mt(e)),[i,a]=(0,gt.useState)(!1),o=(0,gt.useRef)(0);return(0,gt.useEffect)(()=>{let n=mt(e);r(n);let i=++o.current;a(!0),u(e,t).then(e=>{if(i===o.current&&e&&e.length>0){let t=new Map;for(let e of n)t.set(e.value,e.label);let i=[],a=new Set;for(let n of e)a.has(n)||(a.add(n),i.push({value:n,label:t.get(n)??n}));for(let e of n)a.has(e.value)||(a.add(e.value),i.push(e));r(i)}}).catch(()=>{}).finally(()=>{i===o.current&&a(!1)})},[e,t]),{options:n,models:n.map(e=>e.value),loading:i}}var gt,_t=t((()=>{gt=e(n()),M(),d()}));function I({value:e,onChange:t,placeholder:n,className:r}){let[i,a]=(0,vt.useState)(!1);return(0,L.jsxs)(`div`,{className:`api-key-field`,children:[(0,L.jsx)(`input`,{type:i?`text`:`password`,className:r,value:e,onChange:e=>t(e.target.value),placeholder:n}),(0,L.jsx)(`button`,{type:`button`,className:`api-key-toggle`,onClick:()=>a(e=>!e),"aria-label":i?`Hide API key`:`Show API key`,title:i?`Hide API key`:`Show API key`,children:i?(0,L.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,L.jsx)(`path`,{d:`M17.94 17.94A10.94 10.94 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24`}),(0,L.jsx)(`line`,{x1:`1`,y1:`1`,x2:`23`,y2:`23`})]}):(0,L.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,L.jsx)(`path`,{d:`M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z`}),(0,L.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})})]})}var vt,L,yt=t((()=>{vt=e(n()),L=r()}));function bt({value:e,models:t,onChange:n,onCustomChange:r,customValue:i,placeholder:a=`Select or search OpenRouter model...`}){let[o,s]=(0,R.useState)(!1),[c,l]=(0,R.useState)(``),[u,d]=(0,R.useState)(0),[f,p]=(0,R.useState)(!1),m=(0,R.useRef)(null),h=(0,R.useRef)(null),g=(0,R.useRef)(null);(0,R.useEffect)(()=>{o&&(l(``),d(0),setTimeout(()=>{h.current?.focus()},50))},[o]),(0,R.useEffect)(()=>{let e=e=>{m.current&&!m.current.contains(e.target)&&s(!1)};return o?document.addEventListener(`mousedown`,e):p(!1),()=>{document.removeEventListener(`mousedown`,e)}},[o]);let{popularList:_,otherList:v}=(0,R.useMemo)(()=>{let e=new Set(je),n=[];for(let e of je)t.includes(e)&&n.push(e);return{popularList:n,otherList:t.filter(t=>!e.has(t))}},[t]),{filteredPopular:y,filteredOther:b}=(0,R.useMemo)(()=>{let e=c.trim().toLowerCase();return e?{filteredPopular:_.filter(t=>t.toLowerCase().includes(e)),filteredOther:v.filter(t=>t.toLowerCase().includes(e))}:{filteredPopular:_,filteredOther:v}},[_,v,c]),x=!!c.trim()||f,S=(0,R.useMemo)(()=>{let e=[];for(let t of y)e.push({type:`model`,value:t,label:t});if(x)for(let t of b)e.push({type:`model`,value:t,label:t});return e.push({type:`custom`,value:`custom`,label:`Custom Model...`}),e},[y,b,x]);(0,R.useEffect)(()=>{if(!o||!g.current)return;let e=g.current.querySelector(`[data-combobox-idx="${u}"]`);e&&e.scrollIntoView({block:`nearest`})},[u,o]);let C=e=>{n(e),s(!1)},w=()=>{let e=c.trim();e&&(r&&r(e),n(`custom`),s(!1))},T=e=>{if(!o){(e.key===`Enter`||e.key===`ArrowDown`||e.key===` `)&&(e.preventDefault(),s(!0));return}if(e.key===`Escape`)e.preventDefault(),s(!1);else if(e.key===`ArrowDown`)e.preventDefault(),d(e=>e+1<S.length?e+1:0);else if(e.key===`ArrowUp`)e.preventDefault(),d(e=>e-1>=0?e-1:S.length-1);else if(e.key===`Enter`){e.preventDefault();let t=S[u];t&&C(t.value)}},ee=(0,R.useMemo)(()=>e===`custom`?i?`Custom: ${i}`:`Custom Model...`:e||a,[e,i,a]),te=de(e===`custom`?i||``:e),E=0;return(0,z.jsxs)(`div`,{className:`model-combobox-container`,ref:m,children:[(0,z.jsxs)(`button`,{type:`button`,className:`model-combobox-trigger ${o?`is-open`:``}`,onClick:()=>s(!o),onKeyDown:T,"aria-haspopup":`listbox`,"aria-expanded":o,children:[(0,z.jsxs)(`div`,{className:`model-combobox-trigger-content`,children:[(0,z.jsx)(`span`,{className:`model-combobox-trigger-text`,children:ee}),te&&(0,z.jsx)(`span`,{className:`model-tag-badge badge-free`,children:`Free`})]}),(0,z.jsx)(`svg`,{className:`model-combobox-chevron ${o?`is-open`:``}`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,z.jsx)(`polyline`,{points:`6 9 12 15 18 9`})})]}),o&&(0,z.jsxs)(`div`,{className:`model-combobox-dropdown`,onKeyDown:T,children:[(0,z.jsxs)(`div`,{className:`model-combobox-search-box`,children:[(0,z.jsxs)(`svg`,{className:`combobox-search-icon`,width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,z.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,z.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),(0,z.jsx)(`input`,{ref:h,type:`text`,className:`model-combobox-search-input`,placeholder:`Search 300+ models or type to filter...`,value:c,onChange:e=>{l(e.target.value),d(0)}}),c&&(0,z.jsx)(`button`,{type:`button`,className:`combobox-clear-btn`,onClick:()=>{l(``),d(0)},title:`Clear`,children:(0,z.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,z.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,z.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]})})]}),(0,z.jsxs)(`div`,{className:`model-combobox-list`,ref:g,role:`listbox`,children:[c.trim()&&!t.includes(c.trim())&&(0,z.jsxs)(`div`,{className:`model-combobox-item custom-query-item`,onClick:w,role:`option`,"aria-selected":!1,children:[(0,z.jsx)(`div`,{className:`combobox-item-left`,children:(0,z.jsxs)(`span`,{className:`combobox-item-name`,children:[`Use custom model: `,(0,z.jsx)(`strong`,{children:c.trim()})]})}),(0,z.jsx)(`span`,{className:`combobox-custom-badge`,children:`Enter`})]}),y.length>0&&(0,z.jsxs)(`div`,{className:`model-combobox-group`,children:[(0,z.jsx)(`div`,{className:`model-combobox-group-title`,children:(0,z.jsx)(`span`,{children:`★ Popular & Recommended`})}),y.map(t=>{let n=E++,r=e===t,i=u===n,a=de(t);return(0,z.jsxs)(`div`,{"data-combobox-idx":n,className:`model-combobox-item ${r?`is-selected`:``} ${i?`is-highlighted`:``}`,onClick:()=>C(t),onMouseEnter:()=>d(n),role:`option`,"aria-selected":r,children:[(0,z.jsxs)(`div`,{className:`combobox-item-left`,children:[(0,z.jsxs)(`div`,{className:`combobox-item-row`,children:[(0,z.jsx)(`span`,{className:`combobox-item-name`,children:t.split(`/`).pop()||t}),a&&(0,z.jsx)(`span`,{className:`model-tag-badge badge-free`,children:`Free`})]}),t.includes(`/`)&&(0,z.jsx)(`span`,{className:`combobox-item-repo`,children:t})]}),r&&(0,z.jsx)(`svg`,{className:`combobox-check-icon`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,z.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})]},t)})]}),b.length>0&&(0,z.jsxs)(`div`,{className:`model-combobox-group`,children:[(0,z.jsx)(`div`,{className:`model-combobox-group-title`,children:(0,z.jsxs)(`span`,{children:[`Other models (`,b.length,`)`]})}),x?(0,z.jsxs)(z.Fragment,{children:[b.map(t=>{let n=E++,r=e===t,i=u===n,a=de(t);return(0,z.jsxs)(`div`,{"data-combobox-idx":n,className:`model-combobox-item ${r?`is-selected`:``} ${i?`is-highlighted`:``}`,onClick:()=>C(t),onMouseEnter:()=>d(n),role:`option`,"aria-selected":r,children:[(0,z.jsxs)(`div`,{className:`combobox-item-left`,children:[(0,z.jsxs)(`div`,{className:`combobox-item-row`,children:[(0,z.jsx)(`span`,{className:`combobox-item-name`,children:t.split(`/`).pop()||t}),a&&(0,z.jsx)(`span`,{className:`model-tag-badge badge-free`,children:`Free`})]}),t.includes(`/`)&&(0,z.jsx)(`span`,{className:`combobox-item-repo`,children:t})]}),r&&(0,z.jsx)(`svg`,{className:`combobox-check-icon`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,z.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})]},t)}),!c.trim()&&(0,z.jsx)(`div`,{className:`combobox-see-more-wrap`,style:{marginTop:`4px`},children:(0,z.jsxs)(`button`,{type:`button`,className:`combobox-see-more-btn collapse-btn`,onClick:()=>p(!1),children:[(0,z.jsx)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,z.jsx)(`polyline`,{points:`18 15 12 9 6 15`})}),(0,z.jsx)(`span`,{children:`Collapse other models`})]})})]}):(0,z.jsx)(`div`,{className:`combobox-see-more-wrap`,children:(0,z.jsxs)(`button`,{type:`button`,className:`combobox-see-more-btn`,onClick:()=>p(!0),children:[(0,z.jsx)(`svg`,{width:`13`,height:`13`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,z.jsx)(`polyline`,{points:`6 9 12 15 18 9`})}),(0,z.jsxs)(`span`,{children:[`Show all `,b.length,` other models`]})]})})]}),y.length===0&&b.length===0&&!c.trim()&&(0,z.jsx)(`div`,{className:`model-combobox-empty`,children:(0,z.jsx)(`span`,{children:`No models available`})}),(()=>{let t=E++,n=e===`custom`;return(0,z.jsxs)(`div`,{"data-combobox-idx":t,className:`model-combobox-item custom-option-item ${n?`is-selected`:``} ${u===t?`is-highlighted`:``}`,onClick:()=>C(`custom`),onMouseEnter:()=>d(t),role:`option`,"aria-selected":n,children:[(0,z.jsxs)(`div`,{className:`combobox-item-left`,children:[(0,z.jsx)(`span`,{className:`combobox-item-name`,children:`Custom...`}),(0,z.jsx)(`span`,{className:`combobox-item-repo`,children:`Enter a custom model identifier manually`})]}),n&&(0,z.jsx)(`svg`,{className:`combobox-check-icon`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,z.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})]})})()]})]})]})}var R,z,xt=t((()=>{R=e(n()),M(),z=r()}));function St({provider:e}){let t=Tt[e];return t?t.color?(0,B.jsx)(`span`,{className:`settings-provider-logo is-monochrome`,"aria-hidden":`true`,style:{"--provider-brand-color":t.color,maskImage:`url("${t.src}")`,WebkitMaskImage:`url("${t.src}")`}}):(0,B.jsx)(`img`,{className:`settings-provider-logo`,src:t.src,alt:``,"aria-hidden":`true`}):null}function Ct({config:e,updateField:t,customGemini:n,setCustomGemini:r,customOpenAI:i,setCustomOpenAI:a,customOpenRouter:o,setCustomOpenRouter:s,customDeepSeek:c,setCustomDeepSeek:l,customAnthropic:u,setCustomAnthropic:d,customHF:f,setCustomHF:p,customLocal:m,setCustomLocal:h,customOllama:g,setCustomOllama:_,dynamicOllamaModels:v,dynamicGeminiModels:y=[...Ee],dynamicAnthropicModels:b=[...ae],dynamicOpenAIModels:S=[...x],dynamicOpenRouterModels:C=[...he],dynamicDeepSeekModels:T=[...oe],dynamicLocalModels:te=[...le],dynamicImageModels:E,dynamicVideoModels:D,updateAvailable:O,updateMessage:k,handleCheckUpdates:ne,handleInstallUpdate:re,isDesktopApp:ie=!0,onSaveWithoutClosing:ue}){let[de,fe]=wt.useState(null),[pe,j]=wt.useState({}),[me,ge]=wt.useState({ai_routing:!0,search:!1,productivity:!1,image_gen:!1,video_gen:!1,custom_providers:!1,desktop_updates:!1,assistant_presence:!1}),_e=e=>{ge(t=>({...t,[e]:!t[e]}))},ve=e=>{ge({ai_routing:e,search:e,productivity:e,image_gen:e,video_gen:e,custom_providers:e,desktop_updates:e,assistant_presence:e})},ye=async e=>{ue&&(await ue(),fe(e),setTimeout(()=>fe(null),2e3))},M=(n,r)=>{if(!r)return;if(![`image/png`,`image/jpeg`,`image/webp`].includes(r.type)){j(e=>({...e,[n]:`Choose a PNG, JPEG, or WebP image.`}));return}if(r.size>256*1024){j(e=>({...e,[n]:`The logo must be 256 KB or smaller.`}));return}let i=new FileReader;i.onload=()=>{if(typeof i.result!=`string`){j(e=>({...e,[n]:`Could not read this image.`}));return}(e.customProviders??[]).find(e=>e.id===n)&&(t(`customProviders`,(e.customProviders??[]).map(e=>e.id===n?{...e,logoDataUrl:i.result}:e)),j(e=>{let t={...e};return delete t[n],t}))},i.onerror=()=>{j(e=>({...e,[n]:`Could not read this image.`}))},i.readAsDataURL(r)},N=(e,t,n,r,i,a,o)=>{let s=me[e]??!1;return(0,B.jsxs)(`section`,{className:`setting-section collapsible-section ${s?`is-open`:`is-collapsed`}`,children:[(0,B.jsxs)(`div`,{className:`section-heading-collapsible`,onClick:()=>_e(e),role:`button`,"aria-expanded":s,"aria-label":`${s?`Collapse`:`Expand`} ${n}`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`p`,{className:`section-kicker`,children:[t,a]}),(0,B.jsxs)(`h2`,{className:`section-title`,children:[o,n]})]}),(0,B.jsx)(`svg`,{className:`section-chevron`,width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,B.jsx)(`polyline`,{points:`6 9 12 15 18 9`})})]}),s&&(0,B.jsx)(`div`,{className:`section-collapsible-body`,children:i})]})},be=e.aiProvider.startsWith(`custom:`)?(e.customProviders??[]).find(t=>`custom:${t.id}`===e.aiProvider)?.displayName||`Custom`:w(e.aiProvider),xe=Ot[e.searchProvider]??e.searchProvider,Se=kt[e.imageGenProvider]??e.imageGenProvider,we=At[e.videoGenProvider]??e.videoGenProvider,P=(e.customProviders??[]).length;return(0,B.jsxs)(`div`,{className:`tab-pane active`,children:[(0,B.jsxs)(`div`,{className:`accordion-controls`,children:[(0,B.jsx)(`button`,{type:`button`,onClick:()=>ve(!0),children:`Expand all`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>ve(!1),children:`Collapse all`})]}),N(`ai_routing`,`AI routing`,`Provider & Model`,`Choose which AI backend Mint uses, then set the default model.`,(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`form-grid compact`,children:[(0,B.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,B.jsx)(`label`,{children:`Active provider`}),(0,B.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Active provider`,children:[{id:`gemini`,label:w(`gemini`),title:`Google Gemini (Cloud)`},{id:`anthropic`,label:w(`anthropic`),title:`Anthropic Claude`},{id:`openai`,label:w(`openai`),title:`OpenAI`},{id:`openrouter`,label:w(`openrouter`),title:`OpenRouter`},{id:`deepseek`,label:w(`deepseek`),title:`DeepSeek`},{id:`ollama`,label:w(`ollama`),title:`Ollama (Local / Private)`},{id:`huggingface`,label:w(`huggingface`),title:`Hugging Face (Inference API)`},{id:`local_openai`,label:w(`local_openai`),title:`Local (LM Studio / OpenAI Compatible)`},...(e.customProviders??[]).map(e=>({id:`custom:${e.id}`,label:e.displayName||e.id,title:`${e.displayName||e.id} (Custom)`}))].map(n=>(0,B.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.aiProvider===n.id,title:n.title,className:`pill-segmented-btn ${e.aiProvider===n.id?`active`:``}`,onClick:()=>t(`aiProvider`,n.id),children:n.label},n.id))})]}),e.aiProvider.startsWith(`custom:`)&&(()=>{let n=e.aiProvider.replace(/^custom:/,``),r=(e.customProviders??[]).find(e=>e.id===n);if(!r||r.models.length===0)return null;let i=(e.customModelSelections??{})[n]??r.models[0]?.modelId??``;return(0,B.jsxs)(`div`,{className:`setting-row wide`,children:[(0,B.jsx)(`label`,{children:`Active model`}),(0,B.jsx)(A,{"aria-label":`Active model`,value:i,onValueChange:r=>t(`customModelSelections`,{...e.customModelSelections??{},[n]:r}),children:r.models.map(e=>(0,B.jsx)(`option`,{value:e.modelId,children:e.displayName||e.modelId},e.modelId))})]})})(),(()=>{let n=(e.aiProvider===`gemini`?e.geminiModel:e.aiProvider===`openai`?e.openaiModel:e.aiProvider===`anthropic`?e.anthropicModel:e.aiProvider===`deepseek`?e.deepseekModel:e.aiProvider===`ollama`?e.ollamaModel:e.aiProvider===`openrouter`?e.openrouterModel:e.aiProvider===`huggingface`?e.hfModel:e.aiProvider===`local_openai`?e.localModelName:e.aiProvider?.startsWith(`custom:`)?(e.customModelSelections??{})[e.aiProvider.replace(/^custom:/,``)]??``:``)||``,r=n.toLowerCase(),i=(e.aiProvider===`openai`||e.aiProvider===`openrouter`||e.aiProvider===`local_openai`)&&(r.startsWith(`o1`)||r.startsWith(`o3`)),a=e.aiProvider===`deepseek`||r.includes(`deepseek`)||r.includes(`qwq`)||r.includes(`thinking`)||r.includes(`reasoner`)||r.includes(`r1`),o=r.includes(`codestral`),s=a?.6:o?.1:.2,c=e.modelTemperatures??{},l=n?c[n]:void 0,u=l!==void 0,d=e.temperature!==null&&e.temperature!==void 0,f=u||d,p=u?l:d?e.temperature:s,m=(()=>{if(!n)return``;let e=n.trim(),t=e.includes(`/`)?e.split(`/`).pop():e,r=t.includes(`:`)?t.split(`:`)[0]:t,i=r.toLowerCase(),a={"deepseek-v4-flash":`DeepSeek V4 Flash`,"deepseek-v4-pro":`DeepSeek V4 Pro`,"deepseek-chat":`DeepSeek Chat`,"deepseek-reasoner":`DeepSeek Reasoner`,"claude-sonnet-5":`Claude Sonnet 5`,"claude-opus-5":`Claude Opus 5`,"claude-sonnet-4.6":`Claude Sonnet 4.6`,"claude-haiku-4.5":`Claude Haiku 4.5`,"gemini-2.5-flash":`Gemini 2.5 Flash`,"gemini-3.5-flash":`Gemini 3.5 Flash`,"gemini-3.6-flash":`Gemini 3.6 Flash`,"gpt-5.6-luna":`GPT-5.6 Luna`,"gpt-5.6-terra":`GPT-5.6 Terra`,"gpt-5.6-sol":`GPT-5.6 Sol`,"gpt-4o":`GPT-4o`,"gpt-4o-mini":`GPT-4o Mini`,llama3:`Llama 3`};return a[i]?a[i]:r.split(/[-_]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)})(),h=i?`Auto (Omitted for ${m||`Reasoning`})`:a?`Auto (0.60 for Reasoning)`:o?`Auto (0.10 for Codestral)`:`Auto (0.20 for Coding)`;u?`${m||n}${l.toFixed(2)}`:d&&`${e.temperature.toFixed(2)}`;let g=()=>{if(n&&c[n]!==void 0){let e={...c};delete e[n],t(`modelTemperatures`,e)}e.temperature!==null&&e.temperature!==void 0&&t(`temperature`,null)},_=e=>{n?t(`modelTemperatures`,{...c,[n]:e}):t(`temperature`,e)};return(0,B.jsxs)(`div`,{className:`setting-row stacked setting-feature-card`,children:[(0,B.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:`0.35rem`},children:[(0,B.jsxs)(`label`,{style:{margin:0,fontWeight:600,display:`flex`,alignItems:`baseline`,gap:`0.45rem`},children:[(0,B.jsx)(`span`,{children:`Model temperature`}),m&&(0,B.jsxs)(`span`,{style:{fontSize:`0.8rem`,fontWeight:500,color:`var(--text-muted)`},children:[`· `,m]})]}),(0,B.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`},children:[(0,B.jsx)(`span`,{className:`section-current-badge`,style:{fontSize:`0.75rem`},children:u?`Custom (${l.toFixed(2)})`:d?`Custom Global (${e.temperature.toFixed(2)})`:h}),f&&(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,style:{padding:`0.15rem 0.45rem`,fontSize:`0.75rem`},onClick:g,title:`Reset ${m||n||`model`} to smart default`,children:`Reset to Auto`})]})]}),(0,B.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.75rem`},children:[(0,B.jsx)(`input`,{type:`range`,min:`0`,max:`1.5`,step:`0.05`,value:p,onChange:e=>_(parseFloat(e.target.value)),style:{flex:1,accentColor:`var(--accent, #10b981)`,cursor:`pointer`}}),(0,B.jsx)(`span`,{style:{fontSize:`0.85rem`,minWidth:`2.5rem`,textAlign:`right`,fontFamily:`monospace`,fontWeight:600},children:p.toFixed(2)})]}),(0,B.jsxs)(`span`,{style:{fontSize:`0.75rem`,color:`var(--text-muted)`,marginTop:`0.35rem`,lineHeight:1.4},children:[`Controls sampling entropy for `,(0,B.jsx)(`strong`,{children:m||n}),`. `,i?`Reasoning models (o1/o3) automatically omit this parameter.`:a?`Smart default is 0.60 to prevent repetitive reasoning loops.`:o?`Smart default is 0.10 for deterministic code completion.`:`Smart default is 0.20 for general coding and tool execution.`]})]})})(),(()=>{let n=e.aiProvider===`gemini`?e.geminiModel||`gemini-2.5-flash`:e.aiProvider===`anthropic`?e.anthropicModel||`claude-sonnet-5`:e.aiProvider===`openai`?e.openaiModel||`gpt-5.6-luna`:e.aiProvider===`openrouter`?e.openrouterModel||`openai/gpt-5.6-terra`:e.aiProvider===`deepseek`?e.deepseekModel||`deepseek-chat`:e.aiProvider===`local_openai`?e.localModelName||`local-model`:e.aiProvider===`ollama`?e.ollamaModel||`llama3`:e.aiProvider===`huggingface`?e.hfModel||`Qwen/Qwen3.6-27B`:``,r=Oe(n,e.aiProvider),i=e.modelThinkingConfigs??{},a=n?i[n]:void 0,o=a!==void 0,s=r.supportsThinking,c=a?.enabled===void 0?e.thinkingEnabled??!0:a.enabled,l=(a?.effort||e.thinkingEffort||`medium`).toLowerCase(),u=()=>{if(n&&i[n]!==void 0){let e={...i};delete e[n],t(`modelThinkingConfigs`,e)}},d=e=>{n&&t(`modelThinkingConfigs`,{...i,[n]:{enabled:e,effort:l}}),t(`thinkingEnabled`,e)},f=e=>{n&&t(`modelThinkingConfigs`,{...i,[n]:{enabled:c,effort:e}}),t(`thinkingEffort`,e)},p={low:`Low`,medium:`Medium`,high:`High`,extra_high:`Extra High`};return(0,B.jsxs)(`div`,{className:`setting-row stacked setting-feature-card`,children:[(0,B.jsxs)(`div`,{className:`thinking-card-header`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:`0.5rem`},children:[(0,B.jsxs)(`label`,{className:`thinking-card-title`,style:{margin:0,fontWeight:600,display:`flex`,alignItems:`center`,gap:`0.45rem`},children:[(0,B.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,style:{color:`var(--interactive-fg)`},children:[(0,B.jsx)(`path`,{d:`M12 2a7 7 0 0 1 7 7c0 2.38-1.19 4.47-3 5.74V17a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-2.26C6.19 13.47 5 11.38 5 9a7 7 0 0 1 7-7z`}),(0,B.jsx)(`path`,{d:`M9 21h6`})]}),(0,B.jsx)(`span`,{children:`Thinking / Reasoning`}),n&&(0,B.jsxs)(`span`,{style:{fontSize:`0.8rem`,fontWeight:500,color:`var(--text-muted)`},children:[`· `,n.split(`/`).pop()]})]}),(0,B.jsxs)(`div`,{className:`thinking-card-status`,style:{display:`flex`,alignItems:`center`,gap:`0.5rem`},children:[(0,B.jsx)(`span`,{className:`section-current-badge`,style:{fontSize:`0.75rem`},children:c?`Thinking ON (${p[l]||`Medium`})${s?``:` · Force`}`:`Thinking OFF`}),o&&(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,style:{padding:`0.15rem 0.45rem`,fontSize:`0.75rem`},onClick:u,title:`Reset ${n} thinking configuration`,children:`Reset`})]})]}),(0,B.jsxs)(`div`,{className:`thinking-card-toggle-row`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,padding:`0.4rem 0`},children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{style:{fontSize:`0.82rem`,fontWeight:500},children:`Enable thinking`}),(0,B.jsx)(`p`,{style:{margin:`2px 0 0 0`,fontSize:`0.73rem`,color:`var(--text-muted)`},children:s?`Allow model to output chain-of-thought tokens.`:c?`Chain-of-thought token generation enabled (force toggle).`:`Model not flagged as reasoning by default — toggle on to force enable.`})]}),(0,B.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:c,onChange:e=>d(e.target.checked)}),(0,B.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),c&&(0,B.jsx)(`div`,{style:{marginTop:`0.5rem`,paddingTop:`0.5rem`,borderTop:`1px solid var(--border)`},children:(0,B.jsxs)(`div`,{className:`thinking-card-effort-row`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,B.jsx)(`span`,{style:{fontSize:`0.78rem`,fontWeight:600,color:`var(--text-muted)`,textTransform:`none`,letterSpacing:`0.04em`},children:`Reasoning Effort`}),(0,B.jsx)(`div`,{className:`thinking-card-effort-options`,style:{display:`flex`,gap:`4px`},children:[`low`,`medium`,`high`,`extra_high`].map(e=>(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small ${l===e?`active`:``}`,style:{padding:`0.2rem 0.6rem`,fontSize:`0.75rem`,fontWeight:l===e?600:400,background:l===e?`rgba(16, 185, 129, 0.15)`:void 0,borderColor:l===e?`var(--accent, #10b981)`:void 0,color:l===e?`var(--accent, #10b981)`:void 0},onClick:()=>f(e),children:p[e]},e))})]})})]})})()]}),(0,B.jsxs)(`div`,{className:`provider-cards-container`,children:[(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`gemini`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`gemini`}),`Google Gemini (Cloud)`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`gemini`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`gemini`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Gemini model`}),(0,B.jsxs)(A,{"aria-label":`Gemini model`,value:y.includes(e.geminiModel)?e.geminiModel:`custom`,onValueChange:e=>t(`geminiModel`,e),children:[y.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!y.includes(e.geminiModel)||e.geminiModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom Gemini model`}),(0,B.jsx)(`input`,{type:`text`,value:n,onChange:e=>{r(e.target.value),t(`geminiModel`,`custom`)},placeholder:`e.g. gemini-3.1-flash-lite-preview`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Gemini API Key`}),(0,B.jsx)(I,{value:e.apiKey,onChange:e=>t(`apiKey`,e),placeholder:`Enter Gemini API Key...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`anthropic`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`anthropic`}),`Anthropic Claude`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`anthropic`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`anthropic`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Anthropic model`}),(0,B.jsxs)(A,{"aria-label":`Anthropic model`,value:b.includes(e.anthropicModel)?e.anthropicModel:`custom`,onValueChange:e=>t(`anthropicModel`,e),children:[b.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!b.includes(e.anthropicModel)||e.anthropicModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom Anthropic model`}),(0,B.jsx)(`input`,{type:`text`,value:u,onChange:e=>{d(e.target.value),t(`anthropicModel`,`custom`)},placeholder:`e.g. claude-3-5-sonnet-latest`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Anthropic API Key`}),(0,B.jsx)(I,{value:e.anthropicApiKey,onChange:e=>t(`anthropicApiKey`,e),placeholder:`Enter Anthropic API Key...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`openai`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`openai`}),`OpenAI`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`openai`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`openai`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`OpenAI Model`}),(0,B.jsxs)(A,{"aria-label":`OpenAI Model`,value:S.includes(e.openaiModel)?e.openaiModel:`custom`,onValueChange:e=>t(`openaiModel`,e),children:[S.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!S.includes(e.openaiModel)||e.openaiModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom OpenAI model`}),(0,B.jsx)(`input`,{type:`text`,value:i,onChange:e=>{a(e.target.value),t(`openaiModel`,`custom`)},placeholder:`e.g. gpt-4o`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`OpenAI API Key`}),(0,B.jsx)(I,{value:e.openaiApiKey,onChange:e=>t(`openaiApiKey`,e),placeholder:`Enter OpenAI API Key...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`openrouter`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`openrouter`}),`OpenRouter`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`openrouter`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`openrouter`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`OpenRouter Model`}),(0,B.jsx)(bt,{value:C.includes(e.openrouterModel)?e.openrouterModel:`custom`,models:C,onChange:e=>t(`openrouterModel`,e),onCustomChange:e=>{s(e),t(`openrouterModel`,`custom`)},customValue:o,placeholder:`Select or search OpenRouter model...`})]}),(!C.includes(e.openrouterModel)||e.openrouterModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom OpenRouter model`}),(0,B.jsx)(`input`,{type:`text`,value:o,onChange:e=>{s(e.target.value),t(`openrouterModel`,`custom`)},placeholder:`e.g. anthropic/claude-3.5-sonnet`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`OpenRouter API Key`}),(0,B.jsx)(I,{value:e.openrouterApiKey,onChange:e=>t(`openrouterApiKey`,e),placeholder:`Enter OpenRouter API Key...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`deepseek`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`deepseek`}),`DeepSeek`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`deepseek`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`deepseek`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`DeepSeek Model`}),(0,B.jsxs)(A,{"aria-label":`DeepSeek Model`,value:T.includes(e.deepseekModel)?e.deepseekModel:`custom`,onValueChange:e=>t(`deepseekModel`,e),children:[T.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!T.includes(e.deepseekModel)||e.deepseekModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom DeepSeek model`}),(0,B.jsx)(`input`,{type:`text`,value:c,onChange:e=>{l(e.target.value),t(`deepseekModel`,`custom`)},placeholder:`e.g. deepseek-v4-pro`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`DeepSeek API Key`}),(0,B.jsx)(I,{value:e.deepseekApiKey,onChange:e=>t(`deepseekApiKey`,e),placeholder:`Enter DeepSeek API Key...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`huggingface`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`huggingface`}),`Hugging Face (Inference API)`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`huggingface`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`huggingface`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Hugging Face model`}),(0,B.jsxs)(A,{"aria-label":`Hugging Face model`,value:ee.includes(e.hfModel)?e.hfModel:`custom`,onValueChange:e=>t(`hfModel`,e),children:[ee.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!ee.includes(e.hfModel)||e.hfModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom Hugging Face model`}),(0,B.jsx)(`input`,{type:`text`,value:f,onChange:e=>{p(e.target.value),t(`hfModel`,`custom`)},placeholder:`e.g. meta-llama/Meta-Llama-3-8B-Instruct`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Hugging Face API key`}),(0,B.jsx)(I,{value:e.hfApiKey,onChange:e=>t(`hfApiKey`,e),placeholder:`Enter Hugging Face API key...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`local_openai`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`local_openai`}),`LM Studio / Local OpenAI`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`local_openai`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`local_openai`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`LM Studio Model`}),(0,B.jsxs)(A,{"aria-label":`LM Studio Model`,value:te.includes(e.localModelName)?e.localModelName:`custom`,onValueChange:e=>t(`localModelName`,e),children:[te.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!te.includes(e.localModelName)||e.localModelName===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom LM Studio Model`}),(0,B.jsx)(`input`,{type:`text`,value:m,onChange:e=>{h(e.target.value),t(`localModelName`,`custom`)},placeholder:`e.g. local-model`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`LM Studio Base URL`}),(0,B.jsx)(`input`,{type:`text`,value:e.localApiBaseUrl,onChange:e=>t(`localApiBaseUrl`,e.target.value),placeholder:`e.g. http://localhost:1234/v1`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`ollama`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(St,{provider:`ollama`}),`Ollama (Local)`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`ollama`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`ollama`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Ollama model`}),(0,B.jsxs)(A,{"aria-label":`Ollama model`,value:v.includes(e.ollamaModel)?e.ollamaModel:`custom`,onValueChange:e=>t(`ollamaModel`,e),children:[v.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),!v.includes(e.ollamaModel)&&e.ollamaModel&&e.ollamaModel!==`custom`&&(0,B.jsx)(`option`,{value:e.ollamaModel,children:e.ollamaModel}),(0,B.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!v.includes(e.ollamaModel)||e.ollamaModel===`custom`)&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Custom Ollama model`}),(0,B.jsx)(`input`,{type:`text`,value:g,onChange:e=>{_(e.target.value),t(`ollamaModel`,`custom`)},placeholder:`e.g. llama3:latest`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Ollama host`}),(0,B.jsx)(`input`,{type:`text`,value:e.ollamaHost,onChange:e=>t(`ollamaHost`,e.target.value),placeholder:`e.g. http://localhost:11434`})]})]})]})]})]}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:be})),N(`search`,`Web search`,`Search Provider`,`Choose which search API Mint uses when performing web lookups.`,(0,B.jsxs)(`div`,{className:`provider-cards-container`,children:[(0,B.jsxs)(`div`,{className:`provider-card ${e.searchProvider===`brave`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,B.jsx)(`path`,{d:`M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z`})}),`Brave Search API`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.searchProvider===`brave`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`searchProvider`,`brave`),children:`Set active`})})]}),(0,B.jsx)(`div`,{className:`provider-card-body`,children:(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Brave Search API key`}),(0,B.jsx)(I,{value:e.braveSearchApiKey,onChange:e=>t(`braveSearchApiKey`,e),placeholder:`Enter Brave Search API key...`})]})})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.searchProvider===`google`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,B.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,B.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),`Google Search API`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.searchProvider===`google`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`searchProvider`,`google`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Google Search API key`}),(0,B.jsx)(I,{value:e.googleSearchApiKey,onChange:e=>t(`googleSearchApiKey`,e),placeholder:`Enter Google Search API key...`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Google Search engine ID (CX)`}),(0,B.jsx)(`input`,{type:`text`,value:e.googleSearchCx,onChange:e=>t(`googleSearchCx`,e.target.value),placeholder:`Enter Google Custom Search Engine ID (CX)...`})]})]})]}),(0,B.jsxs)(`div`,{className:`provider-card ${e.searchProvider===`searxng`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,B.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,B.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),`SearXNG (self-hosted)`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.searchProvider===`searxng`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`searchProvider`,`searxng`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`SearXNG Instance URL`}),(0,B.jsx)(`input`,{type:`text`,value:e.searxngBaseUrl,onChange:e=>t(`searxngBaseUrl`,e.target.value),placeholder:`e.g. https://searx.example.com`})]}),(0,B.jsx)(`p`,{className:`hint`,children:`Self-hosted, no API key needed. The instance must have JSON output enabled (search.formats in settings.yml).`})]})]})]}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:xe})),N(`image_gen`,`AI image creation`,`Image Generation`,`Choose which image generation provider Mint uses.`,(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`form-grid compact`,children:(0,B.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,B.jsx)(`label`,{children:`Active provider`}),(0,B.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Image Provider`,children:Et.map(n=>(0,B.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.imageGenProvider===n.id,title:n.cardTitle,className:`pill-segmented-btn ${e.imageGenProvider===n.id?`active`:``}`,onClick:()=>t(`imageGenProvider`,n.id),children:n.label},n.id))})]})}),(0,B.jsx)(`div`,{className:`provider-cards-container`,children:Et.map(n=>{let r=ce[n.id],i=r?se[r.listKey]??[]:[],a=r&&E?.[r.listKey]||i,o=r?.configField,s=o&&(e[o]||a[0]?.value)||``;return(0,B.jsxs)(`div`,{className:`provider-card ${e.imageGenProvider===n.id?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[Dt,n.cardTitle]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.imageGenProvider===n.id?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`imageGenProvider`,n.id),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[o&&a.length>0&&(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsxs)(`label`,{children:[n.label,` Model`]}),(0,B.jsxs)(A,{"aria-label":`Model`,value:s,onValueChange:e=>t(o,e),children:[a.map(e=>(0,B.jsx)(`option`,{value:e.value,children:e.label},e.value)),s&&!a.some(e=>e.value===s)&&(0,B.jsx)(`option`,{value:s,children:s},s)]})]}),n.keyField?(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsxs)(`label`,{children:[n.label,` API Key`]}),(0,B.jsx)(I,{value:e[n.keyField]||``,onChange:e=>t(n.keyField,e),placeholder:`Enter ${n.label} API Key...`})]}):(0,B.jsxs)(`p`,{className:`hint`,children:[`Uses your `,n.sharedKey,` API key — no extra key needed.`]})]})]},n.id)})})]}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:Se})),N(`video_gen`,`AI video creation`,`Video Generation`,`Choose which video generation provider Mint uses.`,(0,B.jsx)(`div`,{className:`provider-cards-container`,children:(0,B.jsxs)(`div`,{className:`provider-card ${e.videoGenProvider===`veo`?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[(0,B.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,B.jsx)(`polygon`,{points:`23 7 16 12 23 17 23 7`}),(0,B.jsx)(`rect`,{x:`1`,y:`5`,width:`15`,height:`14`,rx:`2`,ry:`2`})]}),`Google Veo (Gemini Videos)`]}),(0,B.jsx)(`div`,{className:`provider-card-actions`,children:e.videoGenProvider===`veo`?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`videoGenProvider`,`veo`),children:`Set active`})})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsx)(`p`,{className:`hint`,children:`Uses your Gemini API key — no extra key needed.`}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Default Veo model`}),(()=>{let n=D?.veo||Ce.veo||[],r=e.veoModel||`veo-3.1-generate-preview`;return(0,B.jsxs)(A,{"aria-label":`Default Veo model`,value:r,onValueChange:e=>{t(`veoModel`,e),Xe(`veoModel`,e,`video`)},children:[n.map(e=>(0,B.jsx)(`option`,{value:e.value,children:e.label},e.value)),r&&!n.some(e=>e.value===r)&&(0,B.jsx)(`option`,{value:r,children:r},r)]})})()]})]})]})}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:we})),N(`custom_providers`,`Custom AI Routing`,`Custom Providers`,`Add any OpenAI-compatible endpoint as a custom provider. Configure its models and optional headers.`,(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`provider-cards-container`,children:(e.customProviders??[]).map((n,r)=>{let i=e.aiProvider===`custom:${n.id}`,a=n=>{t(`customProviders`,(e.customProviders??[]).map((e,t)=>t===r?{...e,...n}:e))},o=()=>{t(`customProviders`,(e.customProviders??[]).filter((e,t)=>t!==r)),e.aiProvider===`custom:${n.id}`&&t(`aiProvider`,`gemini`)},s=(e,t)=>{a({models:n.models.map((n,r)=>r===e?{...n,...t}:n)})},c=e=>{a({models:n.models.filter((t,n)=>n!==e)})},l=()=>{a({models:[...n.models,{modelId:``,displayName:``}]})},u=(e,t)=>{a({headers:n.headers.map((n,r)=>r===e?{...n,...t}:n)})},d=e=>{a({headers:n.headers.filter((t,n)=>n!==e)})};return(0,B.jsxs)(`div`,{className:`provider-card ${i?`active-provider`:``}`,children:[(0,B.jsxs)(`div`,{className:`provider-card-header`,children:[(0,B.jsxs)(`div`,{className:`provider-card-title`,children:[n.logoDataUrl?(0,B.jsx)(`img`,{className:`settings-provider-logo custom-provider-logo`,src:n.logoDataUrl,alt:``}):(0,B.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,B.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,B.jsx)(`path`,{d:`M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14`})]}),n.displayName||n.id||`Unnamed Provider`]}),(0,B.jsxs)(`div`,{className:`provider-card-actions`,children:[i?(0,B.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,B.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`custom:${n.id}`),children:`Set active`}),(0,B.jsx)(`button`,{className:`btn btn-primary btn-xs`,onClick:()=>ye(n.id),title:`Save this provider settings`,children:de===n.id?`Saved! ✓`:`Save`}),(0,B.jsx)(`button`,{className:`btn btn-danger btn-xs`,onClick:o,title:`Delete this provider`,children:`Delete`})]})]}),(0,B.jsxs)(`div`,{className:`provider-card-body`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Name`}),(0,B.jsx)(`input`,{type:`text`,value:n.displayName,onChange:e=>{let t=e.target.value;a({displayName:t,id:t.toLowerCase().replace(/[^a-z0-9_-]/g,`-`).replace(/-+/g,`-`).replace(/^-|-$/g,``)||`provider-${r+1}`})},placeholder:`e.g. DeepSeek`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Provider logo (optional)`}),(0,B.jsxs)(`div`,{className:`custom-provider-logo-picker`,children:[(0,B.jsx)(`div`,{className:`custom-provider-logo-preview`,"aria-hidden":`true`,children:n.logoDataUrl?(0,B.jsx)(`img`,{src:n.logoDataUrl,alt:``}):(0,B.jsx)(`span`,{children:`Logo`})}),(0,B.jsxs)(`label`,{className:`btn btn-secondary btn-xs custom-provider-logo-select`,children:[n.logoDataUrl?`Change image`:`Choose image`,(0,B.jsx)(`input`,{type:`file`,accept:`image/png,image/jpeg,image/webp`,onChange:e=>{M(n.id,e.currentTarget.files?.[0]),e.currentTarget.value=``}})]}),n.logoDataUrl&&(0,B.jsx)(`button`,{type:`button`,className:`btn btn-secondary btn-xs`,onClick:()=>{a({logoDataUrl:void 0}),j(e=>{let t={...e};return delete t[n.id],t})},children:`Remove`}),(0,B.jsx)(`span`,{className:`custom-provider-logo-help`,children:`PNG, JPEG, or WebP · max 256 KB`}),pe[n.id]&&(0,B.jsx)(`span`,{className:`custom-provider-logo-error`,role:`alert`,children:pe[n.id]})]})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Base URL`}),(0,B.jsx)(`input`,{type:`text`,value:n.baseUrl,onChange:e=>a({baseUrl:e.target.value}),placeholder:`https://api.myprovider.com/v1`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`API Key`}),(0,B.jsx)(I,{value:n.apiKey,onChange:e=>a({apiKey:e}),placeholder:`Optional. Leave empty if you manage auth via headers.`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`provider-sublist-label`,children:`Model list`}),n.models.map((e,t)=>(0,B.jsxs)(`div`,{className:`provider-sublist-row`,children:[(0,B.jsx)(`input`,{type:`text`,value:e.modelId,onChange:e=>s(t,{modelId:e.target.value,displayName:e.target.value}),placeholder:`e.g. llama-3.1-8b`}),(0,B.jsx)(`button`,{className:`btn btn-danger btn-xs`,onClick:()=>c(t),title:`Remove model`,children:`🗑`})]},t)),(0,B.jsx)(`button`,{className:`btn btn-secondary btn-xs sublist-add`,onClick:l,children:`+ Add model`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{className:`provider-sublist-label`,children:`Headers (optional)`}),n.headers.map((e,t)=>(0,B.jsxs)(`div`,{className:`provider-sublist-row`,children:[(0,B.jsx)(`input`,{type:`text`,value:e.name,onChange:e=>u(t,{name:e.target.value}),placeholder:`Header-Name`}),(0,B.jsx)(`input`,{type:`text`,value:e.value,onChange:e=>u(t,{value:e.target.value}),placeholder:`value`}),(0,B.jsx)(`button`,{className:`btn btn-danger btn-xs`,onClick:()=>d(t),title:`Remove header`,children:`🗑`})]},t)),(0,B.jsx)(`button`,{className:`btn btn-secondary btn-xs sublist-add`,onClick:()=>{a({headers:[...n.headers,{name:``,value:``}]})},children:`+ Add header`})]})]})]},r)})}),(0,B.jsx)(`div`,{className:`setting-actions`,children:(0,B.jsx)(`button`,{className:`btn btn-secondary`,onClick:()=>{let n=`provider-${(e.customProviders??[]).length+1}`;t(`customProviders`,[...e.customProviders??[],{id:n,displayName:``,baseUrl:``,apiKey:``,models:[],headers:[]}])},children:`+ Add custom provider`})})]}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:P>0?`${P} added`:`None`})),ie&&N(`desktop_updates`,`Desktop updates`,`Signed Tauri Channel`,`Check and explicitly install signed Tauri releases from your configured update channel.`,(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{className:`toggle-row`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{children:`Check signed update channel`}),(0,B.jsx)(`p`,{className:`hint`,children:`This flag does not install updates automatically.`})]}),(0,B.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:e.enableAutoUpdate,onChange:e=>t(`enableAutoUpdate`,e.target.checked)}),(0,B.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,B.jsxs)(`div`,{className:`form-grid single`,children:[(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Updater endpoint`}),(0,B.jsx)(`input`,{type:`text`,value:e.updaterEndpoint,onChange:e=>t(`updaterEndpoint`,e.target.value),placeholder:`https://updates.example.com/latest.json`})]}),(0,B.jsxs)(`div`,{className:`setting-row`,children:[(0,B.jsx)(`label`,{children:`Updater public key`}),(0,B.jsx)(`textarea`,{value:e.updaterPublicKey,onChange:e=>t(`updaterPublicKey`,e.target.value),placeholder:`Minisign public key`})]})]}),(0,B.jsxs)(`div`,{className:`setting-actions`,children:[(0,B.jsx)(`button`,{type:`button`,className:`btn-connect`,onClick:ne,children:`Check for updates`}),O&&(0,B.jsx)(`button`,{type:`button`,className:`btn-primary`,onClick:re,children:`Install signed update`})]}),k&&(0,B.jsx)(`p`,{className:`hint`,children:k})]}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:e.enableAutoUpdate?`On`:`Off`})),ie&&N(`assistant_presence`,`Desktop`,`Assistant Presence`,`Configure the mini AI character desktop presence widget.`,(0,B.jsxs)(`div`,{className:`toggle-row`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`label`,{children:`Show Desktop AI candidate`}),(0,B.jsx)(`p`,{className:`hint`,children:`Show the mini AI character on your desktop.`})]}),(0,B.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:e.showDesktopWidget,onChange:e=>t(`showDesktopWidget`,e.target.checked)}),(0,B.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,B.jsx)(`span`,{className:`section-current-badge`,children:e.showDesktopWidget?`On`:`Off`}))]})}var wt,B,Tt,Et,Dt,Ot,kt,At,jt=t((()=>{Pe(),wt=e(n()),M(),Ye(),ie(),yt(),xt(),Fe(),Ie(),ue(),ve(),ge(),Me(),pe(),we(),B=r(),Tt={anthropic:{src:fe,color:`#d97757`},deepseek:{src:Ne},gemini:{src:_e},huggingface:{src:xe},local_openai:{src:Te,color:`#8b5cf6`},ollama:{src:j,color:`#f3f4f6`},openai:{src:be,color:`#10a37f`},openrouter:{src:ke}},Et=[{id:`gemini`,label:`NanoBanana`,cardTitle:`Google NanoBanana (Gemini Images)`,sharedKey:`Gemini`},{id:`dalle`,label:`DALL·E`,cardTitle:`OpenAI DALL·E`,sharedKey:`OpenAI`},{id:`stability`,label:`Stability AI`,cardTitle:`Stability AI (Stable Diffusion)`,keyField:`stabilityApiKey`},{id:`ideogram`,label:`Ideogram`,cardTitle:`Ideogram`,keyField:`ideogramApiKey`},{id:`replicate`,label:`Replicate`,cardTitle:`Replicate (FLUX / SDXL / custom)`,keyField:`replicateApiKey`},{id:`bfl`,label:`Black Forest Labs`,cardTitle:`Black Forest Labs (FLUX API)`,keyField:`bflApiKey`}],Dt=(0,B.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,B.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`}),(0,B.jsx)(`circle`,{cx:`8.5`,cy:`8.5`,r:`1.5`}),(0,B.jsx)(`polyline`,{points:`21 15 16 10 5 21`})]}),Ot={brave:`Brave`,google:`Google`,searxng:`SearXNG`},kt={gemini:`NanoBanana`,dalle:`DALL·E`,stability:`Stability`,ideogram:`Ideogram`,replicate:`Replicate`,bfl:`FLUX`},At={veo:`Veo`}})),Mt=t((()=>{jt()}));function Nt({imageSrc:e,fileName:t,onClose:n,onConfirm:r}){let[i,a]=(0,V.useState)(1),[o,s]=(0,V.useState)(0),[c,l]=(0,V.useState)({x:0,y:0}),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)({width:0,height:0}),m=(0,V.useRef)(!1),h=(0,V.useRef)({x:0,y:0}),g=(0,V.useRef)(null),_=(0,V.useRef)(1),v=(0,V.useRef)(null);(0,V.useEffect)(()=>{let t=new Image;t.onload=()=>{p({width:t.naturalWidth,height:t.naturalHeight})},t.src=e},[e]);let y=!f.width||!f.height?1:Math.max(Pt/f.width,Pt/f.height),b=(0,V.useRef)(i);b.current=i;let x=(0,V.useRef)(o);x.current=o;let S=(0,V.useCallback)((e,t,n)=>{if(!f.width||!f.height)return e;let r=n%180!=0,i=r?f.height:f.width,a=r?f.width:f.height,o=i*y*t,s=a*y*t,c=Math.max(0,(o-Pt)/2),l=Math.max(0,(s-Pt)/2);return{x:Math.min(Math.max(e.x,-c),c),y:Math.min(Math.max(e.y,-l),l)}},[f.width,f.height,y]),C=e=>{e.preventDefault(),m.current=!0,h.current={x:e.clientX-c.x,y:e.clientY-c.y}},w=(0,V.useCallback)(e=>{m.current&&l(S({x:e.clientX-h.current.x,y:e.clientY-h.current.y},b.current,x.current))},[S]),T=(0,V.useCallback)(()=>{m.current=!1},[]);(0,V.useEffect)(()=>(window.addEventListener(`mousemove`,w),window.addEventListener(`mouseup`,T),()=>{window.removeEventListener(`mousemove`,w),window.removeEventListener(`mouseup`,T)}),[w,T]);let ee=e=>{e.touches.length===1?(m.current=!0,h.current={x:e.touches[0].clientX-c.x,y:e.touches[0].clientY-c.y}):e.touches.length===2&&(m.current=!1,g.current=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY),_.current=i)},te=e=>{if(e.touches.length===1&&m.current)l(S({x:e.touches[0].clientX-h.current.x,y:e.touches[0].clientY-h.current.y},i,o));else if(e.touches.length===2&&g.current){let t=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY)/g.current,n=Math.min(Math.max(_.current*t,1),3.5);a(n),l(e=>S(e,n,o))}},E=()=>{m.current=!1,g.current=null},D=e=>{let t=Math.min(Math.max(e,1),3.5);a(t),l(e=>S(e,t,o))};return(0,H.jsx)(`div`,{className:`crop-modal-overlay`,onClick:n,children:(0,H.jsxs)(`div`,{className:`crop-modal-card`,onClick:e=>e.stopPropagation(),children:[(0,H.jsxs)(`div`,{className:`crop-modal-header`,children:[(0,H.jsx)(`button`,{type:`button`,className:`crop-modal-back-btn`,onClick:n,"aria-label":`Back`,title:`ย้อนกลับ / ยกเลิก`,children:(0,H.jsxs)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,H.jsx)(`line`,{x1:`19`,y1:`12`,x2:`5`,y2:`12`}),(0,H.jsx)(`polyline`,{points:`12 19 5 12 12 5`})]})}),(0,H.jsx)(`h3`,{className:`crop-modal-title`,children:`ครอบตัดและหมุน`}),(0,H.jsx)(`button`,{type:`button`,className:`crop-modal-reset-btn`,onClick:()=>{a(1),s(0),l({x:0,y:0})},title:`รีเซ็ตตำแหน่งและการหมุน`,children:`รีเซ็ต`})]}),(0,H.jsxs)(`div`,{className:`crop-modal-stage`,children:[(0,H.jsxs)(`div`,{className:`crop-viewport`,style:{width:`${Pt}px`,height:`${Pt}px`},onMouseDown:C,onTouchStart:ee,onTouchMove:te,onTouchEnd:E,onWheel:e=>{e.preventDefault(),D(i+(e.deltaY<0?.08:-.08))},children:[e&&(0,H.jsx)(`img`,{ref:v,src:e,alt:`Crop preview`,className:`crop-image`,draggable:!1,style:{transform:`translate(calc(-50% + ${c.x}px), calc(-50% + ${c.y}px)) rotate(${o}deg) scale(${y*i})`}}),(0,H.jsx)(`div`,{className:`crop-mask-circle`}),(0,H.jsx)(`div`,{className:`crop-bracket crop-bracket-tl`}),(0,H.jsx)(`div`,{className:`crop-bracket crop-bracket-tr`}),(0,H.jsx)(`div`,{className:`crop-bracket crop-bracket-bl`}),(0,H.jsx)(`div`,{className:`crop-bracket crop-bracket-br`})]}),(0,H.jsx)(`p`,{className:`crop-hint-drag`,children:`ลากเพื่อเลื่อนตำแหน่ง · เลื่อนล้อเมาส์เพื่อซูม`})]}),(0,H.jsxs)(`div`,{className:`crop-modal-controls`,children:[(0,H.jsxs)(`div`,{className:`crop-zoom-row`,children:[(0,H.jsx)(`button`,{type:`button`,className:`crop-zoom-btn`,onClick:()=>D(i-.15),title:`ซูมออก`,disabled:i<=1,children:(0,H.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,H.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})})}),(0,H.jsx)(`input`,{type:`range`,min:`1`,max:`3`,step:`0.01`,value:i,onChange:e=>D(parseFloat(e.target.value)),className:`crop-zoom-slider range-slider`,"aria-label":`Zoom`}),(0,H.jsx)(`button`,{type:`button`,className:`crop-zoom-btn`,onClick:()=>D(i+.15),title:`ซูมเข้า`,disabled:i>=3,children:(0,H.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,H.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,H.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]})})]}),(0,H.jsx)(`div`,{className:`crop-rotate-row`,children:(0,H.jsxs)(`button`,{type:`button`,className:`crop-rotate-btn`,onClick:()=>{let e=(o+90)%360;s(e),l(t=>S(t,i,e))},title:`หมุน 90 องศา`,children:[(0,H.jsx)(`div`,{className:`crop-rotate-icon`,children:(0,H.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,H.jsx)(`path`,{d:`M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67`})})}),(0,H.jsx)(`span`,{className:`crop-rotate-label`,children:`หมุน`})]})}),(0,H.jsxs)(`div`,{className:`crop-actions-row`,children:[(0,H.jsx)(`button`,{type:`button`,className:`btn-secondary crop-btn-cancel`,onClick:n,disabled:u,children:`ยกเลิก`}),(0,H.jsx)(`button`,{type:`button`,className:`btn-primary crop-btn-confirm`,onClick:async()=>{if(!(!f.width||!f.height)){d(!0);try{let t=new Image;t.crossOrigin=`anonymous`,await new Promise((n,r)=>{t.onload=()=>n(),t.onerror=r,t.src=e});let n=document.createElement(`canvas`);n.width=Ft,n.height=Ft;let a=n.getContext(`2d`);if(!a)throw Error(`Could not get canvas context`);a.imageSmoothingEnabled=!0,a.imageSmoothingQuality=`high`;let s=Ft/Pt;a.translate(Ft/2+c.x*s,Ft/2+c.y*s),a.rotate(o*Math.PI/180);let l=y*i*s;a.scale(l,l),a.drawImage(t,-f.width/2,-f.height/2,f.width,f.height),await r(n.toDataURL(`image/jpeg`,.95))}catch(e){console.error(`Failed to crop image:`,e),alert(`Failed to process image.`)}finally{d(!1)}}},disabled:u,children:u?`กำลังบันทึก…`:`ถัดไป`})]})]})]})})}var V,H,Pt,Ft,It=t((()=>{V=e(n()),H=r(),Pt=280,Ft=512}));function Lt({name:e,setName:t,imageUrl:n,setImageUrl:r}){let{user:o,avatarUrl:s,refreshUser:c}=a(),[l,u]=(0,Rt.useState)(!1),[d,f]=(0,Rt.useState)(null),[p,m]=(0,Rt.useState)(null),h=(0,Rt.useRef)(null);return o?(0,U.jsxs)(`div`,{className:`tab-pane active animate-fade-in`,style:{display:`flex`,flexDirection:`column`,gap:`24px`},children:[(0,U.jsxs)(`section`,{className:`setting-section`,children:[(0,U.jsx)(`div`,{className:`section-heading`,children:(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`section-kicker`,children:`Account`}),(0,U.jsx)(`h2`,{className:`section-title`,children:`Profile`})]})}),(0,U.jsxs)(`div`,{className:`profile-header-card`,children:[(0,U.jsx)(`input`,{type:`file`,ref:h,accept:`image/*`,style:{display:`none`},onChange:async e=>{let t=e.target.files?.[0];if(e.target.value=``,t){if(!t.type.startsWith(`image/`)){f(`Please select a valid image file.`);return}f(null);try{m({imageSrc:await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsDataURL(t)}),fileName:t.name})}catch(e){console.error(`Failed to read image file:`,e),f(`Failed to read selected image.`)}}}}),(0,U.jsx)(`div`,{className:`profile-avatar profile-avatar-lg`,onClick:()=>h.current?.click(),children:s?(0,U.jsx)(`img`,{src:s,alt:e||`User`}):(e?.[0]||o.email?.[0]||`U`).toUpperCase()}),(0,U.jsxs)(`div`,{className:`profile-header-meta`,children:[(0,U.jsx)(`p`,{className:`profile-header-name`,children:e||o.email||`User`}),o.email&&(0,U.jsx)(`p`,{className:`profile-header-email`,children:o.email}),(0,U.jsxs)(`div`,{className:`profile-header-actions`,children:[(0,U.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>h.current?.click(),disabled:l,children:l?`Uploading…`:`Upload Photo`}),(0,U.jsx)(`span`,{className:`hint`,children:`Click the picture or use the button to change it. Uploads are saved immediately.`})]}),d&&(0,U.jsx)(`p`,{className:`profile-message-error`,children:d})]})]}),(0,U.jsxs)(`div`,{className:`form-grid single`,children:[(0,U.jsxs)(`div`,{className:`setting-row`,children:[(0,U.jsx)(`label`,{children:`Display name`}),(0,U.jsx)(`div`,{className:`memory-field-container`,children:(0,U.jsx)(`input`,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`Enter your name`})})]}),(0,U.jsxs)(`div`,{className:`setting-row`,children:[(0,U.jsx)(`label`,{children:`Profile image URL`}),(0,U.jsx)(`div`,{className:`memory-field-container`,children:(0,U.jsx)(`input`,{type:`text`,value:n,onChange:e=>r(e.target.value),placeholder:`https://example.com/avatar.png or /api/avatar?key=...`})})]})]})]}),p&&(0,U.jsx)(Nt,{imageSrc:p.imageSrc,fileName:p.fileName,onClose:()=>m(null),onConfirm:async e=>{if(p){u(!0),f(null);try{let t=await i.authUploadAvatar(e,p.fileName);r(t.image||``),c(t),m(null)}catch(e){console.error(`Avatar upload error:`,e),f(`Failed to upload image.`)}finally{u(!1)}}}})]}):(0,U.jsx)(`div`,{className:`tab-pane active animate-fade-in`,children:(0,U.jsx)(`section`,{className:`setting-section`,children:(0,U.jsx)(`p`,{className:`section-description`,children:`Sign in to manage your profile.`})})})}var Rt,U,zt=t((()=>{Rt=e(n()),c(),o(),It(),U=r()})),Bt=t((()=>{zt()})),Vt=t((()=>{}));function Ht({userName:e,setUserName:t,userPreferences:n,setUserPreferences:r}){let i=(0,Ut.useId)(),[a,o]=(0,Ut.useState)(!1),s=(0,Ut.useRef)(null),c=!!n.trim();return(0,W.jsxs)(`div`,{className:`tab-pane active memory-tab`,children:[(0,W.jsxs)(`header`,{className:`memory-intro`,children:[(0,W.jsx)(`p`,{className:`section-kicker`,children:`Across all sessions and projects`}),(0,W.jsx)(`h2`,{children:`What Mint remembers about you`}),(0,W.jsx)(`p`,{children:`Your name and response preferences follow you in CLI, Web, and Desktop.`})]}),(0,W.jsxs)(`section`,{className:`memory-name-section`,"aria-labelledby":`${i}-name-label`,children:[(0,W.jsx)(`label`,{id:`${i}-name-label`,htmlFor:`${i}-name`,children:`What should Mint call you?`}),(0,W.jsx)(`input`,{id:`${i}-name`,type:`text`,autoComplete:`nickname`,value:e,onChange:e=>t(e.target.value),placeholder:`Your name or nickname`,"aria-describedby":`${i}-name-hint`}),(0,W.jsx)(`p`,{id:`${i}-name-hint`,className:`memory-helper`,children:`The name Mint uses when talking with you.`})]}),(0,W.jsxs)(`section`,{className:`memory-instructions-section`,"aria-labelledby":`${i}-instructions-heading`,children:[(0,W.jsxs)(`div`,{className:`memory-section-heading`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{id:`${i}-instructions-heading`,children:`How Mint should respond`}),(0,W.jsx)(`p`,{className:`memory-helper`,children:`Your preferred language, tone, and everyday instructions.`})]}),(0,W.jsx)(`button`,{ref:s,type:`button`,className:`btn-secondary memory-mode-button`,"aria-controls":`${i}-instructions`,onClick:()=>{o(!a),a&&s.current?.focus()},children:a?`Reading view`:c?`Edit instructions`:`Add instructions`})]}),(0,W.jsx)(`div`,{id:`${i}-instructions`,className:`memory-instructions-content`,children:a?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`label`,{className:`memory-editor-label`,htmlFor:`${i}-editor`,children:`Response preferences & instructions`}),(0,W.jsx)(`textarea`,{id:`${i}-editor`,className:`memory-editor`,autoFocus:!0,rows:10,value:n,onChange:e=>r(e.target.value),placeholder:`Talk in Thai.
2
- Keep explanations concise.
3
- Explain coding concepts step by step.`,"aria-describedby":`${i}-edit-hint`}),(0,W.jsx)(`p`,{id:`${i}-edit-hint`,className:`memory-helper`,children:`Write one instruction per line for easier reading. Select Save Settings to save your changes.`})]}):c?(0,W.jsx)(`div`,{className:`memory-reading-frame`,tabIndex:0,role:`region`,"aria-label":`Response preferences and instructions`,children:n}):(0,W.jsxs)(`div`,{className:`memory-empty`,children:[(0,W.jsx)(`p`,{children:`No response preferences added yet.`}),(0,W.jsx)(`p`,{className:`memory-helper`,children:`Add the language, tone, or habits you want Mint to remember.`})]})})]}),(0,W.jsxs)(`aside`,{className:`memory-scope-note`,"aria-label":`About this memory`,children:[(0,W.jsx)(`strong`,{children:`About this memory`}),(0,W.jsx)(`p`,{children:`This page contains your shared profile and preferences. Saved facts, project memory, and conversation history are stored separately.`})]})]})}var Ut,W,Wt=t((()=>{Ut=e(n()),Vt(),W=r()})),Gt=t((()=>{Wt()}));function Kt(e){let[t,n]=(0,qt.useState)(Jt),[r,i]=(0,qt.useState)(!1),a=(0,qt.useRef)(0);return(0,qt.useEffect)(()=>{if(n(Jt),!e.trim())return;let t=++a.current;i(!0),h(e).then(e=>{if(t===a.current&&e&&e.length>0){let t=[...e];for(let e of Jt)t.includes(e)||t.push(e);n(t)}}).catch(()=>{}).finally(()=>{t===a.current&&i(!1)})},[e]),{models:t,loading:r}}var qt,Jt,Yt=t((()=>{qt=e(n()),M(),d(),Jt=[...T]}));function Xt({config:e,updateField:t,apiKey:n}){let[r,i]=(0,Zt.useState)(!1),{models:a,loading:o}=Kt(n),s=r||!a.includes(e.geminiLiveModel);return(0,G.jsx)(`div`,{className:`tab-pane active`,children:(0,G.jsxs)(`section`,{className:`setting-section`,children:[(0,G.jsx)(`div`,{className:`section-heading`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`p`,{className:`section-kicker`,children:`Speech`}),(0,G.jsx)(`h2`,{className:`section-title`,children:`Voice reply`})]})}),(0,G.jsx)(`div`,{className:`toggle-card`,children:(0,G.jsxs)(`div`,{className:`toggle-row`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{children:`Enable voice reply`}),(0,G.jsx)(`p`,{className:`hint`,children:`Speaks responses out loud when enabled.`})]}),(0,G.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:e.enableVoiceReply,onChange:e=>t(`enableVoiceReply`,e.target.checked)}),(0,G.jsx)(`span`,{className:`settings-toggle-slider`})]})]})}),(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsx)(`label`,{children:`Voice engine`}),(0,G.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Voice engine`,children:[{id:`google`,label:`Google Cloud`,title:`Google Cloud (Natural, Auto Lang)`},{id:`native`,label:`OS Native`,title:`OS Native (Supports Pitch)`}].map(n=>(0,G.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.ttsProvider===n.id,title:n.title,className:`pill-segmented-btn ${e.ttsProvider===n.id?`active`:``}`,onClick:()=>t(`ttsProvider`,n.id),children:n.label},n.id))})]}),(0,G.jsx)(`div`,{className:`toggle-card`,children:(0,G.jsxs)(`div`,{className:`toggle-row`,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`label`,{children:`Enable Gemini Live (beta)`}),(0,G.jsx)(`p`,{className:`hint`,children:`Adds real-time voice conversation with Gemini, including running Mint's tools by voice. Requires a Gemini API key.`})]}),(0,G.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,G.jsx)(`input`,{type:`checkbox`,checked:e.voiceMode===`geminiLive`,onChange:e=>t(`voiceMode`,e.target.checked?`geminiLive`:`legacy`)}),(0,G.jsx)(`span`,{className:`settings-toggle-slider`})]})]})}),e.voiceMode===`geminiLive`&&(0,G.jsxs)(`div`,{className:`form-grid single`,children:[(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsxs)(`label`,{children:[`Real-time model`,o&&(0,G.jsx)(`span`,{style:{marginLeft:6,opacity:.5,fontSize:`0.8em`},children:`loading…`})]}),(0,G.jsxs)(A,{"aria-label":`Real-time model`,value:s?`custom`:e.geminiLiveModel,onValueChange:e=>{e===`custom`?i(!0):(i(!1),t(`geminiLiveModel`,e))},children:[a.map(e=>(0,G.jsx)(`option`,{value:e,children:e},e)),(0,G.jsx)(`option`,{value:`custom`,children:`Custom...`})]}),(0,G.jsx)(`p`,{className:`hint`,children:`The model Gemini Live uses for realtime voice conversations. "gemini-3.1-flash-live-preview" requires requesting allowlist access from Google first — if it connects but never responds, try the 2.5 model instead.`})]}),s&&(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsx)(`label`,{children:`Custom real-time model`}),(0,G.jsx)(`input`,{type:`text`,value:e.geminiLiveModel,onChange:e=>t(`geminiLiveModel`,e.target.value),placeholder:`e.g. gemini-2.5-flash-native-audio-preview-12-2025`})]}),(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsx)(`label`,{children:`Live voice`}),(0,G.jsx)(A,{"aria-label":`Live voice`,value:e.geminiLiveVoice,onValueChange:e=>t(`geminiLiveVoice`,e),children:te.map(e=>(0,G.jsx)(`option`,{value:e,children:e},e))}),(0,G.jsx)(`p`,{className:`hint`,children:`The voice Gemini Live speaks with. Can also be changed mid-call from the Live overlay itself.`})]})]}),(0,G.jsxs)(`div`,{className:`slider-stack`,children:[(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsx)(`label`,{children:`Volume`}),(0,G.jsxs)(`div`,{className:`slider-group`,children:[(0,G.jsx)(`input`,{type:`range`,min:`0`,max:`1`,step:`0.1`,value:e.ttsVolume,onChange:e=>t(`ttsVolume`,parseFloat(e.target.value)),className:`range-slider`}),(0,G.jsxs)(`span`,{className:`range-value`,children:[Math.round(e.ttsVolume*100),`%`]})]})]}),(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsx)(`label`,{children:`Speed`}),(0,G.jsxs)(`div`,{className:`slider-group`,children:[(0,G.jsx)(`input`,{type:`range`,min:`0.5`,max:`2`,step:`0.1`,value:e.ttsSpeed,onChange:e=>t(`ttsSpeed`,parseFloat(e.target.value)),className:`range-slider`}),(0,G.jsxs)(`span`,{className:`range-value`,children:[parseFloat(String(e.ttsSpeed)).toFixed(1),`x`]})]})]}),(0,G.jsxs)(`div`,{className:`setting-row`,children:[(0,G.jsx)(`label`,{children:`Pitch`}),(0,G.jsxs)(`div`,{className:`slider-group`,children:[(0,G.jsx)(`input`,{type:`range`,min:`0`,max:`2`,step:`0.1`,value:e.ttsPitch,onChange:e=>t(`ttsPitch`,parseFloat(e.target.value)),className:`range-slider`}),(0,G.jsx)(`span`,{className:`range-value`,children:parseFloat(String(e.ttsPitch)).toFixed(1)})]}),(0,G.jsx)(`p`,{className:`hint`,children:`Pitch applies to OS native voice only.`})]})]})]})})}var Zt,G,Qt=t((()=>{Pe(),Zt=e(n()),M(),Yt(),G=r()})),$t=t((()=>{Qt()}));function en({config:e,updateField:t}){return(0,K.jsxs)(`div`,{className:`tab-pane active`,children:[(0,K.jsxs)(`section`,{className:`setting-section`,children:[(0,K.jsx)(`div`,{className:`section-heading`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`section-kicker`,children:`Browser`}),(0,K.jsxs)(`h2`,{className:`section-title`,style:{display:`flex`,alignItems:`center`,gap:`8px`},children:[(0,K.jsxs)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,K.jsx)(`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`,ry:`2`}),(0,K.jsx)(`line`,{x1:`8`,y1:`21`,x2:`16`,y2:`21`}),(0,K.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12`,y2:`21`})]}),`Automation Engine`]})]})}),(0,K.jsxs)(`div`,{className:`form-grid single`,children:[(0,K.jsxs)(`div`,{className:`setting-row`,children:[(0,K.jsx)(`label`,{children:`Browser engine`}),(0,K.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Browser engine`,children:[{id:`chromium`,label:`Chromium`},{id:`/usr/bin/firefox`,label:`Firefox`}].map(n=>(0,K.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.automationBrowser===n.id,className:`pill-segmented-btn ${e.automationBrowser===n.id?`active`:``}`,onClick:()=>t(`automationBrowser`,n.id),children:n.label},n.id))}),(0,K.jsx)(`p`,{className:`hint`,children:`Chromium is bundled; Firefox uses your system install (Linux).`})]}),(0,K.jsxs)(`div`,{className:`setting-row`,children:[(0,K.jsx)(`label`,{children:`Chromium DevTools endpoint`}),(0,K.jsx)(`input`,{type:`text`,value:e.browserDebugUrl,onChange:e=>t(`browserDebugUrl`,e.target.value)}),(0,K.jsx)(`p`,{className:`hint`,children:`Required for native tab reading and selector clicks.`})]}),(0,K.jsxs)(`div`,{className:`setting-row`,children:[(0,K.jsx)(`label`,{children:`Browser extension context endpoint`}),(0,K.jsx)(`input`,{type:`text`,value:e.browserExtensionContextUrl,onChange:e=>t(`browserExtensionContextUrl`,e.target.value)}),(0,K.jsx)(`p`,{className:`hint`,children:`Fallback endpoint used when Chromium remote debugging is unavailable.`})]})]})]}),(0,K.jsxs)(`section`,{className:`setting-section`,children:[(0,K.jsx)(`div`,{className:`section-heading`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`section-kicker`,children:`Behavior`}),(0,K.jsx)(`h2`,{className:`section-title`,children:`Agent behavior`})]})}),(0,K.jsxs)(`div`,{className:`toggle-card`,children:[(0,K.jsxs)(`div`,{className:`toggle-row`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`label`,{children:`Process queued tasks automatically`}),(0,K.jsx)(`p`,{className:`hint`,children:`Runs pending tasks in the background every 15 seconds.`})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableHeadlessTaskQueue,onChange:e=>t(`enableHeadlessTaskQueue`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,K.jsxs)(`div`,{className:`toggle-row`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`label`,{children:`Suggest a skill after finishing a hard task`}),(0,K.jsx)(`p`,{className:`hint`,children:`Proposes reusable instructions after a multi-step task. Review and approve each change before it is saved.`})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.autoSkillWriting,onChange:e=>t(`autoSkillWriting`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]})]})]}),(0,K.jsxs)(`section`,{className:`setting-section`,children:[(0,K.jsx)(`div`,{className:`section-heading`,children:(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`section-kicker`,children:`Messaging`}),(0,K.jsx)(`h2`,{className:`section-title`,children:`Native channel bridges`})]})}),(0,K.jsxs)(`div`,{className:`bridge-card ${e.enableBridgeAckNotification===!1?``:`active`}`,style:{marginBottom:`16px`},children:[(0,K.jsxs)(`div`,{className:`bridge-card-header`,children:[(0,K.jsxs)(`div`,{className:`bridge-info`,children:[(0,K.jsx)(`div`,{className:`bridge-icon-badge`,style:{background:`linear-gradient(135deg, #10b981 0%, #059669 100%)`},children:(0,K.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,K.jsx)(`polygon`,{points:`13 2 3 14 12 14 11 22 21 10 12 10 13 2`})})}),(0,K.jsxs)(`div`,{className:`bridge-title-group`,children:[(0,K.jsxs)(`span`,{className:`bridge-title`,children:[`Instant Remote Acknowledgement`,(0,K.jsx)(`span`,{className:`bridge-status-pill ${e.enableBridgeAckNotification===!1?`inactive`:`active`}`,children:e.enableBridgeAckNotification===!1?`Disabled`:`Enabled`})]}),(0,K.jsx)(`span`,{className:`bridge-subtitle`,children:`Send instant feedback/typing status when remote commands arrive`})]})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableBridgeAckNotification!==!1,onChange:e=>t(`enableBridgeAckNotification`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),e.enableBridgeAckNotification!==!1&&(0,K.jsx)(`div`,{className:`bridge-inputs`,children:(0,K.jsx)(`input`,{type:`text`,className:`bridge-input`,placeholder:`Instant Ack Message (default: [Mint Agent] Remote command received, processing...)`,value:e.bridgeAckMessage||``,onChange:e=>t(`bridgeAckMessage`,e.target.value)})})]}),(0,K.jsxs)(`div`,{className:`bridge-cards-container`,children:[(0,K.jsxs)(`div`,{className:`bridge-card ${e.enableTelegramBridge?`active`:``}`,children:[(0,K.jsxs)(`div`,{className:`bridge-card-header`,children:[(0,K.jsxs)(`div`,{className:`bridge-info`,children:[(0,K.jsx)(`div`,{className:`bridge-icon-badge bridge-icon-telegram`,children:(0,K.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,K.jsx)(`path`,{d:`M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm4.64 6.8c-.15 1.58-.8 5.42-1.13 7.19-.14.75-.42 1-.68 1.03-.58.05-1.02-.38-1.58-.75-.88-.58-1.38-.94-2.23-1.5-.99-.65-.35-1.01.22-1.59.15-.15 2.71-2.48 2.76-2.69.01-.03.01-.14-.07-.2-.08-.06-.19-.04-.27-.02-.12.02-1.96 1.25-5.54 3.69-.52.36-1 .54-1.42.53-.47-.01-1.37-.26-2.03-.48-.82-.27-1.47-.42-1.42-.88.03-.25.38-.51 1.07-.78 4.18-1.82 6.97-3.02 8.37-3.61 3.98-1.66 4.81-1.95 5.35-1.96.12 0 .38.03.55.17.14.12.18.28.2.4.02.11.02.26.01.39z`})})}),(0,K.jsxs)(`div`,{className:`bridge-title-group`,children:[(0,K.jsxs)(`span`,{className:`bridge-title`,children:[`Telegram Bot API`,(0,K.jsx)(`span`,{className:`bridge-status-pill ${e.enableTelegramBridge?`active`:`inactive`}`,children:e.enableTelegramBridge?`Active`:`Disabled`})]}),(0,K.jsx)(`span`,{className:`bridge-subtitle`,children:`Long polling engine (getUpdates)`})]})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableTelegramBridge,onChange:e=>t(`enableTelegramBridge`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,K.jsx)(`div`,{className:`bridge-inputs`,children:(0,K.jsx)(I,{className:`bridge-input`,placeholder:`Telegram Bot Token (from @BotFather)`,value:e.telegramBotToken,onChange:e=>t(`telegramBotToken`,e)})})]}),(0,K.jsxs)(`div`,{className:`bridge-card ${e.enableDiscordBridge?`active`:``}`,children:[(0,K.jsxs)(`div`,{className:`bridge-card-header`,children:[(0,K.jsxs)(`div`,{className:`bridge-info`,children:[(0,K.jsx)(`div`,{className:`bridge-icon-badge bridge-icon-discord`,children:(0,K.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,K.jsx)(`path`,{d:`M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.061 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.893.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.028zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z`})})}),(0,K.jsxs)(`div`,{className:`bridge-title-group`,children:[(0,K.jsxs)(`span`,{className:`bridge-title`,children:[`Discord Gateway`,(0,K.jsx)(`span`,{className:`bridge-status-pill ${e.enableDiscordBridge?`active`:`inactive`}`,children:e.enableDiscordBridge?`Active`:`Disabled`})]}),(0,K.jsx)(`span`,{className:`bridge-subtitle`,children:`WebSocket Gateway (wss://gateway.discord.gg)`})]})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableDiscordBridge,onChange:e=>t(`enableDiscordBridge`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,K.jsxs)(`div`,{className:`bridge-inputs`,children:[(0,K.jsx)(I,{className:`bridge-input`,placeholder:`Discord Bot Token`,value:e.discordBotToken,onChange:e=>t(`discordBotToken`,e)}),(0,K.jsx)(`input`,{type:`text`,className:`bridge-input`,placeholder:`Discord Application ID (for Rich Presence)`,value:e.discordApplicationId,onChange:e=>t(`discordApplicationId`,e.target.value)})]})]}),(0,K.jsxs)(`div`,{className:`bridge-card ${e.enableSlackBridge?`active`:``}`,children:[(0,K.jsxs)(`div`,{className:`bridge-card-header`,children:[(0,K.jsxs)(`div`,{className:`bridge-info`,children:[(0,K.jsx)(`div`,{className:`bridge-icon-badge bridge-icon-slack`,children:(0,K.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,K.jsx)(`path`,{d:`M6 15a2.5 2.5 0 0 1-2.5-2.5A2.5 2.5 0 0 1 6 10h2.5v2.5A2.5 2.5 0 0 1 6 15zm0-8.5A2.5 2.5 0 0 1 3.5 4 2.5 2.5 0 0 1 6 1.5 2.5 2.5 0 0 1 8.5 4v2.5H6zm8.5 0A2.5 2.5 0 0 1 12 4a2.5 2.5 0 0 1 2.5-2.5A2.5 2.5 0 0 1 17 4v2.5h-2.5zm0 8.5a2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5A2.5 2.5 0 0 1 12 17.5V15h2.5zm-8.5 2.5A2.5 2.5 0 0 1 6 20a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5H8.5V17.5zm8.5-8.5A2.5 2.5 0 0 1 17 6.5 2.5 2.5 0 0 1 19.5 9 2.5 2.5 0 0 1 17 11.5H14.5V9zm-2.5-2.5a2.5 2.5 0 0 1-2.5-2.5A2.5 2.5 0 0 1 12 1.5a2.5 2.5 0 0 1 2.5 2.5V6.5H12z`})})}),(0,K.jsxs)(`div`,{className:`bridge-title-group`,children:[(0,K.jsxs)(`span`,{className:`bridge-title`,children:[`Slack Socket Mode`,(0,K.jsx)(`span`,{className:`bridge-status-pill ${e.enableSlackBridge?`active`:`inactive`}`,children:e.enableSlackBridge?`Active`:`Disabled`})]}),(0,K.jsx)(`span`,{className:`bridge-subtitle`,children:`WebSocket Socket Mode API`})]})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableSlackBridge,onChange:e=>t(`enableSlackBridge`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,K.jsxs)(`div`,{className:`bridge-inputs`,children:[(0,K.jsx)(I,{className:`bridge-input`,placeholder:`Slack Bot Token (xoxb-...)`,value:e.slackBotToken,onChange:e=>t(`slackBotToken`,e)}),(0,K.jsx)(I,{className:`bridge-input`,placeholder:`Slack App Token (xapp-...)`,value:e.slackAppToken,onChange:e=>t(`slackAppToken`,e)})]})]}),(0,K.jsxs)(`div`,{className:`bridge-card ${e.enableLineBridge?`active`:``}`,children:[(0,K.jsxs)(`div`,{className:`bridge-card-header`,children:[(0,K.jsxs)(`div`,{className:`bridge-info`,children:[(0,K.jsx)(`div`,{className:`bridge-icon-badge bridge-icon-line`,children:(0,K.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,K.jsx)(`path`,{d:`M19.365 9.863c.349 0 .63.285.63.631 0 .345-.281.63-.63.63h-2.286v1.442h2.286c.349 0 .63.285.63.63 0 .346-.281.63-.63.63h-2.917c-.349 0-.63-.284-.63-.63V8.581c0-.346.281-.63.63-.63h2.917c.349 0 .63.284.63.63 0 .346-.281.63-.63.63h-2.286V9.86h2.286zm-5.631 4.156c0 .248-.146.472-.371.57-.083.036-.172.054-.26.054-.154 0-.306-.056-.425-.165l-2.481-3.238v2.783c0 .346-.28.63-.63.63-.348 0-.63-.284-.63-.63V8.581c0-.248.146-.472.371-.57.225-.098.486-.051.664.12l2.48 3.237V8.581c0-.346.28-.63.63-.63.349 0 .63.284.63.63v5.438zm-6.843 0c0 .346-.28.63-.63.63-.349 0-.63-.284-.63-.63V8.581c0-.346.281-.63.63-.63.35 0 .63.284.63.63v5.438zm-2.434 0c0 .346-.28.63-.63.63h-2.417c-.349 0-.63-.284-.63-.63V8.581c0-.346.281-.63.63-.63.349 0 .63.284.63.63v4.808h1.787c.349 0 .63.285.63.63zM24 10.617C24 4.754 18.627 0 12 0S0 4.754 0 10.617c0 5.247 4.264 9.61 10.02 10.435.39.084.922.257 1.057.592.121.3.079.77.039 1.074l-.17.994c-.052.304-.247 1.191 1.044.649 1.292-.542 6.974-4.107 9.513-7.032C23.013 15.602 24 13.23 24 10.617z`})})}),(0,K.jsxs)(`div`,{className:`bridge-title-group`,children:[(0,K.jsxs)(`span`,{className:`bridge-title`,children:[`LINE Messaging Webhook`,(0,K.jsx)(`span`,{className:`bridge-status-pill ${e.enableLineBridge?`active`:`inactive`}`,children:e.enableLineBridge?`Active`:`Disabled`})]}),(0,K.jsx)(`span`,{className:`bridge-subtitle`,children:`HTTP Webhook Listener (Callback)`})]})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableLineBridge,onChange:e=>t(`enableLineBridge`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,K.jsxs)(`div`,{className:`bridge-inputs`,children:[(0,K.jsx)(I,{className:`bridge-input`,placeholder:`LINE Channel Access Token`,value:e.lineChannelAccessToken,onChange:e=>t(`lineChannelAccessToken`,e)}),(0,K.jsx)(I,{className:`bridge-input`,placeholder:`LINE Channel Secret`,value:e.lineChannelSecret,onChange:e=>t(`lineChannelSecret`,e)}),(0,K.jsxs)(`div`,{className:`bridge-input-row`,children:[(0,K.jsx)(`input`,{type:`text`,className:`bridge-input`,placeholder:`Webhook Host (default: 127.0.0.1)`,value:e.lineWebhookHost||``,onChange:e=>t(`lineWebhookHost`,e.target.value)}),(0,K.jsx)(`input`,{type:`number`,className:`bridge-input`,placeholder:`Port`,value:e.lineWebhookPort||3e3,onChange:e=>t(`lineWebhookPort`,parseInt(e.target.value)||3e3),style:{width:`120px`}})]})]})]}),(0,K.jsxs)(`div`,{className:`bridge-card ${e.enableWhatsappBridge?`active`:``}`,children:[(0,K.jsxs)(`div`,{className:`bridge-card-header`,children:[(0,K.jsxs)(`div`,{className:`bridge-info`,children:[(0,K.jsx)(`div`,{className:`bridge-icon-badge bridge-icon-whatsapp`,children:(0,K.jsx)(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,K.jsx)(`path`,{d:`M.057 24l1.687-6.163c-1.041-1.804-1.588-3.849-1.587-5.946.003-6.556 5.338-11.891 11.893-11.891 3.181.001 6.167 1.24 8.413 3.488 2.245 2.248 3.481 5.236 3.48 8.414-.003 6.557-5.338 11.892-11.893 11.892-1.99-.001-3.951-.5-5.688-1.448l-6.305 1.654zm6.597-3.807c1.676.995 3.276 1.591 5.392 1.592 5.448 0 9.886-4.434 9.889-9.885.002-5.462-4.415-9.89-9.881-9.892-5.452 0-9.887 4.434-9.889 9.884-.001 2.225.651 3.891 1.746 5.634l-.999 3.648 3.742-.981zm11.387-5.464c-.301-.15-1.785-.881-2.062-.982-.276-.101-.477-.15-.677.15-.199.301-.776.982-.952 1.182-.175.201-.351.226-.652.076-.301-.15-1.27-.468-2.42-1.494-.897-.8-1.502-1.788-1.678-2.09-.175-.301-.019-.464.131-.613.136-.135.301-.351.451-.526.15-.176.2-.301.3-.502.1-.201.05-.376-.025-.526-.075-.15-.677-1.631-.928-2.235-.244-.587-.492-.507-.676-.517-.175-.008-.376-.01-.576-.01-.201 0-.526.075-.802.376-.276.301-1.053 1.029-1.053 2.509 0 1.48 1.078 2.909 1.229 3.11.15.201 2.122 3.241 5.141 4.544.718.31 1.279.495 1.716.634.721.229 1.377.197 1.896.12.578-.086 1.785-.729 2.036-1.431.25-.702.25-1.304.175-1.431-.075-.127-.276-.201-.577-.352z`})})}),(0,K.jsxs)(`div`,{className:`bridge-title-group`,children:[(0,K.jsxs)(`span`,{className:`bridge-title`,children:[`WhatsApp Cloud API`,(0,K.jsx)(`span`,{className:`bridge-status-pill ${e.enableWhatsappBridge?`active`:`inactive`}`,children:e.enableWhatsappBridge?`Active`:`Disabled`})]}),(0,K.jsx)(`span`,{className:`bridge-subtitle`,children:`Meta Cloud API webhook listener`})]})]}),(0,K.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,K.jsx)(`input`,{type:`checkbox`,checked:e.enableWhatsappBridge,onChange:e=>t(`enableWhatsappBridge`,e.target.checked)}),(0,K.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,K.jsxs)(`div`,{className:`bridge-inputs`,children:[(0,K.jsx)(I,{className:`bridge-input`,placeholder:`WhatsApp Cloud Access Token`,value:e.whatsappCloudAccessToken,onChange:e=>t(`whatsappCloudAccessToken`,e)}),(0,K.jsx)(`input`,{type:`text`,className:`bridge-input`,placeholder:`WhatsApp Phone Number ID`,value:e.whatsappPhoneNumberId,onChange:e=>t(`whatsappPhoneNumberId`,e.target.value)}),(0,K.jsx)(I,{className:`bridge-input`,placeholder:`WhatsApp Verify Token`,value:e.whatsappVerifyToken,onChange:e=>t(`whatsappVerifyToken`,e)}),(0,K.jsx)(I,{className:`bridge-input`,placeholder:`WhatsApp App Secret (optional HMAC validation)`,value:e.whatsappAppSecret,onChange:e=>t(`whatsappAppSecret`,e)}),(0,K.jsxs)(`div`,{className:`bridge-input-row`,children:[(0,K.jsx)(`input`,{type:`text`,className:`bridge-input`,placeholder:`Webhook Host (default: 127.0.0.1)`,value:e.whatsappWebhookHost||``,onChange:e=>t(`whatsappWebhookHost`,e.target.value)}),(0,K.jsx)(`input`,{type:`number`,className:`bridge-input`,placeholder:`Port`,value:e.whatsappWebhookPort||3001,onChange:e=>t(`whatsappWebhookPort`,parseInt(e.target.value)||3001),style:{width:`120px`}})]})]})]})]})]})]})}var K,tn=t((()=>{n(),yt(),K=r()})),nn=t((()=>{tn()})),rn,an,on=t((()=>{rn=[{id:`mint`,name:`Mint`,color:`#10b981`,contrastText:`#ffffff`,description:`Emerald brand signature`},{id:`cyan`,name:`Cyan`,color:`#06b6d4`,contrastText:`#ffffff`,description:`Electric tech cyan`},{id:`indigo`,name:`Indigo`,color:`#6366f1`,contrastText:`#ffffff`,description:`Refined violet blue`},{id:`amber`,name:`Amber`,color:`#f59e0b`,contrastText:`#0a0a0b`,description:`Warm solar gold`},{id:`rose`,name:`Rose`,color:`#f43f5e`,contrastText:`#ffffff`,description:`Vivid energized berry`},{id:`monochrome`,name:`Monochrome`,color:`#ffffff`,contrastText:`#09090b`,description:`Minimalist black & white`}],an=[{id:`preset-dark-mint`,name:`Dark Mint`,description:`Black background · Green elements · White text`,theme:`dark`,accentColor:`#10b981`,systemTextColor:`#f8fafc`,chatTextColor:`#f8fafc`,bgPreview:`#0a0a0c`,panelPreview:`#18181b`,accentPreview:`#10b981`,textPreview:`#f8fafc`},{id:`preset-light-mint`,name:`Light Mint`,description:`Soft gray background · Green elements · High-contrast text`,theme:`light`,accentColor:`#10b981`,systemTextColor:`#0f172a`,chatTextColor:`#0f172a`,bgPreview:`#f0f2f5`,panelPreview:`#ffffff`,accentPreview:`#10b981`,textPreview:`#0f172a`},{id:`preset-dark-mono`,name:`Dark Monochrome`,description:`Black background · White elements · White text`,theme:`dark`,accentColor:`#ffffff`,systemTextColor:`#f8fafc`,chatTextColor:`#f8fafc`,bgPreview:`#0a0a0c`,panelPreview:`#18181b`,accentPreview:`#ffffff`,textPreview:`#f8fafc`}]}));function sn({config:e,updateField:t,updateFields:n}){let[r,i]=(0,cn.useState)(!1),a=t=>e.theme===t.theme?(e.accentColor||``).toLowerCase()===t.accentColor.toLowerCase():!1,o=e=>{let r={theme:e.theme,accentColor:e.accentColor,systemTextColor:e.systemTextColor,chatTextColor:e.chatTextColor,surfaceStyle:e.theme===`light`?`opaque`:`glass`};n?n(r):(t(`theme`,e.theme),t(`accentColor`,e.accentColor),t(`systemTextColor`,e.systemTextColor),t(`chatTextColor`,e.chatTextColor),t(`surfaceStyle`,r.surfaceStyle))},s=e=>{n?n({accentColor:e.color}):t(`accentColor`,e.color)},c=[{id:`system`,name:`System`,description:`Auto-sync with OS`,icon:(0,q.jsxs)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`,ry:`2`}),(0,q.jsx)(`line`,{x1:`8`,y1:`21`,x2:`16`,y2:`21`}),(0,q.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12`,y2:`21`})]})},{id:`dark`,name:`Dark`,description:`Deep slate comfort`,icon:(0,q.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`path`,{d:`M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z`})})},{id:`light`,name:`Light`,description:`Crisp daylight clarity`,icon:(0,q.jsxs)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`circle`,{cx:`12`,cy:`12`,r:`5`}),(0,q.jsx)(`line`,{x1:`12`,y1:`1`,x2:`12`,y2:`3`}),(0,q.jsx)(`line`,{x1:`12`,y1:`21`,x2:`12`,y2:`23`}),(0,q.jsx)(`line`,{x1:`4.22`,y1:`4.22`,x2:`5.64`,y2:`5.64`}),(0,q.jsx)(`line`,{x1:`18.36`,y1:`18.36`,x2:`19.78`,y2:`19.78`}),(0,q.jsx)(`line`,{x1:`1`,y1:`12`,x2:`3`,y2:`12`}),(0,q.jsx)(`line`,{x1:`21`,y1:`12`,x2:`23`,y2:`12`}),(0,q.jsx)(`line`,{x1:`4.22`,y1:`19.78`,x2:`5.64`,y2:`18.36`}),(0,q.jsx)(`line`,{x1:`18.36`,y1:`5.64`,x2:`19.78`,y2:`4.22`})]})},{id:`midnight`,name:`Midnight`,description:`OLED pure black`,icon:(0,q.jsx)(`svg`,{width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`polygon`,{points:`12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2`})})}],l=(e.accentColor||``).toLowerCase();return(0,q.jsxs)(`div`,{className:`tab-pane active`,children:[(0,q.jsxs)(`section`,{className:`setting-section`,children:[(0,q.jsx)(`div`,{className:`section-heading`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`section-kicker`,children:`Appearance`}),(0,q.jsx)(`h2`,{className:`section-title`,children:`Theme presets`}),(0,q.jsx)(`p`,{className:`section-subtitle`,children:`Curated, complete visual profiles ready in one click`})]})}),(0,q.jsx)(`div`,{className:`theme-preset-grid`,role:`radiogroup`,"aria-label":`Theme presets`,children:an.map((e,t)=>{let n=a(e);return(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,className:`theme-preset-card ${n?`active`:``}`,onClick:()=>o(e),children:[(0,q.jsx)(`div`,{className:`theme-preset-preview`,style:{background:e.bgPreview},children:(0,q.jsxs)(`div`,{className:`preset-mini-window`,style:{background:e.panelPreview},children:[(0,q.jsxs)(`div`,{className:`preset-mini-header`,children:[(0,q.jsx)(`span`,{className:`preset-mini-dot dot-red`}),(0,q.jsx)(`span`,{className:`preset-mini-dot dot-yellow`}),(0,q.jsx)(`span`,{className:`preset-mini-dot dot-green`}),(0,q.jsx)(`span`,{className:`preset-mini-pill`,style:{background:e.accentPreview,color:e.accentPreview===`#ffffff`?`#0a0a0b`:`#ffffff`},children:`Mint`})]}),(0,q.jsxs)(`div`,{className:`preset-mini-body`,children:[(0,q.jsx)(`div`,{className:`preset-mini-text`,style:{color:e.textPreview},children:`Aa`}),(0,q.jsxs)(`div`,{className:`preset-mini-lines`,children:[(0,q.jsx)(`span`,{className:`preset-mini-line-main`,style:{background:e.textPreview,opacity:.85}}),(0,q.jsx)(`span`,{className:`preset-mini-line-accent`,style:{background:e.accentPreview}})]})]})]})}),(0,q.jsxs)(`div`,{className:`theme-preset-meta`,children:[(0,q.jsxs)(`div`,{className:`theme-preset-title-row`,children:[(0,q.jsxs)(`span`,{className:`theme-preset-number`,children:[t+1,`.`]}),(0,q.jsx)(`span`,{className:`theme-preset-title`,children:e.name}),n&&(0,q.jsx)(`span`,{className:`theme-preset-active-check`,title:`Active preset`,children:(0,q.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})})]}),(0,q.jsx)(`p`,{className:`theme-preset-desc`,children:e.description})]})]},e.id)})})]}),(0,q.jsxs)(`section`,{className:`setting-section`,children:[(0,q.jsx)(`div`,{className:`section-heading`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`section-kicker`,children:`Core system`}),(0,q.jsx)(`h2`,{className:`section-title`,children:`Color mode & accent`})]})}),(0,q.jsxs)(`div`,{className:`form-grid`,children:[(0,q.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,q.jsx)(`label`,{children:`Color mode`}),(0,q.jsx)(`div`,{className:`color-mode-grid`,role:`radiogroup`,"aria-label":`Color mode`,children:c.map(r=>{let i=(e.theme||`dark`)===r.id;return(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":i,className:`color-mode-card ${i?`active`:``}`,onClick:()=>{r.id===`light`?n?n({theme:`light`,surfaceStyle:`opaque`}):(t(`theme`,`light`),t(`surfaceStyle`,`opaque`)):t(`theme`,r.id)},children:[(0,q.jsx)(`div`,{className:`mode-card-icon`,children:r.icon}),(0,q.jsxs)(`div`,{className:`mode-card-text`,children:[(0,q.jsx)(`span`,{className:`mode-card-title`,children:r.name}),(0,q.jsx)(`span`,{className:`mode-card-desc`,children:r.description})]}),i&&(0,q.jsx)(`span`,{className:`mode-card-badge`,children:(0,q.jsx)(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})})]},r.id)})})]}),(0,q.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,q.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,q.jsx)(`label`,{children:`Accent flavor`}),(0,q.jsx)(`button`,{type:`button`,className:`custom-accent-toggle`,onClick:()=>i(!r),children:r?`Use Curated Flavors`:`Custom Hex...`})]}),r?(0,q.jsxs)(`div`,{className:`custom-accent-box`,children:[(0,q.jsx)(`input`,{type:`color`,value:e.accentColor||`#10b981`,onChange:e=>t(`accentColor`,e.target.value),className:`custom-accent-input`}),(0,q.jsx)(`span`,{className:`custom-accent-value`,children:e.accentColor||`#10b981`})]}):(0,q.jsx)(`div`,{className:`flavor-grid`,role:`radiogroup`,"aria-label":`Accent flavors`,children:rn.map(e=>{let t=l===e.color.toLowerCase(),n=e.color.toLowerCase()===`#ffffff`;return(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":t,className:`flavor-card ${t?`active`:``}`,onClick:()=>s(e),title:e.description,children:[(0,q.jsx)(`span`,{className:`flavor-swatch`,style:{background:e.color,border:n?`1px solid rgba(0,0,0,0.2)`:`none`},children:t&&(0,q.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:e.contrastText,strokeWidth:`3.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})}),(0,q.jsx)(`span`,{className:`flavor-name`,children:e.name})]},e.id)})})]}),(0,q.jsxs)(`div`,{className:`toggle-row reduced-effects-row`,children:[(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`label`,{id:`reduced-effects-label`,htmlFor:`reduced-effects`,children:`Reduce effects`}),(0,q.jsx)(`p`,{className:`hint`,children:`Keep the background and orb still. Also follows your system’s reduced motion preference.`})]}),(0,q.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,q.jsx)(`input`,{id:`reduced-effects`,type:`checkbox`,role:`switch`,"aria-labelledby":`reduced-effects-label`,checked:e.reducedEffects===!0,onChange:e=>t(`reducedEffects`,e.target.checked)}),(0,q.jsx)(`span`,{className:`settings-toggle-slider`,"aria-hidden":`true`})]})]}),(0,q.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,q.jsx)(`label`,{children:`Surface style`}),(0,q.jsxs)(`div`,{className:`surface-style-grid`,role:`radiogroup`,"aria-label":`Surface style`,children:[(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":(e.surfaceStyle||`glass`)===`opaque`||e.glassBlur===`none`,className:`surface-card ${e.surfaceStyle===`opaque`||e.glassBlur===`none`?`active`:``}`,onClick:()=>{n?n({surfaceStyle:`opaque`,glassBlur:`none`}):(t(`surfaceStyle`,`opaque`),t(`glassBlur`,`none`))},children:[(0,q.jsx)(`span`,{className:`surface-card-title`,children:`Opaque`}),(0,q.jsx)(`span`,{className:`surface-card-desc`,children:`Solid surfaces, maximal readability & zero bleed-through`})]}),(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":(e.surfaceStyle||`glass`)===`glass`&&e.glassBlur!==`none`,className:`surface-card ${e.surfaceStyle!==`opaque`&&e.glassBlur!==`none`?`active`:``}`,onClick:()=>{n?n({surfaceStyle:`glass`,glassBlur:`blur(16px)`}):(t(`surfaceStyle`,`glass`),t(`glassBlur`,`blur(16px)`))},children:[(0,q.jsx)(`span`,{className:`surface-card-title`,children:`Glassmorphism`}),(0,q.jsx)(`span`,{className:`surface-card-desc`,children:`Frosted translucent panels with protected modal overlays`})]})]})]}),e.surfaceStyle!==`opaque`&&e.glassBlur!==`none`&&(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Blur intensity`}),(0,q.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Glass Blur intensity`,children:[{id:`blur(4px)`,label:`Low`},{id:`blur(16px)`,label:`Medium`},{id:`blur(32px)`,label:`High`}].map(n=>(0,q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.glassBlur===n.id,className:`pill-segmented-btn ${e.glassBlur===n.id?`active`:``}`,onClick:()=>t(`glassBlur`,n.id),children:n.label},n.id))})]})]})]}),(0,q.jsxs)(`section`,{className:`setting-section`,children:[(0,q.jsx)(`div`,{className:`section-heading`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`section-kicker`,children:`Terminal`}),(0,q.jsx)(`h2`,{className:`section-title`,children:`TUI theme`}),(0,q.jsx)(`p`,{className:`section-subtitle`,children:`Choose the appearance of Mint Agent in your terminal independently of Web and Desktop.`})]})}),(0,q.jsx)(`div`,{className:`tui-theme-grid`,role:`radiogroup`,"aria-label":`TUI theme`,children:[{id:`system`,name:`Auto`,description:`Use terminal colors`},{id:`dark`,name:`Dark`,description:`Dark terminal palette`},{id:`light`,name:`Light`,description:`Light terminal palette`}].map(n=>{let r=e.tuiTheme===n.id;return(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":r,className:`tui-theme-card ${r?`active`:``}`,onClick:()=>t(`tuiTheme`,n.id),children:[(0,q.jsxs)(`span`,{className:`tui-theme-preview`,"data-tui-theme":n.id,"aria-hidden":`true`,children:[(0,q.jsxs)(`span`,{className:`tui-theme-code-row`,children:[(0,q.jsx)(`span`,{className:`tui-theme-code-gutter`,children:`1\xA0\xA0`}),(0,q.jsx)(`span`,{className:`tui-theme-code-keyword`,children:`fn`}),` greet() {`]}),(0,q.jsxs)(`span`,{className:`tui-theme-code-row tui-theme-code-removed`,children:[(0,q.jsx)(`span`,{className:`tui-theme-code-gutter`,children:`2 -`}),` println!("Hello, World!");`]}),(0,q.jsxs)(`span`,{className:`tui-theme-code-row tui-theme-code-added`,children:[(0,q.jsx)(`span`,{className:`tui-theme-code-gutter`,children:`2 +`}),` println!("Hello, Mint!");`]}),(0,q.jsxs)(`span`,{className:`tui-theme-code-row`,children:[(0,q.jsx)(`span`,{className:`tui-theme-code-gutter`,children:`3\xA0\xA0`}),`}`]})]}),(0,q.jsxs)(`span`,{className:`tui-theme-card-label`,children:[n.name,r&&(0,q.jsx)(`span`,{"aria-hidden":`true`,children:` ✓`})]}),(0,q.jsx)(`span`,{className:`tui-theme-card-description`,children:n.description})]},n.id)})}),(0,q.jsx)(`p`,{className:`tui-theme-hint`,children:`A new TUI session uses this setting. In an open session, use /theme to change it immediately.`})]}),(0,q.jsxs)(`section`,{className:`setting-section`,children:[(0,q.jsx)(`div`,{className:`section-heading`,children:(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`section-kicker`,children:`Typography`}),(0,q.jsx)(`h2`,{className:`section-title`,children:`Font & Scale`})]})}),(0,q.jsxs)(`div`,{className:`form-grid`,children:[(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Font family`}),(0,q.jsxs)(A,{"aria-label":`Font family`,value:e.fontFamily,onValueChange:e=>t(`fontFamily`,e),children:[(0,q.jsx)(`option`,{value:`'IBM Plex Sans Thai', 'Noto Sans Thai', 'Inter', ui-sans-serif, system-ui, sans-serif`,children:`IBM Plex Sans Thai (Default)`}),(0,q.jsx)(`option`,{value:`'Inter', 'Noto Sans Thai', ui-sans-serif, system-ui, sans-serif`,children:`Inter + Noto Sans Thai`}),(0,q.jsx)(`option`,{value:`'Noto Sans Thai', 'Inter', ui-sans-serif, system-ui, sans-serif`,children:`Noto Sans Thai`}),(0,q.jsx)(`option`,{value:`'Fira Code', monospace`,children:`Fira Code (developer code font)`})]})]}),(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Font size`}),(0,q.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Font size`,children:[{id:`14px`,label:`Compact`},{id:`16px`,label:`Default`},{id:`18px`,label:`Large`},{id:`22px`,label:`XL`},{id:`26px`,label:`XXL`},{id:`30px`,label:`XXXL`}].map(n=>(0,q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":e.fontSize===n.id,className:`pill-segmented-btn ${e.fontSize===n.id?`active`:``}`,onClick:()=>t(`fontSize`,n.id),children:n.label},n.id))})]})]})]})]})}var cn,q,ln=t((()=>{Pe(),cn=e(n()),on(),q=r()})),un=t((()=>{ln()}));function dn(e){return!!(e.is_workspace||e.location===`workspace`)}function fn({config:e,updateField:t,mcpName:n,setMcpName:r,mcpCmd:i,setMcpCmd:a,mcpArgs:o,setMcpArgs:s,mcpEnv:c,setMcpEnv:l,mcpIcon:u=``,setMcpIcon:d,handleAddMcpServer:f,handleRemoveMcpServer:p,handleConnectPlugin:m}){let[h,g]=(0,J.useState)([]),[_,v]=(0,J.useState)(``),[y,b]=(0,J.useState)(``),[x,S]=(0,J.useState)(!1),[C,w]=(0,J.useState)(``),[T,ee]=(0,J.useState)({docker:!1,git:!1,gh:!1,node:!1}),[te,O]=(0,J.useState)(!1),[k,ne]=(0,J.useState)([]),[re,ie]=(0,J.useState)(null),[ae,oe]=(0,J.useState)(null),[se,ce]=(0,J.useState)(null),[le,ue]=(0,J.useState)(!1);(0,J.useEffect)(()=>{pe(),j(),A();let e=Ve(()=>{A()});return()=>{e()}},[]);let A=async()=>{try{ne(await Je())}catch(e){console.error(`Failed to fetch OAuth statuses:`,e)}},de=async(t,n)=>{if(t===`spotify`&&!e.spotifyClientId?.trim()){oe(n||`spotify`),alert(`Please click "Configure" below and enter your Spotify Client ID before signing in (Get it from developer.spotify.com/dashboard)`);return}if(t===`github`&&!e.githubClientId?.trim()&&!e.githubToken?.trim()){oe(n||`github`),alert(`Please click "Configure" below and enter your GitHub Client ID (or Personal Access Token) before signing in.`);return}if(t===`vercel`&&!e.vercelClientId?.trim()&&!e.vercelToken?.trim()){oe(n||`vercel`),alert(`Please click "Configure" below and enter your Vercel Client ID (or Access Token) before signing in.`);return}if((t===`google`||t===`gmail`||t===`google_calendar`)&&!e.gmailClientId?.trim()&&!e.googleCalendarClientId?.trim()){oe(n||`gmail`),alert(`Please click "Configure" below and enter your Google Client ID before signing in.`);return}ie(t);try{await Ue(t)}catch(e){console.error(`OAuth login error for ${t}:`,e)}finally{ie(null),A()}},fe=async e=>{try{await Ke(e),await A()}catch(t){console.error(`OAuth revoke error for ${e}:`,t)}},pe=async()=>{S(!0),w(``);try{g(await pn(window.localStorage.getItem(`mint:last-workspace-path`)||void 0))}catch(e){console.error(`Failed to fetch learned skills:`,e),w(`Failed to load learned skills`)}finally{S(!1)}},j=async()=>{O(!0);try{ee(await gn())}catch(e){console.error(`Failed to detect system tools:`,e)}finally{O(!1)}},me=async e=>{if(e.preventDefault(),!(!_.trim()||!y.trim()))try{await mn(_.trim(),y.trim()),v(``),b(``),pe()}catch(e){console.error(`Failed to add learned skill:`,e),alert(`Error saving skill`)}},he=async e=>{if(confirm(`Are you sure you want to forget skill "${e}"?`))try{await hn(e),pe()}catch(e){console.error(`Failed to delete skill:`,e),alert(`Error deleting skill`)}},ge=(n,r,i)=>{let a={...e.mcpServers||{}};a[n]&&(a[n]={...a[n],[r]:i},t(`mcpServers`,a))},_e=e=>{oe(t=>t===e?null:e)},ve=D,ye=(n,r,i,a)=>{let o={...e.mcpServers||{}};o[n]?o[n]={...o[n],disabled:!r}:r&&i&&(o[n]={command:i,args:a||[],env:{},disabled:!1}),t(`mcpServers`,o)},M=[];return Object.entries(e.mcpServers||{}).forEach(([e,t])=>{let n=`🔌`;e===`docker`&&(n=`🐳`),(e===`git`||e===`github`)&&(n=`🐙`),M.push({name:e,command:t.command,args:t.args||[],icon:n,customIcon:t.icon,isEnabled:t?.disabled!==!0,isConfigured:!0,description:`Command: ${t.command} ${(t.args||[]).join(` `)}`})}),T.docker&&!e.mcpServers?.docker&&M.push({name:`docker`,command:`npx`,args:[`-y`,`@proxeus/mcp-docker-server`],icon:`🐳`,isEnabled:!1,isConfigured:!1,description:`Docker MCP Server (Discovered)`}),T.git&&!e.mcpServers?.git&&M.push({name:`git`,command:`npx`,args:[`-y`,`@modelcontextprotocol/server-git`],icon:`🐙`,isEnabled:!1,isConfigured:!1,description:`Git MCP Server (Discovered)`}),(0,Y.jsxs)(`div`,{className:`tab-pane active`,children:[(0,Y.jsxs)(`section`,{className:`setting-section`,children:[(0,Y.jsx)(`div`,{className:`section-heading`,children:(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`section-kicker`,children:`Knowledge base`}),(0,Y.jsx)(`h2`,{className:`section-title`,children:`Learned AI Skills`})]})}),h.length===0?(0,Y.jsxs)(`div`,{className:`empty-skills-notice`,children:[`No learned skills found. Teach Mint a skill below or run `,(0,Y.jsx)(`code`,{children:`/learn`}),` in chat.`]}):(0,Y.jsx)(`div`,{className:`skills-list`,children:h.map(e=>(0,Y.jsxs)(`div`,{className:`skill-card`,children:[(0,Y.jsxs)(`div`,{className:`skill-card-body`,children:[(0,Y.jsxs)(`div`,{className:`plugin-name-row`,children:[(0,Y.jsx)(`span`,{className:`plugin-tag accent`,children:e.name}),(0,Y.jsx)(`span`,{className:`plugin-tag ${dn(e)?`ok`:`info`}`,children:dn(e)?`Workspace`:`Global`})]}),(0,Y.jsx)(`p`,{className:`skill-card-desc`,children:e.description||e.content})]}),(0,Y.jsx)(`button`,{className:`btn-danger btn-sm`,onClick:()=>he(e.name),children:`Forget`})]},e.name))}),(0,Y.jsxs)(`form`,{className:`add-skill-box`,onSubmit:me,children:[(0,Y.jsx)(`h3`,{children:`Teach new skill`}),C&&(0,Y.jsx)(`p`,{className:`profile-message-error`,children:C}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Skill name (e.g. coding-guidelines)`}),(0,Y.jsx)(`input`,{type:`text`,placeholder:`e.g. angular-standard`,value:_,onChange:e=>v(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Skill instructions / content`}),(0,Y.jsx)(`textarea`,{placeholder:`# Instructions
4
- Write only clean TypeScript. Use async/await.`,value:y,onChange:e=>b(e.target.value),rows:5})]}),(0,Y.jsx)(`button`,{type:`submit`,className:`btn-primary btn-full`,disabled:x,children:x?`Learning...`:`Teach Skill`})]})]}),(0,Y.jsxs)(`section`,{className:`setting-section`,children:[(0,Y.jsx)(`div`,{className:`section-heading`,children:(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`section-kicker`,children:`External tools`}),(0,Y.jsx)(`h2`,{className:`section-title`,children:`MCP servers`}),(0,Y.jsxs)(`p`,{className:`section-desc`,style:{opacity:.7,fontSize:`0.85rem`},children:[`Add, edit, enable/disable a server and choose which of its tools the agent may call. The same manager opens full-screen with `,(0,Y.jsx)(`code`,{children:`/mcp`}),` in chat.`]})]})}),(0,Y.jsx)(`div`,{className:`mcp-list`,children:M.length===0?(0,Y.jsx)(`div`,{className:`mcp-empty-notice`,children:`No MCP servers configured or discovered.`}):M.map(n=>{let r=se===n.name,i=e.mcpServers?.[n.name]||{command:n.command,args:n.args,env:{},icon:n.customIcon};return(0,Y.jsxs)(`div`,{className:`plugin-card-wrapper${r?` active-plugin-card`:``}${n.isConfigured?``:` is-discovered`}`,children:[(0,Y.jsxs)(`div`,{className:`plugin-card`,children:[(0,Y.jsxs)(`div`,{className:`plugin-card-main`,children:[(0,Y.jsx)(`div`,{className:`plugin-icon`,children:E(n.name,n.customIcon)}),(0,Y.jsxs)(`div`,{className:`plugin-info`,children:[(0,Y.jsxs)(`div`,{className:`plugin-name plugin-name-row`,children:[n.name,!n.isConfigured&&(0,Y.jsx)(`span`,{className:`plugin-tag ok`,children:`Discovered`})]}),(0,Y.jsx)(`div`,{className:`plugin-desc mono`,children:n.description})]})]}),(0,Y.jsxs)(`div`,{className:`plugin-actions`,children:[n.isConfigured&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`button`,{type:`button`,className:`btn-icon${r?` is-active`:``}`,onClick:()=>ce(r?null:n.name),title:`Edit MCP server settings`,children:(0,Y.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,Y.jsx)(`path`,{d:`M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7`}),(0,Y.jsx)(`path`,{d:`M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z`})]})}),(0,Y.jsx)(`button`,{type:`button`,className:`btn-icon danger`,onClick:()=>p(n.name),title:`Delete MCP server`,children:(0,Y.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,Y.jsx)(`polyline`,{points:`3 6 5 6 21 6`}),(0,Y.jsx)(`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}),(0,Y.jsx)(`line`,{x1:`10`,y1:`11`,x2:`10`,y2:`17`}),(0,Y.jsx)(`line`,{x1:`14`,y1:`11`,x2:`14`,y2:`17`})]})})]}),(0,Y.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:n.isEnabled,onChange:e=>{ye(n.name,e.target.checked,n.command,n.args)}}),(0,Y.jsx)(`span`,{className:`settings-toggle-slider`})]})]})]}),n.isConfigured&&r&&(0,Y.jsxs)(`div`,{className:`plugin-config-panel`,children:[(0,Y.jsxs)(`h4`,{children:[`Edit settings for `,n.name]}),(0,Y.jsxs)(`div`,{className:`form-grid two-col`,children:[(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Command`}),(0,Y.jsx)(`input`,{type:`text`,value:i.command||``,onChange:e=>ge(n.name,`command`,e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Icon (Optional)`}),(0,Y.jsx)(`input`,{type:`text`,placeholder:`SVG code, URL, or preset: search/database/cloud/code/api`,value:i.icon||``,onChange:e=>ge(n.name,`icon`,e.target.value)})]})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Arguments (Space separated)`}),(0,Y.jsx)(`input`,{type:`text`,value:(i.args||[]).join(` `),onChange:e=>ge(n.name,`args`,e.target.value.split(/\s+/).filter(Boolean))})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Environment variables (JSON format)`}),(0,Y.jsx)(`textarea`,{value:typeof i.env==`object`?JSON.stringify(i.env,null,2):i.env||``,onChange:e=>{try{let t=JSON.parse(e.target.value);ge(n.name,`env`,t)}catch{}},rows:3})]}),(0,Y.jsx)(ze,{serverName:n.name,config:e,updateField:t,listServerTools:_n})]})]},n.name)})}),(0,Y.jsxs)(`div`,{className:`add-mcp-box`,children:[(0,Y.jsx)(`h3`,{children:`Add MCP Server`}),(0,Y.jsx)(Be,{configuredNames:Object.keys(e.mcpServers||{}),onPick:(e,t,n)=>{r(e.key),a(e.command),s([...e.args||[],...t].join(` `)),l(Object.keys(n).length?JSON.stringify(n,null,2):``),d&&d(e.icon||``)}}),(0,Y.jsxs)(`div`,{className:`form-grid two-col`,children:[(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Server name`}),(0,Y.jsx)(`input`,{type:`text`,placeholder:`e.g. google-search`,value:n,onChange:e=>r(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Command`}),(0,Y.jsx)(`input`,{type:`text`,placeholder:`e.g. npx`,value:i,onChange:e=>a(e.target.value)})]})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Arguments`}),(0,Y.jsx)(`input`,{type:`text`,placeholder:`e.g. -y @modelcontextprotocol/server-brave-search`,value:o,onChange:e=>s(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Icon (Optional)`}),(0,Y.jsx)(`input`,{type:`text`,placeholder:`SVG code, URL, or preset: search/database/cloud/code/api`,value:u,onChange:e=>d&&d(e.target.value)})]}),(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:`Environment variables (JSON)`}),(0,Y.jsx)(`textarea`,{placeholder:`e.g. {"BRAVE_API_KEY": "your_key_here"}`,value:c,onChange:e=>l(e.target.value),rows:3})]}),(0,Y.jsxs)(`label`,{className:`mcp-allow-all-row`,style:{marginTop:10,marginBottom:12},children:[(0,Y.jsx)(`input`,{type:`checkbox`,className:`mint-custom-checkbox`,checked:le,onChange:e=>ue(e.target.checked)}),(0,Y.jsxs)(`span`,{className:`mcp-allow-all-text`,children:[(0,Y.jsx)(`span`,{className:`mcp-allow-all-title`,children:`Allow the agent to call all of this server’s tools (*)`}),(0,Y.jsx)(`span`,{className:`mcp-allow-all-desc`,children:`Leave off to approve tools one by one afterwards.`})]})]}),(0,Y.jsx)(`button`,{className:`btn-primary btn-full`,onClick:()=>{f(le),ue(!1)},children:`Add MCP Server`})]})]}),(0,Y.jsxs)(`section`,{className:`setting-section`,children:[(0,Y.jsx)(`div`,{className:`section-heading`,children:(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`section-kicker`,children:`Integrations`}),(0,Y.jsx)(`h2`,{className:`section-title`,children:`Plugins & Integrations`})]})}),(0,Y.jsx)(`div`,{className:`plugin-list`,children:ve.map(n=>{let r=He(e,n),i=ae===n.key;return(0,Y.jsxs)(`div`,{className:`plugin-card-wrapper${r?` active-plugin-card`:``}`,children:[(0,Y.jsxs)(`div`,{className:`plugin-card`,children:[(0,Y.jsxs)(`div`,{className:`plugin-card-main`,children:[(0,Y.jsx)(`div`,{className:`plugin-icon`,children:E(n.key)}),(0,Y.jsxs)(`div`,{className:`plugin-info`,children:[(0,Y.jsxs)(`div`,{className:`plugin-name plugin-name-row`,children:[n.name,n.isOAuth&&(()=>{let e=k.find(e=>e.provider===n.oauthProvider),t=e?.connected;return(0,Y.jsx)(`span`,{className:`plugin-status${t?` connected`:``}`,children:t?`Connected ${e.accountEmail?`(${e.accountEmail})`:``}`:`Not connected`})})()]}),(0,Y.jsx)(`div`,{className:`plugin-desc`,children:n.desc})]})]}),(0,Y.jsxs)(`div`,{className:`plugin-actions`,children:[n.isOAuth&&(k.find(e=>e.provider===n.oauthProvider)?.connected?(0,Y.jsx)(`button`,{className:`btn-danger btn-sm`,onClick:()=>fe(n.oauthProvider),children:`Disconnect`}):(0,Y.jsx)(`button`,{className:`btn-primary btn-sm`,onClick:()=>de(n.oauthProvider,n.key),disabled:re===n.oauthProvider,children:re===n.oauthProvider?`Signing In...`:`Sign In`})),n.hasCredentials&&(0,Y.jsx)(`button`,{className:`btn-secondary btn-sm`,onClick:()=>_e(n.key),children:i?`Hide Config`:`Configure`}),n.key===`discord`&&r&&(0,Y.jsx)(`button`,{className:`btn-secondary btn-sm`,onClick:()=>m(`discord`),children:`Update RPC`}),(0,Y.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:r,onChange:r=>{Ge(e,n,r.target.checked,t)}}),(0,Y.jsx)(`span`,{className:`settings-toggle-slider`})]})]})]}),n.hasCredentials&&i&&(0,Y.jsxs)(`div`,{className:`plugin-config-panel`,children:[(0,Y.jsx)(`h4`,{children:`Credentials`}),(0,Y.jsx)(`div`,{className:`form-grid compact`,children:n.fields?.map(n=>(0,Y.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,Y.jsx)(`label`,{children:n.label}),(0,Y.jsx)(`input`,{type:n.type,placeholder:n.placeholder,value:e[n.field]||``,onChange:e=>t(n.field,e.target.value)})]},n.field))})]})]},n.key)})})]})]})}var J,Y,pn,mn,hn,gn,_n,vn=t((()=>{J=e(n()),o(),Le(),Re(),We(),O(),qe(),Y=r(),{listLearnedSkills:pn,addLearnedSkill:mn,deleteLearnedSkill:hn,detectSystemTools:gn,listMcpServerTools:_n}=p})),yn=t((()=>{vn()}));function bn({config:e,updateField:t,dynamicOllamaModels:n=[],providerModels:r}){let i=e.agents||[],[a,o]=(0,X.useState)(null),[s,c]=(0,X.useState)(``),[l,u]=(0,X.useState)(`gemini`),[d,f]=(0,X.useState)(`gemini-2.5-flash`),[p,m]=(0,X.useState)(``),[h,g]=(0,X.useState)(``),[_,v]=(0,X.useState)(!1),y=t=>{if(u(t),t===`gemini`)f(e.geminiModel||r.gemini[0]||``);else if(t===`openai`)f(e.openaiModel||r.openai[0]||``);else if(t===`openrouter`)f(e.openrouterModel||r.openrouter[0]||``);else if(t===`deepseek`)f(e.deepseekModel||r.deepseek[0]||``);else if(t===`anthropic`)f(e.anthropicModel||r.anthropic[0]||``);else if(t===`huggingface`)f(e.hfModel||ee[0]);else if(t===`local_openai`)f(e.localModelName||r.local_openai[0]||``);else if(t===`ollama`)f(e.ollamaModel||n[0]||``);else if(t.startsWith(`custom:`)){let n=t.replace(/^custom:/,``);f((e.customProviders??[]).find(e=>e.id===n)?.models[0]?.modelId??``)}},b=e=>{o(e),c(e.name),u(e.provider),f(e.model),m(e.apiKey||``),g(e.systemInstruction||e.systemPrompt||``),v(!0)},x=()=>{if(!s.trim()){alert(`Please enter an agent name.`);return}let e=[];if(a)e=i.map(e=>e.id===a.id?{...e,name:s,provider:l,model:d,apiKey:p||void 0,systemInstruction:h,systemPrompt:h,enabled:e.enabled??!0}:e);else{let t={id:`agent-${Date.now()}`,name:s,provider:l,model:d,apiKey:p||void 0,systemInstruction:h,systemPrompt:h,enabled:!0};e=[...i,t]}t(`agents`,e),T()},S=e=>{confirm(`Are you sure you want to delete this agent?`)&&t(`agents`,i.filter(t=>t.id!==e))},C=(e,n)=>{t(`agents`,i.map(t=>t.id===e?{...t,enabled:n}:t))},w=()=>{t(`agents`,i.map(e=>({...e,enabled:!1})))},T=()=>{o(null),c(``),u(`gemini`),f(`gemini-2.5-flash`),m(``),g(``),v(!1)},te=()=>{o(null),c(``),u(`gemini`),f(`gemini-2.5-flash`),m(``),g(``),v(!0)},E=[{value:`gemini`,label:`Google Gemini`,hasKey:!0},{value:`openai`,label:`OpenAI`,hasKey:!!e.openaiApiKey},{value:`anthropic`,label:`Anthropic Claude`,hasKey:!!e.anthropicApiKey},{value:`openrouter`,label:`OpenRouter`,hasKey:!!e.openrouterApiKey},{value:`deepseek`,label:`DeepSeek`,hasKey:!!e.deepseekApiKey},{value:`huggingface`,label:`Hugging Face`,hasKey:!!e.hfApiKey},{value:`local_openai`,label:`Local OpenAI`,hasKey:!!e.localApiBaseUrl},{value:`ollama`,label:`Ollama (Local)`,hasKey:!!e.ollamaHost},...(e.customProviders??[]).filter(e=>e.baseUrl.trim().length>0).map(e=>({value:`custom:${e.id}`,label:`${e.displayName||e.id} (Custom)`,hasKey:!0}))].filter(e=>e.hasKey),D=[],O=``;if(l===`gemini`)D=r.gemini,O=e.geminiModel;else if(l===`openai`)D=r.openai,O=e.openaiModel;else if(l===`openrouter`)D=r.openrouter,O=e.openrouterModel;else if(l===`deepseek`)D=r.deepseek,O=e.deepseekModel;else if(l===`anthropic`)D=r.anthropic,O=e.anthropicModel;else if(l===`huggingface`)D=ee,O=e.hfModel;else if(l===`local_openai`)D=r.local_openai,O=e.localModelName;else if(l===`ollama`)D=n,O=e.ollamaModel;else if(l.startsWith(`custom:`)){let t=l.replace(/^custom:/,``);D=(e.customProviders??[]).find(e=>e.id===t)?.models.map(e=>e.modelId)??[],O=D[0]??``}let k=O?[O,...D.filter(e=>e!==O)]:D,ne=!k.includes(d);return(0,Z.jsxs)(`div`,{className:`tab-pane active animate-fade-in`,style:{display:`flex`,flexDirection:`column`,gap:`24px`},children:[(0,Z.jsxs)(`section`,{className:`setting-section`,children:[(0,Z.jsxs)(`div`,{className:`section-heading`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`p`,{className:`section-kicker`,children:`Multi-Agent System`}),(0,Z.jsx)(`h2`,{className:`section-title`,children:`Agent collaboration settings`})]}),!_&&(0,Z.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,height:`fit-content`,flexShrink:0},children:[(0,Z.jsx)(`button`,{className:`btn btn-secondary`,onClick:w,style:{whiteSpace:`nowrap`},children:`Disable All`}),(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:te,style:{whiteSpace:`nowrap`},children:`+ Add Custom Agent`})]})]}),(0,Z.jsx)(`div`,{className:`toggle-card`,style:{margin:`4px 0 24px 0`},children:(0,Z.jsxs)(`div`,{className:`toggle-row`,children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`label`,{children:`Enable multi-agent collaboration`}),(0,Z.jsx)(`p`,{className:`hint`,children:`Allow multiple specialized agents to collaborate sequentially (Planner → Coder → Reviewer).`})]}),(0,Z.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,checked:e.enableAgentCollaboration,onChange:e=>t(`enableAgentCollaboration`,e.target.checked)}),(0,Z.jsx)(`span`,{className:`settings-toggle-slider`})]})]})}),_?(0,Z.jsxs)(`div`,{className:`form-grid single`,style:{background:`var(--panel-soft)`,padding:`20px`,borderRadius:`8px`,border:`1px solid var(--panel-raised)`,marginTop:`10px`},children:[(0,Z.jsx)(`h3`,{style:{margin:`0 0 16px 0`,fontSize:`18px`,color:`var(--interactive-fg)`},children:a?`Edit Agent: ${a.name}`:`Create New Agent`}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Agent name`}),(0,Z.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),placeholder:`e.g. Code Reviewer`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`AI provider`}),(0,Z.jsx)(A,{"aria-label":`AI provider`,value:l,onValueChange:e=>y(e),children:E.map(e=>(0,Z.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Model name`}),(0,Z.jsxs)(A,{"aria-label":`Model name`,value:ne?`custom`:d,onValueChange:e=>{let t=e;f(t===`custom`?``:t)},children:[k.map(e=>(0,Z.jsx)(`option`,{value:e,children:e},e)),(0,Z.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),ne&&(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Custom model name`}),(0,Z.jsx)(`input`,{type:`text`,value:d,onChange:e=>f(e.target.value),placeholder:`Enter custom model name...`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Custom API Key (Optional)`}),(0,Z.jsx)(I,{value:p,onChange:e=>m(e),placeholder:`Leave blank to use global provider API key`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`System instructions / role`}),(0,Z.jsx)(`textarea`,{value:h,onChange:e=>g(e.target.value),placeholder:`Describe this agent's goal, instructions, and personality...`,style:{minHeight:`120px`,resize:`vertical`}})]}),(0,Z.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,marginTop:`16px`,justifyContent:`flex-end`},children:[(0,Z.jsx)(`button`,{className:`btn btn-secondary`,onClick:T,children:`Cancel`}),(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:x,children:`Save agent`})]})]}):(0,Z.jsxs)(`div`,{className:`entity-list`,style:{marginTop:`16px`},children:[i.map(e=>(0,Z.jsxs)(`div`,{className:`entity-card`,children:[(0,Z.jsxs)(`div`,{className:`entity-card-header`,children:[(0,Z.jsxs)(`div`,{className:`entity-card-header-left`,children:[(0,Z.jsx)(`strong`,{className:`entity-card-name`,children:e.name}),(0,Z.jsxs)(`span`,{className:`entity-card-badge`,children:[e.provider,` (`,e.model,`)`]})]}),(0,Z.jsxs)(`div`,{className:`entity-card-header-actions`,children:[(0,Z.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,checked:e.enabled,onChange:t=>C(e.id,t.target.checked)}),(0,Z.jsx)(`span`,{className:`settings-toggle-slider`})]}),(0,Z.jsx)(`button`,{className:`btn btn-secondary`,style:{padding:`4px 8px`,fontSize:`12px`},onClick:()=>b(e),children:`Edit`}),![`planner`,`coder`,`reviewer`].includes(e.id)&&(0,Z.jsx)(`button`,{className:`btn btn-danger`,style:{padding:`4px 8px`,fontSize:`12px`},onClick:()=>S(e.id),children:`Delete`})]})]}),(0,Z.jsxs)(`p`,{className:`entity-card-desc`,children:[`"`,e.systemInstruction,`"`]})]},e.id)),i.length===0&&(0,Z.jsx)(`div`,{className:`entity-empty`,children:`No agents configured. Click "+ Add Custom Agent" to get started.`})]})]}),(0,Z.jsx)(xn,{})]})}function xn(){let[e,t]=(0,X.useState)([]),[n,r]=(0,X.useState)(!0),[i,a]=(0,X.useState)(``),[o,s]=(0,X.useState)(!1),[c,l]=(0,X.useState)(null),[u,d]=(0,X.useState)(En),f=typeof window<`u`&&window.localStorage.getItem(`mint:last-workspace-path`)||void 0,p=async()=>{r(!0),a(``);try{t(await Sn(f))}catch(e){a(e instanceof Error?e.message:`Failed to load subagents.`)}finally{r(!1)}};(0,X.useEffect)(()=>{p()},[]);let m=()=>{s(!1),l(null),d(En)},h=()=>{l(null),d({...En,scope:f?`workspace`:`global`}),s(!0)},g=e=>{l(e.sourcePath),d({name:e.name,description:e.description,tools:e.tools?.join(`, `)??``,model:e.model??``,provider:e.provider??``,systemPrompt:e.systemPrompt,scope:Tn(e.sourcePath)?`workspace`:`global`}),s(!0)},_=async()=>{if(!u.name.trim()){alert(`Please enter a subagent name.`);return}if(!u.systemPrompt.trim()){alert(`Please describe what this subagent should do (its system prompt).`);return}let e={name:u.name.trim(),description:u.description.trim(),tools:u.tools.trim()?u.tools.split(`,`).map(e=>e.trim()).filter(Boolean):null,model:u.model.trim()||null,provider:u.provider.trim()||null,systemPrompt:u.systemPrompt,scope:u.scope,previousSourcePath:c};try{await Cn(e,f),m(),await p()}catch(e){alert(e instanceof Error?e.message:`Failed to save subagent.`)}},v=async e=>{if(confirm(`Delete subagent "${e.name}"?`))try{await wn(e.sourcePath),await p()}catch(e){alert(e instanceof Error?e.message:`Failed to delete subagent.`)}};return(0,Z.jsxs)(`section`,{className:`setting-section`,children:[(0,Z.jsxs)(`div`,{className:`section-heading`,style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`},children:[(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`p`,{className:`section-kicker`,children:`dispatch_subagent`}),(0,Z.jsx)(`h2`,{className:`section-title`,children:`Subagents`})]}),!o&&(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:h,style:{whiteSpace:`nowrap`},children:`+ Add Subagent`})]}),(0,Z.jsx)(`p`,{className:`hint`,style:{margin:`4px 0 16px 0`},children:`Focused workers the agent can delegate a sub-task to mid-conversation. Each runs its own isolated conversation — only its final summary comes back, so exploring, reading files, or running tools doesn't bloat the main context.`}),o?(0,Z.jsxs)(`div`,{className:`form-grid single`,style:{background:`var(--panel-soft)`,padding:`20px`,borderRadius:`8px`,border:`1px solid var(--panel-raised)`},children:[(0,Z.jsx)(`h3`,{style:{margin:`0 0 16px 0`,fontSize:`18px`,color:`var(--interactive-fg)`},children:c?`Edit Subagent: ${u.name}`:`Create New Subagent`}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Name`}),(0,Z.jsx)(`input`,{type:`text`,value:u.name,onChange:e=>d({...u,name:e.target.value}),placeholder:`e.g. code-reviewer`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Description`}),(0,Z.jsx)(`input`,{type:`text`,value:u.description,onChange:e=>d({...u,description:e.target.value}),placeholder:`One line: when should the agent reach for this subagent?`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`System prompt`}),(0,Z.jsx)(`textarea`,{value:u.systemPrompt,onChange:e=>d({...u,systemPrompt:e.target.value}),placeholder:`You are a focused code-review subagent. Read the diff and report bugs concisely...`,style:{minHeight:`120px`,resize:`vertical`}})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Allowed tools (optional)`}),(0,Z.jsx)(`input`,{type:`text`,value:u.tools,onChange:e=>d({...u,tools:e.target.value}),placeholder:`e.g. read_file, search_code, git_diff (leave blank for the full toolset)`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Model override (optional)`}),(0,Z.jsx)(`input`,{type:`text`,value:u.model,onChange:e=>d({...u,model:e.target.value}),placeholder:`Leave blank to use the active model`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Provider override (optional)`}),(0,Z.jsx)(`input`,{type:`text`,value:u.provider,onChange:e=>d({...u,provider:e.target.value}),placeholder:`e.g. gemini, openai, anthropic — leave blank to use the active provider`})]}),(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Scope`}),(0,Z.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Scope`,children:[{id:`workspace`,label:`This workspace`},{id:`global`,label:`Global`}].map(e=>(0,Z.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":u.scope===e.id,disabled:e.id===`workspace`&&!f,className:`pill-segmented-btn ${u.scope===e.id?`active`:``}`,onClick:()=>d({...u,scope:e.id}),children:e.label},e.id))}),(0,Z.jsxs)(`p`,{className:`hint`,children:[`Workspace agents live in `,(0,Z.jsx)(`code`,{children:`.agents/subagents/`}),` and load only there; global agents are available everywhere.`,f?``:` Open a workspace to use this option.`]})]}),(0,Z.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,marginTop:`16px`,justifyContent:`flex-end`},children:[(0,Z.jsx)(`button`,{className:`btn btn-secondary`,onClick:m,children:`Cancel`}),(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:_,children:`Save subagent`})]})]}):(0,Z.jsxs)(`div`,{className:`entity-list`,children:[i&&(0,Z.jsx)(`div`,{style:{color:`var(--danger, #ef4444)`},children:i}),n?(0,Z.jsx)(`div`,{style:{textAlign:`center`,padding:`32px`,color:`var(--text-soft)`},children:`Loading...`}):(0,Z.jsxs)(Z.Fragment,{children:[e.map(e=>(0,Z.jsxs)(`div`,{className:`entity-card`,children:[(0,Z.jsxs)(`div`,{className:`entity-card-header`,children:[(0,Z.jsxs)(`div`,{className:`entity-card-header-left`,children:[(0,Z.jsx)(`strong`,{className:`entity-card-name`,children:e.name}),(0,Z.jsx)(`span`,{className:`entity-card-badge ${Tn(e.sourcePath)?`scope-workspace`:`scope-global`}`,children:Tn(e.sourcePath)?`Workspace`:`Global`}),(e.provider||e.model)&&(0,Z.jsx)(`span`,{className:`entity-card-badge`,children:[e.provider,e.model].filter(Boolean).join(` / `)})]}),(0,Z.jsxs)(`div`,{className:`entity-card-header-actions`,children:[(0,Z.jsx)(`button`,{className:`btn btn-secondary`,style:{padding:`4px 8px`,fontSize:`12px`},onClick:()=>g(e),children:`Edit`}),(0,Z.jsx)(`button`,{className:`btn btn-danger`,style:{padding:`4px 8px`,fontSize:`12px`},onClick:()=>v(e),children:`Delete`})]})]}),e.description&&(0,Z.jsxs)(`p`,{className:`entity-card-desc`,children:[`"`,e.description,`"`]}),e.tools&&(0,Z.jsxs)(`p`,{className:`entity-card-meta`,children:[`Tools: `,e.tools.join(`, `)]})]},e.sourcePath)),e.length===0&&(0,Z.jsx)(`div`,{className:`entity-empty`,children:`No subagents yet. Click "+ Add Subagent" to create one.`})]})]})]})}var X,Z,Sn,Cn,wn,Tn,En,Dn=t((()=>{Pe(),X=e(n()),M(),o(),yt(),Z=r(),{listSubagents:Sn,saveSubagent:Cn,deleteSubagent:wn}=p,Tn=e=>!e.includes(`mint-agents`),En={name:``,description:``,tools:``,model:``,provider:``,systemPrompt:``,scope:`workspace`}})),On=t((()=>{Dn()})),kn,An,jn,Mn,Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn,Hn,Un,Wn,Gn,Kn=t((()=>{kn=`@pheem49/mint`,An=`1.16.0`,jn=`A native Tauri desktop AI assistant with a Rust backend and React UI.`,Mn={"dev:web":`vite --config vite.config.web.ts`,"preview:web":`vite preview --config vite.config.web.ts`,web:`cargo run -p mint-cli -- web`,typecheck:`tsc --noEmit`,"build:web":`vite build --config vite.config.web.ts && cp out/web/index-web.html out/web/index.html`,"dev:desktop":`npm run dev:desktop:ui`,"build:desktop:ui":`vite build`,"build:desktop":`node src/bin/desktop.js build`,"build:desktop:fast":`node src/bin/desktop.js build --fast`,"build:desktop:bundle":`npm run package --`,"build:cli":`cargo build -p mint-cli --release`,"cli:rebuild":`npm run build:cli && node src/bin/index.js`,"cli:dev":`cargo run -p mint-cli --`,"install:cli":`cargo install --path crates/mint-cli --locked`,"build:all":`npm run build:web && npm run build:desktop && npm run build:cli`,tauri:`tauri`,"tauri:dev":`npm run dev --`,"tauri:build":`npm run package --`,package:`node src/bin/desktop.js package`,"rust:cli":`cargo run -p mint-cli --`,"rust:test":`cargo test -p mint-mod-runtime -p mint-core -p mint-cli`,dev:`tauri dev`,build:`npm run build:ui`,preview:`vite preview`,start:`node src/bin/desktop.js start`,"start:release":`npm start -- --release`,launch:`npm start --`,"start:rebuild":`npm start -- --rebuild`,test:`npm run test:launchers && npm run test:interfaces && npm run test:styles && npm run test:device && npm run test:companion && cargo test -p mint-mod-runtime -p mint-core -p mint-cli -p mint-companion-protocol -p mint-companion`,"test:launchers":`node --test src/bin/web.test.js src/bin/index.test.js src/bin/desktop.test.js src/bin/package.test.js src/bin/release-notes.test.js`,"test:interfaces":`vitest run src/renderer/shared/components/ChatPanel.test.tsx src/renderer/shared/library/controller.test.ts src/renderer/shared/library/transport.test.ts src/renderer/shared/utils/sessionSources.test.ts src/renderer/shared/components/ToolSurfacePage.test.tsx src/renderer/shared/components/SlashSuggestions.test.tsx src/renderer/shared/components/ApprovalCard.test.tsx src/renderer/shared/utils/notificationSettings.test.ts src/renderer/shared/components/Settings/NotificationsTab.test.tsx src/renderer/shared/utils/notifications.test.ts src/renderer/shared/utils/contextCompaction.test.tsx src/renderer/shared/platform.test.ts src/renderer/shared/conversation/coordinator.test.ts src/renderer/shared/conversation/lifecycle.test.ts src/renderer/shared/conversation/transport.test.ts src/renderer/shared/conversation/syncView.test.ts src/renderer/shared/utils/cardJson.test.ts src/renderer/shared/utils/agentActivity.test.ts src/renderer/shared/components/CliSessionsView.test.tsx src/renderer/shared/components/Settings/MemoryTab.test.tsx src/renderer/shared/theme/themeManager.test.ts src/renderer/shared/components/SelectField.test.tsx src/renderer/shared/components/VoicePill.test.tsx src/renderer/shared/utils/nativeRecordingSession.test.ts src/renderer/shared/components/GeminiLiveOverlay.test.tsx src/renderer/shared/utils/mcpResults.test.tsx src/renderer/shared/conversation/projectNavigation.test.ts src/renderer/shared/components/WorkspacePreviewActions.test.tsx src/renderer/shared/utils/workspacePreview.test.ts src/renderer/shared/utils/artifactBrowser.test.ts src/renderer/shared/utils/workspacePane.test.ts src/renderer/shared/utils/workspaceSnapshot.test.ts src/renderer/shared/utils/syntaxHighlight.test.tsx src/renderer/shared/utils/progressCache.test.ts src/renderer/shared/components/ChatMessageItem.test.tsx src/renderer/shared/components/ModUi.test.tsx src/renderer/shared/utils/pastedText.test.ts`,cli:`node src/bin/index.js`,prepublishOnly:`npm run build:web`,postinstall:`cargo build -p mint-cli --release`,"dev:desktop:ui":`vite`,"build:ui":`npm run build:desktop:ui && npm run build:web`,"test:device":`node --test examples/device-mcp/server.test.mjs`,"dev:companion":`npm run dev --workspace @mint/companion --`,"build:companion":`npm run build --workspace @mint/companion --`,"package:companion":`npm run package --workspace @mint/companion --`,"test:companion":`vitest run --root . apps/mint-companion/src/state.test.ts`,"typecheck:companion":`npm run typecheck --workspace @mint/companion`,"test:styles":`node --test src/bin/styles.test.js`},Nn=[`mint`,`tauri`,`ai`,`assistant`,`desktop`,`cli`,`rust`,`react`,`agent`],Pn={type:`git`,url:`git+https://github.com/Pheem49/Mint.git`},Fn={url:`https://github.com/Pheem49/Mint/issues`},In=`https://github.com/Pheem49/Mint#readme`,Ln={name:`Pheem49`,email:`killerpheem13@gmail.com`},Rn=`commonjs`,zn={mint:`src/bin/index.js`,"mint-web":`src/bin/web.js`},Bn={"@fontsource/fira-code":`^5.3.0`,"@fontsource/inter":`^5.3.0`,"@fontsource/kanit":`^5.3.0`,"@fontsource/mali":`^5.3.0`,"@fontsource/mitr":`^5.3.0`,"@fontsource/noto-sans-thai":`^5.3.0`,"@fontsource/outfit":`^5.3.0`,"@fontsource/prompt":`^5.3.0`,"@fontsource/sarabun":`^5.3.0`,"@hugeicons/core-free-icons":`^4.3.5`,"@hugeicons/react":`^1.1.10`,"@lobehub/icons-static-svg":`^1.95.0`,"@radix-ui/react-slot":`^1.4.0`,"@tailwindcss/vite":`^4.3.3`,"@tanstack/react-virtual":`^3.14.14`,"@tauri-apps/api":`^2.0.0`,"@tauri-apps/plugin-dialog":`^2.7.2`,"@tauri-apps/plugin-notification":`^2.3.3`,"@vitejs/plugin-react":`^6.0.1`,"@xterm/addon-fit":`^0.11.0`,"@xterm/xterm":`^6.0.0`,"@xyflow/react":`^12.11.1`,"class-variance-authority":`^0.7.1`,clsx:`^2.1.1`,"lucide-react":`^1.28.0`,luxon:`^3.7.2`,"material-icon-theme":`5.34.0`,mermaid:`^11.17.0`,ogl:`^1.0.11`,react:`^19.2.5`,"react-dom":`^19.2.5`,"react-markdown":`^10.1.0`,"remark-gfm":`^4.0.1`,"tailwind-merge":`^3.7.0`,tailwindcss:`^4.3.3`,typescript:`^6.0.3`,vite:`^8.0.16`},Vn={"@tauri-apps/cli":`^2.0.0`,"@types/luxon":`^3.7.4`,vitest:`^5.0.1`},Hn={"gh-pages":`^5.0.0`,"@modelcontextprotocol/sdk":`^1.24.0`,nodemailer:`^9.0.0`,uuid:`^11.1.1`,"brace-expansion":`^5.0.12`,"@hono/node-server":`^2.0.5`},Un=[`apps/mint-companion`],Wn=[`src`,`crates`,`scripts`,`examples`,`docs/mods`,`shared-modules`,`out/web`,`Cargo.toml`,`Cargo.lock`,`Release_Note.md`,`slash-commands.json`,`mcp-registry.json`,`README.md`,`LICENSE`,`vite.config.ts`,`vite.config.web.ts`,`tsconfig.json`,`tsconfig.node.json`,`components.json`,`src-tauri/Cargo.toml`,`src-tauri/src`,`src-tauri/build.rs`,`apps/mint-companion/src-tauri/Cargo.toml`,`apps/mint-companion/src-tauri/src`,`apps/mint-companion/src-tauri/build.rs`],Gn={name:kn,version:An,description:jn,scripts:Mn,keywords:Nn,repository:Pn,bugs:Fn,homepage:In,author:Ln,license:`MIT`,type:Rn,bin:zn,dependencies:Bn,devDependencies:Vn,overrides:Hn,workspaces:Un,files:Wn}})),qn,Jn=t((()=>{Kn(),qn=Gn.version}));function Yn(){let[e,t]=(0,Q.useState)(`sect-general`),[n,r]=(0,Q.useState)(``),[i,o]=(0,Q.useState)(Ae),[s,c]=(0,Q.useState)(``),[l,u]=(0,Q.useState)(``),{user:d,refreshUser:p}=a(),[h,_]=(0,Q.useState)(``),[C,w]=(0,Q.useState)(``),T=(0,Q.useRef)(!1);(0,Q.useEffect)(()=>{d&&!T.current&&(_(d.name||``),w(d.image||``),T.current=!0)},[d]);let[te,E]=(0,Q.useState)(``),[D,O]=(0,Q.useState)(``),[k,re]=(0,Q.useState)(``),[ie,se]=(0,Q.useState)(``),[ce,ue]=(0,Q.useState)(``),[A,de]=(0,Q.useState)(``),[fe,pe]=(0,Q.useState)(``),[j,me]=(0,Q.useState)(``),[ge,_e]=(0,Q.useState)(ne),{models:ve}=S(`gemini`,i.apiKey),{models:M}=S(`anthropic`,i.anthropicApiKey),{models:N}=S(`openai`,i.openaiApiKey),{models:be}=S(`openrouter`,i.openrouterApiKey),{models:xe}=S(`deepseek`,i.deepseekApiKey),{models:Se}=S(`local_openai`,``,i.localApiBaseUrl),{options:Ce}=dt(`nanobanana`,i.apiKey),{options:we}=dt(`dalle`,i.openaiApiKey),{options:Te}=dt(`replicate`,i.replicateApiKey),{options:Oe}=dt(`stability`,i.stabilityApiKey),{options:ke}=dt(`ideogram`,i.ideogramApiKey),{options:je}=dt(`bfl`,i.bflApiKey),Me=Q.useMemo(()=>({nanobanana:Ce,dalle:we,replicate:Te,stability:Oe,ideogram:ke,bfl:je}),[Ce,we,Te,Oe,ke,je]),{options:Ne}=ht(`veo`,i.apiKey),Pe=Q.useMemo(()=>({veo:Ne}),[Ne]),[Fe,Ie]=(0,Q.useState)(``),[Le,Re]=(0,Q.useState)(``),[ze,Be]=(0,Q.useState)(``),[Ve,He]=(0,Q.useState)(``),[Ue,We]=(0,Q.useState)(``),[Ge,Ke]=(0,Q.useState)(``),[qe,Je]=(0,Q.useState)(!1),Ye=m();(0,Q.useEffect)(()=>{async function e(){try{let e=null;if(window.settingsApi)e=await window.settingsApi.getSettings();else{let t=await v(`user-settings`);t&&(e=JSON.parse(t))}if(e){let t={...Ae,...ye(De(e))};o(t),t.geminiModel&&!Ee.includes(t.geminiModel)&&E(t.geminiModel),t.openaiModel&&!x.includes(t.openaiModel)&&O(t.openaiModel),t.openrouterModel&&!he.includes(t.openrouterModel)&&re(t.openrouterModel),t.deepseekModel&&!oe.includes(t.deepseekModel)&&se(t.deepseekModel),t.anthropicModel&&!ae.includes(t.anthropicModel)&&ue(t.anthropicModel),t.hfModel&&!ee.includes(t.hfModel)&&de(t.hfModel),t.localModelName&&!le.includes(t.localModelName)&&pe(t.localModelName),t.ollamaModel&&!ne.includes(t.ollamaModel)&&me(t.ollamaModel),P(t)}let t=await v(`name`);t&&c(t);let n=await v(`preferences`);n&&u(n)}catch(e){console.error(`Failed to load settings:`,e)}}e()},[]),(0,Q.useEffect)(()=>{(async()=>{let e=(i.ollamaHost||`http://127.0.0.1:11434`).replace(/\/$/,``);try{let t=await fetch(`${e}/api/tags`);if(t.ok){let e=await t.json();if(e&&Array.isArray(e.models)){_e(e.models.map(e=>e.name));return}}}catch(e){console.warn(`Failed to fetch local Ollama models:`,e)}_e(ne)})()},[i.ollamaHost]);let Xe=async()=>{let e={...i};i.geminiModel===`custom`&&(e.geminiModel=te||`gemini-2.5-flash`),i.openaiModel===`custom`&&(e.openaiModel=D||`gpt-4o`),i.openrouterModel===`custom`&&(e.openrouterModel=k||`openai/gpt-4o-mini`),i.deepseekModel===`custom`&&(e.deepseekModel=ie||`deepseek-v4-flash`),i.anthropicModel===`custom`&&(e.anthropicModel=ce||`claude-3-5-sonnet-latest`),i.hfModel===`custom`&&(e.hfModel=A||`meta-llama/Meta-Llama-3-8B-Instruct`),i.localModelName===`custom`&&(e.localModelName=fe||`local-model`),i.ollamaModel===`custom`&&(e.ollamaModel=j||`llama3:latest`);try{await f(`name`,s),await f(`preferences`,l)}catch(e){console.error(`Failed to save user profile memory:`,e)}try{p(await y(h,C))}catch(e){console.error(`Failed to save account profile:`,e)}let t=(e,t)=>{switch(e){case`gemini`:return t.geminiModel;case`openai`:return t.openaiModel;case`openrouter`:return t.openrouterModel;case`deepseek`:return t.deepseekModel;case`anthropic`:return t.anthropicModel;case`huggingface`:return t.hfModel;case`local_openai`:return t.localModelName;case`ollama`:return t.ollamaModel;default:return``}},n=t(i.aiProvider,i),r=t(e.aiProvider,e);if((i.aiProvider!==e.aiProvider||n!==r)&&b(e.aiProvider,r).catch(()=>{}),window.settingsApi)await window.settingsApi.saveSettings(e),P(e),window.settingsApi.closeSettings();else try{await f(`user-settings`,JSON.stringify(e)),P(e)}catch(e){console.error(`Failed to save user settings:`,e)}},Ze=async()=>{let e={...i};i.geminiModel===`custom`&&(e.geminiModel=te||`gemini-2.5-flash`),i.openaiModel===`custom`&&(e.openaiModel=D||`gpt-4o`),i.openrouterModel===`custom`&&(e.openrouterModel=k||`openai/gpt-4o-mini`),i.deepseekModel===`custom`&&(e.deepseekModel=ie||`deepseek-v4-flash`),i.anthropicModel===`custom`&&(e.anthropicModel=ce||`claude-3-5-sonnet-latest`),i.hfModel===`custom`&&(e.hfModel=A||`meta-llama/Meta-Llama-3-8B-Instruct`),i.localModelName===`custom`&&(e.localModelName=fe||`local-model`),i.ollamaModel===`custom`&&(e.ollamaModel=j||`llama3:latest`);try{await f(`name`,s),await f(`preferences`,l)}catch(e){console.error(`Failed to save user profile memory:`,e)}if(window.settingsApi)await window.settingsApi.saveSettings(e),P(e);else try{await f(`user-settings`,JSON.stringify(e)),P(e)}catch(e){console.error(`Failed to save user settings:`,e)}},$e=async()=>{if(confirm(`Reset all settings to default?`)){o(Ae),E(``),O(``),ue(``),de(``),pe(``),me(``),c(``),u(``);try{await f(`name`,``),await f(`preferences`,``)}catch(e){console.error(`Failed to reset profile memory:`,e)}P(Ae)}},F=()=>{window.settingsApi?.closeSettings()},et=(e,t)=>{e.preventDefault(),window.settingsApi?.openExternal?window.settingsApi.openExternal(t):window.open(t,`_blank`,`noopener,noreferrer`)},tt=e=>{if(!Fe.trim()||!Le.trim()){alert(`Please provide at least a server name and command.`);return}let t={};if(Ve.trim())try{t=JSON.parse(Ve)}catch{alert(`Invalid JSON in Environment variable field.`);return}let n=Fe.trim(),r=ze.split(/\s+/).filter(Boolean),a={...i.mcpServers,[n]:{command:Le.trim(),args:r,env:t,icon:Ue.trim()||void 0}};o({...i,mcpServers:a,...e?{allowedMcpTools:{...i.allowedMcpTools||{},[n]:[`*`]}}:{}}),Ie(``),Re(``),Be(``),He(``),We(``)},nt=e=>{let t={...i.mcpServers};delete t[e],o({...i,mcpServers:t})},rt=async e=>{if(!Ye&&e===`discord`){alert(`Discord Rich Presence requires the desktop app.`);return}if(e===`discord`){try{await window.api.executeProactiveAction({type:`plugin`,pluginName:`discord`,target:``}),alert(`Discord Rich Presence updated.`)}catch(e){alert(String(e))}return}alert(`Configure ${e} credentials, then invoke the plugin from Mint chat.`)},it=async()=>{if(!Ye){Ke(`Desktop updates are only available in the Tauri app.`);return}try{let e=await window.settingsApi.checkForUpdates();Je(!!e.available),Ke(e.available?`Mint ${e.version} is available.`:`Mint is up to date.`)}catch(e){Ke(String(e))}},at=async()=>{if(!Ye){Ke(`Desktop updates are only available in the Tauri app.`);return}if(confirm(`Install the signed Mint update now?`))try{Ke(await window.settingsApi.installAvailableUpdate()),Je(!1)}catch(e){Ke(String(e))}},ot=(e,t)=>{let n={...i,[e]:t};o(n),P(n)};return(0,$.jsxs)(`div`,{className:`settings-container`,children:[(0,$.jsxs)(`header`,{className:`settings-header drag-region`,children:[(0,$.jsxs)(`div`,{className:`header-left`,children:[(0,$.jsx)(`span`,{className:`settings-icon`,children:(0,$.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,$.jsx)(`path`,{d:`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z`})]})}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h1`,{children:`Settings`}),(0,$.jsx)(`p`,{children:Ye?`Configure Mint assistant behavior and integrations.`:`Web settings through Local API: ${g()}`})]})]}),(0,$.jsx)(`button`,{className:`close-btn`,onClick:F,"aria-label":`Close`,children:(0,$.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),(0,$.jsx)(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})]})})]}),(0,$.jsxs)(`main`,{className:`settings-body`,children:[(0,$.jsxs)(`nav`,{className:`settings-sidebar`,"aria-label":`Settings sections`,children:[(0,$.jsxs)(`div`,{className:`settings-nav-search`,children:[(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,$.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,$.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),(0,$.jsx)(`input`,{type:`text`,placeholder:`Search`,value:n,onChange:e=>r(e.target.value),"aria-label":`Search settings`})]}),(0,$.jsx)(`div`,{className:`settings-nav-scroll`,children:Zn.map(r=>{let i=Xn.filter(e=>e.group===r&&e.label.toLowerCase().includes(n.trim().toLowerCase()));return i.length?(0,$.jsxs)(`div`,{className:`settings-nav-group`,children:[(0,$.jsx)(`p`,{className:`settings-nav-group-label`,children:r}),i.map(n=>(0,$.jsxs)(`button`,{className:`tab-btn ${e===n.id?`active`:``}`,onClick:()=>t(n.id),children:[(0,$.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:n.icon}),(0,$.jsx)(`strong`,{children:n.label})]},n.id))]},r):null})})]}),(0,$.jsxs)(`div`,{className:`settings-content`,children:[!Ye&&(0,$.jsxs)(`div`,{className:`web-safe-notice`,children:[(0,$.jsx)(`strong`,{children:`Web mode`}),(0,$.jsx)(`span`,{children:`Desktop-only controls are hidden or disabled here. Settings are saved through the Local API server.`})]}),e===`sect-general`&&(0,$.jsx)(Ct,{config:i,updateField:ot,customGemini:te,setCustomGemini:E,customOpenAI:D,setCustomOpenAI:O,customOpenRouter:k,setCustomOpenRouter:re,customDeepSeek:ie,setCustomDeepSeek:se,customAnthropic:ce,setCustomAnthropic:ue,customHF:A,setCustomHF:de,customLocal:fe,setCustomLocal:pe,customOllama:j,setCustomOllama:me,dynamicOllamaModels:ge,dynamicGeminiModels:ve,dynamicAnthropicModels:M,dynamicOpenAIModels:N,dynamicOpenRouterModels:be,dynamicDeepSeekModels:xe,dynamicLocalModels:Se,dynamicImageModels:Me,dynamicVideoModels:Pe,updateAvailable:qe,updateMessage:Ge,handleCheckUpdates:it,handleInstallUpdate:at,isDesktopApp:Ye,onSaveWithoutClosing:Ze}),e===`sect-notifications`&&(0,$.jsx)(Qe,{settings:i.notificationSettings,onChange:e=>ot(`notificationSettings`,e)}),e===`sect-profile`&&(0,$.jsx)(Lt,{name:h,setName:_,imageUrl:C,setImageUrl:w}),e===`sect-memory`&&(0,$.jsx)(Ht,{userName:s,setUserName:c,userPreferences:l,setUserPreferences:u}),e===`sect-audio`&&(0,$.jsx)(Xt,{config:i,updateField:ot,apiKey:i.apiKey}),e===`sect-automation`&&(0,$.jsx)(en,{config:i,updateField:ot}),e===`sect-theme`&&(0,$.jsx)(sn,{config:i,updateField:ot,updateFields:e=>{let t={...i,...e};o(t),P(t)}}),e===`sect-plugins`&&(0,$.jsx)(fn,{config:i,updateField:ot,mcpName:Fe,setMcpName:Ie,mcpCmd:Le,setMcpCmd:Re,mcpArgs:ze,setMcpArgs:Be,mcpEnv:Ve,setMcpEnv:He,mcpIcon:Ue,setMcpIcon:We,handleAddMcpServer:tt,handleRemoveMcpServer:nt,handleConnectPlugin:rt}),e===`sect-agents`&&(0,$.jsx)(bn,{config:i,updateField:ot,dynamicOllamaModels:ge,providerModels:{gemini:ve,anthropic:M,openai:N,openrouter:be,deepseek:xe,local_openai:Se}})]})]}),(0,$.jsxs)(`footer`,{className:`settings-footer`,children:[(0,$.jsxs)(`div`,{className:`settings-footer-meta`,children:[(0,$.jsxs)(`span`,{className:`settings-footer-version`,children:[`Version: `,qn]}),(0,$.jsxs)(`div`,{className:`settings-footer-links`,children:[(0,$.jsxs)(`a`,{href:`https://github.com/Pheem49/Mint`,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>et(e,`https://github.com/Pheem49/Mint`),className:`settings-footer-link`,title:`https://github.com/Pheem49/Mint`,children:[`GitHub`,(0,$.jsxs)(`svg`,{width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,$.jsx)(`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}),(0,$.jsx)(`polyline`,{points:`15 3 21 3 21 9`}),(0,$.jsx)(`line`,{x1:`10`,y1:`14`,x2:`21`,y2:`3`})]})]}),(0,$.jsx)(`span`,{className:`settings-footer-separator`,children:`•`}),(0,$.jsxs)(`a`,{href:`https://mint.aemeth.xyz/`,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>et(e,`https://mint.aemeth.xyz/`),className:`settings-footer-link`,title:`https://mint.aemeth.xyz/`,children:[`Website`,(0,$.jsxs)(`svg`,{width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,$.jsx)(`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}),(0,$.jsx)(`polyline`,{points:`15 3 21 3 21 9`}),(0,$.jsx)(`line`,{x1:`10`,y1:`14`,x2:`21`,y2:`3`})]})]})]})]}),(0,$.jsxs)(`div`,{className:`footer-actions`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`btn-secondary`,onClick:$e,style:{display:`inline-flex`,alignItems:`center`,gap:`6px`},children:[(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`polyline`,{points:`1 4 1 10 7 10`}),(0,$.jsx)(`path`,{d:`M3.51 15a9 9 0 1 0 2.13-9.36L1 10`})]}),`Reset Defaults`]}),(0,$.jsxs)(`button`,{type:`button`,className:`btn-primary`,onClick:e=>{e.preventDefault(),Xe()},style:{display:`inline-flex`,alignItems:`center`,gap:`6px`},children:[(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`path`,{d:`M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z`}),(0,$.jsx)(`polyline`,{points:`17 21 17 13 7 13 7 21`}),(0,$.jsx)(`polyline`,{points:`7 3 7 8 15 8`})]}),`Save Settings`]})]})]})]})}var Q,$,Xn,Zn;t((()=>{s(),et(),Q=e(n()),tt(),nt(),rt(),it(),at(),ot(),st(),ct(),lt(),d(),c(),re(),pt(),_t(),Mt(),Bt(),Gt(),$t(),nn(),un(),yn(),On(),M(),Se(),$=r(),me(),Jn(),Xn=[{id:`sect-notifications`,label:`Notifications`,group:`Workspace`,icon:(0,$.jsx)(l,{size:14,"aria-hidden":`true`})},{id:`sect-general`,label:`General`,group:`Workspace`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,$.jsx)(`path`,{d:`M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z`})]})},{id:`sect-profile`,label:`Profile`,group:`Account`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`path`,{d:`M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2`}),(0,$.jsx)(`circle`,{cx:`12`,cy:`7`,r:`4`})]})},{id:`sect-automation`,label:`Automation`,group:`Workspace`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`,ry:`2`}),(0,$.jsx)(`line`,{x1:`8`,y1:`21`,x2:`16`,y2:`21`}),(0,$.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12`,y2:`21`})]})},{id:`sect-theme`,label:`Theme & UI`,group:`Appearance`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`circle`,{cx:`12`,cy:`12`,r:`5`}),(0,$.jsx)(`line`,{x1:`12`,y1:`1`,x2:`12`,y2:`3`}),(0,$.jsx)(`line`,{x1:`12`,y1:`21`,x2:`12`,y2:`23`}),(0,$.jsx)(`line`,{x1:`4.22`,y1:`4.22`,x2:`5.64`,y2:`5.64`}),(0,$.jsx)(`line`,{x1:`18.36`,y1:`18.36`,x2:`19.78`,y2:`19.78`}),(0,$.jsx)(`line`,{x1:`1`,y1:`12`,x2:`3`,y2:`12`}),(0,$.jsx)(`line`,{x1:`21`,y1:`12`,x2:`23`,y2:`12`}),(0,$.jsx)(`line`,{x1:`4.22`,y1:`19.78`,x2:`5.64`,y2:`18.36`}),(0,$.jsx)(`line`,{x1:`18.36`,y1:`5.64`,x2:`19.78`,y2:`4.22`})]})},{id:`sect-memory`,label:`Personal Memory`,group:`Account`,icon:(0,$.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,$.jsx)(`path`,{d:`M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z`})})},{id:`sect-audio`,label:`Audio & Voice`,group:`Appearance`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`polygon`,{points:`11 5 6 9 2 9 2 15 6 15 11 19 11 5`}),(0,$.jsx)(`path`,{d:`M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07`})]})},{id:`sect-plugins`,label:`Plugins`,group:`Advanced`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`polygon`,{points:`12 2 2 7 12 12 22 7 12 2`}),(0,$.jsx)(`polyline`,{points:`2 17 12 22 22 17`}),(0,$.jsx)(`polyline`,{points:`2 12 12 17 22 12`})]})},{id:`sect-agents`,label:`Multi-Agent (Beta)`,group:`Workspace`,icon:(0,$.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,$.jsx)(`path`,{d:`M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2`}),(0,$.jsx)(`circle`,{cx:`9`,cy:`7`,r:`4`}),(0,$.jsx)(`path`,{d:`M23 21v-2a4 4 0 0 0-3-3.87`}),(0,$.jsx)(`path`,{d:`M16 3.13a4 4 0 0 1 0 7.75`})]})}],Zn=[`Account`,`Workspace`,`Appearance`,`Advanced`]}))();export{ae as ANTHROPIC_MODELS,oe as DEEPSEEK_MODELS,Ae as DEFAULT_CONFIG,Ee as GEMINI_MODELS,ee as HF_MODELS,le as LOCAL_MODELS,ne as OLLAMA_MODELS,x as OPENAI_MODELS,he as OPENROUTER_MODELS,Yn as default};
@@ -1 +0,0 @@
1
- .notifications-tab .toggle-row{gap:20px}.notifications-tab .toggle-row>div{min-width:0}.notifications-tab .toggle-row input:disabled+.settings-toggle-slider{opacity:.45}.notifications-tab .toggle-row input:focus-visible+.settings-toggle-slider{outline:2px solid var(--accent,#10b981);outline-offset:3px}.notifications-tab .settings-toggle-switch{flex-shrink:0}.notifications-permission-state{color:var(--text-main)}.notifications-actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.notifications-feedback{color:var(--text-secondary,var(--text-muted));overflow-wrap:anywhere}@media (width<=560px){.notifications-actions button{flex:180px}}.settings-container{--sidebar-bg:var(--bg-surface-soft)}:where(.settings-container),:where(.settings-container) *{box-sizing:border-box;margin:0;padding:0}:where(.settings-container){height:100vh;color:var(--text-primary);font-family:var(--font-ui,"Inter", "Noto Sans Thai", ui-sans-serif, system-ui, sans-serif);-webkit-user-select:none;user-select:none;background:0 0;overflow:hidden}:where(.settings-container) button,:where(.settings-container) input,:where(.settings-container) select,:where(.settings-container) textarea{font:inherit}:where(.settings-container) button{-webkit-app-region:no-drag}.settings-container{background:var(--bg-overlay);height:100%;color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);opacity:1;grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}@keyframes appEntrance{0%{opacity:0;transform:scale(.985)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.settings-header,.settings-footer{background:var(--bg-overlay);border-color:var(--border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);align-items:center;display:flex}.settings-header{-webkit-app-region:drag;z-index:3;border-bottom:1px solid var(--border);min-height:64px;padding:16px 24px;position:relative}.header-left{align-items:center;gap:12px;display:flex}.settings-icon{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-strong);width:34px;height:34px;color:var(--interactive-fg-hover);place-items:center;font-size:1rem;display:grid}:where(.settings-container) h1{color:var(--text-primary);letter-spacing:0;font-size:1.02rem;font-weight:600}.header-left p{color:var(--text-muted);margin-top:2px;font-size:.78rem}.close-btn{z-index:5;border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;place-items:center;transition:background .15s,border-color .15s,color .15s,transform .15s;display:grid;position:absolute;top:50%;right:24px;transform:translateY(-50%)}.close-btn:hover{background:color-mix(in srgb, var(--danger) 12%, transparent);border-color:color-mix(in srgb, var(--danger) 28%, transparent);color:var(--danger);transform:translateY(-50%)scale(1.05)}.settings-body{flex:1;min-height:0;display:flex;overflow:hidden}.settings-sidebar{background:var(--sidebar-bg);width:194px;min-width:194px;color:var(--text-primary);border-right:1px solid var(--border);padding:24px 8px 12px;overflow-y:auto}.tab-btn{border-radius:var(--radius-sm);width:100%;min-height:42px;color:var(--text-secondary);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:10px;padding:9px 10px;transition:background .16s,border-color .16s,color .16s,transform .16s;display:flex}.tab-btn+.tab-btn{margin-top:5px}.tab-btn span{justify-content:center;align-items:center;display:inline-flex}.tab-btn strong{font-size:.86rem;font-weight:500;line-height:1.2}.tab-btn:hover{background:var(--surface-hover);color:var(--text-primary);transform:none}.tab-btn.active{background:var(--surface-strong);color:var(--text-primary);box-shadow:none;border-color:#0000}.settings-content{background:var(--bg-overlay);min-width:0;color:var(--text-primary);flex:1;padding:24px 32px 32px;overflow-y:auto}.web-safe-notice{border-bottom:1px solid var(--border);width:100%;max-width:1000px;color:var(--text-primary);margin:0 auto 18px;padding:0 0 14px}.web-safe-notice strong,.web-safe-notice span{display:block}.web-safe-notice strong{font-size:.82rem;font-weight:750}.web-safe-notice span{color:var(--text-muted);margin-top:3px;font-size:.76rem;line-height:1.45}.settings-content::-webkit-scrollbar{width:6px}.settings-sidebar::-webkit-scrollbar{width:6px}.settings-content::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-lg)}.settings-sidebar::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-lg)}.tab-pane{flex-direction:column;gap:4px;width:100%;max-width:1000px;margin:0 auto;animation:.18s fadeTab;display:none}.tab-pane.active{display:flex}@keyframes fadeTab{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.setting-section{border-bottom:1px solid var(--border);padding:0 0 20px}.setting-section:last-child{border-bottom:0;padding-bottom:0}.section-heading{border-bottom:1px solid var(--border);margin-bottom:0;padding:20px 0 14px;display:block}.section-kicker{color:var(--text-muted);letter-spacing:.08em;text-transform:none;margin-bottom:4px;font-size:.72rem;font-weight:600}.section-title{color:var(--text-primary);font-size:1rem;font-weight:500}.section-description{max-width:none;color:var(--text-muted);margin-top:8px;font-size:.82rem;line-height:1.45}.form-grid{grid-template-columns:minmax(0,1fr);gap:0;padding:0;display:grid}.form-grid.compact{grid-template-columns:minmax(0,1fr)}.form-grid.single{grid-template-columns:minmax(0,1fr);max-width:100%}.form-grid.two-col{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.setting-row{border-top:1px solid var(--border);grid-template-columns:220px 1fr;align-items:center;gap:18px;min-width:0;min-height:48px;padding:12px 16px;display:grid}.setting-section .form-grid:first-child .setting-row:first-child,.setting-section .section-heading+.form-grid .setting-row:first-child,.custom-theme-panel .setting-row:first-child{border-top:0}.setting-row.wide{grid-column:1/-1}.setting-row.stacked{grid-template-columns:minmax(0,1fr);align-items:start;gap:10px}.setting-row label,.toggle-row label{color:var(--text-soft);margin-bottom:0;font-size:.83rem;font-weight:500;display:block}:where(.settings-container) input[type=text],:where(.settings-container) input[type=password],:where(.settings-container) input[type=email],:where(.settings-container) input[type=url],:where(.settings-container) select,:where(.settings-container) textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);width:100%;min-height:32px;color:var(--text-main);-webkit-user-select:text;user-select:text;outline:none;padding:6px 10px;font-size:.88rem;transition:background .15s,border-color .15s,box-shadow .15s}:where(.settings-container) select{cursor:pointer;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;justify-self:end;width:auto;min-width:200px;max-width:100%;background-color:var(--input-bg)!important;color:var(--text-main)!important}:where(.settings-container) select:focus{background-color:var(--input-focus-bg)!important}:where(.settings-container) select option{background-color:var(--input-bg)!important;color:var(--text-main)!important}:where(.settings-container) select option:checked{background:linear-gradient(var(--accent), var(--accent))!important;color:var(--accent-contrast,#fff)!important}[data-theme=light] :where(.settings-container) select{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:where(.settings-container) textarea{resize:vertical;min-height:74px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem;line-height:1.45}:where(.settings-container) input:focus,:where(.settings-container) select:focus,:where(.settings-container) textarea:focus{background:var(--input-focus-bg);border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent)}:where(.settings-container) input::placeholder,:where(.settings-container) textarea::placeholder{color:var(--placeholder)}:where(.settings-container) input[type=color]{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--input-bg);cursor:pointer;width:44px;height:34px;padding:3px}#sect-theme .form-grid{padding:0}#sect-theme .form-grid .setting-row{background:0 0;min-height:56px}#sect-theme select{border-radius:var(--radius-md);background:var(--input-bg);height:36px}.input-group{align-items:stretch;gap:8px;display:flex}.toggle-visibility{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--input-bg);width:42px;min-width:42px;color:var(--text-muted);cursor:pointer;place-items:center;transition:background .15s,border-color .15s,color .15s;display:grid}.toggle-visibility:hover{background:var(--accent-soft,var(--bg-surface-soft));border-color:color-mix(in srgb, var(--accent) 36%, transparent);color:var(--text-main)}.hidden-row{display:none}.hint{color:var(--text-muted);font-size:.78rem;line-height:1.45}.hint a{color:var(--interactive-fg-hover);text-decoration:none}.hint a:hover{text-decoration:underline}.toggle-row{border:1px solid var(--border);border-radius:var(--radius-lg);background:0 0;grid-template-columns:minmax(0,1fr) auto;justify-content:space-between;align-items:center;gap:20px;min-height:58px;padding:10px 12px;display:grid}.setting-section .toggle-row{border:0;border-top:1px solid var(--border);border-radius:0;padding:12px 16px}.setting-section .section-heading+.toggle-row,.setting-section .form-grid:first-child .toggle-row:first-child{border-top:0}.toggle-row label{color:var(--text-main);margin-bottom:4px}.settings-toggle-switch{width:46px;min-width:46px;height:26px;display:inline-block;position:relative}.settings-toggle-switch input{opacity:0;width:0;height:0}.settings-toggle-slider{cursor:pointer;background:var(--input-bg);border:1px solid var(--border-strong);border-radius:var(--radius-full);transition:background .18s,border-color .18s;position:absolute;inset:0}.settings-toggle-slider:before{content:"";background:var(--text-muted);border-radius:50%;width:18px;height:18px;transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 3px #0003}:where(.settings-container) input:checked+.settings-toggle-slider{background:var(--accent);border-color:color-mix(in srgb, var(--accent) 70%, var(--border-strong))}:where(.settings-container) input:checked+.settings-toggle-slider:before{background:var(--accent-contrast,#fff);transform:translate(20px);box-shadow:0 1px 3px #00000059}.slider-stack{gap:16px;max-width:100%;display:grid}.slider-group{align-items:center;gap:12px;display:flex}.range-slider{appearance:none;cursor:pointer;background:0 0;flex:1;min-height:22px}.range-slider::-webkit-slider-runnable-track{border-radius:var(--radius-full);background:var(--border-strong);height:6px}.range-slider::-webkit-slider-thumb{appearance:none;border:3px solid var(--panel-bg);background:var(--accent);width:18px;height:18px;box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 50%, transparent), var(--shadow-sm);border-radius:50%;margin-top:-6px}.range-value{border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);border-radius:var(--radius-md);background:color-mix(in srgb, var(--accent) 10%, transparent);min-width:68px;color:var(--interactive-fg-hover);text-align:center;white-space:nowrap;padding:5px 9px;font-size:.78rem;font-weight:600}.button-row,.footer-actions{align-items:center;gap:10px;display:flex}.btn-primary,.btn-secondary,.btn-danger,.btn-connect,.btn-disconnect{border-radius:var(--radius-md);cursor:pointer;min-height:38px;padding:9px 15px;font-size:.86rem;font-weight:600;transition:transform .15s,background .15s,border-color .15s,color .15s}.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled,.btn-connect:disabled,.btn-disconnect:disabled{opacity:.46;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent);color:var(--accent-contrast,var(--text-on-accent));box-shadow:none;border:1px solid #0000}.btn-primary:hover,.btn-secondary:hover,.btn-danger:hover,.btn-connect:hover,.btn-disconnect:hover{transform:translateY(-1px)}.btn-secondary{border:1px solid var(--border);background:var(--surface-strong);color:var(--text-primary)}.btn-secondary:hover{background:var(--surface-hover);border-color:var(--border-strong);color:var(--text-primary)}.btn-danger,.btn-disconnect{border:1px solid color-mix(in srgb, var(--danger) 36%, transparent);background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger)}.btn-danger:hover,.btn-disconnect:hover{background:var(--danger);color:var(--pure-white)}.full-width{width:100%}.web-safe-footer-note{color:var(--text-muted);font-size:.78rem}.theme-card.active{border-color:var(--accent);color:var(--text-main);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 28%, transparent)}.theme-card.active:after{content:"";border-radius:var(--radius-full);background:var(--accent);width:8px;height:8px;box-shadow:0 0 12px color-mix(in srgb, var(--accent) 70%, transparent);position:absolute;top:10px;right:10px}.dark-preview{background:linear-gradient(135deg,#0b1020 0%,#241642 100%)}.light-preview{background:linear-gradient(135deg,#f8fafc 0%,#dbe5f0 100%)}.midnight-preview{background:linear-gradient(135deg,#020617 0%,#100626 100%)}.custom-preview{background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 100%);border:1px dashed #ffffff47}.custom-theme-panel .setting-row+.setting-row{margin-top:12px}.color-dot.active{border-color:var(--text-on-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 44%, transparent), inset 0 0 0 1px #ffffff38}.accent-purple{background:#8b5cf6}.accent-cyan{background:#06b6d4}.accent-green{background:#10b981}.accent-amber{background:#f59e0b}.accent-red{background:#ef4444}.accent-pink{background:#ec4899}.mcp-empty{border:1px dashed var(--border);border-radius:var(--radius-lg);color:var(--text-muted);text-align:center;padding:16px;font-size:.82rem}.mcp-item{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-bg);justify-content:space-between;align-items:center;gap:14px;padding:12px;display:flex}.mcp-info{min-width:0}.mcp-name{color:var(--text-main);margin-bottom:4px;font-size:.9rem;font-weight:600}.mcp-command{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.74rem;overflow:hidden}:where(.settings-container) kbd{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--input-bg);min-width:30px;color:var(--interactive-fg-hover);font-family:var(--font-ui,"Inter", "Noto Sans Thai", ui-sans-serif, system-ui, sans-serif);text-align:center;padding:4px 8px;font-size:.76rem;font-weight:700}.settings-footer{border-top:1px solid var(--border);background:var(--panel-bg);justify-content:space-between;gap:14px;min-height:64px;padding:12px 20px}.settings-footer-meta{color:var(--text-muted);flex-direction:column;gap:3px;font-size:.8rem;line-height:1.35;display:flex}.settings-footer-version{color:var(--text-muted);-webkit-user-select:text;user-select:text;font-size:.8rem}.settings-footer-links{align-items:center;gap:8px;display:flex}.settings-footer-separator{color:var(--border);-webkit-user-select:none;user-select:none;font-size:.75rem}.settings-footer-link{color:var(--text-muted);cursor:pointer;align-items:center;gap:4px;font-size:.8rem;text-decoration:none;transition:color .15s;display:inline-flex}.settings-footer-link:hover{color:var(--text-main);text-decoration:underline}.settings-footer-link svg{opacity:.75;transition:opacity .15s,transform .15s}.settings-footer-link:hover svg{opacity:1;transform:translate(1px,-1px)}.footer-actions{margin-left:auto}@media (width<=620px){.settings-sidebar{width:64px;min-width:64px;padding:12px 8px}.settings-footer-meta{text-align:center;order:2;align-items:center}.tab-btn{justify-content:center;padding:10px}.tab-btn span{font-size:1.15rem;display:inline-block}.tab-btn strong{display:none}.settings-content{padding:18px}.section-heading,.settings-footer{flex-direction:column;align-items:stretch}.footer-actions{margin-left:0}.form-grid,.form-grid.compact,.theme-grid{grid-template-columns:minmax(0,1fr)}}.memory-field-container{flex-direction:column;align-items:flex-start;gap:8px;width:100%;display:flex}.provider-card-body .setting-row{border-top:none;grid-template-columns:180px 1fr;padding:6px 0}.bridge-card.active{background:color-mix(in srgb, var(--accent) 4%, var(--surface-bg,transparent));border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.bridge-status-pill.active{background:color-mix(in srgb, var(--accent) 15%, transparent);color:var(--mint-400);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent)}.settings-nav-search{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);color:var(--text-muted);align-items:center;gap:8px;margin:0 2px 16px;padding:7px 10px;display:flex}.settings-nav-search input{min-width:0;min-height:0;color:var(--text-primary);background:0 0;border:0;flex:1;padding:0;font-size:.83rem}.settings-nav-search input:focus{outline:none}.settings-nav-group+.settings-nav-group{margin-top:18px}.settings-nav-group-label{color:var(--text-muted);letter-spacing:.04em;margin:0 0 6px 8px;font-size:.72rem;font-weight:600}[data-theme=light] .settings-container{color:#0f172a;background:#fff;border:1px solid #0f172a1f;box-shadow:0 25px 50px -12px #0f172a40}[data-theme=light] .settings-header{-webkit-backdrop-filter:none;background:#fff;border-bottom:1px solid #0f172a14}[data-theme=light] .settings-header h1{color:#0f172a}[data-theme=light] .settings-header p{color:#64748b}[data-theme=light] .settings-header .settings-icon{color:#059669;background:#10b9811a;border-color:#10b98140}[data-theme=light] .close-btn{color:#64748b}[data-theme=light] .close-btn:hover{color:#dc2626;background:#fee2e2;border-color:#fca5a5}[data-theme=light] .settings-sidebar{background:#f8fafc;border-right:1px solid #0f172a14}[data-theme=light] .settings-nav-search{color:#64748b;background:#fff;border:1px solid #0f172a24;box-shadow:0 1px 2px #0f172a0a}[data-theme=light] .settings-nav-search input{color:#0f172a}[data-theme=light] .settings-nav-search input::placeholder{color:#94a3b8}[data-theme=light] .settings-nav-group-label{color:#64748b;font-weight:700}[data-theme=light] .tab-btn{color:#475569}[data-theme=light] .tab-btn:hover{color:#0f172a;background:#f1f5f9}[data-theme=light] .tab-btn.active{color:#0f172a;background:#fff;border:1px solid #0f172a14;font-weight:600;box-shadow:0 1px 3px #0f172a0f}[data-theme=light] .tab-btn.active span{color:#059669}[data-theme=light] .settings-content{color:#0f172a;background:#fff}[data-theme=light] .web-safe-notice{border-bottom:1px solid #0f172a14}[data-theme=light] .web-safe-notice strong{color:#0f172a}[data-theme=light] .web-safe-notice span{color:#64748b}[data-theme=light] .section-kicker{color:#059669;font-weight:700}[data-theme=light] .section-title{color:#0f172a;font-weight:600}[data-theme=light] .section-description{color:#475569}[data-theme=light] .setting-section,[data-theme=light] .section-heading{border-bottom:1px solid #0f172a14}[data-theme=light] .setting-row{border-top:1px solid #0f172a14}[data-theme=light] .setting-row label,[data-theme=light] .toggle-row label{color:#1e293b;font-weight:500}[data-theme=light] .hint{color:#64748b}[data-theme=light] :where(.settings-container) input[type=text],[data-theme=light] :where(.settings-container) input[type=password],[data-theme=light] :where(.settings-container) input[type=email],[data-theme=light] :where(.settings-container) input[type=url],[data-theme=light] :where(.settings-container) textarea{color:#0f172a;background:#fff;border:1px solid #0f172a29}[data-theme=light] :where(.settings-container) input[type=text]:focus,[data-theme=light] :where(.settings-container) input[type=password]:focus,[data-theme=light] :where(.settings-container) input[type=email]:focus,[data-theme=light] :where(.settings-container) input[type=url]:focus,[data-theme=light] :where(.settings-container) textarea:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px #10b9812e}[data-theme=light] :where(.settings-container) select{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;border:1px solid #0f172a29;color:#0f172a!important;background-color:#fff!important}[data-theme=light] :where(.settings-container) select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #10b9812e;background-color:#fff!important}[data-theme=light] :where(.settings-container) select option{color:#0f172a!important;background-color:#fff!important}[data-theme=light] .toggle-visibility{color:#64748b;background:#fff;border:1px solid #0f172a29}[data-theme=light] .toggle-visibility:hover{color:#0f172a;background:#f1f5f9;border-color:#0f172a47}[data-theme=light] .settings-toggle-slider{background:#cbd5e1;border:1px solid #94a3b8}[data-theme=light] .settings-toggle-slider:before{background:#fff;box-shadow:0 1px 3px #0f172a40}[data-theme=light] :where(.settings-container) input:checked+.settings-toggle-slider{background:var(--accent);border-color:var(--accent)}[data-theme=light] :where(.settings-container) input:checked+.settings-toggle-slider:before{background:#fff}[data-theme=light] .range-slider::-webkit-slider-runnable-track{background:#e2e8f0}[data-theme=light] .range-slider::-webkit-slider-thumb{background:var(--accent);border:3px solid #fff;box-shadow:0 1px 4px #0f172a40}[data-theme=light] .btn-secondary{color:#1e293b;background:#eef2f7;border:1px solid #0f172a38;box-shadow:0 1px 3px #0f172a14}[data-theme=light] .btn-secondary:hover{color:#0f172a;background:#e2e8f0;border-color:#0f172a5c;box-shadow:0 2px 6px #0f172a1a}[data-theme=light] .btn-primary{background:var(--accent);color:var(--text-on-accent);border:1px solid #0000;box-shadow:0 1px 3px #10b9814d}[data-theme=light] .btn-primary:hover{background:var(--accent-hover);box-shadow:0 3px 8px #10b98166}[data-theme=light] .settings-footer{-webkit-backdrop-filter:none;background:#f8fafc;border-top:1px solid #0f172a14}[data-theme=light] .settings-footer-version,[data-theme=light] .settings-footer-link{color:#64748b}[data-theme=light] .settings-footer-link:hover{color:#0f172a}[data-theme=light] .settings-footer-separator{color:#0f172a29}.api-key-field{position:relative}.api-key-field input{padding-right:34px}.api-key-toggle{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.api-key-toggle:hover{background:var(--surface-hover);color:var(--text-main)}.setting-actions{border-top:1px solid var(--border);gap:12px;padding:12px 16px;display:flex}.btn-connect{background:var(--accent);color:var(--accent-contrast,#fff);border:1px solid #0000}.provider-cards-container{flex-direction:column;gap:16px;padding:16px;display:flex}.provider-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:0 0;padding:14px 16px;transition:border-color .2s}.provider-card:hover{border-color:var(--border-strong)}.provider-card.active-provider{border-color:color-mix(in srgb, var(--accent) 55%, var(--border))}.provider-card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;display:flex}.provider-card-title{color:var(--text-primary);align-items:center;gap:8px;font-size:.92rem;font-weight:600;display:flex}.settings-provider-logo{object-fit:contain;flex:0 0 16px;width:16px;height:16px;display:block}.settings-provider-logo.is-monochrome{background-color:var(--provider-brand-color);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.custom-provider-logo{object-fit:contain;border-radius:4px}.custom-provider-logo-picker{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.custom-provider-logo-preview{border:1px solid var(--border);background:var(--surface-secondary,#ffffff0a);width:34px;height:34px;color:var(--text-muted);border-radius:7px;justify-content:center;align-items:center;font-size:.65rem;display:flex;overflow:hidden}.custom-provider-logo-preview img{object-fit:contain;width:100%;height:100%}.custom-provider-logo-select{position:relative;overflow:hidden}.custom-provider-logo-select input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.custom-provider-logo-help,.custom-provider-logo-error{color:var(--text-muted);font-size:.72rem}.custom-provider-logo-error{color:var(--danger,#ef4444);flex-basis:100%}.provider-active-badge{color:var(--interactive-fg-hover);letter-spacing:.03em;font-size:.7rem;font-weight:600}.provider-card-body{flex-direction:column;gap:12px;display:flex}.provider-sublist-label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:600;display:block}.provider-sublist-row{align-items:center;gap:8px;margin-bottom:6px;display:flex}.provider-sublist-row input{flex:1}.sublist-add{margin-top:4px}.setting-row.stacked .pill-segmented{justify-self:stretch;width:100%}.accordion-controls{justify-content:flex-end;gap:8px;margin-bottom:12px;display:flex}.accordion-controls button{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-strong);color:var(--text-primary);cursor:pointer;padding:4px 10px;font-size:.76rem}.accordion-controls button:hover{border-color:var(--border-strong)}.section-heading-collapsible{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;padding:18px 0 14px;display:flex}.collapsible-section.is-collapsed .section-heading-collapsible{border-bottom:0;padding-bottom:18px}.section-heading-collapsible .section-kicker{align-items:center;gap:8px;margin:0;display:flex}.section-heading-collapsible .section-title{align-items:center;gap:8px;margin-top:2px;display:flex}.section-chevron{color:var(--text-muted);flex-shrink:0;transition:transform .25s}.collapsible-section.is-open .section-chevron{transform:rotate(180deg)}.section-collapsible-body{border-top:1px solid var(--border);margin-top:12px;padding-top:16px}.provider-card-actions{align-items:center;gap:8px;display:flex}.model-combobox-container{width:100%;position:relative}.model-combobox-trigger{background:var(--input-bg,#ffffff0a);border:1px solid var(--border,#ffffff1a);border-radius:var(--radius-md,8px);width:100%;min-height:38px;color:var(--text-main,#f4f4f5);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:8px;padding:7px 12px;font-family:inherit;font-size:.84rem;transition:all .15s;display:flex}.model-combobox-trigger:hover{background:var(--surface-hover,#ffffff12);border-color:var(--border-strong,#ffffff2e)}.model-combobox-trigger.is-open{border-color:var(--accent,#10b981);box-shadow:0 0 0 2px #10b98126}.model-combobox-trigger-content{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.model-combobox-trigger-text{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.model-combobox-chevron{color:var(--text-muted,#71717a);flex-shrink:0;transition:transform .2s}.model-combobox-chevron.is-open{transform:rotate(180deg)}.model-combobox-dropdown{z-index:120;background:#18181b;border:1px solid #ffffff26;border-radius:10px;flex-direction:column;max-height:380px;animation:.15s cubic-bezier(.16,1,.3,1) comboboxFadeIn;display:flex;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:hidden;box-shadow:0 16px 36px #0000008c,0 0 0 1px #ffffff0d}@keyframes comboboxFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.model-combobox-search-box{background:#ffffff05;border-bottom:1px solid #ffffff14;flex-shrink:0;align-items:center;gap:8px;padding:8px 12px;display:flex}.combobox-search-icon{color:var(--text-muted,#71717a);flex-shrink:0}.model-combobox-search-input{min-width:0;color:var(--text-main,#f4f4f5);flex:1;font-family:inherit;font-size:.82rem;box-shadow:none!important;background:0 0!important;border:none!important;outline:none!important;padding:0!important}.model-combobox-search-input::placeholder{color:var(--text-muted,#71717a)}.combobox-clear-btn{color:var(--text-muted,#71717a);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:2px;display:flex}.combobox-clear-btn:hover{color:var(--text-main,#f4f4f5);background:#ffffff14}.model-combobox-list{flex:1;max-height:320px;padding:4px;overflow-y:auto}.model-combobox-list::-webkit-scrollbar{width:5px}.model-combobox-list::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}.model-combobox-group{margin-bottom:6px}.model-combobox-group-title{letter-spacing:.05em;text-transform:none;color:var(--text-muted,#71717a);padding:6px 10px 3px;font-size:.67rem;font-weight:700}.model-combobox-item{cursor:pointer;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;transition:background .12s;display:flex}.model-combobox-item:hover,.model-combobox-item.is-highlighted{background:#ffffff12}.model-combobox-item.is-selected{background:#10b9811f}.combobox-item-left{flex-direction:column;flex:1;min-width:0;display:flex}.combobox-item-row{align-items:center;gap:6px;display:flex}.combobox-item-name{color:var(--text-main,#f4f4f5);text-overflow:ellipsis;white-space:nowrap;font-size:.83rem;font-weight:500;overflow:hidden}.combobox-item-repo{color:var(--text-muted,#71717a);text-overflow:ellipsis;white-space:nowrap;font-size:.69rem;overflow:hidden}.combobox-check-icon{color:var(--interactive-fg);flex-shrink:0}.custom-query-item{background:#10b9810f;border-bottom:1px solid #ffffff14;margin-bottom:4px}.combobox-custom-badge{color:var(--text-muted,#a1a1aa);background:#ffffff1a;border-radius:4px;padding:1px 5px;font-size:.65rem}.custom-option-item{border-top:1px solid #ffffff14;margin-top:4px;padding-top:8px}.model-combobox-empty{text-align:center;color:var(--text-muted,#71717a);padding:16px;font-size:.8rem}.combobox-see-more-wrap{padding:4px 6px}.combobox-see-more-btn{width:100%;color:var(--text-muted,#a1a1aa);cursor:pointer;background:#ffffff08;border:1px dashed #ffffff24;border-radius:6px;outline:none;justify-content:center;align-items:center;gap:8px;padding:7px 12px;font-family:inherit;font-size:.76rem;font-weight:500;transition:all .18s cubic-bezier(.16,1,.3,1);display:flex}.combobox-see-more-btn:hover{color:var(--text-main,#f4f4f5);background:#ffffff12;border-color:#ffffff42}.combobox-see-more-btn svg{color:var(--interactive-fg)}.combobox-see-more-btn.collapse-btn{background:0 0;border-color:#ffffff14;padding:5px 8px;font-size:.72rem}.combobox-see-more-btn.collapse-btn:hover{color:var(--text-muted,#a1a1aa);background:#ffffff0d;border-color:#ffffff2e}[data-theme=light] .provider-card{background:#f8fafc;border:1px solid #0f172a1a;box-shadow:0 1px 2px #0f172a0a}[data-theme=light] .provider-card:hover{border-color:#0f172a38}[data-theme=light] .provider-card.active-provider{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 2px 10px #10b9811a;background:#fff}[data-theme=light] .provider-card-header{border-bottom:1px solid #0f172a14}[data-theme=light] .provider-card-title{color:#0f172a}[data-theme=light] .provider-active-badge{color:#059669;font-weight:700}[data-theme=light] .model-combobox-trigger{color:#0f172a;background:#fff;border:1px solid #0f172a29}[data-theme=light] .model-combobox-trigger:hover{background:#f8fafc;border-color:#0f172a47}[data-theme=light] .model-combobox-dropdown{background:#fff;border:1px solid #0f172a24;box-shadow:0 16px 36px #0f172a1f,0 2px 8px #0f172a0f}[data-theme=light] .model-combobox-search-box{background:#f8fafc;border-bottom:1px solid #0f172a14}[data-theme=light] .model-combobox-search-input{color:#0f172a!important}[data-theme=light] .model-combobox-search-input::placeholder,[data-theme=light] .model-combobox-group-title{color:#64748b}[data-theme=light] .model-combobox-item{color:#0f172a}[data-theme=light] .model-combobox-item:hover,[data-theme=light] .model-combobox-item.is-highlighted{background:#f1f5f9}[data-theme=light] .model-combobox-item.is-selected{background:#10b9811f}[data-theme=light] .combobox-item-name{color:#0f172a}[data-theme=light] .combobox-item-repo,[data-theme=light] .combobox-clear-btn{color:#64748b}[data-theme=light] .combobox-clear-btn:hover{color:#0f172a;background:#e2e8f0}[data-theme=light] .combobox-see-more-btn{color:#475569;background:#f8fafc;border-color:#0f172a26}[data-theme=light] .combobox-see-more-btn:hover{color:#0f172a;background:#f1f5f9;border-color:#0f172a47}[data-theme=light] .combobox-see-more-btn.collapse-btn{color:#64748b;background:0 0;border-color:#0f172a1a}[data-theme=light] .custom-query-item{background:#10b98114;border-bottom:1px solid #0f172a14}[data-theme=light] .combobox-custom-badge{color:#475569;background:#e2e8f0}.setting-feature-card{border-radius:var(--radius-lg);background:var(--surface-strong);border:1px solid var(--border);margin-top:.75rem;padding:.85rem 1rem;transition:border-color .2s,box-shadow .2s}[data-theme=light] .setting-feature-card{background:#f8fafc;border:1px solid #0f172a1a;box-shadow:0 1px 2px #0f172a08}[data-theme=light] .setting-feature-card:hover{border-color:#0f172a2e}[data-theme=light] .setting-feature-card .btn-secondary.active{font-weight:600;color:#047857!important;background:#10b9811f!important;border-color:#059669!important}.btn-small{min-height:32px;padding:6px 11px;font-size:.78rem}.profile-header-card{border-bottom:1px solid var(--border);align-items:center;gap:20px;padding:20px 16px;display:flex}.profile-avatar{background:var(--accent);width:64px;height:64px;color:var(--accent-contrast,#fff);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:1.3rem;font-weight:700;display:flex;overflow:hidden}.profile-avatar-lg{width:80px;height:80px;font-size:1.6rem}.profile-avatar img{object-fit:cover;width:100%;height:100%}.profile-header-meta{flex-direction:column;align-items:flex-start;gap:4px;min-width:0;display:flex}.profile-header-name{color:var(--text-main);font-size:1.1rem;font-weight:600}.profile-header-email{color:var(--text-muted);font-size:.85rem}.profile-header-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.profile-message-error{color:#ef4444;font-size:.8rem}.crop-modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(12px);background:#000000b8;justify-content:center;align-items:center;padding:16px;animation:.18s ease-out cropFadeIn;display:flex;position:fixed;inset:0}@keyframes cropFadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.crop-modal-card{background:var(--bg-surface-raised,#18181c);border:1px solid var(--border-default,#ffffff1f);border-radius:var(--radius-2xl,20px);width:100%;max-width:440px;color:var(--text-primary,#f8fafc);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 24px 64px #0009}[data-theme=light] .crop-modal-card{color:#0f172a;background:#fff;border:1px solid #0f172a24;box-shadow:0 25px 60px -12px #0f172a40}.crop-modal-header{border-bottom:1px solid var(--border-subtle,#ffffff14);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}[data-theme=light] .crop-modal-header{border-bottom-color:#0f172a14}.crop-modal-back-btn{width:34px;height:34px;color:var(--text-secondary,#cbd5e1);cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;transition:background .15s,color .15s;display:grid}.crop-modal-back-btn:hover{background:var(--bg-surface-hover,#ffffff1a);color:var(--text-primary,#fff)}[data-theme=light] .crop-modal-back-btn{color:#475569}[data-theme=light] .crop-modal-back-btn:hover{color:#0f172a;background:#f1f5f9}.crop-modal-title{margin:0;font-size:1.05rem;font-weight:600}.crop-modal-reset-btn{color:var(--interactive-fg);cursor:pointer;border-radius:var(--radius-sm,6px);background:0 0;border:none;padding:6px 10px;font-size:.82rem;font-weight:600;transition:background .15s}.crop-modal-reset-btn:hover{background:var(--accent-subtle,#10b9811f)}.crop-modal-stage{background:#0006;flex-direction:column;justify-content:center;align-items:center;padding:24px 20px 16px;display:flex}[data-theme=light] .crop-modal-stage{background:#0f172a}.crop-viewport{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;background:#000;border-radius:4px;position:relative;overflow:hidden;box-shadow:0 8px 32px #00000080}.crop-viewport:active{cursor:grabbing}.crop-image{pointer-events:none;transform-origin:50%;will-change:transform;max-width:none;position:absolute;top:50%;left:50%}.crop-mask-circle{pointer-events:none;border:2px solid #ffffffa6;border-radius:50%;position:absolute;inset:0;box-shadow:0 0 0 9999px #0000009e}.crop-bracket{pointer-events:none;z-index:2;border-style:solid;border-color:#fff;width:20px;height:20px;position:absolute}.crop-bracket-tl{border-width:3px 0 0 3px;border-top-left-radius:3px;top:4px;left:4px}.crop-bracket-tr{border-width:3px 3px 0 0;border-top-right-radius:3px;top:4px;right:4px}.crop-bracket-bl{border-width:0 0 3px 3px;border-bottom-left-radius:3px;bottom:4px;left:4px}.crop-bracket-br{border-width:0 3px 3px 0;border-bottom-right-radius:3px;bottom:4px;right:4px}.crop-hint-drag{color:#ffffffa6;text-align:center;margin:12px 0 0;font-size:.74rem}.crop-modal-controls{flex-direction:column;gap:16px;padding:18px 24px 22px;display:flex}.crop-zoom-row{align-items:center;gap:12px;display:flex}.crop-zoom-btn{border:1px solid var(--border-default,#ffffff24);background:var(--bg-surface,#ffffff0f);width:28px;height:28px;color:var(--text-secondary,#cbd5e1);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;transition:background .15s,color .15s;display:grid}.crop-zoom-btn:hover{background:var(--bg-surface-hover,#ffffff1f);color:var(--text-primary,#fff)}[data-theme=light] .crop-zoom-btn{color:#475569;background:#f1f5f9;border-color:#0f172a24}[data-theme=light] .crop-zoom-btn:hover{color:#0f172a;background:#e2e8f0}.crop-zoom-slider{flex:1}.crop-rotate-row{justify-content:center;display:flex}.crop-rotate-btn{border:1px solid var(--border-default,#ffffff24);border-radius:var(--radius-md,8px);background:var(--bg-surface-soft,#ffffff0d);color:var(--text-primary,#fff);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-width:72px;padding:10px 18px;transition:transform .15s,background .15s,border-color .15s;display:flex}.crop-rotate-btn:hover{background:var(--bg-surface-hover,#ffffff1a);border-color:var(--border-strong,#ffffff40);transform:translateY(-1px)}.crop-rotate-btn:active{transform:translateY(0)}[data-theme=light] .crop-rotate-btn{color:#0f172a;background:#f8fafc;border-color:#0f172a24;box-shadow:0 1px 3px #0f172a0a}[data-theme=light] .crop-rotate-btn:hover{background:#f1f5f9;border-color:#0f172a3d}.crop-rotate-icon{color:var(--text-primary,#fff);place-items:center;display:grid}[data-theme=light] .crop-rotate-icon{color:#0f172a}.crop-rotate-label{font-size:.78rem;font-weight:500}.crop-actions-row{justify-content:flex-end;align-items:center;gap:10px;margin-top:4px;display:flex}.crop-btn-cancel{min-width:80px}.crop-btn-confirm{min-width:100px;font-weight:600;border-radius:var(--radius-full,9999px)!important;padding:8px 24px!important}.bridge-cards-container{flex-direction:column;gap:14px;margin-top:10px;display:flex}.bridge-card{background:var(--surface-bg,#ffffff06);border:1px solid var(--border,#ffffff14);border-radius:var(--radius-xl);box-shadow:var(--shadow-xs);padding:16px 18px;transition:all .25s cubic-bezier(.4,0,.2,1)}.bridge-card:hover{border-color:var(--border-strong,#ffffff2e);box-shadow:var(--shadow-md)}.bridge-card-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.bridge-info{align-items:center;gap:12px;display:flex}.bridge-icon-badge{border-radius:var(--radius-lg);color:#fff;width:38px;height:38px;box-shadow:var(--shadow-xs);flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.bridge-icon-telegram{background:linear-gradient(135deg,#08c 0%,#24a1de 100%)}.bridge-icon-discord{background:linear-gradient(135deg,#5865f2 0%,#4752c4 100%)}.bridge-icon-slack{background:linear-gradient(135deg,#4a154b 0%,#611f69 100%)}.bridge-icon-line{background:linear-gradient(135deg,#00b900 0%,#00c300 100%)}.bridge-icon-whatsapp{background:linear-gradient(135deg,#25d366 0%,#128c7e 100%)}.bridge-title-group{flex-direction:column;gap:3px;display:flex}.bridge-title{color:var(--text-primary);align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.bridge-status-pill{border-radius:var(--radius-xl);text-transform:none;letter-spacing:.5px;padding:2px 8px;font-size:10px;font-weight:600}.bridge-status-pill.inactive{background:var(--surface-strong);color:var(--text-muted);border:1px solid var(--border)}.bridge-subtitle{color:var(--text-muted);font-size:12px}.bridge-inputs{border-top:1px dashed var(--border);flex-direction:column;gap:10px;margin-top:14px;padding-top:12px;display:flex}.bridge-input-row{gap:10px;display:flex}.bridge-input{background:var(--input-bg);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);padding:9px 12px;font-size:13px;transition:all .2s}.bridge-input:focus{border-color:var(--accent);background:var(--input-focus-bg);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent);outline:none}.bridge-input[type=number]{appearance:textfield}.bridge-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bridge-input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tui-theme-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.tui-theme-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--input-bg);min-width:0;color:var(--text-main);text-align:left;cursor:pointer;flex-direction:column;gap:5px;padding:10px;display:flex}.tui-theme-card:hover,.tui-theme-card:focus-visible{border-color:var(--border-light)}.tui-theme-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tui-theme-preview{border-radius:var(--radius-sm);white-space:nowrap;background:var(--tui-preview-bg);min-height:80px;color:var(--tui-preview-text);border:1px solid #80808047;padding:7px 4px;font:10px/1.55 monospace;display:block;overflow:hidden}.tui-theme-preview[data-tui-theme=system],.tui-theme-preview[data-tui-theme=dark]{--tui-preview-bg:#1d2221;--tui-preview-text:#e2eae4;--tui-preview-muted:#86948b;--tui-preview-keyword:#7eb0f5;--tui-preview-added:#69e6a6;--tui-preview-added-bg:#183725;--tui-preview-removed:#ee7e7e;--tui-preview-removed-bg:#391e1e}.tui-theme-preview[data-tui-theme=light]{--tui-preview-bg:#f4f7f4;--tui-preview-text:#232f2a;--tui-preview-muted:#69746d;--tui-preview-keyword:#18639f;--tui-preview-added:#156f3e;--tui-preview-added-bg:#ddefe1;--tui-preview-removed:#ab3737;--tui-preview-removed-bg:#f8e5e5}.tui-theme-code-row{text-overflow:clip;display:block;overflow:hidden}.tui-theme-code-gutter{color:var(--tui-preview-muted)}.tui-theme-code-keyword{color:var(--tui-preview-keyword)}.tui-theme-code-removed{background:var(--tui-preview-removed-bg);color:var(--tui-preview-removed)}.tui-theme-code-added{background:var(--tui-preview-added-bg);color:var(--tui-preview-added)}.tui-theme-code-removed .tui-theme-code-gutter{color:var(--tui-preview-removed)}.tui-theme-code-added .tui-theme-code-gutter{color:var(--tui-preview-added)}.tui-theme-card-label{font-size:.86rem;font-weight:700}.tui-theme-card-label span{color:var(--accent)}.tui-theme-card-description,.tui-theme-hint{color:var(--text-muted);font-size:.76rem}.tui-theme-hint{margin:10px 0 0}@media (width<=680px){.tui-theme-grid{grid-template-columns:1fr}}.theme-segmented{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--input-bg);justify-self:end;align-items:center;gap:2px;padding:3px;display:inline-flex}.theme-segmented-btn{border-radius:var(--radius-sm);width:34px;height:42px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:6px 0 5px;transition:background .15s,color .15s;display:flex}.theme-segmented-swatch{border-radius:3px;width:18px;height:5px}.theme-segmented-btn:hover{color:var(--text-main)}.theme-segmented-btn.active{background:var(--surface-strong);color:var(--text-main)}.custom-theme-panel{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--input-bg);margin:0 14px 14px;padding:0;overflow:hidden}.color-range{align-items:center;gap:10px;display:flex}.color-presets{flex-wrap:wrap;gap:10px;display:flex}.color-dot{cursor:pointer;border:3px solid #0000;border-radius:50%;width:31px;height:31px;transition:transform .15s,border-color .15s,box-shadow .15s;box-shadow:inset 0 0 0 1px #ffffff38}.color-dot:hover{transform:scale(1.08)}.pill-segmented{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--input-bg);flex-wrap:wrap;place-self:center end;gap:4px;max-width:100%;padding:3px;display:inline-flex}.pill-segmented-btn{border-radius:var(--radius-sm);color:var(--text-secondary);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;padding:7px 14px;font-size:.82rem;font-weight:600;transition:background .15s,color .15s,border-color .15s}.pill-segmented-btn:hover{color:var(--text-primary)}.pill-segmented-btn:disabled{opacity:.4;cursor:not-allowed}.pill-segmented-btn:disabled:hover{color:var(--text-muted)}.pill-segmented-btn.active{background:var(--surface-strong);border-color:color-mix(in srgb, var(--accent) 55%, transparent);color:var(--text-primary)}.toggle-card{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.toggle-card .toggle-row{border:0;border-top:1px solid var(--border);border-radius:0}.toggle-card .toggle-row:first-child{border-top:0}.setting-row>.hint{grid-column:1/-1;margin:2px 0 0}.reduced-effects-row input:focus-visible+.settings-toggle-slider{outline:2px solid var(--accent,#10b981);outline-offset:3px}.section-current-badge{letter-spacing:.02em;border-radius:var(--radius-full);background:var(--surface-strong);color:var(--text-muted);white-space:nowrap;padding:2px 8px;font-size:.68rem;font-weight:600}.theme-preset-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.theme-preset-badge-tag{color:var(--interactive-fg);background:color-mix(in srgb, var(--accent) 12%, transparent);border-radius:var(--radius-full);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);padding:2px 8px;font-size:.72rem;font-weight:600}.theme-preset-grid{grid-template-columns:repeat(3,1fr);gap:12px;width:100%;display:grid}@media (width<=680px){.theme-preset-grid{grid-template-columns:1fr}}.theme-preset-card{border-radius:var(--radius-md);background:var(--input-bg);border:1px solid var(--border);cursor:pointer;text-align:left;outline:none;flex-direction:column;padding:10px;transition:transform .18s,border-color .18s,box-shadow .18s;display:flex;position:relative}.theme-preset-card:hover{border-color:var(--border-light);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.theme-preset-card.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--input-bg));box-shadow:0 0 0 1px var(--accent), var(--glow-accent-sm)}.theme-preset-preview{border-radius:var(--radius-sm);box-sizing:border-box;border:1px solid #80808033;justify-content:center;align-items:center;width:100%;height:76px;padding:8px;display:flex;overflow:hidden}.preset-mini-window{box-sizing:border-box;border:1px solid #8080802e;border-radius:6px;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:6px 8px;display:flex;box-shadow:0 2px 8px #0003}.preset-mini-header{align-items:center;gap:4px;display:flex}.preset-mini-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.preset-mini-dot.dot-red{background:#ef4444}.preset-mini-dot.dot-yellow{background:#f59e0b}.preset-mini-dot.dot-green{background:#10b981}.preset-mini-pill{border-radius:4px;margin-left:auto;padding:2px 6px;font-size:.6rem;font-weight:700;line-height:1}.preset-mini-body{align-items:center;gap:8px;margin-top:4px;display:flex}.preset-mini-text{font-family:inherit;font-size:1.15rem;font-weight:700;line-height:1}.preset-mini-lines{flex-direction:column;flex:1;gap:3px;display:flex}.preset-mini-line-main{border-radius:2px;width:80%;height:4px}.preset-mini-line-accent{border-radius:2px;width:45%;height:3px}.theme-preset-meta{flex-direction:column;gap:4px;margin-top:10px;display:flex}.theme-preset-title-row{align-items:center;gap:4px;display:flex}.theme-preset-number{color:var(--interactive-fg);font-size:.86rem;font-weight:700}.theme-preset-title{color:var(--text-main);font-size:.88rem;font-weight:600}.theme-preset-active-check{background:var(--accent);width:18px;height:18px;color:var(--accent-contrast,#fff);border-radius:50%;justify-content:center;align-items:center;margin-left:auto;display:inline-flex}.theme-preset-desc,.theme-preset-desc-th{color:var(--text-soft);margin:0;font-size:.74rem;line-height:1.35}.theme-preset-swatches{border-top:1px dashed var(--border);align-items:center;gap:8px;margin-top:6px;padding-top:6px;display:flex}.preset-swatch-item{align-items:center;gap:4px;display:inline-flex}.preset-swatch-circle{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.preset-swatch-label{color:var(--text-muted);font-size:.66rem}.color-mode-grid{grid-template-columns:repeat(4,1fr);gap:10px;width:100%;display:grid}@media (width<=720px){.color-mode-grid{grid-template-columns:repeat(2,1fr)}}.color-mode-card{border-radius:var(--radius-md);background:var(--input-bg);border:1px solid var(--border);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:8px;padding:12px;transition:all .18s;display:flex;position:relative}.color-mode-card:hover{background:var(--surface-strong);border-color:var(--border-strong);transform:translateY(-1px)}.color-mode-card.active{background:color-mix(in srgb, var(--accent) 10%, var(--input-bg));border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), var(--glow-accent-xs)}.mode-card-icon{border-radius:var(--radius-sm);background:var(--surface-strong);width:32px;height:32px;color:var(--text-main);justify-content:center;align-items:center;display:flex}.color-mode-card.active .mode-card-icon{background:var(--accent);color:var(--accent-contrast,#fff)}.mode-card-text{flex-direction:column;gap:2px;display:flex}.mode-card-title{color:var(--text-main);font-size:.86rem;font-weight:600}.mode-card-desc{color:var(--text-muted);font-size:.72rem}.mode-card-badge{background:var(--accent);width:18px;height:18px;color:var(--accent-contrast,#fff);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;right:8px}.flavor-grid{grid-template-columns:repeat(6,1fr);gap:10px;width:100%;display:grid}@media (width<=720px){.flavor-grid{grid-template-columns:repeat(3,1fr)}}.flavor-card{border-radius:var(--radius-md);background:var(--input-bg);border:1px solid var(--border);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:10px 8px;transition:all .18s;display:flex}.flavor-card:hover{background:var(--surface-strong);border-color:var(--border-strong);transform:translateY(-1px)}.flavor-card.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--input-bg));box-shadow:0 0 0 1px var(--accent)}.flavor-swatch{border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;display:flex;box-shadow:0 2px 6px #0003}.flavor-name{color:var(--text-main);font-size:.76rem;font-weight:600}.custom-accent-toggle{color:var(--interactive-fg);cursor:pointer;border-radius:var(--radius-xs);background:0 0;border:none;padding:2px 6px;font-size:.74rem}.custom-accent-toggle:hover{text-decoration:underline}.custom-accent-box{border-radius:var(--radius-md);background:var(--input-bg);border:1px solid var(--border);align-items:center;gap:12px;width:fit-content;padding:8px 12px;display:flex}.custom-accent-input{border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:none;width:32px;height:32px}.custom-accent-value{color:var(--text-main);font-family:ui-monospace,monospace;font-size:.82rem;font-weight:600}.surface-style-grid{grid-template-columns:repeat(2,1fr);gap:10px;width:100%;display:grid}@media (width<=600px){.surface-style-grid{grid-template-columns:1fr}}.surface-card{border-radius:var(--radius-md);background:var(--input-bg);border:1px solid var(--border);cursor:pointer;text-align:left;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 16px;transition:all .18s;display:flex}.surface-card:hover{background:var(--surface-strong);border-color:var(--border-strong);transform:translateY(-1px)}.surface-card.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--input-bg));box-shadow:0 0 0 1px var(--accent)}.surface-card-title{color:var(--text-main);font-size:.88rem;font-weight:600}.surface-card-desc{color:var(--text-muted);font-size:.74rem;line-height:1.35}[data-theme=light] .pill-segmented{background:#f1f5f9;border:1px solid #0f172a14}[data-theme=light] .pill-segmented-btn{color:#475569}[data-theme=light] .pill-segmented-btn:hover{color:#0f172a;background:#fff9}[data-theme=light] .pill-segmented-btn.active{color:#047857;background:#fff;border-color:#0000;font-weight:600;box-shadow:0 1px 3px #0f172a1a,0 0 0 1px #10b9814d}[data-theme=light] .section-current-badge{color:#475569;background:#f1f5f9;border:1px solid #0f172a14}[data-theme=light] .theme-preset-card{background:#fff;border:1px solid #0f172a1f;box-shadow:0 1px 3px #0f172a0a}[data-theme=light] .theme-preset-card:hover{border-color:#0f172a3d;box-shadow:0 4px 12px #0f172a14}[data-theme=light] .theme-preset-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 4px 14px #10b98126;background:#fff}[data-theme=light] .surface-card{background:#fff;border:1px solid #0f172a1f;box-shadow:0 1px 3px #0f172a0a}[data-theme=light] .surface-card:hover{background:#f8fafc;border-color:#0f172a3d}[data-theme=light] .surface-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 2px 8px #10b9811a;background:#fff}.plugin-list{gap:10px;display:grid}.plugin-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-bg);grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.plugin-icon{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-strong);place-items:center;width:38px;height:38px;display:grid}.plugin-name{color:var(--text-main);margin-bottom:3px;font-size:.92rem;font-weight:600}.plugin-desc{color:var(--text-muted);font-size:.78rem;line-height:1.35}.plugin-desc.mono{word-break:break-word;font-family:JetBrains Mono,Consolas,Monaco,monospace;font-size:.74rem}.mcp-list{gap:10px;margin-bottom:16px;display:grid}.add-skill-box,.add-mcp-box{border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--surface-bg);flex-direction:column;gap:14px;padding:20px;display:flex}.add-skill-box h3,.add-mcp-box h3{color:var(--text-main);font-size:1rem;font-weight:600}.add-skill-box .setting-row.stacked,.add-mcp-box .setting-row.stacked{border-top:0;gap:6px;min-height:0;padding:0}.plugin-config-panel{border-top:1px solid var(--border);background:#00000026;flex-direction:column;gap:12px;padding:18px 20px;display:flex}.plugin-config-panel .setting-row.stacked{gap:6px}.plugin-config-panel h4{color:var(--interactive-fg);letter-spacing:.05em;text-transform:none;font-size:.78rem;font-weight:600}.plugin-card-wrapper{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-bg);transition:border-color .2s;overflow:hidden}.plugin-card-wrapper.active-plugin-card{border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.plugin-card-wrapper.is-discovered{opacity:.65}.plugin-card-wrapper .plugin-card{background:0 0;border:0;border-radius:0;justify-content:space-between;gap:16px;display:flex}.plugin-card-main{align-items:center;gap:14px;min-width:0;display:flex}.plugin-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.plugin-name-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.plugin-tag{border-radius:var(--radius-sm);background:var(--surface-strong);color:var(--text-soft);white-space:nowrap;padding:2px 7px;font-size:.7rem;font-weight:600}.plugin-tag.accent{background:var(--accent);color:var(--accent-contrast,#fff)}.plugin-tag.ok{color:#10b981;background:#10b98129}.plugin-tag.info{background:color-mix(in srgb, var(--accent) 16%, transparent);color:var(--interactive-fg-hover)}.plugin-status{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;align-items:center;gap:5px;padding:2px 8px;font-size:.72rem;font-weight:500;display:inline-flex}.plugin-status.connected{color:#10b981;background:#10b9811f;border-color:#10b9814d}.plugin-status:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.btn-icon{border-radius:var(--radius-sm);color:var(--text-soft);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:6px;transition:background .15s,color .15s;display:inline-flex}.btn-icon:hover{background:var(--surface-hover);color:var(--text-main)}.btn-icon.is-active{background:var(--accent);color:var(--accent-contrast,#fff)}.btn-icon.danger{color:var(--danger)}.btn-icon.danger:hover{background:color-mix(in srgb, var(--danger) 14%, transparent)}.btn-sm{border-radius:var(--radius-md);white-space:nowrap;height:32px;padding:0 14px;font-size:.8rem}.btn-xs{border-radius:var(--radius-sm);padding:3px 8px;font-size:.75rem}.btn-full{width:100%}.skills-list{flex-direction:column;gap:10px;margin-bottom:18px;display:flex}.skill-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-bg);justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;display:flex}.skill-card-body{flex:1;min-width:0}.skill-card-desc{color:var(--text-muted);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-top:6px;font-size:.8rem;display:-webkit-box;overflow:hidden}.empty-skills-notice{border:1px dashed var(--border);border-radius:var(--radius-lg);text-align:center;color:var(--text-muted);margin-bottom:18px;padding:22px;font-size:.88rem}.mcp-empty-notice{text-align:center;color:var(--text-muted);padding:20px;font-size:.88rem}.entity-list{flex-direction:column;gap:16px;display:flex}.entity-card{border:1px solid var(--panel-raised);border-radius:var(--radius-md);background:var(--panel-bg);flex-direction:column;gap:8px;padding:16px;display:flex}.entity-card-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.entity-card-header-left{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.entity-card-header-actions{align-items:center;gap:14px;display:flex}.entity-card-name{font-size:18px}.entity-card-badge{border-radius:var(--radius-xs);background:var(--panel-raised);color:var(--interactive-fg);padding:2px 6px;font-size:11px}.entity-card-badge.scope-workspace{color:#10b981;background:#10b98126}.entity-card-badge.scope-global{color:#3b82f6;background:#3b82f626}.entity-card-desc{color:var(--text-soft);margin:4px 0 0;font-size:14px;font-style:italic}.entity-card-meta{color:var(--text-soft);margin:0;font-size:12px}.entity-empty{color:var(--text-soft);text-align:center;padding:32px;font-style:italic}.shortcut-list{gap:10px;display:grid}.shortcut-item{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-bg);color:var(--text-soft);justify-content:space-between;align-items:center;gap:16px;padding:13px 14px;font-size:.88rem;display:flex}.keys{align-items:center;gap:6px;display:flex}@media (width<=760px){body{height:var(--mint-viewport-height,100dvh)}.settings-container{width:100%;height:100%;box-shadow:none;border:0;border-radius:0}.settings-header{min-height:calc(56px + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0 16px;align-items:center;display:flex}.settings-header .header-left{flex:1;min-width:0}.settings-header .header-left p{display:none}.settings-header .close-btn{border:1px solid var(--border);background:var(--bg-surface-soft);flex:0 0 44px;width:44px;height:44px;margin-left:8px;position:static;top:auto;right:auto;transform:none}.settings-header .close-btn:hover{transform:none}.settings-body{flex-direction:column}.settings-sidebar{border-right:0;border-bottom:1px solid var(--border);flex-direction:column;flex:none;width:100%;min-width:0;padding:8px 10px;display:flex;overflow:hidden}.settings-nav-search{margin:0 0 6px}.settings-nav-search input{font-size:16px}.settings-nav-scroll{-webkit-overflow-scrolling:touch;gap:6px;display:flex;overflow:auto hidden}.settings-nav-group{flex:none;gap:6px;display:flex}.settings-nav-group+.settings-nav-group{margin-top:0}.settings-nav-group-label{display:none}.tab-btn,.tab-btn+.tab-btn{white-space:nowrap;justify-content:center;gap:6px;width:auto;min-height:44px;margin:0;padding:8px 10px}.tab-btn strong{display:inline}.settings-content{-webkit-overflow-scrolling:touch;min-height:0;padding:16px 14px 24px;overflow-x:hidden}.settings-content .tab-pane,.settings-content .setting-section,.settings-content .section-collapsible-body,.settings-content .form-grid,.settings-content .provider-cards-container,.settings-content .provider-card,.settings-content .provider-card-body{width:100%;min-width:0;max-width:100%}.settings-content .form-grid.two-col{grid-template-columns:minmax(0,1fr)}.settings-content .setting-row,.settings-content .provider-card-body .setting-row{grid-template-columns:minmax(0,1fr);gap:8px;width:100%;min-width:0;padding:12px 0}.settings-content .setting-row>*,.settings-content .toggle-row>*{min-width:0}.settings-content .toggle-row{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:12px 0}.settings-content .button-row,.settings-content .setting-actions{flex-wrap:wrap}.settings-content .setting-row select,.settings-content .setting-row input:not([type=checkbox]):not([type=radio]):not([type=color]),.settings-content .setting-row textarea,.settings-content .model-combobox-container{justify-self:stretch;width:100%;min-width:0;max-width:100%;font-size:16px}.settings-content .model-combobox-search-input{font-size:16px}.settings-content .provider-cards-container{gap:12px;padding:0}.settings-content .provider-card,.settings-content .setting-feature-card{border-radius:18px;min-width:0;padding:14px}.settings-content .provider-card-header{flex-wrap:wrap;align-items:flex-start;gap:10px}.settings-content .provider-card-title{overflow-wrap:anywhere;flex:100%;min-width:0}.settings-content .provider-card-actions{margin-left:auto}.settings-content .provider-card-actions button,.settings-content .pill-segmented-btn{min-height:40px}.settings-content .pill-segmented{justify-self:stretch;width:100%;min-width:0}.settings-content .section-heading-collapsible>div{min-width:0}.settings-content .section-title,.settings-content .section-description,.settings-content .setting-row label,.settings-content .hint{overflow-wrap:anywhere}.thinking-card-header,.thinking-card-status,.thinking-card-effort-row{flex-wrap:wrap;gap:8px}.thinking-card-title{overflow-wrap:anywhere;flex-wrap:wrap;flex:100%;min-width:0}.thinking-card-status{justify-content:space-between;width:100%;min-width:0}.thinking-card-status .section-current-badge{white-space:normal;overflow-wrap:anywhere;max-width:100%}.thinking-card-toggle-row{gap:12px}.thinking-card-toggle-row>div{flex:auto;min-width:0}.thinking-card-toggle-row .settings-toggle-switch{flex:0 0 46px}.thinking-card-effort-row>span{flex:100%}.thinking-card-effort-options{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;min-width:0;gap:8px!important;display:grid!important}.thinking-card-effort-options button{white-space:normal;min-width:0;min-height:44px}.settings-footer{min-height:0;padding:8px 10px calc(8px + env(safe-area-inset-bottom));flex-direction:row;display:flex}.settings-footer-meta{display:none}.settings-footer .footer-actions{gap:8px;width:100%;margin:0;display:flex}.settings-footer .footer-actions button{white-space:normal;flex:1;justify-content:center;min-width:0;min-height:44px;padding:8px}.settings-container,.settings-header,.settings-sidebar,.settings-content,.settings-footer{background:var(--bg-overlay);-webkit-backdrop-filter:none}.settings-nav-search,.tab-btn{border-radius:14px}}.settings-container .memory-tab{-webkit-user-select:text;user-select:text;gap:28px;max-width:800px;padding-top:8px}.memory-intro h2{color:var(--text-primary);letter-spacing:-.025em;margin:6px 0 10px;font-size:1.5rem;font-weight:600;line-height:1.3}.memory-intro>p:last-child,.memory-helper,.memory-scope-note p{color:var(--text-muted);font-size:.875rem;line-height:1.65}.memory-name-section{border-bottom:1px solid var(--border);gap:10px;padding-bottom:24px;display:grid}.memory-name-section label,.memory-section-heading h3{color:var(--text-primary);font-size:1rem;font-weight:600;line-height:1.5}.memory-tab .memory-name-section input{max-width:400px;min-height:44px;padding:10px 14px;font-size:1rem}.memory-section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.memory-section-heading .memory-helper{margin-top:5px}.memory-tab .memory-mode-button{flex-shrink:0;min-height:44px;padding:10px 14px;font-size:.85rem}.memory-tab .memory-mode-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.memory-instructions-content{min-width:0}.memory-reading-frame{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg);max-height:360px;color:var(--text-primary);overflow-wrap:anywhere;white-space:pre-wrap;padding:16px 18px;font-size:1rem;line-height:1.8;overflow-y:auto}.memory-reading-frame:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.memory-editor-label{color:var(--text-primary);margin-bottom:10px;font-size:.875rem;display:block}.memory-tab textarea.memory-editor{resize:vertical;max-width:100%;min-height:260px;padding:14px 16px;font-family:inherit;font-size:1rem;line-height:1.8}.memory-instructions-content>.memory-helper{margin-top:10px}.memory-empty{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);padding:20px;font-size:1rem;line-height:1.6}.memory-empty .memory-helper{margin-top:6px}.memory-scope-note{border-top:1px solid var(--border);margin-top:4px;padding-top:20px}.memory-scope-note strong{color:var(--text-soft);margin-bottom:6px;font-size:.875rem;font-weight:600;display:block}@media (width<=760px){.settings-container .memory-tab{gap:24px}.memory-intro h2{font-size:1.25rem}.memory-section-heading{flex-direction:column;gap:12px}.memory-tab .memory-name-section input{max-width:none}.memory-reading-frame{padding:14px}}@media (prefers-reduced-motion:reduce){.settings-container .memory-tab{animation:none}}
@@ -1,2 +0,0 @@
1
- import{i as e,n as t}from"./chunk-CacB07dV.js";import{n,t as r}from"./jsx-runtime-DN4NhQUK.js";import{B as i,N as a,V as o,j as s}from"./config-CnvCChUM.js";import{a as c,n as l}from"./markdown-CMhYIcWB.js";function u(e){if(e.description?.trim())return e.description.trim();let t=e.content.trimStart().split(/\r?\n/);if(t[0]?.trim()===`---`){let e=t.findIndex((e,t)=>t>0&&e.trim()===`---`);if(e>0){let n=t.slice(1,e).find(e=>/^description\s*:/i.test(e.trim()));if(n){let e=n.replace(/^\s*description\s*:\s*/i,``).trim();if(e&&e!==`>`&&e!==`|`)return e.replace(/^("([\s\S]*)"|'([\s\S]*)')$/,(e,t,n,r)=>n??r)}t.splice(0,e+1)}}return t.map(e=>e.replace(/^#+\s*/,``).trim()).find(Boolean)||``}function d(e){return!!(e.is_workspace||e.location===`workspace`)}var f,p,m;t((()=>{f=e(n()),a(),l(),s(),p=r(),m=f.memo(function({listSkills:e,addSkill:t,deleteSkill:n,workspacePath:r}){let[a,s]=(0,f.useState)([]),[l,m]=(0,f.useState)(!1),[h,g]=(0,f.useState)(``),[_,v]=(0,f.useState)(``),[y,b]=(0,f.useState)(`all`),[x,S]=(0,f.useState)(``),[C,w]=(0,f.useState)(``),[T,E]=(0,f.useState)(!1),[D,O]=(0,f.useState)(!1),[k,A]=(0,f.useState)(null),j=async()=>{m(!0),g(``);try{s(await e(r))}catch(e){console.error(`Failed to fetch skills:`,e),g(`Failed to load learned skills`)}finally{m(!1)}};(0,f.useEffect)(()=>{j()},[r]);let M=async e=>{if(e.preventDefault(),!(!x.trim()||!C.trim())){E(!0);try{await t(x.trim(),C.trim()),S(``),w(``),O(!1),j()}catch(e){console.error(`Failed to add learned skill:`,e),alert(`Error saving skill`)}finally{E(!1)}}},N=async e=>{if(window.confirm(`Are you sure you want to forget skill "${e}"?`))try{await n(e),A(t=>t?.name===e?null:t),j()}catch(e){console.error(`Failed to delete skill:`,e),alert(`Error deleting skill`)}},P=a.filter(e=>e.name.toLowerCase().includes(_.toLowerCase())||(e.description||``).toLowerCase().includes(_.toLowerCase())||e.content.toLowerCase().includes(_.toLowerCase())?y===`workspace`?d(e):y===`global`?!d(e):!0:!1);return(0,p.jsxs)(`div`,{className:`management-container`,children:[(0,p.jsxs)(`div`,{className:`management-header`,children:[(0,p.jsxs)(`div`,{className:`management-title-group`,children:[(0,p.jsxs)(`h1`,{className:`management-title`,children:[(0,p.jsx)(`span`,{className:`management-title-icon`,style:{display:`inline-flex`,alignItems:`center`},children:o(22,`var(--accent)`)}),`Skills`]}),(0,p.jsx)(`p`,{className:`management-subtitle`,children:`Instructions Mint follows automatically, reviewed before every prompt.`})]}),(0,p.jsxs)(`button`,{type:`button`,className:`management-primary-btn`,onClick:()=>O(!0),children:[(0,p.jsxs)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,children:[(0,p.jsx)(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),(0,p.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})]}),`Teach new skill`]})]}),(0,p.jsxs)(`div`,{className:`management-control-bar`,children:[(0,p.jsxs)(`div`,{className:`management-search-wrapper`,children:[(0,p.jsx)(`input`,{type:`text`,className:`management-search-input`,placeholder:`Search skills by name or instructions...`,value:_,onChange:e=>v(e.target.value)}),(0,p.jsxs)(`svg`,{className:`management-search-icon`,width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,children:[(0,p.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,p.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]})]}),(0,p.jsx)(`div`,{className:`management-filter-pills`,children:[`all`,`workspace`,`global`].map(e=>(0,p.jsx)(`button`,{type:`button`,className:`management-pill-btn ${y===e?`active`:``}`,onClick:()=>b(e),children:e},e))})]}),h&&(0,p.jsx)(`div`,{className:`management-error-banner`,children:h}),l?(0,p.jsx)(`div`,{className:`mgmt-empty`,children:`Loading…`}):P.length===0?(0,p.jsxs)(`div`,{className:`mgmt-empty`,children:[(0,p.jsx)(`p`,{children:_||y!==`all`?`No skills match.`:`No skills yet.`}),!_&&y===`all`&&(0,p.jsxs)(`p`,{children:[`Teach one above, or run `,(0,p.jsx)(`code`,{children:`/learn`}),` in chat.`]})]}):(0,p.jsx)(`div`,{className:`mgmt-list`,children:P.map(e=>(0,p.jsxs)(`div`,{className:`mgmt-row`,onClick:()=>A(e),children:[(0,p.jsxs)(`div`,{className:`mgmt-row-main`,children:[(0,p.jsx)(`div`,{className:`mgmt-row-title`,children:e.name}),(0,p.jsx)(`div`,{className:`mgmt-row-sub`,children:u(e)})]}),(0,p.jsx)(`span`,{className:`management-tag ${d(e)?`workspace`:`global`}`,children:d(e)?`Workspace`:`Global`})]},e.name))}),k&&(0,p.jsx)(`div`,{className:`management-modal-overlay`,onClick:()=>A(null),children:(0,p.jsxs)(`div`,{className:`management-modal`,onClick:e=>e.stopPropagation(),children:[(0,p.jsxs)(`div`,{className:`management-modal-header`,children:[(0,p.jsxs)(`div`,{className:`management-card-title-group`,children:[i(44),(0,p.jsx)(`h2`,{className:`management-modal-title`,children:k.name})]}),(0,p.jsx)(`button`,{type:`button`,className:`management-modal-close`,onClick:()=>A(null),children:`✕`})]}),(0,p.jsxs)(`div`,{className:`management-modal-body`,children:[(0,p.jsx)(`span`,{className:`management-tag ${d(k)?`workspace`:`global`}`,children:d(k)?`Workspace`:`Global`}),k.description&&(0,p.jsx)(`p`,{style:{color:`var(--text-soft, #d1d1d4)`,lineHeight:1.55,margin:0},children:k.description}),(0,p.jsx)(`div`,{className:`mgmt-prose`,children:c(k.content)})]}),(0,p.jsxs)(`div`,{className:`management-modal-footer`,children:[(0,p.jsx)(`span`,{style:{fontSize:`0.8rem`,color:`var(--text-muted, #64748b)`},children:k.updatedAt?new Date(k.updatedAt).toLocaleDateString():`Learned`}),(0,p.jsx)(`button`,{type:`button`,className:`management-action-btn danger`,onClick:()=>N(k.name),children:`Forget`})]})]})}),D&&(0,p.jsx)(`div`,{className:`management-modal-overlay`,children:(0,p.jsxs)(`div`,{className:`management-modal`,children:[(0,p.jsxs)(`div`,{className:`management-modal-header`,children:[(0,p.jsx)(`h2`,{className:`management-modal-title`,children:`Teach new skill to Mint`}),(0,p.jsx)(`button`,{type:`button`,className:`management-modal-close`,onClick:()=>O(!1),children:`✕`})]}),(0,p.jsxs)(`form`,{onSubmit:M,children:[(0,p.jsxs)(`div`,{className:`management-modal-body`,children:[(0,p.jsxs)(`div`,{className:`management-form-group`,children:[(0,p.jsx)(`label`,{className:`management-label`,children:`Skill name (e.g. typescript-standards)`}),(0,p.jsx)(`input`,{type:`text`,className:`management-input-field`,placeholder:`e.g. angular-standard`,value:x,onChange:e=>S(e.target.value),required:!0})]}),(0,p.jsxs)(`div`,{className:`management-form-group`,children:[(0,p.jsx)(`label`,{className:`management-label`,children:`Skill instructions / content (Markdown supported)`}),(0,p.jsx)(`textarea`,{className:`management-textarea-field`,placeholder:`# Guidelines
2
- Always write modular React code using TypeScript.`,value:C,onChange:e=>w(e.target.value),required:!0,rows:6})]})]}),(0,p.jsxs)(`div`,{className:`management-modal-footer`,children:[(0,p.jsx)(`button`,{type:`button`,className:`management-action-btn`,onClick:()=>O(!1),children:`Cancel`}),(0,p.jsx)(`button`,{type:`submit`,disabled:T,className:`management-primary-btn`,children:T?`Saving...`:`Save Skill`})]})]})]})})]})})}))();export{m as SkillsView,m as default};