Files
GEWU/scripts/export_schemas.py
vasily c492124fe1
CI / quality (push) Canceled after 0s
style: fix ruff lint violations across service and tests
Wraps over-long lines, sorts imports, drops an unused local, and bumps the
agent submodule for its own import-sort fix so make check passes.
2026-10-16 20:13:59 +08:00

73 lines
1.5 KiB
Python

"""Export public Pydantic records as versioned JSON Schemas."""
import json
from pathlib import Path
from gewu.domain.contracts import (
AcceptanceManifest,
AutoAcceptPolicy,
DomainError,
ExtractionRecord,
IngestReviewCreate,
IngestReviewDecision,
IngestReviewItem,
KnowledgeNode,
NeighborRequest,
OnlineEvidence,
ProjectRecord,
ProposalReceipt,
ProposalRevision,
ProposalStatus,
ReadEnvelope,
RunCheckpointRequest,
RunCreateRequest,
RunRecord,
Scope,
SearchRequest,
ServiceDiagnostics,
SourceRevisionRecord,
TypedEdge,
)
ROOT = Path(__file__).resolve().parents[1]
DESTINATION = ROOT / "schema" / "v1" / "records"
MODELS = (
AcceptanceManifest,
AutoAcceptPolicy,
DomainError,
ExtractionRecord,
IngestReviewCreate,
IngestReviewDecision,
IngestReviewItem,
KnowledgeNode,
NeighborRequest,
ProjectRecord,
ProposalReceipt,
ProposalRevision,
ProposalStatus,
ReadEnvelope,
ServiceDiagnostics,
RunCheckpointRequest,
RunCreateRequest,
RunRecord,
SearchRequest,
Scope,
SourceRevisionRecord,
TypedEdge,
OnlineEvidence,
)
def main() -> None:
DESTINATION.mkdir(parents=True, exist_ok=True)
for model in MODELS:
output = DESTINATION / f"{model.__name__}.schema.json"
output.write_text(
json.dumps(model.model_json_schema(mode="validation"), indent=2, sort_keys=True) + "\n",
encoding="utf-8",
)
if __name__ == "__main__":
main()