diff --git a/extensions/qa-lab/src/harness-runtime.ts b/extensions/qa-lab/src/harness-runtime.ts index 1207f287e18..6a26ec06c1f 100644 --- a/extensions/qa-lab/src/harness-runtime.ts +++ b/extensions/qa-lab/src/harness-runtime.ts @@ -1,3 +1,10 @@ +import { + buildMentionRegexes, + implicitMentionKindWhen, + matchesMentionPatterns, + matchesMentionWithExplicit, + resolveInboundMentionDecision, +} from "openclaw/plugin-sdk/channel-inbound"; import type { PluginRuntime } from "openclaw/plugin-sdk/runtime-store"; type SessionRecord = { @@ -5,10 +12,6 @@ type SessionRecord = { body: string; }; -function escapeRegExp(value: string): string { - return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); -} - export function createQaRunnerRuntime(): PluginRuntime { const sessions = new Map(); return { @@ -53,13 +56,11 @@ export function createQaRunnerRuntime(): PluginRuntime { }, }, mentions: { - buildMentionRegexes(_cfg: unknown, agentId?: string) { - const normalized = agentId?.trim(); - return normalized ? [new RegExp(`\\b@?${escapeRegExp(normalized)}\\b`, "i")] : []; - }, - matchesMentionPatterns(text: string, mentionRegexes: RegExp[]) { - return mentionRegexes.some((regex) => regex.test(text)); - }, + buildMentionRegexes, + matchesMentionPatterns, + matchesMentionWithExplicit, + implicitMentionKindWhen, + resolveInboundMentionDecision, }, reply: { resolveEnvelopeFormatOptions() {