From d3e3371a77a5565f4a4aa831bcd0a8ad2f32fdf1 Mon Sep 17 00:00:00 2001 From: justsisyphus Date: Fri, 16 Jan 2026 17:42:43 +0900 Subject: [PATCH] refactor(context-injector): remove chat.message hook, insert synthetic part in transform - Remove injectPendingContext function (no longer needed) - Remove createContextInjectorHook function (chat.message hook removed) - Change transform hook from prepend to synthetic part insertion - Follow empty-message-sanitizer pattern (minimal field set) - synthetic: true flag hides content from UI but passes to model - Synthetic part inserted BEFORE user text part --- src/features/context-injector/injector.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/features/context-injector/injector.ts b/src/features/context-injector/injector.ts index b2d77158..db7f2cbf 100644 --- a/src/features/context-injector/injector.ts +++ b/src/features/context-injector/injector.ts @@ -142,14 +142,21 @@ export function createContextInjectorMessagesTransformHook( return } - const textPart = lastUserMessage.parts[textPartIndex] as { text?: string } - const originalText = textPart.text ?? "" - textPart.text = `${pending.merged}\n\n---\n\n${originalText}` + // empty-message-sanitizer 패턴 그대로 따름 (minimal fields) + const syntheticPart = { + id: `synthetic_hook_${Date.now()}`, + messageID: lastUserMessage.info.id, + sessionID: (lastUserMessage.info as { sessionID?: string }).sessionID ?? "", + type: "text" as const, + text: pending.merged, + synthetic: true, // UI에서 숨겨짐 + } - log("[context-injector] Prepended context to last user message", { + lastUserMessage.parts.splice(textPartIndex, 0, syntheticPart as Part) + + log("[context-injector] Inserted synthetic part with hook content", { sessionID, - contextLength: pending.merged.length, - originalTextLength: originalText.length, + contentLength: pending.merged.length, }) }, }