massgen 0.1.4__tar.gz → 0.1.6__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.

Potentially problematic release.


This version of massgen might be problematic. Click here for more details.

Files changed (457) hide show
  1. {massgen-0.1.4 → massgen-0.1.6}/CHANGELOG.md +126 -13
  2. {massgen-0.1.4 → massgen-0.1.6}/CONTRIBUTING.md +97 -13
  3. {massgen-0.1.4 → massgen-0.1.6}/PKG-INFO +138 -77
  4. {massgen-0.1.4 → massgen-0.1.6}/README.md +116 -64
  5. {massgen-0.1.4 → massgen-0.1.6}/README_PYPI.md +131 -76
  6. {massgen-0.1.4 → massgen-0.1.6}/massgen/__init__.py +1 -1
  7. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/base_with_custom_tool_and_mcp.py +453 -23
  8. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/capabilities.py +39 -0
  9. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/chat_completions.py +111 -197
  10. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/claude.py +210 -181
  11. massgen-0.1.6/massgen/backend/gemini.py +1450 -0
  12. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/grok.py +3 -2
  13. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/response.py +160 -220
  14. massgen-0.1.6/massgen/chat_agent.py +784 -0
  15. {massgen-0.1.4 → massgen-0.1.6}/massgen/cli.py +399 -25
  16. {massgen-0.1.4 → massgen-0.1.6}/massgen/config_builder.py +20 -54
  17. massgen-0.1.6/massgen/config_validator.py +931 -0
  18. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/README.md +95 -10
  19. massgen-0.1.6/massgen/configs/memory/gpt5mini_gemini_baseline_research_to_implementation.yaml +94 -0
  20. massgen-0.1.6/massgen/configs/memory/gpt5mini_gemini_context_window_management.yaml +187 -0
  21. massgen-0.1.6/massgen/configs/memory/gpt5mini_gemini_research_to_implementation.yaml +127 -0
  22. massgen-0.1.6/massgen/configs/memory/gpt5mini_high_reasoning_gemini.yaml +107 -0
  23. massgen-0.1.6/massgen/configs/memory/single_agent_compression_test.yaml +64 -0
  24. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_code_custom_tool_with_mcp_example.yaml +1 -0
  25. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_custom_tool_example_no_path.yaml +1 -1
  26. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_custom_tool_with_mcp_example.yaml +1 -0
  27. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/computer_use_browser_example.yaml +1 -1
  28. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/computer_use_docker_example.yaml +1 -1
  29. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gemini_custom_tool_with_mcp_example.yaml +1 -0
  30. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt5_nano_custom_tool_with_mcp_example.yaml +1 -0
  31. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt_oss_custom_tool_with_mcp_example.yaml +1 -0
  32. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/grok3_mini_custom_tool_with_mcp_example.yaml +1 -0
  33. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/ag2_and_langgraph_lesson_planner.yaml +65 -0
  34. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/ag2_and_openai_assistant_lesson_planner.yaml +65 -0
  35. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/ag2_lesson_planner_example.yaml +48 -0
  36. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/agentscope_lesson_planner_example.yaml +48 -0
  37. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/langgraph_lesson_planner_example.yaml +49 -0
  38. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/openai_assistant_lesson_planner_example.yaml +50 -0
  39. massgen-0.1.6/massgen/configs/tools/custom_tools/interop/smolagent_lesson_planner_example.yaml +49 -0
  40. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_api_custom_tool_with_mcp_example.yaml +1 -0
  41. massgen-0.1.6/massgen/configs/tools/custom_tools/two_models_with_tools_example.yaml +44 -0
  42. {massgen-0.1.4 → massgen-0.1.6}/massgen/formatter/_gemini_formatter.py +61 -15
  43. massgen-0.1.6/massgen/memory/README.md +277 -0
  44. massgen-0.1.6/massgen/memory/__init__.py +26 -0
  45. massgen-0.1.6/massgen/memory/_base.py +193 -0
  46. massgen-0.1.6/massgen/memory/_compression.py +237 -0
  47. massgen-0.1.6/massgen/memory/_context_monitor.py +211 -0
  48. massgen-0.1.6/massgen/memory/_conversation.py +255 -0
  49. massgen-0.1.6/massgen/memory/_fact_extraction_prompts.py +333 -0
  50. massgen-0.1.6/massgen/memory/_mem0_adapters.py +257 -0
  51. massgen-0.1.6/massgen/memory/_persistent.py +687 -0
  52. massgen-0.1.6/massgen/memory/docker-compose.qdrant.yml +36 -0
  53. massgen-0.1.6/massgen/memory/docs/DESIGN.md +388 -0
  54. massgen-0.1.6/massgen/memory/docs/QUICKSTART.md +409 -0
  55. massgen-0.1.6/massgen/memory/docs/SUMMARY.md +319 -0
  56. massgen-0.1.6/massgen/memory/docs/agent_use_memory.md +408 -0
  57. massgen-0.1.6/massgen/memory/docs/orchestrator_use_memory.md +586 -0
  58. massgen-0.1.6/massgen/memory/examples.py +237 -0
  59. {massgen-0.1.4 → massgen-0.1.6}/massgen/orchestrator.py +207 -7
  60. massgen-0.1.6/massgen/tests/memory/test_agent_compression.py +174 -0
  61. massgen-0.1.6/massgen/tests/memory/test_context_window_management.py +286 -0
  62. massgen-0.1.6/massgen/tests/memory/test_force_compression.py +154 -0
  63. massgen-0.1.6/massgen/tests/memory/test_simple_compression.py +147 -0
  64. massgen-0.1.6/massgen/tests/test_ag2_lesson_planner.py +223 -0
  65. massgen-0.1.6/massgen/tests/test_agent_memory.py +534 -0
  66. massgen-0.1.6/massgen/tests/test_config_validator.py +1156 -0
  67. massgen-0.1.6/massgen/tests/test_conversation_memory.py +382 -0
  68. massgen-0.1.6/massgen/tests/test_langgraph_lesson_planner.py +223 -0
  69. massgen-0.1.6/massgen/tests/test_orchestrator_memory.py +620 -0
  70. massgen-0.1.6/massgen/tests/test_persistent_memory.py +435 -0
  71. {massgen-0.1.4 → massgen-0.1.6}/massgen/token_manager/token_manager.py +6 -0
  72. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/__init__.py +2 -9
  73. massgen-0.1.6/massgen/tool/_decorators.py +52 -0
  74. massgen-0.1.6/massgen/tool/_extraframework_agents/ag2_lesson_planner_tool.py +251 -0
  75. massgen-0.1.6/massgen/tool/_extraframework_agents/agentscope_lesson_planner_tool.py +303 -0
  76. massgen-0.1.6/massgen/tool/_extraframework_agents/langgraph_lesson_planner_tool.py +275 -0
  77. massgen-0.1.6/massgen/tool/_extraframework_agents/openai_assistant_lesson_planner_tool.py +247 -0
  78. massgen-0.1.6/massgen/tool/_extraframework_agents/smolagent_lesson_planner_tool.py +180 -0
  79. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_manager.py +102 -16
  80. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_registered_tool.py +3 -0
  81. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_result.py +3 -0
  82. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/PKG-INFO +138 -77
  83. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/SOURCES.txt +47 -2
  84. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/requires.txt +6 -0
  85. {massgen-0.1.4 → massgen-0.1.6}/pyproject.toml +7 -0
  86. massgen-0.1.4/massgen/backend/gemini.py +0 -1994
  87. massgen-0.1.4/massgen/backend/gemini_mcp_manager.py +0 -545
  88. massgen-0.1.4/massgen/backend/gemini_trackers.py +0 -344
  89. massgen-0.1.4/massgen/chat_agent.py +0 -464
  90. {massgen-0.1.4 → massgen-0.1.6}/.env.example +0 -0
  91. {massgen-0.1.4 → massgen-0.1.6}/LICENSE +0 -0
  92. {massgen-0.1.4 → massgen-0.1.6}/MANIFEST.in +0 -0
  93. {massgen-0.1.4 → massgen-0.1.6}/assets/MassGen-v1.gif +0 -0
  94. {massgen-0.1.4 → massgen-0.1.6}/assets/cos.png +0 -0
  95. {massgen-0.1.4 → massgen-0.1.6}/assets/favicon.ico +0 -0
  96. {massgen-0.1.4 → massgen-0.1.6}/assets/logo-dark.png +0 -0
  97. {massgen-0.1.4 → massgen-0.1.6}/assets/logo.png +0 -0
  98. {massgen-0.1.4 → massgen-0.1.6}/assets/massgen-demo-light.gif +0 -0
  99. {massgen-0.1.4 → massgen-0.1.6}/assets/massgen-demo.gif +0 -0
  100. {massgen-0.1.4 → massgen-0.1.6}/assets/release_related_figures/context_path.png +0 -0
  101. {massgen-0.1.4 → massgen-0.1.6}/assets/release_related_figures/copy_file.png +0 -0
  102. {massgen-0.1.4 → massgen-0.1.6}/assets/thumbnail.png +0 -0
  103. {massgen-0.1.4 → massgen-0.1.6}/assets/thumbnail_old.png +0 -0
  104. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/__init__.py +0 -0
  105. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/ag2_adapter.py +0 -0
  106. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/base.py +0 -0
  107. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/tests/__init__.py +0 -0
  108. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/tests/test_ag2_adapter.py +0 -0
  109. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/tests/test_agent_adapter.py +0 -0
  110. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/utils/__init__.py +0 -0
  111. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/utils/ag2_utils.py +0 -0
  112. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/utils/tests/__init__.py +0 -0
  113. {massgen-0.1.4 → massgen-0.1.6}/massgen/adapters/utils/tests/test_ag2_utils.py +0 -0
  114. {massgen-0.1.4 → massgen-0.1.6}/massgen/agent_config.py +0 -0
  115. {massgen-0.1.4 → massgen-0.1.6}/massgen/api_params_handler/__init__.py +0 -0
  116. {massgen-0.1.4 → massgen-0.1.6}/massgen/api_params_handler/_api_params_handler_base.py +0 -0
  117. {massgen-0.1.4 → massgen-0.1.6}/massgen/api_params_handler/_chat_completions_api_params_handler.py +0 -0
  118. {massgen-0.1.4 → massgen-0.1.6}/massgen/api_params_handler/_claude_api_params_handler.py +0 -0
  119. {massgen-0.1.4 → massgen-0.1.6}/massgen/api_params_handler/_gemini_api_params_handler.py +0 -0
  120. {massgen-0.1.4 → massgen-0.1.6}/massgen/api_params_handler/_response_api_params_handler.py +0 -0
  121. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/__init__.py +0 -0
  122. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/azure_openai.py +0 -0
  123. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/base.py +0 -0
  124. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/claude_code.py +0 -0
  125. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/cli_base.py +0 -0
  126. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/BACKEND_ARCHITECTURE.md +0 -0
  127. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/CLAUDE_API_RESEARCH.md +0 -0
  128. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/Function calling openai responses.md +0 -0
  129. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/GEMINI_API_DOCUMENTATION.md +0 -0
  130. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/Gemini MCP Integration Analysis.md +0 -0
  131. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/MCP_IMPLEMENTATION_CLAUDE_BACKEND.md +0 -0
  132. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/MCP_INTEGRATION_RESPONSE_BACKEND.md +0 -0
  133. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/OPENAI_GPT5_MODELS.md +0 -0
  134. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/OPENAI_RESPONSE_API_TOOL_CALLS.md +0 -0
  135. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/OPENAI_response_streaming.md +0 -0
  136. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/inference_backend.md +0 -0
  137. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/docs/permissions_and_context_files.md +0 -0
  138. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/external.py +0 -0
  139. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/gemini_utils.py +0 -0
  140. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/inference.py +0 -0
  141. {massgen-0.1.4 → massgen-0.1.6}/massgen/backend/lmstudio.py +0 -0
  142. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/BACKEND_CONFIGURATION.md +0 -0
  143. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_case_study.yaml +0 -0
  144. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_coder.yaml +0 -0
  145. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_coder_case_study.yaml +0 -0
  146. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_gemini.yaml +0 -0
  147. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_groupchat.yaml +0 -0
  148. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_groupchat_gpt.yaml +0 -0
  149. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/ag2/ag2_single_agent.yaml +0 -0
  150. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/fast_timeout_example.yaml +0 -0
  151. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/gemini_4o_claude.yaml +0 -0
  152. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/gemini_gpt5nano_claude.yaml +0 -0
  153. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/geminicode_4o_claude.yaml +0 -0
  154. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/geminicode_gpt5nano_claude.yaml +0 -0
  155. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/glm_gemini_claude.yaml +0 -0
  156. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/gpt4o_audio_generation.yaml +0 -0
  157. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/gpt4o_image_generation.yaml +0 -0
  158. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/gpt5nano_glm_qwen.yaml +0 -0
  159. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/gpt5nano_image_understanding.yaml +0 -0
  160. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/three_agents_default.yaml +0 -0
  161. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/three_agents_opensource.yaml +0 -0
  162. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/three_agents_vllm.yaml +0 -0
  163. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/two_agents_gemini.yaml +0 -0
  164. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/two_agents_gpt5.yaml +0 -0
  165. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/two_agents_opensource_lmstudio.yaml +0 -0
  166. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/multi/two_qwen_vllm_sglang.yaml +0 -0
  167. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_agent.yaml +0 -0
  168. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_flash2.5.yaml +0 -0
  169. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gemini2.5pro.yaml +0 -0
  170. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gpt4o_audio_generation.yaml +0 -0
  171. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gpt4o_image_generation.yaml +0 -0
  172. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gpt4o_video_generation.yaml +0 -0
  173. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gpt5nano.yaml +0 -0
  174. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gpt5nano_file_search.yaml +0 -0
  175. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gpt5nano_image_understanding.yaml +0 -0
  176. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_gptoss120b.yaml +0 -0
  177. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_openrouter_audio_understanding.yaml +0 -0
  178. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/basic/single/single_qwen_video_understanding.yaml +0 -0
  179. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/code_execution/command_filtering_blacklist.yaml +0 -0
  180. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/code_execution/command_filtering_whitelist.yaml +0 -0
  181. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/code_execution/docker_verification.yaml +0 -0
  182. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/restart_test_controlled.yaml +0 -0
  183. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/restart_test_controlled_filesystem.yaml +0 -0
  184. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/skip_coordination_test.yaml +0 -0
  185. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/debug/test_sdk_migration.yaml +0 -0
  186. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/docs/DISCORD_MCP_SETUP.md +0 -0
  187. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/docs/TWITTER_MCP_ENESCINAR_SETUP.md +0 -0
  188. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/azure/azure_openai_multi.yaml +0 -0
  189. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/azure/azure_openai_single.yaml +0 -0
  190. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/claude/claude.yaml +0 -0
  191. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/gemini/gemini_gpt5nano.yaml +0 -0
  192. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/local/lmstudio.yaml +0 -0
  193. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/openai/gpt5.yaml +0 -0
  194. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/openai/gpt5_nano.yaml +0 -0
  195. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/others/grok_single_agent.yaml +0 -0
  196. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/others/zai_coding_team.yaml +0 -0
  197. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/providers/others/zai_glm45.yaml +0 -0
  198. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/teams/creative/creative_team.yaml +0 -0
  199. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/teams/creative/travel_planning.yaml +0 -0
  200. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/teams/research/news_analysis.yaml +0 -0
  201. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/teams/research/research_team.yaml +0 -0
  202. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/teams/research/technical_analysis.yaml +0 -0
  203. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/basic_command_execution.yaml +0 -0
  204. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/code_execution_use_case_simple.yaml +0 -0
  205. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/docker_claude_code.yaml +0 -0
  206. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/docker_multi_agent.yaml +0 -0
  207. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/docker_simple.yaml +0 -0
  208. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/docker_with_resource_limits.yaml +0 -0
  209. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/docker_with_sudo.yaml +0 -0
  210. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/code-execution/multi_agent_playwright_automation.yaml +0 -0
  211. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_code_custom_tool_example.yaml +0 -0
  212. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_code_custom_tool_example_no_path.yaml +0 -0
  213. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_code_custom_tool_with_wrong_mcp_example.yaml +0 -0
  214. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_code_wrong_custom_tool_with_mcp_example.yaml +0 -0
  215. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_custom_tool_example.yaml +0 -0
  216. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_custom_tool_with_wrong_mcp_example.yaml +0 -0
  217. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/claude_wrong_custom_tool_with_mcp_example.yaml +0 -0
  218. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/computer_use_example.yaml +0 -0
  219. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/crawl4ai_example.yaml +0 -0
  220. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gemini_custom_tool_example.yaml +0 -0
  221. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gemini_custom_tool_example_no_path.yaml +0 -0
  222. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gemini_custom_tool_with_wrong_mcp_example.yaml +0 -0
  223. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gemini_wrong_custom_tool_with_mcp_example.yaml +0 -0
  224. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/github_issue_market_analysis.yaml +0 -0
  225. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt5_nano_custom_tool_example.yaml +0 -0
  226. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt5_nano_custom_tool_example_no_path.yaml +0 -0
  227. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt5_nano_custom_tool_with_wrong_mcp_example.yaml +0 -0
  228. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt5_nano_wrong_custom_tool_with_mcp_example.yaml +0 -0
  229. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt_oss_custom_tool_example.yaml +0 -0
  230. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt_oss_custom_tool_example_no_path.yaml +0 -0
  231. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt_oss_custom_tool_with_wrong_mcp_example.yaml +0 -0
  232. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/gpt_oss_wrong_custom_tool_with_mcp_example.yaml +0 -0
  233. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/grok3_mini_custom_tool_example.yaml +0 -0
  234. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/grok3_mini_custom_tool_example_no_path.yaml +0 -0
  235. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/grok3_mini_custom_tool_with_wrong_mcp_example.yaml +0 -0
  236. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/grok3_mini_wrong_custom_tool_with_mcp_example.yaml +0 -0
  237. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_file_generation_multi.yaml +0 -0
  238. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_file_generation_single.yaml +0 -0
  239. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_image_generation_multi.yaml +0 -0
  240. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_image_generation_single.yaml +0 -0
  241. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_speech_generation_multi.yaml +0 -0
  242. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_speech_generation_single.yaml +0 -0
  243. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_video_generation_multi.yaml +0 -0
  244. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/text_to_video_generation_single.yaml +0 -0
  245. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/understand_audio.yaml +0 -0
  246. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/understand_file.yaml +0 -0
  247. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/understand_image.yaml +0 -0
  248. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/understand_video.yaml +0 -0
  249. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/multimodal_tools/youtube_video_analysis.yaml +0 -0
  250. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_api_custom_tool_example.yaml +0 -0
  251. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_api_custom_tool_example_no_path.yaml +0 -0
  252. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_api_custom_tool_with_wrong_mcp_example.yaml +0 -0
  253. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_api_wrong_custom_tool_with_mcp_example.yaml +0 -0
  254. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_local_custom_tool_example.yaml +0 -0
  255. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_local_custom_tool_example_no_path.yaml +0 -0
  256. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_local_custom_tool_with_mcp_example.yaml +0 -0
  257. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_local_custom_tool_with_wrong_mcp_example.yaml +0 -0
  258. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/custom_tools/qwen_local_wrong_custom_tool_with_mcp_example.yaml +0 -0
  259. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/cc_gpt5_gemini_filesystem.yaml +0 -0
  260. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/claude_code_context_sharing.yaml +0 -0
  261. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/claude_code_flash2.5.yaml +0 -0
  262. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/claude_code_flash2.5_gptoss.yaml +0 -0
  263. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/claude_code_gpt5nano.yaml +0 -0
  264. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/claude_code_single.yaml +0 -0
  265. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/fs_permissions_test.yaml +0 -0
  266. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/gemini_gemini_workspace_cleanup.yaml +0 -0
  267. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/gemini_gpt5_filesystem_casestudy.yaml +0 -0
  268. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/gemini_gpt5nano_file_context_path.yaml +0 -0
  269. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/gemini_gpt5nano_protected_paths.yaml +0 -0
  270. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/gpt5mini_cc_fs_context_path.yaml +0 -0
  271. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/grok4_gpt5_gemini_filesystem.yaml +0 -0
  272. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/multiturn/grok4_gpt5_claude_code_filesystem_multiturn.yaml +0 -0
  273. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/multiturn/grok4_gpt5_gemini_filesystem_multiturn.yaml +0 -0
  274. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/multiturn/two_claude_code_filesystem_multiturn.yaml +0 -0
  275. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/filesystem/multiturn/two_gemini_flash_filesystem_multiturn.yaml +0 -0
  276. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/claude_code_discord_mcp_example.yaml +0 -0
  277. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/claude_code_simple_mcp.yaml +0 -0
  278. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/claude_code_twitter_mcp_example.yaml +0 -0
  279. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/claude_mcp_example.yaml +0 -0
  280. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/claude_mcp_test.yaml +0 -0
  281. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/five_agents_travel_mcp_test.yaml +0 -0
  282. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/five_agents_weather_mcp_test.yaml +0 -0
  283. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_mcp_example.yaml +0 -0
  284. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_mcp_filesystem_test.yaml +0 -0
  285. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_mcp_filesystem_test_sharing.yaml +0 -0
  286. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_mcp_filesystem_test_single_agent.yaml +0 -0
  287. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_mcp_filesystem_test_with_claude_code.yaml +0 -0
  288. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_mcp_test.yaml +0 -0
  289. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gemini_notion_mcp.yaml +0 -0
  290. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gpt5_nano_mcp_example.yaml +0 -0
  291. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gpt5_nano_mcp_test.yaml +0 -0
  292. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gpt5mini_claude_code_discord_mcp_example.yaml +0 -0
  293. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gpt_oss_mcp_example.yaml +0 -0
  294. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/gpt_oss_mcp_test.yaml +0 -0
  295. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/grok3_mini_mcp_example.yaml +0 -0
  296. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/grok3_mini_mcp_test.yaml +0 -0
  297. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/multimcp_gemini.yaml +0 -0
  298. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/qwen_api_mcp_example.yaml +0 -0
  299. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/qwen_api_mcp_test.yaml +0 -0
  300. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/qwen_local_mcp_example.yaml +0 -0
  301. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/mcp/qwen_local_mcp_test.yaml +0 -0
  302. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/planning/five_agents_discord_mcp_planning_mode.yaml +0 -0
  303. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/planning/five_agents_filesystem_mcp_planning_mode.yaml +0 -0
  304. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/planning/five_agents_notion_mcp_planning_mode.yaml +0 -0
  305. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/planning/five_agents_twitter_mcp_planning_mode.yaml +0 -0
  306. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/planning/gpt5_mini_case_study_mcp_planning_mode.yaml +0 -0
  307. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/claude_streamable_http_test.yaml +0 -0
  308. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/gemini_streamable_http_test.yaml +0 -0
  309. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/gpt5_mini_streamable_http_test.yaml +0 -0
  310. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/gpt_oss_streamable_http_test.yaml +0 -0
  311. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/grok3_mini_streamable_http_test.yaml +0 -0
  312. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/qwen_api_streamable_http_test.yaml +0 -0
  313. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/tools/web-search/qwen_local_streamable_http_test.yaml +0 -0
  314. {massgen-0.1.4 → massgen-0.1.6}/massgen/configs/voting/gemini_gpt_voting_sensitivity.yaml +0 -0
  315. {massgen-0.1.4 → massgen-0.1.6}/massgen/coordination_tracker.py +0 -0
  316. {massgen-0.1.4 → massgen-0.1.6}/massgen/docker/README.md +0 -0
  317. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/__init__.py +0 -0
  318. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_base.py +0 -0
  319. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_code_execution_server.py +0 -0
  320. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_docker_manager.py +0 -0
  321. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_file_operation_tracker.py +0 -0
  322. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_filesystem_manager.py +0 -0
  323. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_path_permission_manager.py +0 -0
  324. {massgen-0.1.4 → massgen-0.1.6}/massgen/filesystem_manager/_workspace_tools_server.py +0 -0
  325. {massgen-0.1.4 → massgen-0.1.6}/massgen/formatter/__init__.py +0 -0
  326. {massgen-0.1.4 → massgen-0.1.6}/massgen/formatter/_chat_completions_formatter.py +0 -0
  327. {massgen-0.1.4 → massgen-0.1.6}/massgen/formatter/_claude_formatter.py +0 -0
  328. {massgen-0.1.4 → massgen-0.1.6}/massgen/formatter/_formatter_base.py +0 -0
  329. {massgen-0.1.4 → massgen-0.1.6}/massgen/formatter/_response_formatter.py +0 -0
  330. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/__init__.py +0 -0
  331. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/coordination_ui.py +0 -0
  332. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/displays/__init__.py +0 -0
  333. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/displays/base_display.py +0 -0
  334. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/displays/create_coordination_table.py +0 -0
  335. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/displays/rich_terminal_display.py +0 -0
  336. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/displays/simple_display.py +0 -0
  337. {massgen-0.1.4 → massgen-0.1.6}/massgen/frontend/displays/terminal_display.py +0 -0
  338. {massgen-0.1.4 → massgen-0.1.6}/massgen/logger_config.py +0 -0
  339. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/README.md +0 -0
  340. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/__init__.py +0 -0
  341. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/backend_utils.py +0 -0
  342. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/circuit_breaker.py +0 -0
  343. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/client.py +0 -0
  344. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/config_validator.py +0 -0
  345. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/docs/circuit_breaker.md +0 -0
  346. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/docs/client.md +0 -0
  347. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/docs/config_validator.md +0 -0
  348. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/docs/exceptions.md +0 -0
  349. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/docs/security.md +0 -0
  350. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/exceptions.py +0 -0
  351. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/hooks.py +0 -0
  352. {massgen-0.1.4 → massgen-0.1.6}/massgen/mcp_tools/security.py +0 -0
  353. {massgen-0.1.4 → massgen-0.1.6}/massgen/message_templates.py +0 -0
  354. {massgen-0.1.4 → massgen-0.1.6}/massgen/stream_chunk/__init__.py +0 -0
  355. {massgen-0.1.4 → massgen-0.1.6}/massgen/stream_chunk/base.py +0 -0
  356. {massgen-0.1.4 → massgen-0.1.6}/massgen/stream_chunk/multimodal.py +0 -0
  357. {massgen-0.1.4 → massgen-0.1.6}/massgen/stream_chunk/text.py +0 -0
  358. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/__init__.py +0 -0
  359. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/custom_tools_example.py +0 -0
  360. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/mcp_test_server.py +0 -0
  361. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/multi_turn_conversation_design.md +0 -0
  362. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/multiturn_llm_input_analysis.md +0 -0
  363. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_azure_openai_backend.py +0 -0
  364. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_backend_capabilities.py +0 -0
  365. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_backend_event_loop_all.py +0 -0
  366. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_binary_file_blocking.py +0 -0
  367. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_case_studies.md +0 -0
  368. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_chat_completions_refactor.py +0 -0
  369. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_claude_backend.py +0 -0
  370. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_claude_code.py +0 -0
  371. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_claude_code_context_sharing.py +0 -0
  372. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_claude_code_orchestrator.py +0 -0
  373. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_cli_backends.py +0 -0
  374. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_code_execution.py +0 -0
  375. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_config_builder.py +0 -0
  376. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_custom_tools.py +0 -0
  377. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_external_agent_backend.py +0 -0
  378. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_final_presentation_fallback.py +0 -0
  379. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_gemini_planning_mode.py +0 -0
  380. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_grok_backend.py +0 -0
  381. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_http_mcp_server.py +0 -0
  382. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_integration_simple.py +0 -0
  383. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_intelligent_planning_mode.py +0 -0
  384. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_mcp_blocking.py +0 -0
  385. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_message_context_building.py +0 -0
  386. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_multimodal_size_limits.py +0 -0
  387. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_orchestration_restart.py +0 -0
  388. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_orchestrator_final_presentation.py +0 -0
  389. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_path_permission_manager.py +0 -0
  390. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_rich_terminal_display.py +0 -0
  391. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_timeout.py +0 -0
  392. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_tools.py +0 -0
  393. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_v3_3agents.py +0 -0
  394. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_v3_simple.py +0 -0
  395. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_v3_three_agents.py +0 -0
  396. {massgen-0.1.4 → massgen-0.1.6}/massgen/tests/test_v3_two_agents.py +0 -0
  397. {massgen-0.1.4 → massgen-0.1.6}/massgen/token_manager/__init__.py +0 -0
  398. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/README.md +0 -0
  399. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_async_helpers.py +0 -0
  400. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_basic/__init__.py +0 -0
  401. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_basic/_two_num_tool.py +0 -0
  402. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_code_executors/__init__.py +0 -0
  403. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_code_executors/_python_executor.py +0 -0
  404. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_code_executors/_shell_executor.py +0 -0
  405. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_exceptions.py +0 -0
  406. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_file_handlers/__init__.py +0 -0
  407. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_file_handlers/_file_operations.py +0 -0
  408. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/image_to_image_generation.py +0 -0
  409. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/text_to_file_generation.py +0 -0
  410. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/text_to_image_generation.py +0 -0
  411. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/text_to_speech_continue_generation.py +0 -0
  412. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/text_to_speech_transcription_generation.py +0 -0
  413. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/text_to_video_generation.py +0 -0
  414. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/understand_audio.py +0 -0
  415. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/understand_file.py +0 -0
  416. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/understand_image.py +0 -0
  417. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_multimodal_tools/understand_video.py +0 -0
  418. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_self_evolution/_github_issue_analyzer.py +0 -0
  419. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/_web_tools/crawl4ai_tool.py +0 -0
  420. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/docs/builtin_tools.md +0 -0
  421. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/docs/exceptions.md +0 -0
  422. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/docs/execution_results.md +0 -0
  423. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/docs/manager.md +0 -0
  424. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/docs/multimodal_tools.md +0 -0
  425. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/docs/workflow_toolkits.md +0 -0
  426. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/workflow_toolkits/__init__.py +0 -0
  427. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/workflow_toolkits/base.py +0 -0
  428. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/workflow_toolkits/new_answer.py +0 -0
  429. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/workflow_toolkits/post_evaluation.py +0 -0
  430. {massgen-0.1.4 → massgen-0.1.6}/massgen/tool/workflow_toolkits/vote.py +0 -0
  431. {massgen-0.1.4 → massgen-0.1.6}/massgen/utils.py +0 -0
  432. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/README.md +0 -0
  433. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/__init__.py +0 -0
  434. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/agent.py +0 -0
  435. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/agents.py +0 -0
  436. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/backends/gemini.py +0 -0
  437. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/backends/grok.py +0 -0
  438. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/backends/oai.py +0 -0
  439. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/cli.py +0 -0
  440. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/config.py +0 -0
  441. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/examples/fast-4o-mini-config.yaml +0 -0
  442. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/examples/fast_config.yaml +0 -0
  443. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/examples/production.yaml +0 -0
  444. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/examples/single_agent.yaml +0 -0
  445. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/logging.py +0 -0
  446. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/main.py +0 -0
  447. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/orchestrator.py +0 -0
  448. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/streaming_display.py +0 -0
  449. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/tools.py +0 -0
  450. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/types.py +0 -0
  451. {massgen-0.1.4 → massgen-0.1.6}/massgen/v1/utils.py +0 -0
  452. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/dependency_links.txt +0 -0
  453. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/entry_points.txt +0 -0
  454. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/not-zip-safe +0 -0
  455. {massgen-0.1.4 → massgen-0.1.6}/massgen.egg-info/top_level.txt +0 -0
  456. {massgen-0.1.4 → massgen-0.1.6}/requirements.txt +0 -0
  457. {massgen-0.1.4 → massgen-0.1.6}/setup.cfg +0 -0
