Commit Graph

815 Commits

Author SHA1 Message Date
hetaoBackend a6fcdbf50a fix: fix proxy 2026-01-19 21:36:35 +08:00
hetaoBackend d6c1e5868d fix: fix proxy 2026-01-19 21:36:35 +08:00
Henry Li 24ca87d650 feat: add ToggleGroup 2026-01-19 19:41:46 +08:00
Henry Li d7dfffad90 feat: add ToggleGroup 2026-01-19 19:41:46 +08:00
hetaoBackend 74d4a16492 feat: add MCP (Model Context Protocol) support
Add comprehensive MCP integration using langchain-mcp-adapters to enable
pluggable external tools from MCP servers.

Features:
- MCP server configuration via mcp_config.json
- Automatic lazy initialization for seamless use in both FastAPI and LangGraph Studio
- Support for multiple MCP servers (filesystem, postgres, github, brave-search, etc.)
- Environment variable resolution in configuration
- Tool caching mechanism for optimal performance
- Complete documentation and setup guide

Implementation:
- Add src/mcp module with client, tools, and cache components
- Integrate MCP config loading in AppConfig
- Update tool system to include MCP tools automatically
- Add eager initialization in FastAPI lifespan handler
- Add lazy initialization fallback for LangGraph Studio

Dependencies:
- Add langchain-mcp-adapters>=0.1.0

Documentation:
- Add MCP_SETUP.md with comprehensive setup guide
- Update CLAUDE.md with MCP system architecture
- Update config.example.yaml with MCP configuration notes
- Update README.md with MCP setup instructions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 18:58:13 +08:00
hetaoBackend 1171598b2f feat: add MCP (Model Context Protocol) support
Add comprehensive MCP integration using langchain-mcp-adapters to enable
pluggable external tools from MCP servers.

Features:
- MCP server configuration via mcp_config.json
- Automatic lazy initialization for seamless use in both FastAPI and LangGraph Studio
- Support for multiple MCP servers (filesystem, postgres, github, brave-search, etc.)
- Environment variable resolution in configuration
- Tool caching mechanism for optimal performance
- Complete documentation and setup guide

Implementation:
- Add src/mcp module with client, tools, and cache components
- Integrate MCP config loading in AppConfig
- Update tool system to include MCP tools automatically
- Add eager initialization in FastAPI lifespan handler
- Add lazy initialization fallback for LangGraph Studio

Dependencies:
- Add langchain-mcp-adapters>=0.1.0

Documentation:
- Add MCP_SETUP.md with comprehensive setup guide
- Update CLAUDE.md with MCP system architecture
- Update config.example.yaml with MCP configuration notes
- Update README.md with MCP setup instructions

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 18:58:13 +08:00
Henry Li 21f35b1d3c feat: support dynamic loading models 2026-01-19 18:54:04 +08:00
Henry Li 541586dc66 feat: support dynamic loading models 2026-01-19 18:54:04 +08:00
hetaoBackend ffb9ed3198 fix: use shared httpx client to prevent premature closure in SSE streaming
The proxy was creating a temporary httpx.AsyncClient within an async context manager.
When returning StreamingResponse for SSE endpoints, the client was being closed before
the streaming generator could use it, causing "client has been closed" errors.

This change introduces a shared httpx.AsyncClient that persists for the application
lifecycle, properly cleaned up during shutdown. This also improves performance by
reusing TCP connections across requests.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 16:52:30 +08:00
hetaoBackend 1a7c853811 fix: use shared httpx client to prevent premature closure in SSE streaming
The proxy was creating a temporary httpx.AsyncClient within an async context manager.
When returning StreamingResponse for SSE endpoints, the client was being closed before
the streaming generator could use it, causing "client has been closed" errors.

