mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-01-08 14:53:53 -05:00
## Summary This PR implements a graph-level Safe Mode toggle system for Human-in-the-Loop (HITL) blocks. When Safe Mode is ON (default), HITL blocks require manual review before proceeding. When OFF, they execute automatically. ## 🔧 Backend Changes - **Database**: Added `metadata` JSON column to `AgentGraph` table with migration - **API**: Updated `execute_graph` endpoint to accept `safe_mode` parameter - **Execution**: Enhanced execution context to use graph metadata as default with API override capability - **Auto-detection**: Automatically populate `has_human_in_the_loop` for graphs containing HITL blocks - **Block Detection**: HITL block ID: `8b2a7b3c-6e9d-4a5f-8c1b-2e3f4a5b6c7d` ## 🎨 Frontend Changes - **Component**: New `FloatingSafeModeToggle` with dual variants: - **White variant**: For library pages, integrates with action buttons - **Black variant**: For builders, floating positioned - **Integration**: Added toggles to both new/legacy builders and library pages - **API Integration**: Direct graph metadata updates via `usePutV1UpdateGraphVersion` - **Query Management**: React Query cache invalidation for consistent UI updates - **Conditional Display**: Toggle only appears when graph contains HITL blocks ## 🛠 Technical Implementation - **Safe Mode ON** (default): HITL blocks require manual review before proceeding - **Safe Mode OFF**: HITL blocks execute automatically without intervention - **Priority**: Backend API `safe_mode` parameter takes precedence over graph metadata - **Detection**: Auto-populates `has_human_in_the_loop` metadata field - **Positioning**: Proper z-index and responsive positioning for floating elements ## 🚧 Known Issues (Work in Progress) ### High Priority - [ ] **Toggle state persistence**: Always shows "ON" regardless of actual state - query invalidation issue - [ ] **LibraryAgent metadata**: Missing metadata field causing TypeScript errors - [ ] **Tooltip z-index**: Still covered by some UI elements despite high z-index ### Medium Priority - [ ] **HITL detection**: Logic needs improvement for reliable block detection - [ ] **Error handling**: Removing HITL blocks from graph causes save errors - [ ] **TypeScript**: Fix type mismatches between GraphModel and LibraryAgent ### Low Priority - [ ] **Frontend API**: Add `safe_mode` parameter to execution calls once OpenAPI is regenerated - [ ] **Performance**: Consider debouncing rapid toggle clicks ## 🧪 Test Plan - [ ] Verify toggle appears only when graph has HITL blocks - [ ] Test toggle persistence across page refreshes - [ ] Confirm API calls update graph metadata correctly - [ ] Validate execution behavior respects safe mode setting - [ ] Check styling consistency across builder and library contexts ## 🔗 Related - Addresses requirements for graph-level HITL configuration - Builds on existing FloatingReviewsPanel infrastructure - Integrates with existing graph metadata system 🤖 Generated with [Claude Code](https://claude.ai/code)
84 lines
2.1 KiB
Plaintext
84 lines
2.1 KiB
Plaintext
{
|
|
"agents": [
|
|
{
|
|
"id": "test-agent-1",
|
|
"graph_id": "test-agent-1",
|
|
"graph_version": 1,
|
|
"image_url": null,
|
|
"creator_name": "Test Creator",
|
|
"creator_image_url": "",
|
|
"status": "COMPLETED",
|
|
"created_at": "2023-01-01T00:00:00",
|
|
"updated_at": "2023-01-01T00:00:00",
|
|
"name": "Test Agent 1",
|
|
"description": "Test Description 1",
|
|
"instructions": null,
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"credentials_input_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"has_external_trigger": false,
|
|
"trigger_setup_info": null,
|
|
"new_output": false,
|
|
"can_access_graph": true,
|
|
"is_latest_version": true,
|
|
"is_favorite": false,
|
|
"recommended_schedule_cron": null,
|
|
"settings": {
|
|
"human_in_the_loop_safe_mode": null
|
|
},
|
|
"marketplace_listing": null
|
|
},
|
|
{
|
|
"id": "test-agent-2",
|
|
"graph_id": "test-agent-2",
|
|
"graph_version": 1,
|
|
"image_url": null,
|
|
"creator_name": "Test Creator",
|
|
"creator_image_url": "",
|
|
"status": "COMPLETED",
|
|
"created_at": "2023-01-01T00:00:00",
|
|
"updated_at": "2023-01-01T00:00:00",
|
|
"name": "Test Agent 2",
|
|
"description": "Test Description 2",
|
|
"instructions": null,
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"credentials_input_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"has_external_trigger": false,
|
|
"trigger_setup_info": null,
|
|
"new_output": false,
|
|
"can_access_graph": false,
|
|
"is_latest_version": true,
|
|
"is_favorite": false,
|
|
"recommended_schedule_cron": null,
|
|
"settings": {
|
|
"human_in_the_loop_safe_mode": null
|
|
},
|
|
"marketplace_listing": null
|
|
}
|
|
],
|
|
"pagination": {
|
|
"total_items": 2,
|
|
"total_pages": 1,
|
|
"current_page": 1,
|
|
"page_size": 50
|
|
}
|
|
} |