From 32c0a3a8bdbe98d9d3a6f30e08710954ced1006b Mon Sep 17 00:00:00 2001 From: Antonio Sarosi Date: Wed, 1 Jan 2025 18:52:45 +0100 Subject: [PATCH 1/4] Report errors in Jinja --- engine/baml-lib/baml-core/src/ir/repr.rs | 7 +- .../validation_pipeline/validations/cycle.rs | 32 ++------ .../validations/template_strings.rs | 3 + .../class/type_aliases_jinja.baml | 63 +++++++++++++++ .../baml-lib/jinja/src/evaluate_type/mod.rs | 12 +-- .../baml-lib/jinja/src/evaluate_type/types.rs | 30 +++++++ engine/baml-lib/parser-database/src/lib.rs | 22 ++---- .../baml-lib/parser-database/src/types/mod.rs | 79 ++++++++++++++----- .../parser-database/src/walkers/alias.rs | 5 ++ .../parser-database/src/walkers/mod.rs | 31 +++++--- 10 files changed, 202 insertions(+), 82 deletions(-) create mode 100644 engine/baml-lib/baml/tests/validation_files/class/type_aliases_jinja.baml diff --git a/engine/baml-lib/baml-core/src/ir/repr.rs b/engine/baml-lib/baml-core/src/ir/repr.rs index 292e30922..a98638e1e 100644 --- a/engine/baml-lib/baml-core/src/ir/repr.rs +++ b/engine/baml-lib/baml-core/src/ir/repr.rs @@ -36,6 +36,9 @@ pub struct IntermediateRepr { finite_recursive_cycles: Vec>, /// Type alias cycles introduced by lists and maps. + /// + /// These are the only allowed cycles, because lists and maps introduce a + /// level of indirection that makes the cycle finite. structural_recursive_alias_cycles: Vec>, configuration: Configuration, @@ -186,7 +189,7 @@ impl IntermediateRepr { .collect(), structural_recursive_alias_cycles: { let mut recursive_aliases = vec![]; - for cycle in db.structural_recursive_alias_cycles() { + for cycle in db.recursive_alias_cycles() { let mut component = IndexMap::new(); for id in cycle { let alias = &db.ast()[*id]; @@ -449,7 +452,7 @@ impl WithRepr for ast::FieldType { } Some(TypeWalker::TypeAlias(alias_walker)) => { if db - .structural_recursive_alias_cycles() + .recursive_alias_cycles() .iter() .any(|cycle| cycle.contains(&alias_walker.id)) { diff --git a/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/cycle.rs b/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/cycle.rs index f7cf76ebb..3aa498e8e 100644 --- a/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/cycle.rs +++ b/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/cycle.rs @@ -17,7 +17,7 @@ pub(super) fn validate(ctx: &mut Context<'_>) { // We'll check type alias cycles first. Just like Typescript, cycles are // allowed only for maps and lists. We'll call such cycles "structural // recursion". Anything else like nulls or unions won't terminate a cycle. - let structural_type_aliases = HashMap::from_iter(ctx.db.walk_type_aliases().map(|alias| { + let non_structural_type_aliases = HashMap::from_iter(ctx.db.walk_type_aliases().map(|alias| { let mut dependencies = HashSet::new(); insert_required_alias_deps(alias.target(), ctx, &mut dependencies); @@ -27,7 +27,7 @@ pub(super) fn validate(ctx: &mut Context<'_>) { // Based on the graph we've built with does not include the edges created // by maps and lists, check the cycles and report them. report_infinite_cycles( - &structural_type_aliases, + &non_structural_type_aliases, ctx, "These aliases form a dependency cycle", ); @@ -35,7 +35,9 @@ pub(super) fn validate(ctx: &mut Context<'_>) { // In order to avoid infinite recursion when resolving types for class // dependencies below, we'll compute the cycles of aliases including maps // and lists so that the recursion can be stopped before entering a cycle. - let complete_alias_cycles = Tarjan::components(ctx.db.type_alias_dependencies()) + let complete_alias_cycles = ctx + .db + .recursive_alias_cycles() .iter() .flatten() .copied() @@ -139,29 +141,9 @@ fn insert_required_class_deps( deps.insert(class.id); } Some(TypeWalker::TypeAlias(alias)) => { - // TODO: By the time this code runs we would ideally want - // type aliases to be resolved but we can't do that because - // type alias cycles are not validated yet, we have to - // do that in this file. Take a look at the `validate` - // function at `baml-lib/baml-core/src/lib.rs`. - // - // First we run the `ParserDatabase::validate` function - // which creates the alias graph by visiting all aliases. - // Then we run the `validate::validate` which ends up - // running this code here. Finally we run the - // `ParserDatabase::finalize` which is the place where we - // can resolve type aliases since we've already validated - // that there are no cycles so we won't run into infinite - // recursion. Ideally we want this: - // - // insert_required_deps(id, alias.resolved(), ctx, deps); - - // But we'll run this instead which will follow all the - // alias pointers again until it finds the resolved type. - // We also have to stop recursion if we know the alias is - // part of a cycle. + // This code runs after aliases are already resolved. if !alias_cycles.contains(&alias.id) { - insert_required_class_deps(id, alias.target(), ctx, deps, alias_cycles) + insert_required_class_deps(id, alias.resolved(), ctx, deps, alias_cycles) } } _ => {} diff --git a/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/template_strings.rs b/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/template_strings.rs index 68b6d252f..5dcac8269 100644 --- a/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/template_strings.rs +++ b/engine/baml-lib/baml-core/src/validate/validation_pipeline/validations/template_strings.rs @@ -18,6 +18,9 @@ pub(super) fn validate(ctx: &mut Context<'_>) { ctx.db.walk_templates().for_each(|t| { t.add_to_types(&mut defined_types); }); + ctx.db.walk_type_aliases().for_each(|t| { + t.add_to_types(&mut defined_types); + }); for template in ctx.db.walk_templates() { for args in template.walk_input_args() { diff --git a/engine/baml-lib/baml/tests/validation_files/class/type_aliases_jinja.baml b/engine/baml-lib/baml/tests/validation_files/class/type_aliases_jinja.baml new file mode 100644 index 000000000..b65aa9380 --- /dev/null +++ b/engine/baml-lib/baml/tests/validation_files/class/type_aliases_jinja.baml @@ -0,0 +1,63 @@ +type ProjectId = int + +function NormalAlias(pid: ProjectId) -> string { + client "openai/gpt-4o" + prompt #"Pid: {{ pid.id }}. Generate a fake name for it."# +} + +type A = float +type B = A +type C = B + +function LongerAlias(c: C) -> string { + client "openai/gpt-4o" + prompt #"{{ c.value }}"# +} + +type JsonValue = int | string | bool | float | JsonObject | JsonArray +type JsonObject = map +type JsonArray = JsonValue[] + +function RecursiveAliases(j: JsonValue) -> string { + client "openai/gpt-4o" + prompt #"{{ j.value }}"# +} + +type I = J +type J = I + +function InvalidAlias(i: I) -> string { + client "openai/gpt-4o" + prompt #"{{ i.value }}"# +} + +// warning: 'pid' is a type alias ProjectId (resolves to int), expected class +// --> class/type_aliases_jinja.baml:5 +// | +// 4 | client "openai/gpt-4o" +// 5 | prompt #"Pid: {{ pid.id }}. Generate a fake name for it."# +// | +// warning: 'c' is a type alias C (resolves to float), expected class +// --> class/type_aliases_jinja.baml:14 +// | +// 13 | client "openai/gpt-4o" +// 14 | prompt #"{{ c.value }}"# +// | +// warning: 'j' is a recursive type alias JsonValue, expected class +// --> class/type_aliases_jinja.baml:23 +// | +// 22 | client "openai/gpt-4o" +// 23 | prompt #"{{ j.value }}"# +// | +// warning: 'i' is a recursive type alias I, expected class +// --> class/type_aliases_jinja.baml:31 +// | +// 30 | client "openai/gpt-4o" +// 31 | prompt #"{{ i.value }}"# +// | +// error: Error validating: These aliases form a dependency cycle: I -> J +// --> class/type_aliases_jinja.baml:26 +// | +// 25 | +// 26 | type I = J +// | diff --git a/engine/baml-lib/jinja/src/evaluate_type/mod.rs b/engine/baml-lib/jinja/src/evaluate_type/mod.rs index 1817775b9..40f30b7ae 100644 --- a/engine/baml-lib/jinja/src/evaluate_type/mod.rs +++ b/engine/baml-lib/jinja/src/evaluate_type/mod.rs @@ -100,9 +100,7 @@ impl TypeError { } else { // If there are multiple close names, suggest them all let suggestions = close_names.join("`, `"); - format!( - "Variable `{name}` does not exist. Did you mean one of these: `{suggestions}`?" - ) + format!("Variable `{name}` does not exist. Did you mean one of these: `{suggestions}`?") }; Self { message, span } @@ -137,9 +135,7 @@ impl TypeError { fn new_wrong_arg_count(func: &str, span: Span, expected: usize, got: usize) -> Self { Self { - message: format!( - "Function '{func}' expects {expected} arguments, but got {got}" - ), + message: format!("Function '{func}' expects {expected} arguments, but got {got}"), span, } } @@ -187,9 +183,7 @@ impl TypeError { } else { // If there are multiple close names, suggest them all let suggestions = close_names.join("', '"); - format!( - "Filter '{name}' does not exist. Did you mean one of these: '{suggestions}'?" - ) + format!("Filter '{name}' does not exist. Did you mean one of these: '{suggestions}'?") }; Self { message: format!("{message}\n\nSee: https://docs.rs/minijinja/latest/minijinja/filters/index.html#functions for the compelete list"), span } diff --git a/engine/baml-lib/jinja/src/evaluate_type/types.rs b/engine/baml-lib/jinja/src/evaluate_type/types.rs index e9f7304ed..0839bebca 100644 --- a/engine/baml-lib/jinja/src/evaluate_type/types.rs +++ b/engine/baml-lib/jinja/src/evaluate_type/types.rs @@ -33,6 +33,21 @@ pub enum Type { Both(Box, Box), ClassRef(String), FunctionRef(String), + /// TODO: This should be `AliasRef(String)` but functions like + /// [`Self::is_subtype_of`] or [`Self::bitor`] don't have access to the + /// [`PredefinedTypes`] instance, so we can't grab type resolutions from + /// there. + /// + /// We'll just store all the necessary information in the type itself for + /// now. + Alias { + name: String, + target: Box, + resolved: Box, + }, + /// TODO: This one could store the target so that we can report what it + /// points to instead of just the name. + RecursiveTypeAlias(String), Image, Audio, } @@ -92,6 +107,8 @@ impl Type { (Type::ClassRef(_), _) => false, (Type::FunctionRef(_), _) => false, + (Type::Alias { resolved, .. }, _) => resolved.is_subtype_of(other), + (Type::RecursiveTypeAlias(_), _) => false, (Type::Image, _) => false, (Type::Audio, _) => false, (Type::String, _) => false, @@ -147,6 +164,10 @@ impl Type { Type::Both(l, r) => format!("{} & {}", l.name(), r.name()), Type::ClassRef(name) => format!("class {name}"), Type::FunctionRef(name) => format!("function {name}"), + Type::Alias { name, resolved, .. } => { + format!("type alias {name} (resolves to {})", resolved.name()) + } + Type::RecursiveTypeAlias(name) => format!("recursive type alias {name}"), Type::Image => "image".into(), Type::Audio => "audio".into(), } @@ -219,6 +240,10 @@ enum Scope { pub struct PredefinedTypes { functions: HashMap)>, classes: HashMap>, + /// TODO: See the comment for [`Type::AliasRef`]. + /// + /// We should use this but we can't without a significant refactor. + aliases: HashMap, // Variable name <--> Definition variables: HashMap, scopes: Vec, @@ -336,6 +361,7 @@ impl PredefinedTypes { ]), JinjaContext::Parsing => Default::default(), }, + aliases: HashMap::new(), scopes: Vec::new(), errors: Vec::new(), } @@ -449,6 +475,10 @@ impl PredefinedTypes { self.classes.insert(name.to_string(), fields); } + pub fn add_alias(&mut self, name: &str, target: Type) { + self.aliases.insert(name.to_string(), target); + } + pub fn add_variable(&mut self, name: &str, t: Type) { match self.scopes.last_mut() { Some(Scope::Branch(true_vars, false_vars, branch_cond)) => { diff --git a/engine/baml-lib/parser-database/src/lib.rs b/engine/baml-lib/parser-database/src/lib.rs index c90c141ba..5df786c6e 100644 --- a/engine/baml-lib/parser-database/src/lib.rs +++ b/engine/baml-lib/parser-database/src/lib.rs @@ -42,7 +42,6 @@ pub use coerce_expression::{coerce, coerce_array, coerce_opt}; pub use internal_baml_schema_ast::ast; use internal_baml_schema_ast::ast::{FieldType, SchemaAst, WithName}; pub use tarjan::Tarjan; -use types::resolve_type_alias; pub use types::{ Attributes, ClientProperties, ContantDelayStrategy, ExponentialBackoffStrategy, PrinterType, PromptAst, PromptVariable, RetryPolicy, RetryPolicyStrategy, StaticType, @@ -117,6 +116,10 @@ impl ParserDatabase { // Second pass: resolve top-level items and field types. types::resolve_types(&mut ctx); + // Resolve type aliases now because Jinja template validation needs this + // information. + types::resolve_type_aliases(&mut ctx); + // Return early on type resolution errors. ctx.diagnostics.to_result()?; @@ -130,19 +133,6 @@ impl ParserDatabase { } fn finalize_dependencies(&mut self, diag: &mut Diagnostics) { - // Cycles left here after cycle validation are allowed. Basically lists - // and maps can introduce cycles. - self.types.structural_recursive_alias_cycles = - Tarjan::components(&self.types.type_alias_dependencies); - - // Resolve type aliases. - // Cycles are already validated so this should not stack overflow and - // it should find the final type. - for alias_id in self.types.type_alias_dependencies.keys() { - let resolved = resolve_type_alias(&self.ast[*alias_id].value, &self); - self.types.resolved_type_aliases.insert(*alias_id, resolved); - } - // NOTE: Class dependency cycles are already checked at // baml-lib/baml-core/src/validate/validation_pipeline/validations/cycle.rs // @@ -255,7 +245,7 @@ impl ParserDatabase { collected_deps.insert(ident.name().to_owned()); // If the type is an alias then don't recurse. if self - .structural_recursive_alias_cycles() + .recursive_alias_cycles() .iter() .any(|cycle| cycle.contains(&walker.id)) { @@ -358,7 +348,7 @@ mod test { let db = parse(baml)?; assert_eq!( - db.structural_recursive_alias_cycles() + db.recursive_alias_cycles() .iter() .map(|ids| Vec::from_iter(ids.iter().map(|id| db.ast()[*id].name().to_string()))) .collect::>(), diff --git a/engine/baml-lib/parser-database/src/types/mod.rs b/engine/baml-lib/parser-database/src/types/mod.rs index 59f2e73e7..acab429e9 100644 --- a/engine/baml-lib/parser-database/src/types/mod.rs +++ b/engine/baml-lib/parser-database/src/types/mod.rs @@ -4,7 +4,7 @@ use std::hash::Hash; use std::ops::Deref; use crate::types::configurations::visit_test_case; -use crate::{coerce, ParserDatabase}; +use crate::{coerce, ParserDatabase, Tarjan}; use crate::{context::Context, DatamodelError}; use baml_types::Constraint; @@ -13,7 +13,8 @@ use indexmap::IndexMap; use internal_baml_diagnostics::{Diagnostics, Span}; use internal_baml_prompt_parser::ast::{ChatBlock, PrinterBlock, Variable}; use internal_baml_schema_ast::ast::{ - self, Expression, FieldId, FieldType, RawString, ValExpId, WithIdentifier, WithName, WithSpan, + self, Expression, FieldId, FieldType, RawString, TypeAliasId, ValExpId, WithIdentifier, + WithName, WithSpan, }; use internal_llm_client::{ClientProvider, PropertyHandler, UnresolvedClientProperty}; @@ -70,6 +71,27 @@ pub(super) fn resolve_types(ctx: &mut Context<'_>) { } } } + +pub(super) fn resolve_type_aliases(ctx: &mut Context<'_>) { + // Since Jinja needs this information before we can run the cycles + // validation code, we'll temporarily store invalid cycles here. They will + // be reported later in the cycle validation. + // + // TODO: Find a way to disambiguate between structural and non-structural + // cycles so that Jinja validation can report usage of infinite cycles. + ctx.types.recursive_alias_cycles = Tarjan::components(&ctx.types.type_alias_dependencies); + + // Resolve type aliases. + // Cycles are already computed so this should not stack overflow. + for alias_id in ctx.types.type_alias_dependencies.keys() { + // We can ignore the error here because it's already reported in the + // diagnostics at [`visit_type_alias`]. + if let Ok(resolved) = resolve_type_alias(&ctx.ast[*alias_id].value, &ctx) { + ctx.types.resolved_type_aliases.insert(*alias_id, resolved); + } + } +} + #[derive(Debug, Clone)] /// Variables used inside of raw strings. pub enum PromptVariable { @@ -279,9 +301,25 @@ pub(super) struct Types { /// Contains recursive type aliases. /// /// Recursive type aliases are a little bit trickier than recursive classes - /// because the termination condition is tied to lists and maps only. Nulls - /// and unions won't allow type alias cycles to be resolved. - pub(super) structural_recursive_alias_cycles: Vec>, + /// because the termination condition is tied to lists and maps only, which + /// introduce a level of indirection that can terminate a cycle: + /// + /// ```ignore + /// type A = A[] + /// type Map = map + /// ``` + /// + /// The examples above are finite because an empty list or an empty map + /// stops the recursion. Nulls and unions won't allow type alias cycles to + /// be resolved so they don't count. This is implemented just like in + /// Typescript and we call it "structural recursion". + /// + /// However, due to how the parsing-validation pipeline is built, this + /// struct will temporarily store infinite cycles with no termination + /// condition until they are reported as an error during the cycle + /// validation. By the time we get to build the IR, this should only contain + /// valid "structural" cycles. + pub(super) recursive_alias_cycles: Vec>, pub(super) function: HashMap, @@ -397,31 +435,34 @@ fn visit_class<'db>( /// /// **Important**: This function can only be called once infinite cycles have /// been detected! Otherwise it'll stack overflow. -pub fn resolve_type_alias(field_type: &FieldType, db: &ParserDatabase) -> FieldType { - match field_type { +pub fn resolve_type_alias(field_type: &FieldType, ctx: &Context<'_>) -> Result { + Ok(match field_type { // For symbols we need to check if we're dealing with aliases. FieldType::Symbol(arity, ident, attrs) => { - let Some(string_id) = db.interner.lookup(ident.name()) else { - unreachable!( + let Some(string_id) = ctx.interner.lookup(ident.name()) else { + return Err(format!( "Attempting to resolve alias `{ident}` that does not exist in the interner" - ); + )); }; - let Some(top_id) = db.names.tops.get(&string_id) else { - unreachable!("Alias name `{ident}` is not registered in the context"); + let Some(top_id) = ctx.names.tops.get(&string_id) else { + return Err(format!( + "Alias name `{ident}` is not registered in the context" + )); }; match top_id { ast::TopId::TypeAlias(alias_id) => { - let mut resolved = match db.types.resolved_type_aliases.get(alias_id) { + let mut resolved = match ctx.types.resolved_type_aliases.get(alias_id) { // Check if we can avoid deeper recursion. Some(already_resolved) => already_resolved.to_owned(), // No luck, check if the type is resolvable. None => { // TODO: O(n) - if db - .structural_recursive_alias_cycles() + if ctx + .types + .recursive_alias_cycles .iter() .any(|cycle| cycle.contains(alias_id)) { @@ -429,7 +470,7 @@ pub fn resolve_type_alias(field_type: &FieldType, db: &ParserDatabase) -> FieldT field_type.to_owned() } else { // Maybe resolvable, recurse deeper. - resolve_type_alias(&db.ast[*alias_id].value, db) + resolve_type_alias(&ctx.ast[*alias_id].value, ctx)? } } }; @@ -470,8 +511,8 @@ pub fn resolve_type_alias(field_type: &FieldType, db: &ParserDatabase) -> FieldT | FieldType::Tuple(arity, items, span, attrs) => { let resolved = items .iter() - .map(|item| resolve_type_alias(item, db)) - .collect(); + .map(|item| resolve_type_alias(item, ctx)) + .collect::>()?; match field_type { FieldType::Union(..) => { @@ -487,7 +528,7 @@ pub fn resolve_type_alias(field_type: &FieldType, db: &ParserDatabase) -> FieldT // Base case, primitives or other types that are not aliases. No more // "pointers" and graphs here. _ => field_type.to_owned(), - } + }) } fn visit_type_alias<'db>( diff --git a/engine/baml-lib/parser-database/src/walkers/alias.rs b/engine/baml-lib/parser-database/src/walkers/alias.rs index 8ba968dfc..8f4b8568b 100644 --- a/engine/baml-lib/parser-database/src/walkers/alias.rs +++ b/engine/baml-lib/parser-database/src/walkers/alias.rs @@ -23,4 +23,9 @@ impl<'db> TypeAliasWalker<'db> { pub fn resolved(&self) -> &'db FieldType { &self.db.types.resolved_type_aliases[&self.id] } + + /// Add to Jinja types. + pub fn add_to_types(self, types: &mut internal_baml_jinja_types::PredefinedTypes) { + types.add_alias(self.name(), self.db.to_jinja_type(&self.target())) + } } diff --git a/engine/baml-lib/parser-database/src/walkers/mod.rs b/engine/baml-lib/parser-database/src/walkers/mod.rs index a6154a1cf..13719b8fa 100644 --- a/engine/baml-lib/parser-database/src/walkers/mod.rs +++ b/engine/baml-lib/parser-database/src/walkers/mod.rs @@ -144,12 +144,9 @@ impl<'db> crate::ParserDatabase { &self.types.finite_recursive_cycles } - /// Set of all aliases that are part of a structural cycle. - /// - /// A structural cycle is created through a map or list, which introduce one - /// level of indirection. - pub fn structural_recursive_alias_cycles(&self) -> &[Vec] { - &self.types.structural_recursive_alias_cycles + /// Set of all aliases that are part of a cycle. + pub fn recursive_alias_cycles(&self) -> &[Vec] { + &self.types.recursive_alias_cycles } /// Returns the resolved aliases map. @@ -289,13 +286,27 @@ impl<'db> crate::ParserDatabase { pub fn to_jinja_type(&self, ft: &FieldType) -> internal_baml_jinja_types::Type { use internal_baml_jinja_types::Type; - let r = match ft { + match ft { FieldType::Symbol(arity, idn, ..) => { let mut t = match self.find_type(idn) { None => Type::Undefined, Some(TypeWalker::Class(_)) => Type::ClassRef(idn.to_string()), Some(TypeWalker::Enum(_)) => Type::String, - Some(TypeWalker::TypeAlias(_)) => Type::String, + Some(TypeWalker::TypeAlias(alias)) => { + if self + .recursive_alias_cycles() + .iter() + .any(|cycle| cycle.contains(&alias.id)) + { + Type::RecursiveTypeAlias(alias.name().to_string()) + } else { + Type::Alias { + name: alias.name().to_string(), + target: Box::new(self.to_jinja_type(alias.target())), + resolved: Box::new(self.to_jinja_type(alias.resolved())), + } + } + } }; if arity.is_optional() { t = Type::None | t; @@ -357,8 +368,6 @@ impl<'db> crate::ParserDatabase { } t } - }; - - r + } } } From 0b4ea0b369f882a66bc48be71e0dcb41b1991b99 Mon Sep 17 00:00:00 2001 From: Antonio Sarosi Date: Wed, 1 Jan 2025 19:00:08 +0100 Subject: [PATCH 2/4] Extract cycle searching into function --- engine/baml-lib/baml-core/src/ir/repr.rs | 6 +----- engine/baml-lib/parser-database/src/lib.rs | 6 +----- .../baml-lib/parser-database/src/walkers/mod.rs | 15 ++++++++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/engine/baml-lib/baml-core/src/ir/repr.rs b/engine/baml-lib/baml-core/src/ir/repr.rs index a98638e1e..11f020158 100644 --- a/engine/baml-lib/baml-core/src/ir/repr.rs +++ b/engine/baml-lib/baml-core/src/ir/repr.rs @@ -451,11 +451,7 @@ impl WithRepr for ast::FieldType { } } Some(TypeWalker::TypeAlias(alias_walker)) => { - if db - .recursive_alias_cycles() - .iter() - .any(|cycle| cycle.contains(&alias_walker.id)) - { + if db.is_recursive_type_alias(&alias_walker.id) { FieldType::RecursiveTypeAlias(alias_walker.name().to_string()) } else { alias_walker.resolved().to_owned().repr(db)? diff --git a/engine/baml-lib/parser-database/src/lib.rs b/engine/baml-lib/parser-database/src/lib.rs index 5df786c6e..775cc9dad 100644 --- a/engine/baml-lib/parser-database/src/lib.rs +++ b/engine/baml-lib/parser-database/src/lib.rs @@ -244,11 +244,7 @@ impl ParserDatabase { // Add the resolved name itself to the deps. collected_deps.insert(ident.name().to_owned()); // If the type is an alias then don't recurse. - if self - .recursive_alias_cycles() - .iter() - .any(|cycle| cycle.contains(&walker.id)) - { + if self.is_recursive_type_alias(&walker.id) { None } else { Some(ident.name()) diff --git a/engine/baml-lib/parser-database/src/walkers/mod.rs b/engine/baml-lib/parser-database/src/walkers/mod.rs index 13719b8fa..1fe98a04e 100644 --- a/engine/baml-lib/parser-database/src/walkers/mod.rs +++ b/engine/baml-lib/parser-database/src/walkers/mod.rs @@ -149,6 +149,15 @@ impl<'db> crate::ParserDatabase { &self.types.recursive_alias_cycles } + /// Returns `true` if the alias is part of a cycle. + pub fn is_recursive_type_alias(&self, alias: &TypeAliasId) -> bool { + // TODO: O(n) + // We need an additional hashmap or a Merge-Find Set or something. + self.recursive_alias_cycles() + .iter() + .any(|cycle| cycle.contains(alias)) + } + /// Returns the resolved aliases map. pub fn resolved_type_alias_by_name(&self, alias: &str) -> Option<&FieldType> { match self.find_type_by_str(alias) { @@ -293,11 +302,7 @@ impl<'db> crate::ParserDatabase { Some(TypeWalker::Class(_)) => Type::ClassRef(idn.to_string()), Some(TypeWalker::Enum(_)) => Type::String, Some(TypeWalker::TypeAlias(alias)) => { - if self - .recursive_alias_cycles() - .iter() - .any(|cycle| cycle.contains(&alias.id)) - { + if self.is_recursive_type_alias(&alias.id) { Type::RecursiveTypeAlias(alias.name().to_string()) } else { Type::Alias { From da038bdb1b96996535e112feab2313ec33db5ed2 Mon Sep 17 00:00:00 2001 From: Antonio Sarosi Date: Wed, 1 Jan 2025 19:13:23 +0100 Subject: [PATCH 3/4] Fix unresolved merge conflict --- integ-tests/python/tests/test_functions.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/integ-tests/python/tests/test_functions.py b/integ-tests/python/tests/test_functions.py index bf12b8674..b84ca9dbf 100644 --- a/integ-tests/python/tests/test_functions.py +++ b/integ-tests/python/tests/test_functions.py @@ -40,14 +40,11 @@ BlockConstraintForParam, NestedBlockConstraintForParam, MapKey, -<<<<<<< HEAD LinkedListAliasNode, ClassToRecAlias, NodeWithAliasIndirection, MergeAttrs, -======= OptionalListAndMap, ->>>>>>> canary ) import baml_client.types as types from ..baml_client.tracing import trace, set_tags, flush, on_log_event From 6c97885724afa296afedc163e01b12e60a0a09a2 Mon Sep 17 00:00:00 2001 From: Antonio Sarosi Date: Wed, 1 Jan 2025 19:19:00 +0100 Subject: [PATCH 4/4] Run TS integ tests --- integ-tests/typescript/test-report.html | 1220 +++++++++++------------ 1 file changed, 592 insertions(+), 628 deletions(-) diff --git a/integ-tests/typescript/test-report.html b/integ-tests/typescript/test-report.html index 7958e2332..cf788cafb 100644 --- a/integ-tests/typescript/test-report.html +++ b/integ-tests/typescript/test-report.html @@ -257,394 +257,382 @@ font-size: 1rem; padding: 0 0.5rem; } -

Test Report

Started: 2024-12-31 16:02:32
Suites (2)
1 passed
1 failed
0 pending
Tests (90)
87 passed
2 failed
1 pending
Trace Test
traceSync with Return
passed
0.009s
Trace Test
traceSync with no return
passed
0.001s
Trace Test
traceAsync with Return
passed
0s
Trace Test
traceAsync with no return
passed
0s
Console Log
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:5:11)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:83:38)
+

