Prevent estimate pipeline stalls during AI processing

Estimate pipelines now have built-in timeouts to prevent hangs when AI calls or metadata updates stall.

Bug Fixes

Estimate pipeline generation can now recover from stalls caused by slow AI API responses or stuck metadata updates. Both AI calls and metadata writes now have built-in timeouts (60 seconds for AI, 2 seconds for metadata), allowing the pipeline to fail gracefully instead of hanging indefinitely.

This improves reliability when external services experience latency or timeout issues, ensuring estimates either complete or fail with a clear error rather than getting stuck in progress.