/** * Outbound effect supervisor assembly for the internal sync service bootstrap. * * Builds the durable effect worker supervisor over the shared SQLite adapter * and the coordinated remote provider, and attaches the periodic System_State * reconciliation (plus User_Input cleanup) scan as the supervisor's lazy * repair net. Worker knobs, report/error hooks, reconciliation cadence, and * the fail-open scan error logging are unchanged from the single-module * bootstrap. */ import type { SyncServiceStorage } from "./compositionPorts.js"; import type { TypedSheetsEntityMapping } from "../../orm/mapping/contracts.js"; import type { TypedSheetsEntityWriterOptions } from "../../../contracts/sync-orm/writer.js"; import type { InternalSyncServiceOptions } from "./serviceOptions.js"; import type { RequestTelemetry } from "./requestTelemetry.js"; import type { SyncSheetsProvider } from "../../../contracts/sheets/syncSheets.js"; import { type EffectWorkerSupervisor } from "@hikoutei/ikisaki"; /** * RECONCILIATION_SCAN_INTERVAL_MS — cadence between System_State reconciliation scans * attached to the loop — and RECONCILIATION_INITIAL_DELAY_MS — delay before the FIRST * reconciliation scan for the real Google provider — come from `./cadence.js` * (single source of application-layer cadence; env-less by design). * * Why the initial delay exists: a cold-start service opens with the whole initial * backlog already in the outbox; an immediate scan would compete with the * System_State drain on the shared request-start limiter. Delaying the first scan * by one cadence (and additionally gating it on outbox drain readiness, see below) * keeps the scanner out of the critical convergence path. Injected test providers * keep the generic supervisor default of 0 (immediate first scan). */ /** Inputs shared with the composition root's runtime and remote provider. */ export interface CreateEffectSupervisorInput { readonly storage: SyncServiceStorage; readonly mappings: readonly TypedSheetsEntityMapping[]; readonly provider: SyncSheetsProvider; readonly writer: TypedSheetsEntityWriterOptions; readonly effectWorkerId: string; readonly options: InternalSyncServiceOptions; /** Optional request-telemetry window flushed at every non-idle pass. */ readonly requestTelemetry?: RequestTelemetry; } export declare function createEffectSupervisor(input: CreateEffectSupervisorInput): EffectWorkerSupervisor; //# sourceMappingURL=effectSupervisor.d.ts.map