@pheem49/mint 1.14.0 → 1.16.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 (925) hide show
  1. package/Cargo.lock +1258 -35
  2. package/Cargo.toml +5 -2
  3. package/LICENSE +21 -654
  4. package/README.md +93 -756
  5. package/Release_Note.md +53 -446
  6. package/apps/mint-companion/src-tauri/Cargo.toml +20 -0
  7. package/apps/mint-companion/src-tauri/build.rs +3 -0
  8. package/apps/mint-companion/src-tauri/src/main.rs +468 -0
  9. package/apps/mint-companion/tsconfig.json +20 -0
  10. package/apps/mint-companion/vite.config.ts +3 -0
  11. package/components.json +19 -0
  12. package/crates/mint-cli/Cargo.toml +9 -1
  13. package/crates/mint-cli/src/agent/approval_prompts.rs +16 -3
  14. package/crates/mint-cli/src/agent/live_status.rs +545 -148
  15. package/crates/mint-cli/src/agent/markdown_render.rs +601 -61
  16. package/crates/mint-cli/src/agent.rs +723 -258
  17. package/crates/mint-cli/src/commands/agent.rs +83 -74
  18. package/crates/mint-cli/src/commands/eval.rs +9 -5
  19. package/crates/mint-cli/src/commands/git.rs +204 -0
  20. package/crates/mint-cli/src/commands/integrations.rs +35 -0
  21. package/crates/mint-cli/src/commands/knowledge.rs +13 -32
  22. package/crates/mint-cli/src/commands/mod.rs +81 -2
  23. package/crates/mint-cli/src/commands/tailnet_web.rs +235 -0
  24. package/crates/mint-cli/src/image.rs +32 -11
  25. package/crates/mint-cli/src/interactive/chat_tui.rs +7853 -0
  26. package/crates/mint-cli/src/interactive/command_ui.rs +477 -0
  27. package/crates/mint-cli/src/interactive/format.rs +8 -0
  28. package/crates/mint-cli/src/interactive/input_box.rs +94 -8
  29. package/crates/mint-cli/src/interactive/picker.rs +180 -37
  30. package/crates/mint-cli/src/interactive/resume_picker.rs +686 -0
  31. package/crates/mint-cli/src/interactive/slash_commands.rs +1071 -501
  32. package/crates/mint-cli/src/interactive/thought_viewer.rs +286 -0
  33. package/crates/mint-cli/src/interactive/tool_activity.rs +328 -0
  34. package/crates/mint-cli/src/interactive.rs +454 -166
  35. package/crates/mint-cli/src/main.rs +93 -26
  36. package/crates/mint-cli/src/markdown.rs +12 -5
  37. package/crates/mint-cli/src/mcp.rs +5 -0
  38. package/crates/mint-cli/src/mod_host.rs +6 -0
  39. package/crates/mint-cli/src/mods_cli.rs +62 -0
  40. package/crates/mint-cli/src/mods_ui.rs +187 -0
  41. package/crates/mint-cli/src/onboard.rs +37 -61
  42. package/crates/mint-cli/src/plugins_cli.rs +8 -5
  43. package/crates/mint-cli/src/setup.rs +10 -8
  44. package/crates/mint-cli/src/terminal_theme.rs +189 -0
  45. package/crates/mint-cli/src/updater.rs +112 -23
  46. package/crates/mint-cli/tests/library_intake.rs +77 -0
  47. package/crates/mint-cli/tests/mods_testing.rs +133 -0
  48. package/crates/mint-companion-protocol/Cargo.toml +10 -0
  49. package/crates/mint-companion-protocol/src/lib.rs +163 -0
  50. package/crates/mint-core/Cargo.toml +6 -3
  51. package/crates/mint-core/build.rs +26 -0
  52. package/crates/mint-core/src/agent/agent_loop.rs +1 -0
  53. package/crates/mint-core/src/agent/chat.rs +1003 -209
  54. package/crates/mint-core/src/agent/code_tools.rs +98 -2
  55. package/crates/mint-core/src/agent/memory/sources.rs +240 -0
  56. package/crates/mint-core/src/agent/memory.rs +805 -33
  57. package/crates/mint-core/src/agent/skill_inventory.rs +325 -0
  58. package/crates/mint-core/src/agent/skills.rs +437 -90
  59. package/crates/mint-core/src/agent.rs +1 -0
  60. package/crates/mint-core/src/api_server/routes/background_jobs.rs +310 -0
  61. package/crates/mint-core/src/api_server/routes/chat.rs +233 -190
  62. package/crates/mint-core/src/api_server/routes/html_preview.rs +77 -0
  63. package/crates/mint-core/src/api_server/routes/library.rs +97 -0
  64. package/crates/mint-core/src/api_server/routes/linked_folders.rs +118 -3
  65. package/crates/mint-core/src/api_server/routes/media_gen.rs +10 -57
  66. package/crates/mint-core/src/api_server/routes/misc.rs +114 -121
  67. package/crates/mint-core/src/api_server/routes/mod.rs +6 -0
  68. package/crates/mint-core/src/api_server/routes/mods.rs +31 -0
  69. package/crates/mint-core/src/api_server/routes/sessions.rs +85 -0
  70. package/crates/mint-core/src/api_server/routes/skills_subagents.rs +12 -42
  71. package/crates/mint-core/src/api_server/routes/slash.rs +50 -1
  72. package/crates/mint-core/src/api_server/routes/sources.rs +101 -0
  73. package/crates/mint-core/src/api_server.rs +140 -12
  74. package/crates/mint-core/src/avatar_bridge.rs +13 -2
  75. package/crates/mint-core/src/browser/cdp.rs +74 -83
  76. package/crates/mint-core/src/browser/evidence.rs +260 -0
  77. package/crates/mint-core/src/browser/input.rs +1 -1
  78. package/crates/mint-core/src/browser/interact.rs +98 -124
  79. package/crates/mint-core/src/browser/lifecycle.rs +75 -4
  80. package/crates/mint-core/src/browser/mod.rs +16 -2
  81. package/crates/mint-core/src/browser/navigate.rs +27 -19
  82. package/crates/mint-core/src/browser/observe.js +40 -0
  83. package/crates/mint-core/src/browser/session.rs +1610 -0
  84. package/crates/mint-core/src/companion.rs +716 -0
  85. package/crates/mint-core/src/cron/scheduler.rs +34 -2
  86. package/crates/mint-core/src/git/branches.rs +348 -0
  87. package/crates/mint-core/src/git/checkpoint.rs +40 -0
  88. package/crates/mint-core/src/git/diff.rs +206 -0
  89. package/crates/mint-core/src/git/mod.rs +10 -2
  90. package/crates/mint-core/src/integrations/channels.rs +88 -345
  91. package/crates/mint-core/src/integrations/mcp.rs +397 -50
  92. package/crates/mint-core/src/integrations/mcp_calls.rs +823 -0
  93. package/crates/mint-core/src/integrations/mcp_catalog.rs +267 -0
  94. package/crates/mint-core/src/integrations/mcp_device.rs +319 -0
  95. package/crates/mint-core/src/integrations/mcp_result.rs +356 -0
  96. package/crates/mint-core/src/integrations/webhooks.rs +539 -0
  97. package/crates/mint-core/src/integrations.rs +2 -0
  98. package/crates/mint-core/src/lib.rs +107 -40
  99. package/crates/mint-core/src/live_sync.rs +28 -9
  100. package/crates/mint-core/src/media/auto_shorts.rs +1 -0
  101. package/crates/mint-core/src/media/gemini_live.rs +145 -14
  102. package/crates/mint-core/src/media/image_models.rs +3 -27
  103. package/crates/mint-core/src/media/image_workflow.rs +216 -0
  104. package/crates/mint-core/src/media/library/intake.rs +144 -0
  105. package/crates/mint-core/src/media/library/migration.rs +56 -0
  106. package/crates/mint-core/src/media/library/removal.rs +55 -0
  107. package/crates/mint-core/src/media/library/tests.rs +730 -0
  108. package/crates/mint-core/src/media/library/thumbnails.rs +72 -0
  109. package/crates/mint-core/src/media/library.rs +545 -0
  110. package/crates/mint-core/src/media/mic_transcribe.rs +1 -0
  111. package/crates/mint-core/src/media/model_catalog.rs +375 -0
  112. package/crates/mint-core/src/media/pictures.rs +79 -222
  113. package/crates/mint-core/src/media/subtitle.rs +1 -0
  114. package/crates/mint-core/src/media/video_models.rs +3 -22
  115. package/crates/mint-core/src/media.rs +3 -0
  116. package/crates/mint-core/src/mods/manager.rs +1124 -0
  117. package/crates/mint-core/src/mods/mod.rs +569 -0
  118. package/crates/mint-core/src/mods/operations.rs +204 -0
  119. package/crates/mint-core/src/mods/session.rs +146 -0
  120. package/crates/mint-core/src/mods/slash.rs +59 -0
  121. package/crates/mint-core/src/mods/telemetry.rs +306 -0
  122. package/crates/mint-core/src/orchestration/approvals.rs +344 -0
  123. package/crates/mint-core/src/orchestration/context_render.rs +105 -0
  124. package/crates/mint-core/src/orchestration/mcp_review.rs +153 -0
  125. package/crates/mint-core/src/orchestration/memory_skill.rs +110 -33
  126. package/crates/mint-core/src/orchestration/mod.rs +3129 -481
  127. package/crates/mint-core/src/orchestration/mod_authoring_regressions.rs +209 -0
  128. package/crates/mint-core/src/orchestration/progress_clock.rs +80 -0
  129. package/crates/mint-core/src/orchestration/repeated_failures.rs +116 -0
  130. package/crates/mint-core/src/orchestration/review_regressions.rs +449 -0
  131. package/crates/mint-core/src/orchestration/run_control.rs +196 -0
  132. package/crates/mint-core/src/orchestration/tools/browser.rs +16 -139
  133. package/crates/mint-core/src/orchestration/tools/files.rs +161 -14
  134. package/crates/mint-core/src/orchestration/tools/media.rs +37 -41
  135. package/crates/mint-core/src/orchestration/tools/misc.rs +5 -3
  136. package/crates/mint-core/src/orchestration/tools/mod.rs +2 -0
  137. package/crates/mint-core/src/orchestration/tools/mods.rs +161 -0
  138. package/crates/mint-core/src/orchestration/tools/plugins_mcp.rs +303 -71
  139. package/crates/mint-core/src/orchestration/tools/shell.rs +95 -2
  140. package/crates/mint-core/src/orchestration/tools/web.rs +1 -1
  141. package/crates/mint-core/src/orchestration/workspace_helpers.rs +4 -1
  142. package/crates/mint-core/src/prompts/agent.rs +75 -31
  143. package/crates/mint-core/src/prompts/chat.rs +1 -1
  144. package/crates/mint-core/src/prompts/persona.rs +1 -1
  145. package/crates/mint-core/src/prompts/tool_catalog.rs +121 -27
  146. package/crates/mint-core/src/search/knowledge.rs +7 -1
  147. package/crates/mint-core/src/search/linked_folders/index.rs +896 -0
  148. package/crates/mint-core/src/search/linked_folders.rs +473 -131
  149. package/crates/mint-core/src/slash/catalog.rs +1 -1
  150. package/crates/mint-core/src/slash/mod.rs +644 -33
  151. package/crates/mint-core/src/slash/model_fetcher.rs +12 -3
  152. package/crates/mint-core/src/slash/models.rs +66 -10
  153. package/crates/mint-core/src/slash/mods.rs +155 -0
  154. package/crates/mint-core/src/system/bg_shell.rs +1129 -95
  155. package/crates/mint-core/src/system/config.rs +235 -10
  156. package/crates/mint-core/src/system/html_preview.rs +398 -0
  157. package/crates/mint-core/src/system/mint_web.rs +164 -0
  158. package/crates/mint-core/src/system/release_notes.rs +18 -0
  159. package/crates/mint-core/src/system/shell.rs +21 -6
  160. package/crates/mint-core/src/system/workspace.rs +292 -0
  161. package/crates/mint-core/src/system/workspace_history.rs +604 -0
  162. package/crates/mint-core/src/system.rs +5 -0
  163. package/crates/mint-core/tests/background_retention.rs +34 -0
  164. package/crates/mint-core/tests/background_shutdown.rs +24 -0
  165. package/crates/mint-core/tests/library_http.rs +209 -0
  166. package/crates/mint-core/tests/mcp_contract.rs +283 -0
  167. package/crates/mint-core/tests/mcp_stdio.rs +11 -10
  168. package/crates/mint-core/tests/media_model_catalog_http.rs +403 -0
  169. package/crates/mint-core/tests/memory_persistence.rs +39 -0
  170. package/crates/mint-core/tests/mods_http.rs +215 -0
  171. package/crates/mint-core/tests/terminal_shutdown.rs +109 -0
  172. package/crates/mint-mod-runtime/Cargo.toml +18 -0
  173. package/crates/mint-mod-runtime/src/lib.rs +507 -0
  174. package/crates/mint-mod-runtime/src/sdk.js +56 -0
  175. package/crates/mint-mod-runtime/src/test_sdk.js +32 -0
  176. package/crates/mint-mod-runtime/src/testing.rs +94 -0
  177. package/crates/mint-mod-runtime/tests/runtime.rs +156 -0
  178. package/docs/mods/AUTHORING.md +61 -0
  179. package/docs/mods/README.md +139 -0
  180. package/docs/mods/TESTING.md +56 -0
  181. package/docs/mods/mint-mods.d.ts +66 -0
  182. package/examples/device-mcp/README.md +22 -0
  183. package/examples/device-mcp/contract.md +49 -0
  184. package/examples/device-mcp/mock-device.mjs +66 -0
  185. package/examples/device-mcp/server.mjs +48 -0
  186. package/examples/device-mcp/server.test.mjs +78 -0
  187. package/examples/mods/task-checklist/README.md +1 -0
  188. package/examples/mods/task-checklist/main.ts +17 -0
  189. package/examples/mods/task-checklist/manifest.json +1 -0
  190. package/examples/mods/task-checklist/tests/checklist.test.ts +15 -0
  191. package/examples/mods/token-meter/README.md +1 -0
  192. package/examples/mods/token-meter/main.ts +8 -0
  193. package/examples/mods/token-meter/manifest.json +1 -0
  194. package/examples/mods/tool-guard/README.md +1 -0
  195. package/examples/mods/tool-guard/main.ts +9 -0
  196. package/examples/mods/tool-guard/manifest.json +1 -0
  197. package/out/web/assets/CliSessionsView-CtzUJpK_.css +1 -0
  198. package/out/web/assets/CliSessionsView-D7hw0Mgj.js +1 -0
  199. package/out/web/assets/CodeReviewPage-C7bEOJfd.js +4 -0
  200. package/out/web/assets/CodeReviewPage-Dte9uLiL.css +1 -0
  201. package/out/web/assets/CommandPalette-0RrF-AOT.js +1 -0
  202. package/out/web/assets/ImageStudioPanel-CdxkAf_r.js +1 -0
  203. package/out/web/assets/ImageStudioPanel-D0lnhQV5.css +1 -0
  204. package/out/web/assets/LibraryPage--Qfisp6D.js +2 -0
  205. package/out/web/assets/LibraryPage-DAxUTAg7.css +1 -0
  206. package/out/web/assets/LinkedFoldersView-2nfZbDgN.js +1 -0
  207. package/out/web/assets/McpRegistryPicker-h9uS8_wT.js +1 -0
  208. package/out/web/assets/McpServersView-slfQJzNB.js +1 -0
  209. package/out/web/assets/MintDashboard-BSR5XpXh.js +25 -0
  210. package/out/web/assets/MintDashboard-CWUcCGhd.css +1 -0
  211. package/out/web/assets/PluginsView-l7LSm503.js +1 -0
  212. package/out/web/assets/ScheduledTasksView-CttmLbq1.js +1 -0
  213. package/out/web/assets/SettingsWindow-BCMLYvEV.js +4 -0
  214. package/out/web/assets/SettingsWindow-DcMVmU9u.css +1 -0
  215. package/out/web/assets/SkillsView-rNs1qr_U.js +2 -0
  216. package/out/web/assets/ToolSurfacePage-B9DzEPWN.js +37 -0
  217. package/out/web/assets/ToolSurfacePage-CTfgggF2.css +1 -0
  218. package/out/web/assets/VeoStudioPanel-DOj7_WR3.css +1 -0
  219. package/out/web/assets/VeoStudioPanel-DiJs_Cg2.js +4 -0
  220. package/out/web/assets/WorkspacePanel-CbJ1PFoZ.js +1 -0
  221. package/out/web/assets/WorkspaceSelector-B2xIp04D.js +1 -0
  222. package/out/web/assets/WorkspaceSelector-Ca8uJOsS.css +1 -0
  223. package/out/web/assets/{abnfDiagram-VCTEODGH-DAOBA7ZG.js → abnfDiagram-VCTEODGH-CD0CjoGl.js} +1 -1
  224. package/out/web/assets/{architecture-7GRP2DOG-CgSwQOPQ.js → architecture-7GRP2DOG-RKV83OeZ.js} +1 -1
  225. package/out/web/assets/{architectureDiagram-5GKGNRK7-CYp3yupP.js → architectureDiagram-5GKGNRK7-nN_HAFct.js} +1 -1
  226. package/out/web/assets/{blockDiagram-NRAW4CY4-CyWybDWr.js → blockDiagram-NRAW4CY4-BrrqzHW5.js} +1 -1
  227. package/out/web/assets/{c4Diagram-UCG6FXSJ-BvY3U709.js → c4Diagram-UCG6FXSJ-DTdV8_zE.js} +1 -1
  228. package/out/web/assets/{chunk-75Z2AOVW-TLXCoZYv.js → chunk-75Z2AOVW-_M0z5olV.js} +1 -1
  229. package/out/web/assets/chunk-CKBBP62Z-BpQEgeHF.js +2 -0
  230. package/out/web/assets/{chunk-CLGD4ZFX-xjsKtNS7.js → chunk-CLGD4ZFX-D54yGvGS.js} +1 -1
  231. package/out/web/assets/chunk-DSNCTWBM-C-gvT2ru.js +2 -0
  232. package/out/web/assets/chunk-DU6HZSFF-CnFngIhW.js +128 -0
  233. package/out/web/assets/{chunk-F27PBJKO-BFpgF55A.js → chunk-F27PBJKO-BqtWrnEO.js} +1 -1
  234. package/out/web/assets/{chunk-G27WJ6UU-DfF7qW-C.js → chunk-G27WJ6UU-Ckoq5mi2.js} +1 -1
  235. package/out/web/assets/{chunk-GMAD6QVW-C-558kh_.js → chunk-GMAD6QVW-BuhEcgHq.js} +1 -1
  236. package/out/web/assets/{chunk-JQ64N6SF-wJmeGKAw.js → chunk-JQ64N6SF-CF8T7GiZ.js} +1 -1
  237. package/out/web/assets/{chunk-LCL6LL3I-C1wHD8Ie.js → chunk-LCL6LL3I-BhXV9zyH.js} +1 -1
  238. package/out/web/assets/{chunk-OBVCFTLP-BsRTPBqs.js → chunk-OBVCFTLP-CRIkunUB.js} +1 -1
  239. package/out/web/assets/{chunk-P2QGCYS3-HZIiM7Ni.js → chunk-P2QGCYS3-UFEU6BxZ.js} +1 -1
  240. package/out/web/assets/{chunk-POPQ4Y6H-Dk9wvVb0.js → chunk-POPQ4Y6H-CQcrNbjr.js} +1 -1
  241. package/out/web/assets/{chunk-PWAF6VOD-BmjYLNbq.js → chunk-PWAF6VOD-Cc2uVDsG.js} +1 -1
  242. package/out/web/assets/{chunk-R7TYR2AO-CaHIf-lK.js → chunk-R7TYR2AO-DiCxzdAY.js} +1 -1
  243. package/out/web/assets/{chunk-RHFEMEQ7-_T561hOU.js → chunk-RHFEMEQ7-b7hnPmrR.js} +1 -1
  244. package/out/web/assets/{chunk-SVP7TREG-CM-GGYoY.js → chunk-SVP7TREG-Bu_yYb-V.js} +1 -1
  245. package/out/web/assets/{chunk-TEH6E4GO-K2A8Vg2C.js → chunk-TEH6E4GO-G4Cdlyrt.js} +1 -1
  246. package/out/web/assets/classDiagram-DTDB5LWJ-RnC2mYO4.js +1 -0
  247. package/out/web/assets/classDiagram-v2-JRS7N3AN-RnC2mYO4.js +1 -0
  248. package/out/web/assets/config-CnvCChUM.js +2 -0
  249. package/out/web/assets/config-DM6oIVO3.css +1 -0
  250. package/out/web/assets/core-DsKkQ7ig.js +1 -0
  251. package/out/web/assets/{cynefin-OW5HDTMX-ClzaB6cc.js → cynefin-OW5HDTMX-CnzQfOGp.js} +1 -1
  252. package/out/web/assets/{cynefinDiagram-5FMLGOSQ-D_JzZBzf.js → cynefinDiagram-5FMLGOSQ-DVtQnfpm.js} +1 -1
  253. package/out/web/assets/{dagre-3AP2YEHR-BDuUeMHj.js → dagre-3AP2YEHR-DG76_k5_.js} +1 -1
  254. package/out/web/assets/{diagram-S7CK7UJ4-DgtcfE8P.js → diagram-S7CK7UJ4-CaouUoze.js} +1 -1
  255. package/out/web/assets/{diagram-UQ7AKVKN-DTLoEYti.js → diagram-UQ7AKVKN-B4bEc26B.js} +1 -1
  256. package/out/web/assets/{diagram-VSXAHHWV-ChGl9pXz.js → diagram-VSXAHHWV-BJ86Ov2Y.js} +1 -1
  257. package/out/web/assets/{diagram-VX7I27RA-Be8DWz0S.js → diagram-VX7I27RA-7hH5IPYf.js} +1 -1
  258. package/out/web/assets/{diagram-Z3DM3KII-BMXjRTOF.js → diagram-Z3DM3KII-CCM4clo8.js} +1 -1
  259. package/out/web/assets/dist-js-BkYNznHX.js +1 -0
  260. package/out/web/assets/{ebnfDiagram-PWID7BFC-8Q9pl1CJ.js → ebnfDiagram-PWID7BFC-Da7WAM3k.js} +1 -1
  261. package/out/web/assets/{erDiagram-SSCWMZ5O-DjH8Lnkn.js → erDiagram-SSCWMZ5O-CzzmnZWT.js} +1 -1
  262. package/out/web/assets/event-Cdt7Byyj.js +1 -0
  263. package/out/web/assets/{eventmodeling-NTZA5JFV-BKUH_DOp.js → eventmodeling-NTZA5JFV-xcfsA0XD.js} +1 -1
  264. package/out/web/assets/fira-code-latin-600-normal-BmSSHshu.woff +0 -0
  265. package/out/web/assets/fira-code-latin-600-normal-CvYZpPHg.woff2 +0 -0
  266. package/out/web/assets/fira-code-symbols2-600-normal-Dvq6IQE5.woff +0 -0
  267. package/out/web/assets/flowDiagram-A5DVABFB-JdtH1673.js +1 -0
  268. package/out/web/assets/{ganttDiagram-EL5Y4UJY-D7fZKJNM.js → ganttDiagram-EL5Y4UJY-B3ClFGmL.js} +1 -1
  269. package/out/web/assets/{gitGraph-4MIJSDKK-BypWaaBU.js → gitGraph-4MIJSDKK-BZ_y_cDU.js} +1 -1
  270. package/out/web/assets/{gitGraphDiagram-WWUBYQGX-DWiw_3bq.js → gitGraphDiagram-WWUBYQGX-drhRSYm3.js} +1 -1
  271. package/out/web/assets/index-BZ9xgmMP.css +1 -0
  272. package/out/web/assets/index-Ca8cCS4h.js +168 -0
  273. package/out/web/assets/{info-A6RAGUB7-KkAUxT4j.js → info-A6RAGUB7-B7I3K0F1.js} +1 -1
  274. package/out/web/assets/{infoDiagram-RXCK75RN-BNb6E48y.js → infoDiagram-RXCK75RN-deX_1MPh.js} +1 -1
  275. package/out/web/assets/{ishikawaDiagram-5VMMS53U-Caa-JoAK.js → ishikawaDiagram-5VMMS53U-s38yo28y.js} +1 -1
  276. package/out/web/assets/{journeyDiagram-EYS64GPL-DOrmFGz6.js → journeyDiagram-EYS64GPL-CZn2kB8b.js} +1 -1
  277. package/out/web/assets/jsx-runtime-DN4NhQUK.js +1 -0
  278. package/out/web/assets/{kanban-definition-3QL26DDD-BOWCYcK0.js → kanban-definition-3QL26DDD-DodjgySL.js} +1 -1
  279. package/out/web/assets/markdown-CMhYIcWB.js +39 -0
  280. package/out/web/assets/{mermaid-parser.core-BQqjCkS_.js → mermaid-parser.core-Whu2rlJC.js} +3 -3
  281. package/out/web/assets/mermaid.core-CKyPo8VH.js +11 -0
  282. package/out/web/assets/{mindmap-definition-FBJOCRG2-jTceWpr0.js → mindmap-definition-FBJOCRG2-260WBDxZ.js} +1 -1
  283. package/out/web/assets/modelManager-CUaGWMWu.js +2 -0
  284. package/out/web/assets/oauthManager-DlNhXJr6.js +1 -0
  285. package/out/web/assets/{packet-AYTQ26CC-CJ5RXgol.js → packet-AYTQ26CC-CEeIRKRG.js} +1 -1
  286. package/out/web/assets/{pegDiagram-XKGWAZYB-y8wMtd0y.js → pegDiagram-XKGWAZYB-BYadI-KO.js} +1 -1
  287. package/out/web/assets/{pie-WAS4IAKB-72fTBbl4.js → pie-WAS4IAKB-D8uf4dh5.js} +1 -1
  288. package/out/web/assets/{pieDiagram-E7YTZNPT-e0O02qWq.js → pieDiagram-E7YTZNPT-CjSDy4hO.js} +1 -1
  289. package/out/web/assets/{quadrantDiagram-AXDQQJYC-C9phYLom.js → quadrantDiagram-AXDQQJYC-B8D3gU5d.js} +1 -1
  290. package/out/web/assets/{radar-RG4KPBEZ-BAU2hzUT.js → radar-RG4KPBEZ-DZJxnokY.js} +1 -1
  291. package/out/web/assets/{railroad-74A4TZTK-B0bCAVHC.js → railroad-74A4TZTK-DBysUiUi.js} +1 -1
  292. package/out/web/assets/{railroad-abnf-HS5TGJTU-WhxO7ndE.js → railroad-abnf-HS5TGJTU-CHWxoJYg.js} +1 -1
  293. package/out/web/assets/{railroad-ebnf-LZEXJU2U-BkA0m7-F.js → railroad-ebnf-LZEXJU2U-DDv7X6bY.js} +1 -1
  294. package/out/web/assets/{railroad-peg-WCYAUIDC-BsVpHIaj.js → railroad-peg-WCYAUIDC-DpfcYYNJ.js} +1 -1
  295. package/out/web/assets/{railroadDiagram-O6MQD6OU-CyOLN65Q.js → railroadDiagram-O6MQD6OU-CYtyv0t3.js} +1 -1
  296. package/out/web/assets/{requirementDiagram-EFPCY7ZU-DQXJ7Dud.js → requirementDiagram-EFPCY7ZU-D2X-Ewik.js} +1 -1
  297. package/out/web/assets/{sankeyDiagram-P5KCCOFB-B2XLyIIc.js → sankeyDiagram-P5KCCOFB-Bn2x6C4Y.js} +1 -1
  298. package/out/web/assets/{sequenceDiagram-WJ2MYXX4-DGQY4wwm.js → sequenceDiagram-WJ2MYXX4-BvFLKtPd.js} +1 -1
  299. package/out/web/assets/{stateDiagram-HBIQ2CUA-DHZpDwNy.js → stateDiagram-HBIQ2CUA-Bx0GWeaY.js} +1 -1
  300. package/out/web/assets/stateDiagram-v2-4QOOHH4V--hol1yg_.js +1 -0
  301. package/out/web/assets/studio-B1mk40wD.js +1 -0
  302. package/out/web/assets/{swimlanes-XN3QIQJK-Bn_jcZz-.js → swimlanes-XN3QIQJK-CCma0T7L.js} +1 -1
  303. package/out/web/assets/swimlanesDiagram-VK2B7HYN-BkohoVsU.js +8 -0
  304. package/out/web/assets/{timeline-definition-24CTP7MA-CdTERuJZ.js → timeline-definition-24CTP7MA-iCRhhJ7C.js} +1 -1
  305. package/out/web/assets/{treeView-Q6P3EWNA-TKBKQG6R.js → treeView-Q6P3EWNA-DZ-y08qp.js} +1 -1
  306. package/out/web/assets/{treemap-WGGIJYW6-BP7gQoiC.js → treemap-WGGIJYW6-De0CxzMx.js} +1 -1
  307. package/out/web/assets/{vennDiagram-4TSXK5OY-BHUmxDuK.js → vennDiagram-4TSXK5OY-w_7aZ6xe.js} +1 -1
  308. package/out/web/assets/{wardley-WFR3VGLG-9bct5AAN.js → wardley-WFR3VGLG-DT0y0xJ4.js} +1 -1
  309. package/out/web/assets/{wardleyDiagram-VM6X3IG4-BfJwDDso.js → wardleyDiagram-VM6X3IG4-DAdXELbQ.js} +1 -1
  310. package/out/web/assets/window-BJCVtyET.js +1 -0
  311. package/out/web/assets/{xychartDiagram-S5SC5T6Z-Dqd9Mvpo.js → xychartDiagram-S5SC5T6Z-IZIXf3Vo.js} +1 -1
  312. package/out/web/index-web.html +4 -4
  313. package/out/web/index.html +4 -4
  314. package/package.json +80 -20
  315. package/shared-modules/.github/workflows/ci.yml +120 -0
  316. package/shared-modules/.github/workflows/update.yaml +28 -0
  317. package/slash-commands.json +16 -2
  318. package/src/bin/auto-build.js +66 -0
  319. package/src/bin/desktop.js +113 -0
  320. package/src/bin/desktop.test.js +113 -0
  321. package/src/bin/index.js +18 -25
  322. package/src/bin/index.test.js +89 -0
  323. package/src/bin/measure-effects.mjs +53 -0
  324. package/src/bin/package.test.js +28 -0
  325. package/src/bin/release-notes.test.js +84 -0
  326. package/src/bin/styles.test.js +20 -0
  327. package/src/bin/web.js +5 -0
  328. package/src/bin/web.test.js +39 -0
  329. package/src/renderer/index-web.html +1 -0
  330. package/src/renderer/index.html +1 -2
  331. package/src/renderer/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  332. package/src/renderer/shared/agentProgress.ts +201 -3
  333. package/src/renderer/shared/components/AgentActivityDrawer.tsx +9 -8
  334. package/src/renderer/shared/components/AgentActivityTable.tsx +193 -133
  335. package/src/renderer/shared/components/ApprovalCard.test.tsx +24 -0
  336. package/src/renderer/shared/components/ApprovalCard.tsx +10 -3
  337. package/src/renderer/shared/components/ArtifactPreviewPanel.tsx +91 -40
  338. package/src/renderer/shared/components/AuthGate.tsx +79 -48
  339. package/src/renderer/shared/components/BackgroundTerminals.tsx +181 -0
  340. package/src/renderer/shared/components/CalculationCard.tsx +41 -15
  341. package/src/renderer/shared/components/ChatCodeBlock.tsx +8 -4
  342. package/src/renderer/shared/components/ChatMessageItem.test.tsx +68 -0
  343. package/src/renderer/shared/components/ChatMessageItem.tsx +52 -33
  344. package/src/renderer/shared/components/ChatPanel.test.tsx +21 -0
  345. package/src/renderer/shared/components/ChatPanel.tsx +676 -415
  346. package/src/renderer/shared/components/ChunkErrorBoundary.tsx +115 -64
  347. package/src/renderer/shared/components/CliSessionsView.test.tsx +125 -0
  348. package/src/renderer/shared/components/CliSessionsView.tsx +543 -0
  349. package/src/renderer/shared/components/CodeReviewPage.tsx +668 -0
  350. package/src/renderer/shared/components/CollapsiblePasteInput.tsx +90 -0
  351. package/src/renderer/shared/components/CommandPalette.tsx +8 -8
  352. package/src/renderer/shared/components/ContextCompactionStatus.tsx +17 -0
  353. package/src/renderer/shared/components/DashboardSidebar.tsx +853 -229
  354. package/src/renderer/shared/components/DesktopTitlebar.tsx +371 -0
  355. package/src/renderer/shared/components/DiffReviewModal.tsx +3 -3
  356. package/src/renderer/shared/components/ErrorNotice.tsx +29 -0
  357. package/src/renderer/shared/components/FormattedMessage.tsx +11 -0
  358. package/src/renderer/shared/components/GeminiLiveOverlay.css +86 -0
  359. package/src/renderer/shared/components/GeminiLiveOverlay.test.tsx +24 -0
  360. package/src/renderer/shared/components/GeminiLiveOverlay.tsx +85 -101
  361. package/src/renderer/shared/components/GitBranchSelector.tsx +442 -0
  362. package/src/renderer/shared/components/GlideSelect.css +138 -0
  363. package/src/renderer/shared/components/GlideSelect.d.ts +31 -0
  364. package/src/renderer/shared/components/GlideSelect.jsx +266 -0
  365. package/src/renderer/shared/components/ImageGenCard.tsx +31 -12
  366. package/src/renderer/shared/components/ImageSearchCard.tsx +76 -65
  367. package/src/renderer/shared/components/ImageStudioPanel.tsx +49 -49
  368. package/src/renderer/shared/components/InlineThoughtNote.tsx +27 -0
  369. package/src/renderer/shared/components/LibraryItemCard.tsx +72 -0
  370. package/src/renderer/shared/components/LibraryPage.tsx +165 -0
  371. package/src/renderer/shared/components/LibraryPreview.tsx +59 -0
  372. package/src/renderer/shared/components/LinkedFoldersView.tsx +365 -46
  373. package/src/renderer/shared/components/McpRegistryPicker.tsx +1 -1
  374. package/src/renderer/shared/components/McpServersView.tsx +51 -30
  375. package/src/renderer/shared/components/McpToolAllowlist.tsx +2 -4
  376. package/src/renderer/shared/components/McpToolResults.tsx +99 -0
  377. package/src/renderer/shared/components/MermaidCard.tsx +14 -8
  378. package/src/renderer/shared/components/MintDashboard.tsx +1002 -831
  379. package/src/renderer/shared/components/ModSessionControls.tsx +8 -0
  380. package/src/renderer/shared/components/ModUi.test.tsx +65 -0
  381. package/src/renderer/shared/components/ModUi.tsx +26 -0
  382. package/src/renderer/shared/components/ModelSelectorPopover.tsx +547 -219
  383. package/src/renderer/shared/components/ModsPanel.tsx +156 -0
  384. package/src/renderer/shared/components/PlanChecklistWidget.tsx +1 -1
  385. package/src/renderer/shared/components/PluginsView.tsx +1 -1
  386. package/src/renderer/shared/components/ProgressActivity.tsx +17 -0
  387. package/src/renderer/shared/components/ReviewHistory.tsx +42 -0
  388. package/src/renderer/shared/components/RewindModal.tsx +11 -18
  389. package/src/renderer/shared/components/RunSummaryDashboard.tsx +8 -14
  390. package/src/renderer/shared/components/ScheduledTasksView.tsx +11 -10
  391. package/src/renderer/shared/components/ScreenCaptureDialog.css +221 -0
  392. package/src/renderer/shared/components/ScreenCaptureDialog.tsx +199 -0
  393. package/src/renderer/shared/components/SelectField.test.tsx +27 -0
  394. package/src/renderer/shared/components/SelectField.tsx +38 -0
  395. package/src/renderer/shared/components/SessionSources.tsx +48 -0
  396. package/src/renderer/shared/components/SessionSourcesPopover.tsx +61 -0
  397. package/src/renderer/shared/components/Settings/AgentsTab.tsx +41 -45
  398. package/src/renderer/shared/components/Settings/AudioTab.tsx +16 -15
  399. package/src/renderer/shared/components/Settings/AutomationTab.tsx +10 -60
  400. package/src/renderer/shared/components/Settings/AvatarCropModal.tsx +368 -0
  401. package/src/renderer/shared/components/Settings/GeneralTab.tsx +368 -113
  402. package/src/renderer/shared/components/Settings/MemoryTab.test.tsx +37 -0
  403. package/src/renderer/shared/components/Settings/MemoryTab.tsx +71 -31
  404. package/src/renderer/shared/components/Settings/NotificationsTab.test.tsx +15 -0
  405. package/src/renderer/shared/components/Settings/NotificationsTab.tsx +84 -0
  406. package/src/renderer/shared/components/Settings/PluginsTab.tsx +20 -12
  407. package/src/renderer/shared/components/Settings/ProfileTab.tsx +29 -5
  408. package/src/renderer/shared/components/Settings/SearchableModelCombobox.tsx +411 -0
  409. package/src/renderer/shared/components/Settings/ThemeTab.tsx +416 -165
  410. package/src/renderer/shared/components/SkillsView.tsx +41 -16
  411. package/src/renderer/shared/components/SlashChoicePanel.tsx +88 -0
  412. package/src/renderer/shared/components/SlashSuggestions.test.tsx +33 -0
  413. package/src/renderer/shared/components/SlashSuggestions.tsx +41 -12
  414. package/src/renderer/shared/components/SourcesBlock.tsx +55 -51
  415. package/src/renderer/shared/components/StockCard.tsx +58 -24
  416. package/src/renderer/shared/components/SubagentDagView.tsx +4 -4
  417. package/src/renderer/shared/components/TerminalDock.tsx +241 -0
  418. package/src/renderer/shared/components/ThinkingBlock.tsx +14 -8
  419. package/src/renderer/shared/components/ToolSurfacePage.test.tsx +32 -0
  420. package/src/renderer/shared/components/ToolSurfacePage.tsx +568 -0
  421. package/src/renderer/shared/components/ToolsPanelToggle.tsx +13 -0
  422. package/src/renderer/shared/components/UiFeatureCard.tsx +267 -0
  423. package/src/renderer/shared/components/UiGridCard.tsx +188 -0
  424. package/src/renderer/shared/components/UiMockupWidget.tsx +149 -0
  425. package/src/renderer/shared/components/VeoStudioPanel.tsx +22 -37
  426. package/src/renderer/shared/components/ViewedImages.tsx +36 -0
  427. package/src/renderer/shared/components/VirtualChatHistory.tsx +82 -0
  428. package/src/renderer/shared/components/VoicePill.css +85 -0
  429. package/src/renderer/shared/components/VoicePill.d.ts +12 -0
  430. package/src/renderer/shared/components/VoicePill.jsx +190 -0
  431. package/src/renderer/shared/components/VoicePill.test.tsx +22 -0
  432. package/src/renderer/shared/components/WeatherCard.tsx +3 -3
  433. package/src/renderer/shared/components/WorkspaceContextPopover.tsx +138 -0
  434. package/src/renderer/shared/components/WorkspacePaneResizer.tsx +92 -0
  435. package/src/renderer/shared/components/WorkspacePreviewActions.test.tsx +44 -0
  436. package/src/renderer/shared/components/WorkspacePreviewActions.tsx +19 -0
  437. package/src/renderer/shared/components/WorkspaceSelector.tsx +154 -0
  438. package/src/renderer/shared/components/background-terminals.css +292 -0
  439. package/src/renderer/shared/components/ui/README.md +52 -0
  440. package/src/renderer/shared/components/ui/button.tsx +37 -0
  441. package/src/renderer/shared/components/ui/demo.tsx +26 -0
  442. package/src/renderer/shared/components/ui/error-recovery.css +35 -0
  443. package/src/renderer/shared/components/ui/error-recovery.tsx +35 -0
  444. package/src/renderer/shared/components/ui/voice-powered-orb.css +6 -0
  445. package/src/renderer/shared/components/ui/voice-powered-orb.tsx +374 -0
  446. package/src/renderer/shared/components/workspace-selector.css +248 -0
  447. package/src/renderer/shared/constants/config.ts +57 -3
  448. package/src/renderer/shared/constants/models.ts +189 -2
  449. package/src/renderer/shared/constants/slashCommands.ts +1 -1
  450. package/src/renderer/shared/conversation/coordinator.test.ts +27 -0
  451. package/src/renderer/shared/conversation/coordinator.ts +82 -0
  452. package/src/renderer/shared/conversation/lifecycle.test.ts +362 -0
  453. package/src/renderer/shared/conversation/lifecycle.ts +418 -0
  454. package/src/renderer/shared/conversation/projectNavigation.test.ts +105 -0
  455. package/src/renderer/shared/conversation/projectNavigation.ts +39 -0
  456. package/src/renderer/shared/conversation/sourcesTransport.ts +27 -0
  457. package/src/renderer/shared/conversation/syncView.test.ts +13 -0
  458. package/src/renderer/shared/conversation/syncView.ts +6 -0
  459. package/src/renderer/shared/conversation/transport.test.ts +163 -0
  460. package/src/renderer/shared/conversation/transport.ts +159 -0
  461. package/src/renderer/shared/conversation/useConversationCoordinator.ts +64 -0
  462. package/src/renderer/shared/css/agent-observability.css +46 -15
  463. package/src/renderer/shared/css/auth-gate.css +114 -15
  464. package/src/renderer/shared/css/chat-ui-cards.css +495 -0
  465. package/src/renderer/shared/css/code-review.css +856 -0
  466. package/src/renderer/shared/css/code-sessions.css +479 -0
  467. package/src/renderer/shared/css/collapsed-paste.css +35 -0
  468. package/src/renderer/shared/css/effects.css +15 -0
  469. package/src/renderer/shared/css/error-notice.css +60 -0
  470. package/src/renderer/shared/css/file-changes.css +132 -0
  471. package/src/renderer/shared/css/image-studio.css +16 -16
  472. package/src/renderer/shared/css/library.css +476 -0
  473. package/src/renderer/shared/css/management-views.css +415 -27
  474. package/src/renderer/shared/css/mcp-results.css +11 -0
  475. package/src/renderer/shared/css/model-selector.css +543 -85
  476. package/src/renderer/shared/css/mods.css +77 -0
  477. package/src/renderer/shared/css/notification-notice.css +28 -0
  478. package/src/renderer/shared/css/session-sources-popover.css +9 -0
  479. package/src/renderer/shared/css/session-sources.css +23 -0
  480. package/src/renderer/shared/css/settings/agents.css +1 -1
  481. package/src/renderer/shared/css/settings/automation.css +13 -13
  482. package/src/renderer/shared/css/settings/general.css +526 -5
  483. package/src/renderer/shared/css/settings/memory.css +154 -0
  484. package/src/renderer/shared/css/settings/notifications.css +11 -0
  485. package/src/renderer/shared/css/settings/plugins.css +5 -5
  486. package/src/renderer/shared/css/settings/profile.css +331 -1
  487. package/src/renderer/shared/css/settings/theme.css +656 -3
  488. package/src/renderer/shared/css/slash-choice.css +95 -0
  489. package/src/renderer/shared/css/slash-suggestions.css +68 -0
  490. package/src/renderer/shared/css/sources-block.css +91 -0
  491. package/src/renderer/shared/css/thinking-status.css +46 -0
  492. package/src/renderer/shared/css/tools-panel.css +7 -0
  493. package/src/renderer/shared/css/ui-tailwind.css +19 -0
  494. package/src/renderer/shared/css/veo-studio.css +16 -15
  495. package/src/renderer/shared/css/viewed-images.css +15 -0
  496. package/src/renderer/shared/fonts.css +46 -0
  497. package/src/renderer/shared/fonts.ts +10 -37
  498. package/src/renderer/shared/lib/utils.ts +6 -0
  499. package/src/renderer/shared/library/controller.test.ts +61 -0
  500. package/src/renderer/shared/library/controller.ts +57 -0
  501. package/src/renderer/shared/library/transport.test.ts +26 -0
  502. package/src/renderer/shared/library/transport.ts +60 -0
  503. package/src/renderer/shared/library/useLibraryFile.ts +38 -0
  504. package/src/renderer/shared/mods.ts +58 -0
  505. package/src/renderer/shared/platform.test.ts +90 -0
  506. package/src/renderer/shared/platform.ts +219 -7
  507. package/src/renderer/shared/theme/themeManager.test.ts +43 -0
  508. package/src/renderer/shared/theme/themeManager.ts +157 -0
  509. package/src/renderer/shared/theme/themes.ts +116 -0
  510. package/src/renderer/shared/theme/tokens.css +318 -0
  511. package/src/renderer/shared/types.ts +137 -2
  512. package/src/renderer/shared/utils/agentActivity.test.ts +75 -0
  513. package/src/renderer/shared/utils/agentActivity.ts +168 -8
  514. package/src/renderer/shared/utils/approval.tsx +7 -0
  515. package/src/renderer/shared/utils/artifactBrowser.test.ts +80 -0
  516. package/src/renderer/shared/utils/artifactBrowser.ts +41 -0
  517. package/src/renderer/shared/utils/cardJson.test.ts +35 -0
  518. package/src/renderer/shared/utils/cardJson.ts +30 -0
  519. package/src/renderer/shared/utils/contextCompaction.test.tsx +48 -0
  520. package/src/renderer/shared/utils/contextCompaction.ts +21 -0
  521. package/src/renderer/shared/utils/effectVisibility.ts +9 -0
  522. package/src/renderer/shared/utils/fileIcons.ts +1 -1
  523. package/src/renderer/shared/utils/markdown.tsx +330 -81
  524. package/src/renderer/shared/utils/markdown.webImages.test.tsx +40 -0
  525. package/src/renderer/shared/utils/mcpResults.test.tsx +91 -0
  526. package/src/renderer/shared/utils/modViewport.ts +7 -0
  527. package/src/renderer/shared/utils/nativeRecordingSession.test.ts +61 -0
  528. package/src/renderer/shared/utils/nativeRecordingSession.ts +46 -0
  529. package/src/renderer/shared/utils/notificationSettings.test.ts +14 -0
  530. package/src/renderer/shared/utils/notificationSettings.ts +23 -0
  531. package/src/renderer/shared/utils/notifications.test.ts +51 -0
  532. package/src/renderer/shared/utils/notifications.ts +54 -0
  533. package/src/renderer/shared/utils/pastedText.test.ts +20 -0
  534. package/src/renderer/shared/utils/pastedText.ts +13 -0
  535. package/src/renderer/shared/utils/progressCache.test.ts +32 -0
  536. package/src/renderer/shared/utils/providers.ts +8 -3
  537. package/src/renderer/shared/utils/screenCapture.ts +43 -0
  538. package/src/renderer/shared/utils/sessionSources.test.ts +31 -0
  539. package/src/renderer/shared/utils/sessionSources.ts +34 -0
  540. package/src/renderer/shared/utils/slashCommandProcessor.ts +5 -2
  541. package/src/renderer/shared/utils/sourceAttachments.ts +28 -0
  542. package/src/renderer/shared/utils/speech.ts +51 -9
  543. package/src/renderer/shared/utils/syntaxHighlight.test.tsx +22 -0
  544. package/src/renderer/shared/utils/syntaxHighlight.tsx +26 -0
  545. package/src/renderer/shared/utils/ui.ts +4 -64
  546. package/src/renderer/shared/utils/useGeminiLiveVoice.ts +49 -5
  547. package/src/renderer/shared/utils/useLatestCallback.ts +9 -0
  548. package/src/renderer/shared/utils/useNativeVoiceInput.ts +80 -72
  549. package/src/renderer/shared/utils/useSessionSources.ts +33 -0
  550. package/src/renderer/shared/utils/viewedImages.ts +26 -0
  551. package/src/renderer/shared/utils/workspacePane.test.ts +33 -0
  552. package/src/renderer/shared/utils/workspacePane.ts +20 -0
  553. package/src/renderer/shared/utils/workspacePreview.test.ts +24 -0
  554. package/src/renderer/shared/utils/workspacePreview.ts +16 -0
  555. package/src/renderer/shared/utils/workspaceSnapshot.test.ts +49 -0
  556. package/src/renderer/shared/utils/workspaceSnapshot.ts +26 -0
  557. package/src/renderer/shared/utils/workspaces.ts +10 -0
  558. package/src/renderer/shared/workspaceUndo.ts +88 -0
  559. package/src/renderer/src/App.tsx +16 -1
  560. package/src/renderer/src/components/BrowserShell.tsx +108 -0
  561. package/src/renderer/src/components/BrowserSuggestionsPopup.tsx +91 -0
  562. package/src/renderer/src/components/LiveTranslateControls.tsx +65 -0
  563. package/src/renderer/src/components/MintDashboard.tsx +4 -2
  564. package/src/renderer/src/components/PicturesLibrary.tsx +2 -287
  565. package/src/renderer/src/components/ScreenPicker.css +227 -0
  566. package/src/renderer/src/components/ScreenPicker.tsx +312 -526
  567. package/src/renderer/src/components/SettingsWindow.tsx +48 -5
  568. package/src/renderer/src/components/SpotlightWindow.tsx +1 -0
  569. package/src/renderer/src/components/WidgetWindow.tsx +27 -3
  570. package/src/renderer/src/components/WorkspacePanel.tsx +269 -61
  571. package/src/renderer/src/components/browser-shell.css +185 -0
  572. package/src/renderer/src/components/browser-suggestions-popup.css +55 -0
  573. package/src/renderer/src/components/liveTranslateFrames.test.ts +44 -0
  574. package/src/renderer/src/components/liveTranslateFrames.ts +45 -0
  575. package/src/renderer/src/components/liveTranslateLanguage.ts +6 -0
  576. package/src/renderer/src/css/app-shell.css +400 -204
  577. package/src/renderer/src/css/chat.css +1666 -594
  578. package/src/renderer/src/css/dashboard.css +11 -0
  579. package/src/renderer/src/css/desktop-tools.css +928 -0
  580. package/src/renderer/src/css/misc.css +5 -60
  581. package/src/renderer/src/css/pictures.css +2 -407
  582. package/src/renderer/src/css/settings/base.css +394 -157
  583. package/src/renderer/src/css/sidebar-workspace.css +1072 -376
  584. package/src/renderer/src/css/spotlight.css +15 -26
  585. package/src/renderer/src/css/tool-surfaces.css +784 -0
  586. package/src/renderer/src/css/widget.css +36 -8
  587. package/src/renderer/src/env.d.ts +4 -9
  588. package/src/renderer/src/hooks/useProviderModels.ts +2 -9
  589. package/src/renderer/src/index.css +53 -46
  590. package/src/renderer/src/main.tsx +12 -0
  591. package/src/renderer/src/proactiveSuggestions.ts +29 -0
  592. package/src/renderer/src/tauri.ts +302 -339
  593. package/src/renderer/src/voiceInput.ts +2 -1
  594. package/src/renderer/src-web/App.tsx +40 -0
  595. package/src/renderer/src-web/components/MintDashboard.tsx +4 -2
  596. package/src/renderer/src-web/components/PicturesLibrary.tsx +2 -284
  597. package/src/renderer/src-web/components/PullToRefresh.tsx +107 -0
  598. package/src/renderer/src-web/components/SettingsWindow.tsx +36 -5
  599. package/src/renderer/src-web/css/app-shell.css +188 -207
  600. package/src/renderer/src-web/css/chat.css +1236 -507
  601. package/src/renderer/src-web/css/dashboard.css +11 -0
  602. package/src/renderer/src-web/css/misc.css +3 -55
  603. package/src/renderer/src-web/css/mobile.css +679 -0
  604. package/src/renderer/src-web/css/pictures.css +2 -415
  605. package/src/renderer/src-web/css/pull-to-refresh.css +54 -0
  606. package/src/renderer/src-web/css/settings/base.css +353 -134
  607. package/src/renderer/src-web/css/settings/mobile.css +320 -0
  608. package/src/renderer/src-web/css/sidebar-workspace.css +546 -187
  609. package/src/renderer/src-web/css/spotlight.css +9 -26
  610. package/src/renderer/src-web/css/widget.css +1 -6
  611. package/src/renderer/src-web/env.d.ts +4 -12
  612. package/src/renderer/src-web/hooks/useProviderModels.ts +2 -9
  613. package/src/renderer/src-web/index.css +53 -96
  614. package/src/renderer/src-web/main.tsx +12 -0
  615. package/src/renderer/src-web/proactiveSuggestions.ts +3 -0
  616. package/src/renderer/src-web/tauri.ts +309 -364
  617. package/src/renderer/tests/backgroundTerminals.browser.html +81 -0
  618. package/src/renderer/tests/chatPanelFixture.ts +23 -0
  619. package/src/renderer/tests/chatPerformance.browser.html +71 -0
  620. package/src/renderer/tests/cliSessions.browser.html +82 -0
  621. package/src/renderer/tests/collapsedPaste.browser.html +70 -0
  622. package/src/renderer/tests/composerMenus.browser.html +116 -0
  623. package/src/renderer/tests/contextCompaction.browser.html +17 -0
  624. package/src/renderer/tests/conversationLifecycle.browser.html +70 -0
  625. package/src/renderer/tests/effectsPerformance.browser.html +13 -0
  626. package/src/renderer/tests/errorRecovery.browser.html +21 -0
  627. package/src/renderer/tests/glideSelect.browser.html +71 -0
  628. package/src/renderer/tests/glideSelect.preview.html +27 -0
  629. package/src/renderer/tests/library.browser.html +1 -0
  630. package/src/renderer/tests/library.browser.tsx +78 -0
  631. package/src/renderer/tests/liveOrb.browser.html +49 -0
  632. package/src/renderer/tests/liveVoice.browser.html +29 -0
  633. package/src/renderer/tests/modInput.browser.html +22 -0
  634. package/src/renderer/tests/sessionSources.browser.html +1 -0
  635. package/src/renderer/tests/sessionSources.browser.tsx +107 -0
  636. package/src/renderer/tests/skills.browser.html +24 -0
  637. package/src/renderer/tests/toolsPanel.browser.html +1 -0
  638. package/src/renderer/tests/toolsPanel.browser.tsx +113 -0
  639. package/src/renderer/tests/viewedImages.browser.html +1 -0
  640. package/src/renderer/tests/viewedImages.browser.tsx +93 -0
  641. package/src/renderer/tests/voicePill.browser.html +80 -0
  642. package/src/renderer/tests/voicePill.preview.html +34 -0
  643. package/src/renderer/tests/webSources.browser.html +1 -0
  644. package/src/renderer/tests/webSources.browser.tsx +98 -0
  645. package/src/renderer/tests/workspaceUndo.browser.html +92 -0
  646. package/src-tauri/Cargo.toml +40 -0
  647. package/src-tauri/build.rs +3 -0
  648. package/src-tauri/src/app/lifecycle.rs +277 -0
  649. package/src-tauri/src/app/mod.rs +4 -0
  650. package/src-tauri/src/app/shortcuts.rs +40 -0
  651. package/src-tauri/src/app/tray.rs +52 -0
  652. package/src-tauri/src/background/events.rs +70 -0
  653. package/src-tauri/src/background/headless.rs +230 -0
  654. package/src-tauri/src/background/mod.rs +4 -0
  655. package/src-tauri/src/background/proactive.rs +262 -0
  656. package/src-tauri/src/commands/approvals.rs +20 -0
  657. package/src-tauri/src/commands/auth.rs +127 -0
  658. package/src-tauri/src/commands/conversation.rs +642 -0
  659. package/src-tauri/src/commands/integrations.rs +157 -0
  660. package/src-tauri/src/commands/media.rs +179 -0
  661. package/src-tauri/src/commands/mod.rs +11 -0
  662. package/src-tauri/src/commands/mods.rs +6 -0
  663. package/src-tauri/src/commands/settings.rs +141 -0
  664. package/src-tauri/src/commands/voice.rs +153 -0
  665. package/src-tauri/src/commands/workspace.rs +501 -0
  666. package/src-tauri/src/lib.rs +10 -0
  667. package/src-tauri/src/main.rs +3 -0
  668. package/src-tauri/src/native/actions.rs +206 -0
  669. package/src-tauri/src/native/browser.rs +252 -0
  670. package/src-tauri/src/native/capture.rs +695 -0
  671. package/src-tauri/src/native/discord_rpc.rs +99 -0
  672. package/src-tauri/src/native/integrations.rs +126 -0
  673. package/src-tauri/src/native/mod.rs +12 -0
  674. package/src-tauri/src/native/notifications.rs +51 -0
  675. package/src-tauri/src/native/plugins.rs +14 -0
  676. package/src-tauri/src/native/system.rs +250 -0
  677. package/src-tauri/src/native/terminal.rs +201 -0
  678. package/src-tauri/src/native/updater.rs +148 -0
  679. package/src-tauri/src/native/windows.rs +143 -0
  680. package/tsconfig.json +2 -0
  681. package/vite.config.ts +4 -1
  682. package/vite.config.web.ts +5 -0
  683. package/.cargo/config.toml +0 -13
  684. package/.claude/settings.local.json +0 -182
  685. package/.codex +0 -0
  686. package/CLAUDE.md +0 -102
  687. package/out/web/Live2DCubismCore.js +0 -9
  688. package/out/web/assets/MintDashboard-DWSqucgb.js +0 -57
  689. package/out/web/assets/SettingsWindow-DFM2aj5B.js +0 -2
  690. package/out/web/assets/chunk-CKBBP62Z-nr1uKPj9.js +0 -2
  691. package/out/web/assets/chunk-DSNCTWBM-Dtj8Rqsd.js +0 -2
  692. package/out/web/assets/chunk-DU6HZSFF-2tv5K1wT.js +0 -128
  693. package/out/web/assets/classDiagram-DTDB5LWJ-BdSFArgw.js +0 -1
  694. package/out/web/assets/classDiagram-v2-JRS7N3AN-BdSFArgw.js +0 -1
  695. package/out/web/assets/core-DImejIUG.js +0 -1
  696. package/out/web/assets/dist-js-BxuKEVWM.js +0 -1
  697. package/out/web/assets/event-BNl8Zahw.js +0 -1
  698. package/out/web/assets/fira-code-cyrillic-400-normal-UC0NFL4U.woff2 +0 -0
  699. package/out/web/assets/fira-code-cyrillic-400-normal-dc1q3VD7.woff +0 -0
  700. package/out/web/assets/fira-code-cyrillic-500-normal-Bu7VCL72.woff +0 -0
  701. package/out/web/assets/fira-code-cyrillic-500-normal-CX35h3Mg.woff2 +0 -0
  702. package/out/web/assets/fira-code-cyrillic-ext-400-normal-Buh61xzB.woff +0 -0
  703. package/out/web/assets/fira-code-cyrillic-ext-400-normal-txZ9Fk_1.woff2 +0 -0
  704. package/out/web/assets/fira-code-cyrillic-ext-500-normal-CYRspHgm.woff2 +0 -0
  705. package/out/web/assets/fira-code-cyrillic-ext-500-normal-CwtLmSFD.woff +0 -0
  706. package/out/web/assets/fira-code-greek-400-normal-B2Gh_Y8s.woff2 +0 -0
  707. package/out/web/assets/fira-code-greek-400-normal-DobhaxvF.woff +0 -0
  708. package/out/web/assets/fira-code-greek-500-normal-CVO0IRNt.woff2 +0 -0
  709. package/out/web/assets/fira-code-greek-500-normal-DEXIWiey.woff +0 -0
  710. package/out/web/assets/fira-code-greek-ext-400-normal-DR7mBgIM.woff2 +0 -0
  711. package/out/web/assets/fira-code-greek-ext-400-normal-DSPUheWg.woff +0 -0
  712. package/out/web/assets/fira-code-greek-ext-500-normal-BO3iq16n.woff2 +0 -0
  713. package/out/web/assets/fira-code-greek-ext-500-normal-CMiNLXER.woff +0 -0
  714. package/out/web/assets/fira-code-latin-ext-400-normal-DG73JjOf.woff +0 -0
  715. package/out/web/assets/fira-code-latin-ext-400-normal-KSMg0QLl.woff2 +0 -0
  716. package/out/web/assets/fira-code-latin-ext-500-normal-CaANqXjI.woff +0 -0
  717. package/out/web/assets/fira-code-latin-ext-500-normal-Crd9e_oI.woff2 +0 -0
  718. package/out/web/assets/flowDiagram-A5DVABFB-BpnHUSU7.js +0 -1
  719. package/out/web/assets/index-CVRg270z.css +0 -1
  720. package/out/web/assets/index-DxZQr9yD.js +0 -10
  721. package/out/web/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  722. package/out/web/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  723. package/out/web/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  724. package/out/web/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  725. package/out/web/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  726. package/out/web/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  727. package/out/web/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  728. package/out/web/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  729. package/out/web/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  730. package/out/web/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  731. package/out/web/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  732. package/out/web/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  733. package/out/web/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  734. package/out/web/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  735. package/out/web/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  736. package/out/web/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  737. package/out/web/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  738. package/out/web/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  739. package/out/web/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  740. package/out/web/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  741. package/out/web/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  742. package/out/web/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  743. package/out/web/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  744. package/out/web/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  745. package/out/web/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  746. package/out/web/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  747. package/out/web/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  748. package/out/web/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  749. package/out/web/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  750. package/out/web/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  751. package/out/web/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  752. package/out/web/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  753. package/out/web/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  754. package/out/web/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  755. package/out/web/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  756. package/out/web/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  757. package/out/web/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  758. package/out/web/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  759. package/out/web/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  760. package/out/web/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  761. package/out/web/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  762. package/out/web/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  763. package/out/web/assets/kanit-latin-400-normal-BUlsQXH3.woff2 +0 -0
  764. package/out/web/assets/kanit-latin-400-normal-HVZWrfev.woff +0 -0
  765. package/out/web/assets/kanit-latin-500-normal-CX_4XcKi.woff2 +0 -0
  766. package/out/web/assets/kanit-latin-500-normal-qBha86O4.woff +0 -0
  767. package/out/web/assets/kanit-latin-600-normal-0lS78yAd.woff2 +0 -0
  768. package/out/web/assets/kanit-latin-600-normal-DlacpeTg.woff +0 -0
  769. package/out/web/assets/kanit-latin-ext-400-normal-B2xPf58u.woff2 +0 -0
  770. package/out/web/assets/kanit-latin-ext-400-normal-CHvNKHHD.woff +0 -0
  771. package/out/web/assets/kanit-latin-ext-500-normal-BFdWrG22.woff +0 -0
  772. package/out/web/assets/kanit-latin-ext-500-normal-EHs3suD6.woff2 +0 -0
  773. package/out/web/assets/kanit-latin-ext-600-normal-BBDzoLaj.woff +0 -0
  774. package/out/web/assets/kanit-latin-ext-600-normal-DAX3wtuq.woff2 +0 -0
  775. package/out/web/assets/kanit-thai-400-normal-D2nliXKa.woff +0 -0
  776. package/out/web/assets/kanit-thai-400-normal-D80Pglro.woff2 +0 -0
  777. package/out/web/assets/kanit-thai-500-normal-BB8gri04.woff2 +0 -0
  778. package/out/web/assets/kanit-thai-500-normal-Iy_w0a80.woff +0 -0
  779. package/out/web/assets/kanit-thai-600-normal-Bj6oiaDc.woff2 +0 -0
  780. package/out/web/assets/kanit-thai-600-normal-wbTlPO7I.woff +0 -0
  781. package/out/web/assets/kanit-vietnamese-400-normal-DRI8YWyb.woff2 +0 -0
  782. package/out/web/assets/kanit-vietnamese-400-normal-dow6Bnto.woff +0 -0
  783. package/out/web/assets/kanit-vietnamese-500-normal-BzTrpCM3.woff2 +0 -0
  784. package/out/web/assets/kanit-vietnamese-500-normal-T1ndT7MF.woff +0 -0
  785. package/out/web/assets/kanit-vietnamese-600-normal-Bi7fw3I4.woff2 +0 -0
  786. package/out/web/assets/kanit-vietnamese-600-normal-DXCRAa_8.woff +0 -0
  787. package/out/web/assets/mali-latin-400-normal-ByPcZ8Gx.woff +0 -0
  788. package/out/web/assets/mali-latin-400-normal-Cuc6Ykl8.woff2 +0 -0
  789. package/out/web/assets/mali-latin-500-normal-B01M-LP6.woff2 +0 -0
  790. package/out/web/assets/mali-latin-500-normal-Thgqw_9f.woff +0 -0
  791. package/out/web/assets/mali-latin-600-normal-B9TiUNpT.woff2 +0 -0
  792. package/out/web/assets/mali-latin-600-normal-CycpQCwU.woff +0 -0
  793. package/out/web/assets/mali-latin-ext-400-normal-DUVdJQO4.woff +0 -0
  794. package/out/web/assets/mali-latin-ext-400-normal-iCG1ALuJ.woff2 +0 -0
  795. package/out/web/assets/mali-latin-ext-500-normal-BfJE4UMZ.woff2 +0 -0
  796. package/out/web/assets/mali-latin-ext-500-normal-FoLEyOKS.woff +0 -0
  797. package/out/web/assets/mali-latin-ext-600-normal-BTvIfiCp.woff2 +0 -0
  798. package/out/web/assets/mali-latin-ext-600-normal-DAQcLVmD.woff +0 -0
  799. package/out/web/assets/mali-thai-400-normal-BO7A3bLZ.woff2 +0 -0
  800. package/out/web/assets/mali-thai-400-normal-CX9VrjTn.woff +0 -0
  801. package/out/web/assets/mali-thai-500-normal-Cph2qha9.woff +0 -0
  802. package/out/web/assets/mali-thai-500-normal-D89rMT77.woff2 +0 -0
  803. package/out/web/assets/mali-thai-600-normal-DPgXT6rZ.woff +0 -0
  804. package/out/web/assets/mali-thai-600-normal-DlTx3OsB.woff2 +0 -0
  805. package/out/web/assets/mali-vietnamese-400-normal-DUKxzXaz.woff2 +0 -0
  806. package/out/web/assets/mali-vietnamese-400-normal-gFDLvsOK.woff +0 -0
  807. package/out/web/assets/mali-vietnamese-500-normal--OY07q2c.woff +0 -0
  808. package/out/web/assets/mali-vietnamese-500-normal-KDrNRwfW.woff2 +0 -0
  809. package/out/web/assets/mali-vietnamese-600-normal-CtTMUU7T.woff +0 -0
  810. package/out/web/assets/mali-vietnamese-600-normal-DFlJr66u.woff2 +0 -0
  811. package/out/web/assets/mermaid.core-DYGGlqOf.js +0 -11
  812. package/out/web/assets/mitr-latin-400-normal-Cb18vPmZ.woff +0 -0
  813. package/out/web/assets/mitr-latin-400-normal-CwbkLQ4a.woff2 +0 -0
  814. package/out/web/assets/mitr-latin-500-normal-B4JOhzAi.woff +0 -0
  815. package/out/web/assets/mitr-latin-500-normal-BmClOow2.woff2 +0 -0
  816. package/out/web/assets/mitr-latin-ext-400-normal-B3CPG7Yo.woff2 +0 -0
  817. package/out/web/assets/mitr-latin-ext-400-normal-DTx65hiC.woff +0 -0
  818. package/out/web/assets/mitr-latin-ext-500-normal-B_Diajz1.woff2 +0 -0
  819. package/out/web/assets/mitr-latin-ext-500-normal-DYOsVaVT.woff +0 -0
  820. package/out/web/assets/mitr-thai-400-normal-CS4Do6aM.woff +0 -0
  821. package/out/web/assets/mitr-thai-400-normal-CXWaAdVj.woff2 +0 -0
  822. package/out/web/assets/mitr-thai-500-normal-CVdBrEVH.woff2 +0 -0
  823. package/out/web/assets/mitr-thai-500-normal-CW_B5D-i.woff +0 -0
  824. package/out/web/assets/mitr-vietnamese-400-normal-CPMGWyoC.woff2 +0 -0
  825. package/out/web/assets/mitr-vietnamese-400-normal-Z6XhIpdY.woff +0 -0
  826. package/out/web/assets/mitr-vietnamese-500-normal-CDrv0585.woff2 +0 -0
  827. package/out/web/assets/mitr-vietnamese-500-normal-CMQWyq-Z.woff +0 -0
  828. package/out/web/assets/noto-sans-thai-latin-400-normal-BaWBrqFP.woff2 +0 -0
  829. package/out/web/assets/noto-sans-thai-latin-400-normal-Dh_FJjOB.woff +0 -0
  830. package/out/web/assets/noto-sans-thai-latin-500-normal-BC04jsmm.woff +0 -0
  831. package/out/web/assets/noto-sans-thai-latin-500-normal-fyBKClF1.woff2 +0 -0
  832. package/out/web/assets/noto-sans-thai-latin-600-normal-CemcjnVR.woff2 +0 -0
  833. package/out/web/assets/noto-sans-thai-latin-600-normal-Dbc-dNO6.woff +0 -0
  834. package/out/web/assets/noto-sans-thai-latin-ext-400-normal-B-1H0YkH.woff +0 -0
  835. package/out/web/assets/noto-sans-thai-latin-ext-400-normal-nBP59pVw.woff2 +0 -0
  836. package/out/web/assets/noto-sans-thai-latin-ext-500-normal-B-ZWb8SZ.woff2 +0 -0
  837. package/out/web/assets/noto-sans-thai-latin-ext-500-normal-CrEHO7C8.woff +0 -0
  838. package/out/web/assets/noto-sans-thai-latin-ext-600-normal-PkMZo0xa.woff +0 -0
  839. package/out/web/assets/noto-sans-thai-latin-ext-600-normal-maHHBsez.woff2 +0 -0
  840. package/out/web/assets/noto-sans-thai-thai-400-normal-BEOmKAI1.woff2 +0 -0
  841. package/out/web/assets/noto-sans-thai-thai-400-normal-Dxb_unuU.woff +0 -0
  842. package/out/web/assets/noto-sans-thai-thai-500-normal-BOGXO2tw.woff +0 -0
  843. package/out/web/assets/noto-sans-thai-thai-500-normal-CU_X86GQ.woff2 +0 -0
  844. package/out/web/assets/noto-sans-thai-thai-600-normal-CmgB8_JK.woff +0 -0
  845. package/out/web/assets/noto-sans-thai-thai-600-normal-Cs73sVjl.woff2 +0 -0
  846. package/out/web/assets/oauthManager-DNiwM8Rn.js +0 -2
  847. package/out/web/assets/oauthManager-DuamS1Av.css +0 -1
  848. package/out/web/assets/outfit-latin-300-normal-AWLfuCom.woff +0 -0
  849. package/out/web/assets/outfit-latin-300-normal-CRYTwY6m.woff2 +0 -0
  850. package/out/web/assets/outfit-latin-400-normal-BGsTXAXT.woff2 +0 -0
  851. package/out/web/assets/outfit-latin-400-normal-DMwTpYkH.woff +0 -0
  852. package/out/web/assets/outfit-latin-500-normal-ClnHRwRh.woff +0 -0
  853. package/out/web/assets/outfit-latin-500-normal-DKnIMDSk.woff2 +0 -0
  854. package/out/web/assets/outfit-latin-600-normal-B7SfZ07L.woff2 +0 -0
  855. package/out/web/assets/outfit-latin-600-normal-BEfTtDA7.woff +0 -0
  856. package/out/web/assets/outfit-latin-ext-300-normal-BYS6Dpvq.woff2 +0 -0
  857. package/out/web/assets/outfit-latin-ext-300-normal-CMIMshEd.woff +0 -0
  858. package/out/web/assets/outfit-latin-ext-400-normal-5tcqmc2S.woff2 +0 -0
  859. package/out/web/assets/outfit-latin-ext-400-normal-DHm7mdGe.woff +0 -0
  860. package/out/web/assets/outfit-latin-ext-500-normal-DrCvqoFD.woff +0 -0
  861. package/out/web/assets/outfit-latin-ext-500-normal-zeox_O30.woff2 +0 -0
  862. package/out/web/assets/outfit-latin-ext-600-normal-B85nYjL1.woff2 +0 -0
  863. package/out/web/assets/outfit-latin-ext-600-normal-CWJcPgd7.woff +0 -0
  864. package/out/web/assets/preload-helper-D0uHx7FM.js +0 -1
  865. package/out/web/assets/prompt-latin-400-normal-BQ9zjSN8.woff2 +0 -0
  866. package/out/web/assets/prompt-latin-400-normal-CxU4ec_r.woff +0 -0
  867. package/out/web/assets/prompt-latin-500-normal-B1edBDQ9.woff +0 -0
  868. package/out/web/assets/prompt-latin-500-normal-CxzxEHZc.woff2 +0 -0
  869. package/out/web/assets/prompt-latin-600-normal-CSDDLorv.woff +0 -0
  870. package/out/web/assets/prompt-latin-600-normal-hKZWXsc1.woff2 +0 -0
  871. package/out/web/assets/prompt-latin-ext-400-normal-1pHbN9uy.woff +0 -0
  872. package/out/web/assets/prompt-latin-ext-400-normal-DdSafGZ9.woff2 +0 -0
  873. package/out/web/assets/prompt-latin-ext-500-normal--EZ1um7s.woff2 +0 -0
  874. package/out/web/assets/prompt-latin-ext-500-normal-D-lI1EVT.woff +0 -0
  875. package/out/web/assets/prompt-latin-ext-600-normal-C8b50x67.woff +0 -0
  876. package/out/web/assets/prompt-latin-ext-600-normal-Cg9L7iJU.woff2 +0 -0
  877. package/out/web/assets/prompt-thai-400-normal-BrkKv8cO.woff2 +0 -0
  878. package/out/web/assets/prompt-thai-400-normal-DJypnfr3.woff +0 -0
  879. package/out/web/assets/prompt-thai-500-normal-C18pDUoL.woff2 +0 -0
  880. package/out/web/assets/prompt-thai-500-normal-D7YNqUJD.woff +0 -0
  881. package/out/web/assets/prompt-thai-600-normal-CYPViXds.woff +0 -0
  882. package/out/web/assets/prompt-thai-600-normal-MrdfU7zR.woff2 +0 -0
  883. package/out/web/assets/prompt-vietnamese-400-normal-BCPzsgPT.woff2 +0 -0
  884. package/out/web/assets/prompt-vietnamese-400-normal-D4pLyeNK.woff +0 -0
  885. package/out/web/assets/prompt-vietnamese-500-normal-DmzxmPwa.woff2 +0 -0
  886. package/out/web/assets/prompt-vietnamese-500-normal-w_sS_j2F.woff +0 -0
  887. package/out/web/assets/prompt-vietnamese-600-normal-1dyohtNh.woff +0 -0
  888. package/out/web/assets/prompt-vietnamese-600-normal-7QWjJBsF.woff2 +0 -0
  889. package/out/web/assets/sarabun-latin-400-normal-DmguIS-7.woff +0 -0
  890. package/out/web/assets/sarabun-latin-400-normal-URPBxl-K.woff2 +0 -0
  891. package/out/web/assets/sarabun-latin-500-normal-BjUTcdxu.woff2 +0 -0
  892. package/out/web/assets/sarabun-latin-500-normal-CJexTAnl.woff +0 -0
  893. package/out/web/assets/sarabun-latin-600-normal-9FonlkKx.woff +0 -0
  894. package/out/web/assets/sarabun-latin-600-normal-DMD3TROr.woff2 +0 -0
  895. package/out/web/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2 +0 -0
  896. package/out/web/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff +0 -0
  897. package/out/web/assets/sarabun-latin-ext-500-normal-Cot16Bd2.woff +0 -0
  898. package/out/web/assets/sarabun-latin-ext-500-normal-DE1LysqI.woff2 +0 -0
  899. package/out/web/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff +0 -0
  900. package/out/web/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2 +0 -0
  901. package/out/web/assets/sarabun-thai-400-normal-C2DaJlKK.woff2 +0 -0
  902. package/out/web/assets/sarabun-thai-400-normal-CH-UbWgg.woff +0 -0
  903. package/out/web/assets/sarabun-thai-500-normal-BVssjame.woff2 +0 -0
  904. package/out/web/assets/sarabun-thai-500-normal-C3iDLEzi.woff +0 -0
  905. package/out/web/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2 +0 -0
  906. package/out/web/assets/sarabun-thai-600-normal-DWKeTe6a.woff +0 -0
  907. package/out/web/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff +0 -0
  908. package/out/web/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2 +0 -0
  909. package/out/web/assets/sarabun-vietnamese-500-normal-CpRVvGRU.woff +0 -0
  910. package/out/web/assets/sarabun-vietnamese-500-normal-Dpe7Br9m.woff2 +0 -0
  911. package/out/web/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff +0 -0
  912. package/out/web/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2 +0 -0
  913. package/out/web/assets/stateDiagram-v2-4QOOHH4V-s6P9g2_b.js +0 -1
  914. package/out/web/assets/swimlanesDiagram-VK2B7HYN-CV9fOLrV.js +0 -8
  915. package/out/web/assets/tauri-CNrHQ2Gb.js +0 -3
  916. package/out/web/assets/window-DkIhgI7B.js +0 -1
  917. package/skills-lock.json +0 -41
  918. package/src/renderer/public/Live2DCubismCore.js +0 -9
  919. package/src/renderer/src/companionWidget.ts +0 -95
  920. package/src/renderer/src/components/Live2DStage.tsx +0 -389
  921. package/src/renderer/src/components/ModelPanel.tsx +0 -154
  922. package/src/renderer/src/css/model.css +0 -627
  923. package/src/renderer/src-web/companionWidget.ts +0 -37
  924. package/src/renderer/src-web/components/ModelPanel.tsx +0 -12
  925. package/src/renderer/src-web/css/model.css +0 -628
