* feat: add LangSmith tracing integration
Add optional LangSmith tracing support that can be enabled via environment
variables (LANGSMITH_TRACING, LANGSMITH_API_KEY, LANGSMITH_PROJECT,
LANGSMITH_ENDPOINT). When enabled, a LangChainTracer callback is attached
to chat models and run metadata is injected for trace tagging.
Co-Authored-By: Claude <noreply@anthropic.com>
* Update backend/src/config/tracing_config.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update backend/src/agents/lead_agent/agent.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update backend/src/agents/lead_agent/agent.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update backend/src/models/factory.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add threading lock to ensure thread-safe access to tracing configuration
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Add image viewing capability for vision-enabled models with ViewImageMiddleware and view_image_tool. Limit web_fetch tool output to 4096 characters to prevent excessive content. Update model config to support vision capability flag.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
When using thinking-enabled models (like Kimi K2.5, DeepSeek), the API
expects reasoning_content on all assistant messages. The original
ChatDeepSeek stores reasoning_content in additional_kwargs but doesn't
include it when making subsequent API calls, causing "reasoning_content
is missing" errors.
This adds PatchedChatDeepSeek which overrides _get_request_payload to
restore reasoning_content from additional_kwargs into the payload.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>