From 14c54c194108b423a01e69f988917aa673c3049f Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 8 Jan 2026 23:47:20 +0900 Subject: [PATCH] fix(hook-message-injector): preserve agent info with two-pass message lookup findNearestMessageWithFields now has a fallback pass that returns messages with ANY useful field (agent OR model) instead of requiring ALL fields. This prevents parentAgent from being lost when stored messages don't have complete model info. --- src/features/hook-message-injector/injector.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/features/hook-message-injector/injector.ts b/src/features/hook-message-injector/injector.ts index 9567a11a..acc2c46a 100644 --- a/src/features/hook-message-injector/injector.ts +++ b/src/features/hook-message-injector/injector.ts @@ -16,6 +16,7 @@ export function findNearestMessageWithFields(messageDir: string): StoredMessage .sort() .reverse() + // First pass: find message with ALL fields (ideal) for (const file of files) { try { const content = readFileSync(join(messageDir, file), "utf-8") @@ -27,6 +28,20 @@ export function findNearestMessageWithFields(messageDir: string): StoredMessage continue } } + + // Second pass: find message with ANY useful field (fallback) + // This ensures agent info isn't lost when model info is missing + for (const file of files) { + try { + const content = readFileSync(join(messageDir, file), "utf-8") + const msg = JSON.parse(content) as StoredMessage + if (msg.agent || (msg.model?.providerID && msg.model?.modelID)) { + return msg + } + } catch { + continue + } + } } catch { return null }