chore(conductor): Mark track 'Curate Provider Registries' as complete. Includes critical fixes for RecursionError, NoneType Hook API responses, and plurality mismatches.
This commit is contained in:
+14
-10
@@ -31,6 +31,7 @@ Thread Safety:
|
||||
"""
|
||||
import queue
|
||||
from typing import Callable, Any, Dict, List, Tuple, Optional
|
||||
from pathlib import Path
|
||||
|
||||
class EventEmitter:
|
||||
"""
|
||||
@@ -142,20 +143,23 @@ class UserRequestEvent:
|
||||
self.base_dir = base_dir
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
# Ensure all file items and base_dir are JSON serializable
|
||||
serializable_files = []
|
||||
for f in self.file_items:
|
||||
if hasattr(f, 'to_dict'):
|
||||
serializable_files.append(f.to_dict())
|
||||
elif isinstance(f, (str, dict, list, int, float, bool, type(None))):
|
||||
serializable_files.append(f)
|
||||
else:
|
||||
serializable_files.append(str(f))
|
||||
def _make_serializable(obj: Any) -> Any:
|
||||
if isinstance(obj, dict):
|
||||
return {k: _make_serializable(v) for k, v in obj.items()}
|
||||
if isinstance(obj, list):
|
||||
return [_make_serializable(x) for x in obj]
|
||||
if isinstance(obj, Path):
|
||||
return str(obj)
|
||||
if hasattr(obj, 'to_dict'):
|
||||
return obj.to_dict()
|
||||
if not isinstance(obj, (str, int, float, bool, type(None))):
|
||||
return str(obj)
|
||||
return obj
|
||||
|
||||
return {
|
||||
"prompt": self.prompt,
|
||||
"stable_md": self.stable_md,
|
||||
"file_items": serializable_files,
|
||||
"file_items": _make_serializable(self.file_items),
|
||||
"disc_text": self.disc_text,
|
||||
"base_dir": str(self.base_dir)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user