Does Generable support recursive schemas?

I've run into an issue with a small Foundation Models test with Generable. I'm getting a strange error message with this Generable. I was able to get simpler ones to work.

Is this because the Generable is recursive with a property of [HTMLDiv]?

The error message is: FoundationModels/SchemaAugmentor.swift:209: Fatal error: 'try!' expression unexpectedly raised an error: FoundationModels.GenerationSchema.SchemaError.undefinedReferences(schema: Optional("SafeResponse<HTMLDiv>"), references: ["HTMLDiv"], context: FoundationModels.GenerationSchema.SchemaError.Context(debugDescription: "Undefined types: [HTMLDiv]", underlyingErrors: []))

The code is:

import FoundationModels
import Playgrounds

@Generable
struct HTMLDiv {
    @Guide(description: "Optional named ID, useful for nicknames")
    var id: String? = nil

    @Guide(description: "Optional visible HTML text")
    var textContent: String? = nil

    @Guide(description: "Any child elements", .count(0...10))
    var children: [HTMLDiv] = []

    static var sample: HTMLDiv {
        HTMLDiv(
            id: "profileToolbar",
            children: [
                HTMLDiv(textContent: "Log in"),
                HTMLDiv(textContent: "Sign up"),
            ]
        )
    }
}

#Playground {
    do {
        let session = LanguageModelSession {
            "Your job is to generate simple HTML markup"
            "Here is an example response to the prompt: 'Make a profile toolbar':"
            HTMLDiv.sample
        }
        let response = try await session.respond(
            to: "Make a sign up form",
            generating: HTMLDiv.self
        )
        print(response.content)
    } catch {
        print(error)
    }
}

Filed Feedback FB17962270

Just to confirm that Generable does support recursive schemas, and the issue you reported is a bug. Thanks for filing the feedback report.

Best,
——
Ziqiao Chen
 Worldwide Developer Relations.

Does Generable support recursive schemas?
 
 
Q