massgen 0.1.1__py3-none-any.whl → 0.1.3__py3-none-any.whl

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 (77) hide show
  1. massgen/__init__.py +1 -1
  2. massgen/agent_config.py +33 -7
  3. massgen/api_params_handler/_api_params_handler_base.py +3 -0
  4. massgen/api_params_handler/_chat_completions_api_params_handler.py +7 -1
  5. massgen/backend/azure_openai.py +9 -1
  6. massgen/backend/base.py +56 -0
  7. massgen/backend/base_with_custom_tool_and_mcp.py +4 -4
  8. massgen/backend/capabilities.py +6 -6
  9. massgen/backend/chat_completions.py +18 -11
  10. massgen/backend/claude_code.py +9 -1
  11. massgen/backend/gemini.py +71 -6
  12. massgen/backend/gemini_utils.py +30 -0
  13. massgen/backend/grok.py +39 -6
  14. massgen/backend/response.py +18 -11
  15. massgen/chat_agent.py +9 -3
  16. massgen/cli.py +319 -43
  17. massgen/config_builder.py +163 -18
  18. massgen/configs/README.md +78 -20
  19. massgen/configs/basic/multi/three_agents_default.yaml +2 -2
  20. massgen/configs/debug/restart_test_controlled.yaml +60 -0
  21. massgen/configs/debug/restart_test_controlled_filesystem.yaml +73 -0
  22. massgen/configs/tools/code-execution/docker_with_sudo.yaml +35 -0
  23. massgen/configs/tools/custom_tools/computer_use_browser_example.yaml +56 -0
  24. massgen/configs/tools/custom_tools/computer_use_docker_example.yaml +65 -0
  25. massgen/configs/tools/custom_tools/computer_use_example.yaml +50 -0
  26. massgen/configs/tools/custom_tools/crawl4ai_mcp_example.yaml +67 -0
  27. massgen/configs/tools/custom_tools/crawl4ai_multi_agent_example.yaml +68 -0
  28. massgen/configs/tools/custom_tools/multimodal_tools/playwright_with_img_understanding.yaml +98 -0
  29. massgen/configs/tools/custom_tools/multimodal_tools/understand_audio.yaml +33 -0
  30. massgen/configs/tools/custom_tools/multimodal_tools/understand_file.yaml +34 -0
  31. massgen/configs/tools/custom_tools/multimodal_tools/understand_image.yaml +33 -0
  32. massgen/configs/tools/custom_tools/multimodal_tools/understand_video.yaml +34 -0
  33. massgen/configs/tools/custom_tools/multimodal_tools/understand_video_example.yaml +54 -0
  34. massgen/configs/tools/custom_tools/multimodal_tools/youtube_video_analysis.yaml +59 -0
  35. massgen/configs/tools/memory/README.md +199 -0
  36. massgen/configs/tools/memory/gpt5mini_gemini_context_window_management.yaml +131 -0
  37. massgen/configs/tools/memory/gpt5mini_gemini_no_persistent_memory.yaml +133 -0
  38. massgen/configs/tools/memory/test_context_window_management.py +286 -0
  39. massgen/configs/tools/multimodal/gpt5mini_gpt5nano_documentation_evolution.yaml +97 -0
  40. massgen/configs/tools/planning/five_agents_discord_mcp_planning_mode.yaml +7 -29
  41. massgen/configs/tools/planning/five_agents_filesystem_mcp_planning_mode.yaml +5 -6
  42. massgen/configs/tools/planning/five_agents_notion_mcp_planning_mode.yaml +4 -4
  43. massgen/configs/tools/planning/five_agents_twitter_mcp_planning_mode.yaml +4 -4
  44. massgen/configs/tools/planning/gpt5_mini_case_study_mcp_planning_mode.yaml +2 -2
  45. massgen/docker/README.md +83 -0
  46. massgen/filesystem_manager/_code_execution_server.py +22 -7
  47. massgen/filesystem_manager/_docker_manager.py +21 -1
  48. massgen/filesystem_manager/_filesystem_manager.py +8 -0
  49. massgen/filesystem_manager/_workspace_tools_server.py +0 -997
  50. massgen/formatter/_gemini_formatter.py +73 -0
  51. massgen/frontend/coordination_ui.py +175 -257
  52. massgen/frontend/displays/base_display.py +29 -0
  53. massgen/frontend/displays/rich_terminal_display.py +155 -9
  54. massgen/frontend/displays/simple_display.py +21 -0
  55. massgen/frontend/displays/terminal_display.py +22 -2
  56. massgen/logger_config.py +50 -6
  57. massgen/message_templates.py +123 -3
  58. massgen/orchestrator.py +652 -44
  59. massgen/tests/test_code_execution.py +178 -0
  60. massgen/tests/test_intelligent_planning_mode.py +643 -0
  61. massgen/tests/test_orchestration_restart.py +204 -0
  62. massgen/token_manager/token_manager.py +13 -4
  63. massgen/tool/__init__.py +4 -0
  64. massgen/tool/_multimodal_tools/understand_audio.py +193 -0
  65. massgen/tool/_multimodal_tools/understand_file.py +550 -0
  66. massgen/tool/_multimodal_tools/understand_image.py +212 -0
  67. massgen/tool/_multimodal_tools/understand_video.py +313 -0
  68. massgen/tool/docs/multimodal_tools.md +779 -0
  69. massgen/tool/workflow_toolkits/__init__.py +26 -0
  70. massgen/tool/workflow_toolkits/post_evaluation.py +216 -0
  71. massgen/utils.py +1 -0
  72. {massgen-0.1.1.dist-info → massgen-0.1.3.dist-info}/METADATA +57 -52
  73. {massgen-0.1.1.dist-info → massgen-0.1.3.dist-info}/RECORD +77 -49
  74. {massgen-0.1.1.dist-info → massgen-0.1.3.dist-info}/WHEEL +0 -0
  75. {massgen-0.1.1.dist-info → massgen-0.1.3.dist-info}/entry_points.txt +0 -0
  76. {massgen-0.1.1.dist-info → massgen-0.1.3.dist-info}/licenses/LICENSE +0 -0
  77. {massgen-0.1.1.dist-info → massgen-0.1.3.dist-info}/top_level.txt +0 -0
