diff --git a/apps/api/internal/runner/request_assets.go b/apps/api/internal/runner/request_assets.go index 4b128ef..85670e8 100644 --- a/apps/api/internal/runner/request_assets.go +++ b/apps/api/internal/runner/request_assets.go @@ -159,9 +159,11 @@ func (s *Service) hydrateProviderRequestAssetString(ctx context.Context, value s if raw == "" || !imageInputFieldNeedsHydration(path) { return value, nil } - style, ok := requestAssetCapabilityHydrationForMedia("image", candidate, raw, "") - if !ok && openAIImageEditRequiresMultipartBytes(candidate) { + style, ok := requestAssetHydrateUnsupported, false + if openAIImageEditRequiresMultipartBytes(candidate) { style, ok = requestAssetHydrateDataURL, true + } else { + style, ok = requestAssetCapabilityHydrationForMedia("image", candidate, raw, "") } if !ok { return value, nil @@ -320,12 +322,12 @@ func requestAssetHydrationForField(path []string, asset store.RequestAsset, cand return requestAssetHydrateDataURL } if requestAssetMediaKindForHydration(path, asset) == "image" { - if style, ok := requestAssetCapabilityHydrationForMedia("image", candidate, asset.URL, asset.StorageProvider); ok { - return style - } if openAIImageEditRequiresMultipartBytes(candidate) { return requestAssetHydrateDataURL } + if style, ok := requestAssetCapabilityHydrationForMedia("image", candidate, asset.URL, asset.StorageProvider); ok { + return style + } } if mediaURLFieldNeedsHydration(path) { if style := configuredRequestAssetMediaURLHydration(candidate, requestAssetMediaURLKind(path)); style != "" { diff --git a/apps/api/internal/runner/request_assets_test.go b/apps/api/internal/runner/request_assets_test.go index b85a009..0f3f542 100644 --- a/apps/api/internal/runner/request_assets_test.go +++ b/apps/api/internal/runner/request_assets_test.go @@ -223,6 +223,12 @@ func TestHydrateProviderRequestAssetsConvertsOpenAIEditImagesForMultipart(t *tes hydrated, err := service.hydrateProviderRequestAssets(context.Background(), body, store.RuntimeModelCandidate{ Provider: "openai", ModelType: "image_edit", + Capabilities: map[string]any{ + "image_edit": map[string]any{ + "support_url_input": true, + "support_base64_input": false, + }, + }, }) if err != nil { t.Fatalf("hydrate OpenAI edit images: %v", err)