42 lines · 1.4 KB · TypeScript
RawDownload
/** * ProviderCommandReactor - Provider command reaction service interface. * * Owns background workers that react to orchestration intent events and * dispatch provider-side command execution. * * @module ProviderCommandReactor */import * as Context from "effect/Context";import type * as Effect from "effect/Effect";import type * as Scope from "effect/Scope"; /** * ProviderCommandReactorShape - Service API for provider command reactors. */export interface ProviderCommandReactorShape {  /**   * Start reacting to provider-intent orchestration domain events.   *   * The returned effect must be run in a scope so all worker fibers can be   * finalized on shutdown.   * It subscribes before returning. Event handling waits for server activation.   *   * Filters orchestration domain events to provider-intent types before   * processing.   */  readonly start: () => Effect.Effect<void, never, Scope.Scope>;   /**   * Resolves when the internal processing queue is empty and idle.   * Intended for test use to replace timing-sensitive sleeps.   */  readonly drain: Effect.Effect<void>;} /** * ProviderCommandReactor - Service tag for provider command reaction workers. */export class ProviderCommandReactor extends Context.Service<  ProviderCommandReactor,  ProviderCommandReactorShape>()("t3/orchestration/Services/ProviderCommandReactor") {}