@@ -7,16 +7,137 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## Recent Releases
9
9
 
10
+ **v0.1.6 (November 2025)** - Framework Interoperability & Backend Refactoring
11
+ External agent framework integration as tools (AG2, LangGraph, AgentScope, OpenAI Assistants, SmoLAgent), unified tool execution architecture, Gemini backend simplification, and comprehensive configuration validation.
12
+
13
+ **v0.1.5 (October 2025)** - Memory System
14
+ Long-term memory with semantic retrieval via mem0, automatic context compression, and memory sharing for multi-turn conversations.
15
+
10
16
  **v0.1.4 (October 2025)** - Multimodal Generation Tools & Binary File Protection
11
17
  Comprehensive generation tools for images, videos, audio, and documents with OpenAI APIs, binary file blocking for security, web crawling integration, and enhanced documentation infrastructure.
12
18
 
13
- **v0.1.3 (October 2025)** - Post-Evaluation Tools & Multimodal Understanding
14
- Post-evaluation workflow with submit/restart capabilities, custom multimodal understanding tools, Docker sudo mode, and enhanced config builder.
19
+ ---
15
20
 
16
- **v0.1.2 (October 2025)** - Intelligent Planning Mode & Model Updates
17
- Automatic irreversibility analysis for MCP tools, selective tool blocking, Claude 4.5 Haiku support, and Grok web search improvements.
21
+ ## [0.1.6] - 2025-10-31
18
22
 
