import { normalizeAccountId } from "../../utils/account-id.js"; import { resolveMessageChannel } from "../../utils/message-channel.js"; import type { AgentCommandOpts, AgentRunContext } from "./types.js"; export function resolveAgentRunContext(opts: AgentCommandOpts): AgentRunContext { const merged: AgentRunContext = opts.runContext ? { ...opts.runContext } : {}; const normalizedChannel = resolveMessageChannel( merged.messageChannel ?? opts.messageChannel, opts.replyChannel ?? opts.channel, ); if (normalizedChannel) merged.messageChannel = normalizedChannel; const normalizedAccountId = normalizeAccountId(merged.accountId ?? opts.accountId); if (normalizedAccountId) merged.accountId = normalizedAccountId; const groupId = (merged.groupId ?? opts.groupId)?.toString().trim(); if (groupId) merged.groupId = groupId; const groupChannel = (merged.groupChannel ?? opts.groupChannel)?.toString().trim(); if (groupChannel) merged.groupChannel = groupChannel; const groupSpace = (merged.groupSpace ?? opts.groupSpace)?.toString().trim(); if (groupSpace) merged.groupSpace = groupSpace; if ( merged.currentThreadTs == null && opts.threadId != null && opts.threadId !== "" && opts.threadId !== null ) { merged.currentThreadTs = String(opts.threadId); } return merged; }