package validate import ( "context" "gitea.maximumdirect.net/eric/promptkit/internal/domain" ) // Validator validates the generated artifact based on the output contract. type Validator interface { Validate(ctx context.Context, artifact *domain.Artifact, contract domain.OutputContract) (domain.ValidationResult, error) } // PreparedValidation validates artifacts against one frozen output contract. type PreparedValidation interface { Validate(ctx context.Context, artifact *domain.Artifact) (domain.ValidationResult, error) // SchemaDocument returns the root JSON Schema document used for provider // structured output, or nil for non-schema modes. Returned internal // immutable state must not be mutated. SchemaDocument() any } // ValidationPreparer freezes validation resources for one output contract. type ValidationPreparer interface { PrepareValidation(ctx context.Context, contract domain.OutputContract) (PreparedValidation, error) } // SchemaDocumentLoader loads JSON schema documents using validator path semantics. type SchemaDocumentLoader interface { LoadSchemaDocument(ctx context.Context, schemaPath string) (any, error) }