19
- ---
23
+ ### Added
24
+ - **Framework Interoperability**: External agent framework integration as MassGen custom tools
25
+ - New `massgen/tool/_extraframework_agents/` module with 5 framework integrations
26
+ - **AG2 Lesson Planner Tool**: Nested chat functionality wrapped as custom tool for multi-agent lesson planning (supports streaming)
27
+ - **LangGraph Lesson Planner Tool**: LangGraph graph-based workflows integrated as tool
28
+ - **AgentScope Lesson Planner Tool**: AgentScope agent system wrapped for lesson creation
29
+ - **OpenAI Assistants Lesson Planner Tool**: OpenAI Assistants API integrated as tool
30
+ - **SmoLAgent Lesson Planner Tool**: HuggingFace SmoLAgent integration for lesson planning
31
+ - Enables MassGen agents to delegate tasks to specialized external frameworks
32
+ - Each framework runs autonomously and returns results to MassGen orchestrator
33
+ - Note: Only AG2 currently supports streaming; other frameworks return complete results
34
+
35
+ - **Configuration Validator**: Comprehensive YAML configuration validation system
36
+ - New `ConfigValidator` class in `massgen/config_validator.py` for pre-flight validation
37
+ - Memory configuration validation with detailed error messages
38
+ - Pre-commit hook integration for automatic config validation
39
+ - Comprehensive test suite in `massgen/tests/test_config_validator.py`
40
+ - Validates agent configurations, backend parameters, tool settings, and memory options
41
+ - Provides actionable error messages with suggestions for common mistakes
42
+
43
+ ### Changed
44
+ - **Backend Architecture Refactoring**: Unified tool execution with ToolExecutionConfig
45
+ - New `ToolExecutionConfig` dataclass in `base_with_custom_tool_and_mcp.py` for standardized tool handling
46
+ - Refactored `ResponseBackend` with unified tool execution flow
47
+ - Refactored `ChatCompletionsBackend` with unified tool execution flow
48
+ - Refactored `ClaudeBackend` with unified tool execution methods
49
+ - Eliminates duplicate code paths between custom tools and MCP tools
50
+ - Consistent error handling and status reporting across all tool types
51
+ - Improved maintainability and extensibility for future tool systems
52
+
53
+ - **Gemini Backend Simplification**: Major architectural cleanup and consolidation
54
+ - Removed `gemini_mcp_manager.py` module
55
+ - Removed `gemini_trackers.py` module
56
+ - Refactored `gemini.py` to use manual tool execution via base class
57
+ - Streamlined tool handling and cleanup logic
58
+ - Removed continuation logic and duplicate code
59
+ - Updated `_gemini_formatter.py` for simplified tool conversion
60
+ - Net reduction of 1,598 lines through consolidation
61
+ - Improved maintainability and performance
62
+
63
+ - **Custom Tool System Enhancement**: Improved tool management and execution
64
+ - Enhanced `ToolManager` with category management capabilities
65
+ - Improved tool registration and validation system
66
+ - Enhanced tool result handling and error reporting
67
+ - Better support for async tool execution
68
+ - Improved tool schema generation for LLM consumption
69
+
70
+ ### Documentations, Configurations and Resources
71
+
72
+ - **Framework Interoperability Examples**: 8 new configuration files demonstrating external framework integration
73
+ - **AG2 Examples**: `ag2_lesson_planner_example.yaml`, `ag2_and_langgraph_lesson_planner.yaml`, `ag2_and_openai_assistant_lesson_planner.yaml`
74
+ - **LangGraph Examples**: `langgraph_lesson_planner_example.yaml`
75
+ - **AgentScope Examples**: `agentscope_lesson_planner_example.yaml`
76
+ - **OpenAI Assistants Examples**: `openai_assistant_lesson_planner_example.yaml`
77
+ - **SmoLAgent Examples**: `smolagent_lesson_planner_example.yaml`
78
+ - **Multi-Framework Examples**: `two_models_with_tools_example.yaml`
79
+
80
+ ### Technical Details
81
+ - **Major Focus**: Framework interoperability for external agent integration, unified tool execution architecture, Gemini backend simplification, and configuration validation system
82
+ - **Contributors**: @Eric-Shang @praneeth999 @ncrispino @qidanrui @sonichi @Henry-811 and the MassGen team
83
+
84
+ ## [0.1.5] - 2025-10-29
85
+
86
+ ### Added
87
+ - **Memory System**: Complete long-term memory implementation with semantic retrieval
88
+ - New `massgen/memory/` module with comprehensive memory management
89
+ - **PersistentMemory** via mem0 integration for semantic fact storage and retrieval
90
+ - **ConversationMemory** for short-term verbatim message tracking
91
+ - **Automatic Context Compression** when approaching token limits
92
+ - **Memory Sharing for Multi-Turn Conversations** with turn-aware filtering to prevent temporal leakage
93
+ - **Session Management** for memory isolation and continuation across runs
94
+ - **Qdrant Vector Database Integration** for efficient semantic search (server and local modes)
95
+ - **Context Monitoring** with real-time token usage tracking
96
+ - Fact extraction prompts with customizable LLM and embedding providers
97
+ - Supports OpenAI, Anthropic, Groq, and other mem0-compatible providers
98
+
99
+ - **Memory Configuration Support**: New YAML configuration options
100
+ - Memory enable/disable toggle at global and per-agent levels
101
+ - Configurable compression thresholds (trigger_threshold, target_ratio)
102
+ - Retrieval settings (limit, exclude_recent for smart retrieval)
103
+ - Session naming for continuation and cross-session memory
104
+ - LLM and embedding provider configuration for mem0
105
+ - Qdrant connection settings (server/local mode, host, port, path)
106
+
107
+ ### Changed
108
+ - **Chat Agent Enhancement**: Memory integration for agent workflows
109
+ - Memory recording after agent responses (conversation and persistent)
110
+ - Memory retrieval on restart/reset for context restoration
111
+ - Integration with compression and context monitoring modules
112
+
113
+ - **Orchestrator Enhancement**: Memory coordination for multi-agent workflows
114
+ - Memory initialization and management across agent lifecycles
115
+ - Memory cleanup on orchestrator shutdown
116
+
117
+ ### Documentations, Configurations and Resources
118
+
119
+ - **Memory Documentation**: Comprehensive memory system user guide
120
+ - New `docs/source/user_guide/memory.rst`
121
+ - Complete usage guide with quick start, configuration reference, and examples
122
+ - Design decisions documentation explaining architecture choices
123
+ - Troubleshooting guide for common memory issues
124
+ - Monitoring and debugging instructions with log examples
125
+ - API reference for PersistentMemory, ConversationMemory, and ContextMonitor
126
+
127
+ - **Configuration Examples**: 5 new memory-focused YAML configurations
128
+ - `gpt5mini_gemini_context_window_management.yaml`: Multi-agent with context compression
129
+ - `gpt5mini_gemini_research_to_implementation.yaml`: Research to implementation workflow
130
+ - `gpt5mini_high_reasoning_gemini.yaml`: High reasoning agents with memory
131
+ - `gpt5mini_gemini_baseline_research_to_implementation.yaml`: Baseline research workflow
132
+ - `single_agent_compression_test.yaml`: Testing compression behavior
133
+
134
+ - **Infrastructure and Testing**:
135
+ - Memory test suite with 4 test files in `massgen/tests/memory/`
136
+ - Additional memory tests: `test_agent_memory.py`, `test_conversation_memory.py`, `test_orchestrator_memory.py`, `test_persistent_memory.py`
137
+
138
+ ### Technical Details
139
+ - **Major Focus**: Long-term memory system with semantic retrieval and memory sharing for multi-turn conversations
140
+ - **Contributors**: @ncrispino @qidanrui @kitrakrev @sonichi @Henry-811 and the MassGen team
20
141
 
