Commit Graph

3671 Commits

Author SHA1 Message Date
Vaayne a67a6cf1cd check uv and bun install 2025-08-06 00:06:45 +08:00
Vaayne 9bfe70219d Add UV installer to sidebar and refactor state management
The changes add an UV installer component to the sidebar and switch from
Redux to local state for managing UV/Bun installation status. The commit
includes layout adjustments to accommodate the new component.
2025-08-05 23:46:44 +08:00
Vaayne f9c4acd1d7 remove unused i18n 2025-08-05 23:26:13 +08:00
Vaayne 139feb1bd5 Add agent editing and configuration features
This commit adds comprehensive agent editing capabilities, including: -
New edit modal with advanced configuration options - Expanded agent form
with description, avatar, and instructions - Tools and knowledge base
selection - Model configuration settings - UI improvements for agent
management
2025-08-05 23:22:51 +08:00
Vaayne 245812916f Replace delete icon and simplify session modal 2025-08-05 22:48:47 +08:00
Vaayne 9e473ee8ce 💫 ui: redesign agent chat UI with improved message hierarchy and tool display
- Create MessageGroup component for intelligent message organization and tool grouping
- Redesign tool calls to be compact, visually secondary with muted colors and smaller fonts
- Align tool messages with agent message content using consistent 44px offset
- Reduce message container gap from 20px to 12px for better conversation flow
- Fix hashCode TypeScript error with proper string-to-number hash function
- Add responsive design breakpoints for mobile compatibility (768px, 480px)
- Implement smooth transitions and proper collapse icon rotation (-90deg)
- Separate system messages from conversation flow for better organization
- Reduce tool content max-height to 200px with scroll for better space usage
- Apply consistent visual hierarchy: conversation primary, tools secondary
2025-08-05 22:19:14 +08:00
Vaayne 03183b4c50 Improve tool call message UI and expand behavior 2025-08-05 21:56:24 +08:00
Vaayne 66fa189474 ♻️ refactor: restructure CherryAgentPage into modular architecture
- Extract utilities into separate modules (formatters, parsers, validators, constants, logProcessors)
- Create custom hooks for state management (useAgents, useSessions, useSessionLogs, useCollapsibleMessages, useAgentExecution)
- Split UI into reusable components (Sidebar, ConversationArea, InputArea, message components, modals)
- Organize styled-components into themed style modules (layout, sidebar, conversation, messages, modals, buttons)
- Reduce main component from ~2400 lines to ~290 lines
- Improve code maintainability and testability with proper separation of concerns
- Follow React best practices with custom hooks and component composition
2025-08-05 20:20:54 +08:00
Vaayne c19a501f66 Add tool call UI and raw log parsing support 2025-08-05 17:15:41 +08:00
Vaayne 1e78e2ee89 Add session configuration and management UI 2025-08-05 15:46:53 +08:00
Vaayne 845dc40334 Add session metrics and improve chat message filtering 2025-08-05 14:50:49 +08:00
Vaayne 3b472cf48b Redesign chat UI with improved styling and message display 2025-08-05 14:39:45 +08:00
Vaayne 6087cb687d feat: enhance agent logging system with structured events and improved UI
- Add structured logging for Claude assistant responses in agent.py
- Remove duplicate user query logging to prevent UI duplication
- Implement comprehensive message filtering and formatting in UI
- Add visual styling for different message types (errors, results, responses)
- Improve message content parsing with type-specific handlers
- Filter raw stdout/stderr logs from conversation display
- Add useCallback optimization for React Hook dependencies
- Fix ESLint and TypeScript issues in CherryAgentPage component
- Update test formatting and structure for consistency

