summaryrefslogtreecommitdiff
path: root/server/continuedev/models/generate_json_schema.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/continuedev/models/generate_json_schema.py')
-rw-r--r--server/continuedev/models/generate_json_schema.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/server/continuedev/models/generate_json_schema.py b/server/continuedev/models/generate_json_schema.py
new file mode 100644
index 00000000..88a1db68
--- /dev/null
+++ b/server/continuedev/models/generate_json_schema.py
@@ -0,0 +1,54 @@
+import os
+
+from pydantic import schema_json_of
+
+from ..core.config import ContinueConfig
+from ..core.context import ContextItem
+from ..core.main import FullState, History, HistoryNode, SessionInfo
+from ..core.models import Models
+from ..libs.llm.base import LLM
+from .filesystem import FileEdit, RangeInFile
+from .filesystem_edit import FileEditWithFullContents
+from .main import Position, Range, Traceback, TracebackFrame
+
+MODELS_TO_GENERATE = (
+ [Position, Range, Traceback, TracebackFrame]
+ + [RangeInFile, FileEdit]
+ + [FileEditWithFullContents]
+ + [History, HistoryNode, FullState, SessionInfo]
+ + [ContinueConfig]
+ + [ContextItem]
+ + [Models]
+ + [LLM]
+)
+
+RENAMES = {"ExampleClass": "RenamedName"}
+
+SCHEMA_DIR = "../schema/json"
+
+
+def clear_schemas():
+ for filename in os.listdir(SCHEMA_DIR):
+ if filename.endswith(".json"):
+ os.remove(os.path.join(SCHEMA_DIR, filename))
+
+
+def main():
+ clear_schemas()
+ for model in MODELS_TO_GENERATE:
+ title = RENAMES.get(model.__name__, model.__name__)
+ try:
+ json = schema_json_of(model, indent=2, title=title)
+ except Exception as e:
+ import traceback
+
+ print(f"Failed to generate json schema for {title}: {e}")
+ traceback.print_exc()
+ continue # pun intended
+
+ with open(f"{SCHEMA_DIR}/{title}.json", "w") as f:
+ f.write(json)
+
+
+if __name__ == "__main__":
+ main()