UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

61 lines 2.58 kB
import { r as OpenClawConfig } from "./types.openclaw-BdCLfP4c.js"; //#region src/auto-reply/inbound-debounce.d.ts /** Resolve effective inbound debounce milliseconds from explicit, channel, and global config. */ declare function resolveInboundDebounceMs(params: { cfg: OpenClawConfig; channel: string; overrideMs?: number; }): number; /** A flush releases its debounce lane at admission while completion remains drainable. */ type InboundDebounceFlush = { admission: Promise<void>; completion: Promise<void>; }; type InboundDebounceAdmissionLifecycleInput = { abortSignal?: AbortSignal; onAdopted?: () => void | Promise<void>; onDeferred?: () => boolean | void; onDeferredHeartbeat?: () => void; onAdoptionFinalizing?: () => void; onFailed?: (error: unknown) => void | Promise<void>; onAbandoned?: () => void | Promise<void>; }; /** Lifecycle shape passed to a channel dispatch so it can signal session-lane admission. */ type InboundDebounceAdmissionLifecycle = { abortSignal: AbortSignal; onAdopted: () => Promise<void>; onDeferred: () => boolean | void; onDeferredHeartbeat?: () => void; onAdoptionFinalizing: () => void; onFailed?: (error: unknown) => Promise<void>; onAbandoned: () => Promise<void>; }; /** * Start one flush and bind its admission signal to the turn lifecycle. * Completion also releases admission for gated work that never enters a session lane. */ declare function createInboundDebounceFlush(params: { lifecycle?: InboundDebounceAdmissionLifecycleInput; dispatch: (lifecycle: InboundDebounceAdmissionLifecycle) => Promise<void>; }): InboundDebounceFlush; /** Options for creating a keyed inbound debouncer. */ type InboundDebounceCreateParams<T> = { debounceMs: number; maxTrackedKeys?: number; buildKey: (item: T) => string | null | undefined; shouldDebounce?: (item: T) => boolean; resolveDebounceMs?: (item: T) => number | undefined; serializeImmediate?: boolean; onFlush: (items: T[], createFlush: typeof createInboundDebounceFlush) => InboundDebounceFlush; onError?: (err: unknown, items: T[]) => void; onCancel?: (items: T[]) => void; }; /** Create a keyed debouncer with flush/cancel controls and same-key serialization. */ declare function createInboundDebouncer<T>(params: InboundDebounceCreateParams<T>): { enqueue: (item: T) => Promise<void>; flushKey: (key: string) => Promise<void>; cancelKey: (key: string) => boolean; drain: () => Promise<void>; }; //#endregion export { createInboundDebouncer as n, resolveInboundDebounceMs as r, InboundDebounceCreateParams as t };