This creates a clean conversation flow showing:
1. User prompts
2. Session initialization details
3. Claude assistant responses
4. Session results with cost/duration
5. Error messages with proper styling
2025-08-05 12:10:45 +08:00
Vaayne 24c3295393 Add structured logging support for agent execution 2025-08-05 11:54:32 +08:00
Vaayne 9d0c8ca223 enhance shell envs and fix continue conversations 2025-08-05 11:35:30 +08:00
Vaayne 4d38e82392 Add agent and session CRUD, chat UI to CherryAgentPage
- Implements agent/session creation, selection, and listing - Adds chat
interface with message input and session logs - Integrates IPC handlers
for agent/session CRUD and logs - Updates preload API for agent/session
operations - Restricts claude_code_agent.py to Python 3.10
2025-08-05 10:44:22 +08:00
Vaayne a83f7baa72 Reorder BrowserWindow import and fix formatting issues 2025-08-05 09:03:53 +08:00
Vaayne dca0cf488b ♻️ refactor: improve agent execution architecture and shell environment handling
- Refactor AgentExecutionService process execution from Promise-based to async/await pattern
- Separate process spawning from event handler setup for better error handling
- Add dependency injection support for shell environment provider (better testability)
- Consolidate Cherry Studio bin path logic into shell-env utility
- Use typed IPC channels for consistent agent communication
- Improve error handling with proper async/await in agent execution flow
- Update test mocks to use new testable AgentExecutionService architecture
- Enhance cross-platform shell detection (zsh default for macOS, bash for Linux)
2025-08-04 23:21:44 +08:00
Vaayne e82aa2f061 feat: implement AgentExecutionService with process management and comprehensive testing
- Add complete runAgent and stopAgent implementation
- Implement child process spawning with uv for secure agent execution
- Add real-time stdout/stderr streaming to UI via IPC
- Implement comprehensive session logging to database
- Add graceful process termination with SIGTERM/SIGKILL fallback
- Track running processes with status reporting and management
- Handle all error scenarios with proper status updates and cleanup
- Create extensive test suite with 31 passing unit tests
- Add integration tests for end-to-end verification
- Include comprehensive documentation and testing guides

Features:
- Secure process execution without shell injection
- Session continuation support via Claude session IDs
- Working directory management and validation
- Real-time UI feedback through IPC streaming
- Database persistence of all execution events
- Comprehensive error handling and recovery
- Process lifecycle management and cleanup
2025-08-04 23:21:44 +08:00
Vaayne 823986bb11 🗃️ feat: enhance AgentService database migration system
- Refactor initialization to handle both fresh installs and migrations
- Replace createTables + migrateDatabase with unified createTablesAndMigrate approach
- Add comprehensive schema migration for sessions table with backwards compatibility
- Migrate user_prompt → user_goal column renaming
- Migrate claude_session_id → latest_claude_session_id column renaming
- Add migration for new columns: max_turns, permission_mode, accessible_paths
- Improve entity mapping to handle null values correctly
- Update database queries and indexes for new schema

Breaking changes:
- SessionEntity now uses user_goal instead of user_prompt
- SessionEntity now uses latest_claude_session_id instead of claude_session_id
- Added new required fields: max_turns, permission_mode
2025-08-04 23:21:44 +08:00
Vaayne 2fd2573a65 fix lint 2025-08-04 23:21:44 +08:00
Vaayne 8e0b6e369c clear code 2025-08-04 23:21:44 +08:00
Vaayne 8ab26e4e45 feat: implement secure AgentExecutionService for controlled agent.py execution
- Create new AgentExecutionService.ts with secure agent.py script execution
- Replace arbitrary shell command execution with controlled Python script calls
- Add claude_session_id field to session types for conversation continuity
- Update shared types between main and renderer processes
- Implement proper argument validation and sanitization
- Add comprehensive error handling and logging
- Export service through agent service index

