// Copyright (c) Microsoft. All rights reserved.
namespace Microsoft.Agents.AI.DurableTask;
///
/// Marker class used to track whether core durable task services have been registered.
///
///
///
/// Problem it solves: Users may call configuration methods multiple times:
///
/// services.ConfigureDurableOptions(...); // 1st call - registers agent A
/// services.ConfigureDurableOptions(...); // 2nd call - registers workflow X
/// services.ConfigureDurableOptions(...); // 3rd call - registers agent B and workflow Y
///
/// Each call invokes EnsureDurableServicesRegistered. Without this marker, core services like
/// AddDurableTaskWorker and AddDurableTaskClient would be registered multiple times,
/// causing runtime errors or unexpected behavior.
///
///
/// How it works:
///
/// - First call: No marker in services → register marker + all core services
/// - Subsequent calls: Marker exists → early return, skip core service registration
///
///
///
/// Why not use TryAddSingleton for everything?
/// While TryAddSingleton prevents duplicate simple service registrations, it doesn't work for
/// complex registrations like AddDurableTaskWorker which have side effects and configure
/// internal builders. The marker pattern provides a clean, explicit guard for the entire registration block.
///
///
internal sealed class DurableServicesMarker;