@pheem49/mint 1.5.5 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/.codex +0 -0
  2. package/.github/FUNDING.yml +2 -0
  3. package/.github/workflows/ci.yml +45 -0
  4. package/.github/workflows/release.yml +79 -0
  5. package/Cargo.lock +5792 -0
  6. package/Cargo.toml +32 -0
  7. package/README.md +387 -353
  8. package/assets/icon.png +0 -0
  9. package/bin/mint +0 -0
  10. package/crates/mint-cli/Cargo.toml +23 -0
  11. package/crates/mint-cli/src/agent.rs +851 -0
  12. package/crates/mint-cli/src/gmail.rs +216 -0
  13. package/crates/mint-cli/src/image.rs +142 -0
  14. package/crates/mint-cli/src/main.rs +2837 -0
  15. package/crates/mint-cli/src/mcp.rs +63 -0
  16. package/crates/mint-cli/src/onboard.rs +1149 -0
  17. package/crates/mint-cli/src/setup.rs +390 -0
  18. package/crates/mint-cli/src/skills.rs +8 -0
  19. package/crates/mint-cli/src/updater.rs +279 -0
  20. package/crates/mint-core/Cargo.toml +22 -0
  21. package/crates/mint-core/src/agent_loop.rs +94 -0
  22. package/crates/mint-core/src/api_server.rs +991 -0
  23. package/crates/mint-core/src/channels.rs +248 -0
  24. package/crates/mint-core/src/chat.rs +895 -0
  25. package/crates/mint-core/src/code_tools.rs +729 -0
  26. package/crates/mint-core/src/config.rs +368 -0
  27. package/crates/mint-core/src/files.rs +159 -0
  28. package/crates/mint-core/src/knowledge.rs +541 -0
  29. package/crates/mint-core/src/lib.rs +84 -0
  30. package/crates/mint-core/src/mcp.rs +273 -0
  31. package/crates/mint-core/src/memory.rs +673 -0
  32. package/crates/mint-core/src/orchestration.rs +2157 -0
  33. package/crates/mint-core/src/pictures.rs +314 -0
  34. package/crates/mint-core/src/plugins.rs +727 -0
  35. package/crates/mint-core/src/safety.rs +416 -0
  36. package/crates/mint-core/src/semantic.rs +254 -0
  37. package/crates/mint-core/src/shell.rs +317 -0
  38. package/crates/mint-core/src/skills.rs +71 -0
  39. package/crates/mint-core/src/symbols.rs +157 -0
  40. package/crates/mint-core/src/tasks.rs +308 -0
  41. package/crates/mint-core/src/tts.rs +92 -0
  42. package/crates/mint-core/src/weather.rs +93 -0
  43. package/crates/mint-core/src/web_search.rs +200 -0
  44. package/crates/mint-core/src/workflows.rs +81 -0
  45. package/crates/mint-core/tests/mcp_stdio.rs +45 -0
  46. package/crates/mint-core/tests/memory_persistence.rs +172 -0
  47. package/crates/mint-core/tests/pictures_storage.rs +14 -0
  48. package/crates/mint-core/tests/task_lifecycle.rs +87 -0
  49. package/package.json +35 -99
  50. package/src/bin/index.js +16 -0
  51. package/src/renderer/index-web.html +17 -0
  52. package/src/renderer/index.html +17 -0
  53. package/src/renderer/public/Live2DCubismCore.js +9 -0
  54. package/src/renderer/public/assets/icon.png +0 -0
  55. package/src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.model3.json +36 -0
  56. package/src/renderer/src/App.tsx +33 -0
  57. package/src/renderer/src/calculator.ts +47 -0
  58. package/src/renderer/src/components/ChatPanel.tsx +1598 -0
  59. package/src/renderer/src/components/DashboardSidebar.tsx +358 -0
  60. package/src/renderer/src/components/Live2DStage.tsx +374 -0
  61. package/src/renderer/src/components/MintDashboard.tsx +950 -0
  62. package/src/renderer/src/components/ModelPanel.tsx +154 -0
  63. package/src/renderer/src/components/PicturesLibrary.tsx +46 -0
  64. package/src/renderer/src/components/ProactiveGlow.tsx +19 -0
  65. package/src/renderer/src/components/ScreenPicker.tsx +579 -0
  66. package/src/renderer/src/components/SettingsWindow.tsx +1467 -0
  67. package/src/renderer/src/components/SpotlightWindow.tsx +280 -0
  68. package/src/renderer/src/components/WidgetWindow.tsx +36 -0
  69. package/src/renderer/src/components/WorkspacePanel.tsx +268 -0
  70. package/src/{UI → renderer/src/css}/settings.css +69 -16
  71. package/src/renderer/src/css/spotlight.css +113 -0
  72. package/src/renderer/src/css/styles.css +3722 -0
  73. package/src/renderer/src/css/widget.css +185 -0
  74. package/src/renderer/src/env.d.ts +116 -0
  75. package/src/renderer/src/index.css +379 -0
  76. package/src/renderer/src/main.tsx +13 -0
  77. package/src/renderer/src/tauri.ts +996 -0
  78. package/src/renderer/src-web/App.tsx +25 -0
  79. package/src/renderer/src-web/calculator.ts +47 -0
  80. package/src/renderer/src-web/components/ChatPanel.tsx +1662 -0
  81. package/src/renderer/src-web/components/DashboardSidebar.tsx +242 -0
  82. package/src/renderer/src-web/components/MintDashboard.tsx +763 -0
  83. package/src/renderer/src-web/components/PicturesLibrary.tsx +73 -0
  84. package/src/renderer/src-web/components/SettingsWindow.tsx +1500 -0
  85. package/src/renderer/src-web/css/settings.css +1100 -0
  86. package/src/{UI → renderer/src-web/css}/spotlight.css +4 -4
  87. package/src/{UI → renderer/src-web/css}/styles.css +1055 -159
  88. package/src/{UI → renderer/src-web/css}/widget.css +2 -2
  89. package/src/renderer/src-web/env.d.ts +107 -0
  90. package/src/renderer/src-web/index.css +379 -0
  91. package/src/renderer/src-web/main.tsx +13 -0
  92. package/src/renderer/src-web/tauri.ts +983 -0
  93. package/tsconfig.json +30 -0
  94. package/vite.config.ts +33 -0
  95. package/vite.config.web.ts +51 -0
  96. package/GUIDE_TH.md +0 -125
  97. package/assets/Agent_Mint.png +0 -0
  98. package/assets/CLI_Screen.png +0 -0
  99. package/assets/Settings.png +0 -0
  100. package/benchmark_ai.js +0 -71
  101. package/install.ps1 +0 -64
  102. package/install.sh +0 -54
  103. package/main.js +0 -139
  104. package/mint-cli-logic.js +0 -3
  105. package/mint-cli.js +0 -410
  106. package/models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.model3.json +0 -47
  107. package/models/Shiroko_Model/Shiroko//342/232/241/351/253/230/344/272/256/342/232/241/344/275/277/347/224/250/346/225/231/347/250/213/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.txt +0 -23
  108. package/preload-picker.js +0 -11
  109. package/preload-settings.js +0 -11
  110. package/preload.js +0 -41
  111. package/scripts/install_linux_desktop_entry.js +0 -48
  112. package/src/AI_Brain/Gemini_API.js +0 -813
  113. package/src/AI_Brain/agent_orchestrator.js +0 -73
  114. package/src/AI_Brain/autonomous_brain.js +0 -179
  115. package/src/AI_Brain/behavior_memory.js +0 -135
  116. package/src/AI_Brain/headless_agent.js +0 -143
  117. package/src/AI_Brain/knowledge_base.js +0 -349
  118. package/src/AI_Brain/memory_store.js +0 -662
  119. package/src/AI_Brain/proactive_engine.js +0 -172
  120. package/src/AI_Brain/provider_adapter.js +0 -365
  121. package/src/Automation_Layer/browser_automation.js +0 -149
  122. package/src/Automation_Layer/file_operations.js +0 -286
  123. package/src/Automation_Layer/open_app.js +0 -85
  124. package/src/Automation_Layer/open_website.js +0 -38
  125. package/src/CLI/approval_handler.js +0 -47
  126. package/src/CLI/chat_router.js +0 -247
  127. package/src/CLI/chat_ui.js +0 -1159
  128. package/src/CLI/cli_colors.js +0 -115
  129. package/src/CLI/cli_formatters.js +0 -94
  130. package/src/CLI/code_agent.js +0 -1667
  131. package/src/CLI/code_session_memory.js +0 -62
  132. package/src/CLI/gmail_auth.js +0 -210
  133. package/src/CLI/image_input.js +0 -90
  134. package/src/CLI/intent_detectors.js +0 -181
  135. package/src/CLI/interactive_chat.js +0 -658
  136. package/src/CLI/list_features.js +0 -64
  137. package/src/CLI/onboarding.js +0 -416
  138. package/src/CLI/repo_summarizer.js +0 -282
  139. package/src/CLI/semantic_code_search.js +0 -312
  140. package/src/CLI/skill_manager.js +0 -41
  141. package/src/CLI/slash_command_handler.js +0 -418
  142. package/src/CLI/symbol_indexer.js +0 -231
  143. package/src/CLI/updater.js +0 -230
  144. package/src/CLI/workspace_manager.js +0 -90
  145. package/src/Channels/brave_search_bridge.js +0 -35
  146. package/src/Channels/discord_bridge.js +0 -66
  147. package/src/Channels/google_search_bridge.js +0 -38
  148. package/src/Channels/line_bridge.js +0 -60
  149. package/src/Channels/slack_bridge.js +0 -48
  150. package/src/Channels/telegram_bridge.js +0 -41
  151. package/src/Channels/whatsapp_bridge.js +0 -57
  152. package/src/Command_Parser/parser.js +0 -45
  153. package/src/Plugins/dev_tools.js +0 -41
  154. package/src/Plugins/discord.js +0 -20
  155. package/src/Plugins/docker.js +0 -47
  156. package/src/Plugins/gmail.js +0 -251
  157. package/src/Plugins/google_calendar.js +0 -252
  158. package/src/Plugins/mcp_manager.js +0 -95
  159. package/src/Plugins/notion.js +0 -256
  160. package/src/Plugins/obsidian.js +0 -54
  161. package/src/Plugins/plugin_manager.js +0 -81
  162. package/src/Plugins/spotify.js +0 -173
  163. package/src/Plugins/system_metrics.js +0 -31
  164. package/src/Plugins/system_monitor.js +0 -72
  165. package/src/System/action_executor.js +0 -178
  166. package/src/System/bridge_manager.js +0 -76
  167. package/src/System/chat_history_manager.js +0 -83
  168. package/src/System/config_manager.js +0 -194
  169. package/src/System/custom_workflows.js +0 -163
  170. package/src/System/daemon_manager.js +0 -67
  171. package/src/System/google_tts_urls.js +0 -51
  172. package/src/System/granular_automation.js +0 -157
  173. package/src/System/ipc_handlers.js +0 -332
  174. package/src/System/notifications.js +0 -23
  175. package/src/System/optional_require.js +0 -23
  176. package/src/System/picture_store.js +0 -109
  177. package/src/System/proactive_loop.js +0 -153
  178. package/src/System/safety_manager.js +0 -273
  179. package/src/System/sandbox_runner.js +0 -182
  180. package/src/System/screen_capture.js +0 -175
  181. package/src/System/smart_context.js +0 -227
  182. package/src/System/system_automation.js +0 -162
  183. package/src/System/system_events.js +0 -79
  184. package/src/System/system_info.js +0 -125
  185. package/src/System/task_manager.js +0 -222
  186. package/src/System/tool_registry.js +0 -293
  187. package/src/System/window_manager.js +0 -220
  188. package/src/UI/floating.css +0 -80
  189. package/src/UI/floating.html +0 -17
  190. package/src/UI/floating.js +0 -67
  191. package/src/UI/live2d_manager.js +0 -600
  192. package/src/UI/preload-floating.js +0 -7
  193. package/src/UI/preload-spotlight.js +0 -11
  194. package/src/UI/preload-widget.js +0 -5
  195. package/src/UI/proactive-glow.html +0 -42
  196. package/src/UI/renderer.js +0 -2127
  197. package/src/UI/screenPicker.html +0 -214
  198. package/src/UI/screenPicker.js +0 -262
  199. package/src/UI/settings.html +0 -577
  200. package/src/UI/settings.js +0 -770
  201. package/src/UI/spotlight.html +0 -23
  202. package/src/UI/spotlight.js +0 -185
  203. package/src/UI/widget.html +0 -29
  204. package/src/UI/widget.js +0 -10
  205. /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/72d86db84cfa9730b894c241fd24c0db.png +0 -0
  206. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/233/264/350/243/231.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/apron.exp3.json} +0 -0
  207. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/214/253/345/222/252/346/273/244/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/catfilter.exp3.json} +0 -0
  208. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/202/271/344/270/200/344/270/213.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/click.exp3.json} +0 -0
  209. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazed.exp3.json} +0 -0
  210. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//345/221/206/347/214/253/347/234/274/347/217/240/346/221/207/346/231/203.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/dazedeyes.exp3.json} +0 -0
  211. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//347/234/274/351/225/234.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/glasses.exp3.json} +0 -0
  212. /package/{models → src/renderer/public/models}/Shiroko_Model/Shiroko/Shiroko_Core/items_pinned_to_model.json +0 -0
  213. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/277/347/254/224.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/pen.exp3.json} +0 -0
  214. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//346/213/215/347/205/247.exp3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/photo.exp3.json} +0 -0
  215. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_00.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_00.png} +0 -0
  216. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_01.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_01.png} +0 -0
  217. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_02.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_02.png} +0 -0
  218. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.4096/texture_03.png" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.4096/texture_03.png} +0 -0
  219. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.cdi3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.cdi3.json} +0 -0
  220. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.moc3" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.moc3} +0 -0
  221. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.physics3.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.physics3.json} +0 -0
  222. /package/{models/Shiroko_Model/Shiroko/Shiroko_Core//351/235/242/351/245/2740.vtube.json" → src/renderer/public/models/Shiroko_Model/Shiroko/Shiroko_Core/shiroko.vtube.json} +0 -0
package/README.md CHANGED
@@ -1,46 +1,124 @@
1
- # Mint
2
-
3
- <p align="center">
4
- <img src="assets/icon.png" alt="Mint Icon" width="160">
5
- </p>
6
-
7
- <p align="center">
8
- <strong>Unified AI Desktop Assistant, Agentic CLI, and local-first automation workspace.</strong>
9
- </p>
10
-
11
- <p align="center">
12
- <img src="https://img.shields.io/badge/License-AGPL--3.0-blue?style=for-the-badge" alt="License">
13
- <img src="https://img.shields.io/badge/Node.js-LTS-green?style=for-the-badge&logo=node.js" alt="Node.js">
14
- <img src="https://img.shields.io/badge/Electron-40.x-47848F?style=for-the-badge&logo=electron" alt="Electron">
15
- <img src="https://img.shields.io/badge/CLI-Unified_Agent-orange?style=for-the-badge" alt="CLI Agentic">
16
- <a href="https://pheem49.github.io/Mint/guide.html"><img src="https://img.shields.io/badge/Documentation-View_Guide-00ffa3?style=for-the-badge" alt="Documentation"></a>
17
- </p>
18
-
19
- Mint is an AI assistant built to live in your desktop and terminal. It combines a transparent Electron desktop assistant, a unified agentic CLI, project-aware coding tools, local memory, automation, multi-provider AI routing, MCP extensions, and safety controls.
20
-
21
- ## What's New
22
-
23
- - **Antigravity-style Desktop Layout:** Desktop UI now has a collapsible sidebar, Chat/Pictures navigation, smoother page transitions, startup loading polish, and clearer destructive-action confirmations.
24
- - **Local Pictures Library:** Images sent from the desktop chat are saved locally under `~/.config/mint/Pictures` after the user sends the message, with an in-app Pictures gallery and local metadata index.
25
- - **Image Privacy Hardening:** Chat history no longer stores raw image base64 data for saved images; history keeps a text placeholder while the actual file stays in the local Pictures folder.
26
- - **Theme & UI Controls:** Settings now include theme, accent color, system text color, glass blur, font family, and font size controls that apply to the desktop interface.
27
- - **Unified CLI Agent:** `mint` now routes every normal message through the same agent loop. It can think, answer conversationally, inspect projects, edit files, run tools, and finish directly for simple chat.
28
- - **Fast Mode:** `/fast` switches the interactive CLI into a quieter `[Fast]` status that keeps the working indicator visible but hides internal `Thinking:` and tool-progress trace messages.
29
- - **Live CLI Replies:** Mint responses now appear in one live-updating `Mint` message instead of waiting for the whole final answer to render at once.
30
- - **Learned Skills:** `mint learn <path>` and `/learn <path>` import local `.md` or `.txt` files as persistent skill/instruction memory. Learned skills can be listed and deleted.
31
- - **Provider Fallback:** The agent can fall back across supported providers, for example from local OpenAI-compatible backends to Gemini.
32
- - **Provider Visibility:** Desktop and CLI responses show the provider/model that actually answered, including fallback results.
33
- - **Live2D Assistant Model:** Desktop UI now supports a Live2D Shiroko model with expression cycling, lip sync while speaking, transparent interaction-area overlays, and click-to-chat reactions.
34
- - **Google Workspace + Notion Integrations:** Gmail, Google Calendar, and Notion plugins can be configured from onboarding.
35
- - **Safety Manager:** Central safety policy for shell commands and actions, including deterministic command blocking, permission tiers, path guards, and action logs.
36
- - **Refactored Main Process:** Electron startup is split into focused modules for windows, IPC, proactive loop, screen capture, and action execution.
37
- - **CI & Audit Baseline:** GitHub Actions runs install, tests, and security audit. Current local test baseline is `137` passing tests and `0` high vulnerabilities.
38
- - **Dependency Hardening:** Removed vulnerable `google-tts-api` and `xlsx`; replaced with internal Google TTS URL generation and `read-excel-file`.
39
-
40
- ## Installation & Setup
1
+ <div align="center">
2
+ <img src="assets/icon.png" alt="Mint icon" width="112" />
41
3
 
42
- ### Quick Install (Recommended)
4
+ # Mint
5
+
6
+ **A native desktop AI assistant with a shared Rust core and an optional terminal interface.**
7
+
8
+ [![Tauri](https://img.shields.io/badge/Tauri-v2-24C8DB?logo=tauri&logoColor=white)](https://v2.tauri.app/)
9
+ [![Rust](https://img.shields.io/badge/Rust-backend-000000?logo=rust&logoColor=white)](https://www.rust-lang.org/)
10
+ [![React](https://img.shields.io/badge/React-TypeScript-149ECA?logo=react&logoColor=white)](https://react.dev/)
11
+ [![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)
12
+ </div>
13
+
14
+ Mint is a local-first AI assistant built with Tauri v2, Rust, React, and TypeScript.
15
+ The desktop application and native CLI share the same Rust domain layer, so chat,
16
+ memory, knowledge, tools, safety policies, and integrations behave consistently
17
+ across both interfaces.
18
+
19
+ ## 🌟 What Mint Can Do
20
+
21
+ Mint is a local-first AI assistant running on your machine, capable of handling tasks via either the desktop application or the terminal interface (CLI):
22
+
23
+ ---
24
+
25
+ ### 1. 🤖 AI Chat & Multi-Providers
26
+ - Connect to **Gemini, OpenAI, Anthropic (Claude), Ollama (Local), Hugging Face**, and LM Studio.
27
+ - Run private local LLMs inside your machine using Ollama or connect to leading cloud APIs.
28
+ - Supports system instructions, temperature adjustments, voice replies, and image analysis (Multimodal).
29
+
30
+ ---
31
+
32
+ ### 2. 🎨 Interactive Live2D Desktop Assistant
33
+ - An interactive anime avatar (**Shiroko**) displayed right on your desktop with gaze tracking (eye/face follows your mouse pointer).
34
+ - Toggle expression changes and cycle through character accessories dynamically.
35
+ - Custom interaction zones (Head, Cheek, Hands, Body) that trigger unique animations and message toasts.
36
+
37
+ ---
38
+
39
+ ### 3. 💻 Autonomous Code Agent
40
+ - Run code agent loops via `/code <task>` or the terminal command `mint code agent "<task>"`.
41
+ - Scan your project workspace, build multi-file implementation plans, fix test suite errors, and write edits automatically.
42
+ - Run local tests, cargo checks, and shell commands.
43
+ > [!IMPORTANT]
44
+ > **Safety First:** Risky actions and file writes require your explicit terminal approval first.
45
+
46
+ ---
47
+
48
+ ### 4. 🧠 Long-Term Memory & Knowledge Base
49
+ - Persistent conversation memory stored locally in SQLite. Manage user profile memory with `/memory set/get` or CLI commands.
50
+ - Index local directories, text files, and documentation to build your private searchable knowledge base.
51
+
52
+ ---
53
+
54
+ ### 5. 🔌 Tool & MCP Integrations
55
+ - Support **Model Context Protocol (MCP)** to connect tools like Google/Brave Search, Filesystem servers, and GitHub context.
56
+ - **Auto GitHub Link Resolver:** Automatically detects GitHub URLs in chat messages (CLI, Web, and Desktop) and Code Agent tasks. It fetches and injects the repository's metadata, directory structure, and README as prompt context, serving as an instant fallback when the GitHub MCP server is not active.
57
+ - Local plugins for Spotify playback control, Google Calendar, Gmail drafts, and Notion workspace reading.
58
+
59
+ ---
60
+
61
+ ### 6. 🌐 Messaging Bridges
62
+ - Bridge your local AI assistant to messaging services: **Telegram, Discord Gateway, Discord RPC, Slack, LINE, and WhatsApp**.
63
+ - Host local chatbot webhooks that relay chat traffic into your configured LLM.
64
+ > [!TIP]
65
+ > **Headless Background Execution:** Enabled bridges automatically run in the background when you launch either the desktop application OR the local API/Web server (`mint api` / `mint web`). This allows you to chat with Mint from anywhere without needing the desktop GUI window open.
66
+
67
+ ---
68
+
69
+ ### 7. 📸 Screen Capture & Translation
70
+ - Capture screen snapshots for instant visual analysis by the AI.
71
+ - Real-time continuous overlay translation of specific screen regions.
72
+
73
+ ---
43
74
 
75
+ ## Highlights
76
+
77
+ - Multi-provider chat with Gemini, OpenAI, Anthropic, Ollama, Hugging Face, and
78
+ local OpenAI-compatible endpoints.
79
+ - Native streaming responses, SQLite-backed memory, tasks, searchable local
80
+ knowledge, skills, and semantic code search.
81
+ - Desktop dashboard with a Live2D assistant, model interaction areas, pictures,
82
+ screen capture, continuous translation, spotlight, tray, widget, and proactive
83
+ suggestions.
84
+ - Native code-agent workflow for workspace inspection, planning, editing, shell
85
+ execution, and verification with explicit approval for risky actions.
86
+ - MCP servers, local plugins, custom workflows, weather, web search, and
87
+ optional external services.
88
+ - Telegram, Discord Gateway, Discord RPC, Slack Socket Mode, LINE, and WhatsApp
89
+ Cloud API integrations.
90
+ - Signed Tauri update checks with an explicit approval step before installation.
91
+
92
+ ## Screenshots
93
+
94
+ | Desktop assistant | Settings |
95
+ | --- | --- |
96
+ | ![Mint desktop assistant](docs/assets/Agent_Mint.png) | ![Mint settings](docs/assets/Settings.png) |
97
+
98
+ ![Mint CLI](docs/assets/CLI_Screen.png)
99
+
100
+ ## Prerequisites
101
+
102
+ - Node.js and npm
103
+ - A Rust toolchain
104
+ - Tauri v2 native build dependencies for your operating system
105
+
106
+ On Debian, Ubuntu, or Linux Mint:
107
+
108
+ ```bash
109
+ sudo apt-get install -y \
110
+ build-essential curl file pkg-config wget \
111
+ libdbus-1-dev libwebkit2gtk-4.1-dev \
112
+ libayatana-appindicator3-dev librsvg2-dev \
113
+ poppler-utils unzip patchelf
114
+ ```
115
+
116
+ See the [Tauri prerequisites guide](https://v2.tauri.app/start/prerequisites/)
117
+ for other platforms.
118
+
119
+ ## Installation
120
+
121
+ ### Quick Install (Recommended)
44
122
  The easiest way to install Mint CLI is using our installation script:
45
123
 
46
124
  **For macOS & Linux:**
@@ -48,385 +126,341 @@ The easiest way to install Mint CLI is using our installation script:
48
126
  curl -fsSL https://raw.githubusercontent.com/Pheem49/Mint/main/install.sh | bash
49
127
  ```
50
128
 
51
- **For Windows (PowerShell or CMD):**
129
+ **For Windows (PowerShell):**
52
130
  ```powershell
53
131
  powershell -Command "iwr -useb https://raw.githubusercontent.com/Pheem49/Mint/main/install.ps1 | iex"
54
132
  ```
55
133
 
56
- ### NPM Install
57
-
58
- If you prefer to install via NPM directly:
59
-
134
+ ---
135
+ ### Quick Start
60
136
  ```bash
61
- npm install -g @pheem49/mint@latest
137
+ mint onboard
138
+ mint setup
139
+ mint
140
+ mint web
141
+ mint chat "Hello"
62
142
  ```
63
143
 
64
- ### Local Development
65
-
144
+ Most integrations can be configured from:
66
145
  ```bash
67
- git clone https://github.com/Pheem49/Mint.git
68
- cd Mint
69
- npm install
146
+ mint onboard
147
+ mint setup
148
+ mint
70
149
  ```
71
150
 
72
- ### Quick Start
151
+ ### Manual Installation
73
152
 
153
+ ### 1. Configure API Keys
154
+ Copy the template and configure your LLM credentials (Gemini, OpenAI, Anthropic, etc.):
74
155
  ```bash
75
- mint onboard
76
- mint
77
- npm start
156
+ cp .env.example .env
78
157
  ```
158
+ Open the `.env` file and insert your API keys (e.g. `GEMINI_API_KEY=your_key_here`).
79
159
 
80
- Most integrations can be configured from:
81
-
160
+ ### 2. Desktop Application
161
+ Install the dependencies and start the application in development mode:
82
162
  ```bash
83
- mint onboard
163
+ npm install
164
+ npm run tauri:dev
165
+ ```
166
+ To compile and build a production standalone desktop package:
167
+ ```bash
168
+ npm run tauri:build
84
169
  ```
170
+ *(The Vite renderer output is generated in `out/renderer` and can be manually built via `npm run build:web`)*
171
+
172
+ ### 3. Native CLI
173
+ To install the `mint` command-line tool globally:
174
+
175
+ * **Option A (Release Build - Recommended for speed):**
176
+ ```bash
177
+ cargo build --release -p mint-cli
178
+ sudo cp target/release/mint /usr/local/bin/
179
+ ```
180
+ * **Option B (Cargo Install):**
181
+ ```bash
182
+ cargo install --path crates/mint-cli
183
+ ```
184
+ * **Option C (Development Shell Alias):**
185
+ If you are actively modifying code and want changes to reflect instantly, set up the alias under the [Setting up the mint Shortcut](#setting-up-the-mint-shortcut) section.
186
+
187
+ ## Desktop Assistant
188
+
189
+ The desktop application provides:
85
190
 
86
- ### Gmail
191
+ - A streaming chat panel with provider selection and optional smart context.
192
+ - A Live2D model panel with gaze tracking, interaction zones, and visual area
193
+ guides.
194
+ - Local conversation memory, tasks, searchable knowledge, and pictures.
195
+ - Screen capture and continuous screen translation.
196
+ - Spotlight, widget, tray, proactive glow, and background task queue windows.
197
+ - Settings for models, API keys, voice, automation, integrations, MCP servers,
198
+ workflows, appearance, updates, and agent collaboration.
87
199
 
88
- Gmail uses Google OAuth, not a plain Gmail address/password. Configure the OAuth Client ID and Client Secret in onboarding, leave the refresh token empty if you do not have one yet, and keep `Gmail User ID` as `me` for the signed-in account.
200
+ The sidebar, Live2D interaction state, and area-guide visibility are stored
201
+ locally so the dashboard restores the previous UI state after restarting.
89
202
 
90
- After onboarding, run one of:
203
+ ## Native CLI
91
204
 
205
+ You can interact with Mint's Rust backend directly using the command line. If you set up the `mint` shortcut alias, you can run commands directly as `mint <command>`. Otherwise, you can fall back to running them through npm as `npm run cli -- <command>`.
206
+
207
+ ### Setting up the `mint` Shortcut
208
+
209
+ You can choose one of the following methods to enable the global `mint` command:
210
+
211
+ **Option 1: Using Shell Alias (For active development - updates instantly on code changes)**
212
+
213
+ To run the commands using the prefix `mint` from anywhere in your workspace (automatically compiling your code updates on execution):
214
+
215
+ *For Bash (`~/.bashrc`):*
92
216
  ```bash
93
- mint gmail auth
94
- mint gmail auth --no-open
217
+ echo 'alias mint="cargo run --manifest-path /home/pheem49/vscode/Project/Mint-CLI/Cargo.toml -p mint-cli --"' >> ~/.bashrc
218
+ source ~/.bashrc
95
219
  ```
96
220
 
97
- `mint gmail auth` opens the browser automatically. `mint gmail auth --no-open` prints the auth link for you to open manually. Both flows save `gmailRefreshToken` locally after Google redirects back to Mint. Recommended scopes are `gmail.readonly` and `gmail.compose`; Mint creates drafts only and does not send email automatically.
98
-
99
- ### Google Calendar
100
-
101
- Google Calendar uses OAuth credentials and a refresh token. Onboarding stores:
102
-
103
- - `googleCalendarClientId`
104
- - `googleCalendarClientSecret`
105
- - `googleCalendarRefreshToken`
106
- - `googleCalendarId`, usually `primary`
107
-
108
- The plugin can list events and create events through the Calendar API. If OAuth is not configured, it falls back to opening Google Calendar in the browser.
109
-
110
- ### Notion
111
-
112
- Notion uses an internal integration secret. After creating an integration in Notion, share the target page or database with that integration, then configure:
113
-
114
- - `notionApiKey`
115
- - `notionDatabaseId`, optional default database
116
- - `notionPageId`, optional default page
117
- - `notionTitleProperty`, default `Name`
118
-
119
- The plugin can create pages, query database pages, and append text blocks.
120
-
121
- ## Key Features
122
-
123
- <details>
124
- <summary>Show details</summary>
125
-
126
- ### Unified CLI Agent
127
-
128
- Mint CLI is not just a chat wrapper. It is a workspace-aware agent loop.
129
-
130
- - **Think Before Acting:** Every request goes through an agent decision step.
131
- - **Fast Mode:** Toggle `/fast` to hide internal thought/progress messages while keeping the final answer, approvals, tools, and working indicator unchanged.
132
- - **Live Answer Rendering:** Final answers are streamed into a single Mint message block as they arrive.
133
- - **Conversational + Coding in One Flow:** Casual messages can finish directly; coding tasks can inspect, plan, edit, and verify.
134
- - **Workspace Context:** Reads current path, git status, diff summary, package scripts, and previous workspace session memory.
135
- - **Tool Use:** Supports web search, file listing, file reading, scoped code search, path finding, shell commands, patch edits, file writes, opening folders, and asking the user.
136
- - **Approval Flow:** Shell commands, patches, and full-file writes require user approval.
137
- - **Provider Support:** Gemini, OpenAI, Anthropic, and local OpenAI-compatible endpoints for agent tasks.
138
- - **Agent Collaboration Option:** Optional reviewer pass can be enabled for longer tasks.
139
-
140
- ### Desktop Assistant
141
-
142
- - **Electron Desktop UI:** Transparent desktop assistant window with tray support.
143
- - **Collapsible Workspace Sidebar:** Desktop navigation starts collapsed on app launch and can be expanded for Chat, Pictures, model controls, and settings.
144
- - **Chat Navigation Safety:** `New Chat` and `Clear` ask for confirmation before clearing the current conversation history.
145
- - **Pictures Gallery:** Sent images are available in a local-only Pictures view inside the desktop app.
146
- - **Live2D Model View:** Optional Live2D assistant panel with model show/hide persistence. New installs start with the model hidden until the user enables it.
147
- - **Live2D Expressions:** Cycle model expressions from the toolbar and show an on-canvas expression toast for the active expression.
148
- - **Click Reactions:** Named model interaction zones (`Head Pat`, `Cheek Poke`, `Hand Tap`, `Shoulder Tap`, and `Careful`) can trigger temporary expressions and send short contextual prompts into the normal chat flow.
149
- - **Interaction Guide Overlay:** Toggle a transparent overlay that labels clickable model areas without blocking pointer input.
150
- - **Voice Lip Sync:** When Mint speaks, Live2D mouth parameters animate during TTS playback and reset when speech ends.
151
- - **Floating Widget:** Always-on-top quick access widget.
152
- - **Spotlight Launcher:** `Alt+Space` quick prompt window.
153
- - **Screen Vision:** Capture the screen and send selected regions to the AI.
154
- - **Live Translation:** Continuously translate a selected screen area.
155
- - **Proactive Suggestions:** Periodic screen/context analysis with behavior memory.
156
- - **System Notifications:** Low battery, connection changes, and proactive notices.
157
- - **Settings UI:** Configure provider, model, theme, keys, bridge options, MCP, and assistant behavior.
158
- - **Appearance Controls:** Customize theme, accent color, text color, glass blur, font family, and UI font size.
159
-
160
- ### Automation
161
-
162
- - **Apps and Websites:** Open local apps, URLs, search queries, files, and folders.
163
- - **Browser Automation:** Use Puppeteer-driven browser workflows.
164
- - **File Operations:** Create folders, find paths, open files/folders, and move files to trash.
165
- - **System Automation:** Volume, mute, brightness, suspend, restart, shutdown, and window minimization helpers.
166
- - **Granular Automation:** Mouse move, mouse click, typing, and key tap actions.
167
- - **Custom Workflows:** Process-monitoring rules loaded from local config.
168
- - **Headless Agent:** Queue background tasks with `mint task`.
169
-
170
- ### Knowledge and Memory
171
-
172
- - **Chat History:** Persistent local chat transcript.
173
- - **Timestamp Preservation:** Desktop chat history keeps original message timestamps across app restarts and history syncs.
174
- - **Local Sent-Image Storage:** Desktop image attachments are saved as local files only after sending, under `~/.config/mint/Pictures`.
175
- - **Behavior Memory:** Stores recurring user context for proactive suggestions.
176
- - **Long-Term Memory Store:** SQLite-backed user context, session memories, usage patterns, and response cache.
177
- - **Learned Skill Files:** Import `.md` or `.txt` instruction files with `mint learn <path>` or `/learn <path>`. Mint remembers them as persistent skill/instruction context.
178
- - **Knowledge Base / RAG:** Index and search local `.txt`, `.md`, `.pdf`, `.docx`, and `.xlsx` files.
179
- - **Workspace Session Memory:** Remembers previous task summary and verification for each workspace.
180
-
181
- ### Multi-Provider AI
182
-
183
- - **Gemini:** Main default provider with model selection.
184
- - **OpenAI:** GPT-compatible cloud provider.
185
- - **Anthropic:** Claude-compatible provider.
186
- - **Local OpenAI Compatible:** LM Studio or other local `/v1/chat/completions` servers.
187
- - **Ollama / Hugging Face:** Available in general provider configuration where supported.
188
- - **Fallback Routing:** Agent provider selection can fall back when local providers are offline.
189
- - **Response Badges:** Chat surfaces show the provider/model that produced the final response, such as `gemini • gemini-3.1-flash-lite-preview`.
190
-
191
- ### Messaging Bridges and Plugins
192
-
193
- - **Discord Bridge**
194
- - **Telegram Bridge**
195
- - **Slack Bridge**
196
- - **LINE Bridge**
197
- - **WhatsApp Bridge**
198
- - **Google Search and Brave Search Bridges**
199
- - **Spotify Plugin**
200
- - **Docker Plugin**
201
- - **Obsidian Plugin**
202
- - **System Monitor and Metrics Plugins**
203
- - **Google Calendar Plugin:** List events and create calendar events via Google Calendar API, with browser fallback.
204
- - **Gmail Plugin:** Search/read Gmail and create drafts safely. It does not send email automatically.
205
- - **Notion Plugin:** Create notes/pages, read databases, and append page blocks through the Notion API.
206
- - **MCP Manager**
207
-
208
- ### MCP Extensions
209
-
210
- Mint supports the **Model Context Protocol (MCP)** so external tools can be added without hardcoding them into Mint.
221
+ *For Zsh (`~/.zshrc`):*
222
+ ```bash
223
+ echo 'alias mint="cargo run --manifest-path /home/pheem49/vscode/Project/Mint-CLI/Cargo.toml -p mint-cli --"' >> ~/.zshrc
224
+ source ~/.zshrc
225
+ ```
226
+
227
+ **Option 2: Install via Cargo (For standard Rust installation)**
228
+
229
+ This will compile the Rust CLI and install it inside your native Cargo binary directory:
211
230
 
212
231
  ```bash
213
- mint mcp add <name> <command> --args <args...> --env <KEY=VALUE>
214
- mint mcp list
215
- mint mcp remove <name>
216
- mint mcp clear
232
+ cargo install --path crates/mint-cli
217
233
  ```
234
+ *Note: Make sure your `~/.cargo/bin` is added to your shell's `$PATH` variable.*
235
+
236
+ **Option 3: Compile and Install Globally (For release binary - fastest run speed)**
218
237
 
219
- Example:
238
+ If you want to compile the project in release mode and install it directly to your system's global binaries directory (for the fastest startup time without cargo check overhead):
220
239
 
221
240
  ```bash
222
- mint mcp add google-search npx --args -y @modelcontextprotocol/server-google-search --env GOOGLE_API_KEY=your_key GOOGLE_SEARCH_ENGINE_ID=your_id
241
+ # Build the binary in release mode
242
+ cargo build --release -p mint-cli
243
+
244
+ # Copy it into your system binary directory
245
+ sudo cp target/release/mint /usr/local/bin/
223
246
  ```
247
+ Once copied, you can run `mint` globally from any folder in your terminal!mint chat "Hello"
224
248
 
225
- </details>
249
+ ---
226
250
 
227
- ## Safety System
251
+ ### Start Interactive Chat Assistant
228
252
 
229
- <details>
230
- <summary>Show details</summary>
253
+ To start the interactive terminal AI chatbot assistant, simply run:
231
254
 
232
- Mint includes a central safety layer in `src/System/safety_manager.js`.
255
+ ```bash
256
+ mint
257
+ # Or fallback: npm run cli
258
+ ```
259
+ This opens the Mint interactive shell, where you can type prompts naturally or use `/commands` (like `/help`, `/cd`, `/clear`, `/exit`).
233
260
 
234
- - **Permission Tiers:** `safe`, `approval`, `dangerous`, and `blocked`.
235
- - **Deterministic Command Blocking:** Blocks known dangerous shell commands regardless of what the AI requests.
236
- - **Blocked Examples:** `rm -rf`, `git reset --hard`, `git clean -f`, `mkfs`, raw disk writes, `shutdown`, `reboot`, `sudo`, `chmod -R 777`, `curl | sh`, and `wget | bash`.
237
- - **Dangerous Actions:** `delete_file` and destructive `system_automation` actions require explicit permission.
238
- - **Path Guard:** Prevents path traversal outside an allowed root.
239
- - **Action Logs:** Writes JSONL records to `~/.config/mint/action-log.jsonl`.
240
- - **Test Coverage:** Safety tests verify destructive command blocking, dangerous action classification, path traversal protection, and action executor enforcement.
261
+ ---
241
262
 
242
- </details>
263
+ ### CLI Subcommands
243
264
 
244
- ## Screenshots
265
+ You can run individual subcommands by appending them after `mint`:
245
266
 
246
- <details>
247
- <summary>Show screenshots</summary>
248
-
249
- <p align="center">
250
- <img src="assets/Agent_Mint.png" alt="Mint Desktop UI" width="48%">
251
- <img src="assets/Settings.png" alt="Mint Settings" width="48%">
252
- <br>
253
- <sub><strong>Desktop Assistant UI</strong> with Live2D model, chat panel, sidebar navigation, and local Pictures view. <strong>Settings UI</strong> for providers, automation, theme, voice, plugins, and MCP configuration.</sub>
254
- </p>
255
-
256
- <p align="center">
257
- <img src="assets/CLI_Screen.png" alt="Mint CLI" width="100%">
258
- <br>
259
- <sub><strong>Unified CLI Agent</strong> for chat, coding tasks, tool use, workspace context, image input, and command workflows.</sub>
260
- </p>
261
-
262
- </details>
263
-
264
- ## CLI Commands
265
-
266
- <details>
267
- <summary>Show details</summary>
268
-
269
- - `mint` / `mint chat` - Start the unified interactive agent UI.
270
- - `mint chat "<message>"` - Start with an initial message.
271
- - `mint chat --image ./screenshot.png "What is on this screen?"` - Attach an image to the initial chat message.
272
- - `/image ./screenshot.png What is on this screen?` - Attach an image while inside the interactive CLI, then press Enter to send.
273
- - `Ctrl+V` or `/paste What is on this screen?` - Attach clipboard images inside the interactive CLI, then press Enter to send.
274
- - `mint learn ./skill.md` - Read a local `.md` or `.txt` file and remember it as a persistent Mint skill/instruction.
275
- - `mint learn --list` - List learned skill files.
276
- - `mint learn --delete <id|path|name>` - Delete a learned skill by ID, path, or file name.
277
- - `mint summarize [path]` - Summarize repository structure, package metadata, git state, and key files.
278
- - `mint symbols [path]` - Build a local source symbol index for supported code files.
279
- - `mint semantic-code index [path]` - Create embeddings for local source code chunks.
280
- - `mint semantic-code search "<query>"` - Search the indexed code semantically.
281
- - `mint code "<task>"` - Run a specific coding task in the current workspace.
282
- - `mint code --image ./mockup.png "Build this UI"` - Attach an image as visual context for a coding task.
283
- - `mint gmail auth` - Open Google OAuth and save a Gmail refresh token.
284
- - `mint gmail auth --no-open` - Print the Gmail OAuth link without opening a browser.
285
- - `mint task "<task>"` - Queue a background task for the headless agent.
286
- - `mint agent [task]` - Run the background/headless agent.
287
- - `mint mcp` - Manage MCP servers.
288
- - `mint update` - Check npm and install the latest Mint CLI version.
289
- - `mint update --check` - Check for a newer version without installing it.
290
- - `mint list` - Display available features and commands.
291
- - `mint onboard` - Configure Mint for first use.
292
-
293
- </details>
294
-
295
- ## CLI Updates
296
-
297
- <details>
298
- <summary>Show details</summary>
299
-
300
- Mint CLI checks for updates automatically on startup. The auto-check is enabled by default, uses a 24-hour cooldown, and updates from npm with `npm install -g @pheem49/mint@latest` when a newer package version is available.
301
-
302
- Use manual update commands when you want direct control:
267
+ ```bash
268
+ mint onboard
269
+ mint setup
270
+ mint status
271
+ mint web
272
+ mint api
273
+ mint chat "<message>"
274
+ ```
275
+
276
+ ### Common Commands
277
+
278
+ | Command | Purpose |
279
+ | --- | --- |
280
+ | `mint` | Start the interactive terminal chat assistant |
281
+ | `mint onboard` | Configure Mint for first use |
282
+ | `mint setup` | Interactively manage enabled agent tools |
283
+ | `mint web` | Launch the web UI and local API server |
284
+ | `mint api` | Start only the local API server |
285
+ | `mint status` | Show runtime status |
286
+ | `mint config init` | Create the local configuration file |
287
+ | `mint config path` | Print the configuration file path |
288
+ | `mint config show` | Print the current configuration |
289
+ | `mint config set <key> <value>` | Update a configuration value |
290
+ | `mint config doctor` | Validate the local setup |
291
+ | `mint providers` | List configured AI providers |
292
+ | `mint chat "<message>"` | Send one chat message |
293
+ | `mint memory recent` | Show recent conversation memory |
294
+ | `mint task list` | List all tasks (pending and completed) |
295
+ | `mint task pending` | List pending tasks |
296
+ | `mint knowledge add <path>` | Index a local document |
297
+ | `mint knowledge search "<query>"` | Search indexed knowledge |
298
+ | `mint plugin list` | List local plugins |
299
+ | `mint mcp list` | List configured MCP servers |
300
+ | `mint learn <path>` | Import a persistent learned skill file |
301
+ | `mint update --check` | Check for an available update |
302
+
303
+
304
+
305
+ ### Code Agent
306
+
307
+ Mint includes native workspace tools for code inspection, planning, editing, and execution:
303
308
 
304
309
  ```bash
305
- mint update
306
- mint update --check
307
- mint update --dry-run
310
+ mint code agent "inspect this repo and fix the failing tests"
311
+ mint code github-overview "Pheem49/Mint"
312
+ mint code summary .
313
+ mint code search "shell approval flow" .
314
+ mint symbols .
315
+ mint semantic-code index .
316
+ mint semantic-code search "provider fallback"
308
317
  ```
309
318
 
310
- You can skip the startup auto-check for one command:
319
+ Inside interactive mode, use:
320
+
321
+ ```text
322
+ /code <task>
323
+ ```
324
+
325
+ Code-related fixes, workspace inspection, and test requests are routed into the code-agent loop automatically. Shell commands and file edits require explicit terminal approval before Mint applies them.
326
+
327
+ ### Tools And Automation
311
328
 
312
329
  ```bash
313
- MINT_SKIP_AUTO_UPDATE=1 mint
330
+ mint files find README
331
+ mint safety path README.md
332
+ mint safety shell cargo test -p mint-core
333
+ mint run --approve -- cargo test -p mint-core
334
+ mint open README.md
335
+ mint open-app code
336
+ mint learn ./skill.md
314
337
  ```
315
338
 
316
- To disable automatic update checks, set `enableAutoUpdate` to `false` in your Mint config file.
317
-
318
- </details>
319
-
320
- ## Interactive Slash Commands
321
-
322
- <details>
323
- <summary>Show details</summary>
324
-
325
- Inside `mint`:
326
-
327
- - `/help` - Show commands.
328
- - `/fast [on|off|status]` - Toggle Fast Mode. Fast Mode shows `[Fast]`, keeps `Mint is thinking...`, and hides `Thinking:`/progress trace messages.
329
- - `/summarize [path] [--json]` - Summarize the current repository without using the AI agent.
330
- - `/symbols [path] [--json] [--limit n]` - Build a local source symbol index without using the AI agent.
331
- - `/semantic-code index` - Create embeddings for source code chunks in the current workspace.
332
- - `/semantic-code search <query>` - Search the indexed code semantically.
333
- - `/learn <path>` - Read a local `.md` or `.txt` file and remember it as a persistent Mint skill/instruction.
334
- - `/memory skills` - Show learned skill files.
335
- - `/memory skills delete <id|path|name>` - Delete a learned skill.
336
- - `/image <path> [prompt]` - Attach an image from disk.
337
- - `/paste [prompt]` - Attach an image from the clipboard.
338
- - `/code <task>` - Force Code Mode.
339
- - `/cd <path>` - Change active workspace directory.
340
- - `/models [name]` - Show or switch model/provider.
341
- - `/memory [cmd]` - Manage long-term memory.
342
- - `/config` - Show current configuration.
343
- - `/copy` - Copy last response.
344
- - `/clear` / `/reset` - Clear conversation history.
345
- - `/agent <type>` - Switch specialized persona.
346
- - `/workspace` - Manage registered workspaces.
347
- - `/stats` - Show system statistics.
348
- - `/review` - Ask reviewer persona to critique the last answer.
349
- - `/exit` - Exit.
350
-
351
- </details>
339
+ ### MCP Servers
352
340
 
353
- ## Development
341
+ Add a local MCP server and call one of its tools:
354
342
 
355
- <details>
356
- <summary>Show details</summary>
343
+ ```bash
344
+ mint mcp add filesystem npx \
345
+ --args -y \
346
+ --args @modelcontextprotocol/server-filesystem \
347
+ --args .
348
+
349
+ mint mcp list
350
+ mint mcp call filesystem list_directory \
351
+ --arguments '{"path":"."}'
352
+ ```
353
+
354
+ ### Interactive Commands
355
+
356
+ | Command | Purpose |
357
+ | --- | --- |
358
+ | `/help` | Show interactive help |
359
+ | `/fast [on\|off]` | Toggle fast response mode |
360
+ | `/models [name]` | List or select a model |
361
+ | `/clear` or `/reset` | Clear the active conversation |
362
+ | `/cd <path>` | Change workspace directory |
363
+ | `/image <path> [prompt]` | Send an image with an optional prompt |
364
+ | `/paste [prompt]` | Use an image from the clipboard |
365
+ | `/learn <path>` | Import a local skill |
366
+ | `/memory list` | List stored memories |
367
+ | `/memory clear` | Clear stored memories |
368
+ | `/memory get <key>` | Read one memory value |
369
+ | `/memory set <key> <value>` | Store one memory value |
370
+ | `/stats` | Show session statistics |
371
+ | `/code <task>` | Start a code-agent task |
372
+ | `/exit` or `/quit` | Leave interactive mode |
373
+
374
+ ## Configuration
375
+
376
+ Mint stores its local configuration in the platform config directory:
377
+
378
+ | Platform | Typical path |
379
+ | --- | --- |
380
+ | Linux | `~/.config/mint/mint-config.json` |
381
+ | macOS | `~/Library/Application Support/mint/mint-config.json` |
382
+ | Windows | `%APPDATA%\mint\mint-config.json` |
383
+
384
+ Create and inspect the configuration:
357
385
 
358
386
  ```bash
359
- npm test
360
- npm test -- --runInBand
361
- npm audit --audit-level=high
362
- npm start
363
- npm run build:linux
387
+ npm run cli -- config init
388
+ npm run cli -- config path
389
+ npm run cli -- config show
390
+ npm run cli -- config doctor
364
391
  ```
365
392
 
366
- </details>
393
+ Configuration covers provider credentials, model preferences, browser context,
394
+ voice and TTS, proactive suggestions, headless tasks, updates, workflows, MCP
395
+ servers, and optional integrations such as Calendar, Gmail, Notion, Telegram,
396
+ Discord, Slack, LINE, WhatsApp, Google Search, and Brave Search.
397
+
398
+ The optional browser smart-context helper can provide active-tab context from:
367
399
 
368
- ## Project Structure
400
+ ```text
401
+ http://127.0.0.1:3212/context
402
+ ```
369
403
 
370
- <details>
371
- <summary>Show details</summary>
404
+ Chromium automation uses the local debugging endpoint:
372
405
 
373
406
  ```text
374
- Mint/
375
- ├── main.js # Electron bootstrap and wiring
376
- ├── mint-cli.js # CLI entry point
377
- ├── mint-cli-logic.js # CLI action executor bridge
378
- ├── src/
379
- │ ├── AI_Brain/ # Providers, memory, RAG, autonomous/headless agents
380
- │ ├── Automation_Layer/ # File, app, website, and browser automation
381
- │ ├── Channels/ # Messaging and search bridges
382
- │ ├── CLI/ # Unified CLI UI, router, code agent, workspaces
383
- │ ├── Command_Parser/ # Structured AI response parser
384
- │ ├── Plugins/ # Plugin manager and integrations
385
- │ ├── System/ # Config, IPC, safety, windows, screen capture, notifications
386
- │ └── UI/ # Electron renderer, settings, widgets, spotlight
387
- ├── tests/ # Jest tests
388
- ├── docs/ # Documentation site
389
- └── package.json
407
+ http://127.0.0.1:9222/json/list
390
408
  ```
391
409
 
392
- </details>
410
+ ## Webhook Integrations
393
411
 
394
- ## Runtime Notes
412
+ LINE and WhatsApp webhook listeners bind to localhost by default. Read
413
+ [`docs/WEBHOOK_FORWARDING.md`](docs/WEBHOOK_FORWARDING.md) before exposing them
414
+ through a TLS tunnel.
395
415
 
396
- <details>
397
- <summary>Show details</summary>
416
+ ## Safety And Privacy
398
417
 
399
- - Mint is currently a **Node.js + CommonJS** project, not TypeScript.
400
- - API keys are stored locally in Mint config or environment variables.
401
- - Google OAuth refresh tokens for Gmail and Calendar are stored locally in Mint config.
402
- - Desktop chat images sent by the user are stored locally in `~/.config/mint/Pictures`, with metadata in `~/.config/mint/Pictures/pictures.json`.
403
- - Desktop chat history is stored locally in `~/.config/mint/mint-chat-history.json`.
404
- - Local OpenAI-compatible providers require a running local server such as LM Studio.
405
- - Some desktop features depend on Linux tools such as `xdg-open`, `gio`, `xdotool`, `amixer`, `pactl`, `brightnessctl`, or `xbacklight`.
406
- - Electron GUI behavior should be smoke-tested manually after large UI or main-process changes.
418
+ Mint keeps high-risk behavior behind explicit policy checks:
407
419
 
408
- </details>
420
+ - Shell commands are evaluated before execution.
421
+ - Code edits and update installation require approval.
422
+ - Sensitive directories such as `.ssh`, `.gnupg`, and Mint's own config
423
+ directory are protected by default.
424
+ - Sensitive filenames such as `.env` and private key files are blocked from
425
+ routine workspace access.
426
+ - LINE and WhatsApp webhook services listen locally unless you intentionally
427
+ forward them.
409
428
 
410
- ## Security & Privacy
429
+ Review the generated command or edit preview before approving an action.
411
430
 
412
- <details>
413
- <summary>Show details</summary>
431
+ ## Development
414
432
 
415
- - **Local Control:** Mint prioritizes local execution and local configuration.
416
- - **Local Picture Storage:** Desktop images are saved only on the user's machine, under `~/.config/mint/Pictures`, after the user sends a message with an image.
417
- - **No Raw Image History:** Saved desktop images are omitted from chat history as raw base64 and replaced with a text placeholder.
418
- - **User Approval:** Shell commands, patches, and file writes require explicit approval in the CLI agent.
419
- - **Safety Manager:** Dangerous commands and actions are blocked or gated by deterministic policy.
420
- - **Action Audit Trail:** Tool actions are logged locally for debugging and accountability.
421
- - **Secure Config Practice:** Keys stay on the user's machine and are only sent to the selected AI/search provider.
433
+ Useful validation commands:
422
434
 
423
- </details>
435
+ ```bash
436
+ npm run build:web
437
+ cargo test -p mint-core -p mint-cli -p mint-desktop
438
+ cargo check -p mint-desktop
439
+ npm run tauri:build -- --debug --no-bundle
440
+ ```
424
441
 
425
- ## License
442
+ ### Project Layout
443
+
444
+ ```text
445
+ crates/mint-core Shared Rust domain logic
446
+ crates/mint-cli Native Rust CLI
447
+ src-tauri Tauri desktop backend and IPC commands
448
+ src/renderer React and TypeScript webview UI
449
+ docs Project documentation
450
+ out/renderer Generated Vite renderer output
451
+ ```
426
452
 
427
- Mint is licensed under the **GNU Affero General Public License v3.0**.
428
- See the [LICENSE](LICENSE) file for details.
453
+ ## Migration Status
429
454
 
430
- ---
455
+ Mint's historical Electron desktop runtime and Node CLI have been removed. The
456
+ active application is the native Tauri v2 and Rust implementation documented
457
+ above. See [`TAURI_MIGRATION.md`](TAURI_MIGRATION.md) for compatibility notes.
458
+
459
+ ## Contributing
460
+
461
+ We welcome contributions from the community! Whether you want to fix a bug, add a new provider, or build a new integration, please check out our [CONTRIBUTING.md](file:///home/pheem49/vscode/Project/Mint-CLI/CONTRIBUTING.md) guide for setup instructions, project architecture details, and our roadmap.
462
+
463
+ ## License
464
+
465
+ Mint is licensed under the [AGPL-3.0-only license](LICENSE).
431
466
 
432
- <p align="center">Made with love by <a href="https://github.com/Pheem49">Pheem49</a></p>