Test Report

Started: 2025-01-01 18:16:11
Suites (2)
1 passed
1 failed
0 pending
Tests (90)
88 passed
1 failed
1 pending
Trace Test
traceSync with Return
passed
0.022s
Trace Test
traceSync with no return
passed
0.003s
Trace Test
traceAsync with Return
passed
0.003s
Trace Test
traceAsync with no return
passed
0.002s
Console Log
    at log (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:5:11)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:83:38)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:81:29)
-    at Object.tracedFnWithReturn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:26:22)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:81:29)
+    at Object.tracedFnWithReturn (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:26:22)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
     at processTicksAndRejections (node:internal/process/task_queues:95:5)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
fnWithReturn
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:10:11)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:83:38)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
fnWithReturn
    at log (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:10:11)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:83:38)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:81:29)
-    at Object.tracedFnWithNoReturn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:32:7)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:81:29)
+    at Object.tracedFnWithNoReturn (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:32:7)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
     at processTicksAndRejections (node:internal/process/task_queues:95:5)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
fnWithNoReturn
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:14:11)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:44)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
fnWithNoReturn
    at log (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:14:11)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:44)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:35)
-    at Object.tracedFnWithReturn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:36:28)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:35)
+    at Object.tracedFnWithReturn (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:36:28)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
     at processTicksAndRejections (node:internal/process/task_queues:95:5)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
