openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
50 lines (49 loc) • 3.27 kB
TypeScript
import { i as OpenClawConfig } from "./types.openclaw-DABkiMzt.js";
import { c as SessionBindingRecord, n as BindingTargetKind } from "./session-binding.types-BbT2v6Ty.js";
import { l as unregisterSessionBindingAdapter, s as registerSessionBindingAdapter, t as SessionBindingAdapter } from "./session-binding-service-FRcWK28J.js";
import { f as resolveThreadBindingConversationIdFromBindingId, l as resolveThreadBindingMaxAgeMsForChannel, s as resolveThreadBindingIdleTimeoutMsForChannel } from "./thread-bindings-policy-iUioy5Fe.js";
import { i as resolveThreadBindingFarewellText, n as resolveThreadBindingLifecycle } from "./thread-binding-lifecycle-BboAexP6.js";
//#region src/infra/outbound/account-scoped-conversation-bindings.d.ts
/** In-memory binding record scoped to one channel account and conversation id. */
type AccountScopedConversationBindingRecord<TKind extends string = string> = {
accountId: string;
conversationId: string;
targetKind: TKind;
targetSessionKey: string;
agentId?: string;
label?: string;
boundBy?: string;
boundAt: number;
lastActivityAt: number;
};
/** Account-local binding manager exposed by channel-specific conversation stores. */
type AccountScopedConversationBindingManager<TKind extends string = string> = {
accountId: string;
getByConversationId: (conversationId: string) => AccountScopedConversationBindingRecord<TKind> | undefined;
listBySessionKey: (targetSessionKey: string) => AccountScopedConversationBindingRecord<TKind>[];
bindConversation: (params: {
conversationId: string;
targetKind: BindingTargetKind;
targetSessionKey: string;
metadata?: Record<string, unknown>;
}) => AccountScopedConversationBindingRecord<TKind> | null;
touchConversation: (conversationId: string, at?: number) => AccountScopedConversationBindingRecord<TKind> | null;
unbindConversation: (conversationId: string) => AccountScopedConversationBindingRecord<TKind> | null;
unbindBySessionKey: (targetSessionKey: string) => AccountScopedConversationBindingRecord<TKind>[];
stop: () => void;
};
/** Creates a channel/account binding manager and registers it as a session-binding adapter. */
declare function createAccountScopedConversationBindingManager<TKind extends string>(params: {
channel: string;
cfg: OpenClawConfig;
stateKey: symbol;
accountId?: string | null;
toStoredTargetKind: (raw: BindingTargetKind) => TKind;
toSessionBindingTargetKind: (raw: TKind) => BindingTargetKind;
}): AccountScopedConversationBindingManager<TKind>;
/** Stops registered managers and clears account-scoped binding state for one test key. */
declare function resetAccountScopedConversationBindingsForTests(params: {
stateKey: symbol;
}): void;
//#endregion
export { type AccountScopedConversationBindingManager, type AccountScopedConversationBindingRecord, type BindingTargetKind, type SessionBindingAdapter, type SessionBindingRecord, createAccountScopedConversationBindingManager, registerSessionBindingAdapter, resetAccountScopedConversationBindingsForTests, resolveThreadBindingConversationIdFromBindingId, resolveThreadBindingFarewellText, resolveThreadBindingIdleTimeoutMsForChannel, resolveThreadBindingLifecycle, resolveThreadBindingMaxAgeMsForChannel, unregisterSessionBindingAdapter };