From 787fe58298a7e908f22ecd8ddf003ad905b37af9 Mon Sep 17 00:00:00 2001 From: Godopu Date: Sun, 12 Jul 2026 17:19:44 +0900 Subject: [PATCH] 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. --- .agents/skills/lib.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.agents/skills/lib.sh b/.agents/skills/lib.sh index baab853..8bda604 100644 --- a/.agents/skills/lib.sh +++ b/.agents/skills/lib.sh @@ -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 }