def populate_json_schema_response()

in src/nova_act/util/jsonschema.py [0:0]


def populate_json_schema_response(result: ActResult, schema: Dict[str, Any]) -> ActResult:
    if not result.response:
        return ActResult(
            response=result.response,
            parsed_response=None,
            valid_json=False,
            matches_schema=False,
            metadata=result.metadata,
        )
    try:
        parsed_response = json.loads(result.response)
        jsonschema.validate(instance=parsed_response, schema=schema)
    except json.JSONDecodeError:
        return ActResult(
            response=result.response,
            parsed_response=None,
            valid_json=False,
            matches_schema=False,
            metadata=result.metadata,
        )
    except jsonschema.ValidationError:
        return ActResult(
            response=result.response,
            parsed_response=parsed_response,
            valid_json=True,
            matches_schema=False,
            metadata=result.metadata,
        )
    return ActResult(
        response=result.response,
        parsed_response=parsed_response,
        valid_json=True,
        matches_schema=True,
        metadata=result.metadata,
    )