asyncfnWithReturn
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:19:11)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:44)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
asyncfnWithReturn
    at log (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:19:11)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:44)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:35)
-    at Object.tracedFnWithNoReturn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/tracing.test.ts:42:13)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:35)
+    at Object.tracedFnWithNoReturn (/workspaces/baml/integ-tests/typescript/tests/tracing.test.ts:42:13)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
     at processTicksAndRejections (node:internal/process/task_queues:95:5)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
asyncfnWithNoReturn
Integ tests
should handle invalid AWS region gracefully
passed
1.458s
Integ tests
should handle invalid AWS access keygracefully
passed
0.431s
Integ tests
should handle invalid AWS profile gracefully
pending
0s
Integ tests
should handle invalid AWS session token gracefully
passed
0.346s
Integ tests > should work for all inputs
single bool
passed
0.448s
Integ tests > should work for all inputs
single string list
passed
0.612s
Integ tests > should work for all inputs
return literal union
passed
0.558s
Integ tests > should work for all inputs
optional list and map
passed
1.287s
Integ tests > should work for all inputs
single class
passed
0.572s
Integ tests > should work for all inputs
multiple classes
passed
2.27s
Integ tests > should work for all inputs
single enum list
passed
0.394s
Integ tests > should work for all inputs
single float
passed
0.452s
Integ tests > should work for all inputs
single int
passed
0.351s
Integ tests > should work for all inputs
single literal int
passed
0.428s
Integ tests > should work for all inputs
single literal bool
passed
0.677s
Integ tests > should work for all inputs
single literal string
passed
0.443s
Integ tests > should work for all inputs
single class with literal prop
passed
0.41s
Integ tests > should work for all inputs
single class with literal union prop
passed
0.53s
Integ tests > should work for all inputs
single optional string
passed
0.375s
Integ tests > should work for all inputs
single map string to string
passed
0.632s
Integ tests > should work for all inputs
single map string to class
passed
0.48s
Integ tests > should work for all inputs
single map string to map
passed
0.75s
Integ tests > should work for all inputs
enum key in map
passed
0.552s
Integ tests > should work for all inputs
literal string union key in map
passed
0.841s
Integ tests > should work for all inputs
single literal string key in map
passed
0.39s
Integ tests > should work for all inputs
primitive union alias
passed
0.451s
Integ tests > should work for all inputs
map alias
passed
1.073s
Integ tests > should work for all inputs
alias union
passed
1.419s
Integ tests > should work for all inputs
alias pointing to recursive class
passed
0.796s
Integ tests > should work for all inputs
class pointing to alias that points to recursive class
passed
0.717s
Integ tests > should work for all inputs
recursive class with alias indirection
passed
0.79s
Integ tests > should work for all inputs
merge alias attributes
passed
0.567s
Integ tests > should work for all inputs
simple recursive map alias
passed
0.788s
Integ tests > should work for all inputs
simple recursive map alias
passed
0.9s
Integ tests > should work for all inputs
recursive alias cycles
passed
0.532s
Integ tests > should work for all inputs
json type alias cycle
passed
1.592s
Integ tests
should work for all outputs
passed
6.474s
Integ tests
works with retries1
passed
1.154s
Integ tests
works with retries2
passed
2.141s
Integ tests
works with fallbacks
passed
1.858s
Integ tests
should work with image from url
passed
1.367s
Integ tests
should work with image from base 64
passed
1.311s
Integ tests
should work with audio base 64
passed
0.965s
Integ tests
should work with audio from url
passed
1.103s
Integ tests
should support streaming in OpenAI
passed
6.703s
Integ tests
should support streaming in Gemini
passed
8.389s
Integ tests
should support AWS
passed
1.516s
Integ tests
should support streaming in AWS
passed
1.525s
Integ tests
should allow overriding the region
passed
2.722s
Integ tests
should support OpenAI shorthand
passed
8.773s
Integ tests
should support OpenAI shorthand streaming
passed
6.101s
Integ tests
should support anthropic shorthand
passed
2.834s
Integ tests
should support anthropic shorthand streaming
passed
2.503s
Integ tests
should support streaming without iterating
passed
4.11s
Integ tests
should support streaming in Claude
passed
1.224s
Integ tests
should support azure
failed
0.44s
Error: expect(received).toContain(expected) // indexOf
-
-Expected substring: "donkey"
-Received string:    "barrel-throwing ape
-climbing up to reach the top
-king of the jungle"
-    at Object.toContain (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:488:31)
Integ tests
should support azure streaming
passed
0.405s
Integ tests
should fail if azure is not configured
passed
0.036s
Integ tests
should support vertex
failed
0.002s
Error: BamlError: Failed to read service account file: 
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
asyncfnWithNoReturn
Integ tests
should handle invalid AWS region gracefully
passed
2.749s
Integ tests
should handle invalid AWS access keygracefully
passed
0.619s
Integ tests
should handle invalid AWS profile gracefully
pending
0s
Integ tests
should handle invalid AWS session token gracefully
passed
0.724s
Integ tests > should work for all inputs
single bool
passed
0.603s
Integ tests > should work for all inputs
single string list
passed
0.717s
Integ tests > should work for all inputs
return literal union
passed
0.588s
Integ tests > should work for all inputs
optional list and map
passed
1.611s
Integ tests > should work for all inputs
single class
passed
0.976s
Integ tests > should work for all inputs
multiple classes
passed
0.821s
Integ tests > should work for all inputs
single enum list
passed
0.815s
Integ tests > should work for all inputs
single float
passed
0.511s
Integ tests > should work for all inputs
single int
passed
0.54s
Integ tests > should work for all inputs
single literal int
passed
0.414s
Integ tests > should work for all inputs
single literal bool
passed
0.53s
Integ tests > should work for all inputs
single literal string
passed
0.463s
Integ tests > should work for all inputs
single class with literal prop
passed
0.479s
Integ tests > should work for all inputs
single class with literal union prop
passed
0.751s
Integ tests > should work for all inputs
single optional string
passed
0.362s
Integ tests > should work for all inputs
single map string to string
passed
0.558s
Integ tests > should work for all inputs
single map string to class
passed
2.983s
Integ tests > should work for all inputs
single map string to map
passed
0.703s
Integ tests > should work for all inputs
enum key in map
passed
0.636s
Integ tests > should work for all inputs
literal string union key in map
passed
0.701s
Integ tests > should work for all inputs
single literal string key in map
passed
0.61s
Integ tests > should work for all inputs
primitive union alias
passed
0.814s
Integ tests > should work for all inputs
map alias
passed
0.95s
Integ tests > should work for all inputs
alias union
passed
1.306s
Integ tests > should work for all inputs
alias pointing to recursive class
passed
0.689s
Integ tests > should work for all inputs
class pointing to alias that points to recursive class
passed
0.746s
Integ tests > should work for all inputs
recursive class with alias indirection
passed
1.236s
Integ tests > should work for all inputs
merge alias attributes
passed
0.623s
Integ tests > should work for all inputs
simple recursive map alias
passed
1.343s
Integ tests > should work for all inputs
simple recursive map alias
passed
0.588s
Integ tests > should work for all inputs
recursive alias cycles
passed
0.921s
Integ tests > should work for all inputs
json type alias cycle
passed
1.867s
Integ tests
should work for all outputs
passed
8.676s
Integ tests
works with retries1
passed
1.513s
Integ tests
works with retries2
passed
2.237s
Integ tests
works with fallbacks
passed
2.088s
Integ tests
should work with image from url
passed
1.538s
Integ tests
should work with image from base 64
passed
1.747s
Integ tests
should work with audio base 64
passed
1.733s
Integ tests
should work with audio from url
passed
1.818s
Integ tests
should support streaming in OpenAI
passed
9.382s
Integ tests
should support streaming in Gemini
passed
8.837s
Integ tests
should support AWS
passed
1.775s
Integ tests
should support streaming in AWS
passed
1.925s
Integ tests
should allow overriding the region
passed
1.77s
Integ tests
should support OpenAI shorthand
passed
11.272s
Integ tests
should support OpenAI shorthand streaming
passed
12.989s
Integ tests
should support anthropic shorthand
passed
2.251s
Integ tests
should support anthropic shorthand streaming
passed
2.281s
Integ tests
should support streaming without iterating
passed
4.782s
Integ tests
should support streaming in Claude
passed
1.117s
Integ tests
should support azure
passed
1.035s
Integ tests
should support azure streaming
passed
1.006s
Integ tests
should fail if azure is not configured
passed
0.049s
Integ tests
should support vertex
failed
0.002s
Error: BamlError: Failed to read service account file: 
 
 Caused by:
