mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
Adds folder management capabilities to the CoPilot, allowing users to organize agents into folders directly from the chat interface. <img width="823" height="356" alt="Screenshot 2026-03-05 at 5 26 30 PM" src="https://github.com/user-attachments/assets/4c55f926-1e71-488f-9eb6-fca87c4ab01b" /> <img width="797" height="150" alt="Screenshot 2026-03-05 at 5 28 40 PM" src="https://github.com/user-attachments/assets/5c9c6f8b-57ac-4122-b17d-b9f091bb7c4e" /> <img width="763" height="196" alt="Screenshot 2026-03-05 at 5 28 36 PM" src="https://github.com/user-attachments/assets/d1b22b5d-921d-44ac-90e8-a5820bb3146d" /> <img width="756" height="199" alt="Screenshot 2026-03-05 at 5 30 17 PM" src="https://github.com/user-attachments/assets/40a59748-f42e-4521-bae0-cc786918a9b5" /> ### Changes **Backend -- 6 new CoPilot tools** (`manage_folders.py`): - `create_folder` -- Create folders with optional parent, icon, and color - `list_folders` -- List folder tree or children of a specific folder, with optional `include_agents` to show agents inside each folder - `update_folder` -- Rename or change icon/color - `move_folder` -- Reparent a folder or move to root - `delete_folder` -- Soft-delete (agents moved to root, not deleted) - `move_agents_to_folder` -- Bulk-move agents into a folder or back to root **Backend -- DatabaseManager RPC registration**: - Registered all 7 folder DB functions (`create_folder`, `list_folders`, `get_folder_tree`, `update_folder`, `move_folder`, `delete_folder`, `bulk_move_agents_to_folder`) in `DatabaseManager` and `DatabaseManagerAsyncClient` so they work via RPC in the CoPilotExecutor process - `manage_folders.py` uses `db_accessors.library_db()` pattern (consistent with all other copilot tools) instead of direct Prisma imports **Backend -- folder_id threading**: - `create_agent` and `customize_agent` tools accept optional `folder_id` to save agents directly into a folder - `save_agent_to_library` -> `create_graph_in_library` -> `create_library_agent` pipeline passes `folder_id` through - `create_library_agent` refactored from `asyncio.gather` to sequential loop to support conditional `folderId` assignment on the main graph only (not sub-graphs) **Backend -- system prompt and models**: - Added folder tool descriptions and usage guidance to Otto's system prompt - Added `FolderAgentSummary` model for lightweight agent info in folder listings - Added 6 `ResponseType` enum values and corresponding Pydantic response models (`FolderInfo`, `FolderTreeInfo`, `FolderCreatedResponse`, etc.) **Frontend -- FolderTool UI component**: - `FolderTool.tsx` -- Renders folder operations in chat using the `file-tree` molecule component for tree view, with `FileIcon` for agents and `FolderIcon` for folders (both `text-neutral-600`) - `helpers.ts` -- Type guards, output parsing, animation text helpers, and `FolderAgentSummary` type - `MessagePartRenderer.tsx` -- Routes 6 folder tool types to `FolderTool` component - Flat folder list view shows agents inside `FolderCard` when `include_agents` is set **Frontend -- file-tree molecule**: - Fixed 3 pre-existing lint errors in `file-tree.tsx` (unused `ref`, `handleSelect`, `className` params) - Updated tree indicator line color from `bg-neutral-100` to `bg-neutral-400` for visibility - Added `file-tree.stories.tsx` with 5 stories: Default, AllExpanded, FoldersOnly, WithInitialSelection, NoIndicator - Added `ui/scroll-area.tsx` (dependency of file-tree, was missing from non-legacy ui folder) ### Checklist #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Create a folder via copilot chat ("create a folder called Marketing") - [x] List folders ("show me my folders") - [x] List folders with agents ("show me my folders and the agents in them") - [x] Update folder name/icon/color ("rename Marketing folder to Sales") - [x] Move folder to a different parent ("move Sales into the Projects folder") - [x] Delete a folder and verify agents move to root - [x] Move agents into a folder ("put my newsletter agent in the Marketing folder") - [x] Create agent with folder_id ("create a scraper agent and save it in my Tools folder") - [x] Verify FolderTool UI renders loading, success, error, and empty states correctly - [x] Verify folder tree renders nested folders with file-tree component - [x] Verify agents appear as FileIcon nodes in tree view when include_agents is true - [x] Verify file-tree storybook stories render correctly
19 lines
376 B
JSON
19 lines
376 B
JSON
{
|
|
"$schema": "https://ui.shadcn.com/schema.json",
|
|
"style": "new-york",
|
|
"rsc": true,
|
|
"tsx": true,
|
|
"tailwind": {
|
|
"config": "tailwind.config.ts",
|
|
"css": "src/app/globals.css",
|
|
"baseColor": "neutral",
|
|
"cssVariables": false,
|
|
"prefix": ""
|
|
},
|
|
"iconLibrary": "radix",
|
|
"aliases": {
|
|
"components": "@/components",
|
|
"utils": "@/lib/utils"
|
|
}
|
|
}
|