# Copyright (c) 2025 Patrick Motsch # All rights reserved. """ Unified JSON document schema and helpers used by both generation prompts and renderers. This defines a single canonical template and the supported section types. """ from typing import List # Canonical list of supported section types across the system supportedSectionTypes: List[str] = [ "table", "bullet_list", "heading", "paragraph", "code_block", "image", ] # Canonical JSON template used for AI generation (documents array + sections) # Rendering pipelines can select the first document and read its sections. jsonTemplateDocument: str = """{ "metadata": { "split_strategy": "single_document", "source_documents": [], "extraction_method": "ai_generation" }, "documents": [ { "id": "doc_1", "title": "{{DOCUMENT_TITLE}}", "filename": "document.json", "sections": [ { "id": "section_heading_example", "content_type": "heading", "elements": [ {"level": 1, "text": "Heading Text"} ], "order": 0 }, { "id": "section_paragraph_example", "content_type": "paragraph", "elements": [ {"text": "Paragraph text content"} ], "order": 0 }, { "id": "section_bullet_list_example", "content_type": "bullet_list", "elements": [ { "items": ["Item 1", "Item 2"] } ], "order": 0 }, { "id": "section_table_example", "content_type": "table", "elements": [ { "headers": ["Column 1", "Column 2"], "rows": [ ["Row 1 Col 1", "Row 1 Col 2"], ["Row 2 Col 1", "Row 2 Col 2"] ], "caption": "Table caption" } ], "order": 0 }, { "id": "section_code_example", "content_type": "code_block", "elements": [ { "code": "function example() { return true; }", "language": "javascript" } ], "order": 0 } ] } ] }"""