-    No such file or directory (os error 2)
Integ tests
supports tracing sync
passed
0.004s
Integ tests
supports tracing async
passed
5.514s
Integ tests
should work with dynamic types single
passed
2.548s
Integ tests
should work with dynamic types enum
passed
0.861s
Integ tests
should work with dynamic literals
passed
0.877s
Integ tests
should work with dynamic types class
passed
0.976s
Integ tests
should work with dynamic inputs class
passed
0.947s
Integ tests
should work with dynamic inputs list
passed
0.771s
Integ tests
should work with dynamic output map
passed
0.855s
Integ tests
should work with dynamic output union
passed
2.286s
Integ tests
should work with nested classes
passed
1.342s
Integ tests
should work with dynamic client
passed
0.344s
Integ tests
should work with 'onLogEvent'
passed
1.824s
Integ tests
should work with a sync client
passed
0.399s
Integ tests
should raise an error when appropriate
passed
0.94s
Integ tests
should raise a BAMLValidationError
passed
0.58s
Integ tests
should reset environment variables correctly
passed
0.863s
Integ tests
should use aliases when serializing input objects - classes
passed
0.977s
Integ tests
should use aliases when serializing, but still have original keys in jinja
passed
0.92s
Integ tests
should use aliases when serializing input objects - enums
passed
0.405s
Integ tests
should use aliases when serializing input objects - lists
passed
0.55s
Integ tests
constraints: should handle checks in return types
passed
0.843s
Integ tests
constraints: should handle checks in returned unions
passed
0.701s
Integ tests
constraints: should handle block-level checks
passed
0.539s
Integ tests
constraints: should handle nested-block-level checks
passed
3.006s
Integ tests
simple recursive type
passed
2.841s
Integ tests
mutually recursive type
passed
2.651s
Console Log
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:88:15)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    No such file or directory (os error 2)
Integ tests
supports tracing sync
passed
0.006s
Integ tests
supports tracing async
passed
2.993s
Integ tests
should work with dynamic types single
passed
1.275s
Integ tests
should work with dynamic types enum
passed
1.327s
Integ tests
should work with dynamic literals
passed
0.785s
Integ tests
should work with dynamic types class
passed
1.494s
Integ tests
should work with dynamic inputs class
passed
0.484s
Integ tests
should work with dynamic inputs list
passed
0.713s
Integ tests
should work with dynamic output map
passed
1.131s
Integ tests
should work with dynamic output union
passed
2.151s
Integ tests
should work with nested classes
passed
1.424s
Integ tests
should work with dynamic client
passed
0.52s
Integ tests
should work with 'onLogEvent'
passed
2.346s
Integ tests
should work with a sync client
passed
0.623s
Integ tests
should raise an error when appropriate
passed
1.077s
Integ tests
should raise a BAMLValidationError
passed
0.518s
Integ tests
should reset environment variables correctly
passed
1.579s
Integ tests
should use aliases when serializing input objects - classes
passed
1.125s
Integ tests
should use aliases when serializing, but still have original keys in jinja
passed
1.212s
Integ tests
should use aliases when serializing input objects - enums
passed
0.431s
Integ tests
should use aliases when serializing input objects - lists
passed
0.514s
Integ tests
constraints: should handle checks in return types
passed
0.921s
Integ tests
constraints: should handle checks in returned unions
passed
1.138s
Integ tests
constraints: should handle block-level checks
passed
0.7s
Integ tests
constraints: should handle nested-block-level checks
passed
0.618s
Integ tests
simple recursive type
passed
2.968s
Integ tests
mutually recursive type
passed
3.995s
Console Log
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:88:15)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
calling with class
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:94:15)
got response key  
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
calling with class
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:94:15)
got response key  
 true  
 52  
