using System.Text.Json; using System.Text.Json.Serialization; namespace PlotLine.Models; public sealed class SceneIntelligenceScene { public string? SchemaVersion { get; init; } public SceneIntelligenceSceneReference? SceneReference { get; init; } public SceneIntelligenceSummary? Summary { get; init; } public SceneIntelligenceScenePurpose? ScenePurpose { get; init; } public SceneIntelligencePointOfView? PointOfView { get; init; } public SceneIntelligenceSetting? Setting { get; init; } public List? Characters { get; init; } public List? CharacterAppearance { get; init; } public List? Locations { get; init; } public List? Assets { get; init; } public List? Relationships { get; init; } public List? KnowledgeChanges { get; init; } public List? TimelineClues { get; init; } public List? QuestionsRaised { get; init; } public List? QuestionsAnswered { get; init; } public List? Observations { get; init; } public Dictionary? Metrics { get; init; } public SceneIntelligenceSourceLimits? SourceLimits { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceSceneReference { public int? ProjectId { get; init; } public int? BookId { get; init; } public int? ChapterId { get; init; } public int? SceneId { get; init; } public decimal? ChapterNumber { get; init; } public decimal? SceneNumber { get; init; } public string? SourceLabel { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceSummary { public string? Short { get; init; } public string? Detailed { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceScenePurpose { public string? ObservedFunction { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligencePointOfView { public string? CharacterName { get; init; } public string? NarrativeMode { get; init; } public decimal? Confidence { get; init; } public string? Evidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceSetting { public string? TimeOfDay { get; init; } public string? DateOrTimeReference { get; init; } public string? LocationName { get; init; } public string? LocationType { get; init; } public string? GenericRoomType { get; init; } public string? ParentLocationHint { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceCharacter { public string? Name { get; init; } public string? RoleInScene { get; init; } public bool? MentionedOnly { get; init; } public List? Aliases { get; init; } public List? Actions { get; init; } public decimal? Confidence { get; init; } public string? Notes { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceCharacterAppearance { public string? CanonicalName { get; init; } public List? Aliases { get; init; } public string? Title { get; init; } public string? Presentation { get; init; } public string? ExplicitAge { get; init; } public string? InferredAgeBand { get; init; } public string? HairColour { get; init; } public string? HairLength { get; init; } public string? HairStyle { get; init; } public string? FacialHair { get; init; } public string? Glasses { get; init; } public string? Build { get; init; } public List? DistinctiveFeatures { get; init; } public string? Clothing { get; init; } public string? RoleOrOccupation { get; init; } public string? RelationshipAgeEvidence { get; init; } public string? PronounEvidence { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } public string? EvidenceKind { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceLocation { public string? Name { get; init; } public string? LocationType { get; init; } public string? GenericRoomType { get; init; } public string? ParentLocationHint { get; init; } public bool? PresentInScene { get; init; } public bool? MentionedOnly { get; init; } public decimal? Confidence { get; init; } public string? Notes { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceAsset { public string? Name { get; init; } public string? AssetType { get; init; } public string? Status { get; init; } public string? OwnerOrHolder { get; init; } public bool? MentionedOnly { get; init; } public decimal? Confidence { get; init; } public string? Notes { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceRelationship { public string? CharacterA { get; init; } public string? CharacterB { get; init; } public string? RelationshipSignal { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceKnowledgeChange { public string? RecipientCharacter { get; init; } public string? KnowledgeItem { get; init; } public string? ChangeType { get; init; } public string? SourceCharacter { get; init; } public string? SourceType { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceTimelineClue { public string? Clue { get; init; } public string? RelativeOrder { get; init; } public string? AbsoluteDate { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceQuestionRaised { public string? Question { get; init; } public string? Scope { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceQuestionAnswered { public string? Question { get; init; } public string? Answer { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceObservation { public string? ObservationType { get; init; } public string? SubjectEntityType { get; init; } public string? SubjectName { get; init; } public string? ObjectEntityType { get; init; } public string? ObjectName { get; init; } public string? Predicate { get; init; } public string? Description { get; init; } public string? Evidence { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceMetric { public int? Score { get; init; } public decimal? Confidence { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } } public sealed class SceneIntelligenceSourceLimits { public bool? ContainsAmbiguity { get; init; } public List? AmbiguityNotes { get; init; } [JsonExtensionData] public Dictionary? ExtensionData { get; init; } }