// 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;