-You are trained on data up to October 2023.
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:331:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientConstant", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1735689785, tv_nsec: 940627000 }, latency: 180.519417ms, message: "Request failed: https://api.openai.com/v1/chat/completions\n{\n    \"error\": {\n        \"message\": \"Incorrect API key provided: blah. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
-    at BamlAsyncClient.parsed [as TestRetryConstant] (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/baml_client/async_client.ts:3260:18)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:328:7) {
+You are trained on data up to October 2023.
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:331:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientConstant", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1735755413, tv_nsec: 650565191 }, latency: 173.589468ms, message: "Request failed: https://api.openai.com/v1/chat/completions\n{\n    \"error\": {\n        \"message\": \"Incorrect API key provided: blah. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
+    at BamlAsyncClient.parsed [as TestRetryConstant] (/workspaces/baml/integ-tests/typescript/baml_client/async_client.ts:3260:18)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:328:7) {
   code: 'GenericFailure'
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:340:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientExponential", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1735689788, tv_nsec: 124343000 }, latency: 175.473125ms, message: "Request failed: https://api.openai.com/v1/chat/completions\n{\n    \"error\": {\n        \"message\": \"Incorrect API key provided: blahh. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
-    at BamlAsyncClient.parsed [as TestRetryExponential] (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/baml_client/async_client.ts:3285:18)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:337:7) {
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:340:15)
Expected error Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "RetryClientExponential", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Say a haiku")] }]), request_options: {"model": String("gpt-3.5-turbo")}, start_time: SystemTime { tv_sec: 1735755415, tv_nsec: 878290116 }, latency: 221.355134ms, message: "Request failed: https://api.openai.com/v1/chat/completions\n{\n    \"error\": {\n        \"message\": \"Incorrect API key provided: blahh. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
+    at BamlAsyncClient.parsed [as TestRetryExponential] (/workspaces/baml/integ-tests/typescript/baml_client/async_client.ts:3285:18)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:337:7) {
   code: 'GenericFailure'
-}
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:531:15)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:83:38)
+}
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:531:15)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:83:38)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:81:29)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:540:5)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:81:29)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:540:5)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
hello world
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:534:15)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:83:38)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
hello world
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:534:15)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:83:38)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:81:29)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:540:5)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:81:29)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:540:5)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
dummyFunc returned
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:537:15)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:83:38)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
dummyFunc returned
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:537:15)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:83:38)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:81:29)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:540:5)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:81:29)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:540:5)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
dummyFunc2 returned
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
dummyFunc2 returned
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
dummy hi1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
-    at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
dummy hi1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
dummy hi2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
dummy hi2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
samDummyNested nested3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
dummy hi3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:577:15)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:44)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:570:5)
dummy hi3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:577:15)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:44)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:35)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:593:5)
hello world
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:35)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:593:5)
hello world
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
samDummyNested nested1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
samDummyNested nested1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
samDummyNested nested2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
samDummyNested nested2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
samDummyNested nested3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
samDummyNested nested3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
dummy firstDummyFuncArg
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
dummy firstDummyFuncArg
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
dummy secondDummyFuncArg
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:582:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
dummy secondDummyFuncArg
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 0)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested1
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested1
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
     at runNextTicks (node:internal/process/task_queues:60:5)
