mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-30 03:00:41 -04:00
- Resolves #10980 - 2nd attempt after #11075 broke some things Fixes unnecessary graph re-saving when no changes were made after initial save. More specifically, this PR fixes two causes of this issue: - Frontend node IDs were being compared to backend IDs, which won't match if the graph has been modified and saved since loading. - `fillDefaults` was being applied to all nodes (including existing ones) on element creation, and empty values were being stripped *post-save* with `removeEmptyStringsAndNulls`. This invisible auto-modification of node input data meant that in some common cases the graph would never be in sync with the backend. ### Changes 🏗️ - Fix node ID handling - Use `node.data.backend_id ?? node.id` instead of `node.id` in `prepareSaveableGraph` - Also map link source/sink IDs to their corresponding backend IDs - Add note about `node.data.backend_id` to `_saveAgent` - Use `node.data.backend_id || node.id` as display ID in `CustomNode` - Prevent auto-modification of node input data on existing nodes - Prune empty values (`undefined`, `null`, `""`) from node input data *pre-save* instead of post-save - Related: improve typing and functionality of `fillObjectDefaultsFromSchema` (moved and renamed from `fillDefaults`) ### 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] Node display ID updates on save - [x] Clicking save a second time (without making more changes) doesn't cause re-save - [x] Updating nodes with dynamic input links (e.g. Create Dictionary Block) doesn't make the links disappear <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Prevented unintended auto-modification of existing nodes during editing * Improved consistency of node and connection identifiers in saved graphs * **Improvements** * Enhanced node title display logic for clearer node identification * Optimized data cleanup utilities for more robust input processing in the builder <!-- end of auto-generated comment: release notes by coderabbit.ai -->