Commit Graph

69 Commits

Author SHA1 Message Date
defi-failure 7b3b73d390 fix: make anthropic model provided by cherryin visible to agent (#10695) 2025-10-14 20:59:07 +08:00
Vaayne 538291c03f ♻️ refactor: consolidate Claude Code system message handling and streaming logic
- Unify buildClaudeCodeSystemMessage implementation in shared package
- Refactor MessagesService to provide comprehensive message processing API
- Extract streaming logic, error handling, and header preparation into service methods
- Remove duplicate anthropic config from renderer, use shared implementation
- Update ClaudeCodeService to use append mode for custom instructions
- Improve type safety and request validation in message processing
2025-09-30 23:33:41 +08:00
Vaayne ac1cab60a3 fix(cache): reduce cache TTL from 1 minute to 10 seconds for quicker updates 2025-09-29 23:24:36 +08:00
Vaayne 759f8518b2 fix(logger): enhance cache check for available providers 2025-09-29 23:02:05 +08:00
Vaayne cff9068359 ♻️ refactor: standardize string quotes and improve logging in Anthropic integration 2025-09-29 14:42:50 +08:00
Vaayne cc871b7a72 ♻️ refactor: enhance logging and provider handling for Anthropic integration 2025-09-29 14:38:41 +08:00
Vaayne 5b98ef5b3d ♻️ refactor: update import paths for message handling module 2025-09-29 13:12:06 +08:00
Vaayne 3428d15299 ♻️ refactor: centralize agent stream timeouts 2025-09-29 13:06:47 +08:00
Vaayne 4d133d59ea feat: enhance Anthropic API support for compatible providers
- Add support for anthropicApiHost configuration in providers
- Improve model filtering for Anthropic-compatible providers
- Add isAnthropicModel function to validate Anthropic models
- Update ClaudeCode service to support compatible providers
- Enhance logging and error handling in API routes
- Fix model transformation and validation logic
2025-09-27 14:10:47 +08:00
Vaayne e1a0dd6810 feat(timeout): implement extendMessagesTimeout middleware and set server timeouts 2025-09-25 23:33:33 +08:00
Vaayne a7d6065b08 refactor(routes): streamline provider-specific messages route setup 2025-09-25 23:33:33 +08:00
Vaayne 5dbd38721f refactor(messages): remove debug logging and enhance streaming response handling 2025-09-25 23:33:33 +08:00
Vaayne 39fcc04d78 refactor(logging): improve logging messages for clarity and consistency
- Updated logging statements across various modules to provide more structured and detailed information.
- Changed log levels from info to debug for less critical messages to reduce log clutter.
- Enhanced error logging to include relevant context such as agentId, sessionId, and model details.
- Standardized log messages to follow a consistent format, improving readability and maintainability.
2025-09-25 23:33:33 +08:00
suyao 1973e4d290 refactor: remove unnecessary type declaration for request body in message processing 2025-09-24 15:35:22 +08:00
Vaayne 7a169c424d refactor: update logging in message processing to use debug level and improve clarity 2025-09-24 14:23:06 +08:00
suyao d1b339f71d fix: 修复代码格式和简化错误处理逻辑 2025-09-23 19:03:54 +08:00
Vaayne 6bcd941cc6 feat: Implement delete message functionality and validation in session messages 2025-09-23 16:08:52 +08:00
Vaayne 98ebfd12b3 refactor: Improve logging and error handling in MCPApiService and ClaudeCodeService 2025-09-23 16:08:52 +08:00
Vaayne 60c85b651f feat: add MCP server support for agents
- Add MCP server configuration UI for agent settings
- Update agent and session forms to include MCP server selection
- Fix MCP API service logging and tools handling
- Add Chinese localization for MCP settings
- Update type definitions to support MCP server arrays

This enables agents to use MCP (Model Control Protocol) servers
as additional tools and capabilities in their execution context.
2025-09-23 10:31:40 +08:00
Vaayne b4a92cecc8 feat: enhance agent creation and session management with automatic session provisioning 2025-09-23 00:21:27 +08:00
Vaayne 2385fba695 Refactor logging levels in transform.ts and adjust JSON body parser configuration in app.ts 2025-09-22 16:32:32 +08:00
Vaayne 1a49972583 ♻️ refactor: standardize tool management and API responses
- Rename built_in_tools field to tools for consistency
- Add type field to Tool schema (builtin/mcp/custom)
- Consolidate tool handling in BaseService with listMcpTools method
- Remove unused CreateSessionResponse and related schemas
- Clean up unused imports and dead code in session handlers
- Unify agent and session tool resolution logic
2025-09-21 17:23:04 +08:00
Vaayne a09c52424f 💄 style: format code with yarn format 2025-09-21 16:44:54 +08:00
Vaayne b869869e26 feat: implement comprehensive Claude Code OAuth integration and API enhancements
- Add shared Anthropic utilities package with OAuth and API key client creation
- Implement provider-specific message routing alongside existing v1 API
- Enhance authentication middleware with priority handling (API key > Bearer token)
- Add comprehensive auth middleware test suite with timing attack protection
- Update session handling and message transformation for Claude Code integration
- Improve error handling and validation across message processing pipeline
- Standardize import formatting and code structure across affected modules

This establishes the foundation for Claude Code OAuth authentication while maintaining
backward compatibility with existing API key authentication methods.
2025-09-21 16:42:46 +08:00
SuYao 36f86ff2b9 Refactor/agent align (#10276)
* Refactor agent streaming from EventEmitter to ReadableStream

Replaced EventEmitter-based agent streaming with ReadableStream for
better compatibility with AI SDK patterns. Modified
SessionMessageService to return stream/completion pair instead of event
emitter, updated HTTP handlers to use stream pumping, and added IPC
contract for renderer-side message persistence.

* Add accessible paths management to agent configuration

Move accessible paths functionality from session modal to agent modal,
add validation requiring at least one path, and update form handling to
inherit agent paths in sessions.

* Add provider_name field to model objects and improve display

- Add provider_name field to ApiModel schema and transformation logic
- Update model options to include providerName for better display
- Improve provider label fallback chain in model transformation
- Fix agent hook to use proper SWR key and conditional fetching
- Enhance option rendering with better truncation and provider display

* fix(i18n): Auto update translations for PR #10276

* Optimize chat components with memoization and shared layout

- Wrap `SessionMessages` and `SessionInputBar` in `useMemo` to prevent unnecessary re-renders
- Refactor `AgentSessionMessages` to use shared layout components and message grouping
- Extract common styled components to `shared.tsx` for reuse across message components

* Add smooth animations to SessionsTab and Sessions components

- Replace static conditional rendering with Framer Motion animations for no-agent and session states
- Animate session list items with staggered entrance and exit transitions
- Add loading spinner animation with fade effect
- Apply motion to session creation button with delayed entrance

* Add loading state with spinner and i18n support to SessionsTab

- Replace static "No active agent" message with a spinner and loading text
- Integrate react-i18next for translation of loading message
- Adjust animation timing and styling for smoother loading state transition

* Support API models with provider_name field in getModelName

- Add ApiModel type import and update function signature to accept ApiModel
- Return formatted name using provider_name field for API models
- Maintain backward compatibility for legacy models by looking up provider in store

* Simplify provider display name logic and add debug logging

- Replace complex fallback chain for provider display name with direct provider name access
- Add console.log for model debugging in getModelName function

* Extract model name from session model string

- Use split and pop to isolate the model name after the colon
- Fall back to the full model string if no colon is present
- Maintain provider and group identifiers for model object consistency

* Improve model name resolution for agent sessions

- Extract actual model ID from session model string and resolve model details
- Use resolved model name, provider, and group when available instead of defaults
- Remove redundant API model handling in getModelName function

* Set default active agent and session on load

- Automatically select first agent if none active after loading
- Automatically select first session per agent if none active after loading
- Prevent empty selection states in UI components

---------

Co-authored-by: GitHub Action <action@github.com>
2025-09-20 16:56:53 +08:00
icarus fcacc50fdc Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-20 00:53:55 +08:00
Vaayne 17df1db120 ♻️ refactor: simplify streaming message lifecycle management
- Remove unused persistence tracking variables in message handler
- Simplify finalizeResponse logic by removing unnecessary checks
- Change 'finish' event type to 'complete' for consistency
- Add debug logging for streaming events
- Clean up dead code and improve readability
2025-09-20 00:14:02 +08:00
Vaayne d56521260c ️ perf: add caching layer for MCP servers and providers data access
- Extract getServersFromRedux to shared utility getMCPServersFromRedux
- Implement 5-minute TTL cache for MCP servers and providers
- Reduce redundant Redux store queries in API server
- Improve response times for frequently accessed data
2025-09-20 00:13:26 +08:00
icarus c7ec55c69a refactor(types): rename ApiModelsRequest to ApiModelsFilter for clarity
Update type name and related imports to better reflect its purpose as a filter type rather than a request type
2025-09-19 23:48:58 +08:00
icarus c77d7dff78 feat(api): add models endpoint to agent client and type response
Add new models endpoint to AgentApiClient with query parameter support
Ensure type safety by adding ApiModelsResponse type and schema validation
2025-09-19 23:43:20 +08:00
Vaayne b282e4d729 feat: implement robust AbortController for Claude Code agent streams
- Add AbortController support to agent service interface and implementations
- Enhance client disconnect detection with multiple HTTP event listeners (req.close, req.aborted, res.close)
- Implement proper abort error handling in ClaudeCodeService with 'cancelled' event type
- Add comprehensive documentation explaining SSE disconnect detection behavior
- Clean up stream interfaces by removing unused properties and simplifying event structure
- Extend timeout from 5 to 10 minutes for longer-running agent tasks
- Ensure proper resource cleanup and prevent orphaned processes on client disconnect

This enables reliable cancellation of long-running Claude Code processes when clients
disconnect unexpectedly (browser tab close, curl Ctrl+C, network issues, etc.)
2025-09-19 23:42:46 +08:00
Vaayne c426876d0d feat(transform): refactor message handling to unify user and assistant processing 2025-09-19 22:36:19 +08:00
Vaayne f0ac74dccf feat(agents): enhance error messages for agent and session operations; update accessible paths handling 2025-09-19 20:20:20 +08:00
Vaayne d6468f33c5 feat(agents): implement model validation for agent and session creation/updating 2025-09-19 20:20:20 +08:00
Vaayne 49f9dff9da feat(models): update models filtering to use providerType and enhance API schemas 2025-09-19 20:20:19 +08:00
Vaayne d91df12dbc feat(models): refactor models service to use new API models schema and types 2025-09-19 16:36:11 +08:00
Vaayne 2cf2f04a70 feat(chat): enhance chat completion error handling and streaming support
feat(messages): improve message validation and add streaming support
feat(tests): add HTTP tests for chat and message endpoints
2025-09-19 16:16:33 +08:00
Vaayne 73380d76df feat(models): enhance models endpoint with filtering and pagination support 2025-09-19 16:16:33 +08:00
Vaayne 38076babcf feat(messages): add messages route and service for handling Anthropic messages 2025-09-19 16:16:33 +08:00
Vaayne d13c25444c feat(agents, sessions): enhance agent and session schemas with detailed properties and CRUD API documentation 2025-09-19 12:56:20 +08:00
icarus 1c19e529ac Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-19 12:51:08 +08:00
Vaayne 514b60f704 feat(agents, sessions): implement replace functionality for agent and session updates 2025-09-19 11:13:05 +08:00
Vaayne df1d4cd62b refactor(sessions): update getSession and related methods to include agentId parameter 2025-09-19 10:41:26 +08:00
Vaayne 5048d6987d refactor(validators): migrate validation logic to Zod for agents and sessions 2025-09-19 10:27:02 +08:00
icarus 809736dd33 feat(sessions): add update session functionality
Introduce UpdateSessionResponse type and schema to support session updates. Implement update session methods across client, service, and handler layers to enable session modifications.
2025-09-18 22:58:49 +08:00
icarus 100801821f fix(agents): update agents list response structure to match API
Align frontend and backend types for agents list response. The API now returns paginated data with limit/offset and renamed 'agents' field to 'data' for consistency. Update related type definitions and usage across the codebase.
2025-09-18 22:26:54 +08:00
icarus 08772741e6 feat(agent-sessions): add schema and type for listing agent sessions
Add ListAgentSessionsResponseSchema and type to support paginated session listing
2025-09-18 21:49:02 +08:00
icarus f5f542911f feat(sessions): add CreateSessionResponse type for better type safety
Introduce CreateSessionResponse type and schema to clearly define the return type of session creation operations. This improves type safety and consistency across the codebase when handling session responses.
2025-09-18 21:43:06 +08:00
Vaayne 49add96dc0 feat(database): add agent_session_id to session_messages table and update related services 2025-09-18 17:46:05 +08:00
beyondkmp b131f0c48c pack optimization 2025-09-18 15:25:16 +08:00