import type { OpenClawConfig } from "../../config/config.js"; import { fireAndForgetHook } from "../../hooks/fire-and-forget.js"; import { createInternalHookEvent, triggerInternalHook } from "../../hooks/internal-hooks.js"; import { deriveInboundMessageHookContext, toInternalMessagePreprocessedContext, toInternalMessageTranscribedContext, } from "../../hooks/message-hook-mappers.js"; import type { FinalizedMsgContext } from "../templating.js"; export function emitPreAgentMessageHooks(params: { ctx: FinalizedMsgContext; cfg: OpenClawConfig; isFastTestEnv: boolean; }): void { if (params.isFastTestEnv) { return; } const sessionKey = params.ctx.SessionKey?.trim(); if (!sessionKey) { return; } const canonical = deriveInboundMessageHookContext(params.ctx); if (canonical.transcript) { fireAndForgetHook( triggerInternalHook( createInternalHookEvent( "message", "transcribed", sessionKey, toInternalMessageTranscribedContext(canonical, params.cfg), ), ), "get-reply: message:transcribed internal hook failed", ); } fireAndForgetHook( triggerInternalHook( createInternalHookEvent( "message", "preprocessed", sessionKey, toInternalMessagePreprocessedContext(canonical, params.cfg), ), ), "get-reply: message:preprocessed internal hook failed", ); }