173403379fba2efa72ba845dfa3918887af10e7e
Milestone M9 implementation adds web access tools with security controls. New crate: crates/tools/web WebFetch Features: - HTTP client using reqwest - Domain allowlist/blocklist filtering * Empty allowlist = allow all domains (except blocked) * Non-empty allowlist = only allow specified domains * Blocklist always takes precedence - Redirect detection and blocking * Redirects to unapproved domains are blocked * Manual redirect policy (no automatic following) * Returns error message with redirect URL - Response capture with metadata * Status code, content, content-type * Original URL preserved WebSearch Features: - Pluggable provider trait using async-trait - SearchProvider trait for implementing search APIs - StubSearchProvider for testing - SearchResult structure with title, URL, snippet - Provider name identification Security Features: - Case-insensitive domain matching - Host extraction from URLs - Relative redirect URL resolution - Domain validation before requests - Explicit approval required for cross-domain redirects Tests added (9 new tests): Unit tests: 1. domain_filtering_allowlist - Verifies allowlist-only mode 2. domain_filtering_blocklist - Verifies blocklist takes precedence 3. domain_filtering_case_insensitive - Verifies case handling Integration tests with wiremock: 4. webfetch_domain_whitelist_only - Tests allowlist enforcement 5. webfetch_redirect_to_unapproved_domain - Blocks bad redirects 6. webfetch_redirect_to_approved_domain - Detects good redirects 7. webfetch_blocklist_overrides_allowlist - Blocklist priority 8. websearch_pluggable_provider - Provider pattern works 9. webfetch_successful_request - Basic fetch operation All 84 tests passing (up from 75). Note: CLI integration deferred - infrastructure is complete and tested. Future work will add CLI commands for web-fetch and web-search with domain configuration. Dependencies: reqwest 0.12, async-trait 0.1, wiremock 0.6 (test) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Description
Releases
5
Release v0.1.10
Latest
Languages
Rust
99.5%
Shell
0.5%