@@ -1,2 +0,0 @@
1
- import{i as e,n as t}from"./chunk-CacB07dV.js";import{B as n,D as r,E as i,H as a,M as o,P as s,R as c,S as l,_ as u,at as d,b as f,et as p,h as m,l as h,r as g,st as _,u as v,v as y,y as b}from"./tauri-CNrHQ2Gb.js";import{a as x,n as S,r as C,t as w}from"./index-DxZQr9yD.js";import{$ as ee,A as T,G as E,J as te,K as D,L as O,M as k,Q as A,X as ne,Y as re,Z as ie,_ as ae,a as oe,at as se,b as ce,c as le,d as ue,et as j,f as de,g as fe,i as pe,it as M,j as N,l as me,m as P,n as he,nt as ge,o as _e,ot as F,p as I,q as ve,r as ye,rt as be,s as xe,t as Se,tt as Ce,u as we,w as Te,y as Ee}from"./oauthManager-DNiwM8Rn.js";function De(e){let t=e.trim().toLowerCase(),n=j[t===`gemini`||t===`google`?`nanobanana`:t===`flux`?`bfl`:t===`openai`?`dalle`:t];return n?[...n]:[]}function L(e,t){let[n,r]=(0,Oe.useState)(()=>De(e)),[i,a]=(0,Oe.useState)(!1),o=(0,Oe.useRef)(0);return(0,Oe.useEffect)(()=>{let n=De(e);r(n);let i=++o.current;a(!0),f(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 Oe,ke=t((()=>{Oe=e(x()),F(),o()}));function Ae(e){let t=e.trim().toLowerCase(),n=se[t===`gemini`||t===`google`?`veo`:t];return n?[...n]:[]}function je(e,t){let[n,r]=(0,R.useState)(()=>Ae(e)),[i,a]=(0,R.useState)(!1),o=(0,R.useRef)(0);return(0,R.useEffect)(()=>{let n=Ae(e);r(n);let i=++o.current;a(!0),l(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 R,Me=t((()=>{R=e(x()),F(),o()}));function z({value:e,onChange:t,placeholder:n,className:r}){let[i,a]=(0,Ne.useState)(!1);return(0,B.jsxs)(`div`,{className:`api-key-field`,children:[(0,B.jsx)(`input`,{type:i?`text`:`password`,className:r,value:e,onChange:e=>t(e.target.value),placeholder:n}),(0,B.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,B.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,B.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,B.jsx)(`line`,{x1:`1`,y1:`1`,x2:`23`,y2:`23`})]}):(0,B.jsxs)(`svg`,{width:`15`,height:`15`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,B.jsx)(`path`,{d:`M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z`}),(0,B.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})})]})}var Ne,B,Pe=t((()=>{Ne=e(x()),B=C()}));function Fe({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=[...ie],dynamicAnthropicModels:b=[...ve],dynamicOpenAIModels:x=[...be],dynamicOpenRouterModels:S=[...M],dynamicDeepSeekModels:C=[...te],dynamicLocalModels:w=[...Ce],dynamicImageModels:T,dynamicVideoModels:E,updateAvailable:O,updateMessage:k,handleCheckUpdates:ne,handleInstallUpdate:re,isDesktopApp:oe=!0,onSaveWithoutClosing:ce}){let[le,ue]=Ie.useState(null),[de,fe]=Ie.useState({ai_routing:!0,search:!1,productivity:!1,image_gen:!1,video_gen:!1,custom_providers:!1,desktop_updates:!1,assistant_presence:!1}),pe=e=>{fe(t=>({...t,[e]:!t[e]}))},N=e=>{fe({ai_routing:e,search:e,productivity:e,image_gen:e,video_gen:e,custom_providers:e,desktop_updates:e,assistant_presence:e})},me=async e=>{ce&&(await ce(),ue(e),setTimeout(()=>ue(null),2e3))},P=(e,t,n,r,i,a,o)=>{let s=de[e]??!1;return(0,V.jsxs)(`section`,{className:`setting-section collapsible-section ${s?`is-open`:`is-collapsed`}`,children:[(0,V.jsxs)(`div`,{className:`section-heading-collapsible`,onClick:()=>pe(e),role:`button`,"aria-expanded":s,"aria-label":`${s?`Collapse`:`Expand`} ${n}`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(`p`,{className:`section-kicker`,children:[t,a]}),(0,V.jsxs)(`h2`,{className:`section-title`,children:[o,n]})]}),(0,V.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,V.jsx)(`polyline`,{points:`6 9 12 15 18 9`})})]}),s&&(0,V.jsx)(`div`,{className:`section-collapsible-body`,children:i})]})},he=e.aiProvider.startsWith(`custom:`)?(e.customProviders??[]).find(t=>`custom:${t.id}`===e.aiProvider)?.displayName||`Custom`:D(e.aiProvider),ge=ze[e.searchProvider]??e.searchProvider,_e=H[e.imageGenProvider]??e.imageGenProvider,F=Be[e.videoGenProvider]??e.videoGenProvider,I=(e.customProviders??[]).length;return(0,V.jsxs)(`div`,{className:`tab-pane active`,children:[(0,V.jsxs)(`div`,{className:`accordion-controls`,children:[(0,V.jsx)(`button`,{type:`button`,onClick:()=>N(!0),children:`Expand All`}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>N(!1),children:`Collapse All`})]}),P(`ai_routing`,`AI routing`,`Provider & Model`,`Choose which AI backend Mint uses, then set the default model.`,(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`form-grid compact`,children:[(0,V.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,V.jsx)(`label`,{children:`Active Provider`}),(0,V.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Active Provider`,children:[{id:`gemini`,label:D(`gemini`),title:`Google Gemini (Cloud)`},{id:`anthropic`,label:D(`anthropic`),title:`Anthropic Claude`},{id:`openai`,label:D(`openai`),title:`OpenAI`},{id:`openrouter`,label:D(`openrouter`),title:`OpenRouter`},{id:`deepseek`,label:D(`deepseek`),title:`DeepSeek`},{id:`ollama`,label:D(`ollama`),title:`Ollama (Local / Private)`},{id:`huggingface`,label:D(`huggingface`),title:`Hugging Face (Inference API)`},{id:`local_openai`,label:D(`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,V.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,V.jsxs)(`div`,{className:`setting-row wide`,children:[(0,V.jsx)(`label`,{children:`Active Model`}),(0,V.jsx)(`select`,{value:i,onChange:r=>t(`customModelSelections`,{...e.customModelSelections??{},[n]:r.target.value}),children:r.models.map(e=>(0,V.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,V.jsxs)(`div`,{className:`setting-row stacked`,style:{marginTop:`0.75rem`,padding:`0.75rem`,borderRadius:`8px`,background:`rgba(255, 255, 255, 0.03)`,border:`1px solid rgba(255, 255, 255, 0.06)`},children:[(0,V.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,marginBottom:`0.35rem`},children:[(0,V.jsxs)(`label`,{style:{margin:0,fontWeight:600,display:`flex`,alignItems:`baseline`,gap:`0.45rem`},children:[(0,V.jsx)(`span`,{children:`Model Temperature`}),m&&(0,V.jsxs)(`span`,{style:{fontSize:`0.8rem`,fontWeight:500,color:`var(--text-muted)`},children:[`· `,m]})]}),(0,V.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.5rem`},children:[(0,V.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,V.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,V.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.75rem`},children:[(0,V.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-color, #10b981)`,cursor:`pointer`}}),(0,V.jsx)(`span`,{style:{fontSize:`0.85rem`,minWidth:`2.5rem`,textAlign:`right`,fontFamily:`monospace`,fontWeight:600},children:p.toFixed(2)})]}),(0,V.jsxs)(`span`,{style:{fontSize:`0.75rem`,opacity:.75,marginTop:`0.35rem`,lineHeight:1.4},children:[`Controls sampling entropy for `,(0,V.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.`]})]})})()]}),(0,V.jsxs)(`div`,{className:`provider-cards-container`,children:[(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`gemini`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,V.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`})}),`Google Gemini (Cloud)`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`gemini`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`gemini`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Gemini Model`}),(0,V.jsxs)(`select`,{value:y.includes(e.geminiModel)?e.geminiModel:`custom`,onChange:e=>t(`geminiModel`,e.target.value),children:[y.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!y.includes(e.geminiModel)||e.geminiModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom Gemini Model`}),(0,V.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,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Gemini API Key`}),(0,V.jsx)(z,{value:e.apiKey,onChange:e=>t(`apiKey`,e),placeholder:`Enter Gemini API Key...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`anthropic`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`path`,{d:`M4.5 16.5c-1.5 1.26-2.5 3.19-2.5 5.5h20c0-2.31-1-4.24-2.5-5.5`}),(0,V.jsx)(`path`,{d:`M12 2L2 22h20L12 2z`})]}),`Anthropic Claude`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`anthropic`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`anthropic`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Anthropic Model`}),(0,V.jsxs)(`select`,{value:b.includes(e.anthropicModel)?e.anthropicModel:`custom`,onChange:e=>t(`anthropicModel`,e.target.value),children:[b.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!b.includes(e.anthropicModel)||e.anthropicModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom Anthropic Model`}),(0,V.jsx)(`input`,{type:`text`,value:u,onChange:e=>{d(e.target.value),t(`anthropicModel`,`custom`)},placeholder:`e.g. claude-3-5-sonnet-latest`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Anthropic API Key`}),(0,V.jsx)(z,{value:e.anthropicApiKey,onChange:e=>t(`anthropicApiKey`,e),placeholder:`Enter Anthropic API Key...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`openai`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,V.jsx)(`line`,{x1:`12`,y1:`2`,x2:`12`,y2:`22`}),(0,V.jsx)(`path`,{d:`M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6`})]}),`OpenAI`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`openai`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`openai`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`OpenAI Model`}),(0,V.jsxs)(`select`,{value:x.includes(e.openaiModel)?e.openaiModel:`custom`,onChange:e=>t(`openaiModel`,e.target.value),children:[x.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!x.includes(e.openaiModel)||e.openaiModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom OpenAI Model`}),(0,V.jsx)(`input`,{type:`text`,value:i,onChange:e=>{a(e.target.value),t(`openaiModel`,`custom`)},placeholder:`e.g. gpt-4o`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`OpenAI API Key`}),(0,V.jsx)(z,{value:e.openaiApiKey,onChange:e=>t(`openaiApiKey`,e),placeholder:`Enter OpenAI API Key...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`openrouter`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`polyline`,{points:`16 3 21 3 21 8`}),(0,V.jsx)(`line`,{x1:`4`,y1:`20`,x2:`21`,y2:`3`}),(0,V.jsx)(`polyline`,{points:`21 16 21 21 16 21`}),(0,V.jsx)(`line`,{x1:`15`,y1:`15`,x2:`21`,y2:`21`}),(0,V.jsx)(`line`,{x1:`4`,y1:`4`,x2:`9`,y2:`9`})]}),`OpenRouter`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`openrouter`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`openrouter`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`OpenRouter Model`}),(0,V.jsxs)(`select`,{value:S.includes(e.openrouterModel)?e.openrouterModel:`custom`,onChange:e=>t(`openrouterModel`,e.target.value),children:[S.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!S.includes(e.openrouterModel)||e.openrouterModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom OpenRouter Model`}),(0,V.jsx)(`input`,{type:`text`,value:o,onChange:e=>{s(e.target.value),t(`openrouterModel`,`custom`)},placeholder:`e.g. anthropic/claude-3.5-sonnet`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`OpenRouter API Key`}),(0,V.jsx)(z,{value:e.openrouterApiKey,onChange:e=>t(`openrouterApiKey`,e),placeholder:`Enter OpenRouter API Key...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`deepseek`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,V.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),`DeepSeek`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`deepseek`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`deepseek`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`DeepSeek Model`}),(0,V.jsxs)(`select`,{value:C.includes(e.deepseekModel)?e.deepseekModel:`custom`,onChange:e=>t(`deepseekModel`,e.target.value),children:[C.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!C.includes(e.deepseekModel)||e.deepseekModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom DeepSeek Model`}),(0,V.jsx)(`input`,{type:`text`,value:c,onChange:e=>{l(e.target.value),t(`deepseekModel`,`custom`)},placeholder:`e.g. deepseek-v4-pro`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`DeepSeek API Key`}),(0,V.jsx)(z,{value:e.deepseekApiKey,onChange:e=>t(`deepseekApiKey`,e),placeholder:`Enter DeepSeek API Key...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`huggingface`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,V.jsx)(`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`}),(0,V.jsx)(`line`,{x1:`9`,y1:`9`,x2:`9.01`,y2:`9`}),(0,V.jsx)(`line`,{x1:`15`,y1:`9`,x2:`15.01`,y2:`9`})]}),`Hugging Face (Inference API)`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`huggingface`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`huggingface`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Hugging Face Model`}),(0,V.jsxs)(`select`,{value:A.includes(e.hfModel)?e.hfModel:`custom`,onChange:e=>t(`hfModel`,e.target.value),children:[A.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!A.includes(e.hfModel)||e.hfModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom Hugging Face Model`}),(0,V.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,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Hugging Face API Key`}),(0,V.jsx)(z,{value:e.hfApiKey,onChange:e=>t(`hfApiKey`,e),placeholder:`Enter Hugging Face API Key...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`local_openai`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`rect`,{x:`2`,y:`3`,width:`20`,height:`14`,rx:`2`,ry:`2`}),(0,V.jsx)(`line`,{x1:`8`,y1:`21`,x2:`16`,y2:`21`}),(0,V.jsx)(`line`,{x1:`12`,y1:`17`,x2:`12`,y2:`21`})]}),`LM Studio / Local OpenAI`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`local_openai`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`local_openai`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`LM Studio Model`}),(0,V.jsxs)(`select`,{value:w.includes(e.localModelName)?e.localModelName:`custom`,onChange:e=>t(`localModelName`,e.target.value),children:[w.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!w.includes(e.localModelName)||e.localModelName===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom LM Studio Model`}),(0,V.jsx)(`input`,{type:`text`,value:m,onChange:e=>{h(e.target.value),t(`localModelName`,`custom`)},placeholder:`e.g. local-model`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`LM Studio Base URL`}),(0,V.jsx)(`input`,{type:`text`,value:e.localApiBaseUrl,onChange:e=>t(`localApiBaseUrl`,e.target.value),placeholder:`e.g. http://localhost:1234/v1`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.aiProvider===`ollama`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,V.jsx)(`path`,{d:`M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z`})}),`Ollama (Local)`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.aiProvider===`ollama`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`ollama`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Ollama Model`}),(0,V.jsxs)(`select`,{value:v.includes(e.ollamaModel)?e.ollamaModel:`custom`,onChange:e=>t(`ollamaModel`,e.target.value),children:[v.map(e=>(0,V.jsx)(`option`,{value:e,children:e},e)),!v.includes(e.ollamaModel)&&e.ollamaModel&&e.ollamaModel!==`custom`&&(0,V.jsx)(`option`,{value:e.ollamaModel,children:e.ollamaModel}),(0,V.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),(!v.includes(e.ollamaModel)||e.ollamaModel===`custom`)&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Custom Ollama Model`}),(0,V.jsx)(`input`,{type:`text`,value:g,onChange:e=>{_(e.target.value),t(`ollamaModel`,`custom`)},placeholder:`e.g. llama3:latest`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Ollama Host`}),(0,V.jsx)(`input`,{type:`text`,value:e.ollamaHost,onChange:e=>t(`ollamaHost`,e.target.value),placeholder:`e.g. http://localhost:11434`})]})]})]})]})]}),(0,V.jsx)(`span`,{className:`section-current-badge`,children:he})),P(`search`,`Web search`,`Search Provider`,`Choose which search API Mint uses when performing web lookups.`,(0,V.jsxs)(`div`,{className:`provider-cards-container`,children:[(0,V.jsxs)(`div`,{className:`provider-card ${e.searchProvider===`brave`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,V.jsx)(`path`,{d:`M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z`})}),`Brave Search API`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.searchProvider===`brave`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`searchProvider`,`brave`),children:`Set active`})})]}),(0,V.jsx)(`div`,{className:`provider-card-body`,children:(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Brave Search API Key`}),(0,V.jsx)(z,{value:e.braveSearchApiKey,onChange:e=>t(`braveSearchApiKey`,e),placeholder:`Enter Brave Search API Key...`})]})})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.searchProvider===`google`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,V.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),`Google Search API`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.searchProvider===`google`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`searchProvider`,`google`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Google Search API Key`}),(0,V.jsx)(z,{value:e.googleSearchApiKey,onChange:e=>t(`googleSearchApiKey`,e),placeholder:`Enter Google Search API Key...`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Google Search Engine ID (CX)`}),(0,V.jsx)(`input`,{type:`text`,value:e.googleSearchCx,onChange:e=>t(`googleSearchCx`,e.target.value),placeholder:`Enter Google Custom Search Engine ID (CX)...`})]})]})]}),(0,V.jsxs)(`div`,{className:`provider-card ${e.searchProvider===`searxng`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`circle`,{cx:`11`,cy:`11`,r:`8`}),(0,V.jsx)(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})]}),`SearXNG (self-hosted)`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.searchProvider===`searxng`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`searchProvider`,`searxng`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`SearXNG Instance URL`}),(0,V.jsx)(`input`,{type:`text`,value:e.searxngBaseUrl,onChange:e=>t(`searxngBaseUrl`,e.target.value),placeholder:`e.g. https://searx.example.com`})]}),(0,V.jsx)(`p`,{className:`hint`,children:`Self-hosted, no API key needed. The instance must have JSON output enabled (search.formats in settings.yml).`})]})]})]}),(0,V.jsx)(`span`,{className:`section-current-badge`,children:ge})),P(`image_gen`,`AI image creation`,`Image Generation`,`Choose which image generation provider Mint uses.`,(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`form-grid compact`,children:(0,V.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,V.jsx)(`label`,{children:`Active Provider`}),(0,V.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Image Provider`,children:Le.map(n=>(0,V.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,V.jsx)(`div`,{className:`provider-cards-container`,children:Le.map(n=>{let r=ee[n.id],i=r?j[r.listKey]??[]:[],a=r&&T?.[r.listKey]||i,o=r?.configField,s=o&&(e[o]||a[0]?.value)||``;return(0,V.jsxs)(`div`,{className:`provider-card ${e.imageGenProvider===n.id?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[Re,n.cardTitle]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.imageGenProvider===n.id?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`imageGenProvider`,n.id),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[o&&a.length>0&&(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsxs)(`label`,{children:[n.label,` Model`]}),(0,V.jsxs)(`select`,{value:s,onChange:e=>t(o,e.target.value),children:[a.map(e=>(0,V.jsx)(`option`,{value:e.value,children:e.label},e.value)),s&&!a.some(e=>e.value===s)&&(0,V.jsx)(`option`,{value:s,children:s},s)]})]}),n.keyField?(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsxs)(`label`,{children:[n.label,` API Key`]}),(0,V.jsx)(z,{value:e[n.keyField]||``,onChange:e=>t(n.keyField,e),placeholder:`Enter ${n.label} API Key...`})]}):(0,V.jsxs)(`p`,{className:`hint`,children:[`Uses your `,n.sharedKey,` API key — no extra key needed.`]})]})]},n.id)})})]}),(0,V.jsx)(`span`,{className:`section-current-badge`,children:_e})),P(`video_gen`,`AI video creation`,`Video Generation`,`Choose which video generation provider Mint uses.`,(0,V.jsx)(`div`,{className:`provider-cards-container`,children:(0,V.jsxs)(`div`,{className:`provider-card ${e.videoGenProvider===`veo`?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`polygon`,{points:`23 7 16 12 23 17 23 7`}),(0,V.jsx)(`rect`,{x:`1`,y:`5`,width:`15`,height:`14`,rx:`2`,ry:`2`})]}),`Google Veo (Gemini Videos)`]}),(0,V.jsx)(`div`,{className:`provider-card-actions`,children:e.videoGenProvider===`veo`?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`videoGenProvider`,`veo`),children:`Set active`})})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsx)(`p`,{className:`hint`,children:`Uses your Gemini API key — no extra key needed.`}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Default Veo Model`}),(()=>{let n=E?.veo||se.veo||[],r=e.veoModel||`veo-3.1-generate-preview`;return(0,V.jsxs)(`select`,{value:r,onChange:e=>{t(`veoModel`,e.target.value),ae(`veoModel`,e.target.value,`video`)},children:[n.map(e=>(0,V.jsx)(`option`,{value:e.value,children:e.label},e.value)),r&&!n.some(e=>e.value===r)&&(0,V.jsx)(`option`,{value:r,children:r},r)]})})()]})]})]})}),(0,V.jsx)(`span`,{className:`section-current-badge`,children:F})),P(`custom_providers`,`Custom AI Routing`,`Custom Providers`,`Add any OpenAI-compatible endpoint as a custom provider. Configure its models and optional headers.`,(0,V.jsxs)(V.Fragment,{children:[(0,V.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,V.jsxs)(`div`,{className:`provider-card ${i?`active-provider`:``}`,children:[(0,V.jsxs)(`div`,{className:`provider-card-header`,children:[(0,V.jsxs)(`div`,{className:`provider-card-title`,children:[(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,V.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,V.jsxs)(`div`,{className:`provider-card-actions`,children:[i?(0,V.jsx)(`span`,{className:`provider-active-badge`,children:`Active`}):(0,V.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>t(`aiProvider`,`custom:${n.id}`),children:`Set active`}),(0,V.jsx)(`button`,{className:`btn btn-primary btn-xs`,onClick:()=>me(n.id),title:`Save this provider settings`,children:le===n.id?`Saved! ✓`:`Save`}),(0,V.jsx)(`button`,{className:`btn btn-danger btn-xs`,onClick:o,title:`Delete this provider`,children:`Delete`})]})]}),(0,V.jsxs)(`div`,{className:`provider-card-body`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Name`}),(0,V.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,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Base URL`}),(0,V.jsx)(`input`,{type:`text`,value:n.baseUrl,onChange:e=>a({baseUrl:e.target.value}),placeholder:`https://api.myprovider.com/v1`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`API Key`}),(0,V.jsx)(z,{value:n.apiKey,onChange:e=>a({apiKey:e}),placeholder:`Optional. Leave empty if you manage auth via headers.`})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`provider-sublist-label`,children:`Model list`}),n.models.map((e,t)=>(0,V.jsxs)(`div`,{className:`provider-sublist-row`,children:[(0,V.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,V.jsx)(`button`,{className:`btn btn-danger btn-xs`,onClick:()=>c(t),title:`Remove model`,children:`🗑`})]},t)),(0,V.jsx)(`button`,{className:`btn btn-secondary btn-xs sublist-add`,onClick:l,children:`+ Add model`})]}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{className:`provider-sublist-label`,children:`Headers (optional)`}),n.headers.map((e,t)=>(0,V.jsxs)(`div`,{className:`provider-sublist-row`,children:[(0,V.jsx)(`input`,{type:`text`,value:e.name,onChange:e=>u(t,{name:e.target.value}),placeholder:`Header-Name`}),(0,V.jsx)(`input`,{type:`text`,value:e.value,onChange:e=>u(t,{value:e.target.value}),placeholder:`value`}),(0,V.jsx)(`button`,{className:`btn btn-danger btn-xs`,onClick:()=>d(t),title:`Remove header`,children:`🗑`})]},t)),(0,V.jsx)(`button`,{className:`btn btn-secondary btn-xs sublist-add`,onClick:()=>{a({headers:[...n.headers,{name:``,value:``}]})},children:`+ Add header`})]})]})]},r)})}),(0,V.jsx)(`div`,{className:`setting-actions`,children:(0,V.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,V.jsx)(`span`,{className:`section-current-badge`,children:I>0?`${I} added`:`None`})),oe&&P(`desktop_updates`,`Desktop updates`,`Signed Tauri Channel`,`Check and explicitly install signed Tauri releases from your configured update channel.`,(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(`div`,{className:`toggle-row`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{children:`Check signed update channel`}),(0,V.jsx)(`p`,{className:`hint`,children:`This flag does not install updates automatically.`})]}),(0,V.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:e.enableAutoUpdate,onChange:e=>t(`enableAutoUpdate`,e.target.checked)}),(0,V.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,V.jsxs)(`div`,{className:`form-grid single`,children:[(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Updater Endpoint`}),(0,V.jsx)(`input`,{type:`text`,value:e.updaterEndpoint,onChange:e=>t(`updaterEndpoint`,e.target.value),placeholder:`https://updates.example.com/latest.json`})]}),(0,V.jsxs)(`div`,{className:`setting-row`,children:[(0,V.jsx)(`label`,{children:`Updater Public Key`}),(0,V.jsx)(`textarea`,{value:e.updaterPublicKey,onChange:e=>t(`updaterPublicKey`,e.target.value),placeholder:`Minisign public key`})]})]}),(0,V.jsxs)(`div`,{className:`setting-actions`,children:[(0,V.jsx)(`button`,{type:`button`,className:`btn-connect`,onClick:ne,children:`Check for updates`}),O&&(0,V.jsx)(`button`,{type:`button`,className:`btn-primary`,onClick:re,children:`Install signed update`})]}),k&&(0,V.jsx)(`p`,{className:`hint`,children:k})]}),(0,V.jsx)(`span`,{className:`section-current-badge`,children:e.enableAutoUpdate?`On`:`Off`})),oe&&P(`assistant_presence`,`Desktop`,`Assistant Presence`,`Configure the mini AI character desktop presence widget.`,(0,V.jsxs)(`div`,{className:`toggle-row`,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(`label`,{children:`Show Desktop AI Candidate`}),(0,V.jsx)(`p`,{className:`hint`,children:`Show the mini AI character on your desktop.`})]}),(0,V.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,V.jsx)(`input`,{type:`checkbox`,checked:e.showDesktopWidget,onChange:e=>t(`showDesktopWidget`,e.target.checked)}),(0,V.jsx)(`span`,{className:`settings-toggle-slider`})]})]}),(0,V.jsx)(`span`,{className:`section-current-badge`,children:e.showDesktopWidget?`On`:`Off`}))]})}var Ie,V,Le,Re,ze,H,Be,Ve=t((()=>{Ie=e(x()),F(),fe(),E(),Pe(),V=C(),Le=[{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`}],Re=(0,V.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,V.jsx)(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,ry:`2`}),(0,V.jsx)(`circle`,{cx:`8.5`,cy:`8.5`,r:`1.5`}),(0,V.jsx)(`polyline`,{points:`21 15 16 10 5 21`})]}),ze={brave:`Brave`,google:`Google`,searxng:`SearXNG`},H={gemini:`NanoBanana`,dalle:`DALL·E`,stability:`Stability`,ideogram:`Ideogram`,replicate:`Replicate`,bfl:`FLUX`},Be={veo:`Veo`}})),He=t((()=>{Ve()}));function Ue({name:e,setName:t,imageUrl:n,setImageUrl:r}){let{user:i,avatarUrl:a,refreshUser:o}=S(),[s,c]=(0,We.useState)(!1),[l,u]=(0,We.useState)(null),d=(0,We.useRef)(null);return i?(0,U.jsx)(`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:d,accept:`image/*`,style:{display:`none`},onChange:async e=>{let t=e.target.files?.[0];if(e.target.value=``,t){if(!t.type.startsWith(`image/`)){u(`Please select a valid image file.`);return}c(!0),u(null);try{let e=await v(await new Promise((e,n)=>{let r=new FileReader;r.onload=()=>e(r.result),r.onerror=n,r.readAsDataURL(t)}),t.name);r(e.image||``),o(e)}catch(e){console.error(`Avatar upload error:`,e),u(`Failed to upload image.`)}finally{c(!1)}}}}),(0,U.jsx)(`div`,{className:`profile-avatar profile-avatar-lg`,onClick:()=>d.current?.click(),children:a?(0,U.jsx)(`img`,{src:a,alt:e||`User`}):(e?.[0]||i.email?.[0]||`U`).toUpperCase()}),(0,U.jsxs)(`div`,{className:`profile-header-meta`,children:[(0,U.jsx)(`p`,{className:`profile-header-name`,children:e||i.email||`User`}),i.email&&(0,U.jsx)(`p`,{className:`profile-header-email`,children:i.email}),(0,U.jsxs)(`div`,{className:`profile-header-actions`,children:[(0,U.jsx)(`button`,{type:`button`,className:`btn-secondary btn-small`,onClick:()=>d.current?.click(),disabled:s,children:s?`Uploading…`:`Upload Photo`}),(0,U.jsx)(`span`,{className:`hint`,children:`Click the picture or use the button to change it. Uploads are saved immediately.`})]}),l&&(0,U.jsx)(`p`,{className:`profile-message-error`,children:l})]})]}),(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=...`})})]})]})]})}):(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 We,U,Ge=t((()=>{We=e(x()),w(),o(),U=C()})),Ke=t((()=>{Ge()}));function qe({userName:e,setUserName:t,userPreferences:n,setUserPreferences:r}){return(0,W.jsx)(`div`,{className:`tab-pane active animate-fade-in`,style:{display:`flex`,flexDirection:`column`,gap:`24px`},children:(0,W.jsxs)(`section`,{className:`setting-section`,children:[(0,W.jsx)(`div`,{className:`section-heading`,children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`section-kicker`,children:`Cross-session Memory`}),(0,W.jsx)(`h2`,{className:`section-title`,children:`User Profile & Preferences`})]})}),(0,W.jsxs)(`div`,{className:`form-grid single`,children:[(0,W.jsxs)(`div`,{className:`setting-row`,children:[(0,W.jsx)(`label`,{children:`Your Name / Nickname`}),(0,W.jsxs)(`div`,{className:`memory-field-container`,children:[(0,W.jsx)(`input`,{type:`text`,value:e,onChange:e=>t(e.target.value),placeholder:`e.g. Pheem, Jane`}),(0,W.jsx)(`p`,{className:`hint`,children:`Used by the assistant to address you in conversation.`})]})]}),(0,W.jsxs)(`div`,{className:`setting-row`,children:[(0,W.jsx)(`label`,{children:`Custom Instructions & Preferences`}),(0,W.jsxs)(`div`,{className:`memory-field-container`,children:[(0,W.jsx)(`textarea`,{value:n,onChange:e=>r(e.target.value),placeholder:`e.g. Explain coding concepts step-by-step. Prefer TypeScript. Talk in Thai. Keep explanations concise.`,style:{minHeight:`120px`,resize:`vertical`}}),(0,W.jsx)(`p`,{className:`hint`,children:`Preferences, guidelines, or persona instructions for the assistant.`})]})]})]})]})})}var W,Je=t((()=>{x(),W=C()})),Ye=t((()=>{Je()}));function Xe(e){let[t,n]=(0,Ze.useState)(Qe),[r,i]=(0,Ze.useState)(!1),a=(0,Ze.useRef)(0);return(0,Ze.useEffect)(()=>{if(n(Qe),!e.trim())return;let t=++a.current;i(!0),b(e).then(e=>{if(t===a.current&&e&&e.length>0){let t=[...e];for(let e of Qe)t.includes(e)||t.push(e);n(t)}}).catch(()=>{}).finally(()=>{t===a.current&&i(!1)})},[e]),{models:t,loading:r}}var Ze,Qe,$e=t((()=>{Ze=e(x()),F(),o(),Qe=[...re]}));function et({config:e,updateField:t,apiKey:n}){let[r,i]=(0,tt.useState)(!1),{models:a,loading:o}=Xe(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:[`Realtime Live Model`,o&&(0,G.jsx)(`span`,{style:{marginLeft:6,opacity:.5,fontSize:`0.8em`},children:`loading…`})]}),(0,G.jsxs)(`select`,{value:s?`custom`:e.geminiLiveModel,onChange:e=>{e.target.value===`custom`?i(!0):(i(!1),t(`geminiLiveModel`,e.target.value))},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 Realtime Live 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)(`select`,{value:e.geminiLiveVoice,onChange:e=>t(`geminiLiveVoice`,e.target.value),children:ne.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 tt,G,nt=t((()=>{tt=e(x()),F(),$e(),G=C()})),rt=t((()=>{nt()}));function it({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:`Write a skill after finishing a hard task`}),(0,K.jsx)(`p`,{className:`hint`,children:`Saves a reusable skill after a multi-step task, so it won't have to re-derive the solution next time.`})]}),(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:`Awareness`}),(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)(`circle`,{cx:`12`,cy:`12`,r:`10`}),(0,K.jsx)(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`12`}),(0,K.jsx)(`line`,{x1:`12`,y1:`16`,x2:`12.01`,y2:`16`})]}),`Proactive Assistant`]})]})}),(0,K.jsxs)(`div`,{className:`slider-stack`,children:[(0,K.jsxs)(`div`,{className:`setting-row`,children:[(0,K.jsx)(`label`,{children:`Screen Capture Frequency`}),(0,K.jsxs)(`div`,{className:`slider-group`,children:[(0,K.jsx)(`input`,{type:`range`,min:`30`,max:`300`,step:`30`,value:e.proactiveInterval,onChange:e=>t(`proactiveInterval`,parseInt(e.target.value)),className:`range-slider`}),(0,K.jsxs)(`span`,{className:`range-value`,children:[e.proactiveInterval,` sec`]})]}),(0,K.jsx)(`p`,{className:`hint`,children:`Lower values respond faster but use more API calls.`})]}),(0,K.jsxs)(`div`,{className:`setting-row`,children:[(0,K.jsx)(`label`,{children:`Suggestion Cooldown`}),(0,K.jsxs)(`div`,{className:`slider-group`,children:[(0,K.jsx)(`input`,{type:`range`,min:`60`,max:`600`,step:`60`,value:e.proactiveCooldown,onChange:e=>t(`proactiveCooldown`,parseInt(e.target.value)),className:`range-slider`}),(0,K.jsxs)(`span`,{className:`range-value`,children:[Math.round(e.proactiveCooldown/60),` min`]})]}),(0,K.jsx)(`p`,{className:`hint`,children:`Minimum time between repeat suggestions.`})]})]})]}),(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)(z,{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)(z,{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)(z,{className:`bridge-input`,placeholder:`Slack Bot Token (xoxb-...)`,value:e.slackBotToken,onChange:e=>t(`slackBotToken`,e)}),(0,K.jsx)(z,{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)(z,{className:`bridge-input`,placeholder:`LINE Channel Access Token`,value:e.lineChannelAccessToken,onChange:e=>t(`lineChannelAccessToken`,e)}),(0,K.jsx)(z,{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)(z,{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)(z,{className:`bridge-input`,placeholder:`WhatsApp Verify Token`,value:e.whatsappVerifyToken,onChange:e=>t(`whatsappVerifyToken`,e)}),(0,K.jsx)(z,{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,at=t((()=>{x(),Pe(),K=C()})),ot=t((()=>{at()}));function st({config:e,updateField:t}){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`})]})}),(0,q.jsxs)(`div`,{className:`setting-row stacked`,children:[(0,q.jsx)(`label`,{children:`Appearance`}),(0,q.jsx)(`div`,{className:`theme-segmented`,role:`radiogroup`,"aria-label":`Theme`,children:[{id:`dark`,label:`Dark`,icon:(0,q.jsx)(`svg`,{width:`14`,height:`14`,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`,label:`Light`,icon:(0,q.jsxs)(`svg`,{width:`14`,height:`14`,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`,label:`Midnight`,icon:(0,q.jsx)(`svg`,{width:`14`,height:`14`,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`})})},{id:`custom`,label:`Custom`,icon:(0,q.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`}),(0,q.jsx)(`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`}),(0,q.jsx)(`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}),(0,q.jsx)(`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`}),(0,q.jsx)(`path`,{d:`M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.92 0 1.7-.74 1.7-1.67 0-.44-.18-.86-.48-1.17-.3-.3-.48-.73-.48-1.16 0-.92.74-1.67 1.67-1.67h2.29c3.09 0 5.6-2.51 5.6-5.6 0-5.25-4.25-9.7-9.7-9.7z`})]})}].map(n=>(0,q.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":e.theme===n.id,title:n.label,className:`theme-segmented-btn ${e.theme===n.id?`active`:``}`,onClick:()=>t(`theme`,n.id),children:[n.icon,(0,q.jsx)(`span`,{className:`theme-segmented-swatch ${n.id}-preview`,"aria-hidden":`true`})]},n.id))})]}),e.theme===`custom`&&(0,q.jsxs)(`div`,{className:`custom-theme-panel`,style:{marginTop:`15px`},children:[(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Background Gradient`}),(0,q.jsxs)(`div`,{className:`color-range`,style:{display:`flex`,gap:`8px`,alignItems:`center`},children:[(0,q.jsx)(`input`,{type:`color`,value:e.customBgStart,onChange:e=>t(`customBgStart`,e.target.value)}),(0,q.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,color:`var(--text-soft)`},children:(0,q.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,q.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,q.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})}),(0,q.jsx)(`input`,{type:`color`,value:e.customBgEnd,onChange:e=>t(`customBgEnd`,e.target.value)})]})]}),(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Panel Background`}),(0,q.jsx)(`input`,{type:`color`,value:e.customPanelBg,onChange:e=>t(`customPanelBg`,e.target.value)})]})]})]}),(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:`Color`}),(0,q.jsx)(`h2`,{className:`section-title`,children:`Accent & Text`})]})}),(0,q.jsxs)(`div`,{className:`form-grid`,children:[(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Accent Color`}),(0,q.jsx)(`div`,{className:`color-presets`,children:[`#8b5cf6`,`#06b6d4`,`#10b981`,`#f59e0b`,`#ef4444`,`#ec4899`].map(n=>(0,q.jsx)(`button`,{className:`color-dot`,style:{backgroundColor:n,border:e.accentColor===n?`2px solid white`:`2px solid transparent`,boxShadow:e.accentColor===n?`0 0 10px ${n}`:`none`},onClick:()=>t(`accentColor`,n),"aria-label":`Select accent color ${n}`,children:e.accentColor===n&&(0,q.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`white`,strokeWidth:`3.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,q.jsx)(`polyline`,{points:`20 6 9 17 4 12`})})},n))})]}),(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Custom Accent`}),(0,q.jsx)(`input`,{type:`color`,value:e.accentColor,onChange:e=>t(`accentColor`,e.target.value)})]}),(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`System Text`}),(0,q.jsx)(`input`,{type:`color`,value:e.systemTextColor,onChange:e=>t(`systemTextColor`,e.target.value)})]}),(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Chat Text`}),(0,q.jsx)(`input`,{type:`color`,value:e.chatTextColor||e.systemTextColor,onChange:e=>t(`chatTextColor`,e.target.value)}),(0,q.jsx)(`p`,{className:`hint`,children:`Color of chat message body text and code snippets. Defaults to System Text if not set.`})]})]})]}),(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:`Surface`}),(0,q.jsx)(`h2`,{className:`section-title`,children:`Interface Style`})]})}),(0,q.jsxs)(`div`,{className:`form-grid`,children:[(0,q.jsxs)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Glass Blur`}),(0,q.jsx)(`div`,{className:`pill-segmented`,role:`radiogroup`,"aria-label":`Glass Blur`,children:[{id:`blur(4px)`,label:`Low`},{id:`blur(16px)`,label:`Medium`},{id:`blur(32px)`,label:`High`},{id:`none`,label:`Off`}].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)(`div`,{className:`setting-row`,children:[(0,q.jsx)(`label`,{children:`Font Family`}),(0,q.jsxs)(`select`,{value:e.fontFamily,onChange:e=>t(`fontFamily`,e.target.value),children:[(0,q.jsx)(`option`,{value:`'Outfit', sans-serif`,children:`Outfit (Default)`}),(0,q.jsx)(`option`,{value:`'Prompt', sans-serif`,children:`Prompt (Modern Thai)`}),(0,q.jsx)(`option`,{value:`'Sarabun', sans-serif`,children:`Sarabun (Formal Thai)`}),(0,q.jsx)(`option`,{value:`'Kanit', sans-serif`,children:`Kanit (Trendy Thai)`}),(0,q.jsx)(`option`,{value:`'Mitr', sans-serif`,children:`Mitr (Friendly Thai)`}),(0,q.jsx)(`option`,{value:`'Noto Sans Thai', sans-serif`,children:`Noto Sans Thai (Clean Thai)`}),(0,q.jsx)(`option`,{value:`'Mali', cursive`,children:`Mali (Cute Thai Font)`}),(0,q.jsx)(`option`,{value:`'Inter', sans-serif`,children:`Inter (Clean Sans-Serif)`}),(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:`16px`,label:`Small`},{id:`18px`,label:`Medium`},{id:`22px`,label:`Large`},{id:`26px`,label:`XL`},{id:`30px`,label:`XXL`}].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 q,ct=t((()=>{x(),q=C()})),lt=t((()=>{ct()}));function ut({config:e,updateField:t,mcpName:r,setMcpName:i,mcpCmd:a,setMcpCmd:o,mcpArgs:s,setMcpArgs:l,mcpEnv:u,setMcpEnv:d,mcpIcon:f=``,setMcpIcon:p,handleAddMcpServer:h,handleRemoveMcpServer:_,handleConnectPlugin:v}){let[b,x]=(0,J.useState)([]),[S,C]=(0,J.useState)(``),[w,ee]=(0,J.useState)(``),[T,E]=(0,J.useState)(!1),[te,D]=(0,J.useState)(``),[O,k]=(0,J.useState)({docker:!1,git:!1,gh:!1,node:!1}),[A,ne]=(0,J.useState)(!1),[re,ie]=(0,J.useState)([]),[ae,se]=(0,J.useState)(null),[ce,j]=(0,J.useState)(null),[de,fe]=(0,J.useState)(null),[M,N]=(0,J.useState)(!1);(0,J.useEffect)(()=>{F(),I(),P();let e=oe(()=>{P()});return()=>{e()}},[]);let P=async()=>{try{ie(await Se())}catch(e){console.error(`Failed to fetch OAuth statuses:`,e)}},he=async(t,n)=>{if(t===`spotify`&&!e.spotifyClientId?.trim()){j(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()){j(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()){j(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()){j(n||`gmail`),alert(`Please click "Configure" below and enter your Google Client ID before signing in.`);return}se(t);try{await pe(t)}catch(e){console.error(`OAuth login error for ${t}:`,e)}finally{se(null),P()}},ge=async e=>{try{await ye(e),await P()}catch(t){console.error(`OAuth revoke error for ${e}:`,t)}},F=async()=>{E(!0),D(``);try{x(await c(window.localStorage.getItem(`mint:last-workspace-path`)||void 0))}catch(e){console.error(`Failed to fetch learned skills:`,e),D(`Failed to load learned skills`)}finally{E(!1)}},I=async()=>{ne(!0);try{k(await y())}catch(e){console.error(`Failed to detect system tools:`,e)}finally{ne(!1)}},ve=async e=>{if(e.preventDefault(),!(!S.trim()||!w.trim()))try{await g(S.trim(),w.trim()),C(``),ee(``),F()}catch(e){console.error(`Failed to add learned skill:`,e),alert(`Error saving skill`)}},be=async e=>{if(confirm(`Are you sure you want to forget skill "${e}"?`))try{await m(e),F()}catch(e){console.error(`Failed to delete skill:`,e),alert(`Error deleting skill`)}},xe=(n,r,i)=>{let a={...e.mcpServers||{}};a[n]&&(a[n]={...a[n],[r]:i},t(`mcpServers`,a))},Ce=e=>{j(t=>t===e?null:e)},we=Ee,De=(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)},L=[];return Object.entries(e.mcpServers||{}).forEach(([e,t])=>{let n=`🔌`;e===`docker`&&(n=`🐳`),(e===`git`||e===`github`)&&(n=`🐙`),L.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(` `)}`})}),O.docker&&!e.mcpServers?.docker&&L.push({name:`docker`,command:`npx`,args:[`-y`,`@proxeus/mcp-docker-server`],icon:`🐳`,isEnabled:!1,isConfigured:!1,description:`Docker MCP Server (Discovered)`}),O.git&&!e.mcpServers?.git&&L.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`})]})}),b.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:b.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 ${e.is_workspace?`ok`:`info`}`,children:e.is_workspace?`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:()=>be(e.name),children:`Forget`})]},e.name))}),(0,Y.jsxs)(`form`,{className:`add-skill-box`,onSubmit:ve,children:[(0,Y.jsx)(`h3`,{children:`Teach New Skill`}),te&&(0,Y.jsx)(`p`,{className:`profile-message-error`,children:te}),(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:S,onChange:e=>C(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
2
- Write only clean TypeScript. Use async/await.`,value:w,onChange:e=>ee(e.target.value),rows:5})]}),(0,Y.jsx)(`button`,{type:`submit`,className:`btn-primary btn-full`,disabled:T,children:T?`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:L.length===0?(0,Y.jsx)(`div`,{className:`mcp-empty-notice`,children:`No MCP servers configured or discovered.`}):L.map(r=>{let i=de===r.name,a=e.mcpServers?.[r.name]||{command:r.command,args:r.args,env:{},icon:r.customIcon};return(0,Y.jsxs)(`div`,{className:`plugin-card-wrapper${i?` active-plugin-card`:``}${r.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:Te(r.name,r.customIcon)}),(0,Y.jsxs)(`div`,{className:`plugin-info`,children:[(0,Y.jsxs)(`div`,{className:`plugin-name plugin-name-row`,children:[r.name,!r.isConfigured&&(0,Y.jsx)(`span`,{className:`plugin-tag ok`,children:`Discovered`})]}),(0,Y.jsx)(`div`,{className:`plugin-desc mono`,children:r.description})]})]}),(0,Y.jsxs)(`div`,{className:`plugin-actions`,children:[r.isConfigured&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`button`,{type:`button`,className:`btn-icon${i?` is-active`:``}`,onClick:()=>fe(i?null:r.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:()=>_(r.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:r.isEnabled,onChange:e=>{De(r.name,e.target.checked,r.command,r.args)}}),(0,Y.jsx)(`span`,{className:`settings-toggle-slider`})]})]})]}),r.isConfigured&&i&&(0,Y.jsxs)(`div`,{className:`plugin-config-panel`,children:[(0,Y.jsxs)(`h4`,{children:[`Edit settings for `,r.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:a.command||``,onChange:e=>xe(r.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:a.icon||``,onChange:e=>xe(r.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:(a.args||[]).join(` `),onChange:e=>xe(r.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 a.env==`object`?JSON.stringify(a.env,null,2):a.env||``,onChange:e=>{try{let t=JSON.parse(e.target.value);xe(r.name,`env`,t)}catch{}},rows:3})]}),(0,Y.jsx)(ue,{serverName:r.name,config:e,updateField:t,listServerTools:n})]})]},r.name)})}),(0,Y.jsxs)(`div`,{className:`add-mcp-box`,children:[(0,Y.jsx)(`h3`,{children:`Add MCP Server`}),(0,Y.jsx)(me,{configuredNames:Object.keys(e.mcpServers||{}),onPick:(e,t,n)=>{i(e.key),o(e.command),l([...e.args||[],...t].join(` `)),d(Object.keys(n).length?JSON.stringify(n,null,2):``),p&&p(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:r,onChange:e=>i(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:a,onChange:e=>o(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:s,onChange:e=>l(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:f,onChange:e=>p&&p(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:u,onChange:e=>d(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:M,onChange:e=>N(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:()=>{h(M),N(!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:we.map(n=>{let r=le(e,n),i=ce===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:Te(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=re.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&&(re.find(e=>e.provider===n.oauthProvider)?.connected?(0,Y.jsx)(`button`,{className:`btn-danger btn-sm`,onClick:()=>ge(n.oauthProvider),children:`Disconnect`}):(0,Y.jsx)(`button`,{className:`btn-primary btn-sm`,onClick:()=>he(n.oauthProvider,n.key),disabled:ae===n.oauthProvider,children:ae===n.oauthProvider?`Signing In...`:`Sign In`})),n.hasCredentials&&(0,Y.jsx)(`button`,{className:`btn-secondary btn-sm`,onClick:()=>Ce(n.key),children:i?`Hide Config`:`Configure`}),n.key===`discord`&&r&&(0,Y.jsx)(`button`,{className:`btn-secondary btn-sm`,onClick:()=>v(`discord`),children:`Update RPC`}),(0,Y.jsxs)(`label`,{className:`settings-toggle-switch`,children:[(0,Y.jsx)(`input`,{type:`checkbox`,checked:r,onChange:r=>{_e(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,dt=t((()=>{J=e(x()),o(),de(),we(),he(),ce(),xe(),Y=C()})),ft=t((()=>{dt()}));function pt({config:e,updateField:t,dynamicOllamaModels:n=[]}){let r=e.agents||[],[i,a]=(0,X.useState)(null),[o,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(`gemini`),[u,d]=(0,X.useState)(`gemini-2.5-flash`),[f,p]=(0,X.useState)(``),[m,h]=(0,X.useState)(``),[g,_]=(0,X.useState)(!1),v=t=>{if(l(t),t===`gemini`)d(e.geminiModel||ie[0]);else if(t===`openai`)d(e.openaiModel||be[0]);else if(t===`openrouter`)d(e.openrouterModel||M[0]);else if(t===`deepseek`)d(e.deepseekModel||te[0]);else if(t===`anthropic`)d(e.anthropicModel||ve[0]);else if(t===`huggingface`)d(e.hfModel||A[0]);else if(t===`local_openai`)d(e.localModelName||Ce[0]);else if(t===`ollama`)d(e.ollamaModel||n[0]||``);else if(t.startsWith(`custom:`)){let n=t.replace(/^custom:/,``);d((e.customProviders??[]).find(e=>e.id===n)?.models[0]?.modelId??``)}},y=e=>{a(e),s(e.name),l(e.provider),d(e.model),p(e.apiKey||``),h(e.systemInstruction||e.systemPrompt||``),_(!0)},b=()=>{if(!o.trim()){alert(`Please enter an agent name.`);return}let e=[];if(i)e=r.map(e=>e.id===i.id?{...e,name:o,provider:c,model:u,apiKey:f||void 0,systemInstruction:m,systemPrompt:m,enabled:e.enabled??!0}:e);else{let t={id:`agent-${Date.now()}`,name:o,provider:c,model:u,apiKey:f||void 0,systemInstruction:m,systemPrompt:m,enabled:!0};e=[...r,t]}t(`agents`,e),w()},x=e=>{confirm(`Are you sure you want to delete this agent?`)&&t(`agents`,r.filter(t=>t.id!==e))},S=(e,n)=>{t(`agents`,r.map(t=>t.id===e?{...t,enabled:n}:t))},C=()=>{t(`agents`,r.map(e=>({...e,enabled:!1})))},w=()=>{a(null),s(``),l(`gemini`),d(`gemini-2.5-flash`),p(``),h(``),_(!1)},ee=()=>{a(null),s(``),l(`gemini`),d(`gemini-2.5-flash`),p(``),h(``),_(!0)},T=[{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),E=[],D=``;if(c===`gemini`)E=ie,D=e.geminiModel;else if(c===`openai`)E=be,D=e.openaiModel;else if(c===`openrouter`)E=M,D=e.openrouterModel;else if(c===`deepseek`)E=te,D=e.deepseekModel;else if(c===`anthropic`)E=ve,D=e.anthropicModel;else if(c===`huggingface`)E=A,D=e.hfModel;else if(c===`local_openai`)E=Ce,D=e.localModelName;else if(c===`ollama`)E=n,D=e.ollamaModel;else if(c.startsWith(`custom:`)){let t=c.replace(/^custom:/,``);E=(e.customProviders??[]).find(e=>e.id===t)?.models.map(e=>e.modelId)??[],D=E[0]??``}let O=D?[D,...E.filter(e=>e!==D)]:E,k=!O.includes(u);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`})]}),!g&&(0,Z.jsxs)(`div`,{style:{display:`flex`,gap:`10px`,height:`fit-content`,flexShrink:0},children:[(0,Z.jsx)(`button`,{className:`btn btn-secondary`,onClick:C,style:{whiteSpace:`nowrap`},children:`Disable All`}),(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:ee,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`})]})]})}),g?(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(--accent)`},children:i?`Edit Agent: ${i.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:o,onChange:e=>s(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)(`select`,{value:c,onChange:e=>v(e.target.value),children:T.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)(`select`,{value:k?`custom`:u,onChange:e=>{let t=e.target.value;d(t===`custom`?``:t)},children:[O.map(e=>(0,Z.jsx)(`option`,{value:e,children:e},e)),(0,Z.jsx)(`option`,{value:`custom`,children:`Custom...`})]})]}),k&&(0,Z.jsxs)(`div`,{className:`setting-row`,children:[(0,Z.jsx)(`label`,{children:`Custom Model Name`}),(0,Z.jsx)(`input`,{type:`text`,value:u,onChange:e=>d(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)(z,{value:f,onChange:e=>p(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:m,onChange:e=>h(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:w,children:`Cancel`}),(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:b,children:`Save Agent`})]})]}):(0,Z.jsxs)(`div`,{className:`entity-list`,style:{marginTop:`16px`},children:[r.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=>S(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:()=>y(e),children:`Edit`}),![`planner`,`coder`,`reviewer`].includes(e.id)&&(0,Z.jsx)(`button`,{className:`btn btn-danger`,style:{padding:`4px 8px`,fontSize:`12px`},onClick:()=>x(e.id),children:`Delete`})]})]}),(0,Z.jsxs)(`p`,{className:`entity-card-desc`,children:[`"`,e.systemInstruction,`"`]})]},e.id)),r.length===0&&(0,Z.jsx)(`div`,{className:`entity-empty`,children:`No agents configured. Click "+ Add Custom Agent" to get started.`})]})]}),(0,Z.jsx)(mt,{})]})}function mt(){let[e,t]=(0,X.useState)([]),[n,r]=(0,X.useState)(!0),[i,o]=(0,X.useState)(``),[s,c]=(0,X.useState)(!1),[l,d]=(0,X.useState)(null),[f,m]=(0,X.useState)(gt),h=typeof window<`u`&&window.localStorage.getItem(`mint:last-workspace-path`)||void 0,g=async()=>{r(!0),o(``);try{t(await a(h))}catch(e){o(e instanceof Error?e.message:`Failed to load subagents.`)}finally{r(!1)}};(0,X.useEffect)(()=>{g()},[]);let _=()=>{c(!1),d(null),m(gt)},v=()=>{d(null),m({...gt,scope:h?`workspace`:`global`}),c(!0)},y=e=>{d(e.sourcePath),m({name:e.name,description:e.description,tools:e.tools?.join(`, `)??``,model:e.model??``,provider:e.provider??``,systemPrompt:e.systemPrompt,scope:ht(e.sourcePath)?`workspace`:`global`}),c(!0)},b=async()=>{if(!f.name.trim()){alert(`Please enter a subagent name.`);return}if(!f.systemPrompt.trim()){alert(`Please describe what this subagent should do (its system prompt).`);return}let e={name:f.name.trim(),description:f.description.trim(),tools:f.tools.trim()?f.tools.split(`,`).map(e=>e.trim()).filter(Boolean):null,model:f.model.trim()||null,provider:f.provider.trim()||null,systemPrompt:f.systemPrompt,scope:f.scope,previousSourcePath:l};try{await p(e,h),_(),await g()}catch(e){alert(e instanceof Error?e.message:`Failed to save subagent.`)}},x=async e=>{if(confirm(`Delete subagent "${e.name}"?`))try{await u(e.sourcePath),await g()}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`})]}),!s&&(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:v,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.`}),s?(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(--accent)`},children:l?`Edit Subagent: ${f.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:f.name,onChange:e=>m({...f,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:f.description,onChange:e=>m({...f,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:f.systemPrompt,onChange:e=>m({...f,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:f.tools,onChange:e=>m({...f,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:f.model,onChange:e=>m({...f,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:f.provider,onChange:e=>m({...f,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":f.scope===e.id,disabled:e.id===`workspace`&&!h,className:`pill-segmented-btn ${f.scope===e.id?`active`:``}`,onClick:()=>m({...f,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.`,h?``:` 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:_,children:`Cancel`}),(0,Z.jsx)(`button`,{className:`btn btn-primary`,onClick:b,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 ${ht(e.sourcePath)?`scope-workspace`:`scope-global`}`,children:ht(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:()=>y(e),children:`Edit`}),(0,Z.jsx)(`button`,{className:`btn btn-danger`,style:{padding:`4px 8px`,fontSize:`12px`},onClick:()=>x(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,ht,gt,_t=t((()=>{X=e(x()),F(),o(),Pe(),Z=C(),ht=e=>!e.includes(`mint-agents`),gt={name:``,description:``,tools:``,model:``,provider:``,systemPrompt:``,scope:`workspace`}})),vt=t((()=>{_t()})),yt,bt,xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft=t((()=>{yt=`@pheem49/mint`,bt=`1.14.0`,xt=`A native Tauri desktop AI assistant with a Rust backend and React UI.`,St={"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":`vite`,"build:desktop:ui":`vite build`,"build:desktop":`tauri build --no-bundle`,"build:desktop:bundle":`tauri build && mkdir -p target/release/mint-desktop-portable && cp target/release/mint-desktop target/release/mint-desktop-portable/mint-desktop && mkdir -p target/release/bundle/tar && tar -czf target/release/bundle/tar/mint-agent.tar.gz -C target/release mint-desktop-portable && rm -rf target/release/mint-desktop-portable && mv target/release/bundle/deb/Mint_*_amd64.deb target/release/bundle/deb/mint-agent_amd64.deb`,"build:cli":`cargo build -p mint-cli --release`,"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":`tauri dev`,"tauri:build":`tauri build && mkdir -p target/release/mint-desktop-portable && cp target/release/mint-desktop target/release/mint-desktop-portable/mint-desktop && mkdir -p target/release/bundle/tar && tar -czf target/release/bundle/tar/mint-agent.tar.gz -C target/release mint-desktop-portable && rm -rf target/release/mint-desktop-portable && mv target/release/bundle/deb/Mint_*_amd64.deb target/release/bundle/deb/mint-agent_amd64.deb`,package:`tauri build && mkdir -p target/release/mint-desktop-portable && cp target/release/mint-desktop target/release/mint-desktop-portable/mint-desktop && mkdir -p target/release/bundle/tar && tar -czf target/release/bundle/tar/mint-agent.tar.gz -C target/release mint-desktop-portable && rm -rf target/release/mint-desktop-portable && mv target/release/bundle/deb/Mint_*_amd64.deb target/release/bundle/deb/mint-agent_amd64.deb`,"rust:cli":`cargo run -p mint-cli --`,"rust:test":`cargo test -p mint-core -p mint-cli`,dev:`tauri dev`,build:`npm run build:desktop:ui && npm run build:web`,preview:`vite preview`,start:`tauri dev`,test:`cargo test -p mint-core -p mint-cli`,cli:`cargo run -p mint-cli --`,prepublishOnly:`npm run build:web`,postinstall:`cargo build -p mint-cli --release`},Ct=[`mint`,`tauri`,`ai`,`assistant`,`desktop`,`cli`,`rust`,`react`,`agent`],wt={type:`git`,url:`git+https://github.com/Pheem49/Mint.git`},Tt={url:`https://github.com/Pheem49/Mint/issues`},Et=`https://github.com/Pheem49/Mint#readme`,Dt={name:`Pheem49`,email:`killerpheem13@gmail.com`},Ot=`AGPL-3.0-only`,kt=`commonjs`,At={mint:`src/bin/index.js`},jt={"@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`,"@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`,"@xyflow/react":`^12.11.1`,"lucide-react":`^1.28.0`,luxon:`^3.7.2`,"material-icon-theme":`5.34.0`,mermaid:`^11.17.0`,"pixi-live2d-display":`^0.4.0`,"pixi.js":`^6.5.10`,react:`^19.2.5`,"react-dom":`^19.2.5`,"react-markdown":`^10.1.0`,"remark-gfm":`^4.0.1`,typescript:`^6.0.3`,vite:`^8.0.16`},Mt={"@tauri-apps/cli":`^2.0.0`,"@types/luxon":`^3.7.4`},Nt={"gh-pages":`^5.0.0`,"@modelcontextprotocol/sdk":`^1.24.0`,nodemailer:`^9.0.0`,uuid:`^11.1.1`,"brace-expansion":`^5.0.8`,"@hono/node-server":`^2.0.5`},Pt={name:yt,version:bt,description:xt,scripts:St,keywords:Ct,repository:wt,bugs:Tt,homepage:Et,author:Dt,license:Ot,type:kt,bin:At,dependencies:jt,devDependencies:Mt,overrides:Nt}})),It,Lt=t((()=>{Ft(),It=Pt.version}));function Rt(){let[e,t]=(0,Q.useState)(`sect-general`),[n,a]=(0,Q.useState)(``),[o,c]=(0,Q.useState)(I),[l,u]=(0,Q.useState)(``),[f,p]=(0,Q.useState)(``),{user:m,refreshUser:g}=S(),[v,y]=(0,Q.useState)(``),[b,x]=(0,Q.useState)(``),C=(0,Q.useRef)(!1);(0,Q.useEffect)(()=>{m&&!C.current&&(y(m.name||``),x(m.image||``),C.current=!0)},[m]);let[w,ee]=(0,Q.useState)(``),[T,E]=(0,Q.useState)(``),[D,O]=(0,Q.useState)(``),[ne,re]=(0,Q.useState)(``),[ae,oe]=(0,Q.useState)(``),[se,ce]=(0,Q.useState)(``),[le,ue]=(0,Q.useState)(``),[j,de]=(0,Q.useState)(``),[fe,pe]=(0,Q.useState)(ge),{models:me}=N(`gemini`,o.apiKey),{models:P}=N(`anthropic`,o.anthropicApiKey),{models:he}=N(`openai`,o.openaiApiKey),{models:_e}=N(`openrouter`,o.openrouterApiKey),{models:F}=N(`deepseek`,o.deepseekApiKey),{models:ye}=N(`local_openai`,``,o.localApiBaseUrl),{options:xe}=L(`nanobanana`,o.apiKey),{options:Se}=L(`dalle`,o.openaiApiKey),{options:we}=L(`replicate`,o.replicateApiKey),{options:Te}=L(`stability`,o.stabilityApiKey),{options:Ee}=L(`ideogram`,o.ideogramApiKey),{options:De}=L(`bfl`,o.bflApiKey),Oe=Q.useMemo(()=>({nanobanana:xe,dalle:Se,replicate:we,stability:Te,ideogram:Ee,bfl:De}),[xe,Se,we,Te,Ee,De]),{options:ke}=je(`veo`,o.apiKey),Ae=Q.useMemo(()=>({veo:ke}),[ke]),[R,Me]=(0,Q.useState)(``),[z,Ne]=(0,Q.useState)(``),[B,Pe]=(0,Q.useState)(``),[Ie,V]=(0,Q.useState)(``),[Le,Re]=(0,Q.useState)(``),[ze,H]=(0,Q.useState)(``),[Be,Ve]=(0,Q.useState)(!1),He=s();(0,Q.useEffect)(()=>{async function e(){try{let e=null;if(window.settingsApi)e=await window.settingsApi.getSettings();else{let t=await r(`user-settings`);t&&(e=JSON.parse(t))}if(e){let t={...I,...e};c(t),t.geminiModel&&!ie.includes(t.geminiModel)&&ee(t.geminiModel),t.openaiModel&&!be.includes(t.openaiModel)&&E(t.openaiModel),t.openrouterModel&&!M.includes(t.openrouterModel)&&O(t.openrouterModel),t.deepseekModel&&!te.includes(t.deepseekModel)&&re(t.deepseekModel),t.anthropicModel&&!ve.includes(t.anthropicModel)&&oe(t.anthropicModel),t.hfModel&&!A.includes(t.hfModel)&&ce(t.hfModel),t.localModelName&&!Ce.includes(t.localModelName)&&ue(t.localModelName),t.ollamaModel&&!ge.includes(t.ollamaModel)&&de(t.ollamaModel),k(t)}let t=await r(`name`);t&&u(t);let n=await r(`preferences`);n&&p(n)}catch(e){console.error(`Failed to load settings:`,e)}}e()},[]),(0,Q.useEffect)(()=>{(async()=>{let e=(o.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)){pe(e.models.map(e=>e.name));return}}}catch(e){console.warn(`Failed to fetch local Ollama models:`,e)}pe(ge)})()},[o.ollamaHost]);let We=async()=>{let e={...o};o.geminiModel===`custom`&&(e.geminiModel=w||`gemini-2.5-flash`),o.openaiModel===`custom`&&(e.openaiModel=T||`gpt-4o`),o.openrouterModel===`custom`&&(e.openrouterModel=D||`openai/gpt-4o-mini`),o.deepseekModel===`custom`&&(e.deepseekModel=ne||`deepseek-v4-flash`),o.anthropicModel===`custom`&&(e.anthropicModel=ae||`claude-3-5-sonnet-latest`),o.hfModel===`custom`&&(e.hfModel=se||`meta-llama/Meta-Llama-3-8B-Instruct`),o.localModelName===`custom`&&(e.localModelName=le||`local-model`),o.ollamaModel===`custom`&&(e.ollamaModel=j||`llama3:latest`);try{await _(`name`,l),await _(`preferences`,f)}catch(e){console.error(`Failed to save user profile memory:`,e)}try{g(await h(v,b))}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(o.aiProvider,o),r=t(e.aiProvider,e);if((o.aiProvider!==e.aiProvider||n!==r)&&d(e.aiProvider,r).catch(()=>{}),window.settingsApi)await window.settingsApi.saveSettings(e),k(e),window.settingsApi.closeSettings();else try{await _(`user-settings`,JSON.stringify(e)),k(e)}catch(e){console.error(`Failed to save user settings:`,e)}},U=async()=>{let e={...o};o.geminiModel===`custom`&&(e.geminiModel=w||`gemini-2.5-flash`),o.openaiModel===`custom`&&(e.openaiModel=T||`gpt-4o`),o.openrouterModel===`custom`&&(e.openrouterModel=D||`openai/gpt-4o-mini`),o.deepseekModel===`custom`&&(e.deepseekModel=ne||`deepseek-v4-flash`),o.anthropicModel===`custom`&&(e.anthropicModel=ae||`claude-3-5-sonnet-latest`),o.hfModel===`custom`&&(e.hfModel=se||`meta-llama/Meta-Llama-3-8B-Instruct`),o.localModelName===`custom`&&(e.localModelName=le||`local-model`),o.ollamaModel===`custom`&&(e.ollamaModel=j||`llama3:latest`);try{await _(`name`,l),await _(`preferences`,f)}catch(e){console.error(`Failed to save user profile memory:`,e)}if(window.settingsApi)await window.settingsApi.saveSettings(e),k(e);else try{await _(`user-settings`,JSON.stringify(e)),k(e)}catch(e){console.error(`Failed to save user settings:`,e)}},Ge=async()=>{if(confirm(`Reset all settings to default?`)){c(I),ee(``),E(``),oe(``),ce(``),ue(``),de(``),u(``),p(``);try{await _(`name`,``),await _(`preferences`,``)}catch(e){console.error(`Failed to reset profile memory:`,e)}k(I)}},Ke=()=>{window.settingsApi?.closeSettings()},W=(e,t)=>{e.preventDefault(),window.settingsApi?.openExternal?window.settingsApi.openExternal(t):window.open(t,`_blank`,`noopener,noreferrer`)},Je=e=>{if(!R.trim()||!z.trim()){alert(`Please provide at least a server name and command.`);return}let t={};if(Ie.trim())try{t=JSON.parse(Ie)}catch{alert(`Invalid JSON in Environment variable field.`);return}let n=R.trim(),r=B.split(/\s+/).filter(Boolean),i={...o.mcpServers,[n]:{command:z.trim(),args:r,env:t,icon:Le.trim()||void 0}};c({...o,mcpServers:i,...e?{allowedMcpTools:{...o.allowedMcpTools||{},[n]:[`*`]}}:{}}),Me(``),Ne(``),Pe(``),V(``),Re(``)},Ye=e=>{let t={...o.mcpServers};delete t[e],c({...o,mcpServers:t})},Xe=async e=>{if(!He&&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.`)},Ze=async()=>{if(!He){H(`Desktop updates are only available in the Tauri app.`);return}try{let e=await window.settingsApi.checkForUpdates();Ve(!!e.available),H(e.available?`Mint ${e.version} is available.`:`Mint is up to date.`)}catch(e){H(String(e))}},Qe=async()=>{if(!He){H(`Desktop updates are only available in the Tauri app.`);return}if(confirm(`Install the signed Mint update now?`))try{H(await window.settingsApi.installAvailableUpdate()),Ve(!1)}catch(e){H(String(e))}},$e=(e,t)=>{let n={...o,[e]:t};c(n),k(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:He?`Configure Mint assistant behavior and integrations.`:`Web settings through Local API: ${i()}`})]})]}),(0,$.jsx)(`button`,{className:`close-btn`,onClick:Ke,"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=>a(e.target.value),"aria-label":`Search settings`})]}),(0,$.jsx)(`div`,{className:`settings-nav-scroll`,children:Bt.map(r=>{let i=zt.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:[!He&&(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)(Fe,{config:o,updateField:$e,customGemini:w,setCustomGemini:ee,customOpenAI:T,setCustomOpenAI:E,customOpenRouter:D,setCustomOpenRouter:O,customDeepSeek:ne,setCustomDeepSeek:re,customAnthropic:ae,setCustomAnthropic:oe,customHF:se,setCustomHF:ce,customLocal:le,setCustomLocal:ue,customOllama:j,setCustomOllama:de,dynamicOllamaModels:fe,dynamicGeminiModels:me,dynamicAnthropicModels:P,dynamicOpenAIModels:he,dynamicOpenRouterModels:_e,dynamicDeepSeekModels:F,dynamicLocalModels:ye,dynamicImageModels:Oe,dynamicVideoModels:Ae,updateAvailable:Be,updateMessage:ze,handleCheckUpdates:Ze,handleInstallUpdate:Qe,isDesktopApp:He,onSaveWithoutClosing:U}),e===`sect-profile`&&(0,$.jsx)(Ue,{name:v,setName:y,imageUrl:b,setImageUrl:x}),e===`sect-memory`&&(0,$.jsx)(qe,{userName:l,setUserName:u,userPreferences:f,setUserPreferences:p}),e===`sect-audio`&&(0,$.jsx)(et,{config:o,updateField:$e,apiKey:o.apiKey}),e===`sect-automation`&&(0,$.jsx)(it,{config:o,updateField:$e}),e===`sect-theme`&&(0,$.jsx)(st,{config:o,updateField:$e}),e===`sect-plugins`&&(0,$.jsx)(ut,{config:o,updateField:$e,mcpName:R,setMcpName:Me,mcpCmd:z,setMcpCmd:Ne,mcpArgs:B,setMcpArgs:Pe,mcpEnv:Ie,setMcpEnv:V,mcpIcon:Le,setMcpIcon:Re,handleAddMcpServer:Je,handleRemoveMcpServer:Ye,handleConnectPlugin:Xe}),e===`sect-agents`&&(0,$.jsx)(pt,{config:o,updateField:$e,dynamicOllamaModels:fe})]})]}),(0,$.jsxs)(`footer`,{className:`settings-footer`,children:[(0,$.jsxs)(`div`,{className:`settings-footer-meta`,children:[(0,$.jsxs)(`span`,{className:`settings-footer-version`,children:[`Version: `,It]}),(0,$.jsxs)(`div`,{className:`settings-footer-links`,children:[(0,$.jsxs)(`a`,{href:`https://github.com/Pheem49/Mint`,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>W(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=>W(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:Ge,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(),We()},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,$,zt,Bt;t((()=>{Q=e(x()),o(),w(),T(),ke(),Me(),He(),Ke(),Ye(),rt(),ot(),lt(),ft(),vt(),F(),P(),$=C(),O(),Lt(),zt=[{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:`Memory & Profile`,group:`Workspace`,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`})]})}],Bt=[`Account`,`Workspace`,`Appearance`,`Advanced`]}))();export{ve as ANTHROPIC_MODELS,te as DEEPSEEK_MODELS,I as DEFAULT_CONFIG,ie as GEMINI_MODELS,A as HF_MODELS,Ce as LOCAL_MODELS,ge as OLLAMA_MODELS,be as OPENAI_MODELS,M as OPENROUTER_MODELS,Rt as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/dagre-3AP2YEHR-BDuUeMHj.js","assets/chunk-CacB07dV.js","assets/chunk-PWAF6VOD-BmjYLNbq.js","assets/src-DnfeXQPr.js","assets/chunk-Y2CYZVJY-C9o-s6OY.js","assets/chunk-DU6HZSFF-2tv5K1wT.js","assets/preload-helper-D0uHx7FM.js","assets/dagre-BWadQu2F.js","assets/graphlib-CTR5ZhLf.js","assets/chunk-75Z2AOVW-TLXCoZYv.js","assets/dist-BoTOASLF.js","assets/chunk-GMAD6QVW-C-558kh_.js","assets/chunk-DSNCTWBM-Dtj8Rqsd.js","assets/chunk-JQ64N6SF-wJmeGKAw.js","assets/chunk-OBVCFTLP-BsRTPBqs.js","assets/chunk-TEH6E4GO-K2A8Vg2C.js","assets/chunk-P2QGCYS3-HZIiM7Ni.js","assets/rough.esm-DFbTUy8a.js","assets/chunk-R7TYR2AO-CaHIf-lK.js","assets/swimlanes-XN3QIQJK-Bn_jcZz-.js","assets/cose-bilkent-JH36ORCC--UN4aw5-.js","assets/cytoscape.esm-Df1UN4Y1.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./chunk-CacB07dV.js";import{n as t,t as n}from"./preload-helper-D0uHx7FM.js";import{n as r,r as i}from"./chunk-Y2CYZVJY-C9o-s6OY.js";import{Bt as a,zt as o}from"./src-DnfeXQPr.js";import{b as s,j as c,s as l}from"./chunk-DU6HZSFF-2tv5K1wT.js";import{d as u,f as d}from"./chunk-75Z2AOVW-TLXCoZYv.js";import{o as f,r as p}from"./chunk-TEH6E4GO-K2A8Vg2C.js";import{i as m,r as h}from"./chunk-OBVCFTLP-BsRTPBqs.js";import{a as g,c as _,i as v,l as y,o as b}from"./chunk-R7TYR2AO-CaHIf-lK.js";import{n as x,r as S}from"./chunk-JQ64N6SF-wJmeGKAw.js";var C,w,T,E,D,O=e((()=>{x(),v(),h(),p(),u(),c(),o(),i(),t(),C={common:l,getConfig:s,insertCluster:S,insertEdge:g,insertEdgeLabel:b,insertMarkers:_,insertNode:m,interpolateToCurve:d,labelHelper:f,log:a,positionEdgeLabel:y},w={},T=r(e=>{for(let t of e)w[t.name]=t},`registerLayoutLoaders`),r(()=>{T([{name:`dagre`,loader:r(async()=>await n(()=>import(`./dagre-3AP2YEHR-BDuUeMHj.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])),`loader`)},{name:`swimlane`,loader:r(async()=>await n(()=>import(`./swimlanes-XN3QIQJK-Bn_jcZz-.js`),__vite__mapDeps([19,1,2,3,4,5,6,9,10,11,12,8,13,14,15,16,17,18])),`loader`)},{name:`cose-bilkent`,loader:r(async()=>await n(()=>import(`./cose-bilkent-JH36ORCC--UN4aw5-.js`),__vite__mapDeps([20,1,21,3,4])),`loader`)}])},`registerDefaultLayoutLoaders`)(),E=r(async(e,t)=>{if(!(e.layoutAlgorithm in w))throw Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let t of e.nodes){let n=t.domId||t.id;t.domId=`${e.diagramId}-${n}`}let n=w[e.layoutAlgorithm],r=await n.loader(),{theme:i,themeVariables:a}=e.config,{useGradient:o,gradientStart:s,gradientStop:c}=a,l=t.attr(`id`);if(t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow`).attr(`height`,`130%`).attr(`width`,`130%`).append(`feDropShadow`).attr(`dx`,`4`).attr(`dy`,`4`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),t.append(`defs`).append(`filter`).attr(`id`,`${l}-drop-shadow-small`).attr(`height`,`150%`).attr(`width`,`150%`).append(`feDropShadow`).attr(`dx`,`2`).attr(`dy`,`2`).attr(`stdDeviation`,0).attr(`flood-opacity`,`0.06`).attr(`flood-color`,`${i?.includes(`dark`)?`#FFFFFF`:`#000000`}`),o){let e=t.append(`linearGradient`).attr(`id`,t.attr(`id`)+`-gradient`).attr(`gradientUnits`,`objectBoundingBox`).attr(`x1`,`0%`).attr(`y1`,`0%`).attr(`x2`,`100%`).attr(`y2`,`0%`);e.append(`svg:stop`).attr(`offset`,`0%`).attr(`stop-color`,s).attr(`stop-opacity`,1),e.append(`svg:stop`).attr(`offset`,`100%`).attr(`stop-color`,c).attr(`stop-opacity`,1)}return r.render(e,t,C,{algorithm:n.algorithm})},`render`),D=r((e=``,{fallback:t=`dagre`}={})=>{if(e in w)return e;if(t in w)return a.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw Error(`Both layout algorithms ${e} and ${t} are not registered.`)},`getRegisteredLayoutAlgorithm`)}));export{E as i,O as n,T as r,D as t};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sizeCapture-X5ZJPWSS-DKeOCaN2.js","assets/chunk-CacB07dV.js","assets/chunk-Y2CYZVJY-C9o-s6OY.js"])))=>i.map(i=>d[i]);
2
- import{n as e}from"./chunk-CacB07dV.js";import{n as t,t as n}from"./preload-helper-D0uHx7FM.js";import{n as r,r as i}from"./chunk-Y2CYZVJY-C9o-s6OY.js";import{Bt as a,zt as o}from"./src-DnfeXQPr.js";import{b as s,j as c,x as l}from"./chunk-DU6HZSFF-2tv5K1wT.js";import{_ as u,d}from"./chunk-75Z2AOVW-TLXCoZYv.js";import{o as f,r as p}from"./chunk-TEH6E4GO-K2A8Vg2C.js";import{a as m,i as ee,n as te,r as h,t as ne}from"./chunk-OBVCFTLP-BsRTPBqs.js";import{a as re,c as ie,i as ae,n as g,o as _,r as v,t as oe,u as y}from"./chunk-R7TYR2AO-CaHIf-lK.js";import{n as b,t as se}from"./graphlib-CTR5ZhLf.js";import{n as ce,r as le,t as ue}from"./chunk-JQ64N6SF-wJmeGKAw.js";function x(e,{edgePathsClass:t=`edges edgePath`}={}){let n=e.insert(`g`).attr(`class`,`root`);return{clusters:n.insert(`g`).attr(`class`,`clusters`),edgePaths:n.insert(`g`).attr(`class`,t),edgeLabels:n.insert(`g`).attr(`class`,`edgeLabels`),nodes:n.insert(`g`).attr(`class`,`nodes`),rootGroups:n}}async function S(e,t){if(t.label){let{shapeSvg:n,bbox:r}=await f(e,t);t.labelBBox={width:r.width,height:r.height},n.remove()}else t.labelBBox={width:0,height:0}}async function C(e,t,n){let r=await ee(e,t,n),i=r.node()?.getBBox()??{width:0,height:0};return t.width=i.width,t.height=i.height,r}async function w(e,t){let r=new b({multigraph:!0,compound:!0}),i=[...t.edges],a=l(),o=x(e),{edgeLabels:s,nodes:c}=o,u=new Map,d=e.node()!=null;await Promise.all(t.nodes.map(async e=>{if(e.isGroup)d&&await S(c,e),r.setNode(e.id,{...e});else{if(d){let t=await C(c,e,{config:a,dir:e.dir});u.set(e.id,t)}r.setNode(e.id,{...e})}}));for(let e of i)d&&v(e)&&await _(s,e),r.setEdge(e.start,e.end,{...e},e.id),t.edges.some(t=>t.id===e.id)||t.edges.push(e);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:r}=await n(async()=>{let{captureNodeSizes:e}=await import(`./sizeCapture-X5ZJPWSS-DKeOCaN2.js`);return{captureNodeSizes:e}},__vite__mapDeps([0,1,2]));r(e,t)}return{graph:r,groups:o,nodeElements:u}}function T({prepareLayout:e,measureLayout:t,runLayoutCore:n,paintLayout:i,afterPaint:a,paintOptions:o}){let s=t??D;return r(async function(t,r,c,l){let u=r.select(`g`);ie(u,t.markers,t.type,t.diagramId),E();let d={element:u,helpers:c,options:l};d.preparedLayout=await e?.(t,d);let f=await s(t,d),p=await n(t,d),m={...d,measure:f};i?await i(t,m,p):await O(t,m,o),await a?.(t,m,p)},`render`)}function E(){ne(),oe(),ue(),B()}async function D(e,{element:t}){return await w(t,e)}async function O(e,t,n={}){let{measure:r}=t,{groups:i}=r;for(let r of n.getNodes?.(e,t)??e.nodes)n.skipNode?.(r,t)||await k(i,r,t,n);let a=j(e.nodes);for(let r of e.edges)M(r,n)||await N(i,r,a,e,n,t)}async function k(e,t,n,r){t.clusterNode?m(t):A(t,n,r)?await le(e.clusters,t):m(t)}function A(e,t,n){return e.isGroup===!0&&(n.isCluster?.(e,t)??!0)}function j(e){let t=new Map;for(let n of e)n?.id&&t.set(n.id,n);return t}function M(e,t){return e.isLayoutOnly||!!t.skipEdge?.(e)}async function N(e,t,n,r,i,a){let o=re(e.edgePaths,{...t},i.clusterDb??new Map,r.type,P(t.start,t,n,a,i),P(t.end,t,n,a,i),r.diagramId,F(t,i));v(t)&&(g.has(t.id)||await _(e.edgeLabels,t),I(t,o))}function P(e,t,n,r,i){return i.getEdgeNode?.(e,t,r)??(e?n.get(e)??{}:{})}function F(e,t){return typeof t.skipIntersect==`function`?t.skipIntersect(e):t.skipIntersect??!1}function I(e,t){let n=t?.updatedPath??t?.originalPath,{subGraphTitleTotalMargin:r}=te({flowchart:s().flowchart??{}});if(e.label){let i=g.get(e.id),o=e.x,s=e.y;if(n){let r=u.calcLabelPosition(n);a.debug(`Moving label `+e.label+` from (`,o,`,`,s,`) to (`,r.x,`,`,r.y,`) abc88`),t?.updatedPath&&(o=r.x,s=r.y)}i.attr(`transform`,`translate(${o}, ${s+r/2})`)}if(e?.startLabelLeft){let t=y.get(e.id).startLeft,r=e?.x,i=e?.y;if(n){let t=u.calcTerminalLabelPosition(e.arrowTypeStart?10:0,`start_left`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.startLabelRight){let t=y.get(e.id).startRight,r=e.x,i=e.y;if(n){let t=u.calcTerminalLabelPosition(e.arrowTypeStart?10:0,`start_right`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.endLabelLeft){let t=y.get(e.id).endLeft,r=e.x,i=e.y;if(n){let t=u.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,`end_left`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}if(e.endLabelRight){let t=y.get(e.id).endRight,r=e.x,i=e.y;if(n){let t=u.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,`end_right`,n);r=t.x,i=t.y}t.attr(`transform`,`translate(${r}, ${i})`)}}var L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,de=e((()=>{ce(),ae(),h(),p(),d(),c(),o(),i(),se(),t(),r(x,`createLayoutElementGroups`),r(S,`measureGroupLabel`),r(C,`insertMeasuredNode`),r(w,`createGraphWithElements`),L=new Map,R=new Map,z=new Map,B=r(()=>{R.clear(),z.clear(),L.clear()},`clear`),V=r((e,t)=>{let n=R.get(t)||[];return a.trace(`In isDescendant`,t,` `,e,` = `,n.includes(e)),n.includes(e)},`isDescendant`),H=r((e,t)=>{let n=R.get(t)||[];return a.info(`Descendants of `,t,` is `,n),a.info(`Edge is `,e),e.v===t||e.w===t?!1:n?n.includes(e.v)||V(e.v,t)||V(e.w,t)||n.includes(e.w):(a.debug(`Tilt, `,t,`,not in descendants`),!1)},`edgeInCluster`),U=r((e,t,n,r)=>{a.debug(`Copying children of `,e,`root`,r,`data`,t.node(e),r);let i=t.children(e)||[];e!==r&&i.push(e),a.debug(`Copying (nodes) clusterId`,e,`nodes`,i),i.forEach(i=>{if(t.children(i).length>0)U(i,t,n,r);else{let o=t.node(i);a.info(`cp `,i,` to `,r,` with parent `,e),n.setNode(i,o),r!==t.parent(i)&&(a.debug(`Setting parent`,i,t.parent(i)),n.setParent(i,t.parent(i))),e!==r&&i!==e?(a.debug(`Setting parent`,i,e),n.setParent(i,e)):(a.info(`In copy `,e,`root`,r,`data`,t.node(e),r),a.debug(`Not Setting parent for node=`,i,`cluster!==rootId`,e!==r,`node!==clusterId`,i!==e));let s=t.edges(i);a.debug(`Copying Edges`,s),s.forEach(i=>{a.info(`Edge`,i);let o=t.edge(i.v,i.w,i.name);a.info(`Edge data`,o,r);try{H(i,r)?(a.info(`Copying as `,i.v,i.w,o,i.name),n.setEdge(i.v,i.w,o,i.name),a.info(`newGraph edges `,n.edges(),n.edge(n.edges()[0]))):a.info(`Skipping copy of edge `,i.v,`-->`,i.w,` rootId: `,r,` clusterId:`,e)}catch(e){a.error(e)}})}a.debug(`Removing node`,i),t.removeNode(i)})},`copy`),W=r((e,t)=>{let n=t.children(e),r=[...n];for(let i of n)z.set(i,e),r=[...r,...W(i,t)];return r},`extractDescendants`),G=r((e,t,n)=>{let r=e.edges().filter(e=>e.v===t||e.w===t),i=e.edges().filter(e=>e.v===n||e.w===n),a=r.map(e=>({v:e.v===t?n:e.v,w:e.w===t?t:e.w})),o=i.map(e=>({v:e.v,w:e.w}));return a.filter(e=>o.some(t=>e.v===t.v&&e.w===t.w))},`findCommonEdges`),K=r((e,t,n)=>{let r=t.children(e);if(a.trace(`Searching children of id `,e,r),r.length<1)return e;let i;for(let e of r){let r=K(e,t,n),a=G(t,n,r);if(r)if(a.length>0)i=r;else return r}return i},`findNonClusterChild`),q=r(e=>!L.has(e)||!L.get(e).externalConnections?e:L.has(e)?L.get(e).id:e,`getAnchorId`),J=r((e,t)=>{if(!e||t>10){a.debug(`Opting out, no graph `);return}else a.debug(`Opting in, graph `);e.nodes().forEach(function(t){e.children(t).length>0&&(a.debug(`Cluster identified`,t,` Replacement id in edges: `,K(t,e,t)),R.set(t,W(t,e)),L.set(t,{id:K(t,e,t),clusterData:e.node(t)}))}),e.nodes().forEach(function(t){let n=e.children(t),r=e.edges();n.length>0?(a.debug(`Cluster identified`,t,R),r.forEach(e=>{V(e.v,t)^V(e.w,t)&&(a.debug(`Edge: `,e,` leaves cluster `,t),a.debug(`Descendants of XXX `,t,`: `,R.get(t)),L.get(t).externalConnections=!0)})):a.debug(`Not a cluster `,t,R)});for(let t of L.keys()){let n=L.get(t).id,r=e.parent(n);r!==t&&L.has(r)&&!L.get(r).externalConnections&&(L.get(t).id=r);let i=e.edges().some(e=>e.v===t);if(n&&L.get(t)?.externalConnections&&i&&Q(e,n,t)){let r=$(e,t,e.parent(n));r&&(L.get(t).id=r)}}e.edges().forEach(function(t){let n=e.edge(t);a.debug(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(t)),a.debug(`Edge `+t.v+` -> `+t.w+`: `+JSON.stringify(e.edge(t)));let r=t.v,i=t.w;if(a.debug(`Fix XXX`,L,`ids:`,t.v,t.w,`Translating: `,L.get(t.v),` --- `,L.get(t.w)),L.get(t.v)||L.get(t.w)){if(a.debug(`Fixing and trying - removing XXX`,t.v,t.w,t.name),r=q(t.v),i=q(t.w),e.removeEdge(t.v,t.w,t.name),r!==t.v){let i=e.parent(r);L.get(i).externalConnections=!0,n.fromCluster=t.v}if(i!==t.w){let r=e.parent(i);L.get(r).externalConnections=!0,n.toCluster=t.w}a.debug(`Fix Replacing with XXX`,r,i,t.name),e.setEdge(r,i,n,t.name)}}),Y(e,0),a.trace(L)},`adjustClustersAndEdges`),Y=r((e,t)=>{if(t>10){a.error(`Bailing out`);return}let n=e.nodes(),r=!1;for(let t of n){let n=e.children(t);r||=n.length>0}if(!r){a.debug(`Done, no node has children`,e.nodes());return}a.debug(`Nodes = `,n,t);for(let r of n)if(a.debug(`Extracting node`,r,L,L.has(r)&&!L.get(r).externalConnections,!e.parent(r),e.node(r),e.children(`D`),` Depth `,t),!L.has(r))a.debug(`Not a cluster`,r,t);else if(!L.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){a.debug(`Cluster without external connections, without a parent and with children`,r,t);let n=e.graph().rankdir===`TB`?`LR`:`TB`;L.get(r)?.clusterData?.dir&&(n=L.get(r).clusterData.dir,a.debug(`Fixing dir`,L.get(r).clusterData.dir,n));let i=new b({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:L.get(r).clusterData,label:L.get(r).label,graph:i})}else a.debug(`Cluster ** `,r,` **not meeting the criteria !externalConnections:`,!L.get(r).externalConnections,` no parent: `,!e.parent(r),` children `,e.children(r)&&e.children(r).length>0,e.children(`D`),t),a.debug(L);n=e.nodes(),a.debug(`New list of nodes`,n);for(let r of n){let n=e.node(r);a.debug(` Now next level`,r,n),n?.clusterNode&&Y(n.graph,t+1)}},`extractor`),X=r((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(t=>{let r=X(e,e.children(t));n=[...n,...r]}),n},`sorter`),Z=r(e=>X(e,e.children()),`sortNodesByHierarchy`),Q=r((e,t,n)=>{let r=e.parent(t);for(;r&&r!==n;){let t=L.get(r);if(t&&!t.externalConnections)return!0;r=e.parent(r)}return!1},`isNodeInExtractableCluster`),$=r((e,t,n)=>{let r=e.children(t)??[];for(let i of r){if(i===n||V(i,n))continue;let r=K(i,e,t);if(r&&!Q(e,r,t))return r}return null},`findSafeAnchorNode`),r(T,`createCommonLayoutRenderer`),r(E,`clearLayoutRenderState`),r(D,`defaultMeasureLayout`),r(O,`paintLayoutData`),r(k,`paintLayoutNode`),r(A,`shouldPaintAsCluster`),r(j,`buildNodeLookup`),r(M,`shouldSkipPaintEdge`),r(N,`paintLayoutEdge`),r(P,`getRenderedNode`),r(F,`shouldSkipIntersect`),r(I,`positionRenderedEdgeLabel`)}));export{x as a,de as c,Z as d,T as i,C as l,E as n,D as o,L as r,K as s,J as t,O as u};