From 21f6ab378fa56845cfd49bf5f3355e641f93df64 Mon Sep 17 00:00:00 2001 From: Eric Allam Date: Mon, 13 Apr 2026 15:39:23 +0100 Subject: [PATCH] fix(sdk): inject prepareStep in toStreamTextOptions even without chat.prompt.set() --- packages/trigger-sdk/src/v3/ai.ts | 34 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/packages/trigger-sdk/src/v3/ai.ts b/packages/trigger-sdk/src/v3/ai.ts index 564368212..7530d0ce6 100644 --- a/packages/trigger-sdk/src/v3/ai.ts +++ b/packages/trigger-sdk/src/v3/ai.ts @@ -1641,27 +1641,29 @@ export type ToStreamTextOptionsOptions = { */ function toStreamTextOptions(options?: ToStreamTextOptionsOptions): Record { const prompt = locals.get(chatPromptKey); - if (!prompt) return {}; + const result: Record = {}; - const result: Record = { - system: prompt.text, - }; + // Prompt-related options (only if chat.prompt.set() was called) + if (prompt) { + result.system = prompt.text; - // Resolve model via registry if both are present - if (options?.registry && prompt.model) { - result.model = options.registry.languageModel(prompt.model); + // Resolve model via registry if both are present + if (options?.registry && prompt.model) { + result.model = options.registry.languageModel(prompt.model); + } + + // Spread config (temperature, maxTokens, etc.) + if (prompt.config) { + Object.assign(result, prompt.config); + } + + // Add telemetry (forward additional metadata from caller) + const telemetry = prompt.toAISDKTelemetry(options?.telemetry); + Object.assign(result, telemetry); } - // Spread config (temperature, maxTokens, etc.) - if (prompt.config) { - Object.assign(result, prompt.config); - } - - // Add telemetry (forward additional metadata from caller) - const telemetry = prompt.toAISDKTelemetry(options?.telemetry); - Object.assign(result, telemetry); - // Auto-inject prepareStep for compaction, pending messages, and background context injection. + // This runs regardless of whether a prompt is set — these features are independent. const taskCompaction = locals.get(chatAgentCompactionKey); const taskPendingMessages = locals.get(chatPendingMessagesKey);