mcp: dedup wire type for image and audio (#149)

Factor out the wire type into a top-level struct.
This commit is contained in:
Jonathan Amsterdam 2025-07-21 11:40:32 -04:00 • committed by GitHub
commit 9ddad03891
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -63,13 +63,7 @@ func (c *ImageContent) MarshalJSON() ([]byte, error) {
if data == nil {
data = []byte{}
}
wire := struct {
Type string `json:"type"`
MIMEType string `json:"mimeType"`
Data []byte `json:"data"`
Meta Meta `json:"_meta,omitempty"`
Annotations *Annotations `json:"annotations,omitempty"`
}{
wire := imageAudioWire{
Type: "image",
MIMEType: c.MIMEType,
Data: data,
@ -100,13 +94,7 @@ func (c AudioContent) MarshalJSON() ([]byte, error) {
if data == nil {
data = []byte{}
}
wire := struct {
Type string `json:"type"`
MIMEType string `json:"mimeType"`
Data []byte `json:"data"`
Meta Meta `json:"_meta,omitempty"`
Annotations *Annotations `json:"annotations,omitempty"`
}{
wire := imageAudioWire{
Type: "audio",
MIMEType: c.MIMEType,
Data: data,
@ -123,6 +111,15 @@ func (c *AudioContent) fromWire(wire *wireContent) {
c.Annotations = wire.Annotations
}
// Custom wire format to ensure required fields are always included, even when empty.
type imageAudioWire struct {
Type string `json:"type"`
MIMEType string `json:"mimeType"`
Data []byte `json:"data"`
Meta Meta `json:"_meta,omitempty"`
Annotations *Annotations `json:"annotations,omitempty"`
}
// ResourceLink is a link to a resource
type ResourceLink struct {
URI string