mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
* Parallelize Purview PSPC cold cache path * Cache Purview payment-required state for scope refresh * Cache Purview payment-required state for scope refresh * Align Purview policy action dedupe and 402 caching Deduplicate combined policy actions by action and restriction action so restriction-only actions are preserved without duplicating identical entries. Cache tenant-level payment-required state from background scope refresh so subsequent calls short-circuit consistently. * .NET: Implement best-effort caching for background job scope retrieval and add unit tests for cache write failures * Purview - feat: Enhance ScopedContentProcessor to queue ContentActivityJob when no applicable scopes are found and update related tests * docs: Update purview package README and AGENTS documentation to reflect caching optimizations and policy enforcement scenarios Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using Microsoft.Agents.AI.Purview.Models.Common;
|
|
using Microsoft.Agents.AI.Purview.Models.Requests;
|
|
|
|
namespace Microsoft.Agents.AI.Purview.Models.Jobs;
|
|
|
|
/// <summary>
|
|
/// Class representing a job that refreshes the protection scopes cache in the background.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Used by the parallel protection scopes retrieval path to warm the cache without blocking the
|
|
/// foreground ProcessContent call.
|
|
/// </remarks>
|
|
internal sealed class ScopeRetrievalJob : BackgroundJobBase
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="ScopeRetrievalJob"/> class.
|
|
/// </summary>
|
|
/// <param name="request">The protection scopes request to send to Purview.</param>
|
|
/// <param name="cacheKey">The cache key used to store the response.</param>
|
|
/// <param name="processContentRequest">The original process content request that triggered scope retrieval.</param>
|
|
public ScopeRetrievalJob(ProtectionScopesRequest request, ProtectionScopesCacheKey cacheKey, ProcessContentRequest processContentRequest)
|
|
{
|
|
this.Request = request;
|
|
this.CacheKey = cacheKey;
|
|
this.ProcessContentRequest = processContentRequest;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the protection scopes request.
|
|
/// </summary>
|
|
public ProtectionScopesRequest Request { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the cache key used to store the response.
|
|
/// </summary>
|
|
public ProtectionScopesCacheKey CacheKey { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the original process content request that triggered scope retrieval.
|
|
/// </summary>
|
|
public ProcessContentRequest ProcessContentRequest { get; }
|
|
}
|