fix(skills): robustify load_state_json against lone surrogates
Implement a clean_surrogates helper inside lib.sh's load_state_json function to recursively replace lone surrogates (e.g. from partial TUI screen dumps) with replacement chars before printing, preventing UnicodeEncodeError on stdout.
This commit is contained in:
@@ -145,6 +145,16 @@ try:
|
||||
d = yaml.safe_load(f) or {}
|
||||
except Exception:
|
||||
pass
|
||||
# Clean lone surrogates to prevent UnicodeEncodeError on stdout print
|
||||
def clean_surrogates(obj):
|
||||
if isinstance(obj, str):
|
||||
return obj.encode('utf-8', errors='replace').decode('utf-8')
|
||||
elif isinstance(obj, dict):
|
||||
return {k: clean_surrogates(v) for k, v in obj.items()}
|
||||
elif isinstance(obj, list):
|
||||
return [clean_surrogates(x) for x in obj]
|
||||
return obj
|
||||
d = clean_surrogates(d)
|
||||
print(json.dumps(d, ensure_ascii=False))
|
||||
PYEOF
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user