fix: harden structured agent intake
This commit is contained in:
@@ -408,20 +408,30 @@ def _normalize_nested_output(output: Any, output_schema: dict) -> Any:
|
||||
nested_fields = output.get("fields")
|
||||
if isinstance(nested_fields, dict):
|
||||
fields = _complete_object_shape(nested_fields, field_schema)
|
||||
normalized = dict(output)
|
||||
elif field_codes.intersection(output):
|
||||
fields = _complete_object_shape(
|
||||
{code: output[code] for code in field_codes if code in output},
|
||||
field_schema,
|
||||
)
|
||||
normalized = {
|
||||
code: value
|
||||
for code, value in output.items()
|
||||
if code not in field_codes
|
||||
}
|
||||
else:
|
||||
fields = None
|
||||
if fields is not None:
|
||||
questions = output.get("questions", output.get("follow_up_questions", []))
|
||||
return {
|
||||
"fields": fields,
|
||||
"missing_fields": list(output.get("missing_fields", [])),
|
||||
"questions": list(questions) if isinstance(questions, list) else [],
|
||||
}
|
||||
normalized.pop("follow_up_questions", None)
|
||||
normalized.update(
|
||||
{
|
||||
"fields": fields,
|
||||
"missing_fields": list(output.get("missing_fields", [])),
|
||||
"questions": list(questions) if isinstance(questions, list) else [],
|
||||
}
|
||||
)
|
||||
return normalized
|
||||
return output
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user