9a3b7aa4f522a170f080afb78370d8a8373bfc34
- AIService.generate() now runs an agentic loop: sends tools to the API, handles tool_calls responses, executes tools, appends results, and repeats until a text response (up to tool_max_rounds, default 10) - New app/ai/tools.py: six sandboxed file tools (write/read/create/modify/delete/list), OpenAI JSON schemas, path sandbox validator, and MCP→OpenAI schema converter - Paths are sandboxed to workspace/ (project root) and prompts/ai/; traversal blocked - MinimaxImageUnderstandClient gains list_tools() and call_tool() methods; MCP tool schemas are lazily fetched once per session and forwarded to the AI as callable tools - AIConfig gains workspace_dir (Path, default workspace/) and tool_max_rounds (int, default 10) - MCP client opened lazily only when an MCP tool is actually called during a loop Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
No description provided
Languages
Python
100%