-    at listOnTimeout (node:internal/timers:545:9)
-    at processTimers (node:internal/timers:519:7)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at listOnTimeout (node:internal/timers:540:9)
+    at processTimers (node:internal/timers:514:7)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 1)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested2
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested2
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:552:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
     at async Promise.all (index 2)
-    at dummyFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested3
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:38
-    at /Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:20
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
dummy thirdDummyFuncArg
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:596:15)
-    at func (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:104:44)
+    at dummyFn (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:558:22)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
samDummyNested nested3
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:563:15)
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:590:20
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:38
+    at /workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:20
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:576:17)
dummy thirdDummyFuncArg
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:596:15)
+    at func (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:104:44)
     at AsyncLocalStorage.run (node:async_hooks:346:14)
-    at run (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:102:35)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:602:5)
hello world
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:606:13)
stats {"failed":0,"started":30,"finalized":30,"submitted":30,"sent":30,"done":30}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:630:13)
[
+    at run (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:102:35)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:602:5)
hello world
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:606:13)
stats {"failed":0,"started":30,"finalized":30,"submitted":30,"sent":30,"done":30}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:630:13)
[
   {
     name: 'Harrison',
     hair_color: 'BLACK',
@@ -652,20 +640,20 @@
     height: 1.83,
     hobbies: [ 'SPORTS' ]
   }
-]
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:699:13)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+]
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:699:13)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
[
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
[
   [
     'hair_color',
     ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
@@ -674,49 +662,49 @@
     'attributes',
     ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
   ]
-]
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:701:15)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+]
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:701:15)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: hair_color
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:701:15)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: hair_color
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:701:15)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: attributes
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:709:13)
final  {
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: attributes
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:709:13)
final  {
   hair_color: 'black',
   attributes: { height: '6 feet', eye_color: 'blue', facial_hair: 'beard' }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:733:13)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:733:13)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
