After the terminate tool is executed, the agent loop adds function_call_output
to new_items, making it the last item (without role field), so the loop continues.
Solution: Check at the start of predict_step if the last message is a
function_call_output with "terminated": True, and immediately return a
final assistant message without calling the model.
- Use original Microsoft FARA prompt templates from qwen_helpers
- Fix tool call parsing to handle nested JSON braces
- Extract and preserve assistant thoughts before tool calls
- Add termination detection to exit agent loop properly
Add browser tool with Playwright/Firefox support. Includes BrowserManager,
/playwright_exec endpoint, BrowserTool client, and auto-recovery. Fixes
Python version in startup script and adds Playwright to Docker build.
* Sort imports alphabetically in agent loops __init__.py
Fix isort check failure by alphabetically sorting both the import list
and __all__ list to match the expected order.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* run on all prs
* Fix black formatting issues in responses.py and provider.py
Apply black formatting to fix lint check failures:
- Reformat conditional expression in responses.py for better readability
- Break long assert line in provider.py to comply with line length limits
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix prettier formatting issues in markdown and TypeScript files
Apply prettier formatting to blog posts, documentation, and CLI code:
- Format blog markdown files for consistent styling
- Format TypeScript CLI source files
- Format documentation MDX files
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>