mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-26 17:32:16 +00:00
Hooks: add hook idempotency key resolution
This commit is contained in:
@@ -223,6 +223,7 @@ export type HookAgentPayload = {
|
||||
message: string;
|
||||
name: string;
|
||||
agentId?: string;
|
||||
idempotencyKey?: string;
|
||||
wakeMode: "now" | "next-heartbeat";
|
||||
sessionKey?: string;
|
||||
deliver: boolean;
|
||||
@@ -263,6 +264,21 @@ export function resolveHookDeliver(raw: unknown): boolean {
|
||||
return raw !== false;
|
||||
}
|
||||
|
||||
function resolveOptionalHookIdempotencyKey(raw: unknown): string | undefined {
|
||||
return typeof raw === "string" && raw.trim() ? raw.trim() : undefined;
|
||||
}
|
||||
|
||||
export function resolveHookIdempotencyKey(params: {
|
||||
payload: Record<string, unknown>;
|
||||
headers?: Record<string, string>;
|
||||
}): string | undefined {
|
||||
return (
|
||||
resolveOptionalHookIdempotencyKey(params.headers?.["idempotency-key"]) ||
|
||||
resolveOptionalHookIdempotencyKey(params.headers?.["x-openclaw-idempotency-key"]) ||
|
||||
resolveOptionalHookIdempotencyKey(params.payload.idempotencyKey)
|
||||
);
|
||||
}
|
||||
|
||||
export function resolveHookTargetAgentId(
|
||||
hooksConfig: HooksConfigResolved,
|
||||
agentId: string | undefined,
|
||||
@@ -366,6 +382,7 @@ export function normalizeAgentPayload(payload: Record<string, unknown>):
|
||||
const agentIdRaw = payload.agentId;
|
||||
const agentId =
|
||||
typeof agentIdRaw === "string" && agentIdRaw.trim() ? agentIdRaw.trim() : undefined;
|
||||
const idempotencyKey = resolveOptionalHookIdempotencyKey(payload.idempotencyKey);
|
||||
const wakeMode = payload.wakeMode === "next-heartbeat" ? "next-heartbeat" : "now";
|
||||
const sessionKeyRaw = payload.sessionKey;
|
||||
const sessionKey =
|
||||
@@ -396,6 +413,7 @@ export function normalizeAgentPayload(payload: Record<string, unknown>):
|
||||
message,
|
||||
name,
|
||||
agentId,
|
||||
idempotencyKey,
|
||||
wakeMode,
|
||||
sessionKey,
|
||||
deliver,
|
||||
|
||||
Reference in New Issue
Block a user