67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { resolveSessionAgentId } from "../../agents/agent-scope.js";
|
|
import type { OpenClawConfig } from "../../config/config.js";
|
|
|
|
export type SessionHookContext = {
|
|
sessionId: string;
|
|
sessionKey: string;
|
|
agentId: string;
|
|
};
|
|
|
|
function buildSessionHookContext(params: {
|
|
sessionId: string;
|
|
sessionKey: string;
|
|
cfg: OpenClawConfig;
|
|
}): SessionHookContext {
|
|
return {
|
|
sessionId: params.sessionId,
|
|
sessionKey: params.sessionKey,
|
|
agentId: resolveSessionAgentId({ sessionKey: params.sessionKey, config: params.cfg }),
|
|
};
|
|
}
|
|
|
|
export function buildSessionStartHookPayload(params: {
|
|
sessionId: string;
|
|
sessionKey: string;
|
|
cfg: OpenClawConfig;
|
|
resumedFrom?: string;
|
|
}): {
|
|
event: { sessionId: string; sessionKey: string; resumedFrom?: string };
|
|
context: SessionHookContext;
|
|
} {
|
|
return {
|
|
event: {
|
|
sessionId: params.sessionId,
|
|
sessionKey: params.sessionKey,
|
|
resumedFrom: params.resumedFrom,
|
|
},
|
|
context: buildSessionHookContext({
|
|
sessionId: params.sessionId,
|
|
sessionKey: params.sessionKey,
|
|
cfg: params.cfg,
|
|
}),
|
|
};
|
|
}
|
|
|
|
export function buildSessionEndHookPayload(params: {
|
|
sessionId: string;
|
|
sessionKey: string;
|
|
cfg: OpenClawConfig;
|
|
messageCount?: number;
|
|
}): {
|
|
event: { sessionId: string; sessionKey: string; messageCount: number };
|
|
context: SessionHookContext;
|
|
} {
|
|
return {
|
|
event: {
|
|
sessionId: params.sessionId,
|
|
sessionKey: params.sessionKey,
|
|
messageCount: params.messageCount ?? 0,
|
|
},
|
|
context: buildSessionHookContext({
|
|
sessionId: params.sessionId,
|
|
sessionKey: params.sessionKey,
|
|
cfg: params.cfg,
|
|
}),
|
|
};
|
|
}
|