{"record":{"id":"3298332b5b4bd6c0","repo":"BoundaryML/baml","slug":"invalid-media-type-s","errorCode":null,"errorMessage":"invalid media type: '%s'","messagePattern":"invalid media type: '(.+?)'","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"engine/language_client_go/pkg/rawobjects_media.go","lineNumber":52,"sourceCode":"// mediaHolder implements InternalBamlSerializer\nfunc (m *mediaHolder) InternalBamlSerializer() {}\n\nfunc (m *mediaHolder) Encode() (*cffi.BamlObjectHandle, error) {\n\treturn raw_objects.EncodeRawObject(m), nil\n}\n\nfunc (mediaType MediaType) objectType() cffi.BamlObjectType {\n\tswitch mediaType {\n\tcase MediaType_Image:\n\t\treturn cffi.BamlObjectType_OBJECT_MEDIA_IMAGE\n\tcase MediaType_Audio:\n\t\treturn cffi.BamlObjectType_OBJECT_MEDIA_AUDIO\n\tcase MediaType_PDF:\n\t\treturn cffi.BamlObjectType_OBJECT_MEDIA_PDF\n\tcase MediaType_Video:\n\t\treturn cffi.BamlObjectType_OBJECT_MEDIA_VIDEO\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"invalid media type: '%s'\", mediaType))\n\t}\n}\n\nfunc (mediaType MediaType) cffiType() (cffi.MediaTypeEnum, error) {\n\tswitch mediaType {\n\tcase MediaType_Image:\n\t\treturn cffi.MediaTypeEnum_IMAGE, nil\n\tcase MediaType_Audio:\n\t\treturn cffi.MediaTypeEnum_AUDIO, nil\n\tcase MediaType_PDF:\n\t\treturn cffi.MediaTypeEnum_PDF, nil\n\tcase MediaType_Video:\n\t\treturn cffi.MediaTypeEnum_VIDEO, nil\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"invalid media type: '%s'\", mediaType)\n\t}\n}\n","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/language_client_go/pkg/rawobjects_media.go#L34-L70","documentation":"MediaType.objectType() maps a MediaType constant to a cffi.BamlObjectType and panics on any value outside Image/Audio/PDF/Video. Because it panics (not returns an error), an unrecognized media type crashes the process at the point of serialization or ObjectType() lookup.","triggerScenarios":"Constructing a media holder with a MediaType value not produced by the library's own constants — e.g. a zero-value MediaType{}, a value from a different/older package version, or a custom int cast to MediaType.","commonSituations":"Upgrading BAML where a new MediaType was added in one package but the mapping switch wasn't regenerated; declaring var m MediaType = 0 and passing it into media constructors.","solutions":["Only construct MediaType via the exported MediaType_Image/Audio/PDF/Video constants","Update all BAML Go packages to the same version so the enum and switch agree","Never cast raw integers to MediaType"],"exampleFix":"// before\nvar mt baml.MediaType\nmedia := baml.NewMediaFromBase64(mt, ...)\n// after\nmedia := baml.NewMediaFromBase64(baml.MediaType_PDF, ...) // use a valid constant","handlingStrategy":"validation","validationCode":"// Go: validate before use\nfunc validMediaType(mt baml.MediaType) bool {\n    switch mt {\n    case baml.MediaType_Image, baml.MediaType_Audio, baml.MediaType_PDF, baml.MediaType_Video:\n        return true\n    }\n    return false\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never zero-initialize a MediaType; always assign an exported constant","Never cast arbitrary ints to MediaType","Upgrade all baml Go packages atomically"],"tags":["go","panic","enum","baml"],"backgroundTag":"invalid-enum-value","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}