[
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
[
   [
     'hair_color',
     ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
@@ -726,343 +714,319 @@
     ClassPropertyBuilder { bldr: ClassPropertyBuilder {} }
   ],
   [ 'height', ClassPropertyBuilder { bldr: ClassPropertyBuilder {} } ]
-]
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:735:15)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+]
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:735:15)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: hair_color
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:735:15)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: hair_color
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:735:15)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: attributes
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:735:15)
-    at Promise.then.completed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: attributes
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:735:15)
+    at Promise.then.completed (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:298:28)
     at new Promise (<anonymous>)
-    at callAsyncCircusFn (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
-    at _callCircusTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
-    at _runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
-    at _runTestsForDescribeBlock (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
-    at run (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
-    at runAndTransformResultsToJestFormat (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
-    at jestAdapter (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
-    at runTestInternal (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
-    at runTest (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
-    at Object.worker (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: height
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:743:13)
final  {
+    at callAsyncCircusFn (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/utils.js:231:10)
+    at _callCircusTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:316:40)
+    at _runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:252:3)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:126:9)
+    at _runTestsForDescribeBlock (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:121:9)
+    at run (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/run.js:71:3)
+    at runAndTransformResultsToJestFormat (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)
+    at jestAdapter (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-circus@29.7.0/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)
+    at runTestInternal (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:367:16)
+    at runTest (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/runTest.js:444:34)
+    at Object.worker (/workspaces/baml/integ-tests/typescript/node_modules/.pnpm/jest-runner@29.7.0/node_modules/jest-runner/build/testWorker.js:106:12)
Property: height
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:743:13)
final  {
   hair_color: 'black',
   attributes: { eye_color: 'blue', facial_hair: 'beard' },
   height: { feet: 6, inches: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:754:13)
final  {
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:754:13)
final  {
   hair_color: 'black',
   attributes: { eye_color: 'blue', facial_hair: 'beard' },
   height: { meters: 1.8 }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: '', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'Example String', prop2: null }
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: null, prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: '', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg { prop1: 'example string', prop2: null }
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: null, prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: { prop1: '', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: null, inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: '', inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: 'Another', inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: { prop1: 'Nested String', prop2: 'Another Nested', inner: null }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
-    inner: null
-  }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
-    inner: null
-  }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
-    inner: null
-  }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
-    inner: null
-  }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
-    inner: null
-  }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
-  prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
-    inner: null
-  }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: null, inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: '', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another string', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another string', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another string', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another string', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another string', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
+  prop2: { prop1: 'another string', prop2: 'yet another string', inner: null }
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: null, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: null }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
-  prop1: 'Example String',
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:767:15)
msg {
+  prop1: 'example string',
   prop2: {
-    prop1: 'Nested String',
-    prop2: 'Another Nested String',
+    prop1: 'another string',
+    prop2: 'yet another string',
     inner: { prop2: 42, prop3: 3.14 }
   }
-}
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:792:15)
-    at callback (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
+}
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:792:15)
+    at callback (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
   metadata: {
-    eventId: '34645c84-f1f0-4c7d-8a13-fae920140cad',
-    rootEventId: '34645c84-f1f0-4c7d-8a13-fae920140cad'
+    eventId: 'd21d213f-10a2-4d46-bb31-41d41800abd0',
+    rootEventId: 'd21d213f-10a2-4d46-bb31-41d41800abd0'
   },
   prompt: '[\n' +
     '  {\n' +
@@ -1076,12 +1040,12 @@
     ']',
   rawOutput: '["a", "b", "c"]',
   parsedOutput: '["a", "b", "c"]',
-  startTime: '2025-01-01T00:04:19.849Z'
-}
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:792:15)
-    at callback (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
+  startTime: '2025-01-01T18:18:20.206Z'
+}
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:792:15)
+    at callback (/workspaces/baml/engine/language_client_typescript/async_context_vars.js:70:17)
onLogEvent {
   metadata: {
-    eventId: 'c56c8a9b-ce41-4515-b165-33487c209292',
-    rootEventId: 'c56c8a9b-ce41-4515-b165-33487c209292'
+    eventId: 'ac193258-5b5a-4d0b-a870-26ebce38c79c',
+    rootEventId: 'ac193258-5b5a-4d0b-a870-26ebce38c79c'
   },
   prompt: '[\n' +
     '  {\n' +
@@ -1095,29 +1059,29 @@
     ']',
   rawOutput: '["d", "e", "f"]',
   parsedOutput: '["d", "e", "f"]',
-  startTime: '2025-01-01T00:04:20.319Z'
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:826:15)
Error: Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "MyClient", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Given a string, extract info using the schema:\n\nMy name is Harrison. My hair is black and I'm 6 feet tall.\n\nAnswer in JSON using this schema:\n{\n}")] }]), request_options: {"model": String("gpt-4o-mini")}, start_time: SystemTime { tv_sec: 1735689861, tv_nsec: 936464000 }, latency: 173.846084ms, message: "Request failed: https://api.openai.com/v1/chat/completions\n{\n    \"error\": {\n        \"message\": \"Incorrect API key provided: INVALID_KEY. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
-    at BamlAsyncClient.parsed (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/baml_client/async_client.ts:1760:18)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:823:7) {
+  startTime: '2025-01-01T18:18:20.726Z'
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:826:15)
Error: Error: BamlError: BamlClientError: BamlClientHttpError: LLM call failed: LLMErrorResponse { client: "MyClient", model: None, prompt: Chat([RenderedChatMessage { role: "system", allow_duplicate_role: false, parts: [Text("Given a string, extract info using the schema:\n\nMy name is Harrison. My hair is black and I'm 6 feet tall.\n\nAnswer in JSON using this schema:\n{\n}")] }]), request_options: {"model": String("gpt-4o-mini")}, start_time: SystemTime { tv_sec: 1735755503, tv_nsec: 98464533 }, latency: 208.901785ms, message: "Request failed: https://api.openai.com/v1/chat/completions\n{\n    \"error\": {\n        \"message\": \"Incorrect API key provided: INVALID_KEY. You can find your API key at https://platform.openai.com/account/api-keys.\",\n        \"type\": \"invalid_request_error\",\n        \"param\": null,\n        \"code\": \"invalid_api_key\"\n    }\n}\n", code: InvalidAuthentication }
+    at BamlAsyncClient.parsed (/workspaces/baml/integ-tests/typescript/baml_client/async_client.ts:1760:18)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:823:7) {
   code: 'GenericFailure'
-}
    at log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:834:17)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:830:5)
BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
+}
    at log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:834:17)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:830:5)
BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
   - <root>: Missing required field: nonce
   - <root>: Missing required field: nonce2
-    at Function.from (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/index.js:79:28)
-    at from (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/index.js:92:53)
-    at BamlAsyncClient.DummyOutputFunction (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/baml_client/async_client.ts:662:50)
-    at /Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:832:9
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:830:5) {
+    at Function.from (/workspaces/baml/engine/language_client_typescript/index.js:79:28)
+    at from (/workspaces/baml/engine/language_client_typescript/index.js:92:53)
+    at BamlAsyncClient.DummyOutputFunction (/workspaces/baml/integ-tests/typescript/baml_client/async_client.ts:662:50)
+    at /workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:832:9
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:830:5) {
   prompt: '[chat] system: Say "hello there".\n',
   raw_output: 'Hello there!'
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:846:17)
error BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
+}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:846:17)
error BamlValidationError: BamlValidationError: Failed to parse LLM response: Failed to coerce value: <root>: Failed while parsing required fields: missing=2, unparsed=0
   - <root>: Missing required field: nonce
   - <root>: Missing required field: nonce2
-    at Function.from (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/index.js:79:28)
-    at from (/Users/aaronvillalpando/Projects/baml/engine/language_client_typescript/index.js:92:53)
-    at BamlAsyncClient.DummyOutputFunction (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/baml_client/async_client.ts:662:50)
-    at Object.<anonymous> (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:842:7) {
+    at Function.from (/workspaces/baml/engine/language_client_typescript/index.js:79:28)
+    at from (/workspaces/baml/engine/language_client_typescript/index.js:92:53)
+    at BamlAsyncClient.DummyOutputFunction (/workspaces/baml/integ-tests/typescript/baml_client/async_client.ts:662:50)
+    at Object.<anonymous> (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:842:7) {
   prompt: '[chat] system: Say "hello there".\n',
-  raw_output: 'Hello there! How can I assist you today?'
-}
    at Object.log (/Users/aaronvillalpando/Projects/baml/integ-tests/typescript/tests/integ-tests.test.ts:946:13)
{"nbc":{"value":{"foo":1,"bar":"hello"},"checks":{"cross_field":{"name":"cross_field","expression":"this.bar|length > this.foo","status":"succeeded"}}}}
\ No newline at end of file + raw_output: 'Hello there!' +}
    at Object.log (/workspaces/baml/integ-tests/typescript/tests/integ-tests.test.ts:946:13)
{"nbc":{"value":{"foo":1,"bar":"hello"},"checks":{"cross_field":{"name":"cross_field","expression":"this.bar|length > this.foo","status":"succeeded"}}}}
\ No newline at end of file