- Refactor tests in test_workflow.py, test_memory.py, and test_signal_handling.py
to use assertions instead of returning booleans (pytest strict mode requires None)
- Fix test_batch_orchestrator.py to mock file finding to avoid filesystem scans
- Add 'integration' pytest marker to both root pyproject.toml and pkg/hanzo/pytest.ini
- Account for system memories in memory manager tests
- Added error field as dataclass attribute instead of property
- Updated success property to handle string results safely with getattr
- Added get_error() method to retrieve error from direct field or result
- Fixes test failures in test_task_failure_handling
- Explicitly list workspace members to exclude hanzo-agent submodule
- Add ruff exclude for hanzo-agent and hanzo-memory
- Add E722 to scripts per-file ignores
- Delete stray GRPO test files
- Update requirements.lock with correct package references
Consolidates agent functionality into unified hanzo-agent SDK:
Changes:
- Removed old pkg/hanzo-agents package (deprecated)
- Added hanzo-agent as git submodule at pkg/hanzo-agent
- Updated pyproject.toml to remove hanzo-agents test exclusion
- Configured .gitmodules for github.com/hanzoai/agent
Benefits:
- Single source of truth for agent functionality
- Modular extensions (web3, tee, marketplace, cli)
- Maintains both standalone and integrated use cases
- Users can install: pip install "hanzoai[full]"
Migration:
- Old: from hanzo_agents import Agent
- New: from agents import Agent (in hanzo-agent submodule)
Related: Agent SDK now at github.com/hanzoai/agent
Fixes critical issue where tool_use blocks could be orphaned without
corresponding tool_result blocks, causing Claude API 400 errors:
"tool_use ids were found without tool_result blocks immediately after"
Changes:
- Collect tool results atomically before adding to messages
- Add error recovery to append tool_result for any orphaned tool_use blocks
- Ensures 1:1 pairing of tool_use and tool_result even on exceptions
Location: hanzo_mcp/tools/agent/agent_tool_v1_deprecated.py:449-603
Fixed the read tool and all filesystem tools to properly work with agents
that call them with 2 positional arguments (ctx, file_path).
Changes:
- Updated auto_timeout decorator to handle instance methods properly
- Changed wrapper signature to accept *args to handle both methods and functions
- Properly extracts ctx from correct position (second arg for methods, first for functions)
- Made set_tool_context_info async and updated all callers
- Changed from sync to async def
- Added await for all calls to set_tool_context_info()
- Fixed in: read, write, edit, multi_edit, ast_tool, rules_tool, symbols_tool
- Tests now pass without warnings
- Both run() and call() methods work correctly
- Agents can now properly invoke read tool with expected signature
Version: 0.9.1 -> 0.9.2
- Add --daemon flag to run as single process serving multiple agents
- Add --socket-path for Unix socket communication
- Add --max-connections to limit concurrent agent connections
- Implement file locking to prevent multiple daemon instances
- Set environment variables for daemon mode configuration
This ensures hanzo-mcp runs as single process even with 100+ agents
- Implement MCPToolTimeoutManager with configurable timeouts
- Add @auto_timeout decorator for all MCP tools
- Apply auto-timeout to search, find, and ast tools
- Default 2-minute timeout, configurable via HANZO_MCP_TOOL_TIMEOUT
- Background operations continue with full log files
- Process management integration for monitoring and termination
- Solves MCP error -32001 (Request timed out) issues
Version bump: 0.8.15 → 0.8.16
- Added missing imports for register_thinking_tool, register_critic_tool, and register_batch_tool
- Fixed FastMCP import fallback to support multiple mcp module structures
- Updated Claude MCP configuration to use venv Python for proper dependency resolution
- Resolved NameError issues preventing server initialization
- Added comprehensive anti-stub test suite that detects:
- TODO/FIXME/STUB/FAKE/UNFINISHED patterns
- Empty functions with only pass/ellipsis
- NotImplementedError raises
- Mock implementations in production
- Debug prints in production
- Skipped tests
- Created strict GitHub Actions workflow that:
- BLOCKS deployment if ANY forbidden patterns found
- Requires ALL tests to pass (no skips allowed)
- Runs security scans
- Verifies all functions are implemented
- Only allows PyPI publish after ALL checks pass
- Added pre-commit hooks to catch issues locally before push
- Updated Makefile with 'make check' that runs all quality gates
- Fixed stub function issue in tools/__init__.py
This ensures we NEVER deploy incomplete or stub code to production again!
- Fix Hanzo Node detection to test actual chat endpoint instead of health check
- Check both ports 3690 (default) and 8000 for Hanzo Node
- Add session-based failed tool tracking to avoid repeated attempts
- Cache working tool selection for better performance
- Fix hanzo-mcp integration with proper dependencies
- Add comprehensive test suite for tool detection (14 tests)
- Test and verify OpenAI Codex integration
- Fix Hanzo Node health check to use port 3690 (not 8000)
- Update chat completions endpoint to use correct port
- Fix status display to show correct port number
- This allows proper detection and use of local Hanzo Node
- Fix Hanzo Node detection to verify chat endpoint actually works
- Skip Hanzo Node if /v1/chat/completions returns 404
- Add proper fallback chain when primary tool fails
- Show helpful error messages and suggest working alternatives
- agent will be used when Hanzo Node isn't functional