Merged
Conversation
Add comprehensive CSV manipulation tools: - csv_read: Read CSV with pagination (limit/offset) - csv_write: Create new CSV files - csv_append: Append rows to existing CSV - csv_info: Get CSV metadata (columns, row count, file size) - csv_sql: Query CSV using SQL (powered by DuckDB) Features: - Session sandbox security (workspace_id, agent_id, session_id) - DuckDB as optional dependency for SQL queries - Security: Only SELECT queries allowed, dangerous keywords blocked - Full Unicode support - 45 tests covering all tools Install SQL support: pip install tools[sql]
- Created MockLLMProvider class that generates placeholder JSON responses - Updated AgentRunner._setup() to use MockLLMProvider when mock_mode=True - Added MockLLMProvider to llm module exports - Fixes issue where agents failed with 'LLM not available' in mock mode The MockLLMProvider extracts expected output keys from system prompts and generates mock JSON responses for structural validation without making real LLM API calls. This enables: - Testing agent structure without API keys - Fast iteration on agent graphs - CI/CD testing without credentials - Zero-cost structural validation Tested with simple agent - all nodes execute successfully in mock mode.
Signed-off-by: Arush Wadhawan <warush23+github@gmail.com>
Replace direct print() statements with Python's logging module in MCP setup and verification scripts for better configurability and production readiness. Changes: - setup_mcp.py: Convert 30+ print() calls to structured logging - verify_mcp.py: Convert 40+ print() calls to structured logging - mcp_server.py: Convert 4 print() calls to structured logging - Preserve colored CLI output using logging formatters - Maintain all functional behavior (refactor only) Benefits: - Configurable log levels (debug/info/warning/error) - Better observability in production environments - Cleaner programmatic usage (no stdout pollution) - Professional logging practices Fixes #833
Allow LLMJudge to accept any LLMProvider instance instead of being hardcoded to use Anthropic. This aligns with the framework's pluggable LLM design and enables users to: - Use the same LLM provider across their agent and tests - Run tests with cheaper or local models - Avoid requiring an Anthropic API key for testing Backward compatible: existing code using LLMJudge() without arguments continues to work by falling back to Anthropic. Closes #477 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
feat(validation): add Pydantic model validation for LLM outputs
docs(llm): add DeepSeek models support documentation and examples
fix(tools): validate Content-Type in web_scrape tool (Closes #487)
Fix: Add MockLLMProvider to enable mock mode execution
fixed linter
…vider feat(testing): add configurable LLM provider to LLMJudge
…_command_tool) The "Available Tools" table listed `execute_command` but the actual registered name is `execute_command_tool`. This aligns the docs with the runtime name in __init__.py and the tool's own README. Fixes #901
… or empty Previously, when exports/ was missing or empty, the bash glob `exports/*/` would not match anything and the loop would silently do nothing. The job would pass without actually validating anything, which was misleading. Now the job: - Explicitly checks if exports/ directory exists - Uses nullglob to handle empty directories properly - Logs clear messages when skipping validation - Reports the number of agents validated when successful Fixes #887
Centralized _get_api_key in prompts.py to support OpenAI, Cerebras, and Groq via environment variables while maintaining Anthropic support through CredentialManager.
fix(graph): add logging for JSON parsing failures in worker_node
…ame-readme docs(tools): fix tool name in README table (execute_command → execute_command_tool)
…empty ci: make Validate Agent Exports skip clearly when exports/ is missing or empty
fix(types): correct type annotation from lowercase 'callable' to 'Callable'
Fix/graph retry backoff
feat(tools): add CSV tools with DuckDB SQL support
…prompts Refactor/provider agnostic prompts
- Change single quotes to double quotes in logging formatters - Fixes: setup_mcp.py, verify_mcp.py formatter strings - Addresses Q000 linter errors from PR review
refactor(mcp): replace print() with logging in setup scripts
* feat(tools): add Google Custom Search as alternative to Brave Search Adds google_search tool using Google Custom Search API as an alternative to the existing web_search tool (Brave Search). Changes: - Add google_search_tool with full implementation - Register Google credentials (GOOGLE_API_KEY, GOOGLE_CSE_ID) - Register tool in tools/__init__.py - Add README with setup instructions Closes #793 * test(tools): add unit tests for google_search tool Adds 7 tests mirroring web_search_tool test patterns: - Missing API key error handling - Missing CSE ID error handling - Empty query validation - Long query validation - num_results clamping - Default parameters - Custom language/country parameters All tests pass. * refactor(tools): add multi-provider support to web_search tool BREAKING CHANGE: None - backward compatible. Brave remains default. - Add Google Custom Search as alternative provider in web_search - Add 'provider' parameter: 'auto' (default), 'google', 'brave' - Auto mode tries Brave first for backward compatibility - Remove separate google_search_tool (consolidated into web_search) - Update tests to cover multi-provider functionality (13 tests) - Update README documentation Users with BRAVE_SEARCH_API_KEY: No changes needed Users with GOOGLE_API_KEY + GOOGLE_CSE_ID: Can use provider='google' Users with both: Brave preferred by default, use provider='google' to force Closes #793 * feat(tools): fixed readme --------- Co-authored-by: Mustafa Abdat <abdamus@hilti.com>
…-locks-leak fix(memory): patch ConcurrentStorage leak (WeakValueDictionary)
refactor: provider-agnostic LLMJudge with auto-detection for OpenAI (#1103)
PR Closed - Requirements Not MetThis PR has been automatically closed because it doesn't meet the requirements. Missing: No linked issue found. To fix:
Why is this required? See #472 for details. |
jhalak999
pushed a commit
to jhalak999/hive
that referenced
this pull request
Feb 17, 2026
sync main to staging
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Sync main to staging branch