import { O as SessionMaintenanceMode } from "./types.base-iHeWRS8q.js"; import { i as MsgContext } from "./templating-CVr5jMpU.js"; import { t as DeliveryContext } from "./delivery-context.types-DyNhFIjW.js"; import { n as GroupKeyResolution, o as SessionEntry, s as SessionScope } from "./types-Bp0yxyUk.js"; //#region src/config/sessions/disk-budget.d.ts type SessionDiskBudgetSweepResult = { totalBytesBefore: number; totalBytesAfter: number; removedFiles: number; removedEntries: number; freedBytes: number; maxBytes: number; highWaterBytes: number; overBudget: boolean; }; //#endregion //#region src/config/sessions/store-maintenance.d.ts type SessionMaintenanceWarning = { activeSessionKey: string; activeUpdatedAt?: number; totalEntries: number; pruneAfterMs: number; maxEntries: number; wouldPrune: boolean; wouldCap: boolean; }; type ResolvedSessionMaintenanceConfig = { mode: SessionMaintenanceMode; pruneAfterMs: number; maxEntries: number; resetArchiveRetentionMs: number | null; maxDiskBytes: number | null; highWaterBytes: number | null; }; //#endregion //#region src/config/sessions/store-maintenance-operations.d.ts type SessionMaintenanceApplyReport = { mode: ResolvedSessionMaintenanceConfig["mode"]; beforeCount: number; afterCount: number; pruned: number; capped: number; diskBudget: SessionDiskBudgetSweepResult | null; }; //#endregion //#region src/config/sessions/store-writer-state.d.ts /** Clears session store writer queues and cache for tests. */ declare function clearSessionStoreCacheForTest(): void; //#endregion //#region src/config/sessions/store-load.d.ts type LoadSessionStoreOptions = { skipCache?: boolean; maintenanceConfig?: ResolvedSessionMaintenanceConfig; runMaintenance?: boolean; clone?: boolean; hydrateSkillPromptRefs?: boolean; }; declare function loadSessionStore(storePath: string, opts?: LoadSessionStoreOptions): Record; //#endregion //#region src/config/sessions/store-entry.d.ts declare function resolveSessionStoreEntry(params: { store: Record; sessionKey: string; }): { normalizedKey: string; existing: SessionEntry | undefined; legacyKeys: string[]; }; //#endregion //#region src/config/sessions/store.d.ts type SaveSessionStoreOptions = { /** Skip pruning, capping, and rotation (e.g. during one-time migrations). */skipMaintenance?: boolean; /** Caller already proved the store serialization is unchanged unless maintenance mutates it. */ skipSerializeForUnchangedStore?: boolean; /** Internal hot paths can hand writer-owned stores to the cache after persistence. */ takeCacheOwnership?: boolean; /** Active session key for warn-only maintenance. */ activeSessionKey?: string; /** Optional callback for warn-only maintenance. */ onWarn?: (warning: SessionMaintenanceWarning) => void | Promise; /** Optional callback with maintenance stats after a save. */ onMaintenanceApplied?: (report: SessionMaintenanceApplyReport) => void | Promise; /** Optional overrides used by maintenance commands. */ maintenanceOverride?: Partial; /** Fully resolved maintenance settings when the caller already has config loaded. */ maintenanceConfig?: ResolvedSessionMaintenanceConfig; /** Changed top-level entry when a hot path only updated one existing session. */ singleEntryPersistence?: SingleEntryPersistencePatch; /** Throw when best-effort store recovery cannot confirm the requested write. */ requireWriteSuccess?: boolean; }; type UpdateSessionStoreOptions = SaveSessionStoreOptions & { /** * Specialized callers can prove their mutator made no changes through its result. * When true, the writer-owned object cache is restored and sessions.json is untouched. */ skipSaveWhenResult?: (result: T) => boolean; resolveSingleEntryPersistence?: (result: T) => SingleEntryPersistencePatch | null | undefined; }; type SingleEntryPersistencePatch = { sessionKey: string; entry: SessionEntry; }; declare function saveSessionStore(storePath: string, store: Record, opts?: SaveSessionStoreOptions): Promise; declare function updateSessionStore(storePath: string, mutator: (store: Record) => Promise | T, opts?: UpdateSessionStoreOptions): Promise; declare function updateSessionStoreEntry(params: { storePath: string; sessionKey: string; update: (entry: SessionEntry) => Promise | null> | Partial | null; skipMaintenance?: boolean; takeCacheOwnership?: boolean; requireWriteSuccess?: boolean; }): Promise; declare function recordSessionMetaFromInbound(params: { storePath: string; sessionKey: string; ctx: MsgContext; groupResolution?: GroupKeyResolution | null; createIfMissing?: boolean; }): Promise; declare function updateLastRoute(params: { storePath: string; sessionKey: string; channel?: SessionEntry["lastChannel"]; to?: string; accountId?: string; threadId?: string | number; route?: SessionEntry["route"]; deliveryContext?: DeliveryContext; ctx?: MsgContext; groupResolution?: GroupKeyResolution | null; createIfMissing?: boolean; }): Promise; //#endregion //#region src/config/sessions/paths.d.ts declare function resolveSessionTranscriptsDirForAgent(agentId?: string, env?: NodeJS.ProcessEnv, homedir?: () => string): string; type SessionFilePathOptions = { agentId?: string; sessionsDir?: string; }; declare function resolveSessionTranscriptPathInDir(sessionId: string, sessionsDir: string, topicId?: string | number): string; declare function resolveSessionFilePath(sessionId: string, entry?: { sessionFile?: string; }, opts?: SessionFilePathOptions): string; declare function resolveStorePath(store?: string, opts?: { agentId?: string; env?: NodeJS.ProcessEnv; }): string; //#endregion //#region src/config/sessions/session-key.d.ts /** * Derives the raw session bucket from message context before agent/main-key normalization. * * Direct chats use sender identity, groups use channel-owned group keys, and global scope bypasses * sender routing entirely. */ declare function deriveSessionKey(scope: SessionScope, ctx: MsgContext): string; /** * Resolves the persisted session-store key for an inbound message. * * Explicit session keys pass through the compatibility normalizer, direct chats collapse to the * agent's canonical main bucket, and group/channel sessions stay isolated under the same agent. */ declare function resolveSessionKey(scope: SessionScope, ctx: MsgContext, mainKey?: string, agentId?: string): string; //#endregion export { resolveSessionTranscriptsDirForAgent as a, saveSessionStore as c, updateSessionStoreEntry as d, resolveSessionStoreEntry as f, ResolvedSessionMaintenanceConfig as h, resolveSessionTranscriptPathInDir as i, updateLastRoute as l, clearSessionStoreCacheForTest as m, resolveSessionKey as n, resolveStorePath as o, loadSessionStore as p, resolveSessionFilePath as r, recordSessionMetaFromInbound as s, deriveSessionKey as t, updateSessionStore as u };