21
142
  ## [0.1.4] - 2025-10-27
22
143
 
@@ -61,14 +182,6 @@ Automatic irreversibility analysis for MCP tools, selective tool blocking, Claud
61
182
  - Updated `docs/source/user_guide/protected_paths.rst` with binary file protection section
62
183
  - Documents 40+ protected binary file types and specialized tool suggestions
63
184
 
64
- - **Enhanced Pre-commit Hooks**: Improved code quality automation
65
- - Updated `.pre-commit-config.yaml` with additional checks
66
- - Better README synchronization and validation
67
-
68
- - **Documentation Automation**: CI/CD for documentation deployment
69
- - New `.github/workflows/docs-automation.yml` for automated doc builds
70
- - Removed legacy docs.yml workflow
71
-
72
185
  - **Configuration Examples**: 9 new YAML configuration files
73
186
  - **Generation Tools**: 8 multimodal generation configurations
74
187
  - `text_to_image_generation_single.yaml` and `text_to_image_generation_multi.yaml`
@@ -95,9 +95,85 @@ To add support for a new model provider:
95
95
  2. Inherit from the base backend class in `massgen/backend/base.py`
96
96
  3. Implement the required methods for message processing and completion parsing
97
97
  4. Add the model mapping in `massgen/utils.py`
