diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 6fbd5f486..8b40ff9dc 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -12,6 +12,7 @@ import backoff import git import openai import requests +from jsonschema import Draft7Validator from openai.error import APIError, RateLimitError, ServiceUnavailableError, Timeout from rich.console import Console, Text from rich.live import Live @@ -187,6 +188,15 @@ class Coder: for fname in self.get_inchat_relative_files(): self.io.tool_output(f"Added {fname} to the chat.") + # validate the functions jsonschema + if hasattr(self, "functions"): + for function in self.functions: + Draft7Validator.check_schema(function) + + if self.verbose: + self.io.tool_output("JSON Schema:") + self.io.tool_output(json.dumps(self.functions, indent=4)) + def find_common_root(self): if len(self.abs_fnames) == 1: self.root = os.path.dirname(list(self.abs_fnames)[0]) diff --git a/aider/coders/editblock_func_coder.py b/aider/coders/editblock_func_coder.py index 565460b75..676952938 100644 --- a/aider/coders/editblock_func_coder.py +++ b/aider/coders/editblock_func_coder.py @@ -1,7 +1,5 @@ import json -from jsonschema import Draft7Validator - from ..dump import dump # noqa: F401 from .base_coder import Coder from .editblock_coder import do_replace @@ -82,8 +80,6 @@ class EditBlockFunctionCoder(Coder): "updated_lines" ] = updated_lines - Draft7Validator.check_schema(self.functions[0]) - self.gpt_prompts = EditBlockFunctionPrompts() super().__init__(*args, **kwargs) diff --git a/aider/coders/single_wholefile_func_coder.py b/aider/coders/single_wholefile_func_coder.py index f6bdd47d9..b6368311a 100644 --- a/aider/coders/single_wholefile_func_coder.py +++ b/aider/coders/single_wholefile_func_coder.py @@ -1,7 +1,5 @@ import os -from jsonschema import Draft7Validator - from aider import diffs from ..dump import dump # noqa: F401 @@ -35,8 +33,6 @@ class SingleWholeFileFunctionCoder(Coder): ] def __init__(self, *args, **kwargs): - Draft7Validator.check_schema(self.functions[0]) - self.gpt_prompts = SingleWholeFileFunctionPrompts() super().__init__(*args, **kwargs) diff --git a/aider/coders/wholefile_func_coder.py b/aider/coders/wholefile_func_coder.py index 26785a87c..f45ef48a7 100644 --- a/aider/coders/wholefile_func_coder.py +++ b/aider/coders/wholefile_func_coder.py @@ -1,7 +1,5 @@ import os -from jsonschema import Draft7Validator - from aider import diffs from ..dump import dump # noqa: F401 @@ -48,8 +46,6 @@ class WholeFileFunctionCoder(Coder): ] def __init__(self, *args, **kwargs): - Draft7Validator.check_schema(self.functions[0]) - self.gpt_prompts = WholeFileFunctionPrompts() super().__init__(*args, **kwargs)