From 06ed0eaad5f55fcda547e92327578a686ae265ef Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Fri, 3 Apr 2026 23:27:52 +0900 Subject: [PATCH] fix(ci): narrow discord subagent hook types --- extensions/discord/src/subagent-hooks.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/extensions/discord/src/subagent-hooks.ts b/extensions/discord/src/subagent-hooks.ts index fd9e7ee2f1f..aff17ba13b3 100644 --- a/extensions/discord/src/subagent-hooks.ts +++ b/extensions/discord/src/subagent-hooks.ts @@ -3,6 +3,7 @@ import { resolveDiscordAccount } from "./accounts.js"; import { autoBindSpawnedDiscordSubagent, listThreadBindingsBySessionKey, + type ThreadBindingTargetKind, unbindThreadBindingsBySessionKey, } from "./monitor/thread-bindings.js"; @@ -47,6 +48,14 @@ type DiscordSubagentDeliveryTargetEvent = { }; }; +function normalizeThreadBindingTargetKind(raw?: string): ThreadBindingTargetKind | undefined { + const normalized = raw?.trim().toLowerCase(); + if (normalized === "subagent" || normalized === "acp") { + return normalized; + } + return undefined; +} + function resolveThreadBindingFlags(api: OpenClawPluginApi, accountId?: string) { const account = resolveDiscordAccount({ cfg: api.config, @@ -95,13 +104,14 @@ export async function handleDiscordSubagentSpawning( }; } try { + const agentId = event.agentId?.trim() || "subagent"; const binding = await autoBindSpawnedDiscordSubagent({ accountId: event.requester?.accountId, channel: event.requester?.channel, to: event.requester?.to, threadId: event.requester?.threadId, childSessionKey: event.childSessionKey, - agentId: event.agentId, + agentId, label: event.label, boundBy: "system", }); @@ -125,7 +135,7 @@ export function handleDiscordSubagentEnded(event: DiscordSubagentEndedEvent) { unbindThreadBindingsBySessionKey({ targetSessionKey: event.targetSessionKey, accountId: event.accountId, - targetKind: event.targetKind, + targetKind: normalizeThreadBindingTargetKind(event.targetKind), reason: event.reason, sendFarewell: event.sendFarewell, });