Merge feature/smart-backup: partition-aware flash backup and restore
Adds esp_smart_backup and esp_smart_restore tools with chunked reads, adaptive sizing, skip-empty detection, gzip compression, SHA256 verification, and an esp_backup_plan prompt for pre-flight planning. Hardened against 11 code review findings including path traversal protection, atomic manifest writes, and timeout caps.
This commit is contained in:
commit
c6a55a5e8f
@ -103,6 +103,14 @@ All tools follow a consistent pattern: they return a JSON object with a `success
|
|||||||
| `esp_list_tools` | List all tools by category |
|
| `esp_list_tools` | List all tools by category |
|
||||||
| `esp_health_check` | Environment health check |
|
| `esp_health_check` | Environment health check |
|
||||||
|
|
||||||
|
### Smart Backup (2 tools + 1 prompt)
|
||||||
|
|
||||||
|
| Tool | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `esp_smart_backup` | Partition-aware flash backup with chunked reads, skip-empty, and compression |
|
||||||
|
| `esp_smart_restore` | Restore a partition-aware backup with SHA256 verification before flashing |
|
||||||
|
| `esp_backup_plan` *(prompt)* | Generate an informed backup plan based on device partition layout |
|
||||||
|
|
||||||
### Product Catalog (5 tools)
|
### Product Catalog (5 tools)
|
||||||
|
|
||||||
| Tool | Description |
|
| Tool | Description |
|
||||||
|
|||||||
@ -15,6 +15,7 @@ from .product_catalog import ProductCatalog
|
|||||||
from .production_tools import ProductionTools
|
from .production_tools import ProductionTools
|
||||||
from .qemu_manager import QemuManager
|
from .qemu_manager import QemuManager
|
||||||
from .security_manager import SecurityManager
|
from .security_manager import SecurityManager
|
||||||
|
from .smart_backup import SmartBackupManager
|
||||||
|
|
||||||
# Component registry for dynamic loading
|
# Component registry for dynamic loading
|
||||||
COMPONENT_REGISTRY = {
|
COMPONENT_REGISTRY = {
|
||||||
@ -28,6 +29,7 @@ COMPONENT_REGISTRY = {
|
|||||||
"diagnostics": Diagnostics,
|
"diagnostics": Diagnostics,
|
||||||
"qemu_manager": QemuManager,
|
"qemu_manager": QemuManager,
|
||||||
"product_catalog": ProductCatalog,
|
"product_catalog": ProductCatalog,
|
||||||
|
"smart_backup": SmartBackupManager,
|
||||||
}
|
}
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
@ -41,5 +43,6 @@ __all__ = [
|
|||||||
"Diagnostics",
|
"Diagnostics",
|
||||||
"QemuManager",
|
"QemuManager",
|
||||||
"ProductCatalog",
|
"ProductCatalog",
|
||||||
|
"SmartBackupManager",
|
||||||
"COMPONENT_REGISTRY",
|
"COMPONENT_REGISTRY",
|
||||||
]
|
]
|
||||||
|
|||||||
1116
src/mcesptool/components/smart_backup.py
Normal file
1116
src/mcesptool/components/smart_backup.py
Normal file
File diff suppressed because it is too large
Load Diff
@ -26,6 +26,7 @@ from .components import (
|
|||||||
ProductionTools,
|
ProductionTools,
|
||||||
QemuManager,
|
QemuManager,
|
||||||
SecurityManager,
|
SecurityManager,
|
||||||
|
SmartBackupManager,
|
||||||
)
|
)
|
||||||
from .config import ESPToolServerConfig, get_config, set_config
|
from .config import ESPToolServerConfig, get_config, set_config
|
||||||
|
|
||||||
@ -72,6 +73,7 @@ class ESPToolServer:
|
|||||||
self.components["chip_control"] = ChipControl(self.app, self.config)
|
self.components["chip_control"] = ChipControl(self.app, self.config)
|
||||||
self.components["flash_manager"] = FlashManager(self.app, self.config)
|
self.components["flash_manager"] = FlashManager(self.app, self.config)
|
||||||
self.components["partition_manager"] = PartitionManager(self.app, self.config)
|
self.components["partition_manager"] = PartitionManager(self.app, self.config)
|
||||||
|
self.components["smart_backup"] = SmartBackupManager(self.app, self.config)
|
||||||
|
|
||||||
# Advanced features
|
# Advanced features
|
||||||
self.components["security_manager"] = SecurityManager(self.app, self.config)
|
self.components["security_manager"] = SecurityManager(self.app, self.config)
|
||||||
@ -179,6 +181,10 @@ class ESPToolServer:
|
|||||||
"esp_performance_profile",
|
"esp_performance_profile",
|
||||||
"esp_diagnostic_report",
|
"esp_diagnostic_report",
|
||||||
],
|
],
|
||||||
|
"smart_backup": [
|
||||||
|
"esp_smart_backup",
|
||||||
|
"esp_smart_restore",
|
||||||
|
],
|
||||||
"product_catalog": [
|
"product_catalog": [
|
||||||
"esp_product_search",
|
"esp_product_search",
|
||||||
"esp_product_info",
|
"esp_product_info",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user