import type { ConfigManager } from '../config/index.js'; import type { MemoryRegistry } from '../state/index.js'; import { MemoryConsolidationScheduler } from '../state/index.js'; import { SessionLiveTurnControlsHolder } from '../control-plane/index.js'; import { PowerManager, wireRuntimePower } from '../power/index.js'; import type { RuntimeEventBus } from './state.js'; export interface IdlePowerServicesDeps { readonly configManager: ConfigManager; readonly memoryRegistry: MemoryRegistry; readonly runtimeBus: RuntimeEventBus; /** True when no session is busy, the consolidation scheduler's idle gate. */ readonly isIdle: () => boolean; /** Sleep-edge checkpoint + a wake catch-up tick (store snapshots). */ readonly snapshotTick: () => void; /** Wake catch-up: fire the automation heartbeat. */ readonly heartbeat: () => Promise; /** * Host power seam. SDK 1.9.0 makes wireRuntimePower default an absent seam to * the REAL host seam (createHostPowerSeam, which spawns systemd-inhibit and a * dbus-monitor sleep-edge watcher). That spawn is a host-level side effect, so * this fork mirrors the SDK's own createRuntimeServices: when no seam is passed * we default to the NON-spawning unavailable seam, keeping test-constructed * runtimes deterministic. Only the real long-lived compositions (the standalone * daemon and the embedded interactive runtime, which itself IS the daemon) pass * createHostPowerSeam() to opt into live OS keep-awake/idle-inhibit. */ readonly powerSeam?: Parameters[0]['seam']; } export interface IdlePowerServices { readonly memoryConsolidationScheduler: MemoryConsolidationScheduler; readonly powerManager: PowerManager; readonly sessionLiveTurnControls: SessionLiveTurnControlsHolder; } /** Construct (and start) the idle-consolidation scheduler, power manager, and live-turn holder. */ export declare function wireIdlePowerAndLiveTurn(deps: IdlePowerServicesDeps): IdlePowerServices; //# sourceMappingURL=idle-power-services.d.ts.map