Security improvements:
- Only executes predefined agent.py script (no arbitrary commands)
- Uses direct process spawning instead of shell execution
- Validates all arguments before execution
- Prevents command injection vulnerabilities

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 17:52:01 +08:00
Vaayne b1a464fadc feat: enhance agent management with session log persistence and improved UX 2025-08-03 11:44:18 +08:00
Vaayne 8de2239eb6 fix .
fix issues
2025-08-03 11:43:02 +08:00
Vaayne 571f6c3ef3 feat: implement session-based message isolation and improve agent creation UX
- Add sessionId field to PocMessage interface for session isolation
- Filter messages by current session to prevent cross-session pollution
- Remove automatic agent creation - only manual creation by users
- Add beautiful empty state when no agents exist
- Enhance sidebar UX with prominent "Create Agent" button when empty
- Update message hooks to handle session-specific messaging
- Improve user control over agent lifecycle management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne dc603d9896 ♻️ refactor: use session-based working directory for command execution
- Remove working directory display from command input UI
- Commands now execute in session's accessible_paths directory
- Clean up unused props and styled components
- Simplify command input interface for better UX

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne bbc0e9378a Redesign agent sidebar with avatar gradients 2025-08-03 11:43:02 +08:00
Vaayne 3d94740482 feat: add dynamic model and tool fetching for agent management
Replace hardcoded model and tool options with dynamic data fetched from API server:
- Update MCP API to return array format instead of object for consistency
- Add fetchAvailableModels() and fetchAvailableMCPTools() to AgentManagementService
- Modify AgentManagementModal to fetch and display dynamic options
- Add type definitions for FetchModelResponse and FetchMCPToolResponse

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne 4a5032520a feat: implement comprehensive agent and session management UI
- Add enhanced sidebar with agent and session controls
- Implement create/edit/delete operations for agents and sessions
- Add real-time session switching and auto-initialization
- Replace mock data with persistent database integration
- Include dropdown menus, tooltips, and confirmation dialogs
- Add responsive UI with proper styling and state management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne 500831454b 🗃️ feat: implement comprehensive agent and session database management system
- Add complete database schema for agents, sessions, and session_logs tables
- Implement full CRUD operations with libsql database integration
- Create comprehensive AgentService with proper error handling and logging
- Add AgentManagementService for renderer-side IPC communication
- Implement useAgentManagement React hook for state management
- Add 12 new IPC channels for agent and session operations
- Update CherryAgentPage to use real database data instead of mock data
- Create shared TypeScript types between main and renderer processes
- Add auto-initialization for default agent and session creation
- Implement real-time agent name editing with database persistence
- Add comprehensive error handling with user feedback via Ant Design messages
- Create structured logging for all database operations
- Add tasks.md documentation for implementation progress tracking

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne c8ea3407e6 💄 style: enhance Cherry Agent page design with modern UI improvements
- Restructure layout to match wireframe design with proper header/content sections
- Add agent name input field with elegant styling and focus effects
- Implement session management with interactive session items and hover animations
- Enhance sidebar design with improved spacing, shadows, and visual hierarchy
- Add modern styling with gradients, rounded corners, and smooth transitions
- Improve button interactions with scale effects and proper hover states
- Create responsive design that works when sidebar is collapsed
- Use mock session data for initial implementation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne d2fdb8ab0f 💄 refactor: redesign cherry-agent input with enhanced terminal UI
- Replace separate PocCommandInput and PocStatusBar with unified EnhancedCommandInput
- Add terminal-style prompt with dynamic status indicators ($, , ✗)
- Integrate status bar functionality directly into input component
- Implement contextual tool buttons (history, clear, settings, send/cancel)
- Add color-coded visual states for idle/running/error states
- Enhance keyboard UX with Enter/Esc shortcuts and history navigation
- Remove unused components: PocCommandInput, PocStatusBar, PocHeader
- Clean up imports and styled components
- Improve accessibility with tooltips and proper ARIA labels

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne 3f6c884992 Improve agent UI responsiveness and add command cancellation
The UI changes include faster command output buffering, better error
handling, improved status bar with cancel button, and visual refinements
to command messages.
2025-08-03 11:43:02 +08:00
Vaayne db418ef5f1 enhance layput 2025-08-03 11:43:02 +08:00
Vaayne 29318d5a06 basic layout of cherry agent ui 2025-08-03 11:43:02 +08:00
Vaayne 2df77b62f9 fix init shell with command 2025-08-03 11:43:02 +08:00
Vaayne ea3598e194 Merge branch 'main' into feat/agents-1 2025-08-03 11:43:02 +08:00
Vaayne 4b0db10195 ... 2025-08-03 11:43:02 +08:00
Vaayne 9fe14311fc feat(agents): enhance POC interface styling with Cherry Studio design system
- Integrate complete Cherry Studio CSS variables and design patterns
- Implement proper light/dark theme support with system preference detection
- Enhance message bubbles to match Cherry Studio's chat interface styling
- Add Cherry Studio-compatible scrollbar styling with theme-aware colors
- Improve typography with Ubuntu font family and proper font stacks
- Add comprehensive hover states, transitions, and micro-interactions
- Implement accessibility improvements including focus states and reduced motion
- Add theme toggle functionality with persistent preferences
- Enhance header styling to match Cherry Studio's navbar design
- Add animation effects consistent with Cherry Studio's motion design
- Improve responsive design for mobile and tablet viewports
- Add high contrast mode support for better accessibility

