Implemented live retrieval around the product-search node. Changed: - [src/retrieval/serpapi.py](/home/user/worktrees/attempt-bcefb763-4a2e-48dc-a104-534fc4109e62-cap-1/src/retrieval/serpapi.py:1): new dependency-free SerpApi client for Google Shopping and Google News. - [src/nodes/search_agent.py](/home/user/worktrees/attempt-bcefb763-4a2e-48dc-a104-534fc4109e62-cap-1/src/nodes/search_agent.py:1): now returns live `product_list` and `retrieval_sources`. - [src/graph/state.py](/home/user/worktrees/attempt-bcefb763-4a2e-48dc-a104-534fc4109e62-cap-1/src/graph/state.py:20): added `WebSource`. - [README.md](/home/user/worktrees/attempt-bcefb763-4a2e-48dc-a104-534fc4109e62-cap-1/README.md:6): documented setup and provider rationale. **Provider Chosen:** SerpApi. Why: this repo is a product research agent, and its state wants product `name`, `price`, `ratings`, and `url`. SerpApi’s Google Shopping docs show structured `price`/`extracted_price` fields, product links, and delivery data, while Google Product exposes seller/offer details like base price, tax, shipping, total price, condition, and seller links. That maps directly to current prices, seller availability, and purchase URLs better than generic search snippets. SerpApi also supports Google News and `no_cache=true` for freshness-sensitive retrieval. **Alternatives Considered:** Tavily, Exa, Brave Search API, Perplexity Sonar, a