|
|
@@ -457,11 +457,23 @@ def _parse_input(input_val: Any, schema_cls) -> dict:
|
|
|
try:
|
|
|
data = json.loads(input_val)
|
|
|
except (json.JSONDecodeError, ValueError):
|
|
|
- # Single string → treat as primary param
|
|
|
data = {"file_path": input_val} if "file" in schema_cls.__name__.lower() else {"pattern": input_val}
|
|
|
else:
|
|
|
data = {"file_path": str(input_val)}
|
|
|
|
|
|
+ # Extract nested "input" from ReAct format: {"action":"Tool","input":{...}}
|
|
|
+ if isinstance(data, dict) and "input" in data and ("action" in data or "tool" in data):
|
|
|
+ inner = data["input"]
|
|
|
+ if isinstance(inner, str):
|
|
|
+ try:
|
|
|
+ data = json.loads(inner)
|
|
|
+ except (json.JSONDecodeError, ValueError):
|
|
|
+ data = {"file_path": inner} if "file" in schema_cls.__name__.lower() else {"pattern": inner}
|
|
|
+ elif isinstance(inner, dict):
|
|
|
+ data = inner
|
|
|
+ else:
|
|
|
+ data = {"file_path": str(inner)}
|
|
|
+
|
|
|
try:
|
|
|
validated = schema_cls(**data)
|
|
|
return validated.dict()
|