@@ -14,6 +14,31 @@ const (
1414 TypeProviderCacheControl = Name + ".cache_control_options"
1515)
1616
17+ // Register Anthropic provider-specific types with the global registry.
18+ func init () {
19+ fantasy .RegisterProviderType (TypeProviderOptions , func (data []byte ) (fantasy.ProviderOptionsData , error ) {
20+ var v ProviderOptions
21+ if err := json .Unmarshal (data , & v ); err != nil {
22+ return nil , err
23+ }
24+ return & v , nil
25+ })
26+ fantasy .RegisterProviderType (TypeReasoningOptionMetadata , func (data []byte ) (fantasy.ProviderOptionsData , error ) {
27+ var v ReasoningOptionMetadata
28+ if err := json .Unmarshal (data , & v ); err != nil {
29+ return nil , err
30+ }
31+ return & v , nil
32+ })
33+ fantasy .RegisterProviderType (TypeProviderCacheControl , func (data []byte ) (fantasy.ProviderOptionsData , error ) {
34+ var v ProviderCacheControlOptions
35+ if err := json .Unmarshal (data , & v ); err != nil {
36+ return nil , err
37+ }
38+ return & v , nil
39+ })
40+ }
41+
1742// ProviderOptions represents additional options for the Anthropic provider.
1843type ProviderOptions struct {
1944 SendReasoning * bool `json:"send_reasoning"`
@@ -27,28 +52,17 @@ func (o *ProviderOptions) Options() {}
2752// MarshalJSON implements custom JSON marshaling with type info for ProviderOptions.
2853func (o ProviderOptions ) MarshalJSON () ([]byte , error ) {
2954 type plain ProviderOptions
30- raw , err := json .Marshal (plain (o ))
31- if err != nil {
32- return nil , err
33- }
34- return json .Marshal (struct {
35- Type string `json:"type"`
36- Data json.RawMessage `json:"data"`
37- }{
38- Type : TypeProviderOptions ,
39- Data : raw ,
40- })
55+ return fantasy .MarshalProviderType (TypeProviderOptions , plain (o ))
4156}
4257
4358// UnmarshalJSON implements custom JSON unmarshaling with type info for ProviderOptions.
4459func (o * ProviderOptions ) UnmarshalJSON (data []byte ) error {
4560 type plain ProviderOptions
46- var oo plain
47- err := json .Unmarshal (data , & oo )
48- if err != nil {
61+ var p plain
62+ if err := fantasy .UnmarshalProviderType (data , & p ); err != nil {
4963 return err
5064 }
51- * o = ProviderOptions (oo )
65+ * o = ProviderOptions (p )
5266 return nil
5367}
5468
@@ -69,28 +83,17 @@ func (*ReasoningOptionMetadata) Options() {}
6983// MarshalJSON implements custom JSON marshaling with type info for ReasoningOptionMetadata.
7084func (m ReasoningOptionMetadata ) MarshalJSON () ([]byte , error ) {
7185 type plain ReasoningOptionMetadata
72- raw , err := json .Marshal (plain (m ))
73- if err != nil {
74- return nil , err
75- }
76- return json .Marshal (struct {
77- Type string `json:"type"`
78- Data json.RawMessage `json:"data"`
79- }{
80- Type : TypeReasoningOptionMetadata ,
81- Data : raw ,
82- })
86+ return fantasy .MarshalProviderType (TypeReasoningOptionMetadata , plain (m ))
8387}
8488
8589// UnmarshalJSON implements custom JSON unmarshaling with type info for ReasoningOptionMetadata.
8690func (m * ReasoningOptionMetadata ) UnmarshalJSON (data []byte ) error {
8791 type plain ReasoningOptionMetadata
88- var rm plain
89- err := json .Unmarshal (data , & rm )
90- if err != nil {
92+ var p plain
93+ if err := fantasy .UnmarshalProviderType (data , & p ); err != nil {
9194 return err
9295 }
93- * m = ReasoningOptionMetadata (rm )
96+ * m = ReasoningOptionMetadata (p )
9497 return nil
9598}
9699
@@ -105,28 +108,17 @@ func (*ProviderCacheControlOptions) Options() {}
105108// MarshalJSON implements custom JSON marshaling with type info for ProviderCacheControlOptions.
106109func (o ProviderCacheControlOptions ) MarshalJSON () ([]byte , error ) {
107110 type plain ProviderCacheControlOptions
108- raw , err := json .Marshal (plain (o ))
109- if err != nil {
110- return nil , err
111- }
112- return json .Marshal (struct {
113- Type string `json:"type"`
114- Data json.RawMessage `json:"data"`
115- }{
116- Type : TypeProviderCacheControl ,
117- Data : raw ,
118- })
111+ return fantasy .MarshalProviderType (TypeProviderCacheControl , plain (o ))
119112}
120113
121114// UnmarshalJSON implements custom JSON unmarshaling with type info for ProviderCacheControlOptions.
122115func (o * ProviderCacheControlOptions ) UnmarshalJSON (data []byte ) error {
123116 type plain ProviderCacheControlOptions
124- var cc plain
125- err := json .Unmarshal (data , & cc )
126- if err != nil {
117+ var p plain
118+ if err := fantasy .UnmarshalProviderType (data , & p ); err != nil {
127119 return err
128120 }
129- * o = ProviderCacheControlOptions (cc )
121+ * o = ProviderCacheControlOptions (p )
130122 return nil
131123}
132124
@@ -157,28 +149,3 @@ func ParseOptions(data map[string]any) (*ProviderOptions, error) {
157149 }
158150 return & options , nil
159151}
160-
161- // Register Anthropic provider-specific types with the global registry.
162- func init () {
163- fantasy .RegisterProviderType (TypeProviderOptions , func (data []byte ) (fantasy.ProviderOptionsData , error ) {
164- var v ProviderOptions
165- if err := json .Unmarshal (data , & v ); err != nil {
166- return nil , err
167- }
168- return & v , nil
169- })
170- fantasy .RegisterProviderType (TypeReasoningOptionMetadata , func (data []byte ) (fantasy.ProviderOptionsData , error ) {
171- var v ReasoningOptionMetadata
172- if err := json .Unmarshal (data , & v ); err != nil {
173- return nil , err
174- }
175- return & v , nil
176- })
177- fantasy .RegisterProviderType (TypeProviderCacheControl , func (data []byte ) (fantasy.ProviderOptionsData , error ) {
178- var v ProviderCacheControlOptions
179- if err := json .Unmarshal (data , & v ); err != nil {
180- return nil , err
181- }
182- return & v , nil
183- })
184- }
0 commit comments