1package anthropic
2
3import "github.com/charmbracelet/fantasy/ai"
4
5type ProviderOptions struct {
6 SendReasoning *bool `json:"send_reasoning"`
7 Thinking *ThinkingProviderOption `json:"thinking"`
8 DisableParallelToolUse *bool `json:"disable_parallel_tool_use"`
9}
10
11func (o *ProviderOptions) Options() {}
12
13type ThinkingProviderOption struct {
14 BudgetTokens int64 `json:"budget_tokens"`
15}
16
17type ReasoningOptionMetadata struct {
18 Signature string `json:"signature"`
19 RedactedData string `json:"redacted_data"`
20}
21
22func (*ReasoningOptionMetadata) Options() {}
23
24type ProviderCacheControlOptions struct {
25 CacheControl CacheControl `json:"cache_control"`
26}
27
28func (*ProviderCacheControlOptions) Options() {}
29
30type CacheControl struct {
31 Type string `json:"type"`
32}
33
34func NewProviderOptions(opts *ProviderOptions) ai.ProviderOptions {
35 return ai.ProviderOptions{
36 Name: opts,
37 }
38}
39
40func NewProviderCacheControlOptions(opts *ProviderCacheControlOptions) ai.ProviderOptions {
41 return ai.ProviderOptions{
42 Name: opts,
43 }
44}
45
46func ParseOptions(data map[string]any) (*ProviderOptions, error) {
47 var options ProviderOptions
48 if err := ai.ParseOptions(data, &options); err != nil {
49 return nil, err
50 }
51 return &options, nil
52}