This change introduces a shared httpx.AsyncClient that persists for the application
lifecycle, properly cleaned up during shutdown. This also improves performance by
reusing TCP connections across requests.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 16:52:30 +08:00
hetaoBackend 3a4149c437 fix: stop tracking .claude/settings.local.json
Remove .claude/settings.local.json from git tracking and add it to .gitignore to prevent future accidental commits of local settings.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 16:28:03 +08:00
hetaoBackend 8ea530e221 fix: stop tracking .claude/settings.local.json
Remove .claude/settings.local.json from git tracking and add it to .gitignore to prevent future accidental commits of local settings.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 16:28:03 +08:00
DanielWalnut f0a2381bd5
feat: implement summarization (#14) 2026-01-19 16:17:31 +08:00
DanielWalnut 9a3eaea54e feat: implement summarization (#14) 2026-01-19 16:17:31 +08:00
Henry Li 1352b0e0ba fix: fix getBackendBaseURL() 2026-01-19 15:42:19 +08:00
Henry Li 1ef04c94ee fix: fix getBackendBaseURL() 2026-01-19 15:42:19 +08:00
Henry Li 9d18e4e12d feat: add NEXT_PUBLIC_BACKEND_BASE_URL 2026-01-19 11:23:40 +08:00
Henry Li f3f66ee924 feat: add NEXT_PUBLIC_BACKEND_BASE_URL 2026-01-19 11:23:40 +08:00
Henry Li b431567666 feat: make `new chat` always on top 2026-01-19 00:00:35 +08:00
Henry Li d8391ca3ea feat: make `new chat` always on top 2026-01-19 00:00:35 +08:00
Henry Li c321c9293a fix: decode URL 2026-01-18 20:26:01 +08:00
Henry Li 63fa500716 fix: decode URL 2026-01-18 20:26:01 +08:00
Henry Li 5624b0cd38 feat: support clarification tool 2026-01-18 20:17:32 +08:00
Henry Li dc04042b53 feat: support clarification tool 2026-01-18 20:17:32 +08:00
Henry Li aa44566fef feat: re-implement message group 2026-01-18 19:56:07 +08:00
Henry Li 69b225082b feat: re-implement message group 2026-01-18 19:56:07 +08:00
DanielWalnut e1a8d544b6
feat: add clarification feature (#13) 2026-01-18 19:55:36 +08:00
DanielWalnut 645923c3bc feat: add clarification feature (#13) 2026-01-18 19:55:36 +08:00
Henry Li ec1964c829 feat: support SSE write_file(0 2026-01-18 17:13:15 +08:00
Henry Li dd80348b76 feat: support SSE write_file(0 2026-01-18 17:13:15 +08:00
DanielWalnut 6f97dde5d1
fix: Long thinking but with empty content (#12) 2026-01-18 14:21:40 +08:00
DanielWalnut c50540e3fc fix: Long thinking but with empty content (#12) 2026-01-18 14:21:40 +08:00
DanielWalnut 5f4c58aa82
feat: implement lazy sandbox and thread data initialization (#11)
Defer sandbox acquisition and thread directory creation until first use to improve performance and reduce resource usage.

Changes:
- Add lazy_init parameter to SandboxMiddleware (default: true)
- Add ensure_sandbox_initialized() helper for lazy sandbox acquisition
- Update all sandbox tools to use lazy initialization
- Add lazy_init parameter to ThreadDataMiddleware (default: true)
- Create thread directories on-demand in AioSandboxProvider
- LocalSandbox already creates directories on write (no changes needed)

Benefits:
- Saves 1-2s Docker container startup for conversations without tools
- Reduces unnecessary directory creation and file system operations
- Backward compatible with lazy_init=false option

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-18 13:38:34 +08:00
DanielWalnut 1397f30f24 feat: implement lazy sandbox and thread data initialization (#11)
Defer sandbox acquisition and thread directory creation until first use to improve performance and reduce resource usage.

Changes:
- Add lazy_init parameter to SandboxMiddleware (default: true)
- Add ensure_sandbox_initialized() helper for lazy sandbox acquisition
- Update all sandbox tools to use lazy initialization
- Add lazy_init parameter to ThreadDataMiddleware (default: true)
- Create thread directories on-demand in AioSandboxProvider
- LocalSandbox already creates directories on write (no changes needed)

Benefits:
- Saves 1-2s Docker container startup for conversations without tools
- Reduces unnecessary directory creation and file system operations
- Backward compatible with lazy_init=false option

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-18 13:38:34 +08:00
Henry Li 41a22fde91 feat: add recursion_limit 2026-01-18 13:16:27 +08:00
Henry Li 8f0bd828d5 feat: add recursion_limit 2026-01-18 13:16:27 +08:00
Henry Li 71eadc942f fix: fix message grouping issues 2026-01-18 13:07:56 +08:00
Henry Li 6bf187c1c2 fix: fix message grouping issues 2026-01-18 13:07:56 +08:00
DanielWalnut 5a0912d0fd
fix: fix backend python execution (#10) 2026-01-18 12:41:48 +08:00
DanielWalnut bfe8a24350 fix: fix backend python execution (#10) 2026-01-18 12:41:48 +08:00
Henry Li 9605cec6d3 feat: enhance message display 2026-01-18 11:25:46 +08:00
Henry Li 23dc64fab1 feat: enhance message display 2026-01-18 11:25:46 +08:00
Henry Li f9242727c7 feat: dim the placeholder 2026-01-18 09:57:30 +08:00
Henry Li 59683fc12e feat: dim the placeholder 2026-01-18 09:57:30 +08:00
Henry Li bffe802130 Merge remote-tracking branch 'refs/remotes/origin/experimental' into experimental 2026-01-18 09:57:23 +08:00
Henry Li 54f58fd7eb Merge remote-tracking branch 'refs/remotes/origin/experimental' into experimental 2026-01-18 09:57:23 +08:00
Henry Li 449f04fc44 feat: remove model icon 2026-01-18 09:55:17 +08:00
Henry Li 92fc19a3aa feat: remove model icon 2026-01-18 09:55:17 +08:00
DanielWalnut 3261273ee3
feat: fix todos (#9) 2026-01-17 23:23:12 +08:00
DanielWalnut aa030410fc feat: fix todos (#9) 2026-01-17 23:23:12 +08:00