mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
fix(blocks): validate AgentExecutorBlock inputs against nested inputs dict
get_missing_input() and get_mismatch_error() were checking required fields from the inner agent's input_schema against the top-level node data keys (inputs, user_id, graph_id, etc.) instead of against data["inputs"] where the actual field values live. This caused any AgentExecutorBlock with required inner-agent inputs to fail validation with "This field is required" even when the values were correctly provided in the inputs dict.
This commit is contained in:
@@ -49,11 +49,17 @@ class AgentExecutorBlock(Block):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def get_missing_input(cls, data: BlockInput) -> set[str]:
|
def get_missing_input(cls, data: BlockInput) -> set[str]:
|
||||||
required_fields = cls.get_input_schema(data).get("required", [])
|
required_fields = cls.get_input_schema(data).get("required", [])
|
||||||
return set(required_fields) - set(data)
|
# Check against the nested `inputs` dict, not the top-level node
|
||||||
|
# data — required fields like "topic" live inside data["inputs"],
|
||||||
|
# not at data["topic"].
|
||||||
|
provided = data.get("inputs", {})
|
||||||
|
return set(required_fields) - set(provided)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def get_mismatch_error(cls, data: BlockInput) -> str | None:
|
def get_mismatch_error(cls, data: BlockInput) -> str | None:
|
||||||
return validate_with_jsonschema(cls.get_input_schema(data), data)
|
return validate_with_jsonschema(
|
||||||
|
cls.get_input_schema(data), data.get("inputs", {})
|
||||||
|
)
|
||||||
|
|
||||||
class Output(BlockSchema):
|
class Output(BlockSchema):
|
||||||
# Use BlockSchema to avoid automatic error field that could clash with graph outputs
|
# Use BlockSchema to avoid automatic error field that could clash with graph outputs
|
||||||
|
|||||||
Reference in New Issue
Block a user