openclaw/src/infra/outbound/session-context.ts
2026-02-26 21:03:28 +01:00

38 lines
1.1 KiB
TypeScript

import { resolveSessionAgentId } from "../../agents/agent-scope.js";
import type { OpenClawConfig } from "../../config/config.js";
export type OutboundSessionContext = {
/** Canonical session key used for internal hook dispatch. */
key?: string;
/** Active agent id used for workspace-scoped media roots. */
agentId?: string;
};
function normalizeOptionalString(value?: string | null): string | undefined {
if (typeof value !== "string") {
return undefined;
}
const trimmed = value.trim();
return trimmed.length > 0 ? trimmed : undefined;
}
export function buildOutboundSessionContext(params: {
cfg: OpenClawConfig;
sessionKey?: string | null;
agentId?: string | null;
}): OutboundSessionContext | undefined {
const key = normalizeOptionalString(params.sessionKey);
const explicitAgentId = normalizeOptionalString(params.agentId);
const derivedAgentId = key
? resolveSessionAgentId({ sessionKey: key, config: params.cfg })
: undefined;
const agentId = explicitAgentId ?? derivedAgentId;
if (!key && !agentId) {
return undefined;
}
return {
...(key ? { key } : {}),
...(agentId ? { agentId } : {}),
};
}