98
- 5. Update configuration templates in `massgen/configs/`
99
- 6. Add tests in `massgen/tests/`
100
- 7. Update documentation
98
+ 5. **Add backend capabilities to `massgen/backend/capabilities.py`** - Required for config validation
99
+ 6. Update configuration templates in `massgen/configs/`
100
+ 7. Add tests in `massgen/tests/`
101
+ 8. **Update the config validator** - See [Updating the Config Validator](#updating-the-config-validator) below
102
+ 9. Update documentation
103
+
104
+ ### Updating the Config Validator
105
+
106
+ **⚠️ IMPORTANT**: Whenever you add new configuration options, backends, or change the config schema, you MUST update the config validator.
107
+
108
+ The config validator (`massgen/config_validator.py`) ensures users get helpful error messages when they make configuration mistakes. When you add a new feature:
109
+
110
+ **1. Add to Backend Capabilities** (for new backends)
111
+ ```python
112
+ # In massgen/backend/capabilities.py
113
+ BACKEND_CAPABILITIES = {
114
+ # ...
115
+ "your_backend": BackendCapabilities(
116
+ backend_type="your_backend",
117
+ provider_name="Your Backend Name",
118
+ supported_capabilities={"mcp", "web_search", ...},
119
+ builtin_tools=[...],
120
+ filesystem_support="mcp",
121
+ models=["model-1", "model-2"],
122
+ default_model="model-1",
123
+ env_var="YOUR_API_KEY",
124
+ notes="Description of your backend",
125
+ ),
126
+ }
127
+ ```
128
+
129
+ **2. Update Validator Enums** (for new config options)
130
+ ```python
131
+ # In massgen/config_validator.py
132
+ # If adding new valid values for existing fields:
133
+ VALID_PERMISSION_MODES = {"default", "acceptEdits", "bypassPermissions", "plan"}
134
+ VALID_DISPLAY_TYPES = {"rich_terminal", "simple"}
135
+ ```
136
+
137
+ **3. Add Validation Logic** (for new config fields)
138
+ ```python
139
+ # In massgen/config_validator.py
140
+ # Add validation in the appropriate _validate_* method
141
+ def _validate_your_feature(self, config, result):
142
+ if "your_field" in config:
143
+ # Validate type
144
+ # Validate values
145
+ # Add helpful error messages
146
+ ```
147
+
148
+ **4. Add Tests for Common Mistakes**
149
+ ```python
150
+ # In massgen/tests/test_config_validator.py
151
+ def test_invalid_your_feature(self):
152
+ """Test invalid your_feature value."""
153
+ config = {
154
+ "your_field": "invalid_value",
155
+ # ...
156
+ }
157
+ validator = ConfigValidator()
158
+ result = validator.validate_config(config)
159
+ assert not result.is_valid()
160
+ assert any("your helpful error message" in error.message for error in result.errors)
161
+ ```
162
+
163
+ **5. Test Validation**
164
+ ```bash
165
+ # Validate all example configs still pass
166
+ uv run python scripts/validate_all_configs.py
167
+
168
+ # Run validator tests
169
+ uv run pytest massgen/tests/test_config_validator.py -v
170
+ ```
171
+
172
+ **Why This Matters:**
173
+ - Users get clear, actionable error messages instead of cryptic failures
174
+ - Prevents common configuration mistakes
175
+ - Makes the framework more accessible to new users
176
+ - Pre-commit hooks automatically validate configs in `massgen/configs/`
101
177
 
102
178
  ## 🔒 API Stability & Versioning
103
179
 
@@ -204,10 +280,12 @@ orchestrator:
204
280
  snapshot_storage: "snapshots"
205
281
  agent_temporary_workspace: "temp_workspaces"
206
282
 
207
- # Memory configuration (schema not yet implemented but may evolve when it does)
283
+ # Memory configuration (implemented in v0.1.5 - see docs/source/user_guide/memory.rst)
208
284
  memory:
209
285
  enabled: true
210
- provider: mem0
286
+ persistent_memory:
287
+ enabled: true
288
+ vector_store: "qdrant"
211
289
  ```
212
290
 
213
291
  ## 📋 Prerequisites
@@ -267,7 +345,7 @@ Create a `.env` file in the `massgen` directory as described in [README](README.
267
345
 
268
346
  ## 🔧 Development Workflow
269
347
 
270
- > **Important**: Our next version is v0.1.5. If you want to contribute, please contribute to the `dev/v0.1.5` branch.
348
+ > **Important**: Our next version is v0.1.7. If you want to contribute, please contribute to the `dev/v0.1.7` branch (or `main` if dev/v0.1.7 doesn't exist yet).
271
349
 
272
350
  ### 1. Create Feature Branch
273
351
 
@@ -275,8 +353,8 @@ Create a `.env` file in the `massgen` directory as described in [README](README.
275
353
  # Fetch latest changes from upstream
276
354
  git fetch upstream
277
355
 
278
- # Create feature branch from dev/v0.1.5
279
- git checkout -b feature/your-feature-name upstream/dev/v0.1.5
356
+ # Create feature branch from dev/v0.1.7 (or main if dev branch doesn't exist yet)
357
+ git checkout -b feature/your-feature-name upstream/dev/v0.1.7
280
358
  ```
281
359
 
282
360
  ### 2. Make Your Changes
@@ -373,7 +451,7 @@ git push origin feature/your-feature-name
373
451
  ```
374
452
 
375
453
  Then create a pull request on GitHub:
376
- - Base branch: `dev/v0.1.5`
454
+ - Base branch: `dev/v0.1.7` (or `main` if dev branch doesn't exist yet)
377
455
  - Compare branch: `feature/your-feature-name`
378
456
  - Add clear description of changes
379
457
  - Link any related issues
@@ -479,7 +557,7 @@ Have a significant feature idea not covered by existing tracks?
479
557
  - [ ] Tests pass locally
480
558
  - [ ] Documentation is updated if needed
481
559
  - [ ] Commit messages follow convention
482
- - [ ] PR targets `dev/v0.1.5` branch
560
+ - [ ] PR targets `dev/v0.1.7` branch (or `main` if dev branch doesn't exist yet)
483
561
 
484
562
  ### PR Description Should Include
485
563
 
@@ -566,15 +644,20 @@ Every feature needs documentation! Here's how to decide where and what to write.
566
644
  - Location: `docs/source/quickstart/configuration.rst`
567
645
  - What to include: YAML examples, parameter descriptions
568
646
 
569
- 3. ✅ **API Reference** - If feature changes Python API
647
+ 3. ✅ **Config Validator** - **REQUIRED if feature changes config schema**
648
+ - Location: `massgen/config_validator.py` and `massgen/backend/capabilities.py`
649
+ - What to include: Validation logic, error messages, tests
650
+ - **See**: [Updating the Config Validator](#updating-the-config-validator) section above
651
+
652
+ 4. ✅ **API Reference** - If feature changes Python API
570
653
  - Location: `docs/source/api/`
571
654
  - What to include: Docstrings, function signatures, examples
572
655
 
573
- 4. ✅ **CHANGELOG.md** - What changed in this version
656
+ 5. ✅ **CHANGELOG.md** - What changed in this version
574
657
  - Location: Root directory
575
658
  - What to include: Brief description under "Added", "Changed", or "Fixed"
576
659
 
577
- 5. ✅ **Examples** - **REQUIRED for every feature**
660
+ 6. ✅ **Examples** - **REQUIRED for every feature**
578
661
  - Location: `docs/source/examples/basic_examples.rst` or feature-specific example files
579
662
  - What to include: Runnable code showing feature in action
580
663
  - **Note**: Examples are ALWAYS required, even if you write a case study. Case studies showcase real-world usage; examples show basic functionality.
@@ -655,6 +738,7 @@ Every feature needs documentation! Here's how to decide where and what to write.
655
738
  |--------------|-------------|----------|-----------|
656
739
  | **User Guide** | Every feature | `docs/source/user_guide/` | ✅ Yes |
657
740
  | **Config Docs** | Config changes | `docs/source/quickstart/configuration.rst` | ✅ Yes |
741
+ | **Config Validator** | Config schema changes | `massgen/config_validator.py` | ✅ Yes (if config changes) |
658
742
  | **API Docs** | API changes | `docs/source/api/` | ✅ Yes |
659
743
  | **CHANGELOG** | Every PR | `CHANGELOG.md` | ✅ Yes |
660
744
  | **Examples** | **Every feature** | `docs/source/examples/` | ✅ **ALWAYS** |