From 8b257703d8c44e8b9c047ecd94ac3cda13ee6668 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 18 Feb 2026 23:08:46 +0000 Subject: [PATCH] refactor(auto-reply): reuse abort session-entry resolver --- src/auto-reply/reply/abort.test.ts | 13 +++++++++++++ src/auto-reply/reply/abort.ts | 2 +- src/auto-reply/reply/commands-session.ts | 15 +-------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/auto-reply/reply/abort.test.ts b/src/auto-reply/reply/abort.test.ts index d8f8a6d5726..e1c1204f561 100644 --- a/src/auto-reply/reply/abort.test.ts +++ b/src/auto-reply/reply/abort.test.ts @@ -10,6 +10,7 @@ import { isAbortRequestText, isAbortTrigger, resetAbortMemoryForTest, + resolveSessionEntryForKey, setAbortMemory, tryFastAbortFromMessage, } from "./abort.js"; @@ -128,6 +129,18 @@ describe("abort detection", () => { expect(getAbortMemory("session-2104")).toBe(true); }); + it("resolves session entry when key exists in store", () => { + const store = { + "session-1": { sessionId: "abc", updatedAt: 0 }, + } as const; + expect(resolveSessionEntryForKey(store, "session-1")).toEqual({ + entry: store["session-1"], + key: "session-1", + }); + expect(resolveSessionEntryForKey(store, "session-2")).toEqual({}); + expect(resolveSessionEntryForKey(undefined, "session-1")).toEqual({}); + }); + it("fast-aborts even when text commands are disabled", async () => { const root = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-abort-")); const storePath = path.join(root, "sessions.json"); diff --git a/src/auto-reply/reply/abort.ts b/src/auto-reply/reply/abort.ts index f51fd37ad0a..4cb89483077 100644 --- a/src/auto-reply/reply/abort.ts +++ b/src/auto-reply/reply/abort.ts @@ -102,7 +102,7 @@ export function formatAbortReplyText(stoppedSubagents?: number): string { return `⚙️ Agent was aborted. Stopped ${stoppedSubagents} ${label}.`; } -function resolveSessionEntryForKey( +export function resolveSessionEntryForKey( store: Record | undefined, sessionKey: string | undefined, ) { diff --git a/src/auto-reply/reply/commands-session.ts b/src/auto-reply/reply/commands-session.ts index 154cbcd6f3f..9f368c9b96a 100644 --- a/src/auto-reply/reply/commands-session.ts +++ b/src/auto-reply/reply/commands-session.ts @@ -12,26 +12,13 @@ import { normalizeUsageDisplay, resolveResponseUsageMode } from "../thinking.js" import { formatAbortReplyText, isAbortTrigger, + resolveSessionEntryForKey, setAbortMemory, stopSubagentsForRequester, } from "./abort.js"; import type { CommandHandler } from "./commands-types.js"; import { clearSessionQueues } from "./queue.js"; -function resolveSessionEntryForKey( - store: Record | undefined, - sessionKey: string | undefined, -) { - if (!store || !sessionKey) { - return {}; - } - const direct = store[sessionKey]; - if (direct) { - return { entry: direct, key: sessionKey }; - } - return {}; -} - function resolveAbortTarget(params: { ctx: { CommandTargetSessionKey?: string | null }; sessionKey?: string;