diff --git a/Sources/AnyLanguageModel/Models/SystemLanguageModel.swift b/Sources/AnyLanguageModel/Models/SystemLanguageModel.swift index 97fddb0..ff2e8f2 100644 --- a/Sources/AnyLanguageModel/Models/SystemLanguageModel.swift +++ b/Sources/AnyLanguageModel/Models/SystemLanguageModel.swift @@ -552,6 +552,12 @@ return .init(name: name ?? "", description: jsonSchema.description, properties: schemaProperties) case .string(_, _, _, _, _, _, _, _, pattern: let pattern, _): + if let values = jsonSchema.enum?.compactMap(\.stringValue), !values.isEmpty { + if let name { + return .init(name: name, description: jsonSchema.description, anyOf: values) + } + } + var guides: [FoundationModels.GenerationGuide] = [] if let values = jsonSchema.enum?.compactMap(\.stringValue), !values.isEmpty { guides.append(.anyOf(values)) diff --git a/Tests/AnyLanguageModelTests/DynamicSchemaConversionTests.swift b/Tests/AnyLanguageModelTests/DynamicSchemaConversionTests.swift index b5d95f3..579e7a3 100644 --- a/Tests/AnyLanguageModelTests/DynamicSchemaConversionTests.swift +++ b/Tests/AnyLanguageModelTests/DynamicSchemaConversionTests.swift @@ -201,6 +201,24 @@ import Testing _ = convertToDynamicSchema(schema) } + @available(macOS 26.0, iOS 26.0, watchOS 26.0, tvOS 26.0, visionOS 26.0, *) + @Test func convertNamedStringEnumDependencySchema() throws { + let outputVersion: JSONSchema = .string(enum: ["v0", "v1"]) + let enumDependency = convertToDynamicSchema(outputVersion, name: "OutputVersion") + + let root = FoundationModels.DynamicGenerationSchema( + name: "Root", + properties: [ + .init( + name: "version", + schema: .init(referenceTo: "OutputVersion") + ) + ] + ) + + _ = try FoundationModels.GenerationSchema(root: root, dependencies: [enumDependency]) + } + // MARK: - Fallback Types @available(macOS 26.0, iOS 26.0, watchOS 26.0, tvOS 26.0, visionOS 26.0, *)