minion-code 0.1.0__tar.gz → 0.1.2__tar.gz

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 (145) hide show
  1. minion_code-0.1.2/PKG-INFO +476 -0
  2. minion_code-0.1.2/README.md +447 -0
  3. minion_code-0.1.2/examples/cli_entrypoint.py +60 -0
  4. {minion_code-0.1.0/examples → minion_code-0.1.2/examples/components}/agent_with_todos.py +58 -47
  5. {minion_code-0.1.0/examples → minion_code-0.1.2/examples/components}/message_response_children_demo.py +61 -55
  6. minion_code-0.1.2/examples/components/messages_component.py +199 -0
  7. {minion_code-0.1.0 → minion_code-0.1.2}/examples/file_freshness_example.py +22 -22
  8. {minion_code-0.1.0 → minion_code-0.1.2}/examples/file_watching_example.py +32 -26
  9. minion_code-0.1.2/examples/interruptible_tui.py +923 -0
  10. minion_code-0.1.2/examples/repl_tui.py +129 -0
  11. minion_code-0.1.2/examples/skills/example_usage.py +57 -0
  12. minion_code-0.1.2/examples/start.py +173 -0
  13. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/__init__.py +1 -1
  14. minion_code-0.1.2/minion_code/acp_server/__init__.py +34 -0
  15. minion_code-0.1.2/minion_code/acp_server/agent.py +539 -0
  16. minion_code-0.1.2/minion_code/acp_server/hooks.py +354 -0
  17. minion_code-0.1.2/minion_code/acp_server/main.py +194 -0
  18. minion_code-0.1.2/minion_code/acp_server/permissions.py +142 -0
  19. minion_code-0.1.2/minion_code/acp_server/test_client.py +104 -0
  20. minion_code-0.1.2/minion_code/adapters/__init__.py +22 -0
  21. minion_code-0.1.2/minion_code/adapters/output_adapter.py +207 -0
  22. minion_code-0.1.2/minion_code/adapters/rich_adapter.py +169 -0
  23. minion_code-0.1.2/minion_code/adapters/textual_adapter.py +254 -0
  24. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/agents/__init__.py +2 -2
  25. minion_code-0.1.2/minion_code/agents/code_agent.py +733 -0
  26. minion_code-0.1.2/minion_code/agents/hooks.py +378 -0
  27. minion_code-0.1.2/minion_code/cli.py +611 -0
  28. minion_code-0.1.2/minion_code/cli_simple.py +665 -0
  29. minion_code-0.1.2/minion_code/commands/__init__.py +197 -0
  30. minion_code-0.1.2/minion_code/commands/clear_command.py +43 -0
  31. minion_code-0.1.2/minion_code/commands/help_command.py +74 -0
  32. minion_code-0.1.2/minion_code/commands/history_command.py +86 -0
  33. minion_code-0.1.2/minion_code/commands/model_command.py +194 -0
  34. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/commands/quit_command.py +9 -12
  35. minion_code-0.1.2/minion_code/commands/resume_command.py +181 -0
  36. minion_code-0.1.2/minion_code/commands/skill_command.py +89 -0
  37. minion_code-0.1.2/minion_code/commands/status_command.py +90 -0
  38. minion_code-0.1.2/minion_code/commands/tools_command.py +88 -0
  39. minion_code-0.1.2/minion_code/commands/version_command.py +69 -0
  40. minion_code-0.1.2/minion_code/components/ConfirmDialog.py +430 -0
  41. minion_code-0.1.2/minion_code/components/Message.py +525 -0
  42. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/components/MessageResponse.py +30 -29
  43. minion_code-0.1.2/minion_code/components/Messages.py +351 -0
  44. minion_code-0.1.2/minion_code/components/PromptInput.py +788 -0
  45. minion_code-0.1.2/minion_code/components/__init__.py +36 -0
  46. minion_code-0.1.2/minion_code/const.py +7 -0
  47. minion_code-0.1.2/minion_code/screens/REPL.py +1909 -0
  48. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/screens/__init__.py +1 -1
  49. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/services/__init__.py +20 -20
  50. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/services/event_system.py +19 -14
  51. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/services/file_freshness_service.py +223 -170
  52. minion_code-0.1.2/minion_code/skills/__init__.py +25 -0
  53. minion_code-0.1.2/minion_code/skills/skill.py +128 -0
  54. minion_code-0.1.2/minion_code/skills/skill_loader.py +198 -0
  55. minion_code-0.1.2/minion_code/skills/skill_registry.py +177 -0
  56. minion_code-0.1.2/minion_code/subagents/__init__.py +31 -0
  57. minion_code-0.1.2/minion_code/subagents/builtin/__init__.py +30 -0
  58. minion_code-0.1.2/minion_code/subagents/builtin/claude_code_guide.py +32 -0
  59. minion_code-0.1.2/minion_code/subagents/builtin/explore.py +36 -0
  60. minion_code-0.1.2/minion_code/subagents/builtin/general_purpose.py +19 -0
  61. minion_code-0.1.2/minion_code/subagents/builtin/plan.py +61 -0
  62. minion_code-0.1.2/minion_code/subagents/subagent.py +116 -0
  63. minion_code-0.1.2/minion_code/subagents/subagent_loader.py +147 -0
  64. minion_code-0.1.2/minion_code/subagents/subagent_registry.py +151 -0
  65. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/__init__.py +8 -2
  66. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/bash_tool.py +16 -3
  67. minion_code-0.1.2/minion_code/tools/file_edit_tool.py +335 -0
  68. minion_code-0.1.2/minion_code/tools/file_read_tool.py +230 -0
  69. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/file_write_tool.py +17 -3
  70. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/glob_tool.py +23 -2
  71. minion_code-0.1.2/minion_code/tools/grep_tool.py +313 -0
  72. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/ls_tool.py +28 -3
  73. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/multi_edit_tool.py +89 -84
  74. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/python_interpreter_tool.py +9 -1
  75. minion_code-0.1.2/minion_code/tools/skill_tool.py +210 -0
  76. minion_code-0.1.2/minion_code/tools/task_tool.py +287 -0
  77. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/todo_read_tool.py +28 -24
  78. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/todo_write_tool.py +82 -65
  79. minion_code-0.1.0/minion_code/types.py → minion_code-0.1.2/minion_code/type_defs.py +15 -2
  80. minion_code-0.1.2/minion_code/utils/__init__.py +72 -0
  81. minion_code-0.1.2/minion_code/utils/config.py +610 -0
  82. minion_code-0.1.2/minion_code/utils/history.py +114 -0
  83. minion_code-0.1.2/minion_code/utils/logs.py +53 -0
  84. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/utils/mcp_loader.py +153 -55
  85. minion_code-0.1.2/minion_code/utils/output_truncator.py +233 -0
  86. minion_code-0.1.2/minion_code/utils/session_storage.py +369 -0
  87. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/utils/todo_file_utils.py +26 -22
  88. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/utils/todo_storage.py +43 -33
  89. minion_code-0.1.2/minion_code/web/__init__.py +9 -0
  90. minion_code-0.1.2/minion_code/web/adapters/__init__.py +5 -0
  91. minion_code-0.1.2/minion_code/web/adapters/web_adapter.py +524 -0
  92. minion_code-0.1.2/minion_code/web/api/__init__.py +7 -0
  93. minion_code-0.1.2/minion_code/web/api/chat.py +277 -0
  94. minion_code-0.1.2/minion_code/web/api/interactions.py +136 -0
  95. minion_code-0.1.2/minion_code/web/api/sessions.py +135 -0
  96. minion_code-0.1.2/minion_code/web/server.py +149 -0
  97. minion_code-0.1.2/minion_code/web/services/__init__.py +5 -0
  98. minion_code-0.1.2/minion_code/web/services/session_manager.py +420 -0
  99. minion_code-0.1.2/minion_code.egg-info/PKG-INFO +476 -0
  100. minion_code-0.1.2/minion_code.egg-info/SOURCES.txt +114 -0
  101. minion_code-0.1.2/minion_code.egg-info/entry_points.txt +6 -0
  102. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code.egg-info/requires.txt +8 -0
  103. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code.egg-info/top_level.txt +0 -1
  104. minion_code-0.1.2/pyproject.toml +62 -0
  105. minion_code-0.1.2/tests/test_adapter.py +67 -0
  106. minion_code-0.1.2/tests/test_adapter_simple.py +79 -0
  107. minion_code-0.1.2/tests/test_file_read_tool.py +144 -0
  108. {minion_code-0.1.0 → minion_code-0.1.2}/tests/test_readonly_tools.py +0 -2
  109. minion_code-0.1.2/tests/test_skills.py +441 -0
  110. minion_code-0.1.0/PKG-INFO +0 -350
  111. minion_code-0.1.0/README.md +0 -328
  112. minion_code-0.1.0/examples/advance_tui.py +0 -508
  113. minion_code-0.1.0/examples/interruptible_tui.py +0 -5
  114. minion_code-0.1.0/examples/rich_example.py +0 -4
  115. minion_code-0.1.0/examples/simple_file_watching.py +0 -57
  116. minion_code-0.1.0/examples/simple_tui.py +0 -267
  117. minion_code-0.1.0/examples/simple_usage.py +0 -69
  118. minion_code-0.1.0/minion_code/agents/code_agent.py +0 -320
  119. minion_code-0.1.0/minion_code/cli.py +0 -502
  120. minion_code-0.1.0/minion_code/commands/__init__.py +0 -90
  121. minion_code-0.1.0/minion_code/commands/clear_command.py +0 -70
  122. minion_code-0.1.0/minion_code/commands/help_command.py +0 -90
  123. minion_code-0.1.0/minion_code/commands/history_command.py +0 -104
  124. minion_code-0.1.0/minion_code/commands/status_command.py +0 -115
  125. minion_code-0.1.0/minion_code/commands/tools_command.py +0 -86
  126. minion_code-0.1.0/minion_code/commands/version_command.py +0 -104
  127. minion_code-0.1.0/minion_code/components/Message.py +0 -304
  128. minion_code-0.1.0/minion_code/components/PromptInput.py +0 -534
  129. minion_code-0.1.0/minion_code/components/__init__.py +0 -29
  130. minion_code-0.1.0/minion_code/screens/REPL.py +0 -925
  131. minion_code-0.1.0/minion_code/tools/file_edit_tool.py +0 -238
  132. minion_code-0.1.0/minion_code/tools/file_read_tool.py +0 -73
  133. minion_code-0.1.0/minion_code/tools/grep_tool.py +0 -105
  134. minion_code-0.1.0/minion_code/utils/__init__.py +0 -44
  135. minion_code-0.1.0/minion_code.egg-info/PKG-INFO +0 -350
  136. minion_code-0.1.0/minion_code.egg-info/SOURCES.txt +0 -62
  137. minion_code-0.1.0/minion_code.egg-info/entry_points.txt +0 -4
  138. minion_code-0.1.0/pyproject.toml +0 -38
  139. {minion_code-0.1.0 → minion_code-0.1.2}/LICENSE +0 -0
  140. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code/tools/user_input_tool.py +0 -0
  141. {minion_code-0.1.0 → minion_code-0.1.2}/minion_code.egg-info/dependency_links.txt +0 -0
  142. {minion_code-0.1.0 → minion_code-0.1.2}/setup.cfg +0 -0
  143. {minion_code-0.1.0 → minion_code-0.1.2}/tests/__init__.py +0 -0
  144. {minion_code-0.1.0 → minion_code-0.1.2}/tests/test_basic.py +0 -0
  145. {minion_code-0.1.0 → minion_code-0.1.2}/tests/test_tools.py +0 -0
