/// import { generateObject, JSONSchema, OpaqueRef, pattern } from "commontools"; interface Email { id: string; content: string; } interface ExtractedData { summary: string; } // Generic building block - T is a type parameter function BuildingBlock(emails: OpaqueRef, schema: JSONSchema) { // This is the problematic case: generateObject where T is a type parameter // The result is OpaqueRef where T is unresolved const analyses = emails.map((email: Email) => { const analysis = generateObject({ prompt: email.content, schema, }); return { email, analysis, result: analysis.result, // OpaqueRef - T is a type parameter! }; }); return { analyses }; } // Pattern that uses the building block export default pattern(({ emails }: { emails: OpaqueRef }) => { const data = BuildingBlock(emails, { type: "object" }); return { data }; });