Files
openclaw/src/auto-reply/reply/dispatch-acp-transcript.runtime.ts
2026-04-25 13:38:58 +01:00

57 lines
1.7 KiB
TypeScript

import { resolveAcpSessionCwd } from "../../acp/runtime/session-identifiers.js";
import { resolveSessionAgentId } from "../../agents/agent-scope.js";
import { persistAcpTurnTranscript } from "../../agents/command/attempt-execution.js";
import {
loadSessionStore,
resolveSessionStoreEntry,
resolveStorePath,
} from "../../config/sessions.js";
import type { SessionAcpMeta } from "../../config/sessions/types.js";
import type { OpenClawConfig } from "../../config/types.openclaw.js";
export async function persistAcpDispatchTranscript(params: {
cfg: OpenClawConfig;
sessionKey: string;
promptText: string;
finalText: string;
meta?: SessionAcpMeta;
threadId?: string | number;
}): Promise<void> {
const promptText = params.promptText.trim();
const finalText = params.finalText.trim();
if (!promptText && !finalText) {
return;
}
const sessionAgentId = resolveSessionAgentId({
sessionKey: params.sessionKey,
config: params.cfg,
});
const storePath = resolveStorePath(params.cfg.session?.store, {
agentId: sessionAgentId,
});
const sessionStore = loadSessionStore(storePath, { skipCache: true });
const sessionEntry = resolveSessionStoreEntry({
store: sessionStore,
sessionKey: params.sessionKey,
}).existing;
const sessionId = sessionEntry?.sessionId;
if (!sessionId) {
throw new Error(`unknown ACP session key: ${params.sessionKey}`);
}
await persistAcpTurnTranscript({
body: promptText,
transcriptBody: promptText,
finalText,
sessionId,
sessionKey: params.sessionKey,
sessionEntry,
sessionStore,
storePath,
sessionAgentId,
threadId: params.threadId,
sessionCwd: resolveAcpSessionCwd(params.meta) ?? process.cwd(),
});
}