@@ -0,0 +1,476 @@
1
+ Metadata-Version: 2.4
2
+ Name: minion-code
3
+ Version: 0.1.2
4
+ Summary: A Python project depending on minion
5
+ Author-email: User <user@example.com>
6
+ Requires-Python: >=3.8
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: minionx
10
+ Requires-Dist: typer>=0.9.0
11
+ Requires-Dist: Pillow>=10.0.0
12
+ Requires-Dist: nest-asyncio>=1.5.0
13
+ Requires-Dist: acp-sdk>=1.0.0
14
+ Provides-Extra: dev
15
+ Requires-Dist: pytest; extra == "dev"
16
+ Requires-Dist: black; extra == "dev"
17
+ Requires-Dist: flake8; extra == "dev"
18
+ Requires-Dist: mypy; extra == "dev"
19
+ Provides-Extra: tui
20
+ Requires-Dist: textual>=0.40.0; extra == "tui"
21
+ Requires-Dist: rich>=13.0.0; extra == "tui"
22
+ Provides-Extra: agent
23
+ Requires-Dist: openai>=1.0.0; extra == "agent"
24
+ Provides-Extra: web
25
+ Requires-Dist: fastapi>=0.100.0; extra == "web"
26
+ Requires-Dist: uvicorn>=0.20.0; extra == "web"
27
+ Requires-Dist: pydantic>=2.0.0; extra == "web"
28
+ Dynamic: license-file
29
+
30
+ # MinionCodeAgent
31
+
32
+ An enhanced AI code assistant built on the Minion framework, pre-configured with rich development tools, optimized for code development tasks.
33
+
34
+ ## Features
35
+
36
+ - 🤖 **Intelligent Code Assistant**: Pre-configured AI agent designed for programming tasks
37
+ - 🔧 **Rich Toolset**: Automatically includes 12+ tools for file operations, command execution, web search, etc.
38
+ - ⚡ **Ready to Use**: One-line creation, no complex configuration needed
39
+ - 📝 **Conversation History**: Built-in conversation history tracking and management
40
+ - 🎯 **Optimized Prompts**: System prompts optimized for code development tasks
41
+ - 🛡️ **Security by Design**: Built-in security checks to prevent dangerous operations
42
+ - 🔌 **ACP Protocol Support**: Seamless integration with ACP clients like Zed editor
43
+
44
+ ## Installation
45
+
46
+ ### Option 1: Install from source (recommended for development)
47
+
48
+ ```bash
49
+ # Clone the dependency repository
50
+ git clone https://github.com/femto/minion
51
+
52
+ # Clone this repository
53
+ git clone https://github.com/femto/minion-code
54
+
55
+ # Enter the directory
56
+ cd minion-code
57
+
58
+ # Install minion dependency
59
+ pip install -e ../minion
60
+
61
+ # Install minion-code
62
+ pip install -e .
63
+ ```
64
+
65
+ In this case, `MINION_ROOT` is located at `../minion`
66
+
67
+ ### Option 2: Direct installation (recommended for general use)
68
+
69
+ ```bash
70
+ # Clone this repository
71
+ git clone https://github.com/femto/minion-code
72
+ cd minion-code
73
+
74
+ # Install dependencies
75
+ pip install minionx
76
+
77
+ # Install minion-code
78
+ pip install -e .
79
+ ```
80
+
81
+ In this case, `MINION_ROOT` is located at the current startup location
82
+
83
+ On startup, the actual path of `MINION_ROOT` will be displayed:
84
+ ```
85
+ 2025-11-13 12:21:48.042 | INFO | minion.const:get_minion_root:44 - MINION_ROOT set to: <some_path>
86
+ ```
87
+
88
+ # LLM Configuration
89
+
90
+ Please refer to https://github.com/femto/minion?tab=readme-ov-file#get-started
91
+
92
+ Make sure the config file is in `MINION_ROOT/config/config.yaml` or `~/.minion/config.yaml`
93
+
94
+ ## Quick Start
95
+
96
+ ### CLI Usage
97
+
98
+ ```bash
99
+ # Basic usage
100
+ mcode
101
+
102
+ # Specify working directory
103
+ mcode --dir /path/to/project
104
+
105
+ # Specify LLM model
106
+ mcode --model gpt-4o
107
+ mcode --model claude-3-5-sonnet
108
+
109
+ # Enable verbose output
110
+ mcode --verbose
111
+
112
+ # Load additional tools using MCP config file
113
+ mcode --config mcp.json
114
+
115
+ # Combined usage
116
+ mcode --dir /path/to/project --model gpt-4o --config mcp.json --verbose
117
+ ```
118
+
119
+ ### Model Configuration
120
+
121
+ Configure the default LLM model used by minion-code:
122
+
123
+ ```bash
124
+ # View current default model
125
+ mcode model
126
+
127
+ # Set default model (saved to ~/.minion/minion-code.json)
128
+ mcode model gpt-4o
129
+ mcode model claude-3-5-sonnet
130
+
131
+ # Clear default model (use built-in default)
132
+ mcode model --clear
133
+ ```
134
+
135
+ **Model Priority:**
136
+ 1. CLI `--model` argument (highest priority)
137
+ 2. Config file `~/.minion/minion-code.json`
138
+ 3. Built-in default (lowest priority)
139
+
140
+ ### ACP Protocol Support
141
+
142
+ MinionCodeAgent supports the [ACP (Agent Communication Protocol)](https://agentcommunicationprotocol.dev/) protocol, enabling integration with ACP-compatible clients like Zed editor.
143
+
144
+ ```bash
145
+ # Start ACP server (stdio mode)
146
+ mcode acp
147
+
148
+ # Specify working directory
149
+ mcode acp --dir /path/to/project
150
+
151
+ # Specify LLM model
152
+ mcode acp --model gpt-4o
153
+
154
+ # Enable verbose logging
155
+ mcode acp --verbose
156
+
157
+ # Skip tool permission prompts (auto-allow all tools)
158
+ mcode acp --dangerously-skip-permissions
159
+
160
+ # Combined usage
161
+ mcode acp --dir /path/to/project --model claude-3-5-sonnet --verbose
162
+ ```
163
+
164
+ #### Using with Zed Editor
165
+
166
+ Add the following to Zed's `settings.json`:
167
+
168
+ ```json
169
+ {
170
+ "agent_servers": {
171
+
172
+ "minion-code": {
173
+ "type": "custom",
174
+ "command": "/path/to/mcode",
175
+ "args": [
176
+ "acp"
177
+ ],
178
+ "env": {}
179
+ }
180
+ }
181
+ }
182
+ ```
183
+
184
+ #### Permission Management
185
+
186
+ In ACP mode, tool calls will request user permission:
187
+ - **Allow once**: Allow this time only
188
+ - **Always allow**: Permanently allow this tool (saved to `~/.minion/sessions/`)
189
+ - **Reject**: Deny execution
190
+
191
+ ### Programming Interface
192
+
193
+ ```python
194
+ import asyncio
195
+ from minion_code import MinionCodeAgent
196
+
197
+ async def main():
198
+ # Create AI code assistant with all tools auto-configured
199
+ agent = await MinionCodeAgent.create(
200
+ name="My Code Assistant",
201
+ llm="gpt-4.1"
202
+ )
203
+
204
+ # Chat with the AI assistant
205
+ response = await agent.run_async("List files in current directory")
206
+ print(response.answer)
207
+
208
+ response = await agent.run_async("Read the README.md file")
209
+ print(response.answer)
210
+
211
+ asyncio.run(main())
212
+ ```
213
+
214
+ ### Custom Configuration
215
+
216
+ ```python
217
+ # Custom system prompt and working directory
218
+ agent = await MinionCodeAgent.create(
219
+ name="Python Expert",
220
+ llm="gpt-4.1",
221
+ system_prompt="You are a specialized Python developer assistant.",
222
+ workdir="/path/to/project",
223
+ additional_tools=[MyCustomTool()]
224
+ )
225
+ ```
226
+
227
+ ### View Available Tools
228
+
229
+ ```python
230
+ # Print tools summary
231
+ agent.print_tools_summary()
232
+
233
+ # Get tools info
234
+ tools_info = agent.get_tools_info()
235
+ for tool in tools_info:
236
+ print(f"{tool['name']}: {tool['description']}")
237
+ ```
238
+
239
+ ## Built-in Tools
240
+
241
+ MinionCodeAgent automatically includes the following tool categories:
242
+
243
+ ### 📁 File and Directory Tools
244
+ - **FileReadTool**: Read file contents
245
+ - **FileWriteTool**: Write files
246
+ - **GrepTool**: Search text in files
247
+ - **GlobTool**: File pattern matching
248
+ - **LsTool**: List directory contents
249
+
250
+ ### 💻 System and Execution Tools
251
+ - **BashTool**: Execute shell commands
252
+ - **PythonInterpreterTool**: Execute Python code
253
+
254
+ ### 🌐 Network and Search Tools
255
+ - **WebSearchTool**: Web search
256
+ - **WikipediaSearchTool**: Wikipedia search
257
+ - **VisitWebpageTool**: Visit webpages
258
+
259
+ ### 🔧 Other Tools
260
+ - **UserInputTool**: User input
261
+ - **TodoWriteTool**: Task management write
262
+ - **TodoReadTool**: Task management read
263
+
264
+ ## MCP Tool Integration
265
+
266
+ MinionCodeAgent supports loading additional tools via MCP (Model Context Protocol) configuration files.
267
+
268
+ ### MCP Configuration File Format
269
+
270
+ Create a JSON configuration file (e.g., `mcp.json`):
271
+
272
+ ```json
273
+ {
274
+ "mcpServers": {
275
+ "chrome-devtools": {
276
+ "command": "npx",
277
+ "args": ["-y", "chrome-devtools-mcp@latest"],
278
+ "env": {
279
+ "FASTMCP_LOG_LEVEL": "ERROR"
280
+ },
281
+ "disabled": false,
282
+ "autoApprove": []
283
+ },
284
+ "filesystem": {
285
+ "command": "uvx",
286
+ "args": ["mcp-server-filesystem", "/tmp"],
287
+ "disabled": true,
288
+ "autoApprove": ["read_file", "list_directory"]
289
+ },
290
+ "git": {
291
+ "command": "uvx",
292
+ "args": ["mcp-server-git"],
293
+ "disabled": false,
294
+ "autoApprove": ["git_status", "git_log"]
295
+ }
296
+ }
297
+ }
298
+ ```
299
+
300
+ ### Configuration Options
301
+
302
+ - `command`: Command to start the MCP server
303
+ - `args`: List of command arguments
304
+ - `env`: Environment variables (optional)
305
+ - `disabled`: Whether to disable this server (default: false)
306
+ - `autoApprove`: List of tool names to auto-approve (optional)
307
+
308
+ ### Using MCP Configuration
309
+
310
+ ```bash
311
+ # Use MCP config file
312
+ minion-code --config examples/mcp_config.json
313
+
314
+ # View loaded tools (including MCP tools)
315
+ # In CLI, type: tools
316
+ ```
317
+
318
+ ### Using MCP Tools in Programming Interface
319
+
320
+ ```python
321
+ from minion_code.utils.mcp_loader import load_mcp_tools
322
+ from pathlib import Path
323
+
324
+ async def main():
325
+ # Load MCP tools
326
+ mcp_tools = await load_mcp_tools(Path("mcp.json"))
327
+
328
+ # Create agent with MCP tools
329
+ agent = await MinionCodeAgent.create(
330
+ name="Enhanced Assistant",
331
+ llm="gpt-4o-mini",
332
+ additional_tools=mcp_tools
333
+ )
334
+ ```
335
+
336
+ ## Conversation History Management
337
+
338
+ ```python
339
+ # Get conversation history
340
+ history = agent.get_conversation_history()
341
+ for entry in history:
342
+ print(f"User: {entry['user_message']}")
343
+ print(f"Agent: {entry['agent_response']}")
344
+
345
+ # Clear history
346
+ agent.clear_conversation_history()
347
+ ```
348
+
349
+ ## Comparison with Original Implementation
350
+
351
+ ### Before (Complex manual configuration)
352
+ ```python
353
+ # Need to manually import and configure all tools
354
+ from minion_code.tools import (
355
+ FileReadTool, FileWriteTool, BashTool,
356
+ GrepTool, GlobTool, LsTool,
357
+ PythonInterpreterTool, WebSearchTool,
358
+ # ... more tools
359
+ )
360
+
361
+ # Manually create tool instances
362
+ custom_tools = [
363
+ FileReadTool(),
364
+ FileWriteTool(),
365
+ BashTool(),
366
+ # ... more tool configuration
367
+ ]
368
+
369
+ # Manually set system prompt
370
+ SYSTEM_PROMPT = "You are a coding agent..."
371
+
372
+ # Create agent (~50 lines of code)
373
+ agent = await CodeAgent.create(
374
+ name="Minion Code Assistant",
375
+ llm="gpt-4o-mini",
376
+ system_prompt=SYSTEM_PROMPT,
377
+ tools=custom_tools,
378
+ )
379
+ ```
380
+
381
+ ### Now (Using MinionCodeAgent)
382
+ ```python
383
+ # One line of code completes all setup
384
+ agent = await MinionCodeAgent.create(
385
+ name="Minion Code Assistant",
386
+ llm="gpt-4o-mini"
387
+ )
388
+ ```
389
+
390
+ ## API Reference
391
+
392
+ ### MinionCodeAgent.create()
393
+
394
+ ```python
395
+ async def create(
396
+ name: str = "Minion Code Assistant",
397
+ llm: str = "gpt-4o-mini",
398
+ system_prompt: Optional[str] = None,
399
+ workdir: Optional[Union[str, Path]] = None,
400
+ additional_tools: Optional[List[Any]] = None,
401
+ **kwargs
402
+ ) -> MinionCodeAgent
403
+ ```
404
+
405
+ **Parameters:**
406
+ - `name`: Agent name
407
+ - `llm`: LLM model to use
408
+ - `system_prompt`: Custom system prompt (optional)
409
+ - `workdir`: Working directory (optional, defaults to current directory)
410
+ - `additional_tools`: List of additional tools (optional)
411
+ - `**kwargs`: Other parameters passed to CodeAgent.create()
412
+
413
+ ### Instance Methods
414
+
415
+ - `run_async(message: str)`: Run agent asynchronously
416
+ - `run(message: str)`: Run agent synchronously
417
+ - `get_conversation_history()`: Get conversation history
418
+ - `clear_conversation_history()`: Clear conversation history
419
+ - `get_tools_info()`: Get tools info
420
+ - `print_tools_summary()`: Print tools summary
421
+
422
+ ### Properties
423
+
424
+ - `agent`: Access underlying CodeAgent instance
425
+ - `tools`: Get available tools list
426
+ - `name`: Get agent name
427
+
428
+ ## Security Features
429
+
430
+ - **Command Execution Safety**: BashTool prohibits dangerous commands (e.g., `rm -rf`, `sudo`, etc.)
431
+ - **Python Execution Restrictions**: PythonInterpreterTool runs in a restricted environment, allowing only safe built-in functions and specified modules
432
+ - **File Access Control**: All file operations have path validation and error handling
433
+
434
+ ## Examples
435
+
436
+ See complete examples in the `examples/` directory:
437
+
438
+ - `simple_code_agent.py`: Basic MinionCodeAgent usage example
439
+ - `simple_tui.py`: Simplified TUI implementation
440
+ - `advanced_textual_tui.py`: Advanced TUI interface (using Textual library)
441
+ - `minion_agent_tui.py`: Original complex implementation (for comparison)
442
+ - `mcp_config.json`: MCP configuration file example
443
+ - `test_mcp_config.py`: MCP configuration loading test
444
+ - `demo_mcp_cli.py`: MCP CLI feature demo
445
+
446
+ Run examples:
447
+
448
+ ```bash
449
+ # Basic usage example
450
+ python examples/simple_code_agent.py
451
+
452
+ # Simple TUI
453
+ python examples/simple_tui.py
454
+
455
+ # Advanced TUI (requires textual: pip install textual rich)
456
+ python examples/advanced_textual_tui.py
457
+
458
+ # Test MCP config loading
459
+ python examples/test_mcp_config.py
460
+
461
+ # MCP CLI feature demo
462
+ python examples/demo_mcp_cli.py
463
+ ```
464
+
465
+ ## Documentation
466
+
467
+ - [LLM Configuration Guide](LLM_CONFIG.md) - How to configure Large Language Models (LLM)
468
+ - [MCP Tool Integration Guide](docs/MCP_GUIDE.md) - Detailed MCP configuration and usage guide
469
+
470
+ ## Contributing
471
+
472
+ Issues and Pull Requests are welcome to improve this project!
473
+
474
+ ## License
475
+
476
+ MIT License