40 lines · 1.1 KB · TypeScript
RawDownload
/** * CheckpointReactor - Checkpoint reaction service interface. * * Owns background workers that react to orchestration checkpoint lifecycle * events and apply checkpoint side effects. * * @module CheckpointReactor */import { ServiceMap } from "effect";import type { Effect, Scope } from "effect"; /** * CheckpointReactorShape - Service API for checkpoint reactor lifecycle. */export interface CheckpointReactorShape {  /**   * Start the checkpoint reactor.   *   * The returned effect must be run in a scope so all worker fibers can be   * finalized on shutdown.   *   * Consumes both orchestration-domain and provider-runtime events via an   * internal queue.   */  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>;} /** * CheckpointReactor - Service tag for checkpoint reactor workers. */export class CheckpointReactor extends ServiceMap.Service<  CheckpointReactor,  CheckpointReactorShape>()("t3/orchestration/Services/CheckpointReactor") {}