diff --git a/.gitignore b/.gitignore index ae359692b2..a6dbf8c4ca 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ jobs/** node_modules/ bench/__pycache__ .ai/ +.worktrees/ diff --git a/crates/forge_app/src/dto/openai/transformers/pipeline.rs b/crates/forge_app/src/dto/openai/transformers/pipeline.rs index ccffc56d97..1e7f449f3a 100644 --- a/crates/forge_app/src/dto/openai/transformers/pipeline.rs +++ b/crates/forge_app/src/dto/openai/transformers/pipeline.rs @@ -82,8 +82,12 @@ impl Transformer for ProviderPipeline<'_> { let xai_compat = MakeXaiCompat.when(move |_| provider.id == ProviderId::XAI); - let ensure_system_first = - MergeSystemMessages.when(move |_| provider.id == ProviderId::NVIDIA); + // Apply to NVIDIA and custom (non-built-in) providers to ensure system messages are + // first. Built-in providers are excluded to avoid degrading their caching behaviour. + let ensure_system_first = MergeSystemMessages.when(move |_| { + provider.id == ProviderId::NVIDIA + || !ProviderId::built_in_providers().contains(&provider.id) + }); let trim_tool_call_ids = TrimToolCallIds.when(move |_| provider.id == ProviderId::OPENAI);