openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
40 lines (39 loc) • 2.24 kB
JavaScript
import { t as formatErrorMessage } from "./errors-BvOkmQM5.mjs";
import { r as logVerbose } from "./globals-yEiTitH8.mjs";
import { n as getAcpSessionManager } from "./manager-sn_kcSXp.mjs";
import { c as readAcpSessionEntryAsync } from "./session-meta-CSN8P5u2.mjs";
import { a as listSessionBindingsBySessionAsync, t as getSessionBindingService } from "./session-binding-service-wvWqRl2A.mjs";
//#region src/auto-reply/reply/dispatch-acp-manager.runtime.ts
/** Runtime ACP manager dependencies and stale-binding cleanup used by reply dispatch. */
const ACP_STALE_BINDING_UNBIND_REASON = "acp-session-init-failed";
/** Prepare transcript evidence before offering synchronous reply completion ownership. */
async function prepareAcpDispatchStart(params) {
const { agentId, sessionKey, storePath } = params.scope;
const transcriptStart = params.onAgentRunStart && params.sessionId ? await (await import("./session-transcript-watermark-DMCmSIGy.mjs")).readSessionTranscriptStartAsync({
agentId,
sessionKey,
storePath,
sessionId: params.sessionId
}) : null;
return () => {
const owner = params.onAgentRunStart?.(params.runId, void 0, {
completionSource: "reply-dispatch",
getResult: params.getResult
}, transcriptStart);
return owner === "reply-dispatch" ? owner : void 0;
};
}
async function maybeUnbindStaleBoundConversations(params) {
if (params.error.code !== "ACP_SESSION_INIT_FAILED" || !/(ACP (session )?metadata is missing|missing ACP metadata|Session is not ACP-enabled|Resource not found)/i.test(params.error.message)) return;
try {
const removed = await getSessionBindingService().unbind({
targetSessionKey: params.targetSessionKey,
reason: ACP_STALE_BINDING_UNBIND_REASON
});
if (removed.length > 0) logVerbose(`dispatch-acp: removed ${removed.length} stale bound conversation(s) for ${params.targetSessionKey} after ${params.error.code}: ${params.error.message}`);
} catch (error) {
logVerbose(`dispatch-acp: failed to unbind stale bound conversations for ${params.targetSessionKey}: ${formatErrorMessage(error)}`);
}
}
//#endregion
export { getAcpSessionManager, listSessionBindingsBySessionAsync, maybeUnbindStaleBoundConversations, prepareAcpDispatchStart, readAcpSessionEntryAsync };