@@ -7,6 +7,7 @@ from typing import Dict, List, Optional
7
7
 
8
8
  from .base import BaseToolkit, ToolType
9
9
  from .new_answer import NewAnswerToolkit
10
+ from .post_evaluation import PostEvaluationToolkit
10
11
  from .vote import VoteToolkit
11
12
 
12
13
  __all__ = [
@@ -14,7 +15,9 @@ __all__ = [
14
15
  "ToolType",
15
16
  "NewAnswerToolkit",
16
17
  "VoteToolkit",
18
+ "PostEvaluationToolkit",
17
19
  "get_workflow_tools",
20
+ "get_post_evaluation_tools",
18
21
  ]
19
22
 
20
23
 
@@ -55,3 +58,26 @@ def get_workflow_tools(
55
58
  tools.extend(vote_toolkit.get_tools(config))
56
59
 
57
60
  return tools
61
+
62
+
63
+ def get_post_evaluation_tools(
64
+ template_overrides: Optional[Dict] = None,
65
+ api_format: str = "chat_completions",
66
+ ) -> List[Dict]:
67
+ """
68
+ Get post-evaluation tool definitions (submit and restart_orchestration).
69
+
70
+ Args:
71
+ template_overrides: Optional template overrides
72
+ api_format: API format to use (chat_completions, claude, response)
73
+
74
+ Returns:
75
+ List of tool definitions [submit, restart_orchestration]
76
+ """
77
+ config = {
78
+ "api_format": api_format,
79
+ "enable_post_evaluation_tools": True,
80
+ }
81
+
82
+ post_eval_toolkit = PostEvaluationToolkit(template_overrides=template_overrides)
83
+ return post_eval_toolkit.get_tools(config)
@@ -0,0 +1,216 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Post-evaluation toolkit for MassGen orchestration restart feature.
4
+
5
+ This toolkit provides tools for post-evaluation phase where the winning agent
6
+ evaluates its own answer and decides whether to submit or restart with improvements.
7
+ """
8
+
9
+ from typing import Any, Dict, List, Optional
10
+
11
+ from .base import BaseToolkit, ToolType
12
+
13
+
14
+ class PostEvaluationToolkit(BaseToolkit):
15
+ """Post-evaluation toolkit for orchestration restart feature."""
16
+
17
+ def __init__(self, template_overrides: Optional[Dict[str, Any]] = None):
18
+ """
19
+ Initialize the PostEvaluation toolkit.
20
+
21
+ Args:
22
+ template_overrides: Optional template overrides for customization
23
+ """
24
+ self._template_overrides = template_overrides or {}
25
+
26
+ @property
27
+ def toolkit_id(self) -> str:
28
+ """Unique identifier for post-evaluation toolkit."""
29
+ return "post_evaluation"
30
+
31
+ @property
32
+ def toolkit_type(self) -> ToolType:
33
+ """Type of this toolkit."""
34
+ return ToolType.WORKFLOW
35
+
36
+ def is_enabled(self, config: Dict[str, Any]) -> bool:
37
+ """
38
+ Check if post-evaluation is enabled in configuration.
39
+
40
+ Args:
41
+ config: Configuration dictionary.
42
+
43
+ Returns:
44
+ True if post-evaluation tools are enabled.
45
+ """
46
+ return config.get("enable_post_evaluation_tools", True)
47
+
48
+ def get_tools(self, config: Dict[str, Any]) -> List[Dict[str, Any]]:
49
+ """
50
+ Get post-evaluation tool definitions based on API format.
51
+
52
+ Args:
53
+ config: Configuration including api_format.
54
+
55
+ Returns:
56
+ List containing submit and restart_orchestration tool definitions.
57
+ """
58
+ api_format = config.get("api_format", "chat_completions")
59
+
60
+ if api_format == "claude":
61
+ # Claude native format
62
+ return self._get_claude_tools()
63
+ elif api_format == "response":
64
+ # Response API format
65
+ return self._get_response_tools()
66
+ else:
67
+ # Default Chat Completions format
68
+ return self._get_chat_completions_tools()
69
+
70
+ def _get_claude_tools(self) -> List[Dict[str, Any]]:
71
+ """Get Claude native format tools."""
72
+ submit_tool = {
73
+ "name": "submit",
74
+ "description": "Confirm that the final answer fully addresses the original task and submit it to the user. Use this when the answer is complete, accurate, and satisfactory.",
75
+ "input_schema": {
76
+ "type": "object",
77
+ "properties": {
78
+ "confirmed": {
79
+ "type": "boolean",
80
+ "description": "Set to true to confirm the answer is satisfactory",
81
+ "enum": [True],
82
+ },
83
+ },
84
+ "required": ["confirmed"],
85
+ },
86
+ }
87
+
88
+ restart_tool = {
89
+ "name": "restart_orchestration",
90
+ "description": "Restart the orchestration process with specific guidance for improvement. Use this when the answer is incomplete, incorrect, or does not fully address the original task.",
91
+ "input_schema": {
92
+ "type": "object",
93
+ "properties": {
94
+ "reason": {
95
+ "type": "string",
96
+ "description": "Clear explanation of why the answer is insufficient (e.g., 'The task required descriptions of two Beatles, but only John Lennon was described')",
97
+ },
98
+ "instructions": {
99
+ "type": "string",
100
+ "description": (
101
+ "Detailed, actionable guidance for agents on the next attempt "
102
+ "(e.g., 'Provide two descriptions (John Lennon AND Paul McCartney). "
103
+ "Each should include: birth year, role in band, notable songs, impact on music. "
104
+ "Use 4-6 sentences per person.')"
105
+ ),
106
+ },
107
+ },
108
+ "required": ["reason", "instructions"],
109
+ },
110
+ }
111
+
112
+ return [submit_tool, restart_tool]
113
+
114
+ def _get_response_tools(self) -> List[Dict[str, Any]]:
115
+ """Get Response API format tools."""
116
+ submit_tool = {
117
+ "type": "function",
118
+ "function": {
119
+ "name": "submit",
120
+ "description": "Confirm that the final answer fully addresses the original task and submit it to the user. Use this when the answer is complete, accurate, and satisfactory.",
121
+ "parameters": {
122
+ "type": "object",
123
+ "properties": {
124
+ "confirmed": {
125
+ "type": "boolean",
126
+ "description": "Set to true to confirm the answer is satisfactory",
127
+ "enum": [True],
128
+ },
129
+ },
130
+ "required": ["confirmed"],
131
+ },
132
+ },
133
+ }
134
+
135
+ restart_tool = {
136
+ "type": "function",
137
+ "function": {
138
+ "name": "restart_orchestration",
139
+ "description": (
140
+ "Restart the orchestration process with specific guidance for improvement. " "Use this when the answer is incomplete, incorrect, or does not fully address the original task."
141
+ ),
142
+ "parameters": {
143
+ "type": "object",
144
+ "properties": {
145
+ "reason": {
146
+ "type": "string",
147
+ "description": "Clear explanation of why the answer is insufficient (e.g., 'The task required descriptions of two Beatles, but only John Lennon was described')",
148
+ },
149
+ "instructions": {
150
+ "type": "string",
151
+ "description": (
152
+ "Detailed, actionable guidance for agents on the next attempt "
153
+ "(e.g., 'Provide two descriptions (John Lennon AND Paul McCartney). "
154
+ "Each should include: birth year, role in band, notable songs, impact on music. "
155
+ "Use 4-6 sentences per person.')"
156
+ ),
157
+ },
158
+ },
159
+ "required": ["reason", "instructions"],
160
+ },
161
+ },
162
+ }
163
+
164
+ return [submit_tool, restart_tool]
165
+
166
+ def _get_chat_completions_tools(self) -> List[Dict[str, Any]]:
167
+ """Get Chat Completions format tools."""
168
+ submit_tool = {
169
+ "type": "function",
170
+ "function": {
171
+ "name": "submit",
172
+ "description": "Confirm that the final answer fully addresses the original task and submit it to the user. Use this when the answer is complete, accurate, and satisfactory.",
173
+ "parameters": {
174
+ "type": "object",
175
+ "properties": {
176
+ "confirmed": {
177
+ "type": "boolean",
178
+ "description": "Set to true to confirm the answer is satisfactory",
179
+ "enum": [True],
180
+ },
181
+ },
182
+ "required": ["confirmed"],
183
+ },
184
+ },
185
+ }
186
+
187
+ restart_tool = {
188
+ "type": "function",
189
+ "function": {
190
+ "name": "restart_orchestration",
191
+ "description": (
192
+ "Restart the orchestration process with specific guidance for improvement. " "Use this when the answer is incomplete, incorrect, or does not fully address the original task."
193
+ ),
194
+ "parameters": {
195
+ "type": "object",
196
+ "properties": {
197
+ "reason": {
198
+ "type": "string",
199
+ "description": "Clear explanation of why the answer is insufficient (e.g., 'The task required descriptions of two Beatles, but only John Lennon was described')",
200
+ },
201
+ "instructions": {
202
+ "type": "string",
203
+ "description": (
204
+ "Detailed, actionable guidance for agents on the next attempt "
205
+ "(e.g., 'Provide two descriptions (John Lennon AND Paul McCartney). "
206
+ "Each should include: birth year, role in band, notable songs, impact on music. "
207
+ "Use 4-6 sentences per person.')"
208
+ ),
209
+ },
210
+ },
211
+ "required": ["reason", "instructions"],
212
+ },
213
+ },
214
+ }
215
+
216
+ return [submit_tool, restart_tool]
massgen/utils.py CHANGED
@@ -31,6 +31,7 @@ class CoordinationStage(Enum):
31
31
  INITIAL_ANSWER = "initial_answer" # initial answer generation
32
32
  ENFORCEMENT = "enforcement"
33
33
  PRESENTATION = "presentation"
34
+ POST_EVALUATION = "post_evaluation" # post-evaluation phase (MCP tools enabled)
34
35
 
35
36
 
36
37
  MODEL_MAPPINGS = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: massgen
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Multi-Agent Scaling System - A powerful framework for collaborative AI
5
5
  Author-email: MassGen Team <contact@massgen.dev>
6
6
  License: Apache-2.0
@@ -49,6 +49,11 @@ Requires-Dist: ag2>=0.9.10
49
49
  Requires-Dist: pyautogen>=0.10.0
50
50
  Requires-Dist: vertexai>=1.71.1
51
51
  Requires-Dist: pytest>=8.4.2
52
+ Requires-Dist: python-docx>=1.2.0
53
+ Requires-Dist: openpyxl>=3.1.5
54
+ Requires-Dist: python-pptx>=1.0.2
55
+ Requires-Dist: opencv-python>=4.12.0.88
56
+ Requires-Dist: pypdf2>=3.0.1
52
57
  Provides-Extra: dev
53
58
  Requires-Dist: pytest>=7.0.0; extra == "dev"
54
59
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
@@ -109,7 +114,7 @@ Dynamic: license-file
109
114
 
110
115
  <p align="center">
111
116
  <a href="https://www.youtube.com/watch?v=Dp2oldJJImw">
112
- <img src="https://raw.githubusercontent.com/Leezekun/MassGen/main/assets/massgen-demo.gif" alt="MassGen case study -- Berkeley Agentic AI Summit Question" width="800">
117
+ <img src="https://raw.githubusercontent.com/Leezekun/MassGen/main/assets/thumbnail.png" alt="MassGen case study -- Berkeley Agentic AI Summit Question" width="800">
113
118
  </a>
114
119
  </p>
115
120
 
@@ -138,7 +143,7 @@ This project started with the "threads of thought" and "iterative refinement" id
138
143
  <details open>
139
144
  <summary><h3>🆕 Latest Features</h3></summary>
140
145
 
141
- - [v0.1.1 Features](#-latest-features-v011)
146
+ - [v0.1.2 Features](#-latest-features-v012)
142
147
  </details>
143
148
 
144
149
  <details open>
@@ -183,15 +188,15 @@ This project started with the "threads of thought" and "iterative refinement" id
183
188
  <summary><h3>🗺️ Roadmap</h3></summary>
184
189
 
185
190
  - Recent Achievements
186
- - [v0.1.1](#recent-achievements-v011)
187
- - [v0.0.3 - v0.1.0](#previous-achievements-v003---v010)
191
+ - [v0.1.2](#recent-achievements-v012)
192
+ - [v0.0.3 - v0.1.1](#previous-achievements-v003---v011)
188
193
  - [Key Future Enhancements](#key-future-enhancements)
189
194
  - Bug Fixes & Backend Improvements
190
195
  - Advanced Agent Collaboration
191
196
  - Expanded Model, Tool & Agent Integrations
192
197
  - Improved Performance & Scalability
193
198
  - Enhanced Developer Experience
194
- - [v0.1.2 Roadmap](#v012-roadmap)
199
+ - [v0.1.3 Roadmap](#v013-roadmap)
195
200
  </details>
196
201
 
197
202
  <details open>
@@ -216,36 +221,36 @@ This project started with the "threads of thought" and "iterative refinement" id
216
221
 
217
222
  ---
218
223
 
219
- ## 🆕 Latest Features (v0.1.1)
224
+ ## 🆕 Latest Features (v0.1.2)
220
225
 
221
- **🎉 Released: October 20, 2025**
226
+ **🎉 Released: October 22, 2025**
222
227
 
223
- **What's New in v0.1.1:**
224
- - **🔧 Custom Tools System** - Register your own Python functions as tools
225
- - **⚖️ Voting Sensitivity Controls** - Three-tier quality control for multi-agent consensus
226
- - **🎯 Configuration Builder** - Interactive wizard to create custom configs
227
- - **📊 Backend Capabilities Registry** - Centralized feature support tracking
228
- - **🔬 Self-Evolution Capability** - Agents autonomously analyze GitHub issues and market trends for feature prioritization
228
+ **What's New in v0.1.2:**
229
+ - **🧠 Intelligent Planning Mode** - Automatic question analysis for safe MCP tool blocking
230
+ - **🎭 Claude 4.5 Haiku Support** - Access to latest Claude Haiku model
231
+ - **🔍 Grok Web Search Fix** - Improved web search functionality in Grok backend
229
232
 
230
- [![MassGen v0.1.1 Custom Tools & Voting Demo](https://img.youtube.com/vi/eXK_oF177zY/0.jpg)](https://youtu.be/eXK_oF177zY)
233
+ **Key Improvements:**
234
+ - Automatically determines if questions require irreversible operations
235
+ - Read-only MCP operations allowed during coordination for better decisions
236
+ - Write operations automatically blocked for safety
237
+ - Zero configuration required - works transparently
238
+ - Enhanced model support with latest Claude 4.5 Haiku
231
239
 
232
- *Watch the v0.1.1 demo showcasing custom Python tool registration and three-tier voting sensitivity controls for multi-agent quality assurance*
233
-
234
- **Get Started with v0.1.1:**
240
+ **Get Started with v0.1.2:**
235
241
  ```bash
236
242
  # Install or upgrade from PyPI
237
243
  pip install --upgrade massgen
238
244
 
239
- # Create a configuration with the interactive builder
240
- massgen --setup
241
-
242
- # Try custom tools with agents
243
- massgen --config @examples/tools/custom_tools/claude_custom_tool_example \
244
- "What's the sum of 123 and 456?"
245
+ # Try intelligent planning mode with MCP tools
246
+ # (Please read the YAML file for required API keys: DISCORD_TOKEN, OPENAI_API_KEY, etc.)
247
+ massgen --config @examples/tools/planning/five_agents_discord_mcp_planning_mode \
248
+ "Check recent messages in our development channel, summarize the discussion, and post a helpful response about the current topic."
245
249
 
246
- # Use voting sensitivity controls for quality assurance
247
- massgen --config @examples/voting/gemini_gpt_voting_sensitivity \
248
- "What are the pros and cons of renewable energy?"
250
+ # Use latest Claude 4.5 Haiku model
251
+ # (Requires ANTHROPIC_API_KEY in .env)
252
+ massgen --model claude-haiku-4-5-20251001 \
253
+ "Summarize the latest AI developments"
249
254
  ```
250
255
 
251
256
  → [See full release history and examples](massgen/configs/README.md#release-history--examples)
@@ -1082,31 +1087,33 @@ MassGen is currently in its foundational stage, with a focus on parallel, asynch
1082
1087
 
1083
1088
  ⚠️ **Early Stage Notice:** As MassGen is in active development, please expect upcoming breaking architecture changes as we continue to refine and improve the system.
1084
1089
 
1085
- ### Recent Achievements (v0.1.1)
1090
+ ### Recent Achievements (v0.1.2)
1091
+
1092
+ **🎉 Released: October 22, 2025**
1093
+
1094
+ #### Intelligent Planning Mode
1095
+ - **Automatic Question Analysis**: New `_analyze_question_irreversibility()` method in orchestrator determines if MCP operations are reversible
1096
+ - **Selective Tool Blocking**: Granular control with `set_planning_mode_blocked_tools()`, `get_planning_mode_blocked_tools()`, and `is_mcp_tool_blocked()` methods
1097
+ - **Dynamic Behavior**: Read-only MCP operations allowed during coordination, write operations blocked for safety
1098
+ - **Zero Configuration**: Works transparently without setup
1099
+ - **Multi-Workspace Support**: Planning mode works across different workspaces without conflicts
1100
+ - **Test Coverage**: Comprehensive tests in `massgen/tests/test_intelligent_planning_mode.py`
1101
+ - **Documentation**: Complete guide in `docs/case_studies/INTELLIGENT_PLANNING_MODE.md`
1086
1102
 
1087
- **🎉 Released: October 20, 2025**
1103
+ #### Model Support & Improvements
1104
+ - **Claude 4.5 Haiku**: Added latest Claude Haiku model `claude-haiku-4-5-20251001`
1105
+ - **Model Priority Updates**: Reorganized Claude model list with updated defaults (`claude-sonnet-4-5-20250929`)
1106
+ - **Grok Web Search Fix**: Resolved `extra_body` parameter handling for Grok's Live Search API with new `_add_grok_search_params()` method
1088
1107
 
1089
- #### Custom Tools System
1090
- - **User-Defined Functions**: Register Python functions as tools using `ToolManager` class in `massgen/tool/_manager.py`
1091
- - **Cross-Backend Support**: Works alongside MCP servers across all backends (Claude, Gemini, OpenAI, Chat Completions, Claude Code)
1092
- - **Tool Categories**: Builtin, MCP, and custom tools with automatic discovery and conflict resolution
1093
- - **40+ Examples**: Ready-to-use configurations in `massgen/configs/tools/custom_tools/`
1108
+ #### Configuration Updates
1109
+ - **Planning Mode Configs**: Updated 5 configurations in `massgen/configs/tools/planning/` with selective blocking examples
1110
+ - **Default Configuration**: Updated `three_agents_default.yaml` with Grok-4-fast model
1094
1111
 
1095
- #### Voting Sensitivity & Answer Quality Controls
1096
- - **Three-Tier System**: "lenient", "balanced", "strict" voting modes
1097
- - **Answer Novelty Detection**: Prevents duplicate submissions with configurable similarity thresholds
1098
- - **Quality Assurance**: Configurable `max_new_answers_per_agent` and token-based overlap detection
1099
- - **Configuration**: `massgen/configs/voting/gemini_gpt_voting_sensitivity.yaml`
1112
+ ### Previous Achievements (v0.0.3 - v0.1.1)
1100
1113
 
1101
- #### Backend & Documentation Enhancements
1102
- - **Gemini Refactoring**: Extracted MCP management (`gemini_mcp_manager.py`), tracking (`gemini_trackers.py`), and utilities
1103
- - **Capabilities Registry**: New `massgen/backend/capabilities.py` documenting feature support across backends
1104
- - **Documentation Updates**: Enhanced custom tools guide, reorganized case studies, updated configuration schema
1105
- - **Case Studies**:
1106
- - `docs/case_studies/github-issue-market-analysis.md` - Custom tools with GitHub issue market analysis (v0.1.1)
1107
- - `docs/case_studies/universal-code-execution-mcp.md` - MCP code execution across backends (v0.0.31)
1114
+ **Custom Tools System (v0.1.1)**: User-defined Python function registration using `ToolManager` class in `massgen/tool/_manager.py`, cross-backend support alongside MCP servers, builtin/MCP/custom tool categories with automatic discovery, 40+ examples in `massgen/configs/tools/custom_tools/`, voting sensitivity controls with three-tier quality system (lenient/balanced/strict), answer novelty detection preventing duplicates
1108
1115
 
1109
- ### Previous Achievements (v0.0.3 - v0.1.0)
1116
+ **Backend Enhancements (v0.1.1)**: Gemini architecture refactoring with extracted MCP management (`gemini_mcp_manager.py`), tracking (`gemini_trackers.py`), and utilities, new capabilities registry in `massgen/backend/capabilities.py` documenting feature support across backends
1110
1117
 
1111
1118
  ✅ **PyPI Package Release (v0.1.0)**: Official distribution via `pip install massgen` with simplified installation, global `massgen` command accessible from any directory, comprehensive Sphinx documentation at [docs.massgen.ai](https://docs.massgen.ai/), interactive setup wizard with use case presets and API key management, enhanced CLI with `@examples/` prefix for built-in configurations
1112
1119
 
@@ -1206,21 +1213,19 @@ MassGen is currently in its foundational stage, with a focus on parallel, asynch
1206
1213
 
1207
1214
  We welcome community contributions to achieve these goals.
1208
1215
 
1209
- ### v0.1.2 Roadmap
1216
+ ### v0.1.3 Roadmap
1210
1217
 
1211
- Version 0.1.2 focuses on enterprise collaboration and intelligent agent workflows:
1218
+ Version 0.1.3 focuses on general interoperability and enterprise collaboration:
1212
1219
 
1213
1220
  #### Required Features
1214
1221
  - **General Interoperability**: Enable MassGen to orchestrate agents from multiple external frameworks with unified interface
1215
1222
  - **Final Agent Submit/Restart Tools**: Enable final agent to decide whether to submit or restart orchestration
1216
- - **Memory Module - Phase 1**: Long-term memory implementation using mem0 for reasoning and document understanding
1217
1223
 
1218
1224
  Key technical approach:
1219
1225
  - **Framework Integration**: Multi-agent coordination supporting external agent frameworks with specialized agent roles (researcher, analyst, critic, synthesizer)
1220
1226
  - **Submit/Restart**: Multi-step task verification with access to previous agents' responses and workspaces
1221
- - **Memory Module**: Session-based memory management with persistent context across conversations
1222
1227
 
1223
- For detailed milestones and technical specifications, see the [full v0.1.2 roadmap](ROADMAP.md).
1228
+ For detailed milestones and technical specifications, see the [full v0.1.3 roadmap](ROADMAP.md).
1224
1229
 
1225
1230
  ---
1226
1231