Add or update an installed step entry.
(self, step_id: str, metadata: dict[str, Any])
| 695 | ) from exc |
| 696 | |
| 697 | def add(self, step_id: str, metadata: dict[str, Any]) -> None: |
| 698 | """Add or update an installed step entry.""" |
| 699 | import copy |
| 700 | from datetime import datetime, timezone |
| 701 | |
| 702 | existing = self.data["steps"].get(step_id, {}) |
| 703 | metadata_to_store = copy.deepcopy(metadata) |
| 704 | metadata_to_store["installed_at"] = existing.get( |
| 705 | "installed_at", datetime.now(timezone.utc).isoformat() |
| 706 | ) |
| 707 | metadata_to_store["updated_at"] = datetime.now(timezone.utc).isoformat() |
| 708 | self.data["steps"][step_id] = metadata_to_store |
| 709 | self.save() |
| 710 | |
| 711 | def remove(self, step_id: str) -> bool: |
| 712 | """Remove an installed step entry. Returns True if found.""" |