4a5032520a
- 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>
108 lines
4.8 KiB
Markdown
108 lines
4.8 KiB
Markdown
# Agent and Session Database Implementation Tasks
|
|
|
|
This document outlines the implementation plan for adding agent and session management with database persistence to Cherry Studio.
|
|
|
|
## Database Schema Design
|
|
|
|
### Tables to Create:
|
|
|
|
1. **`agents` Table**
|
|
- `id` (Primary Key)
|
|
- `name` (TEXT, required)
|
|
- `description` (TEXT)
|
|
- `avatar` (TEXT)
|
|
- `instructions` (TEXT, for System Prompt)
|
|
- `model` (TEXT, model id, required)
|
|
- `tools` (JSON array of enabled tool IDs)
|
|
- `knowledges` (JSON array of enabled knowledge base IDs)
|
|
- `configuration` (JSON, extensible settings)
|
|
- `created_at` / `updated_at` (TIMESTAMPS)
|
|
|
|
2. **`sessions` Table**
|
|
- `id` (Primary Key)
|
|
- `agent_ids` (JSON array of agent IDs)
|
|
- `user_prompt` (TEXT, initial user goal)
|
|
- `status` (TEXT: 'running', 'completed', 'failed', 'stopped')
|
|
- `accessible_paths` (JSON array of directory paths)
|
|
- `created_at` / `updated_at` (TIMESTAMPS)
|
|
|
|
3. **`session_logs` Table**
|
|
- `id` (Primary Key)
|
|
- `session_id` (INTEGER, Foreign Key to sessions.id)
|
|
- `parent_id` (INTEGER, Foreign Key to session_logs.id, nullable)
|
|
- `role` (TEXT: 'user', 'agent')
|
|
- `type` (TEXT: 'message', 'thought', 'action', 'observation')
|
|
- `content` (JSON, structured data)
|
|
- `created_at` (TIMESTAMP)
|
|
|
|
## Implementation Tasks:
|
|
|
|
### Phase 1: Database Foundation ✅ COMPLETED
|
|
- [x] **Task 1**: Create database schema migration
|
|
- [x] **Task 2**: Create TypeScript interfaces for all entities
|
|
- [x] **Task 3**: Implement database service layer for agents
|
|
- [x] **Task 4**: Implement database service layer for sessions
|
|
- [x] **Task 5**: Implement database service layer for session_logs
|
|
|
|
### Phase 2: Service Layer ✅ COMPLETED
|
|
- [x] **Task 6**: Add IPC handlers for agent operations
|
|
- [x] **Task 7**: Add IPC handlers for session operations
|
|
- [x] **Task 8**: Create agent management service in main process (AgentService)
|
|
- [x] **Task 9**: Create session management service in renderer process (AgentManagementService)
|
|
|
|
### Phase 3: UI Integration ✅ COMPLETED
|
|
- [x] **Task 10**: Update CherryAgentPage to use real data
|
|
- [x] **Task 10a**: Create useAgentManagement hook
|
|
- [x] **Task 10b**: Replace mock sessions with real database sessions
|
|
- [x] **Task 10c**: Implement agent name editing with real persistence
|
|
- [x] **Task 11**: Implement agent creation/editing modal
|
|
- [x] **Task 12**: Implement agent selection and management
|
|
- [x] **Task 13**: Implement session creation and switching
|
|
- [x] **Task 14**: Implement enhanced session management UI with edit/delete
|
|
|
|
### Phase 4: Testing and Polish
|
|
- [ ] **Task 15**: Add comprehensive tests for database operations
|
|
- [ ] **Task 16**: Add error handling and validation
|
|
- [ ] **Task 17**: Performance optimization for large datasets
|
|
- [ ] **Task 18**: Documentation and code cleanup
|
|
|
|
## Completed Work Summary:
|
|
|
|
### ✅ Database Layer
|
|
- **Schema**: Created complete database schema with `agents`, `sessions`, and `session_logs` tables
|
|
- **Queries**: Implemented comprehensive SQL queries in `AgentQueries`
|
|
- **Service**: Built full CRUD AgentService with proper error handling and logging
|
|
- **Database Path**: Using separate `agent.db` database file in user data directory
|
|
|
|
### ✅ IPC Communication Layer
|
|
- **Channels**: Added 12 new IPC channels for agent/session management to `IpcChannel.ts`
|
|
- **Handlers**: Implemented typed IPC handlers in `main/ipc.ts`
|
|
- **Types**: Shared type definitions between main and renderer processes
|
|
|
|
### ✅ Renderer Services & Hooks
|
|
- **AgentManagementService**: Comprehensive service for IPC communication with proper logging
|
|
- **useAgentManagement**: React hook providing stateful agent/session management
|
|
- **Integration**: CherryAgentPage now uses real data instead of mock data
|
|
|
|
### ✅ Type System
|
|
- **Shared Types**: Moved agent types to shared location accessible by both processes
|
|
- **Type Safety**: Full TypeScript coverage with proper error handling
|
|
- **Module Resolution**: Fixed import paths and module resolution issues
|
|
|
|
## Key Features Implemented:
|
|
|
|
1. **Agent Management**: Complete CRUD operations for agents with modal-based UI
|
|
2. **Session Management**: Full session lifecycle management with enhanced UI
|
|
3. **Session Logging**: Structured logging for session interactions
|
|
4. **Real-time UI**: CherryAgentPage displays live agent and session data
|
|
5. **Auto-initialization**: Creates default agent and session if none exist
|
|
6. **Error Handling**: Comprehensive error handling with user feedback
|
|
7. **Modal Management**: Agent and session creation/editing modals
|
|
8. **Enhanced Session UI**: Session list with edit/delete actions and metadata display
|
|
9. **Directory Access Control**: Sessions can specify accessible directories
|
|
|
|
## Notes:
|
|
- Use existing libsql database connection
|
|
- Follow existing service patterns in Cherry Studio
|
|
- Ensure proper error handling and data validation
|
|
- Consider migration path for existing mock data |