The POC interface now provides a polished, professional appearance that
seamlessly integrates with Cherry Studio's design language and user experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne 2628f9b57e feat: integrate hooks with POC UI components for real-time command execution
- Update CommandPocPage.tsx to coordinate between all hooks and manage application state
- Integrate usePocMessages, usePocCommand, and useCommandHistory hooks for complete functionality
- Add auto-scrolling to PocMessageList with user scroll detection
- Implement command history navigation in PocCommandInput using arrow keys
- Connect real-time command status updates to PocStatusBar
- Pass current working directory to PocHeader for display
- Enable seamless command execution flow with proper loading states
- Add buffered output handling between command hook and message display
- Implement command count tracking and execution state management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne df23499679 feat: implement PoC command hooks for message management and command execution
- Add usePocMessages hook for managing message state with real-time streaming support
- Add usePocCommand hook for command execution with 100ms output buffering
- Add useCommandHistory hook for input history navigation with arrow keys
- Implement proper event handling from AgentCommandService
- Add comprehensive logging and error handling
- Support message completion tracking and buffered output streaming

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne 0860541b2d feat: implement AgentCommandService for POC command execution
- Add AgentCommandService.ts with singleton pattern following existing renderer service architecture
- Implement IPC communication with main process command executor using established patterns
- Add methods for executing commands, handling real-time output streaming, and command interruption
- Create proper TypeScript interfaces and event-driven architecture using Emittery
- Add POC API endpoints to preload script for secure renderer-main communication
- Include comprehensive test suite with 12 passing tests covering all major functionality
- Follow existing code patterns for error handling, logging, and resource cleanup
- Support command state tracking, process management, and event listeners

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne ffa4b4fc04 feat: implement PocCommandExecutor for cross-platform shell command execution
- Created PocCommandExecutor class in src/main/poc/commandExecutor.ts
- Added cross-platform shell detection (cmd.exe on Windows, bash on Unix)
- Implemented real-time stdout/stderr streaming via IPC
- Added process management with activeProcesses Map
- Support for command interruption with graceful and force termination
- Proper error handling and process cleanup
- Added POC-related IPC channels: Poc_ExecuteCommand, Poc_CommandOutput, Poc_InterruptCommand, Poc_GetActiveProcesses
- Registered IPC handlers in main/ipc.ts for command execution integration
- Follows existing architecture patterns from PythonService and other main process services

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
Vaayne 75766dbfdc feat: Add POC command page structure and routing
- Created CommandPocPage.tsx with basic layout structure
- Added POC-specific TypeScript interfaces and types
- Implemented basic UI components: PocHeader, PocMessageList, PocMessageBubble, PocCommandInput, PocStatusBar
- Added /command-poc route to Router.tsx
- Set up component folder structure following PRD specifications

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 11:43:02 +08:00
one 6d0867c27d fix: do not exit on emoji picker (#8702)
* fix: do not exit on emoji picker

* fix: emoji picker in default assistant setting
2025-07-31 10:31:12 +08:00
LiuVaayne eb4f218c7d feat: make API server default to closed/disabled (#8691)
*  feat: make API server default to closed/disabled

- Add `enabled` field to ApiServerConfig interface with default value false
- Update Redux store to include apiServer.enabled setting (defaults to false)
- Add setApiServerEnabled action to control server state
- Modify main process to only auto-start API server if explicitly enabled
- Update UI to show enable/disable toggle in API server settings
- Add migrations to handle existing configurations
- Server controls now only visible when API server is enabled

The API server will no longer start automatically on application launch
unless explicitly enabled by the user through the settings interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* 🔧 chore: improve build and lint commands

- Move typecheck and i18n checks to lint command for better developer experience
- Simplify build:check to focus on linting and testing
- Ensure all quality checks run together during development

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-31 09:54:23 +08:00
SuYao 7ae7f13ad1 refactor(ApiService): optimize memory search handling and improve error logging (#8671)
* refactor(ApiService): optimize memory search handling and improve error logging

- Updated fetchExternalTool to handle memory search in a separate promise, ensuring better management of asynchronous operations.
- Enhanced error logging for memory search failures to improve debugging.
- Removed redundant memory search result storage logic from the main result handling section.

* refactor(ApiService): streamline external tool fetching and memory search handling

- Simplified the fetchExternalTool function by separating web and knowledge search calls into individual await statements.
- Improved memory search handling by awaiting the searchMemory function directly, ensuring better asynchronous flow.
- Updated result storage logic to ensure memory search results are stored correctly after fetching.
2025-07-31 09:50:24 +08:00
one 80409cd94e fix(ModelList): stop propagation (#8685) 2025-07-30 20:32:24 +08:00
one 236a6bdcb0 perf(ModelList): provider settings and model list responsiveness (#8667)
- improve responsiveness for provider switching
- improve ModelList performance
  - use startTransition
  - use virtual list for model groups
  - remove excessive ModelEditContent, add EditModelPopup
  - add model count
- improve model management popup
  - rename to ManageModelsPopup
  - use virtual list with sticky group name
  - use SvgSpinners180Ring for spin
2025-07-30 19:15:08 +08:00