using AIStudio.Provider; namespace AIStudio.Tools.Web; /// /// A web page or text document as the retrieval service read it. /// /// /// Nothing here is filtered for prompt injections yet. Everything a caller hands on to a model /// has to go through the WebPageContentSanitizer or the PromptInjectionGuardService first, after /// it was cut down to what the model actually gets: only that part needs checking, and a page /// can be far larger. /// public sealed class RetrievedWebPage { public required HTMLParserWebPage Page { get; init; } /// /// Whether the content was extracted from an HTML page or is the text of a document. /// public required WebContentKind ContentKind { get; init; } public required ExtractedWebPage ExtractedPage { get; init; } public required DateTimeOffset RetrievedAtUtc { get; init; } public ConfidenceLevel RequiredProviderConfidence { get; init; } = ConfidenceLevel.NONE; /// /// Whether the page was read from a non-public address, such as one in the intranet or behind /// a VPN. /// /// /// Only the request which returned the page counts, the last one after every redirect: it is /// where the content came from. A public address which redirects into the intranet therefore /// counts, and an intranet address which redirects to a public page, such as a sign-in page, /// does not.

/// The content of such a page is internal, so a caller which hands it to a model has to keep /// it from leaving the organization. Stated here rather than read from /// RequiredProviderConfidence, which answers another question: it counts every request, so the /// address of an intranet page does not reach a less trusted provider either. ///
public bool ReachedNonPublicAddress { get; init; } }