feat(orchestrator): Harden VFS and enhance artifact awareness across workers

This commit is contained in:
Yunxiao Xu
2026-02-23 17:59:33 -08:00
parent 88a27f5a8d
commit 92c30d217e
9 changed files with 126 additions and 7 deletions

View File

@@ -1,4 +1,37 @@
import copy
from typing import Dict, Any, Optional, Tuple, List
from ea_chatbot.utils.logging import get_logger
logger = get_logger("utils:vfs")
def safe_vfs_copy(vfs_state: Dict[str, Any]) -> Dict[str, Any]:
"""
Perform a safe deep copy of the VFS state.
If an entry cannot be deep-copied (e.g., it contains a non-copyable object like a DB handle),
logs an error and replaces the entry with a descriptive error marker.
This prevents crashing the graph/persistence while making the failure explicit.
"""
new_vfs = {}
for filename, data in vfs_state.items():
try:
# Attempt a standard deepcopy for isolation
new_vfs[filename] = copy.deepcopy(data)
except Exception as e:
logger.error(
f"CRITICAL: VFS artifact '{filename}' is NOT copyable/serializable: {str(e)}. "
"Replacing with error placeholder to prevent graph crash."
)
# Replace with a standardized error artifact
new_vfs[filename] = {
"content": f"<ERROR: This artifact could not be persisted or copied: {str(e)}>",
"metadata": {
"type": "error",
"error": str(e),
"original_filename": filename
}
}
return new_vfs
class VFSHelper:
"""Helper class for managing in-memory Virtual File System (VFS) artifacts."""