diff --git a/extensions/ollama/src/stream.ts b/extensions/ollama/src/stream.ts index 98b6f6d4a4f..bb101018ed2 100644 --- a/extensions/ollama/src/stream.ts +++ b/extensions/ollama/src/stream.ts @@ -938,10 +938,12 @@ function resolveOllamaModelHeaders(model: { function resolveOllamaRequestTimeoutMs( model: object, - options: { requestTimeoutMs?: unknown } | undefined, + options: { requestTimeoutMs?: unknown; timeoutMs?: unknown } | undefined, ): number | undefined { const raw = - options?.requestTimeoutMs ?? (model as { requestTimeoutMs?: unknown }).requestTimeoutMs; + options?.requestTimeoutMs ?? + options?.timeoutMs ?? + (model as { requestTimeoutMs?: unknown }).requestTimeoutMs; return typeof raw === "number" && Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : undefined; } @@ -1004,7 +1006,7 @@ export function createOllamaStreamFn( policy: ssrfPolicy, timeoutMs: resolveOllamaRequestTimeoutMs( model, - options as { requestTimeoutMs?: unknown } | undefined, + options as { requestTimeoutMs?: unknown; timeoutMs?: unknown } | undefined, ), auditContext: "ollama-stream.chat", }); diff --git a/src/media-understanding/image.ts b/src/media-understanding/image.ts index 0184c2a11cb..dff31f23efb 100644 --- a/src/media-understanding/image.ts +++ b/src/media-understanding/image.ts @@ -401,13 +401,15 @@ async function describeImagesWithModelInternal( const maxTokens = resolveImageToolMaxTokens(model.maxTokens, params.maxTokens ?? 512); const completeImage = async (onPayload?: ProviderStreamOptions["onPayload"]) => { const payloadHandler = composeImageDescriptionPayloadHandlers(onPayload, options.onPayload); + const timeoutMs = resolveImageDescriptionTimeoutMs(params.timeoutMs, startedAtMs); return await withImageDescriptionTimeout({ controller, - timeoutMs: resolveImageDescriptionTimeoutMs(params.timeoutMs, startedAtMs), + timeoutMs, task: complete(model, context, { apiKey, maxTokens, signal: controller.signal, + ...(timeoutMs !== undefined ? { timeoutMs } : {}), ...(payloadHandler ? { onPayload: payloadHandler } : {}), }), });