1package openai
2
3import (
4 "charm.land/fantasy"
5 "charm.land/fantasy/providers/internal/httpheaders"
6 "github.com/charmbracelet/openai-go/option"
7)
8
9// callUARequestOptions returns per-request options that override the
10// client-level User-Agent header when the Call carries agent-level UA
11// settings.
12//
13// When noDefaultUA is true the SDK's own User-Agent is preserved and no
14// override is applied (needed for providers like OpenRouter, which reject
15// User-Agent headers they don't expect).
16func callUARequestOptions(call fantasy.Call) []option.RequestOption {
17 if ua, ok := httpheaders.CallUserAgent(call.UserAgent); ok {
18 return []option.RequestOption{option.WithHeader("User-Agent", ua)}
19 }
20 return nil
21}
22
23// objectCallUARequestOptions returns per-request options that override the
24// client-level User-Agent header when the ObjectCall carries agent-level UA
25// settings.
26func objectCallUARequestOptions(call fantasy.ObjectCall) []option.RequestOption {
27 if ua, ok := httpheaders.CallUserAgent(call.UserAgent); ok {
28 return []option.RequestOption{option.WithHeader("User-Agent", ua)}
29 }
30 return nil
31}